DRIVER_INIT_MEMBER(pgm_arm_type2_state,kov2p) { // this hacks the identification of the kov2 rom to return the string required for kov2p // this isn't guaranteed to work properly (and definitely wouldn't on real hardware due to the internal // ROM uploading the encryption table) The internal ROM should be dumped properly. pgm_basic_init(machine()); pgm_kov2p_decrypt(machine()); kov2_latch_init(machine()); UINT8 *mem8 = (UINT8 *)machine().root_device().memregion("user1")->base(); mem8[0xDE] = 0xC0; mem8[0xDF] = 0x46; mem8[0x4ED8] = 0xA8;// B0 mem8[0x4EDC] = 0x9C;// A4 mem8[0x4EE0] = 0x5C;// 64 mem8[0x4EE4] = 0x94;// 9C mem8[0x4EE8] = 0xE8;// F0 mem8[0x4EEC] = 0x6C;// 74 mem8[0x4EF0] = 0xD4;// DC mem8[0x4EF4] = 0x50;// 58 mem8[0x4EF8] = 0x80;// 88 mem8[0x4EFC] = 0x9C;// A4 mem8[0x4F00] = 0x28;// 30 mem8[0x4F04] = 0x30;// 38 mem8[0x4F08] = 0x34;// 3C mem8[0x4F0C] = 0x1C;// 24 mem8[0x1FFFFC] = 0x33; mem8[0x1FFFFD] = 0x99; // we only have a HK internal ROM dumped for now, allow us to override that for debugging purposes. machine().device("prot")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x48000138, 0x4800013b, FUNC(kov2_arm_region_w)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,martmast) { pgm_basic_init(machine()); pgm_mm_decrypt(machine()); kov2_latch_init(machine()); // we only have a USA / CHINA internal ROMs dumped for now, allow us to override that for debugging purposes. machine().device("prot")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x48000138, 0x4800013b, FUNC(martmast_arm_region_w)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,ddp2) { pgm_basic_init(); pgm_ddp2_decrypt(machine()); kov2_latch_init(); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1800300c, 0x1800300f, read32_delegate(FUNC(pgm_arm_type2_state::ddp2_speedup_r),this)); m_maincpu->space(AS_PROGRAM).install_read_handler(0x80ee54, 0x80ee55, read16_delegate(FUNC(pgm_arm_type2_state::ddp2_main_speedup_r),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,kov2) { pgm_basic_init(); pgm_kov2_decrypt(machine()); kov2_latch_init(); // we only have a HK internal ROM dumped for now, allow us to override that for debugging purposes. machine().device("prot")->memory().space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32_delegate(FUNC(pgm_arm_type2_state::kov2_arm_region_w),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,ddp2) { pgm_basic_init(machine()); pgm_ddp2_decrypt(machine()); kov2_latch_init(machine()); // we only have a Japan internal ROM dumped for now, allow us to override that for debugging purposes. machine().device("prot")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x48000000, 0x48000003, FUNC(ddp2_arm_region_w)); machine().device("prot")->memory().space(AS_PROGRAM).install_legacy_read_handler(0x1800300c, 0x1800300f, FUNC(ddp2_speedup_r)); machine().device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0x80ee54, 0x80ee55, FUNC(ddp2_main_speedup_r)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,kov2p) { // this hacks the identification of the kov2 rom to return the string required for kov2p // this isn't guaranteed to work properly (and definitely wouldn't on real hardware due to the internal // ROM uploading the encryption table) The internal ROM should be dumped properly. pgm_basic_init(); pgm_kov2p_decrypt(machine()); kov2_latch_init(); // we only have a China internal ROM dumped for now, allow us to override that for debugging purposes. machine().device("prot")->memory().space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32_delegate(FUNC(pgm_arm_type2_state::kov2p_arm_region_w),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type2_state,dwpc) { pgm_basic_init(machine()); kov2_latch_init(machine()); pgm_mm_decrypt(machine()); // encryption is the same as martial masters }