チップ属性チェック・めり込み補正サブルーチン及び、めり込み補正付き移動サブルーチンに関する記述です。
◇チップ属性チェックサブルーチン jsr $C4A1 Y方向 jsr $C5AA X方向 ◇めり込み補正サブルーチン jsr $E6F9 X方向(右) jsr $E738 X方向(左) jsr $E771 X方向(下) jsr $E7A8 X方向(上) ◇めり込み補正付き移動サブルーチン jsr $E7B7 Y方向移動・重力加算有り jsr $EA3F X方向移動 jsr $EA52 Y方向移動
いずれもYレジスタにめり込みチェックデータの参照番号をセットして呼び出す。
めり込みチェックデータは、オブジェクトの座標を基準としたチップ属性をチェックする相対座標で構成される。
チェックした座標のチップ属性は$48~4Fに格納される。
めり込み補正(付き移動)サブルーチンではブロックへのめり込みを検出・座標の補正が行われる。
移動サブルーチンに関して、上方向・左方向へ移動することになった場合、
めり込みチェックの前にYレジスタの値がインクリメントされる。
ほとんどのチェックデータは右・左、または下・上の順で対になっているので、
移動サブルーチンを呼ぶ際のYレジスタの値は、右または下に移動すると考えた場合の番号にすればよい。
◇Y方向移動用めり込みチェック $3C817~3C846 (30) = 参照番号: $3C847を基点としたY方向移動用めり込みチェックデータへの相対アドレス $3C847~3C8F1 Y方向移動用めり込みチェックデータ byte0 めり込みチェック位置の総数(00で1個を表すため、実際の個数より1小さい値を指定する) byte1 めり込みチェック位置の(相対)Y座標 byte2 1個目のめり込みチェック位置の(相対)X座標 byte3 2個目のめり込みチェック位置の(byte2からの相対)X座標 byte4 3個目のめり込みチェック位置の(byte3からの相対)X座標 … ◇X方向移動用めり込みチェック $3C8F2~3C921 (30) = 参照番号: $3C922を基点としたX方向移動用めり込みチェックデータへの相対アドレス $3C922~3C9EC X方向移動用めり込みチェックデータ byte0 めり込みチェック位置の総数(00で1個を表すため、実際の個数より1小さい値を指定する) byte1 めり込みチェック位置の(相対)X座標 byte2 1個目のめり込みチェック位置の(相対)Y座標 byte3 2個目のめり込みチェック位置の(byte2からの相対)Y座標 byte4 3個目のめり込みチェック位置の(byte3からの相対)Y座標 …
| 番号 | チェック方向 | チェックする座標 | 移動ルーチンを呼ぶ 際のYレジスタの値 | 備考 |
|---|---|---|---|---|
| 00 | 下 | (-7, +12), (0, +12), (+7, +12) | Y=00 | ロックマンの移動に使用 |
| 01 | 上 | (-7, -10), (+7, -10) | ||
| 02 | 上 | (-14, -14), (0, -14), (+14, -14) | ||
| 03 | 下 | (-14, +12), (0, +12), (+14, +12) | ||
| 04 | 下 | (-14, +10), (0, +10), (+14, +10) | Y=04 | ロックマンのスライディング移動に使用 |
| 05 | 上 | (-14, -8), (0, -8), (+14, -8) | ||
| 06 | - | (0, 0) | ||
| 07 | 下 | (-5, +6), (+5, +6) | Y=07 | |
| 08 | 上 | (-5, -6), (+5, -6) | ||
| 09 | 下 | (-11, +16), (0, +16), (+11, +16) | Y=09 | |
| 0A | 上 | (-11, -16), (0, -16), (+11, -16) | ||
| 0B | 下 | (-7, +4), (+7, +4) | Y=0B | |
| 0C | 上 | (-7, -4), (+7, -4) | ||
| 0D | 下 | (-15, +16), (0, +16), (+15, +16) | Y=0D | |
| 0E | 上 | (-15, -16), (0, -16), (+15, -16) | ||
| 0F | 下 | (-15, +28), (0, +28), (+15, +28) | Y=0F | |
| 10 | 上 | (-15, -28), (0, -28), (+15, -28) | ||
| 11 | 下 | (-7, +20), (+7, +20) | Y=11 | |
| 12 | 上 | (-7, -20), (+7, -20) | ||
| 13 | 下 | (0, +4) | Y=13 | クリスタルマンの反射弾・ 敵の出したアイテム(小)等に使用 |
| 14 | 上 | (0, -4) | ||
| 15 | 下 | (-11, +12), (0, +12), (+11, +12) | Y=15 | |
| 16 | 上 | (-11, -12), (0, -12), (+11, -12) | ||
| 17 | 下 | (-7, +8), (+7, +8) | Y=17 | |
| 18 | 上 | (-7, -8), (+7, -8) | ||
| 19 | 下 | (-11, +20), (0, +20), (+11, +20) | Y=19 | |
| 1A | 上 | (-11, -20), (0, -20), (+11, -20) | ||
| 1B | - | (-7, 0), (+7, 0) | ||
| 1C | 下 | (0, +16) | Y=1C | グラビティーマンの移動・ クリスタルマンの移動等に使用 |
| 1D | 上 | (0, -16) | ||
| 1E | 下 | (-15, +12), (0, +12), (+15, +12) | Y=1E | |
| 1F | 上 | (-15, -12), (0, -12), (+15, -12) | ||
| 20 | 下 | (0, +36) | ||
| 21 | 下 | (-7, +12), (+7, +12) | Y=21 | |
| 22 | 上 | (-7, -12), (+7, -12) | ||
| 23 | 下 | (0, +8) | Y=23 | エディーの出したアイテム・ 敵の出したアイテム(大)等に使用 |
| 24 | 上 | (0, -8) | ||
| 25 | 上 | (-7, -6), (+7, -6) | ||
| 26 | 下 | (-7, +5), (+7, +5) | ||
| 27 | 下 | (0, +12) | Y=27 | |
| 28 | 上 | (0, -12) | ||
| 27-2F 実データ無し | ||||
| 番号 | チェック方向 | チェックする座標 | 移動ルーチンを呼ぶ 際のYレジスタの値 | 備考 |
|---|---|---|---|---|
| 00 | 右 | (+8, -9), (+8, 0), (+8, +11) | Y=00 | ロックマンの移動に使用 |
| 01 | 左 | (-8, -9), (-8, 0), (-8, +11) | ||
| 02 | - | (0, -11), (0, 0), (0, +5) | はしごとの接触判定に使用 | |
| 03 | - | (0, -5), (0, 0), (0, +11) | はしごとの接触判定に使用(重力反転時) | |
| 04 | 右 | (+15, -5), (+15, +9) | Y=04 | ロックマンのスライディング移動に使用 |
| 05 | 左 | (-15, -5), (-15, +9) | ||
| 06 | 右 | (+15, -7), (+15, -7) | Y=06 | ロックマンのスライディング移動(重力反転時)に使用 |
| 07 | 左 | (-15, -7), (-15, -7) | ||
| 08 | 右 | (+15, +4) | Y=08 | |
| 09 | 左 | (-15, +4) | ||
| 0A | 右 | (+12, -15), (+12, 0), (+12, +15) | Y=0A | |
| 0B | 左 | (-12, -15), (-12, 0), (-12, +15) | ||
| 0C | 右 | (+8, -3), (+8, +3) | Y=0C | |
| 0D | 左 | (-8, -3), (-8, +3) | ||
| 0E | 右 | (+6, -5), (+6, +5) | Y=0E | |
| 0F | 左 | (-6, -5), (-6, +5) | ||
| 10 | 右 | (+16, -15), (+16, 0), (+16, +15) | Y=10 | |
| 11 | 左 | (-16, -15), (-16, 0), (-16, +15) | ||
| 12 | 右 | (+16, -27), (+16, -12), (+16, +3), (+16, +18), (+16, +27) | Y=12 | |
| 13 | 左 | (-16, -27), (-16, -12), (-16, +3), (-16, +18), (-16, +27) | ||
| 14 | 右 | (+8, -19), (+8, -3), (+8, +13), (+8, +19) | Y=14 | |
| 15 | 左 | (-8, -19), (-8, -3), (-8, +13), (-8, +19) | ||
| 16 | 右 | (+12, -11), (+12, 0), (+12, +11) | Y=16 | |
| 17 | 左 | (-12, -11), (-12, 0), (-12, +11) | ||
| 18 | 右 | (+7, -11), (+7, 0), (+7, +11) | Y=18 | |
| 19 | 左 | (-7, -11), (-7, 0), (-7, +11) | ||
| 1A | 右 | (+4, 0) | Y=1A | クリスタルマンの反射弾等に使用 |
| 1B | 左 | (-4, 0) | ||
| 1C | 右 | (+8, -7), (+8, +7) | Y=1C | |
| 1D | 左 | (-8, -7), (-8, +7) | ||
| 1E | 右 | (+12, 0) | Y=1E | クリスタルマンの移動等に使用 |
| 1F | 左 | (-12, 0) | ||
| 20 | 右 | (+16, 0), (+16, +12) | Y=20 | |
| 21 | 左 | (-15, 0), (-15, +12) | ||
| 22 | 右 | (+20, 0) | Y=22 | |
| 23 | 左 | (-20, 0) | ||
| 24 | 右 | (+16, -11), (+16, 0), (+16, +11) | Y=24 | |
| 25 | 左 | (-16, -11), (-16, 0), (-16, +11) | ||
| 26 | 右 | (+12, -19), (+12, -3), (+12, +13), (+12, +19) | Y=26 | |
| 27 | 左 | (-12, -19), (-12, -3), (-12, +13), (-12, +19) | ||
| 28 | 右 | (+8, -11), (+8, 0), (+8, +11) | Y=28 | |
| 29 | 左 | (-8, -11), (-8, 0), (-8, +11) | ||
| 2A | 右 | (+8, 0) | Y=2A | |
| 2B | 左 | (-8, 0) | ||
| 2C | - | (0, -6), (0, +2) | ||
| 2D | - | (0, +5) | ||
| 2E-2F 実データ無し | ||||