changed so that the intro runs, but it can no longer be started.. but at least this is a more proper flow.. (nw)

This commit is contained in:
David Haywood 2013-11-13 19:22:36 +00:00
parent c1cfac89cc
commit eb56f759e7
2 changed files with 40 additions and 10 deletions

View File

@ -482,8 +482,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(pgm_state::pgm_interrupt)
{
int scanline = param;
if(scanline == 224)
m_maincpu->set_input_line(6, HOLD_LINE);
// already being generated by MCFG_CPU_VBLANK_INT_DRIVER("screen", pgm_state, irq6_line_hold)
// if(scanline == 224)
// m_maincpu->set_input_line(6, HOLD_LINE);
if(scanline == 0)
if (!m_irq4_disabled) m_maincpu->set_input_line(4, HOLD_LINE);
@ -3223,8 +3224,7 @@ ROM_START( theglada )
ROM_LOAD16_WORD_SWAP( "u6.rom", 0x100000, 0x080000, CRC(14c85212) SHA1(8d2489708e176a2c460498a13173be01f645b79e) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP )
ROM_LOAD( "thegladpcb_igs027a.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) ) // from 'thegladpcb set'
ROM_LOAD( "theglada_igs027a.bin", 0x0000, 0x4000, NO_DUMP ) // this set clearly uses a different internal rom, the pointers in the external ROM are wrong for the v100 rom.
ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
ROM_LOAD( "u2.rom", 0x000000, 0x200000, CRC(c7bcf2ae) SHA1(10bc012c83987f594d5375a51bc4be2e17568a81) )

View File

@ -234,9 +234,15 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,theglad)
UINT16 *temp16 = (UINT16 *)memregion("prot")->base();
int i;
for (i=0;i<0x188/2;i+=2)
{
temp16[i] = 0xFFFE;
temp16[i+1] = 0xEAFF;
}
@ -340,7 +346,9 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,theglad)
temp16[(base) /2] = 0xE080; base += 2;
temp16[(base) /2] = 0x6000; base += 2;
temp16[(base) /2] = 0xE587; base += 2;
temp16[(base) /2] = 0x002c; base += 2;
temp16[(base) /2] = 0x002b; base += 2; // jump to 0x184
temp16[(base) /2] = 0xEA00; base += 2;
@ -394,17 +402,26 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,theglad)
temp16[(base) /2] = 0xff1e; base += 2;
temp16[(base) /2] = 0xe12f; base += 2;
// the non-EO area starts in the middle of a function that seems similar to those at 000037E4 / 000037D4 in killbldp.. by setting this up we allow the intro to run, but can no longer can get in game..
// it sets '0x10000038' to a value ot 1
// maybe this flag needs to be flipped on interrupts or similar??
base = 0x184;
temp16[(base) /2] = 0x105c; base += 2;
temp16[(base) /2] = 0xE59F; base += 2;
#if 0
#if 1
m_svg_ram_sel = 1;
for (int i = 0; i < 0x100; i++)
for (int i = 0; i < 0x8000; i++)
{
UINT16 *share16;
share16 = (UINT16 *)(m_svg_shareram[1]);
share16[i / 2] = 0x0002;
share16[i / 2] = 0x0003;
share16 = (UINT16 *)(m_svg_shareram[0]);
share16[i / 2] = 0x0002;
share16[i / 2] = 0x0003;
}
#endif
@ -444,6 +461,19 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,killbldp)
machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::killbldp_speedup_r),this));
UINT16 *temp16 = (UINT16 *)memregion("prot")->base();
int base = 0xfc;
temp16[(base) /2] = 0x0000; base += 2;
temp16[(base) /2] = 0xE1A0; base += 2;
base = 0xd4;
temp16[(base) /2] = 0x0000; base += 2;
temp16[(base) /2] = 0xE1A0; base += 2;
// base = 0x120;
// temp16[(base) /2] = 0x0000; base += 2;
// temp16[(base) /2] = 0xE1A0; base += 2;
}
READ32_MEMBER(pgm_arm_type3_state::dmnfrnt_speedup_r )