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が入ります。
BYTE型と同じですが、int型を使わず明示的にBYTE型と型宣言しましょう。
0 件のコメント:
コメントを投稿