From 2cae68f527c926c95ad034143d6eac89aa0d0360 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 7 Sep 2017 08:07:07 -0400 Subject: megaplay: Restore some of Haze's comments; log the internal P1/P2 Start activity to make it more obvious where things are going wrong (nw) --- src/mame/drivers/megaplay.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp index c198cbbb84e..91d5ec1e2ee 100644 --- a/src/mame/drivers/megaplay.cpp +++ b/src/mame/drivers/megaplay.cpp @@ -3,6 +3,14 @@ /* +Driver is marked as NOT WORKING because interaction between BIOS and 68k side is +not fully understood. The BIOS often doesn't register that a game has been started +and leaves the 'PRESS P1 OR P2 START' message onscreen during gameplay as a result. +If this happens, the games usually then crash when you run out of lives as they end +up in an unknown state. + + + About MegaPlay: Megaplay games are specially designed Genesis games, produced for arcade use. @@ -21,6 +29,9 @@ to the standard Genesis hardware. In this case the additional hardware creates which is displayed as an overlay to the game screen. This layer contains basic text such as Insert Coin, and the Megaplay Logo / Instructions during the attract loop. +The BIOS reads the Start inputs and (once enough coins have been inserted) passes them to +the 68k rather than using the regular Genesis PAD hookups. + Communication between the various CPUs seems to be fairly complex and it is not fully understood what is shared, where, and how. One of the BIOS sets doesn't work, maybe for this reason. @@ -402,9 +413,13 @@ WRITE8_MEMBER(mplay_state::bios_banksel_w) It should be possible to multiplex different game ROMs at 0x000000-0x3fffff based on these bits. */ + if (BIT(m_bios_bank ^ data, 4)) + logerror("BIOS: P1 Start %sactive\n", BIT(data, 4) ? "in" : ""); + if (BIT(m_bios_bank ^ data, 5)) + logerror("BIOS: P2 Start %sactive\n", BIT(data, 5) ? "in" : ""); m_bios_bank = data; m_bios_mode = MP_ROM; - logerror("BIOS: ROM bank %i selected [0x%02x]\n", m_bios_bank >> 6, data); +// logerror("BIOS: ROM bank %i selected [0x%02x]\n", m_bios_bank >> 6, data); } WRITE8_MEMBER(mplay_state::bios_gamesel_w) @@ -566,6 +581,7 @@ WRITE8_MEMBER(mplay_state::game_w) } m_bios_bank_addr = ((m_bios_bank_addr >> 1) | (data << 23)) & 0xff8000; + logerror("BIOS bank addr = %X\n", m_bios_bank_addr); } static ADDRESS_MAP_START( megaplay_bios_map, AS_PROGRAM, 8, mplay_state ) -- cgit v1.2.3