diff options
Diffstat (limited to 'src/mame/drivers/freekick.cpp')
-rw-r--r-- | src/mame/drivers/freekick.cpp | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp index 5e67ee8f78d..e5444f55b76 100644 --- a/src/mame/drivers/freekick.cpp +++ b/src/mame/drivers/freekick.cpp @@ -709,7 +709,7 @@ MACHINE_RESET_MEMBER(freekick_state,oigas) } static MACHINE_CONFIG_START( omega, freekick_state ) - MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) // unknown divisor + MCFG_CPU_ADD("maincpu", MC8123, XTAL_18_432MHz/6) // unknown divisor MCFG_CPU_PROGRAM_MAP(omega_map) MCFG_CPU_IO_MAP(omega_io_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) @@ -782,8 +782,11 @@ static MACHINE_CONFIG_DERIVED( pbillrd, base ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pbillrdm, pbillrd ) - MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_12MHz/4) + MCFG_CPU_PROGRAM_MAP(pbillrd_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) + MCFG_CPU_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB + MCFG_CPU_VBLANK_INT_DRIVER("screen", freekick_state, freekick_irqgen) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( freekickb, base ) @@ -827,6 +830,22 @@ static MACHINE_CONFIG_DERIVED( gigas, base ) MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( gigasm, base ) + + /* basic machine hardware */ + MCFG_CPU_REPLACE("maincpu", MC8123, XTAL_12MHz/4) + MCFG_CPU_PROGRAM_MAP(gigas_map) + MCFG_CPU_IO_MAP(gigas_io_map) + MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) + + MCFG_MACHINE_START_OVERRIDE(freekick_state,freekick) + MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick) + + /* video hardware */ + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( oigas, gigas ) /* basic machine hardware */ @@ -876,7 +895,7 @@ ROM_START( pbillrds ) /* Encrytped with a Sega MC-8123 (317-0030) CPU module */ ROM_LOAD( "10625.8r", 0x4000, 0x8000, CRC(8977c724) SHA1(f00835a04dc6fa7d8c1e382dace515f2aa7d6f44) ) /* encrypted */ ROM_LOAD( "10627.10n", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -904,7 +923,7 @@ ROM_START( pbillrdsa ) /* all ROMs were HN4827128G-25, except 17, HN27256G-25, C ROM_LOAD( "17", 0x4000, 0x8000, CRC(9bb3d467) SHA1(5d61c80c920363cbcb548f4a08434e2a05b3d5f3) ) /* encrypted */ ROM_LOAD( "19", 0xc000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -1178,7 +1197,7 @@ ROM_START( gigas ) /* From an actual Sega board 834-6167 with mc-8123: 317-5002 ROM_LOAD( "8.8n", 0x00000, 0x4000, CRC(34ea8262) SHA1(a71c865ffccfc79455402c53639c4fa77a746cf1) ) ROM_LOAD( "7.8r", 0x04000, 0x8000, CRC(43653909) SHA1(30f6666ba5c0f016299f462c4c07c81ee4832808) ) /* 27256 */ - ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */ ROM_LOAD( "317-5002.key", 0x0000, 0x2000, CRC(86a7e5f6) SHA1(3ff3a17c02eb5610182b6febfada4e8eca0c5eea) ) ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ @@ -1304,7 +1323,7 @@ ROM_START( omega ) ROM_LOAD("17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd)) // 27128 ROM_LOAD("8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376)) // 27256 - ROM_REGION(0x2000, "user1", 0) // MC8123 key + ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key ROM_LOAD("omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2)) ROM_REGION(0xc000, "gfx1", 0) @@ -1350,7 +1369,7 @@ DRIVER_INIT_MEMBER(freekick_state,gigasb) DRIVER_INIT_MEMBER(freekick_state,pbillrds) { uint8_t *decrypted_opcodes = auto_alloc_array(machine(), uint8_t, 0x10000); - mc8123_decode(memregion("maincpu")->base(), decrypted_opcodes, memregion("user1")->base(), 0x10000); + downcast<mc8123_device &>(*m_maincpu).decode(memregion("maincpu")->base(), decrypted_opcodes, 0x10000); membank("bank0d")->set_base(decrypted_opcodes); m_bank1d->configure_entries(0, 2, decrypted_opcodes + 0x8000, 0x4000); } @@ -1358,7 +1377,7 @@ DRIVER_INIT_MEMBER(freekick_state,pbillrds) DRIVER_INIT_MEMBER(freekick_state,gigas) { uint8_t *decrypted_opcodes = auto_alloc_array(machine(), uint8_t, 0xc000); - mc8123_decode(memregion("maincpu")->base(), decrypted_opcodes, memregion("user1")->base(), 0xc000); + downcast<mc8123_device &>(*m_maincpu).decode(memregion("maincpu")->base(), decrypted_opcodes, 0xc000); membank("bank0d")->set_base(decrypted_opcodes); m_bank1d->set_base(decrypted_opcodes + 0x8000); } @@ -1371,7 +1390,7 @@ DRIVER_INIT_MEMBER(freekick_state,gigas) * *************************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 1986, gigas, 0, gigas, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, gigas, 0, gigasm, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Gigas (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_SUPPORTS_SAVE ) |