SGDKの小技


●FPSを表示する
開発中にFPSの表示があると便利ですね。

char str[16];
fix32ToStr(getFPS_f(), str, 1);
VDP_drawTextBG(VDP_PLAN_A,str,TILE_ATTR(PAL2, TRUE, FALSE, FALSE), 35, 1);

 


●VBlankとHBlankのイベントを受け取る

SYS_setVIntCallback(myVBlankFunction);
SYS_setHIntCallback(myHBlankFunction);

 

引数は関数ポインタになってます。使い終わったらヌルポインタでクリア出来ます。
HBlankはVDP_setHInterrupt(TRUE);が必要なようです。


●解像度を変更する

VDP_setScreenWidth256();
VDP_setScreenWidth320();

 

横256ドットモードにするとクロックが落ちて全体的に性能が下がります。


●フォントのデザインとパレットを変更する

//※リソースがTilesetの場合

VDP_loadFont(&font_image, 1);//デザインの変更

 

//※リソースがImageの場合

VDP_loadFont(font_image.tileset, 1);//デザインの変更


VDP_setTextPalette(1);//パレットの変更

 

サンプル画像のようにアスキー(ASCII)コード並びの画像を用意して設定します。


●スコア表示などテキストを右詰めで表示する

VDP_drawTextは左詰め表示なのですがstrlenでテキストの文字数を調べる事によって
右詰めで座標を指定出来ます。

//スコアの表示

char str[16];

int score;

intToStr(score, str, 1);
VDP_drawText(str, 13 - strlen(str), 23);


●リセットについて

メガドライブはハイスコアを残す為なのかリセットをしても変数が初期化されません。

リセット後は変数が初期化されていない状態で初めから処理が走るので初期化する処理が必要になります。

変数を定義したら初期化する関数を作って変数を初期化するようにしてください。