ROCKET BOMBのプログラム解説

ROCKET BOMBの主要サブルーチン
A7A0- 初期値転送
A911- 初期化
A976- ハイスコア登録
AA00- 迷路作成(WORK)
8E00Hからの圧縮データをもとにして9000HからA79FHの領域に壁のデータを展開します。上下左右スクロールはこのデータをもとにして動きます。
この展開データはVRAMと同じ比で展開してあります。
ゲーム全体の迷路の大きさは画面に表示される部分の約4倍です。
AAD4- 上スクロール
AB30- 下スクロール
ABC4- 右スクロール
AC6F- 左スクロール
技術的に苦労した部分です。スクロールは画面をその方向にシフトして新しく画面に現れる部分だけデータから読み込んで表示します。
こうすれば画面上で動く敵やミサイルが点滅しなくて済みます。
スクロールを高速に行うため、画面上を動くものに個別の色は着けていません。
AD8A- BASE移動
AF28- 基本道路作成
AF85- 迷路作成(DATA)
ます4ビット単位で道を「0」、壁を「1」として8E00Hから8FFFHの領域に迷路のデータを作成します。
AFDE- 動くもの画面表示
ワークエリア上での座標X、YをHLレジスタに、表示するデータの先頭アドレスをDEレジスタに入れてコールすると、現在どこの部分が表示されているかを調べて画面上に表れる範囲であれば表示します。
自分なりに良く出来たサブルーチンです。
B06C- ”SCORE”表示
B101- スコア表示
B03D- 画面上に4x2(キャラクタ)表示
B045- 画面上に4x1(キャラクタ)表示
HLに画面上のX、Y座標、DEに表示データ先頭アドレスを入れてコールします。
B08C- 画面色つき2段表示
IXレジスタにデータの入っている先頭アドレスをコールします。
データはY座標、X座標、色コード(グラフィック)、使うX方向の個数、データの並び・・・
となります。
B1CC- PSET
B232- PRESET
PSET(ドットON)、PRESET(ドットOFF)を行います。座標交換と色着けのみROM内ルーチンを呼んでいます。その他はマシン語で独自に組んでいますので、大変高速です。
B22BHにX座標、B22CHにY座標、B22DHに色コード(グラフィック)を入れてコールします。
B23E- BASE位置PSET
B259- BASE位置PRESET
B274- BASEミサイル発射&移動
B375- BASEミサイルPSET
B3AA- BASEミサイルPRESET
B3B6- BASE移動(まとめ)
B3C0- BASEミサイル移動(まとめ)
B3CA- ”HI−SCORE”表示
B3F6- ハイスコア表示
B406- ”TIME”表示
B422- タイム表示
B436- ボーナスエイリアン踊り、移動、爆発
B598- 単音発生
Dレジスタに音の長さ、Eレジスタに音の高さを入れてコールすると、「ピッ」と鳴ります。
B5AB- MUSIC
IYレジスタにデータの先頭アドレスを入れてコールします。データは最初に一音に対する音の長さを入れて、以下音の高さを次々に入れます。最後にエンドマークの0FFHを入れます。音の高さを0にすると休みになります。
B612- 敵移動
B77F- 敵PSET
B7B2- 敵PRESET
B7D5- 敵移動(まとめ)
B7DF- ボーナスエイリアンPSET
B7FF- ボーナスエイリアンPRESET
B80B- ボーナスエイリアン移動
B815- BASEミサイルと敵衝突判定&表示得点
B8CF- BASEと敵の衝突判定&表示
B87E- 衝突判定
IXレジスタに対象となるデータのワークエリアの先頭を入れて、HLに基準となるデータのXY座標を入れてコールします。もし2つの座標が衝突している位置にあればキャリーを立てて戻ります。
B92B- ブラックホール表示&BASE突入判断
B98B- レーダーのアトリビュートセット
B9A3- ブラックホールセット
B9FE- ボーナスエイリアン発生&移動(まとめ)
BA7C- ボーナスエイリアン衝突&得点
BB14- エイリアンミサイル発生
BB7B- エイリアンミサイル移動
BC5B- エイリアンミサイルPSET
BC86- エイリアンミサイルPRESET
BC9C- エイリアンミサイル移動(まとめ)
BCA6- エイリアンミサイルとBASE衝突判定
BCCB- メインループ
BD21- 壁の種類を変える
BD63- タイトルデモで使用
ROCKET BOMBの主要ワークエリアとデータエリア
AF24- 2byte BASE座標 Y、X
AF26 BASEの方向
B06A- 2byte スコア
B371- 4byte BASEミサイルワーク
IX+00H 0=いない、1=移動、2=爆発終わり、3・4=爆発中
IX+01H ワークエリア上のY座標
IX+02H ワークエリア上のX座標
IX+03H 方向 1=下、2=右、3=上、4=左
B432- 2byte ハイスコア
B434- 2byte タイム
B60C- 5byte ボーナスエイリアンワーク
IX+00H 0=いない、1=回転中、2=移動中、3=爆発終わり、4・5=爆発中
IX+01H ワークエリア上のY座標
IX+02H ワークエリア上のX座標
IX+03H 方向 1=下、2=右、3=上、4=左
IX+04H ステップ
B74C 動かす敵
B74D- 50byte 敵ワーク(5バイトx10)
IX+00H 0=いない、1=移動、2=爆発終わり、3・4=爆発中
IX+01H ワークエリア上のY座標
IX+02H ワークエリア上のX座標
IX+03H 方向 1=下、2=右、3=上、4=左
IX+04H ステップ
B8CD 残っている敵数
B8CE 敵のポイント
B92A 残りのBASE数
B96B 発生するブラックホール数
B96C- 30byte ブラックホールワーク(3バイトx10)
IX+00H 0=無し、1=あり
IX+01H Y座標
IX+02H X座標
BC31 発生しているミサイル数
BC32 発生ミサイル最大数
BC33- 40byte 敵ミサイルワーク(4バイトx10)
IX+00H 0=いない、1=移動、2=爆発終わり、3・4=爆発中
IX+01H ワークエリア上のY座標
IX+02H ワークエリア上のX座標
IX+03H 方向 1=下、2=右、3=上、4=左
B929 BASE衝突フラグ
BA77- 2byte ボーナスエイリアンが動くまでのカウンタ
BA79- 2byte ボーナスエイリアンが表示されるまでのカウンタ
BD20 壁ストップポインタ
A7F9 サブ面数
A7FA- 196byte 初期転送する各面のデータ
AA74- 48byte 6種類の壁データ
AEF4- 8byte 止まったときのBASEデータ
AF04- 32byte BASEデータ4種類
B074- 24byte ”SCORE”データ
B199- 40byte 数字データ
B339- 16byte 爆発データ2種
B349- 32byte BASEミサイルデータ4種
B3D2- 36byte ”HI−SCORE”
B5CC- 32byte ボーナスエイリアンデータ4種
B5EC- 16byte 爆発データ2種
B5FC- 16byte ミュージックデータ2種
B72B- 32byte 敵データ4種
B8BD- 16byte ミュージックデータ2種
B919- 16byte ミュージックデータ2種
B963- 8byte ブラックホールデータ
BAF4- 32byte 敵ミサイルデータ4種

「ROCKET BOMB」へ戻る

Copyright(c) 2001 nonchansoft