7.新しいカスタムブロックを作ってみよう4

触れたブロックが別のブロックに変化したり、
ブロックの位置にスプライトを生成したり…
そのためには、動作してるブロックの位置座標が分からなければいけません。

動作してるブロックのx座標は、$9Aから2バイトに格納されます。
y座標は、$98から2バイトに格納されます。
また、レイヤー1にブロックがある場合は$1933に0が、レイヤー2に有る場合は1が代入されます。
後者の場合、$9A、$98はレイヤー2上での座標であることに注意してください。

これらの座標は、マリオの座標やファイアの座標とブロックへの触れ方から計算されるので、多少のズレが生じます。
そこで以下の通りにすると正規化され、正確なブロックの座標となります。
LDA #$0F
TRB $9A
TRB $98
また、$03から2バイトにタイルの16x番号が、そして
$1693に効果番号の下位バイトが、Yレジスタに上位バイトが格納され、
この効果番号のタイルの効果が実行されます。

これらを利用して、右隣に自分と同じブロックを生成するブロックを作ってみましょう。






ブロックを生成するルーチンはカスタムスプライトのうんちくの方を参照してください。
ブロックのx座標に$10を足した座標の箇所に、
ブロックと同じ16x番号のタイルを生成しています。