Last Update 08/05/18

ジャイロマンステージの仕掛け



◇落下するブロック
・$377F5 使用するステージ番号
正確にステージ番号とするならついでに
377F3 : 27 -> 26
と変えた方が良いかも。


・$3782E 生成したブロックのY座標
チップ属性3xのブロックに乗った際にブロックオブジェクトが生成されるが、そのオブジェクトのY座標はここで固定されている。
そのため、マップ作成で落下ブロックをどの高さに配置しても落下するブロックオブジェクトの生成位置は変わらない。
以下、ブロックの配置位置を考慮するようなコードを例示する。

$3782D-3782F : 4C F4 9F
$38004-3800F : A5 11 29 F0 09 08 99 78 03 4C 22 98

<!--
BANK 1B
981D:
4C F4 9F jmp $9FF4

9FF4:(BANK 1Bは$9E70-9FFFが(多分)未使用)
A5 11    lda $11
29 F0    and #$F0
09 08    ora #$08
99 78 03 sta $0378,y
4C 22 98 jmp $9822
-->

ブロックオブジェクトは落下してもX座標が画面外に出るまでは消えないので、1画面中に落下ブロックを配置し過ぎると
オブジェクトメモリを圧迫し他のオブジェクトが出現しない・ブロックが落下しない等の影響が出る可能性があるので注意した方がいいです。


・$37838 ブロックが落下するまでのフレーム数


◇エレベーター(ステージ後半)
・elevator border非表示
$3DF76 : A5 -> A9
$3DF77 : 74 -> 00

・$A113 エレベーターの土台が描かれた部屋番号
・$A143 エレベーターオブジェクトを設置した部屋番号+1を指定
・$A156 エレベーターの上昇速度

・$A16D エレベーター上昇後のマップが描かれた部屋番号
・$A171 エレベーター上昇後の次の部屋番号
・$A17F エレベーター上昇後にセットするArea number(*)
・$A187 エレベーター上昇後にセットする部屋番号

・$377DF-377EE (10) = ステージ番号 : ステージ毎の圧死判定の有無(00で無効, FFで有効)
・$3D0DC-3D0EB (10) = ステージ番号 : エレベータを設置した部屋のArea number(*)
・$3D0EC-3D0FB (10) = ステージ番号 : 上昇後の次の部屋番号(上昇終了の判定に使用)
・$3D0FC-3D10B (10) = ステージ番号 : 上昇後のマップが描かれた部屋番号

(*)Area numberの指定
bit7-5 -> スクロール方向(001 -> 右, 010 -> 下, 100 -> 上)
bit4-0 -> スクロール番号

エレベーター上昇中は部屋番号が変わっていないことになるので、その間にオブジェクトを設置しても出現しないことに注意。
他ステージへのエレベータ設置例