summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mcr.cpp
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2017-12-20 20:33:40 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2017-12-20 20:33:40 +0100
commitf28df852dde729e62d00df60e078ce1e04a188cb (patch)
treefe627e47eace769667bc325d1afd33227c82d7d8 /src/mame/drivers/mcr.cpp
parentf33a4cb7ddd97fbb4e4c93d7cf1c94fe16a73eaf (diff)
mcr.cpp, mcr3.cpp: moved some globals into the state class, started splitting some in subclasses (nw)
Diffstat (limited to 'src/mame/drivers/mcr.cpp')
-rw-r--r--src/mame/drivers/mcr.cpp209
1 files changed, 96 insertions, 113 deletions
diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp
index 39a816ddf98..82f84d63555 100644
--- a/src/mame/drivers/mcr.cpp
+++ b/src/mame/drivers/mcr.cpp
@@ -286,23 +286,13 @@
#include "emu.h"
#include "includes/mcr.h"
-#include "audio/midway.h"
#include "machine/nvram.h"
-#include "sound/samples.h"
#include "screen.h"
#include "speaker.h"
#include "dpoker.lh"
-static uint8_t input_mux;
-static uint8_t last_op4;
-
-static uint8_t dpoker_coin_status;
-static uint8_t dpoker_output;
-
-
-
WRITE8_MEMBER(mcr_state::mcr_control_port_w)
{
/*
@@ -320,7 +310,7 @@ WRITE8_MEMBER(mcr_state::mcr_control_port_w)
machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
machine().bookkeeping().coin_counter_w(1, (data >> 1) & 1);
machine().bookkeeping().coin_counter_w(2, (data >> 2) & 1);
- mcr_cocktail_flip = (data >> 6) & 1;
+ m_mcr_cocktail_flip = (data >> 6) & 1;
}
@@ -337,7 +327,7 @@ READ8_MEMBER(mcr_state::solarfox_ip0_r)
/* mode, they will respond. However, if you try it in a 2-player */
/* game in cocktail mode, they don't work at all. So we fake-mux */
/* the controls through player 1's ports */
- if (mcr_cocktail_flip)
+ if (m_mcr_cocktail_flip)
return ioport("ssio:IP0")->read() | 0x08;
else
return ((ioport("ssio:IP0")->read() & ~0x14) | 0x08) | ((ioport("ssio:IP0")->read() & 0x08) >> 1) | ((ioport("ssio:IP2")->read() & 0x01) << 4);
@@ -347,7 +337,7 @@ READ8_MEMBER(mcr_state::solarfox_ip0_r)
READ8_MEMBER(mcr_state::solarfox_ip1_r)
{
/* same deal as above */
- if (mcr_cocktail_flip)
+ if (m_mcr_cocktail_flip)
return ioport("ssio:IP1")->read() | 0xf0;
else
return (ioport("ssio:IP1")->read() >> 4) | 0xf0;
@@ -374,39 +364,39 @@ READ8_MEMBER(mcr_state::kick_ip1_r)
*
*************************************/
-TIMER_DEVICE_CALLBACK_MEMBER(mcr_state::dpoker_hopper_callback)
+TIMER_DEVICE_CALLBACK_MEMBER(mcr_dpoker_state::hopper_callback)
{
- if (dpoker_output & 0x40)
+ if (m_output & 0x40)
{
// hopper timing is a guesstimate
- dpoker_coin_status ^= 8;
- m_dpoker_hopper_timer->adjust(attotime::from_msec((dpoker_coin_status & 8) ? 100 : 250));
+ m_coin_status ^= 8;
+ m_hopper_timer->adjust(attotime::from_msec((m_coin_status & 8) ? 100 : 250));
}
else
{
- dpoker_coin_status &= ~8;
+ m_coin_status &= ~8;
}
- machine().bookkeeping().coin_counter_w(3, dpoker_coin_status & 8);
+ machine().bookkeeping().coin_counter_w(3, m_coin_status & 8);
}
-TIMER_DEVICE_CALLBACK_MEMBER(mcr_state::dpoker_coin_in_callback)
+TIMER_DEVICE_CALLBACK_MEMBER(mcr_dpoker_state::coin_in_callback)
{
- dpoker_coin_status &= ~2;
+ m_coin_status &= ~2;
}
-INPUT_CHANGED_MEMBER(mcr_state::dpoker_coin_in_hit)
+INPUT_CHANGED_MEMBER(mcr_dpoker_state::coin_in_hit)
{
if (newval)
{
// The game waits for coin release before it accepts another.
// It probably does this to prevent tampering, good old coin-on-a-string won't work here.
- dpoker_coin_status |= 2;
- m_dpoker_coin_in_timer->adjust(attotime::from_msec(100));
+ m_coin_status |= 2;
+ m_coin_in_timer->adjust(attotime::from_msec(100));
}
}
-READ8_MEMBER(mcr_state::dpoker_ip0_r)
+READ8_MEMBER(mcr_dpoker_state::ip0_r)
{
// d0: Coin-in Hit
// d1: Coin-in Release
@@ -415,13 +405,13 @@ READ8_MEMBER(mcr_state::dpoker_ip0_r)
// d6: Coin-drop Hit
// d7: Coin-drop Release
uint8_t p0 = ioport("ssio:IP0")->read();
- p0 |= (dpoker_coin_status >> 1 & 1);
- p0 ^= (p0 << 1 & 0x80) | dpoker_coin_status;
+ p0 |= (m_coin_status >> 1 & 1);
+ p0 ^= (p0 << 1 & 0x80) | m_coin_status;
return p0;
}
-WRITE8_MEMBER(mcr_state::dpoker_lamps1_w)
+WRITE8_MEMBER(mcr_dpoker_state::lamps1_w)
{
// cpanel button lamps (white)
output().set_lamp_value(0, data >> 0 & 1); // hold 1
@@ -434,7 +424,7 @@ WRITE8_MEMBER(mcr_state::dpoker_lamps1_w)
output().set_lamp_value(7, data >> 3 & 1); // stand
}
-WRITE8_MEMBER(mcr_state::dpoker_lamps2_w)
+WRITE8_MEMBER(mcr_dpoker_state::lamps2_w)
{
// d5: button lamp: service or change
output().set_lamp_value(8, data >> 5 & 1);
@@ -446,7 +436,7 @@ WRITE8_MEMBER(mcr_state::dpoker_lamps2_w)
// d6, d7: unused?
}
-WRITE8_MEMBER(mcr_state::dpoker_output_w)
+WRITE8_MEMBER(mcr_dpoker_state::output_w)
{
// d0: ? coin return
// d1: ? divertor (active low)
@@ -454,15 +444,15 @@ WRITE8_MEMBER(mcr_state::dpoker_output_w)
// d6: assume hopper coin flow
// d7: assume hopper motor
- if (data & 0x40 & ~dpoker_output)
- m_dpoker_hopper_timer->adjust(attotime::from_msec(500));
+ if (data & 0x40 & ~m_output)
+ m_hopper_timer->adjust(attotime::from_msec(500));
// other bits: unused?
- dpoker_output = data;
+ m_output = data;
}
-WRITE8_MEMBER(mcr_state::dpoker_meters_w)
+WRITE8_MEMBER(mcr_dpoker_state::meters_w)
{
// meters?
}
@@ -477,13 +467,13 @@ WRITE8_MEMBER(mcr_state::dpoker_meters_w)
WRITE8_MEMBER(mcr_state::wacko_op4_w)
{
- input_mux = data & 1;
+ m_input_mux = data & 1;
}
READ8_MEMBER(mcr_state::wacko_ip1_r)
{
- if (!input_mux)
+ if (!m_input_mux)
return ioport("ssio:IP1")->read();
else
return ioport("ssio:IP1.ALT")->read();
@@ -492,7 +482,7 @@ READ8_MEMBER(mcr_state::wacko_ip1_r)
READ8_MEMBER(mcr_state::wacko_ip2_r)
{
- if (!input_mux)
+ if (!m_input_mux)
return ioport("ssio:IP2")->read();
else
return ioport("ssio:IP2.ALT")->read();
@@ -620,14 +610,14 @@ WRITE8_MEMBER(mcr_state::dotron_op4_w)
*/
/* bit 5 = SEL1 (J1-1) on the Lamp Sequencer board */
- if (((last_op4 ^ data) & 0x20) && (data & 0x20))
+ if (((m_last_op4 ^ data) & 0x20) && (data & 0x20))
{
/* bit 2 -> J1-4 = enable */
/* bit 1 -> J1-5 = sequence select */
/* bit 0 -> J1-6 = speed (0=slow, 1=fast) */
logerror("Lamp: en=%d seq=%d speed=%d\n", (data >> 2) & 1, (data >> 1) & 1, data & 1);
}
- last_op4 = data;
+ m_last_op4 = data;
/* bit 4 = SEL0 (J1-8) on squawk n talk board */
/* bits 3-0 = MD3-0 connected to squawk n talk (J1-4,3,2,1) */
@@ -638,14 +628,14 @@ WRITE8_MEMBER(mcr_state::dotron_op4_w)
/*************************************
*
- * NFL Football Tron I/O ports
+ * NFL Football I/O ports
*
*************************************/
-READ8_MEMBER(mcr_state::nflfoot_ip2_r)
+READ8_MEMBER(mcr_nflfoot_state::ip2_r)
{
/* bit 7 = J3-2 on IPU board = TXDA on SIO */
- uint8_t val = m_sio_txda << 7;
+ uint8_t val = m_ipu_sio_txda << 7;
if (space.device().safe_pc() != 0x107)
logerror("%04X:ip2_r = %02X\n", space.device().safe_pc(), val);
@@ -653,15 +643,15 @@ READ8_MEMBER(mcr_state::nflfoot_ip2_r)
}
-WRITE8_MEMBER(mcr_state::nflfoot_op4_w)
+WRITE8_MEMBER(mcr_nflfoot_state::op4_w)
{
logerror("%04X:op4_w(%d%d%d)\n", space.device().safe_pc(), (data >> 7) & 1, (data >> 6) & 1, (data >> 5) & 1);
/* bit 7 = J3-7 on IPU board = /RXDA on SIO */
- m_sio->rxa_w(!((data >> 7) & 1));
+ m_ipu_sio->rxa_w(!((data >> 7) & 1));
/* bit 6 = J3-3 on IPU board = CTSA on SIO */
- m_sio->ctsa_w((data >> 6) & 1);
+ m_ipu_sio->ctsa_w((data >> 6) & 1);
/* bit 4 = SEL0 (J1-8) on squawk n talk board */
/* bits 3-0 = MD3-0 connected to squawk n talk (J1-4,3,2,1) */
@@ -679,21 +669,21 @@ WRITE8_MEMBER(mcr_state::nflfoot_op4_w)
READ8_MEMBER(mcr_state::demoderb_ip1_r)
{
return ioport("ssio:IP1")->read() |
- (ioport(input_mux ? "ssio:IP1.ALT2" : "ssio:IP1.ALT1")->read() << 2);
+ (ioport(m_input_mux ? "ssio:IP1.ALT2" : "ssio:IP1.ALT1")->read() << 2);
}
READ8_MEMBER(mcr_state::demoderb_ip2_r)
{
return ioport("ssio:IP2")->read() |
- (ioport(input_mux ? "ssio:IP2.ALT2" : "ssio:IP2.ALT1")->read() << 2);
+ (ioport(m_input_mux ? "ssio:IP2.ALT2" : "ssio:IP2.ALT1")->read() << 2);
}
WRITE8_MEMBER(mcr_state::demoderb_op4_w)
{
- if (data & 0x40) input_mux = 1;
- if (data & 0x80) input_mux = 0;
+ if (data & 0x40) m_input_mux = 1;
+ if (data & 0x80) m_input_mux = 0;
m_turbo_cheap_squeak->write(space, offset, data);
}
@@ -790,22 +780,22 @@ ADDRESS_MAP_END
*************************************/
/* address map verified from schematics */
-static ADDRESS_MAP_START( ipu_91695_map, AS_PROGRAM, 8, mcr_state )
+static ADDRESS_MAP_START( ipu_91695_map, AS_PROGRAM, 8, mcr_nflfoot_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0xe000, 0xffff) AM_RAM
ADDRESS_MAP_END
/* I/O verified from schematics */
-static ADDRESS_MAP_START( ipu_91695_portmap, AS_IO, 8, mcr_state )
+static ADDRESS_MAP_START( ipu_91695_portmap, AS_IO, 8, mcr_nflfoot_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio0", z80pio_device, read, write)
AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_sio", z80dart_device, cd_ba_r, cd_ba_w)
AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_ctc", z80ctc_device, read, write)
AM_RANGE(0x0c, 0x0f) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio1", z80pio_device, read, write)
- AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(mcr_ipu_laserdisk_w)
- AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xe0) AM_READWRITE(mcr_ipu_watchdog_r, mcr_ipu_watchdog_w)
+ AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(ipu_laserdisk_w)
+ AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xe0) AM_READWRITE(ipu_watchdog_r, ipu_watchdog_w)
ADDRESS_MAP_END
@@ -944,8 +934,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( dpoker )
PORT_START("ssio:IP0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, mcr_state, dpoker_coin_in_hit, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) // see dpoker_ip0_r
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, mcr_dpoker_state, coin_in_hit, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) // see ip0_r
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) // "
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SPECIAL ) // "
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
@@ -1772,8 +1762,6 @@ static MACHINE_CONFIG_START( mcr_90009 )
MCFG_WATCHDOG_ADD("watchdog")
MCFG_WATCHDOG_VBLANK_INIT("screen", 16)
- MCFG_MACHINE_START_OVERRIDE(mcr_state,mcr)
- MCFG_MACHINE_RESET_OVERRIDE(mcr_state,mcr)
MCFG_NVRAM_ADD_1FILL("nvram")
/* video hardware */
@@ -1790,8 +1778,6 @@ static MACHINE_CONFIG_START( mcr_90009 )
MCFG_PALETTE_ADD("palette", 32)
MCFG_PALETTE_FORMAT(xxxxRRRRBBBBGGGG)
- MCFG_VIDEO_START_OVERRIDE(mcr_state,mcr)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("ssio", MIDWAY_SSIO, 0)
@@ -1804,8 +1790,8 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mcr_90009_dp, mcr_90009 )
/* basic machine hardware */
- MCFG_TIMER_DRIVER_ADD("dp_coinin", mcr_state, dpoker_coin_in_callback)
- MCFG_TIMER_DRIVER_ADD("dp_hopper", mcr_state, dpoker_hopper_callback)
+ MCFG_TIMER_DRIVER_ADD("coinin", mcr_dpoker_state, coin_in_callback)
+ MCFG_TIMER_DRIVER_ADD("hopper", mcr_dpoker_state, hopper_callback)
MACHINE_CONFIG_END
@@ -1881,14 +1867,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mcr_91490_ipu, mcr_91490_snt )
/* basic machine hardware */
- MCFG_MACHINE_START_OVERRIDE(mcr_state,nflfoot)
-
MCFG_CPU_ADD("ipu", Z80, 7372800/2)
MCFG_Z80_DAISY_CHAIN(mcr_ipu_daisy_chain)
MCFG_CPU_PROGRAM_MAP(ipu_91695_map)
MCFG_CPU_IO_MAP(ipu_91695_portmap)
MCFG_TIMER_MODIFY("scantimer")
- MCFG_TIMER_DRIVER_CALLBACK(mcr_state, mcr_ipu_interrupt)
+ MCFG_TIMER_DRIVER_CALLBACK(mcr_nflfoot_state, ipu_interrupt)
MCFG_DEVICE_ADD("ipu_ctc", Z80CTC, 7372800/2 /* same as "ipu" */)
MCFG_Z80CTC_INTR_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0))
@@ -1901,8 +1885,8 @@ static MACHINE_CONFIG_DERIVED( mcr_91490_ipu, mcr_91490_snt )
MCFG_DEVICE_ADD("ipu_sio", Z80SIO0, 7372800/2)
MCFG_Z80DART_OUT_INT_CB(INPUTLINE("ipu", INPUT_LINE_IRQ0))
- MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(mcr_state, sio_txda_w))
- MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(mcr_state, sio_txdb_w))
+ MCFG_Z80DART_OUT_TXDA_CB(WRITELINE(mcr_nflfoot_state, sio_txda_w))
+ MCFG_Z80DART_OUT_TXDB_CB(WRITELINE(mcr_nflfoot_state, sio_txdb_w))
MACHINE_CONFIG_END
@@ -2772,19 +2756,18 @@ ROM_END
void mcr_state::mcr_init(int cpuboard, int vidboard, int ssioboard)
{
- mcr_cpu_board = cpuboard;
- mcr_sprite_board = vidboard;
+ m_mcr_cpu_board = cpuboard;
+ m_mcr_sprite_board = vidboard;
- mcr12_sprite_xoffs = 0;
- mcr12_sprite_xoffs_flip = 0;
+ m_mcr12_sprite_xoffs = 0;
+ m_mcr12_sprite_xoffs_flip = 0;
- save_item(NAME(input_mux));
- save_item(NAME(last_op4));
+ save_item(NAME(m_input_mux));
+ save_item(NAME(m_last_op4));
- midway_ssio_device *ssio = machine().device<midway_ssio_device>("ssio");
- if (ssio != nullptr)
+ if (m_ssio.found())
{
- ssio->set_custom_output(0, 0xff, write8_delegate(FUNC(mcr_state::mcr_control_port_w), this));
+ m_ssio->set_custom_output(0, 0xff, write8_delegate(FUNC(mcr_state::mcr_control_port_w), this));
}
}
@@ -2792,28 +2775,28 @@ void mcr_state::mcr_init(int cpuboard, int vidboard, int ssioboard)
DRIVER_INIT_MEMBER(mcr_state,solarfox)
{
mcr_init(90009, 91399, 90908);
- mcr12_sprite_xoffs = 16;
+ m_mcr12_sprite_xoffs = 16;
- machine().device<midway_ssio_device>("ssio")->set_custom_input(0, 0x1c, read8_delegate(FUNC(mcr_state::solarfox_ip0_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::solarfox_ip1_r),this));
+ m_ssio->set_custom_input(0, 0x1c, read8_delegate(FUNC(mcr_state::solarfox_ip0_r), this));
+ m_ssio->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::solarfox_ip1_r), this));
}
DRIVER_INIT_MEMBER(mcr_state,kick)
{
mcr_init(90009, 91399, 90908);
- mcr12_sprite_xoffs_flip = 16;
+ m_mcr12_sprite_xoffs_flip = 16;
- machine().device<midway_ssio_device>("ssio")->set_custom_input(1, 0xf0, read8_delegate(FUNC(mcr_state::kick_ip1_r),this));
+ m_ssio->set_custom_input(1, 0xf0, read8_delegate(FUNC(mcr_state::kick_ip1_r), this));
}
-DRIVER_INIT_MEMBER(mcr_state,dpoker)
+DRIVER_INIT_MEMBER(mcr_dpoker_state,dpoker)
{
mcr_init(90009, 91399, 90908);
- mcr12_sprite_xoffs_flip = 16;
+ m_mcr12_sprite_xoffs_flip = 16;
- machine().device<midway_ssio_device>("ssio")->set_custom_input(0, 0x8e, read8_delegate(FUNC(mcr_state::dpoker_ip0_r),this));
+ m_ssio->set_custom_input(0, 0x8e, read8_delegate(FUNC(mcr_dpoker_state::ip0_r),this));
// meter ram, is it battery backed?
m_maincpu->space(AS_PROGRAM).install_ram(0x8000, 0x81ff);
@@ -2823,16 +2806,16 @@ DRIVER_INIT_MEMBER(mcr_state,dpoker)
m_maincpu->space(AS_IO).install_read_port(0x28, 0x28, "P28");
m_maincpu->space(AS_IO).install_read_port(0x2c, 0x2c, "P2C");
- m_maincpu->space(AS_IO).install_write_handler(0x2c, 0x2c, write8_delegate(FUNC(mcr_state::dpoker_lamps1_w),this));
- m_maincpu->space(AS_IO).install_write_handler(0x30, 0x30, write8_delegate(FUNC(mcr_state::dpoker_lamps2_w),this));
- m_maincpu->space(AS_IO).install_write_handler(0x34, 0x34, write8_delegate(FUNC(mcr_state::dpoker_output_w),this));
- m_maincpu->space(AS_IO).install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(mcr_state::dpoker_meters_w),this));
+ m_maincpu->space(AS_IO).install_write_handler(0x2c, 0x2c, write8_delegate(FUNC(mcr_dpoker_state::lamps1_w),this));
+ m_maincpu->space(AS_IO).install_write_handler(0x30, 0x30, write8_delegate(FUNC(mcr_dpoker_state::lamps2_w),this));
+ m_maincpu->space(AS_IO).install_write_handler(0x34, 0x34, write8_delegate(FUNC(mcr_dpoker_state::output_w),this));
+ m_maincpu->space(AS_IO).install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(mcr_dpoker_state::meters_w),this));
- dpoker_coin_status = 0;
- dpoker_output = 0;
+ m_coin_status = 0;
+ m_output = 0;
- save_item(NAME(dpoker_coin_status));
- save_item(NAME(dpoker_output));
+ save_item(NAME(m_coin_status));
+ save_item(NAME(m_output));
}
@@ -2846,9 +2829,9 @@ DRIVER_INIT_MEMBER(mcr_state,wacko)
{
mcr_init(90010, 91399, 90913);
- machine().device<midway_ssio_device>("ssio")->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip1_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip2_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::wacko_op4_w),this));
+ m_ssio->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip1_r),this));
+ m_ssio->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip2_r),this));
+ m_ssio->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::wacko_op4_w),this));
}
@@ -2856,7 +2839,7 @@ DRIVER_INIT_MEMBER(mcr_state,twotiger)
{
mcr_init(90010, 91399, 90913);
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::twotiger_op4_w),this));
+ m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::twotiger_op4_w),this));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe800, 0xefff, 0, 0x1000, 0, read8_delegate(FUNC(mcr_state::twotiger_videoram_r),this), write8_delegate(FUNC(mcr_state::twotiger_videoram_w),this));
}
@@ -2865,8 +2848,8 @@ DRIVER_INIT_MEMBER(mcr_state,kroozr)
{
mcr_init(90010, 91399, 91483);
- machine().device<midway_ssio_device>("ssio")->set_custom_input(1, 0x47, read8_delegate(FUNC(mcr_state::kroozr_ip1_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0x34, write8_delegate(FUNC(mcr_state::kroozr_op4_w),this));
+ m_ssio->set_custom_input(1, 0x47, read8_delegate(FUNC(mcr_state::kroozr_ip1_r),this));
+ m_ssio->set_custom_output(4, 0x34, write8_delegate(FUNC(mcr_state::kroozr_op4_w),this));
}
@@ -2874,7 +2857,7 @@ DRIVER_INIT_MEMBER(mcr_state,journey)
{
mcr_init(91475, 91464, 90913);
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::journey_op4_w),this));
+ m_ssio->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::journey_op4_w),this));
}
@@ -2888,19 +2871,19 @@ DRIVER_INIT_MEMBER(mcr_state,dotrone)
{
mcr_init(91490, 91464, 91657);
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::dotron_op4_w),this));
+ m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::dotron_op4_w),this));
}
-DRIVER_INIT_MEMBER(mcr_state,nflfoot)
+DRIVER_INIT_MEMBER(mcr_nflfoot_state,nflfoot)
{
mcr_init(91490, 91464, 91657);
- machine().device<midway_ssio_device>("ssio")->set_custom_input(2, 0x80, read8_delegate(FUNC(mcr_state::nflfoot_ip2_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::nflfoot_op4_w),this));
+ m_ssio->set_custom_input(2, 0x80, read8_delegate(FUNC(mcr_nflfoot_state::ip2_r),this));
+ m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_nflfoot_state::op4_w),this));
- save_item(NAME(m_sio_txda));
- save_item(NAME(m_sio_txdb));
+ save_item(NAME(m_ipu_sio_txda));
+ save_item(NAME(m_ipu_sio_txdb));
}
@@ -2908,9 +2891,9 @@ DRIVER_INIT_MEMBER(mcr_state,demoderb)
{
mcr_init(91490, 91464, 90913);
- machine().device<midway_ssio_device>("ssio")->set_custom_input(1, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip1_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_input(2, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip2_r),this));
- machine().device<midway_ssio_device>("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::demoderb_op4_w),this));
+ m_ssio->set_custom_input(1, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip1_r),this));
+ m_ssio->set_custom_input(2, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip2_r),this));
+ m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::demoderb_op4_w),this));
/* the SSIO Z80 doesn't have any program to execute */
machine().device<cpu_device>("ssio:cpu")->suspend(SUSPEND_REASON_DISABLE, 1);
@@ -2925,11 +2908,11 @@ DRIVER_INIT_MEMBER(mcr_state,demoderb)
*************************************/
/* 90009 CPU board + 91399 video gen + 90908 sound I/O */
-GAME( 1981, solarfox, 0, mcr_90009, solarfox, mcr_state, solarfox, ROT90 ^ ORIENTATION_FLIP_Y, "Bally Midway", "Solar Fox (upright)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, kick, 0, mcr_90009, kick, mcr_state, kick, ORIENTATION_SWAP_XY, "Midway", "Kick (upright)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, kickman, kick, mcr_90009, kick, mcr_state, kick, ORIENTATION_SWAP_XY, "Midway", "Kickman (upright)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, kickc, kick, mcr_90009, kickc, mcr_state, kick, ROT90, "Midway", "Kick (cocktail)", MACHINE_SUPPORTS_SAVE )
-GAMEL(1985, dpoker, 0, mcr_90009_dp, dpoker, mcr_state, dpoker, ROT0, "Bally", "Draw Poker (Bally, 03-20)", MACHINE_SUPPORTS_SAVE, layout_dpoker )
+GAME( 1981, solarfox, 0, mcr_90009, solarfox, mcr_state, solarfox, ROT90 ^ ORIENTATION_FLIP_Y, "Bally Midway", "Solar Fox (upright)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, kick, 0, mcr_90009, kick, mcr_state, kick, ORIENTATION_SWAP_XY, "Midway", "Kick (upright)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, kickman, kick, mcr_90009, kick, mcr_state, kick, ORIENTATION_SWAP_XY, "Midway", "Kickman (upright)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, kickc, kick, mcr_90009, kickc, mcr_state, kick, ROT90, "Midway", "Kick (cocktail)", MACHINE_SUPPORTS_SAVE )
+GAMEL(1985, dpoker, 0, mcr_90009_dp, dpoker, mcr_dpoker_state, dpoker, ROT0, "Bally", "Draw Poker (Bally, 03-20)", MACHINE_SUPPORTS_SAVE, layout_dpoker )
/* 90010 CPU board + 91399 video gen + 90913 sound I/O */
GAME( 1981, shollow, 0, mcr_90010, shollow, mcr_state, mcr_90010, ROT90, "Bally Midway", "Satan's Hollow (set 1)", MACHINE_SUPPORTS_SAVE )
@@ -2965,7 +2948,7 @@ GAME( 1983, dotrona, dotron, mcr_91490, dotron, mcr_state, mcr_91490, O
GAME( 1983, dotrone, dotron, mcr_91490_snt, dotrone, mcr_state, dotrone, ORIENTATION_FLIP_X, "Bally Midway", "Discs of Tron (Environmental)", MACHINE_SUPPORTS_SAVE )
/* 91490 CPU board + 91464 video gen + 91657 sound I/O + Squawk n' Talk + IPU laserdisk interface */
-GAME( 1983, nflfoot, 0, mcr_91490_ipu, nflfoot, mcr_state, nflfoot, ROT0, "Bally Midway", "NFL Football", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, nflfoot, 0, mcr_91490_ipu, nflfoot, mcr_nflfoot_state, nflfoot, ROT0, "Bally Midway", "NFL Football", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
/* 91490 CPU board + 91464 video gen + 90913 sound I/O + Turbo Cheap Squeak */
GAME( 1984, demoderb, 0, mcr_91490_tcs, demoderb, mcr_state, demoderb, ROT0, "Bally Midway", "Demolition Derby", MACHINE_SUPPORTS_SAVE )