⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ninjaw.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 4 页
字号:
{   { MSG_DIFFICULTY,          0x03, 0x04 },   { MSG_NORMAL,              0x03, 0x00 },   { MSG_EASY,                0x02, 0x00 },   { MSG_HARD,                0x01, 0x00 },   { MSG_HARDEST,             0x00, 0x00 },   { MSG_EXTRA_LIFE,          0x0C, 0x04 },   { "Every 700k",            0x0C, 0x00 },   { "Every 800k",            0x08, 0x00 },   { "Every 900k",            0x04, 0x00 },   { "Every 500k",            0x00, 0x00 },   { MSG_LIVES,               0x30, 0x04 },   { "3",                     0x30, 0x00 },   { "4",                     0x20, 0x00 },   { "5",                     0x10, 0x00 },   { "6",                     0x00, 0x00 },   { MSG_CHEAT,               0x40, 0x02 },   { MSG_OFF,                 0x40, 0x00 },   { MSG_ON,                  0x00, 0x00 },   { MSG_CONTINUE_PLAY,       0x80, 0x02 },   { MSG_ON,                  0x80, 0x00 },   { MSG_OFF,                 0x00, 0x00 },   { NULL,                    0,    0,   },};static struct DSW_INFO darius_2_dsw[] ={   { 0x03B000, 0xFF, dsw_data_darius_2_0 },   { 0x03B002, 0xFF, dsw_data_darius_2_1 },   { 0,        0,    NULL,      },};static struct ROMSW_DATA romsw_data_darius_2_0[] ={   { "Taito Japan (Japanese)", 0x01 },   { "Taito America (Sagaia)", 0x02 },   { "Taito Japan (Sagaia)",   0x03 },   { NULL,                     0    },};static struct ROMSW_INFO darius_2_romsw[] ={   { 0x03FFFF, 0x01, romsw_data_darius_2_0 },   { 0,        0,    NULL },};struct GAME_MAIN game_darius_2 ={   darius_2_dirs,   darius_2_roms,   ninja_warriors_inputs,   darius_2_dsw,   darius_2_romsw,   load_darius_2,   clear_ninja_warriors,   &ninja_warriors_video,   execute_ninja_warriors_frame,   "darius2",   "Darius 2",   "鈅怆釩釧釾镼",   COMPANY_ID_TAITO,   "C07",   1989,   taito_ym2610_sound,   GAME_SHOOT,};static int romset;static UINT8 *RAM2;static UINT8 *GFX_BG0;static UINT8 *GFX_BG0_SOLID;static UINT8 *GFX_SPR;static UINT8 *GFX_SPR_SOLID;static UINT8 *RAM_INPUT;void load_ninja_warriors(void){   int ta,tb,tc,td;   UINT8 *TMP;   romset = 0;   if(!(TMP=AllocateMem(0x80000))) return;   if(!(GFX=AllocateMem(0x600000))) return;   GFX_BG0 = GFX+0x000000;   GFX_SPR = GFX+0x200000;   tb=0;   if(!load_rom("B31-01", TMP, 0x80000)) return;		// 8x8 BACKGROUND TILES   for(ta=0;ta<0x80000;ta+=2){      GFX[tb+1]=TMP[ta+1]&15;      GFX[tb+0]=TMP[ta+1]>>4;      GFX[tb+3]=TMP[ta+0]&15;      GFX[tb+2]=TMP[ta+0]>>4;      tb+=4;   }   if(!load_rom("B31-02", TMP, 0x80000)) return;   for(ta=0;ta<0x80000;ta+=2){      GFX[tb+1]=TMP[ta+1]&15;      GFX[tb+0]=TMP[ta+1]>>4;      GFX[tb+3]=TMP[ta+0]&15;      GFX[tb+2]=TMP[ta+0]>>4;      tb+=4;   }   if(!load_rom("B31-07", TMP, 0x80000)) return;		// 16x16 SPRITES   for(ta=0;ta<0x80000;ta+=0){      for(td=0;td<2;td++){      tc=TMP[ta++];      GFX[tb+3]=(((tc&0x80)>>7)<<1);      GFX[tb+2]=(((tc&0x40)>>6)<<1);      GFX[tb+1]=(((tc&0x20)>>5)<<1);      GFX[tb+0]=(((tc&0x10)>>4)<<1);      GFX[tb+3]|=(((tc&0x08)>>3)<<0);      GFX[tb+2]|=(((tc&0x04)>>2)<<0);      GFX[tb+1]|=(((tc&0x02)>>1)<<0);      GFX[tb+0]|=(((tc&0x01)>>0)<<0);      tc=TMP[ta++];      GFX[tb+3]|=(((tc&0x80)>>7)<<3);      GFX[tb+2]|=(((tc&0x40)>>6)<<3);      GFX[tb+1]|=(((tc&0x20)>>5)<<3);      GFX[tb+0]|=(((tc&0x10)>>4)<<3);      GFX[tb+3]|=(((tc&0x08)>>3)<<2);      GFX[tb+2]|=(((tc&0x04)>>2)<<2);      GFX[tb+1]|=(((tc&0x02)>>1)<<2);      GFX[tb+0]|=(((tc&0x01)>>0)<<2);      tb+=4;      }      tb+=8;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("B31-06", TMP, 0x80000)) return;		// 16x16 SPRITES   for(ta=0;ta<0x80000;ta+=0){      for(td=0;td<2;td++){      tc=TMP[ta++];      GFX[tb+3]=(((tc&0x80)>>7)<<1);      GFX[tb+2]=(((tc&0x40)>>6)<<1);      GFX[tb+1]=(((tc&0x20)>>5)<<1);      GFX[tb+0]=(((tc&0x10)>>4)<<1);      GFX[tb+3]|=(((tc&0x08)>>3)<<0);      GFX[tb+2]|=(((tc&0x04)>>2)<<0);      GFX[tb+1]|=(((tc&0x02)>>1)<<0);      GFX[tb+0]|=(((tc&0x01)>>0)<<0);      tc=TMP[ta++];      GFX[tb+3]|=(((tc&0x80)>>7)<<3);      GFX[tb+2]|=(((tc&0x40)>>6)<<3);      GFX[tb+1]|=(((tc&0x20)>>5)<<3);      GFX[tb+0]|=(((tc&0x10)>>4)<<3);      GFX[tb+3]|=(((tc&0x08)>>3)<<2);      GFX[tb+2]|=(((tc&0x04)>>2)<<2);      GFX[tb+1]|=(((tc&0x02)>>1)<<2);      GFX[tb+0]|=(((tc&0x01)>>0)<<2);      tb+=4;      }      tb+=8;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("B31-05", TMP, 0x80000)) return;		// 16x16 SPRITES   for(ta=0;ta<0x80000;ta+=0){      for(td=0;td<2;td++){      tc=TMP[ta++];      GFX[tb+3]=(((tc&0x80)>>7)<<1);      GFX[tb+2]=(((tc&0x40)>>6)<<1);      GFX[tb+1]=(((tc&0x20)>>5)<<1);      GFX[tb+0]=(((tc&0x10)>>4)<<1);      GFX[tb+3]|=(((tc&0x08)>>3)<<0);      GFX[tb+2]|=(((tc&0x04)>>2)<<0);      GFX[tb+1]|=(((tc&0x02)>>1)<<0);      GFX[tb+0]|=(((tc&0x01)>>0)<<0);      tc=TMP[ta++];      GFX[tb+3]|=(((tc&0x80)>>7)<<3);      GFX[tb+2]|=(((tc&0x40)>>6)<<3);      GFX[tb+1]|=(((tc&0x20)>>5)<<3);      GFX[tb+0]|=(((tc&0x10)>>4)<<3);      GFX[tb+3]|=(((tc&0x08)>>3)<<2);      GFX[tb+2]|=(((tc&0x04)>>2)<<2);      GFX[tb+1]|=(((tc&0x02)>>1)<<2);      GFX[tb+0]|=(((tc&0x01)>>0)<<2);      tb+=4;      }      tb+=8;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   if(!load_rom("B31-04", TMP, 0x80000)) return;		// 16x16 SPRITES   for(ta=0;ta<0x80000;ta+=0){      for(td=0;td<2;td++){      tc=TMP[ta++];      GFX[tb+3]=(((tc&0x80)>>7)<<1);      GFX[tb+2]=(((tc&0x40)>>6)<<1);      GFX[tb+1]=(((tc&0x20)>>5)<<1);      GFX[tb+0]=(((tc&0x10)>>4)<<1);      GFX[tb+3]|=(((tc&0x08)>>3)<<0);      GFX[tb+2]|=(((tc&0x04)>>2)<<0);      GFX[tb+1]|=(((tc&0x02)>>1)<<0);      GFX[tb+0]|=(((tc&0x01)>>0)<<0);      tc=TMP[ta++];      GFX[tb+3]|=(((tc&0x80)>>7)<<3);      GFX[tb+2]|=(((tc&0x40)>>6)<<3);      GFX[tb+1]|=(((tc&0x20)>>5)<<3);      GFX[tb+0]|=(((tc&0x10)>>4)<<3);      GFX[tb+3]|=(((tc&0x08)>>3)<<2);      GFX[tb+2]|=(((tc&0x04)>>2)<<2);      GFX[tb+1]|=(((tc&0x02)>>1)<<2);      GFX[tb+0]|=(((tc&0x01)>>0)<<2);      tb+=4;      }      tb+=8;      if((tb&0x7F)==0){tb-=0x78;}      else{if((tb&0x7F)==8){tb-=8;}}   }   FreeMem(TMP);   RAMSize=0xA0000;   if(!(ROM=AllocateMem(0x120000))) return;   if(!(RAM=AllocateMem(RAMSize))) return;   RAM2=RAM+0x40000;   if(!load_rom_index(13, RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta]=RAM[ta];   }   if(!load_rom_index(14, RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+1]=RAM[ta];   }   if(!load_rom("B31-29", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x20000]=RAM[ta];   }   if(!load_rom("B31-27", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x20001]=RAM[ta];   }   if(!load_rom("B31-41", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40000]=RAM[ta];   }   if(!load_rom("B31-39", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40001]=RAM[ta];   }   if(!load_rom("B31-40", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x80000]=RAM[ta];   }   if(!load_rom("B31-38", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x80001]=RAM[ta];   }   if(!load_rom("B31-33", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xC0000]=RAM[ta];   }   if(!load_rom("B31-36", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xC0001]=RAM[ta];   }   if(!load_rom("B31-32", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xE0000]=RAM[ta];   }   if(!load_rom("B31-35", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xE0001]=RAM[ta];   }   if(!load_rom("B31-31", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x100000]=RAM[ta];   }   if(!load_rom("B31-34", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x100001]=RAM[ta];   }   /*-----[Sound Setup]-----*/   Z80ROM=RAM+0x80000;   if(!load_rom("B31-37", Z80ROM, 0x20000)) return;		// Z80 SOUND ROM   if(!(PCMROM=AllocateMem(0x200000))) return;   if(!load_rom("B31-08",PCMROM+0x000000,0x80000)) return;	// ADPCM A rom   if(!load_rom("B31-09",PCMROM+0x080000,0x80000)) return;	// ADPCM B rom   if(!load_rom("B31-10",PCMROM+0x100000,0x80000)) return;	// ADPCM B rom   if(!load_rom("B31-11",PCMROM+0x180000,0x80000)) return;	// ADPCM B rom   YM2610SetBuffers(PCMROM, PCMROM+0x80000, 0x80000, 0x180000);   AddTaitoYM2610(0x0345, 0x02B7, 0x20000);   /*-----------------------*/   ROM[0x199C]=0x4E;	// Fix small 68000 communication problem   ROM[0x199D]=0x71;   ROM[0x07BA]=0x13;		// move.b #$00,$AA0000   ROM[0x07BB]=0xFC;		// Speed Hack   ROM[0x07BC]=0x00;   ROM[0x07BD]=0x00;   ROM[0x07BE]=0x00;   ROM[0x07BF]=0xAA;   ROM[0x07C0]=0x00;   ROM[0x07C1]=0x00;   ROM[0x07C2]=0x60;   ROM[0x07C3]=0xE2;   ROM[0xC07A6]=0x13;		// move.b #$00,$AA0000   ROM[0xC07A7]=0xFC;		// Speed Hack   ROM[0xC07A8]=0x00;   ROM[0xC07A9]=0x00;   ROM[0xC07AA]=0x00;   ROM[0xC07AB]=0xAA;   ROM[0xC07AC]=0x00;   ROM[0xC07AD]=0x00;   ROM[0xC07AE]=0x60;   ROM[0xC07AF]=0xEE;   memset(RAM+0x00000,0x00,0x80000);   GFX_FG0    = RAM+0x64000;   RAM_INPUT  = RAM+0x3B000;   tc0100scn[0].RAM     = RAM+0x21000-0x6000;   tc0100scn[0].GFX_FG0 = GFX_FG0;   init_tc0100scn(0);   tc0100scn_0_copy_gfx_fg0(ROM+0x22000, 0x1000);   GFX_BG0_SOLID = make_solid_mask_8x8  (GFX_BG0, 0x8000);   GFX_SPR_SOLID = make_solid_mask_16x16(GFX_SPR, 0x4000);   tc0110pcr_init_typeb(RAM+0x38000, 1, 0);   tc0110pcr_init_typeb_2(RAM+0x39000, 1, 0);   tc0110pcr_init_typeb_3(RAM+0x3A000, 1, 0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -