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 |