130
130
/**********************************************************************************/
132
static READ16_HANDLER( dassault_control_r )
132
READ16_MEMBER(dassault_state::dassault_control_r)
134
134
switch (offset << 1)
136
136
case 0: /* Player 1 & Player 2 joysticks & fire buttons */
137
return input_port_read(space->machine(), "P1_P2");
137
return ioport("P1_P2")->read();
139
139
case 2: /* Player 3 & Player 4 joysticks & fire buttons */
140
return input_port_read(space->machine(), "P3_P4");
140
return ioport("P3_P4")->read();
142
142
case 4: /* Dip 1 (stored at 0x3f8035) */
143
return input_port_read(space->machine(), "DSW1");
143
return ioport("DSW1")->read();
145
145
case 6: /* Dip 2 (stored at 0x3f8034) */
146
return input_port_read(space->machine(), "DSW2");
146
return ioport("DSW2")->read();
148
148
case 8: /* VBL, Credits */
149
return input_port_read(space->machine(), "SYSTEM");
149
return ioport("SYSTEM")->read();
155
static WRITE16_HANDLER( dassault_control_w )
155
WRITE16_MEMBER(dassault_state::dassault_control_w)
157
coin_counter_w(space->machine(), 0, data & 1);
157
coin_counter_w(machine(), 0, data & 1);
158
158
if (data & 0xfffe)
159
159
logerror("Coin cointrol %04x\n", data);
162
static READ16_HANDLER( dassault_sub_control_r )
162
READ16_MEMBER(dassault_state::dassault_sub_control_r)
164
return input_port_read(space->machine(), "VBLANK1");
164
return ioport("VBLANK1")->read();
167
static WRITE16_HANDLER( dassault_sound_w )
167
WRITE16_MEMBER(dassault_state::dassault_sound_w)
169
dassault_state *state = space->machine().driver_data<dassault_state>();
170
soundlatch_w(space, 0, data & 0xff);
171
device_set_input_line(state->m_audiocpu, 0, HOLD_LINE); /* IRQ1 */
169
soundlatch_byte_w(space, 0, data & 0xff);
170
device_set_input_line(m_audiocpu, 0, HOLD_LINE); /* IRQ1 */
174
173
/* The CPU-CPU irq controller is overlaid onto the end of the shared memory */
175
static READ16_HANDLER( dassault_irq_r )
177
dassault_state *state = space->machine().driver_data<dassault_state>();
180
case 0: device_set_input_line(state->m_maincpu, 5, CLEAR_LINE); break;
181
case 1: device_set_input_line(state->m_subcpu, 6, CLEAR_LINE); break;
183
return state->m_shared_ram[(0xffc / 2) + offset]; /* The values probably don't matter */
186
static WRITE16_HANDLER( dassault_irq_w )
188
dassault_state *state = space->machine().driver_data<dassault_state>();
191
case 0: device_set_input_line(state->m_maincpu, 5, ASSERT_LINE); break;
192
case 1: device_set_input_line(state->m_subcpu, 6, ASSERT_LINE); break;
195
COMBINE_DATA(&state->m_shared_ram[(0xffc / 2) + offset]); /* The values probably don't matter */
198
static WRITE16_HANDLER( shared_ram_w )
200
dassault_state *state = space->machine().driver_data<dassault_state>();
201
COMBINE_DATA(&state->m_shared_ram[offset]);
204
static READ16_HANDLER( shared_ram_r )
206
dassault_state *state = space->machine().driver_data<dassault_state>();
207
return state->m_shared_ram[offset];
174
READ16_MEMBER(dassault_state::dassault_irq_r)
178
case 0: device_set_input_line(m_maincpu, 5, CLEAR_LINE); break;
179
case 1: device_set_input_line(m_subcpu, 6, CLEAR_LINE); break;
181
return m_shared_ram[(0xffc / 2) + offset]; /* The values probably don't matter */
184
WRITE16_MEMBER(dassault_state::dassault_irq_w)
188
case 0: device_set_input_line(m_maincpu, 5, ASSERT_LINE); break;
189
case 1: device_set_input_line(m_subcpu, 6, ASSERT_LINE); break;
192
COMBINE_DATA(&m_shared_ram[(0xffc / 2) + offset]); /* The values probably don't matter */
195
WRITE16_MEMBER(dassault_state::shared_ram_w)
197
COMBINE_DATA(&m_shared_ram[offset]);
200
READ16_MEMBER(dassault_state::shared_ram_r)
202
return m_shared_ram[offset];
210
205
/**********************************************************************************/
212
static ADDRESS_MAP_START( dassault_map, AS_PROGRAM, 16 )
207
static ADDRESS_MAP_START( dassault_map, AS_PROGRAM, 16, dassault_state )
213
208
AM_RANGE(0x000000, 0x07ffff) AM_ROM
215
AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
210
AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
217
212
AM_RANGE(0x140004, 0x140007) AM_WRITENOP /* ? */
218
213
AM_RANGE(0x180000, 0x180001) AM_WRITE(dassault_sound_w)
220
215
AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r)
221
AM_RANGE(0x1c000a, 0x1c000b) AM_DEVWRITE("deco_common", decocomn_priority_w)
222
AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(buffer_spriteram16_2_w)
216
AM_RANGE(0x1c000a, 0x1c000b) AM_DEVWRITE_LEGACY("deco_common", decocomn_priority_w)
217
AM_RANGE(0x1c000c, 0x1c000d) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
223
218
AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w)
225
AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
226
AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
227
AM_RANGE(0x212000, 0x212fff) AM_WRITEONLY AM_BASE_MEMBER(dassault_state, m_pf2_rowscroll)
228
AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("tilegen1", deco16ic_pf_control_w)
230
AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
231
AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
232
AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_BASE_MEMBER(dassault_state, m_pf4_rowscroll)
233
AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen2", deco16ic_pf_control_w)
235
AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE_MEMBER(dassault_state, m_ram) /* Main ram */
236
AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) /* Spriteram (2nd) */
220
AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
221
AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
222
AM_RANGE(0x212000, 0x212fff) AM_WRITEONLY AM_SHARE("pf2_rowscroll")
223
AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE_LEGACY("tilegen1", deco16ic_pf_control_w)
225
AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
226
AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
227
AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_SHARE("pf4_rowscroll")
228
AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE_LEGACY("tilegen2", deco16ic_pf_control_w)
230
AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram") /* Main ram */
231
AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram2") /* Spriteram (2nd) */
237
232
AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w)
238
AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE_MEMBER(dassault_state, m_shared_ram) /* Shared ram */
233
AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_SHARE("shared_ram") /* Shared ram */
241
static ADDRESS_MAP_START( dassault_sub_map, AS_PROGRAM, 16 )
236
static ADDRESS_MAP_START( dassault_sub_map, AS_PROGRAM, 16, dassault_state )
242
237
AM_RANGE(0x000000, 0x07ffff) AM_ROM
244
AM_RANGE(0x100000, 0x100001) AM_WRITE(buffer_spriteram16_w)
239
AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write)
245
240
AM_RANGE(0x100002, 0x100007) AM_WRITENOP /* ? */
246
241
AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r)
248
AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE_MEMBER(dassault_state, m_ram2) /* Sub cpu ram */
249
AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprite ram */
243
AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram2") /* Sub cpu ram */
244
AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */
250
245
AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w)
251
246
AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w)
254
249
/******************************************************************************/
256
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
251
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dassault_state )
257
252
AM_RANGE(0x000000, 0x00ffff) AM_ROM
258
AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
259
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
260
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE_MODERN("oki1", okim6295_device, read, write)
261
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE_MODERN("oki2", okim6295_device, read, write)
262
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
253
AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
254
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
255
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
256
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
257
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
263
258
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
264
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
265
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
259
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE_LEGACY(h6280_timer_w)
260
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE_LEGACY(h6280_irq_status_w)
268
263
/**********************************************************************************/