Chapter.21 タイトル画面の表示効果を追加、ゲーム開始時に STAGE番号表示
[Chapter21 制作物]

今回は、タイトル画面の効果を追加するのと、ゲーム開始時の STAGE番号表示を追加します。
また、作業用メモリを大きくとれるようにするため、先頭アドレス 0xC000 を 0x9000 に変更します。

■先頭アドレスの変更
sca_main.asm の中の .org 0xC000 と言う部分を .org 0x9000 に変更するだけです。
その他のアドレスは、リンカが自動的に計算してくれるので、他に手間はかかりません。

実行するための BASIC プログラムも、CLEAR 200, &HC000 としていた部分を CLEAR 200, &H9000 に変更します。
これだけです。

アドレスを変更したのは、スタックメモリと衝突しないようにするためです。
メモリの後半 (0xFFFF に近いアドレス)は、BIOS や DISK-BIOS 等がワーク領域として使用しています。
それらを破壊すると、BIOS が正常に動作しなくなる恐れがあるので、BIOS を使わせて貰っている本ソフトは、
それらを破壊してはなりません。

また、それよりも低い番地にスタックメモリが割り当てられています。SPレジスタが指し示しているメモリですね。
これも、call/push 等の命令を使うと更新されてしまう場所なので、ここにプログラムや変数を配置してしまうと、
call/push を使うたびに内容が書き換わり、最悪暴走してしまいます。
なので、スタックメモリとも重なってはなりません。

今回、タイトル画面のスクロール用に 768*2 byte のワーク領域を確保します。
結構大きいのと、今後プログラムが育っていくことを考慮して 0x9000 まで下げました。

メモリは 0x8000〜0xFFFB くらいにありますが、0x8000番地付近には TEST.BAS が保存されてます。
BLOAD "SCA.BIN",R を直接実行するなら 0x8000 でも問題ないと思いますが、TEST.BAS で CLEAR までやろうとすると
CLEAR命令でエラーが出る恐れがあります。

■タイトル画面の効果
追加する効果は、下記の2点。

(1) スペースバー/Aボタンを押したときに "PUSH SPACE BAR" の表示が1秒間だけ高速に点滅する
(2) タイトル画面で 10秒何もせずに待っていると横スクロールしてハイスコア一覧が表示される

特に、(2) の方はドット単位で滑らかにスクロールさせてみます。
一部の市販ソフト(SpaceManbow, 激突ペナントレース2, サイコワールドなど)で、MSX2でも滑らかな横スクロールを
実現していましたが、それと同じことを、タイトル画面の横スクロールという、あまりゲームに関係ないところに
活用してみることにします (^_^;





工事中



■STAGE番号の表示
背景のパターンネームテーブルを初期化するときに、STAGE* の表示も出しておきます。
敵マネージャの中の敵出現データの1コードとして「SCORE*の表示削除」を追加します。
敵出現データにそのコードを埋め込みます。

といった感じの処理にしました。





工事中




[▲トップページへ]