summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/aces1.cpp48
1 files changed, 27 insertions, 21 deletions
diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp
index 714fab25a31..8af29c95354 100644
--- a/src/mame/drivers/aces1.cpp
+++ b/src/mame/drivers/aces1.cpp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
/*
- Ace System 1 Hardware
+ Ace System One Hardware
Fruit Machines
skeleton driver!
@@ -14,9 +14,13 @@ lots of reads from 0xe000 at the start
JPM style Reel MCU? Certainly reel data seems to be muxed together in a weird way
Hardware overview
- - Z80
+ - Z80 (Z8400AB1)
+ - 8 MHz XTAL
+ - 3 x TMP8255
+ - 2 x 8 dip-switches banks
- 2 timed interrupts (IRQ and NMI) (can be reset)
- AY8910 for sound
+ - TC5517CPL-20
- some of the roms appear to have been merged to larger files, or there are two versions of the board?
@@ -52,10 +56,7 @@ public:
aces1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_reel0(*this, "reel0"),
- m_reel1(*this, "reel1"),
- m_reel2(*this, "reel2"),
- m_reel3(*this, "reel3"),
+ m_reel(*this, "reel%u", 0U),
m_io_ports(*this, {"IO1", "IO2", "IO3", "IO4", "IO5", "IO6", "IO7", "IO8"}),
m_lamps(*this, "lamp%u", 0U),
m_digits(*this, "digit%u", 0U)
@@ -177,10 +178,10 @@ private:
m_reel_phase[reel] = ((m_reel_phase[reel] + sense + 8) % 8);
switch (reel)
{
- case 0: m_reel0->update(phases[m_reel_phase[reel]]); break;
- case 1: m_reel1->update(phases[m_reel_phase[reel]]); break;
- case 2: m_reel2->update(phases[m_reel_phase[reel]]); break;
- case 3: m_reel3->update(phases[m_reel_phase[reel]]); break;
+ case 0: m_reel[0]->update(phases[m_reel_phase[reel]]); break;
+ case 1: m_reel[1]->update(phases[m_reel_phase[reel]]); break;
+ case 2: m_reel[2]->update(phases[m_reel_phase[reel]]); break;
+ case 3: m_reel[3]->update(phases[m_reel_phase[reel]]); break;
}
m_reel_clock[reel] = clock;
if ( m_reel_phase[reel] % 4 ==0)
@@ -229,10 +230,7 @@ private:
// devices
required_device<cpu_device> m_maincpu;
- required_device<stepper_device> m_reel0;
- required_device<stepper_device> m_reel1;
- required_device<stepper_device> m_reel2;
- required_device<stepper_device> m_reel3;
+ required_device_array<stepper_device, 4> m_reel;
required_ioport_array<8> m_io_ports;
output_finder<128> m_lamps;
output_finder<16> m_digits;
@@ -272,6 +270,14 @@ void aces1_state::machine_start()
m_aces1_nmi_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aces1_state::m_aces1_nmi_timer_callback),this), nullptr);
m_digits.resolve();
m_lamps.resolve();
+
+ save_item(NAME(m_input_strobe));
+ save_item(NAME(m_lamp_strobe));
+ save_item(NAME(m_led_strobe));
+ save_item(NAME(m_reel_clock));
+ save_item(NAME(m_reel_phase));
+ save_item(NAME(m_reel_count));
+ save_item(NAME(m_optic_pattern));
}
void aces1_state::machine_reset()
@@ -446,7 +452,7 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(aces1_state::aces1)
- MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* ?? Mhz */
+ MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(8'000'000) / 2 ) /* XTAL verified, divisor not */
MCFG_DEVICE_PROGRAM_MAP(aces1_map)
MCFG_DEVICE_IO_MAP(aces1_portmap)
@@ -474,19 +480,19 @@ MACHINE_CONFIG_START(aces1_state::aces1)
SPEAKER(config, "mono").front_center();
// 0xadf0 - Dips, Sound
- MCFG_DEVICE_ADD("aysnd", AY8910, 1500000) /* ?? MHz */
+ MCFG_DEVICE_ADD("aysnd", AY8910, XTAL(8'000'000) / 8) /* XTAL verified, divisor not */
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* steppers */
- MCFG_STARPOINT_48STEP_ADD("reel0")
+ MCFG_STARPOINT_48STEP_ADD(m_reel[0])
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel0_optic_cb))
- MCFG_STARPOINT_48STEP_ADD("reel1")
+ MCFG_STARPOINT_48STEP_ADD(m_reel[1])
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel1_optic_cb))
- MCFG_STARPOINT_48STEP_ADD("reel2")
+ MCFG_STARPOINT_48STEP_ADD(m_reel[2])
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel2_optic_cb))
- MCFG_STARPOINT_48STEP_ADD("reel3")
+ MCFG_STARPOINT_48STEP_ADD(m_reel[3])
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel3_optic_cb))
MACHINE_CONFIG_END
@@ -845,7 +851,7 @@ ROM_START( ac1hideha )
ROM_LOAD( "hh563p4r", 0x0000, 0x8000, CRC(c82aabb1) SHA1(6a94cbae10edc544117a6bc5849ac8c9ad80a333) )
ROM_END
-ROM_START( ac1unk )
+ROM_START( ac1unk ) // System One, Race AGO182, (c) Race Electronics 1983
ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "system_one_prom1_2764.bin", 0x0000, 0x2000, CRC(ea532fe4) SHA1(8b77d9e8fad0cd022c8386c509ad2ecbc7032d90) )
ROM_LOAD( "system_one_prom2_2764.bin", 0x2000, 0x2000, CRC(729599b7) SHA1(da9aedc50a281cb6626a4c03fc06e5dd62b4edd1) )