134
static WRITE8_HANDLER( gyruss_sh_irqtrigger_w )
133
WRITE8_MEMBER(gyruss_state::gyruss_sh_irqtrigger_w)
136
gyruss_state *state = space->machine().driver_data<gyruss_state>();
137
135
/* writing to this register triggers IRQ on the sound CPU */
138
device_set_input_line_and_vector(state->m_audiocpu, 0, HOLD_LINE, 0xff);
141
static WRITE8_HANDLER( gyruss_i8039_irq_w )
143
gyruss_state *state = space->machine().driver_data<gyruss_state>();
144
device_set_input_line(state->m_audiocpu_2, 0, ASSERT_LINE);
147
static WRITE8_HANDLER( master_nmi_mask_w )
149
gyruss_state *state = space->machine().driver_data<gyruss_state>();
151
state->m_master_nmi_mask = data & 1;
154
static WRITE8_HANDLER( slave_irq_mask_w )
156
gyruss_state *state = space->machine().driver_data<gyruss_state>();
158
state->m_slave_irq_mask = data & 1;
161
static ADDRESS_MAP_START( main_cpu1_map, AS_PROGRAM, 8 )
136
device_set_input_line_and_vector(m_audiocpu, 0, HOLD_LINE, 0xff);
139
WRITE8_MEMBER(gyruss_state::gyruss_i8039_irq_w)
141
device_set_input_line(m_audiocpu_2, 0, ASSERT_LINE);
144
WRITE8_MEMBER(gyruss_state::master_nmi_mask_w)
147
m_master_nmi_mask = data & 1;
150
WRITE8_MEMBER(gyruss_state::slave_irq_mask_w)
153
m_slave_irq_mask = data & 1;
156
static ADDRESS_MAP_START( main_cpu1_map, AS_PROGRAM, 8, gyruss_state )
162
157
AM_RANGE(0x0000, 0x7fff) AM_ROM
163
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_BASE_MEMBER(gyruss_state, m_colorram)
164
AM_RANGE(0x8400, 0x87ff) AM_RAM AM_BASE_MEMBER(gyruss_state, m_videoram)
158
AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("colorram")
159
AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("videoram")
165
160
AM_RANGE(0x9000, 0x9fff) AM_RAM
166
161
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
167
162
AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW2") AM_WRITENOP /* watchdog reset */
169
164
AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("P1")
170
165
AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2")
171
166
AM_RANGE(0xc0e0, 0xc0e0) AM_READ_PORT("DSW1")
172
AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_WRITE(soundlatch_w)
167
AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_WRITE(soundlatch_byte_w)
173
168
AM_RANGE(0xc180, 0xc180) AM_WRITE(master_nmi_mask_w)
174
AM_RANGE(0xc185, 0xc185) AM_WRITEONLY AM_BASE_MEMBER(gyruss_state, m_flipscreen)
169
AM_RANGE(0xc185, 0xc185) AM_WRITEONLY AM_SHARE("flipscreen")
177
static ADDRESS_MAP_START( main_cpu2_map, AS_PROGRAM, 8 )
172
static ADDRESS_MAP_START( main_cpu2_map, AS_PROGRAM, 8, gyruss_state )
178
173
AM_RANGE(0x0000, 0x0000) AM_READ(gyruss_scanline_r)
179
174
AM_RANGE(0x2000, 0x2000) AM_WRITE(slave_irq_mask_w)
180
175
AM_RANGE(0x4000, 0x403f) AM_RAM
181
AM_RANGE(0x4040, 0x40ff) AM_RAM_WRITE(gyruss_spriteram_w) AM_BASE_MEMBER(gyruss_state, m_spriteram)
176
AM_RANGE(0x4040, 0x40ff) AM_RAM_WRITE(gyruss_spriteram_w) AM_SHARE("spriteram")
182
177
AM_RANGE(0x4100, 0x47ff) AM_RAM
183
178
AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("share1")
184
179
AM_RANGE(0xe000, 0xffff) AM_ROM
187
static ADDRESS_MAP_START( audio_cpu1_map, AS_PROGRAM, 8 )
182
static ADDRESS_MAP_START( audio_cpu1_map, AS_PROGRAM, 8, gyruss_state )
188
183
AM_RANGE(0x0000, 0x5fff) AM_ROM
189
184
AM_RANGE(0x6000, 0x63ff) AM_RAM
190
AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_r)
185
AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r)
193
static ADDRESS_MAP_START( audio_cpu1_io_map, AS_IO, 8 )
188
static ADDRESS_MAP_START( audio_cpu1_io_map, AS_IO, 8, gyruss_state )
194
189
ADDRESS_MAP_GLOBAL_MASK(0xff)
195
AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_address_w)
196
AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_r)
197
AM_RANGE(0x02, 0x02) AM_DEVWRITE("ay1", ay8910_data_w)
198
AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay2", ay8910_address_w)
199
AM_RANGE(0x05, 0x05) AM_DEVREAD("ay2", ay8910_r)
200
AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_data_w)
201
AM_RANGE(0x08, 0x08) AM_DEVWRITE("ay3", ay8910_address_w)
202
AM_RANGE(0x09, 0x09) AM_DEVREAD("ay3", ay8910_r)
203
AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay3", ay8910_data_w)
204
AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay4", ay8910_address_w)
205
AM_RANGE(0x0d, 0x0d) AM_DEVREAD("ay4", ay8910_r)
206
AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("ay4", ay8910_data_w)
207
AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay5", ay8910_address_w)
208
AM_RANGE(0x11, 0x11) AM_DEVREAD("ay5", ay8910_r)
209
AM_RANGE(0x12, 0x12) AM_DEVWRITE("ay5", ay8910_data_w)
190
AM_RANGE(0x00, 0x00) AM_DEVWRITE_LEGACY("ay1", ay8910_address_w)
191
AM_RANGE(0x01, 0x01) AM_DEVREAD_LEGACY("ay1", ay8910_r)
192
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("ay1", ay8910_data_w)
193
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("ay2", ay8910_address_w)
194
AM_RANGE(0x05, 0x05) AM_DEVREAD_LEGACY("ay2", ay8910_r)
195
AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("ay2", ay8910_data_w)
196
AM_RANGE(0x08, 0x08) AM_DEVWRITE_LEGACY("ay3", ay8910_address_w)
197
AM_RANGE(0x09, 0x09) AM_DEVREAD_LEGACY("ay3", ay8910_r)
198
AM_RANGE(0x0a, 0x0a) AM_DEVWRITE_LEGACY("ay3", ay8910_data_w)
199
AM_RANGE(0x0c, 0x0c) AM_DEVWRITE_LEGACY("ay4", ay8910_address_w)
200
AM_RANGE(0x0d, 0x0d) AM_DEVREAD_LEGACY("ay4", ay8910_r)
201
AM_RANGE(0x0e, 0x0e) AM_DEVWRITE_LEGACY("ay4", ay8910_data_w)
202
AM_RANGE(0x10, 0x10) AM_DEVWRITE_LEGACY("ay5", ay8910_address_w)
203
AM_RANGE(0x11, 0x11) AM_DEVREAD_LEGACY("ay5", ay8910_r)
204
AM_RANGE(0x12, 0x12) AM_DEVWRITE_LEGACY("ay5", ay8910_data_w)
210
205
AM_RANGE(0x14, 0x14) AM_WRITE(gyruss_i8039_irq_w)
211
AM_RANGE(0x18, 0x18) AM_WRITE(soundlatch2_w)
206
AM_RANGE(0x18, 0x18) AM_WRITE(soundlatch2_byte_w)
214
static ADDRESS_MAP_START( audio_cpu2_map, AS_PROGRAM, 8 )
209
static ADDRESS_MAP_START( audio_cpu2_map, AS_PROGRAM, 8, gyruss_state )
215
210
AM_RANGE(0x0000, 0x0fff) AM_ROM
218
static ADDRESS_MAP_START( audio_cpu2_io_map, AS_IO, 8 )
219
AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_r)
220
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("discrete", gyruss_dac_w)
213
static ADDRESS_MAP_START( audio_cpu2_io_map, AS_IO, 8, gyruss_state )
214
AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_byte_r)
215
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE_LEGACY("discrete", gyruss_dac_w)
221
216
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(gyruss_irq_clear_w)