static int DinohInit() { int nRet=0; unsigned char *pqs=NULL; Cps=1; Cps1Qs=1; Cps1QsHack=1; nCpsRomLen= 4*0x080000; nCpsCodeLen=0; // not encrypted nCpsGfxLen= 8*0x080000; nCpsZRomLen= 2*0x020000; nCpsQSamLen= 4*0x080000; nRet=CpsInit(); if (nRet!=0) return 1; // Load program roms nRet=BurnLoadRom(CpsRom+0x000000,0,1); if (nRet!=0) return 1; nRet=BurnLoadRom(CpsRom+0x080000,1,1); if (nRet!=0) return 1; nRet=BurnLoadRom(CpsRom+0x100000,2,1); if (nRet!=0) return 1; nRet=BurnLoadRom(CpsRom+0x180000,3,1); if (nRet!=0) return 1; // Patch Q-Sound Test CpsRom[0xaacf5]=0x4e; CpsRom[0xaacf4]=0x71; // Load graphics roms CpsLoadTiles(CpsGfx , 4); CpsLoadTiles(CpsGfx+0x200000, 8); nCpsLcReg=0x66; CpsLayEn[1]=0x02; CpsLayEn[2]=0x04; CpsLayEn[3]=0x08; // Protection enable code by KEV CpsMProt[0]=0x00; CpsMProt[1]=0x00; CpsMProt[2]=0x00; CpsMProt[3]=0x00; // Board ID improvments by KEV. 0x00,0x0000 CpsBID[0]=0x00; CpsBID[1]=0x00; CpsBID[2]=0x00; MaskAddr[0]=0x68; MaskAddr[1]=0x6a; MaskAddr[2]=0x6c; MaskAddr[3]=0x6e; nRet=BurnLoadRom(CpsZRom,12,1); dino_decode(); pqs=(unsigned char *)CpsQSam; nRet=BurnLoadRom(pqs ,13,1); nRet=BurnLoadRom(pqs+0x080000,14,1); nRet=BurnLoadRom(pqs+0x100000,15,1); nRet=BurnLoadRom(pqs+0x180000,16,1); nRet=CpsRunInit(); if (nRet!=0) return 1; // Ready to go return 0; }
static int DrvInit() { int nRet=0; unsigned char *pqs=NULL; Cps=1; Cps1Qs=1; nCpsRomLen= 3*0x080000; nCpsCodeLen=0; // not encrypted nCpsGfxLen= 8*0x080000; nCpsZRomLen= 2*0x020000; nCpsQSamLen= 4*0x080000; nRet=CpsInit(); if (nRet!=0) return 1; // Load program roms nRet=BurnLoadRom(CpsRom+0x000000,0,1); if (nRet!=0) return 1; nRet=BurnLoadRom(CpsRom+0x080000,1,1); if (nRet!=0) return 1; nRet=BurnLoadRom(CpsRom+0x100000,2,1); if (nRet!=0) return 1; // Already byteswapped // Load graphics roms CpsLoadTiles(CpsGfx , 3); CpsLoadTiles(CpsGfx+0x200000, 7); nCpsLcReg=0x4a; // Layer control register is at 0x4a CpsLayEn[1]=0x16; CpsLayEn[2]=0x16; CpsLayEn[3]=0x16; // Protection enable code by KEV CpsMProt[0]=0x00; CpsMProt[1]=0x00; CpsMProt[2]=0x00; CpsMProt[3]=0x00; // Board ID improvments by KEV. 0x00,0x0000 CpsBID[0]=0x00; CpsBID[1]=0x00; CpsBID[2]=0x00; MaskAddr[0]=0x4c; MaskAddr[1]=0x4e; MaskAddr[2]=0x40; MaskAddr[3]=0x42; nRet=BurnLoadRom(CpsZRom,11,1); dino_decode(); pqs=(unsigned char *)CpsQSam; nRet=BurnLoadRom(pqs ,12,1); nRet=BurnLoadRom(pqs+0x080000,13,1); nRet=BurnLoadRom(pqs+0x100000,14,1); nRet=BurnLoadRom(pqs+0x180000,15,1); nRet=CpsRunInit(); if (nRet!=0) return 1; // Ready to go return 0; }
void dinob_init(void) { UINT8 *mem8 = memory_region_cpu1; // Fix draw scroll mem8[0x006c2] = 0xc0; mem8[0x006c3] = 0xff; // Fix sprites update mem8[0x554] = 0x3C; mem8[0x555] = 0x30; mem8[0x556] = 0x00; mem8[0x557] = 0x90; mem8[0x558] = 0x6D; mem8[0x559] = 0x4A; mem8[0x55A] = 0xB4; mem8[0x55B] = 0x69; mem8[0x55C] = 0x00; mem8[0x55D] = 0x67; mem8[0x55E] = 0x06; mem8[0x55F] = 0x00; mem8[0x560] = 0x3C; mem8[0x561] = 0x30; mem8[0x562] = 0x40; mem8[0x563] = 0x90; mem8[0x564] = 0xC0; mem8[0x565] = 0x33; mem8[0x566] = 0x80; mem8[0x567] = 0x00; mem8[0x568] = 0x00; mem8[0x569] = 0x01; // Fix gfx mem8[0x472] = 0xFC; mem8[0x473] = 0x33; mem8[0x474] = 0x0; mem8[0x475] = 0x90; mem8[0x476] = 0x80; mem8[0x478] = 0x0; mem8[0x479] = 0x1; mem8[0x47A] = 0xFC; mem8[0x47B] = 0x33; mem8[0x47C] = 0x80; mem8[0x47D] = 0x90; mem8[0x47E] = 0x80; mem8[0x480] = 0x2; mem8[0x481] = 0x1; mem8[0x482] = 0xFC; mem8[0x483] = 0x33; mem8[0x484] = 0xC0; mem8[0x485] = 0x90; mem8[0x486] = 0x80; mem8[0x487] = 0x0; mem8[0x488] = 0x4; mem8[0x489] = 0x1; mem8[0x48A] = 0xFC; mem8[0x48B] = 0x33; mem8[0x48C] = 0x0; mem8[0x48D] = 0x91; mem8[0x48E] = 0x80; mem8[0x48F] = 0x0; mem8[0x490] = 0x6; mem8[0x491] = 0x1; mem8[0x006cc] = 0x80; mem8[0x006cd] = 0x00; mem8[0x006ce] = 0x0C; mem8[0x006cf] = 0x01; mem8[0x006de] = 0x80; mem8[0x006df] = 0x00; mem8[0x006e0] = 0x10; mem8[0x006e1] = 0x01; mem8[0x006f0] = 0x80; mem8[0x006f1] = 0x00; mem8[0x006f2] = 0x14; mem8[0x006f3] = 0x01; mem8[0x00704] = 0x80; mem8[0x00705] = 0x00; mem8[0x00706] = 0x0E; mem8[0x00707] = 0x01; mem8[0x00718] = 0x80; mem8[0x00719] = 0x00; mem8[0x0071a] = 0x12; mem8[0x0071b] = 0x01; mem8[0x0072c] = 0x80; mem8[0x0072d] = 0x00; mem8[0x0072e] = 0x16; mem8[0x0072f] = 0x01; // Fix screen transitions mem8[0x00b28] = 0x00; mem8[0x00b29] = 0x70; mem8[0x00b2a] = 0x00; mem8[0x00b2b] = 0x72; mem8[0x00b2c] = 0x3C; mem8[0x00b2d] = 0x34; mem8[0x00b32] = 0xC1; mem8[0x00b33] = 0x20; // Fix sound mem8[0x00666] = 0xF1; mem8[0x00667] = 0x00; mem8[0x00668] = 0x02; mem8[0x00669] = 0x80; mem8[0xaaa6c] = 0xD8; mem8[0xaaa6d] = 0x00; // Fix change char mem8[0x1900da] = 0x18; mem8[0x1900f8] = 0x18; dino_decode(); }
void dinohunt_init(void) { UINT8 *mem8 = memory_region_cpu1; mem8[0xaacf4] = 0x71; mem8[0xaacf5] = 0x4e; mem8[0x6AA] = 0xD8; mem8[0x6AB] = 0x13; mem8[0x6AC] = 0xF1; mem8[0x6AD] = 0x00; mem8[0x6AE] = 0x07; mem8[0x6AF] = 0x80; mem8[0x6B0] = 0xD8; mem8[0x6B1] = 0x13; mem8[0x6B2] = 0xF1; mem8[0x6B3] = 0x00; mem8[0x6B4] = 0x09; mem8[0x6B5] = 0x80; mem8[0x43A] = 0x71; mem8[0x43B] = 0x4E; mem8[0x43C] = 0x71; mem8[0x43D] = 0x4E; mem8[0x43E] = 0x71; mem8[0x43F] = 0x4E; mem8[0x440] = 0x71; mem8[0x441] = 0x4E; mem8[0x664] = 0xD8; mem8[0x665] = 0x33; mem8[0x666] = 0xF1; mem8[0x667] = 0x00; mem8[0x668] = 0x02; mem8[0x669] = 0x80; mem8[0x75E] = 0x39; mem8[0x75F] = 0x12; mem8[0x760] = 0xF1; mem8[0x761] = 0x00; mem8[0x762] = 0x01; mem8[0x763] = 0xC0; mem8[0x790] = 0x39; mem8[0x791] = 0x12; mem8[0x792] = 0xF1; mem8[0x793] = 0x00; mem8[0x794] = 0x01; mem8[0x795] = 0xC0; mem8[0x7B4] = 0x79; mem8[0x7B5] = 0x1B; mem8[0x7B6] = 0xF1; mem8[0x7B7] = 0x00; mem8[0x7B8] = 0x01; mem8[0x7B9] = 0xC0; mem8[0x7BA] = 0x18; mem8[0x7BB] = 0x00; dino_decode(); }
int memory_init(void) { int i, res; memory_region_cpu1 = NULL; memory_region_cpu2 = NULL; memory_region_gfx1 = NULL; memory_region_sound1 = NULL; memory_region_user1 = NULL; memory_region_user2 = NULL; memory_length_cpu1 = 0; memory_length_cpu2 = 0; memory_length_gfx1 = 0; memory_length_sound1 = 0; memory_length_user1 = 0; memory_length_user2 = 0; pad_wait_clear(); video_clear_screen(); msg_screen_init(WP_LOGO, ICON_SYSTEM, TEXT(LOAD_ROM)); msg_printf(TEXT(CHECKING_ROM_INFO)); if ((res = load_rom_info(game_name)) != 0) { switch (res) { case 1: msg_printf(TEXT(THIS_GAME_NOT_SUPPORTED)); break; case 2: msg_printf(TEXT(ROM_NOT_FOUND)); break; case 3: msg_printf(TEXT(ROMINFO_NOT_FOUND)); break; } msg_printf(TEXT(PRESS_ANY_BUTTON2)); pad_wait_press(PAD_WAIT_INFINITY); Loop = LOOP_BROWSER; return 0; } i = 0; driver = NULL; while (CPS1_driver[i].name) { if (!strcmp(game_name, CPS1_driver[i].name)) { driver = &CPS1_driver[i]; break; } i++; } if (!driver) { msg_printf(TEXT(DRIVER_FOR_x_NOT_FOUND), game_name); msg_printf(TEXT(PRESS_ANY_BUTTON2)); pad_wait_press(PAD_WAIT_INFINITY); Loop = LOOP_BROWSER; return 0; } if (parent_name[0]) msg_printf(TEXT(ROMSET_x_PARENT_x), game_name, parent_name); else msg_printf(TEXT(ROMSET_x), game_name); load_gamecfg(game_name); #ifdef ADHOC if (adhoc_enable) { /* AdHoc通信時は一部オプションで固定の設定を使用 */ cps_raster_enable = 1; psp_cpuclock = PSPCLOCK_333; option_vsync = 0; option_autoframeskip = 0; option_frameskip = 0; option_showfps = 0; option_speedlimit = 1; option_sound_enable = 1; option_samplerate = 0; } else #endif { #ifdef COMMAND_LIST if (parent_name[0]) load_commandlist(game_name, parent_name); else load_commandlist(game_name, NULL); #endif } set_cpu_clock(psp_cpuclock); if (load_rom_cpu1() == 0) return 0; if (load_rom_cpu2() == 0) return 0; if (load_rom_gfx1() == 0) return 0; if (load_rom_sound1() == 0) return 0; if (load_rom_user1() == 0) return 0; static_ram1 = (UINT8 *)cps1_ram - 0xff0000; static_ram2 = (UINT8 *)cps1_gfxram - 0x900000; qsound_sharedram1 = &memory_region_cpu2[0xc000]; qsound_sharedram2 = &memory_region_cpu2[0xf000]; memset(cps1_ram, 0, sizeof(cps1_ram)); memset(cps1_gfxram, 0, sizeof(cps1_gfxram)); memset(cps1_output, 0, sizeof(cps1_output)); if (machine_driver_type == MACHINE_qsound) { machine_sound_type = SOUND_QSOUND; z80_read_memory_8 = cps1_qsound_readmem; z80_write_memory_8 = cps1_qsound_writemem; memory_length_user2 = 0x8000; if ((memory_region_user2 = (UINT8 *)memalign(MEM_ALIGN, 0x8000)) == NULL) { fatalerror(TEXT(COULD_NOT_ALLOCATE_MEMORY_0x8000BYTE)); return 0; } memset(memory_region_user2, 0, 0x8000); } else if (machine_driver_type == MACHINE_wofhfh) { machine_sound_type = SOUND_YM2151_CPS1; z80_read_memory_8 = cps1_sound_readmem; z80_write_memory_8 = cps1_sound_writemem; memory_region_user2 = memory_region_cpu2; } else { machine_sound_type = SOUND_YM2151_CPS1; #if !RELEASE if (machine_init_type == INIT_kodb) { z80_read_memory_8 = cps1_kodb_readmem; z80_write_memory_8 = cps1_kodb_writemem; } else #endif { z80_read_memory_8 = cps1_sound_readmem; z80_write_memory_8 = cps1_sound_writemem; } memory_region_user2 = memory_region_cpu2; } switch (machine_init_type) { case INIT_wof: wof_decode(); break; case INIT_dino: dino_decode(); break; case INIT_punisher: punisher_decode(); break; case INIT_slammast: slammast_decode(); break; case INIT_pang3: pang3_decode(); break; #if !RELEASE case INIT_kodb: kodb_init(); break; case INIT_sf2m13: sf2m13_init(); break; case INIT_wofh: wofh_init(); break; case INIT_wof3js: wof3js_init(); break; case INIT_wof3sj: wof3sj_init(); break; case INIT_wofsjb: wofsjb_init(); break; case INIT_dinoh: dino_decode(); break; case INIT_dinob: dinob_init(); break; case INIT_dinohunt: dinohunt_init(); break; case INIT_sf2m3: sf2m3_init(); break; case INIT_wofb: wofb_init(); break; case INIT_wofch3p: wofch3p_init(); break; #endif } return 1; }