/*------------------------------------------ * Select 3D & Sprite Execute Environment *----------------------------------------*/ #define SPR_SYNC_VB_OUT #define USE_SLAVE #define USE_DSP #define USE_INBETWEEN_OBJECT #define USE_DEBUG_INFO
extern int dbgComputePol; /* 計算ポリゴン数 */ extern int dbgDrawPol; /* 描画ポリゴン数 */
この変数は sega_spr.h に定義済みです。
#include <machine.h> #include "saga_spr.h" #include "sega_scl.h" #include "sega_int.h" extern void vbStart(void); /* V-BLANK IN 割り込みルーチン */ extern void vbEnd(void); /* V-BLANK OUT 割り込みルーチン */ main() { Uint8 *vram; /* VRAMアドレス格納エリア */ set_imask(0); /* 割り込み可にする */ SCL_Vdp2Init(); /* スクロールとプライオリティの初期化 */ SCL_SetPriority(SCL_SP0|SCL_SP1|SCL_SP2|SCL_SP3|SCL_SP4| SCL_SP5|SCL_SP6|SCL_SP7,7); SCL_SetSpriteMode(SCL_TYPE1,SCL_MIX,SCL_SP_WINDOW); SPR_Initial(&vram); /* スプライトを初期化 */ INT_ChgMsk(INT_MSK_NULL, INT_MSK_VBL_IN | INT_MSK_VBL_OUT); /* V-BLANK割り込みをディセーブル */ INT_SetFunc(INT_SCU_VBLK_IN, &vbStart); /* V-BLANK IN 割り込みルーチンの登録 */ INT_SetFunc(INT_SCU_VBLK_OUT, &vbEnd); /* V-BLANK OUT 割り込みルーチンの登録 */ INT_ChgMsk(INT_MSK_VBL_IN | INT_MSK_VBL_OUT, INT_MSK_NULL); /* V-BLANK割り込みをイネーブル */ SCL_SetFrameInterval(2); /* フレームチェンジインターバルを */ /* 2/60 秒にセット */ for(;;){ memcpy(vram,command,sizeof(command)); /* VRAMにスプライトコマンドをセット */ -------- /* スクロールデータセット */ SCL_DisplayFrame(); /* V-BLANK割り込み待ち */ /* スプライト表示とスクロール動作を行う */ } }−Vブランク処理ルーチン(上記メインとは別ソースファイル)−
#include <machine.h> #include "sega_spr.h" #include "sega_scl.h" #pragma interrupt(VbStart) #pragma interrupt(VbEnd) void VbStart(void) { SCL_VblankStart(); /* Vブランク開始VDP割り込み処理 */ -------- /* その他Vブランク開始処理 */ } void VbEnd(void) { SCL_VblankEnd(); /* Vブランク終了VDP割り込み処理 */ -------- /* その他Vブランク終了処理 */ }