109
109
*************************************/
111
static WRITE8_HANDLER( gberet_coin_counter_w )
111
WRITE8_MEMBER(gberet_state::gberet_coin_counter_w)
113
113
/* bits 0/1 = coin counters */
114
coin_counter_w(space->machine(), 0, data & 1);
115
coin_counter_w(space->machine(), 1, data & 2);
114
coin_counter_w(machine(), 0, data & 1);
115
coin_counter_w(machine(), 1, data & 2);
118
static WRITE8_HANDLER( mrgoemon_coin_counter_w )
118
WRITE8_MEMBER(gberet_state::mrgoemon_coin_counter_w)
120
120
/* bits 0/1 = coin counters */
121
coin_counter_w(space->machine(), 0, data & 1);
122
coin_counter_w(space->machine(), 1, data & 2);
121
coin_counter_w(machine(), 0, data & 1);
122
coin_counter_w(machine(), 1, data & 2);
124
124
/* bits 5-7 = ROM bank select */
125
memory_set_bank(space->machine(), "bank1", ((data & 0xe0) >> 5));
125
membank("bank1")->set_entry(((data & 0xe0) >> 5));
128
static WRITE8_HANDLER( gberet_flipscreen_w )
128
WRITE8_MEMBER(gberet_state::gberet_flipscreen_w)
130
gberet_state *state = space->machine().driver_data<gberet_state>();
132
131
/* bits 0/1/2 = interrupt enable */
133
UINT8 ack_mask = ~data & state->m_interrupt_mask; // 1->0
132
UINT8 ack_mask = ~data & m_interrupt_mask; // 1->0
135
134
if (ack_mask & 1)
136
cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
135
cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
138
137
if (ack_mask & 6)
139
cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE);
138
cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE);
141
state->m_interrupt_mask = data & 7;
140
m_interrupt_mask = data & 7;
143
142
/* bit 3 = flip screen */
144
flip_screen_set(space->machine(), data & 8);
143
flip_screen_set(data & 8);
147
static WRITE8_HANDLER( gberet_sound_w )
146
WRITE8_MEMBER(gberet_state::gberet_sound_w)
149
gberet_state *state = space->machine().driver_data<gberet_state>();
150
sn76496_w(space->machine().device("snsnd"), 0, *state->m_soundlatch);
148
sn76496_w(machine().device("snsnd"), 0, *m_soundlatch);
153
static ADDRESS_MAP_START( gberet_map, AS_PROGRAM, 8 )
151
static ADDRESS_MAP_START( gberet_map, AS_PROGRAM, 8, gberet_state )
154
152
AM_RANGE(0x0000, 0xbfff) AM_ROM
155
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_BASE_MEMBER(gberet_state, m_colorram)
156
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_BASE_MEMBER(gberet_state, m_videoram)
157
AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_BASE_MEMBER(gberet_state, m_spriteram2)
158
AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_BASE_MEMBER(gberet_state, m_spriteram)
153
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
154
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
155
AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2")
156
AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
159
157
AM_RANGE(0xd200, 0xdfff) AM_RAM
160
AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_BASE_MEMBER(gberet_state, m_scrollram)
158
AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram")
161
159
AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ???
162
160
AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w)
163
161
AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w)
164
162
AM_RANGE(0xf000, 0xf000) AM_WRITE(gberet_coin_counter_w)
165
AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_BASE_MEMBER(gberet_state, m_soundlatch)
163
AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch")
166
164
AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w)
167
165
AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset_w)
168
166
AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
170
168
AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM")
173
static ADDRESS_MAP_START( mrgoemon_map, AS_PROGRAM, 8 )
171
static ADDRESS_MAP_START( mrgoemon_map, AS_PROGRAM, 8, gberet_state )
174
172
AM_RANGE(0x0000, 0xbfff) AM_ROM
175
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_BASE_MEMBER(gberet_state, m_colorram)
176
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_BASE_MEMBER(gberet_state, m_videoram)
177
AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_BASE_MEMBER(gberet_state, m_spriteram2)
178
AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_BASE_MEMBER(gberet_state, m_spriteram)
173
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
174
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
175
AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2")
176
AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram")
179
177
AM_RANGE(0xd200, 0xdfff) AM_RAM
180
AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_BASE_MEMBER(gberet_state, m_scrollram)
178
AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram")
181
179
AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ???
182
180
AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w)
183
181
AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w)
184
182
AM_RANGE(0xf000, 0xf000) AM_WRITE(mrgoemon_coin_counter_w)
185
AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_BASE_MEMBER(gberet_state, m_soundlatch)
183
AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch")
186
184
AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w)
187
185
AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_WRITE(watchdog_reset_w)
188
186
AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2")
195
static WRITE8_HANDLER( gberetb_flipscreen_w )
193
WRITE8_MEMBER(gberet_state::gberetb_flipscreen_w)
197
flip_screen_set(space->machine(), data & 8);
195
flip_screen_set(data & 8);
200
static READ8_HANDLER( gberetb_irq_ack_r )
198
READ8_MEMBER(gberet_state::gberetb_irq_ack_r)
202
cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE);
200
cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE);
206
static WRITE8_HANDLER( gberetb_nmi_ack_w )
204
WRITE8_MEMBER(gberet_state::gberetb_nmi_ack_w)
208
cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
206
cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
211
static ADDRESS_MAP_START( gberetb_map, AS_PROGRAM, 8 )
209
static ADDRESS_MAP_START( gberetb_map, AS_PROGRAM, 8, gberet_state )
212
210
AM_RANGE(0x0000, 0xbfff) AM_ROM
213
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_BASE_MEMBER(gberet_state, m_colorram)
214
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_BASE_MEMBER(gberet_state, m_videoram)
211
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram")
212
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram")
215
213
AM_RANGE(0xd000, 0xdfff) AM_RAM
216
214
AM_RANGE(0xe000, 0xe03f) AM_RAM
217
215
AM_RANGE(0xe040, 0xe043) AM_WRITENOP // ???
218
216
AM_RANGE(0xe044, 0xe044) AM_WRITE(gberetb_flipscreen_w) // did hw even support flipscreen?
219
217
AM_RANGE(0xe800, 0xe8ff) AM_RAM
220
AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_BASE_SIZE_MEMBER(gberet_state, m_spriteram, m_spriteram_size)
218
AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_SHARE("spriteram")
221
219
AM_RANGE(0xf000, 0xf000) AM_WRITENOP // coin counter not supported
222
220
AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2")
223
AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("snsnd", sn76496_w)
221
AM_RANGE(0xf400, 0xf400) AM_DEVWRITE_LEGACY("snsnd", sn76496_w)
224
222
AM_RANGE(0xf600, 0xf600) AM_READ_PORT("P2")
225
223
AM_RANGE(0xf601, 0xf601) AM_READ_PORT("DSW1")
226
224
AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1")