第8章 スプライト移動


比較命令

 これも第5章で既出ですが、比較命令は3つあります。比較対象は直値かアドレスを指定できます。
	CMP - Aと比較する
	CPX - Xと比較する
	CPY - Yと比較する
 例えばこのようにします。

	cmp #$10  ; Aと10(16進数)を比較する

	cpx #16   ; Xと16(10進数)を比較する

	cpy $2002 ; Yと$2002の値を比較する

 比較命令を行うと、ステータスレジスタのN(ネガティブ),Z(ゼロ)C,(キャリー)フラグが結果により変化します。 比較した後に条件分岐命令でジャンプします。ちなみに、直前の演算結果が0になるとZフラグが立ちますから、 beq,bneと併用するときはcmp #0は省略することができます。活用しましょう。 (余談ですが、C言語ではループ用カウンタ変数を0から加算するよりも減算するほうが速いと言われてたのはこの理由によります。 最近のコンパイラでは大差ないかもしれませんが)

	beq ifEqual	; 比較結果が等しいならばifEqualラベルにジャンプする。

	bne ifNotEqual	; 比較結果が違ったらifNotEqualラベルにジャンプする。

スプライト移動プログラム

 これで十字ボタンでスプライトを移動するプログラムを作れるところまで説明しました。 このソースをダウンロードして、第5章のソースを置いた場所に置いて
 nesasm giko008.asm
を実行してください。パレット・スプライト・BGは前回と同じものを使用しています。 GIKO008.NESが出力されたら、エミュレータで起動してください。十字キーで第5章のスプライトを動かすことができるはずです。 メモリを見ることができるエミュならば、$0000のX座標と$0001のY座標が変化するのがわかるでしょう。


トップページ 前のページ 次のページ
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送