diff options
-rw-r--r-- | src/mame/drivers/aces1.cpp | 48 |
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) ) |