From 93056cfb821b875869e7c354a9bd46b3b00c3024 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 4 Nov 2017 12:34:57 -0400 Subject: jackpool: Add addressable latches (nw) --- src/mame/drivers/jackpool.cpp | 89 +++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 53 deletions(-) diff --git a/src/mame/drivers/jackpool.cpp b/src/mame/drivers/jackpool.cpp index c8fb44318e3..5d923acc1ad 100644 --- a/src/mame/drivers/jackpool.cpp +++ b/src/mame/drivers/jackpool.cpp @@ -19,6 +19,7 @@ TODO: #include "emu.h" #include "cpu/m68000/m68000.h" +#include "machine/74259.h" #include "machine/eepromser.h" #include "sound/okim6295.h" #include "screen.h" @@ -31,22 +32,21 @@ public: jackpool_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_vram(*this, "vram"), - m_io(*this, "io"), m_maincpu(*this, "maincpu"), m_eeprom(*this, "eeprom"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } - required_shared_ptr m_vram; - uint8_t m_map_vreg; - required_shared_ptr m_io; DECLARE_READ16_MEMBER(jackpool_ff_r); - DECLARE_READ16_MEMBER(jackpool_io_r); - DECLARE_WRITE16_MEMBER(jackpool_io_w); + DECLARE_READ8_MEMBER(jackpool_io_r); + DECLARE_WRITE_LINE_MEMBER(map_vreg_w); DECLARE_DRIVER_INIT(jackpool); virtual void video_start() override; uint32_t screen_update_jackpool(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(jackpool_interrupt); + + required_shared_ptr m_vram; + uint8_t m_map_vreg; required_device m_maincpu; required_device m_eeprom; required_device m_gfxdecode; @@ -108,7 +108,7 @@ READ16_MEMBER(jackpool_state::jackpool_ff_r) return 0xffff; } -READ16_MEMBER(jackpool_state::jackpool_io_r) +READ8_MEMBER(jackpool_state::jackpool_io_r) { switch(offset*2) { @@ -134,54 +134,12 @@ READ16_MEMBER(jackpool_state::jackpool_io_r) } // printf("R %02x\n",offset*2); - return m_io[offset]; + return 0xff; } -WRITE16_MEMBER(jackpool_state::jackpool_io_w) +WRITE_LINE_MEMBER(jackpool_state::map_vreg_w) { - COMBINE_DATA(&m_io[offset]); - - switch(offset*2) - { - case 0x30: /* ---- ---x HOLD3 lamp */ break; - case 0x32: /* ---- ---x HOLD4 lamp */ break; - case 0x34: /* ---- ---x HOLD2 lamp */ break; - case 0x36: /* ---- ---x HOLD1 lamp */ break; - case 0x38: /* ---- ---x HOLD5 lamp */ break; - case 0x3a: /* ---- ---x START1 lamp */ break; - case 0x3c: /* ---- ---x BET lamp */ break; - case 0x3e: break; - case 0x40: /* ---- ---x PAYOUT lamp */ break; - case 0x46: /* ---- ---x coin counter */break; - case 0x4a: /* ---- ---x Ticket motor */break; - case 0x4c: /* ---- ---x Hopper motor */break; - case 0x4e: m_map_vreg = data & 1; break; - case 0x50: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; - case 0x52: m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; - case 0x54: m_eeprom->di_write(data & 1); break; -// case 0x5a: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; -// case 0x5c: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; - case 0x60: break; -// default: printf("[%02x] <- %02x W\n",offset*2,data); break; - } - - #if 0 - if(offset*2 == 0x54) - { - printf("Write bit %02x\n",data); - m_eeprom->di_write(data & 1); - } - if(offset*2 == 0x52) - { - printf("Clock bit %02x\n",data); - m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); - } - if(offset*2 == 0x50) - { - printf("chip select bit %02x\n",data); - m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); - } - #endif + m_map_vreg = state; } static ADDRESS_MAP_START( jackpool_mem, AS_PROGRAM, 16, jackpool_state ) @@ -192,7 +150,11 @@ static ADDRESS_MAP_START( jackpool_mem, AS_PROGRAM, 16, jackpool_state ) AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3? AM_RANGE(0x360000, 0x3603ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x380000, 0x380061) AM_READWRITE(jackpool_io_r,jackpool_io_w) AM_SHARE("io")//AM_READ(jackpool_io_r) + AM_RANGE(0x380000, 0x38002f) AM_READ8(jackpool_io_r, 0x00ff) + AM_RANGE(0x380030, 0x38003f) AM_DEVWRITE8("latch1", ls259_device, write_d0, 0x00ff) + AM_RANGE(0x380040, 0x38004f) AM_DEVWRITE8("latch2", ls259_device, write_d0, 0x00ff) + AM_RANGE(0x380050, 0x38005f) AM_DEVWRITE8("latch3", ls259_device, write_d0, 0x00ff) + AM_RANGE(0x380060, 0x380061) AM_WRITENOP // another single-bit output? AM_RANGE(0x800000, 0x80000f) AM_READ(jackpool_ff_r) AM_WRITENOP //UART AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) @@ -282,6 +244,27 @@ static MACHINE_CONFIG_START( jackpool ) MCFG_SCREEN_UPDATE_DRIVER(jackpool_state, screen_update_jackpool) MCFG_SCREEN_PALETTE("palette") + MCFG_DEVICE_ADD("latch1", LS259, 0) + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(NOOP) // HOLD3 lamp + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(NOOP) // HOLD4 lamp + MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // HOLD2 lamp + MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(NOOP) // HOLD1 lamp + MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(NOOP) // HOLD5 lamp + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // START1 lamp + MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(NOOP) // BET lamp + + MCFG_DEVICE_ADD("latch2", LS259, 0) + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(NOOP) // PAYOUT lamp + MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(NOOP) // Coin counter + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // Ticket motor + MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(NOOP) // Hopper motor + MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(jackpool_state, map_vreg_w)) + + MCFG_DEVICE_ADD("latch3", LS259, 0) + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, cs_write)) + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, clk_write)) + MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(DEVWRITELINE("eeprom", eeprom_serial_93cxx_device, di_write)) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_PALETTE_ADD("palette", 0x200) -- cgit v1.2.3