// C Source File // Created 2003/10/14; 22:37:09 ←もはや意味を為していない… #define USE_TI92PLUS // Compile for TI-92 Plus #define USE_V200 // Compile for V200 #define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization #define SAVE_SCREEN // Save/Restore LCD Contents #include // Include All Header Files #include "extgraph.h" //グレースケール関係が楽になります。 // Sprite Data "0b"も使えます。1:色がつく,0:つかない unsigned char back_d[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x00,0x55,0x00, 0xAA,0x00,0x55,0xAA,0x55,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF };//背景 暗 unsigned char back_l[] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xE5,0xE5,0xAB,0x3A,0x36,0x7C,0x9A,0x32,0x7C,0xCC,0x9E, 0xC7,0xCF,0x3B,0x75,0x75,0xF5,0x73,0x5A,0x2E,0xDA,0x4E,0x58,0x76,0x80,0x70,0x02, 0x68,0x02,0x68,0x06,0x8A,0xA0,0x08,0xA0,0x12,0x22,0x88,0x00,0x22,0x04,0x00,0x00, 0x55,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF,0xFF,0x55,0xFF,0xFF,0xAA, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0xFF,0xAA,0xFF, 0x55,0xFF,0xAA,0x55,0xAA,0x55,0x00,0xAA,0x00,0x55,0x00,0xAA,0x00,0x00,0x00,0x00, 0x00,0x00,0xAA,0x00,0x55,0x00,0xAA,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF };//背景 明 unsigned char dd_d[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0xD0,0x00, 0x00,0x01,0x1C,0x00,0x01,0x01,0x18,0x20,0x03,0x19,0x1D,0x31,0x0B,0xB9,0x3F,0xFF, 0x1F,0xC7,0xF8,0x1E,0xFF,0xFF,0xF0,0x06,0x80,0x00,0x00,0x00,0xFF,0xFF,0xFC,0x00 };//駆逐艦 暗 unsigned char dd_l[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x20,0x00, 0x00,0x80,0x20,0x00,0x01,0xC0,0x20,0x00,0x00,0x80,0x28,0x00,0x00,0x81,0xAE,0x00, 0x00,0x80,0xC2,0x00,0x1E,0x98,0xCF,0x9E,0x04,0xA0,0xCA,0x88,0xF5,0x46,0xC0,0x00, 0x22,0x38,0x17,0xE0,0x00,0x00,0x0F,0xC0,0x7F,0xFF,0xFF,0x90,0x80,0x00,0x00,0x3B };//駆逐艦 明 unsigned char dd_m[] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xDF,0xFF, 0xFF,0x7F,0xDF,0xFF,0xFE,0x3F,0xDF,0xFF,0xFF,0x7F,0xC7,0xFF,0xFF,0x7E,0x01,0xFF, 0xFF,0x7E,0x01,0xFF,0xE0,0x66,0x00,0x41,0xF8,0x46,0x00,0x46,0x00,0x00,0x00,0x00, 0xC0,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00 };//駆逐艦 マスク マスクは色を抜きたいところを1にします。 // Sprite Data // Main Function void _main(void) { // Place your code here. short i; long j; char exit_str[]="[ESC] to Exit"; char credit_str[]="Sample by kinoko"; void *VLP=malloc(LCD_SIZE); void *VDP=malloc(LCD_SIZE); //仮想VRAMみたいな if(!VLP || !VDP)return; //キャラクターが描かれる前の背景を保存 暗・明 unsigned char* dd_bd=(unsigned char*)malloc(sizeof(char)*32*16); unsigned char* dd_bl=(unsigned char*)malloc(sizeof(char)*32*16); if(!dd_bd || !dd_bl)return; ClrScr(); INT_HANDLER save_int_1=GetIntVec(AUTO_INT_1); INT_HANDLER save_int_5=GetIntVec(AUTO_INT_5); SetIntVec(AUTO_INT_1,DUMMY_HANDLER); SetIntVec(AUTO_INT_5,DUMMY_HANDLER); if(!GrayOn()) //失敗することがあります。グレースケールを使えるようにする { SetIntVec(AUTO_INT_1,save_int_1); SetIntVec(AUTO_INT_5,save_int_5); free(VLP); free(VDP); free(dd_bd); free(dd_bl); return; } //背景を描画 for(i=0;i<30;i++) //バッファをゼロクリアしていないのでBLITします GraySprite8_BLIT(i*8,0,128,back_l,back_d,0x00,VLP,VDP);//このマスクは0がいいようです FastCopyScreen(VLP,GrayGetPlane(LIGHT_PLANE));//一旦表示 FastCopyScreen(VDP,GrayGetPlane(DARK_PLANE)); for(i=0;i<208;i+=1) //メインループ { SpriteX8Get(i,48,16,VLP,dd_bl,4);//元の背景を保存 SpriteX8Get(i,48,16,VDP,dd_bd,4); //キャラクターを描く GraySpriteX8_MASK(i,48,16,dd_l,dd_d,dd_m,dd_m,4,VLP,VDP); for(j=0;j<100000;j++); //時間稼ぎ FastCopyScreen(VLP,GrayGetPlane(LIGHT_PLANE));//実画面に転送 FastCopyScreen(VDP,GrayGetPlane(DARK_PLANE)); //背景を元に戻す GraySpriteX8_MASK(i,48,16,dd_bl,dd_bd,dd_m,dd_m,4,VLP,VDP); } //メッセージ表示 DrawGrayStrExt(0,48,exit_str,A_NORMAL|A_CENTERED|A_SHADOWED,F_8x10); DrawGrayStrExt(0,80,credit_str,A_NORMAL|A_CENTERED,F_6x8); while(!(_rowread(0xfeff) & 0x0040)); //ESC待ち //後片付け GrayOff(); SetIntVec(AUTO_INT_1,save_int_1); SetIntVec(AUTO_INT_5,save_int_5); free(VLP); free(VDP); free(dd_bd); free(dd_bl); } //ライブラリばかり使っててだめだめですね、反省 // //スプライトは今回の例を使うと、i=-10とした場合、画像の左上が(230,47)に来ます。 //逆に正の方向にはみ出した場合、はみ出した部分は左端に現れ、1ドット下がります。