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();
}
Example #3
0
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();
}