trunk/src/mame/machine/pgmprot_igs027a_type3.c
| r26143 | r26144 | |
| 234 | 234 | |
| 235 | 235 | UINT16 *temp16 = (UINT16 *)memregion("prot")->base(); |
| 236 | 236 | |
| 237 | int i; |
| 238 | for (i=0;i<0x188/2;i+=2) |
| 239 | { |
| 240 | temp16[i] = 0xFFFE; |
| 241 | temp16[i+1] = 0xEAFF; |
| 237 | 242 | |
| 243 | } |
| 238 | 244 | |
| 245 | |
| 239 | 246 | |
| 240 | 247 | |
| 241 | 248 | |
| 242 | 249 | |
| 243 | | |
| 244 | 250 | // the interrupt code appears to be at 0x08000010 |
| 245 | 251 | // so point the FIQ vector to jump there, the actual internal EO area code |
| 246 | 252 | // would not look like this because this reads from the EO area to get the jump address which is verified |
| r26143 | r26144 | |
| 340 | 346 | temp16[(base) /2] = 0xE080; base += 2; |
| 341 | 347 | temp16[(base) /2] = 0x6000; base += 2; |
| 342 | 348 | temp16[(base) /2] = 0xE587; base += 2; |
| 343 | | temp16[(base) /2] = 0x002c; base += 2; |
| 349 | |
| 350 | |
| 351 | temp16[(base) /2] = 0x002b; base += 2; // jump to 0x184 |
| 344 | 352 | temp16[(base) /2] = 0xEA00; base += 2; |
| 345 | 353 | |
| 346 | 354 | |
| r26143 | r26144 | |
| 394 | 402 | temp16[(base) /2] = 0xff1e; base += 2; |
| 395 | 403 | temp16[(base) /2] = 0xe12f; base += 2; |
| 396 | 404 | |
| 405 | // 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.. |
| 406 | // it sets '0x10000038' to a value ot 1 |
| 407 | // maybe this flag needs to be flipped on interrupts or similar?? |
| 408 | base = 0x184; |
| 409 | temp16[(base) /2] = 0x105c; base += 2; |
| 410 | temp16[(base) /2] = 0xE59F; base += 2; |
| 397 | 411 | |
| 398 | | #if 0 |
| 412 | |
| 413 | |
| 414 | |
| 415 | #if 1 |
| 399 | 416 | m_svg_ram_sel = 1; |
| 400 | 417 | |
| 401 | | for (int i = 0; i < 0x100; i++) |
| 418 | for (int i = 0; i < 0x8000; i++) |
| 402 | 419 | { |
| 403 | 420 | UINT16 *share16; |
| 404 | 421 | share16 = (UINT16 *)(m_svg_shareram[1]); |
| 405 | | share16[i / 2] = 0x0002; |
| 422 | share16[i / 2] = 0x0003; |
| 406 | 423 | share16 = (UINT16 *)(m_svg_shareram[0]); |
| 407 | | share16[i / 2] = 0x0002; |
| 424 | share16[i / 2] = 0x0003; |
| 408 | 425 | } |
| 409 | 426 | #endif |
| 410 | 427 | |
| r26143 | r26144 | |
| 444 | 461 | |
| 445 | 462 | machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::killbldp_speedup_r),this)); |
| 446 | 463 | |
| 464 | UINT16 *temp16 = (UINT16 *)memregion("prot")->base(); |
| 465 | int base = 0xfc; |
| 466 | temp16[(base) /2] = 0x0000; base += 2; |
| 467 | temp16[(base) /2] = 0xE1A0; base += 2; |
| 468 | |
| 469 | base = 0xd4; |
| 470 | temp16[(base) /2] = 0x0000; base += 2; |
| 471 | temp16[(base) /2] = 0xE1A0; base += 2; |
| 472 | |
| 473 | // base = 0x120; |
| 474 | // temp16[(base) /2] = 0x0000; base += 2; |
| 475 | // temp16[(base) /2] = 0xE1A0; base += 2; |
| 476 | |
| 447 | 477 | } |
| 448 | 478 | |
| 449 | 479 | READ32_MEMBER(pgm_arm_type3_state::dmnfrnt_speedup_r ) |
trunk/src/mame/drivers/pgm.c
| r26143 | r26144 | |
| 482 | 482 | { |
| 483 | 483 | int scanline = param; |
| 484 | 484 | |
| 485 | | if(scanline == 224) |
| 486 | | m_maincpu->set_input_line(6, HOLD_LINE); |
| 485 | // already being generated by MCFG_CPU_VBLANK_INT_DRIVER("screen", pgm_state, irq6_line_hold) |
| 486 | // if(scanline == 224) |
| 487 | // m_maincpu->set_input_line(6, HOLD_LINE); |
| 487 | 488 | |
| 488 | 489 | if(scanline == 0) |
| 489 | 490 | if (!m_irq4_disabled) m_maincpu->set_input_line(4, HOLD_LINE); |
| r26143 | r26144 | |
| 3223 | 3224 | ROM_LOAD16_WORD_SWAP( "u6.rom", 0x100000, 0x080000, CRC(14c85212) SHA1(8d2489708e176a2c460498a13173be01f645b79e) ) |
| 3224 | 3225 | |
| 3225 | 3226 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ |
| 3226 | | ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP ) |
| 3227 | | ROM_LOAD( "thegladpcb_igs027a.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) ) // from 'thegladpcb set' |
| 3227 | 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. |
| 3228 | 3228 | |
| 3229 | 3229 | ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */ |
| 3230 | 3230 | ROM_LOAD( "u2.rom", 0x000000, 0x200000, CRC(c7bcf2ae) SHA1(10bc012c83987f594d5375a51bc4be2e17568a81) ) |