static void drgwld2_common_init(running_machine &machine) { pgm_basic_init(machine); pgm_dw2_decrypt(machine); machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0xd80000, 0xd80003, FUNC(dw2_d80000_r)); machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd80000, 0xd80003, FUNC(dw2_d80000_w)); machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd00000, 0xd00fff, FUNC(dw2_unk_w)); }
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_022_025_state,drgw3) { pgm_basic_init(); pgm_dw3_decrypt(); // install and configure protection device(s) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); m_igs022->m_sharedprotram = m_sharedprotram; m_igs025->m_kb_source_data = dw3_source_data; }
void pgm_022_025_state::init_killbld() { pgm_basic_init(); pgm_killbld_decrypt(); // install and configure protection device(s) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd40000, 0xd40003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); m_igs022->m_sharedprotram = m_sharedprotram; m_igs025->m_kb_source_data = killbld_source_data; }
DRIVER_INIT_MEMBER(pgm_028_025_state,olds) { pgm_basic_init(); m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xdcb400, 0xdcb403, read16_delegate(FUNC(igs025_device::olds_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::olds_w), (igs025_device*)m_igs025)); m_maincpu->space(AS_PROGRAM).install_read_handler(0x8178f4, 0x8178f5, read16_delegate(FUNC(pgm_028_025_state::olds_prot_swap_r), this)); m_igs028->m_sharedprotram = m_sharedprotram; m_igs025->m_kb_source_data = m_olds_source_data; }
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)); }
void pgm_012_025_state::drgw2_common_init() { m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd80000, 0xd80003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::drgw2_d80000_protection_w), (igs025_device*)m_igs025)); m_igs025->m_kb_source_data = drgw2_source_data; pgm_basic_init(); pgm_drgw2_decrypt(); }
static void drgwld2_common_init(running_machine &machine) { pgm_basic_init(machine); pgm_dw2_decrypt(machine); /* Info from Elsemi Here is how to "bypass" the dw2 hang protection, it fixes the mode select and after failing in the 2nd stage (probably there are other checks out there). */ machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0xd80000, 0xd80003, FUNC(dw2_d80000_r)); }
MACHINE_CONFIG_END void pgm_arm_type3_state::svg_basic_init() { pgm_basic_init(); m_svg_shareram[0] = std::make_unique<uint32_t[]>(0x20000 / 4); m_svg_shareram[1] = std::make_unique<uint32_t[]>(0x20000 / 4); m_svg_ram_sel = 0; save_pointer(NAME(m_svg_shareram[0].get()), 0x20000 / 4); save_pointer(NAME(m_svg_shareram[1].get()), 0x20000 / 4); save_item(NAME(m_svg_ram_sel)); }
MACHINE_CONFIG_END void pgm_arm_type3_state::svg_basic_init() { pgm_basic_init(); m_svg_shareram[0] = auto_alloc_array(machine(), UINT32, 0x20000 / 4); m_svg_shareram[1] = auto_alloc_array(machine(), UINT32, 0x20000 / 4); m_svg_ram_sel = 0; save_pointer(NAME(m_svg_shareram[0]), 0x20000 / 4); save_pointer(NAME(m_svg_shareram[1]), 0x20000 / 4); save_item(NAME(m_svg_ram_sel)); }
MACHINE_CONFIG_END static void svg_basic_init(running_machine &machine) { pgm_arm_type3_state *state = machine.driver_data<pgm_arm_type3_state>(); pgm_basic_init(machine); state->m_svg_shareram[0] = auto_alloc_array(machine, UINT32, 0x10000 / 4); state->m_svg_shareram[1] = auto_alloc_array(machine, UINT32, 0x10000 / 4); state->m_svg_ram_sel = 0; state->save_pointer(NAME(state->m_svg_shareram[0]), 0x10000 / 4); state->save_pointer(NAME(state->m_svg_shareram[1]), 0x10000 / 4); state->save_item(NAME(state->m_svg_ram_sel)); }
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 }