📄 ninjaw.c
字号:
{ { 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 + -