summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-09-07 08:07:07 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-09-07 08:07:07 -0400
commit2cae68f527c926c95ad034143d6eac89aa0d0360 (patch)
treea0c7733b8b26199b865553240e7d5c746b8f59b4
parentfbade920a54ee279ac4b5fd64a288156c885037f (diff)
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)
-rw-r--r--src/mame/drivers/megaplay.cpp18
1 files changed, 17 insertions, 1 deletions
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 )