INPUT_PORTS_END DRIVER_INIT_MEMBER(pgm_arm_type3_state,happy6) { uint8_t *src; src = (uint8_t *)(machine().root_device().memregion("tiles")->base()) + 0x180000; pgm_descramble_happy6(src); pgm_descramble_happy6_2(src); src = (uint8_t *)(machine().root_device().memregion("sprcol")->base()) + 0x000000; pgm_descramble_happy6(src); pgm_descramble_happy6_2(src); src = (uint8_t *)(machine().root_device().memregion("sprcol")->base()) + 0x0800000; pgm_descramble_happy6(src); pgm_descramble_happy6_2(src); src = (uint8_t *)(machine().root_device().memregion("sprmask")->base()); pgm_descramble_happy6(src); pgm_descramble_happy6_2(src); src = (uint8_t *)(machine().root_device().memregion("ics")->base()) + 0x400000; pgm_descramble_happy6(src); pgm_descramble_happy6_2(src); svg_basic_init(); pgm_happy6_decrypt(machine()); svg_latch_init(); pgm_create_dummy_internal_arm_region_theglad(0); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::happy6_speedup_r),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,happy6) { svg_basic_init(); pgm_happy6_decrypt(machine()); svg_latch_init(); pgm_create_dummy_internal_arm_region(); }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,theglad) { svg_basic_init(machine()); pgm_theglad_decrypt(machine()); svg_latch_init(machine()); pgm_create_dummy_internal_arm_region(machine()); }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,svgpcb) { svg_basic_init(); pgm_svgpcb_decrypt(machine()); svg_latch_init(); pgm_create_dummy_internal_arm_region_theglad(0); m_armrom = (uint32_t *)memregion("prot")->base(); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x9e0, 0x9e3, read32_delegate(FUNC(pgm_arm_type3_state::svgpcb_speedup_r),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,theglad) { svg_basic_init(); pgm_theglad_decrypt(machine()); svg_latch_init(); // pgm_create_dummy_internal_arm_region(0x188); pgm_create_dummy_internal_arm_region_theglad(0); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::theglad_speedup_r),this)); }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,killbldp) { svg_basic_init(); pgm_killbldp_decrypt(machine()); svg_latch_init(); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::killbldp_speedup_r),this)); // uint16_t *temp16 = (uint16_t *)memregion("prot")->base(); // int base = 0xfc; // startup table uploads // temp16[(base) /2] = 0x0000; base += 2; // temp16[(base) /2] = 0xE1A0; base += 2; // base = 0xd4; // startup table uploads // temp16[(base) /2] = 0x0000; base += 2; // temp16[(base) /2] = 0xE1A0; base += 2; // // base = 0x120; // reset game state, uncomment this to break boot sequence how theglad was broken... // temp16[(base) /2] = 0x0000; base += 2; // temp16[(base) /2] = 0xE1A0; base += 2; }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,dmnfrnt) { svg_basic_init(); pgm_dfront_decrypt(machine()); svg_latch_init(); /* put some fake code for the ARM here ... */ pgm_create_dummy_internal_arm_region(0x4000); machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x18000444, 0x18000447, read32_delegate(FUNC(pgm_arm_type3_state::dmnfrnt_speedup_r),this)); m_maincpu->space(AS_PROGRAM).install_read_handler(0x80a03c, 0x80a03d, read16_delegate(FUNC(pgm_arm_type3_state::dmnfrnt_main_speedup_r),this)); m_svg_ram_sel = 1; // the internal rom probably also supplies the region here // we have to copy it to both shared ram regions because it reads from a different one before the attract story? // could be a timing error? or shared ram behavior isn't how we think it is? uint16_t *share16; share16 = (uint16_t *)(m_svg_shareram[1].get()); share16[0x158/2] = 0x0005; share16 = (uint16_t *)(m_svg_shareram[0].get()); share16[0x158/2] = 0x0005; }
DRIVER_INIT_MEMBER(pgm_arm_type3_state,killbldp) { svg_basic_init(); pgm_killbldp_decrypt(machine()); svg_latch_init(); }