summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/jpmsys5.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/jpmsys5.h')
-rw-r--r--src/mame/includes/jpmsys5.h77
1 files changed, 66 insertions, 11 deletions
diff --git a/src/mame/includes/jpmsys5.h b/src/mame/includes/jpmsys5.h
index 468ca9c9a8f..a79a30c886c 100644
--- a/src/mame/includes/jpmsys5.h
+++ b/src/mame/includes/jpmsys5.h
@@ -28,10 +28,21 @@ public:
m_acia6850(*this, "acia6850_%u", 0U),
m_vfd(*this, "vfd"),
m_upd7759(*this, "upd7759"),
+ m_dsw(*this, "DSW"),
+ m_dsw2(*this, "DSW2"),
+ m_rotary(*this, "ROTARY"),
+ m_strobe0(*this, "STROBE0"),
+ m_strobe1(*this, "STROBE1"),
+ m_strobe2(*this, "STROBE2"),
+ m_strobe3(*this, "STROBE3"),
+ m_strobe4(*this, "STROBE4"),
+ m_unknown_port(*this, "UNKNOWN_PORT"),
m_direct_port(*this, "DIRECT"),
m_meters(*this, "meters"),
m_lamps(*this, "lamp%u", 0U),
- m_sys5leds(*this, "sys5led%u", 0U)
+ m_sys5leds(*this, "digit%u", 0U),
+ m_reellamp_out(*this, "reellamp%u", 0U),
+ m_reel(*this, "reel%u", 0U)
{ }
void jpmsys5(machine_config &config);
@@ -53,6 +64,11 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
+ void jpmsys5_common(machine_config &config);
+ void ymsound(machine_config &config);
+ void saasound(machine_config &config);
+ void reels(machine_config &config);
+
void jpm_upd7759_w(offs_t offset, uint16_t data);
uint16_t jpm_upd7759_r();
@@ -61,30 +77,67 @@ protected:
optional_device<s16lf01_device> m_vfd;
required_device<upd7759_device> m_upd7759;
+ optional_ioport m_dsw;
+ optional_ioport m_dsw2;
+ optional_ioport m_rotary;
+ optional_ioport m_strobe0;
+ optional_ioport m_strobe1;
+ optional_ioport m_strobe2;
+ optional_ioport m_strobe3;
+ optional_ioport m_strobe4;
+ optional_ioport m_unknown_port;
+
void jpm_sys5_common_map(address_map &map);
+protected:
+ void m68000_ym_map(address_map &map);
+
private:
- uint16_t coins_r(offs_t offset);
- void coins_w(uint16_t data);
- uint16_t unk_r();
- void mux_w(offs_t offset, uint16_t data);
- uint16_t mux_r(offs_t offset);
-
- uint16_t mux_awp_r(offs_t offset);
- uint16_t coins_awp_r(offs_t offset);
+ template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_cb) { if (state) m_optic_pattern |= (1 << ((7-N)^3)); else m_optic_pattern &= ~(1 << ((7-N)^3)); }
+
+ uint16_t unknown_port_r(offs_t offset, uint16_t mem_mask = ~0);
+
+ uint16_t coins_r(offs_t offset, uint16_t mem_mask = ~0);
+ uint16_t reel_optos_r(offs_t offset, uint16_t mem_mask = ~0);
+ uint16_t unk_48000_r(offs_t offset, uint16_t mem_mask = ~0);
+ uint16_t unk_48002_r(offs_t offset, uint16_t mem_mask = ~0);
+ uint16_t unk_48006_r(offs_t offset, uint16_t mem_mask = ~0);
+
+ void reel_0123_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void reel_4567_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void unk_48000_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void unk_48006_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+
+ uint16_t unk_r(offs_t offset, uint16_t mem_mask = ~0);
+
+ uint16_t reellamps_0123_r(offs_t offset, uint16_t mem_mask = ~0);
+ void reellamps_0123_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t reellamps_4567_r(offs_t offset, uint16_t mem_mask = ~0);
+ void reellamps_4567_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+
+ uint16_t m_reellamps_0123;
+ uint16_t m_reellamps_5678;
+
+ void mux_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ uint16_t mux_r(offs_t offset, uint16_t mem_mask = ~0);
+
void sys5_draw_lamps();
+
void m68000_awp_map(address_map &map);
void m68000_awp_map_saa(address_map &map);
required_ioport m_direct_port;
optional_device<meters_device> m_meters; //jpmsys5v doesn't use this
output_finder<16 * 16> m_lamps;
- output_finder<16 * 8> m_sys5leds;
+ output_finder<16> m_sys5leds;
+ output_finder<32> m_reellamp_out;
+ optional_device_array<stepper_device, 8> m_reel;
int m_lamp_strobe;
int m_mpxclk;
- int m_muxram[255];
+ uint16_t m_muxram[0x100];
+ uint16_t m_optic_pattern;
int m_chop;
uint8_t m_a0_data_out;
uint8_t m_a1_data_out;
@@ -112,6 +165,8 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
+ void tmsvideo(machine_config &config);
+
DECLARE_WRITE_LINE_MEMBER(generate_tms34061_interrupt);
void sys5_tms34061_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint16_t sys5_tms34061_r(offs_t offset, uint16_t mem_mask = ~0);