2013/06/14

スプライトを表示してみよう(3)

前回はスプライトを1枚だけ表示しましたので、今度はもっと多く表示しましょう。

Test2.c


#include <stdio.h>
#include <gb.h>

// タイルデータ
#include "testtile.c"

void main()
{
 UBYTE i;//ループ用

 DISPLAY_OFF;// 画面全体を非表示
 HIDE_SPRITES;// スプライトを非表示

 SPRITES_8x8;// スプライトモードを8*8に設定
 set_sprite_data(0, 4, TestTileLabel); // タイルデータをスプライトとして設定(0番から4つ)

 for (i = 0; i < 8; i++) {
  set_sprite_tile( i, (i / 2));// スプライトi番にタイル(i/2)番を設定
  move_sprite( i, ((i % 2) * 8) + 80, ((i / 2) * 16) + 64);//スプライトi番の座標を適当に設定
 }

 SHOW_SPRITES;// スプライトを表示
 DISPLAY_ON;// 画面全体を表示
}

これをコンパイルします。


lcc -o Test2.gb Test2.c

実行すると、このように表示されます。
8枚のスプライトが表示されています。
スプライト0・1番は「0」、スプライト2・3番は「1」、スプライト4・5番は「2」、スプライト6・7番は「3」を
設定しています。

ちなみに
UBYTE i;//ループ用
このiは変数といいます。iの中には数値が入ります。
ゲームボーイは8ビットCPUですので、変数の値は基本的に8ビットです。

UBYTEは変数の型です。

BYTE型は符号ありの8ビットで、-128~127が入りますが
UBYTE型は符号なしの8ビットで、0から255が入ります。
どちらも値を超えたら戻ります。
(BYTEで128になったら-128になり、UBYTEで256になったら0になります)

8ビットの変数を内部的に2つ使うことで、扱える数値の範囲を増やすことができます。
WORD型は符号ありの16ビットで、-32768~32767が入りますが
UWORD型は符号なしの16ビットで、0から65535が入ります。

C言語におけるint型はCPUのビット数によって変わりますので、ゲームボーイでは
BYTE型と同じですが、int型を使わず明示的にBYTE型と型宣言しましょう。

0 件のコメント:

コメントを投稿