From 7eb367b7fbedc913621562186d8b0dcef68b0303 Mon Sep 17 00:00:00 2001 From: Ted Green Date: Sat, 22 Apr 2017 11:07:00 -0600 Subject: midwayic: Block register updates until unlocked. (nw) zeus2: Fix fast fill routine. (nw) atlantis: Update mwskins dips. (nw) midzeus: Update thegrid dips. (nw) --- src/devices/video/zeus2.cpp | 4 +- src/devices/video/zeus2.h | 2 - src/mame/drivers/atlantis.cpp | 46 ++---------------- src/mame/drivers/midzeus.cpp | 106 +++++++++++++++++------------------------- src/mame/machine/midwayic.cpp | 18 ++++--- 5 files changed, 61 insertions(+), 115 deletions(-) diff --git a/src/devices/video/zeus2.cpp b/src/devices/video/zeus2.cpp index f5f80ec2a44..27e504dcb4e 100644 --- a/src/devices/video/zeus2.cpp +++ b/src/devices/video/zeus2.cpp @@ -855,7 +855,9 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log { // Fast fill from local regs uint32_t numDWords = (m_zeusbase[0x50] & 0xffff) + 1; - //numDWords *= 0x8; + // Set autoincrement + if (numDWords>1) + m_zeusbase[0x5e] |= 0x40; if (logit && numDWords > 1) logerror(" -- Filling buffer: numDWords: %08X addr: %08X reg50: %08X reg5e: %08X\n", numDWords, m_zeusbase[0x51], m_zeusbase[0x50], m_zeusbase[0x5e]); for (int dword = 0; dword < numDWords; dword++) diff --git a/src/devices/video/zeus2.h b/src/devices/video/zeus2.h index c1b8ba3587c..14fc716286f 100644 --- a/src/devices/video/zeus2.h +++ b/src/devices/video/zeus2.h @@ -299,8 +299,6 @@ public: if (m_zeusbase[0x5e] & 0x40) { m_zeusbase[0x51]++; - //m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7; - //m_zeusbase[0x51] &= ~0xfe00; m_zeusbase[0x51] += (m_zeusbase[0x51] & 0x200) << 7; m_zeusbase[0x51] &= ~0xfe00; } diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp index 2ff90e7b95b..17fa9143bd7 100644 --- a/src/mame/drivers/atlantis.cpp +++ b/src/mame/drivers/atlantis.cpp @@ -707,51 +707,13 @@ static INPUT_PORTS_START( mwskins ) PORT_START("DIPS") PORT_DIPNAME(0x0003, 0x0003, "Boot Mode") PORT_DIPSETTING(0x0003, "Run Game") - PORT_DIPSETTING(0x0002, "Boot EEPROM Based Self Test") - PORT_DIPSETTING(0x0001, "Boot Disk Based Self Test") - PORT_DIPSETTING(0x0000, "Run Factory Tests") + PORT_DIPSETTING(0x0002, "Boot Disk Based Self Test") + PORT_DIPSETTING(0x0001, "Boot EEPROM Based Self Test") + PORT_DIPSETTING(0x0000, "Run Interactive Tests") PORT_DIPNAME(0x0004, 0x0004, "Boot Message") PORT_DIPSETTING(0x0004, "Quiet") PORT_DIPSETTING(0x0000, "Squawk During Boot") - PORT_DIPNAME(0x0008, 0x0008, "Reserved") - PORT_DIPSETTING(0x0008, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0010, 0x0010, "Reserved") - PORT_DIPSETTING(0x0010, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0020, 0x0020, "Reserved") - PORT_DIPSETTING(0x0020, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0040, 0x0040, "Reserved") - PORT_DIPSETTING(0x0040, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0080, 0x0080, "Reserved") - PORT_DIPSETTING(0x0080, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0100, 0x0100, "Unknown0100") - PORT_DIPSETTING(0x0100, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0200, 0x0200, "Unknown0200") - PORT_DIPSETTING(0x0200, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0400, 0x0400, "Unknown0400") - PORT_DIPSETTING(0x0400, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x0800, 0x0800, "Unknown0800") - PORT_DIPSETTING(0x0800, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x1000, 0x1000, "Unknown1000") - PORT_DIPSETTING(0x1000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x2000, 0x2000, "Unknown2000") - PORT_DIPSETTING(0x2000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x4000, 0x4000, "Unknown4000") - PORT_DIPSETTING(0x4000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) - PORT_DIPNAME(0x8000, 0x8000, "Unknown8000") - PORT_DIPSETTING(0x8000, DEF_STR(Off)) - PORT_DIPSETTING(0x0000, DEF_STR(On)) + PORT_DIPUNUSED(0xfff8, 0xfff8) PORT_START("SYSTEM") PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1) diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp index 0c92df37b6a..7625e3a2cf5 100644 --- a/src/mame/drivers/midzeus.cpp +++ b/src/mame/drivers/midzeus.cpp @@ -1133,72 +1133,52 @@ INPUT_PORTS_END static INPUT_PORTS_START( thegrid ) PORT_START("DIPS") /* DS1 */ - PORT_DIPNAME( 0x0001, 0x0001, "Show Blood" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) /* Manual states that switches 2-7 are Unused */ - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, "Coinage Source" ) - PORT_DIPSETTING( 0x0100, "Dipswitch" ) + PORT_DIPNAME( 0x0100, 0x0100, "Show Blood" ) + PORT_DIPSETTING( 0x0100, "Show Blood" ) + PORT_DIPSETTING( 0x0000, "Do not show blood" ) + PORT_DIPUNUSED( 0xfe00, 0xfe00) + PORT_DIPNAME( 0x0001, 0x0001, "Coinage Source" ) + PORT_DIPSETTING( 0x0001, "Dipswitch" ) PORT_DIPSETTING( 0x0000, "CMOS" ) - PORT_DIPNAME( 0x3e00, 0x3e00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x3e00, "USA-1" ) - PORT_DIPSETTING( 0x3800, "USA-2" ) - PORT_DIPSETTING( 0x3c00, "USA-10" ) - PORT_DIPSETTING( 0x3a00, "USA-14" ) - PORT_DIPSETTING( 0x3600, "USA-DC1" ) - PORT_DIPSETTING( 0x3000, "USA-DC2" ) - PORT_DIPSETTING( 0x3200, "USA-DC4" ) - PORT_DIPSETTING( 0x3400, "USA-DC5" ) - PORT_DIPSETTING( 0x2e00, "French-ECA1" ) - PORT_DIPSETTING( 0x2c00, "French-ECA2" ) - PORT_DIPSETTING( 0x2a00, "French-ECA3" ) - PORT_DIPSETTING( 0x2800, "French-ECA4" ) - PORT_DIPSETTING( 0x2600, "French-ECA5" ) - PORT_DIPSETTING( 0x2400, "French-ECA6" ) - PORT_DIPSETTING( 0x2200, "French-ECA7" ) - PORT_DIPSETTING( 0x2000, "French-ECA8" ) - PORT_DIPSETTING( 0x1e00, "German-1" ) - PORT_DIPSETTING( 0x1c00, "German-2" ) - PORT_DIPSETTING( 0x1a00, "German-3" ) - PORT_DIPSETTING( 0x1800, "German-4" ) - PORT_DIPSETTING( 0x1600, "German-5" ) - PORT_DIPSETTING( 0x1400, "German-ECA1" ) - PORT_DIPSETTING( 0x1200, "German-ECA2" ) - PORT_DIPSETTING( 0x1000, "German-ECA3" ) - PORT_DIPSETTING( 0x0800, "UK-4" ) - PORT_DIPSETTING( 0x0600, "UK-5" ) - PORT_DIPSETTING( 0x0e00, "UK-1 ECA" ) - PORT_DIPSETTING( 0x0c00, "UK-2 ECA" ) - PORT_DIPSETTING( 0x0a00, "UK-3 ECA" ) - PORT_DIPSETTING( 0x0400, "UK-6 ECA" ) - PORT_DIPSETTING( 0x0200, "UK-7 ECA" ) + PORT_DIPNAME( 0x003e, 0x003e, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x003e, "USA-1" ) + PORT_DIPSETTING( 0x0038, "USA-2" ) + PORT_DIPSETTING( 0x003c, "USA-10" ) + PORT_DIPSETTING( 0x003a, "USA-14" ) + PORT_DIPSETTING( 0x0036, "USA-DC1" ) + PORT_DIPSETTING( 0x0030, "USA-DC2" ) + PORT_DIPSETTING( 0x0032, "USA-DC4" ) + PORT_DIPSETTING( 0x0034, "USA-DC5" ) + PORT_DIPSETTING( 0x002e, "French-ECA1" ) + PORT_DIPSETTING( 0x002c, "French-ECA2" ) + PORT_DIPSETTING( 0x002a, "French-ECA3" ) + PORT_DIPSETTING( 0x0028, "French-ECA4" ) + PORT_DIPSETTING( 0x0026, "French-ECA5" ) + PORT_DIPSETTING( 0x0024, "French-ECA6" ) + PORT_DIPSETTING( 0x0022, "French-ECA7" ) + PORT_DIPSETTING( 0x0020, "French-ECA8" ) + PORT_DIPSETTING( 0x001e, "German-1" ) + PORT_DIPSETTING( 0x001c, "German-2" ) + PORT_DIPSETTING( 0x001a, "German-3" ) + PORT_DIPSETTING( 0x0018, "German-4" ) + PORT_DIPSETTING( 0x0016, "German-5" ) + PORT_DIPSETTING( 0x0014, "German-ECA1" ) + PORT_DIPSETTING( 0x0012, "German-ECA2" ) + PORT_DIPSETTING( 0x0010, "German-ECA3" ) + PORT_DIPSETTING( 0x0008, "UK-4" ) + PORT_DIPSETTING( 0x0006, "UK-5" ) + PORT_DIPSETTING( 0x000e, "UK-1 ECA" ) + PORT_DIPSETTING( 0x000c, "UK-2 ECA" ) + PORT_DIPSETTING( 0x000a, "UK-3 ECA" ) + PORT_DIPSETTING( 0x0004, "UK-6 ECA" ) + PORT_DIPSETTING( 0x0002, "UK-7 ECA" ) PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) /* Manual states switches 7 & 8 are Unused */ - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) /* Manual states switches 7 & 8 are Unused */ + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, "Game Mode" ) + PORT_DIPSETTING( 0x0080, "Normal" ) + PORT_DIPSETTING( 0x0000, "Test" ) PORT_START("SYSTEM") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp index 7f0f1fc1edd..32b4ead1cd6 100644 --- a/src/mame/machine/midwayic.cpp +++ b/src/mame/machine/midwayic.cpp @@ -1018,14 +1018,15 @@ READ32_MEMBER( midway_ioasic_device::read ) switch (offset) { case IOASIC_PORT0: - result = machine().root_device().ioport("DIPS")->read(); - /* bit 0 seems to be a ready flag before shuffling happens */ + // bit 0 is PIC ready flag before shuffling happens + // bits 15:13 == 001 if (!m_shuffle_active) { - result |= 0x0001; /* blitz99 wants bit bits 13-15 to be 1 */ - result &= ~0xe000; - result |= 0x2000; + result = 0x2001; + } + else { + result = machine().root_device().ioport("DIPS")->read(); } break; @@ -1131,7 +1132,10 @@ WRITE32_MEMBER( midway_ioasic_device::write ) offset = m_shuffle_active ? m_shuffle_map[offset & 15] : offset; oldreg = m_reg[offset]; - COMBINE_DATA(&m_reg[offset]); + // Block register updates until ioasic is unlocked + // mwskins and thegrid use this as test to see if the ioasic is unlocked + if (m_shuffle_active) + COMBINE_DATA(&m_reg[offset]); newreg = m_reg[offset]; if (LOG_IOASIC && offset != IOASIC_SOUNDOUT) @@ -1144,7 +1148,7 @@ WRITE32_MEMBER( midway_ioasic_device::write ) if (data == 0xe2) { m_shuffle_active = 1; - logerror("*** I/O ASIC shuffling enabled!\n"); + logerror("*** I/O ASIC unlocked!\n"); m_reg[IOASIC_INTCTL] = 0; m_reg[IOASIC_UARTCONTROL] = 0; /* bug in 10th Degree assumes this */ } -- cgit v1.2.3