diff options
author | David Haywood <hazemamewip@hotmail.com> | 2018-01-18 19:06:33 +0000 |
---|---|---|
committer | R. Belmont <rb6502@users.noreply.github.com> | 2018-01-18 14:06:33 -0500 |
commit | 18f012e109bba560fd4a62f4ffe0a3c32e7f7868 (patch) | |
tree | 3acc69b89b8209083fe7f9bb4ead93d3893718c1 /src/mame/drivers/kickgoal.cpp | |
parent | 93d2c1dc9a96f93b3c7d4d2f763d8b804aaac99e (diff) |
misc small bits (grudge, nesvt, kickgoal) (#3075)
* Default FreePlay DSW to 'Off' for the recently added 'grudge' parent set (Free Play doesn't work properly on it anyway)
Leave it to 'On' for the previous set because Coin mode doesn't work properly there
Add a note about (undumped) Majesco Frogger TV game likely being nes_vt
* new clones : Kick Goal (set 2)
and cleaned up driver so that it uses oki mem map etc.
* factory defaults for several esd16 sets so they don't run with bogus values (nw)
* note the regions on the fort2b / fort2ba sets, one is world, the other is korea (nw)
Diffstat (limited to 'src/mame/drivers/kickgoal.cpp')
-rw-r--r-- | src/mame/drivers/kickgoal.cpp | 131 |
1 files changed, 75 insertions, 56 deletions
diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp index cd3f087cbd0..c61ca112b4f 100644 --- a/src/mame/drivers/kickgoal.cpp +++ b/src/mame/drivers/kickgoal.cpp @@ -2,21 +2,15 @@ // copyright-holders:David Haywood /* Driver Info - Kick Goal (c)1995 TCH Action Hollywood (c)1995 TCH - prelim driver by David Haywood +driver by David Haywood todo: -Sound - Not possible without PIC dump? - the PIC is protected, sound will have to be simulated - the kickgoal sound rom is also bad. - -Should the screen size really be doubled in kickgoal or should the fg tiles be 8bpp instead -because otherwise these don't seem much like the same hardware.. +Sound - need PIC dumps to replace simulation code (the PIC is protected) Both games have problems with the Eeprom (settings are not saved) @@ -217,10 +211,10 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w) switch (data) { - case 0xfc: m_oki->set_rom_bank(0); break; - case 0xfd: m_oki->set_rom_bank(2); break; - case 0xfe: m_oki->set_rom_bank(1); break; - case 0xff: m_oki->set_rom_bank(3); break; + case 0xfc: m_okibank->set_entry(0); break; + case 0xfd: m_okibank->set_entry(2); break; + case 0xfe: m_okibank->set_entry(1); break; + case 0xff: m_okibank->set_entry(3); break; case 0x78: m_oki->write_command(data); m_snd_sam[0] = 00; m_snd_sam[1]= 00; m_snd_sam[2] = 00; m_snd_sam[3] = 00; @@ -297,7 +291,7 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w) INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) { - if ((m_adpcm->read_status() & 0x08) == 0) + if ((m_oki->read_status() & 0x08) == 0) { switch(m_melody_loop) { @@ -326,8 +320,8 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) if (m_melody_loop) { // logerror("Changing to sample %02x\n", m_melody_loop); - m_adpcm->write_command((0x80 | m_melody_loop) & 0xff); - m_adpcm->write_command(0x81); + m_oki->write_command((0x80 | m_melody_loop) & 0xff); + m_oki->write_command(0x81); } } if (machine().input().code_pressed_once(KEYCODE_PGUP)) @@ -339,7 +333,7 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) if (m_m6295_bank == 0x03) m_m6295_bank = 0x00; popmessage("Changing Bank to %02x", m_m6295_bank); - m_adpcm->set_rom_bank(m_m6295_bank); + m_okibank->set_entry(m_m6295_bank); if (m_m6295_key_delay == 0xffff) m_m6295_key_delay = 0x00; @@ -358,7 +352,7 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) if (m_m6295_bank == 0x03) m_m6295_bank = 0x02; popmessage("Changing Bank to %02x", m_m6295_bank); - m_adpcm->set_rom_bank(m_m6295_bank); + m_okibank->set_entry(m_m6295_bank); if (m_m6295_key_delay == 0xffff) m_m6295_key_delay = 0x00; @@ -374,11 +368,11 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) { m_m6295_comm += 1; m_m6295_comm &= 0x7f; - if (m_m6295_comm == 0x00) { m_adpcm->set_rom_bank(0); m_m6295_bank = 0; } - if (m_m6295_comm == 0x60) { m_adpcm->set_rom_bank(0); m_m6295_bank = 0; } - if (m_m6295_comm == 0x65) { m_adpcm->set_rom_bank(1); m_m6295_bank = 1; } - if (m_m6295_comm == 0x69) { m_adpcm->set_rom_bank(2); m_m6295_bank = 2; } - if (m_m6295_comm == 0x70) { m_adpcm->set_rom_bank(1); m_m6295_bank = 1; } + if (m_m6295_comm == 0x00) { m_okibank->set_entry(0); m_m6295_bank = 0; } + if (m_m6295_comm == 0x60) { m_okibank->set_entry(0); m_m6295_bank = 0; } + if (m_m6295_comm == 0x65) { m_okibank->set_entry(1); m_m6295_bank = 1; } + if (m_m6295_comm == 0x69) { m_okibank->set_entry(2); m_m6295_bank = 2; } + if (m_m6295_comm == 0x70) { m_okibank->set_entry(1); m_m6295_bank = 1; } popmessage("Sound test command %02x on Bank %02x", m_m6295_comm, m_m6295_bank); if (m_m6295_key_delay == 0xffff) @@ -395,11 +389,11 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) { m_m6295_comm -= 1; m_m6295_comm &= 0x7f; - if (m_m6295_comm == 0x2b) { m_adpcm->set_rom_bank(0); m_m6295_bank = 0; } - if (m_m6295_comm == 0x64) { m_adpcm->set_rom_bank(0); m_m6295_bank = 0; } - if (m_m6295_comm == 0x68) { m_adpcm->set_rom_bank(1); m_m6295_bank = 1; } - if (m_m6295_comm == 0x6c) { m_adpcm->set_rom_bank(2); m_m6295_bank = 2; } - if (m_m6295_comm == 0x76) { m_adpcm->set_rom_bank(1); m_m6295_bank = 1; } + if (m_m6295_comm == 0x2b) { m_okibank->set_entry(0); m_m6295_bank = 0; } + if (m_m6295_comm == 0x64) { m_okibank->set_entry(0); m_m6295_bank = 0; } + if (m_m6295_comm == 0x68) { m_okibank->set_entry(1); m_m6295_bank = 1; } + if (m_m6295_comm == 0x6c) { m_okibank->set_entry(2); m_m6295_bank = 2; } + if (m_m6295_comm == 0x76) { m_okibank->set_entry(1); m_m6295_bank = 1; } popmessage("Sound test command %02x on Bank %02x", m_m6295_comm, m_m6295_bank); if (m_m6295_key_delay == 0xffff) @@ -414,9 +408,9 @@ INTERRUPT_GEN_MEMBER(kickgoal_state::kickgoal_interrupt) { if (m_m6295_key_delay >= (0x80 * oki_time_base)) { - m_adpcm->write_command(0x78); - m_adpcm->write_command(0x80 | m_m6295_comm); - m_adpcm->write_command(0x11); + m_oki->write_command(0x78); + m_oki->write_command(0x80 | m_m6295_comm); + m_oki->write_command(0x11); popmessage("Playing sound %02x on Bank %02x", m_m6295_comm, m_m6295_bank); @@ -613,6 +607,9 @@ void kickgoal_state::machine_start() save_item(NAME(m_m6295_comm)); save_item(NAME(m_m6295_bank)); save_item(NAME(m_m6295_key_delay)); + + m_okibank->configure_entries(0, 4, memregion("oki")->base(), 0x20000); + m_okibank->set_entry(1); } void kickgoal_state::machine_reset() @@ -628,6 +625,12 @@ void kickgoal_state::machine_reset() m_m6295_key_delay = 0; } + +static ADDRESS_MAP_START( oki_map, 0, 8, kickgoal_state ) + AM_RANGE(0x00000, 0x1ffff) AM_ROM + AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") +ADDRESS_MAP_END + MACHINE_CONFIG_START(kickgoal_state::kickgoal) /* basic machine hardware */ @@ -664,6 +667,7 @@ MACHINE_CONFIG_START(kickgoal_state::kickgoal) //MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_OKIM6295_ADD("oki", 12000000/8, PIN7_LOW) + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -702,6 +706,7 @@ MACHINE_CONFIG_START(kickgoal_state::actionhw) //MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, PIN7_HIGH) /* verified on pcb */ + MCFG_DEVICE_ADDRESS_MAP(0, oki_map) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END @@ -714,27 +719,46 @@ ROM_START( kickgoal ) ROM_LOAD16_BYTE( "ic6", 0x000000, 0x40000, CRC(498ca792) SHA1(c638c3a1755870010c5961b58bcb02458ff4e238) ) ROM_LOAD16_BYTE( "ic5", 0x000001, 0x40000, CRC(d528740a) SHA1(d56a71004aabc839b0833a6bf383e5ef9d4948fa) ) - ROM_REGION( 0x1000, "audiocpu", 0 ) /* sound? (missing) */ + ROM_REGION( 0x2000, "audiocpu", 0 ) /* sound */ /* Remove the CPU_DISABLED flag in MACHINE_DRIVER when the rom is dumped */ - ROM_LOAD( "pic16c57", 0x0000, 0x0800, NO_DUMP ) + ROM_LOAD( "pic16c57-xt-p_protected.IC18", 0x0000, 0x1fff, BAD_DUMP CRC(9e678719) SHA1(ff8edf149e4c12de620e40eaa42161cd1d08bad0) ) + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD( "93c46_16bit.IC12", 0x00, 0x80, CRC(58f512ff) SHA1(67ffb7e2d817087d8158ee53974e46ec85a3e1ed) ) ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD( "ic33", 0x000000, 0x80000, CRC(5038f52a) SHA1(22ed0e2c8a99056e73cff912731626689996a276) ) - ROM_LOAD( "ic34", 0x080000, 0x80000, CRC(06e7094f) SHA1(e41b893ef91d541d2623d76ce6c69ecf4218c16d) ) - ROM_LOAD( "ic35", 0x100000, 0x80000, CRC(ea010563) SHA1(5e474db372550e9d33f933ab00881a9b29a712d1) ) - ROM_LOAD( "ic36", 0x180000, 0x80000, CRC(b6a86860) SHA1(73ab43830d5e62154bc8953615cdb397c7a742aa) ) - - /* $00000-$20000 stays the same in all sound banks, */ - /* the second half of the bank is the area that gets switched */ - ROM_REGION( 0x100000, "oki", 0 ) /* OKIM6295 samples */ - ROM_LOAD( "ic13", 0x00000, 0x40000, BAD_DUMP CRC(c6cb56e9) SHA1(835773b3f0647d3c553180bcf10e57ad44d68353) ) // BAD ADDRESS LINES (mask=010000) - ROM_CONTINUE( 0x60000, 0x20000 ) - ROM_CONTINUE( 0xa0000, 0x20000 ) - ROM_COPY( "oki", 0x000000, 0x40000, 0x20000) - ROM_COPY( "oki", 0x000000, 0x80000, 0x20000) - ROM_COPY( "oki", 0x000000, 0xc0000, 0x20000) + ROM_LOAD( "TCH__4.tms27c040.IC33", 0x000000, 0x80000, CRC(5038f52a) SHA1(22ed0e2c8a99056e73cff912731626689996a276) ) + ROM_LOAD( "TCH__5.tms27c040.IC34", 0x080000, 0x80000, CRC(06e7094f) SHA1(e41b893ef91d541d2623d76ce6c69ecf4218c16d) ) + ROM_LOAD( "TCH__6.tms27c040.IC35", 0x100000, 0x80000, CRC(ea010563) SHA1(5e474db372550e9d33f933ab00881a9b29a712d1) ) + ROM_LOAD( "TCH__7.tms27c040.IC36", 0x180000, 0x80000, CRC(b6a86860) SHA1(73ab43830d5e62154bc8953615cdb397c7a742aa) ) + + ROM_REGION( 0x080000, "oki", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "TCH__3.tms27c040.ic13", 0x00000, 0x80000, CRC(51272b0b) SHA1(ba94385183a9d74bb1d5159d2908492bf500f31e) ) ROM_END +ROM_START( kickgoala ) + ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "TCH__2.mc27c2001.IC6", 0x000000, 0x40000, CRC(3ce2743a) SHA1(7998c476c8e630487213dd23ef4fec94a95497ca) ) + ROM_LOAD16_BYTE( "TCH__1.am27c020.IC5", 0x000001, 0x40000, CRC(d7d7f83c) SHA1(4ee66a379a0c7ecb15ee4923ac98ba28bfb1e4bd) ) + + ROM_REGION( 0x2000, "audiocpu", 0 ) /* sound */ + /* Remove the CPU_DISABLED flag in MACHINE_DRIVER when the rom is dumped */ + ROM_LOAD( "pic16c57-xt-p_protected.IC18", 0x0000, 0x1fff, BAD_DUMP CRC(9e678719) SHA1(ff8edf149e4c12de620e40eaa42161cd1d08bad0) ) + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD( "93c46_16bit.IC12", 0x00, 0x80, CRC(58f512ff) SHA1(67ffb7e2d817087d8158ee53974e46ec85a3e1ed) ) + + ROM_REGION( 0x200000, "gfx1", 0 ) + ROM_LOAD( "TCH__4.tms27c040.IC33", 0x000000, 0x80000, CRC(5038f52a) SHA1(22ed0e2c8a99056e73cff912731626689996a276) ) + ROM_LOAD( "TCH__5.tms27c040.IC34", 0x080000, 0x80000, CRC(06e7094f) SHA1(e41b893ef91d541d2623d76ce6c69ecf4218c16d) ) + ROM_LOAD( "TCH__6.tms27c040.IC35", 0x100000, 0x80000, CRC(ea010563) SHA1(5e474db372550e9d33f933ab00881a9b29a712d1) ) + ROM_LOAD( "TCH__7.tms27c040.IC36", 0x180000, 0x80000, CRC(b6a86860) SHA1(73ab43830d5e62154bc8953615cdb397c7a742aa) ) + + ROM_REGION( 0x080000, "oki", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "TCH__3.tms27c040.ic13", 0x00000, 0x80000, CRC(51272b0b) SHA1(ba94385183a9d74bb1d5159d2908492bf500f31e) ) +ROM_END + + ROM_START( actionhw ) ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "2.ic6", 0x000000, 0x80000, CRC(2b71d58c) SHA1(3e58531fa56d41a3c7944e3beab4850907564a89) ) @@ -754,15 +778,8 @@ ROM_START( actionhw ) ROM_LOAD( "10.ic32", 0x300000, 0x80000, CRC(5ee5db3e) SHA1(c79f84548ce5311acac478c5180330bf56485863) ) ROM_LOAD( "11.ic36", 0x380000, 0x80000, CRC(8d376b1e) SHA1(37f16b3237d9813a8d153ab5640252e7643f3b99) ) - /* $00000-$20000 stays the same in all sound banks, */ - /* the second half of the bank is the area that gets switched */ - ROM_REGION( 0x100000, "oki", 0 ) /* OKIM6295 samples */ - ROM_LOAD( "3.ic13", 0x00000, 0x40000, CRC(b8f6705d) SHA1(55116e14aba6dac7334e26f704b3e6b0b9f856c2) ) - ROM_CONTINUE( 0x60000, 0x20000 ) - ROM_CONTINUE( 0xa0000, 0x20000 ) - ROM_COPY( "oki", 0x000000, 0x40000, 0x20000) - ROM_COPY( "oki", 0x000000, 0x80000, 0x20000) - ROM_COPY( "oki", 0x000000, 0xc0000, 0x20000) /* Last bank used in Test Mode */ + ROM_REGION( 0x80000, "oki", 0 ) /* OKIM6295 samples */ + ROM_LOAD( "3.ic13", 0x00000, 0x80000, CRC(b8f6705d) SHA1(55116e14aba6dac7334e26f704b3e6b0b9f856c2) ) ROM_END /* GAME drivers **************************************************************/ @@ -778,5 +795,7 @@ DRIVER_INIT_MEMBER(kickgoal_state,kickgoal) } -GAME( 1995, kickgoal, 0, kickgoal, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Kick Goal", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, kickgoal, 0, kickgoal, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Kick Goal (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1995, kickgoala, kickgoal, kickgoal, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Kick Goal (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) + GAME( 1995, actionhw, 0, actionhw, kickgoal, kickgoal_state, kickgoal, ROT0, "TCH", "Action Hollywood", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) |