68
68
UINT16 m_sengokumj_mux_data;
70
DECLARE_READ16_MEMBER(mahjong_panel_r);
71
DECLARE_WRITE16_MEMBER(mahjong_panel_w);
72
DECLARE_WRITE16_MEMBER(sengokmj_out_w);
73
DECLARE_READ16_MEMBER(sengokmj_system_r);
74
78
/* Multiplexer device for the mahjong panel */
75
static READ16_HANDLER( mahjong_panel_r )
79
READ16_MEMBER(sengokmj_state::mahjong_panel_r)
77
sengokmj_state *state = space->machine().driver_data<sengokmj_state>();
78
switch(state->m_sengokumj_mux_data)
81
switch(m_sengokumj_mux_data)
80
case 0x0100: return input_port_read(space->machine(), "KEY0");
81
case 0x0200: return input_port_read(space->machine(), "KEY1");
82
case 0x0400: return input_port_read(space->machine(), "KEY2");
83
case 0x0800: return input_port_read(space->machine(), "KEY3");
84
case 0x1000: return input_port_read(space->machine(), "KEY4");
85
case 0x2000: return input_port_read(space->machine(), "UNUSED");
83
case 0x0100: return ioport("KEY0")->read();
84
case 0x0200: return ioport("KEY1")->read();
85
case 0x0400: return ioport("KEY2")->read();
86
case 0x0800: return ioport("KEY3")->read();
87
case 0x1000: return ioport("KEY4")->read();
88
case 0x2000: return ioport("UNUSED")->read();
91
static WRITE16_HANDLER( mahjong_panel_w )
94
WRITE16_MEMBER(sengokmj_state::mahjong_panel_w)
93
sengokmj_state *state = space->machine().driver_data<sengokmj_state>();
94
state->m_sengokumj_mux_data = data;
96
m_sengokumj_mux_data = data;
97
static WRITE16_HANDLER( sengokmj_out_w )
99
WRITE16_MEMBER(sengokmj_state::sengokmj_out_w)
99
sengokmj_state *state = space->machine().driver_data<sengokmj_state>();
100
101
/* ---- ---- ---x ---- J.P. Signal (?)*/
101
102
/* ---- ---- ---- -x-- Coin counter (done AFTER that you press start)*/
102
103
/* ---- ---- ---- --x- Cash enable (lockout)*/
103
104
/* ---- ---- ---- ---x Hopper 10 */
104
coin_lockout_w(space->machine(), 0,~data & 2);
105
coin_lockout_w(space->machine(), 1,~data & 2);
106
coin_counter_w(space->machine(), 0,data & 4);
107
state->m_hopper_io = ((data & 1)<<6);
108
// popmessage("%02x",state->m_hopper_io);
105
coin_lockout_w(machine(), 0,~data & 2);
106
coin_lockout_w(machine(), 1,~data & 2);
107
coin_counter_w(machine(), 0,data & 4);
108
m_hopper_io = ((data & 1)<<6);
109
// popmessage("%02x",m_hopper_io);
111
static READ16_HANDLER( sengokmj_system_r )
112
READ16_MEMBER(sengokmj_state::sengokmj_system_r)
113
sengokmj_state *state = space->machine().driver_data<sengokmj_state>();
114
return (input_port_read(space->machine(), "SYSTEM") & 0xffbf) | state->m_hopper_io;
114
return (ioport("SYSTEM")->read() & 0xffbf) | m_hopper_io;
117
static ADDRESS_MAP_START( sengokmj_map, AS_PROGRAM, 16 )
117
static ADDRESS_MAP_START( sengokmj_map, AS_PROGRAM, 16, sengokmj_state )
118
118
AM_RANGE(0x00000, 0x07fff) AM_RAM
119
119
AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("nvram")
120
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_BASE(&seibucrtc_sc0vram)
121
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_BASE(&seibucrtc_sc1vram)
122
AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_BASE(&seibucrtc_sc2vram)
123
AM_RANGE(0x0d800, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_BASE(&seibucrtc_sc3vram)
124
AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
120
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE_LEGACY(seibucrtc_sc0vram_w) AM_BASE_LEGACY(&seibucrtc_sc0vram)
121
AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE_LEGACY(seibucrtc_sc1vram_w) AM_BASE_LEGACY(&seibucrtc_sc1vram)
122
AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE_LEGACY(seibucrtc_sc2vram_w) AM_BASE_LEGACY(&seibucrtc_sc2vram)
123
AM_RANGE(0x0d800, 0x0e7ff) AM_RAM_WRITE_LEGACY(seibucrtc_sc3vram_w) AM_BASE_LEGACY(&seibucrtc_sc3vram)
124
AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
125
125
AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("spriteram")
126
126
AM_RANGE(0xc0000, 0xfffff) AM_ROM
129
static ADDRESS_MAP_START( sengokmj_io_map, AS_IO, 16 )
130
AM_RANGE(0x4000, 0x400f) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
129
static ADDRESS_MAP_START( sengokmj_io_map, AS_IO, 16, sengokmj_state )
130
AM_RANGE(0x4000, 0x400f) AM_READWRITE_LEGACY(seibu_main_word_r, seibu_main_word_w)
131
131
/*Areas from 8000-804f are for the custom Seibu CRTC.*/
132
AM_RANGE(0x8000, 0x804f) AM_RAM_WRITE(seibucrtc_vregs_w) AM_BASE(&seibucrtc_vregs)
132
AM_RANGE(0x8000, 0x804f) AM_RAM_WRITE_LEGACY(seibucrtc_vregs_w) AM_BASE_LEGACY(&seibucrtc_vregs)
134
134
// AM_RANGE(0x8080, 0x8081) CRTC extra register?
135
135
// AM_RANGE(0x80c0, 0x80c1) CRTC extra register?