194
194
/*Rom bankswitching*/
195
static WRITE8_HANDLER( gladiatr_bankswitch_w )
195
WRITE8_MEMBER(gladiatr_state::gladiatr_bankswitch_w)
197
UINT8 *rom = space->machine().region("maincpu")->base() + 0x10000;
197
UINT8 *rom = memregion("maincpu")->base() + 0x10000;
199
memory_set_bankptr(space->machine(), "bank1", rom + 0x6000 * (data & 0x01));
199
membank("bank1")->set_base(rom + 0x6000 * (data & 0x01));
203
203
static READ8_HANDLER( gladiator_dsw1_r )
205
int orig = input_port_read(space->machine(), "DSW1")^0xff;
205
int orig = space->machine().root_device().ioport("DSW1")->read()^0xff;
207
207
return BITSWAP8(orig, 0,1,2,3,4,5,6,7);
210
210
static READ8_HANDLER( gladiator_dsw2_r )
212
int orig = input_port_read(space->machine(), "DSW2")^0xff;
212
int orig = space->machine().root_device().ioport("DSW2")->read()^0xff;
214
214
return BITSWAP8(orig, 2,3,4,5,6,7,1,0);
279
279
/*Sound Functions*/
280
280
static WRITE8_DEVICE_HANDLER( glad_adpcm_w )
282
UINT8 *rom = device->machine().region("audiocpu")->base() + 0x10000;
282
UINT8 *rom = device->machine().root_device().memregion("audiocpu")->base() + 0x10000;
284
284
/* bit6 = bank offset */
285
memory_set_bankptr(device->machine(), "bank2",rom + ((data & 0x40) ? 0xc000 : 0));
285
device->machine().root_device().membank("bank2")->set_base(rom + ((data & 0x40) ? 0xc000 : 0));
287
287
msm5205_data_w(device,data); /* bit0..3 */
288
288
msm5205_reset_w(device,(data>>5)&1); /* bit 5 */
289
289
msm5205_vclk_w (device,(data>>4)&1); /* bit4 */
292
static WRITE8_HANDLER( glad_cpu_sound_command_w )
294
soundlatch_w(space,0,data);
295
cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
298
static READ8_HANDLER( glad_cpu_sound_command_r )
300
cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
301
return soundlatch_r(space,0);
304
static WRITE8_HANDLER( gladiatr_flipscreen_w )
306
flip_screen_set(space->machine(), data & 1);
292
WRITE8_MEMBER(gladiatr_state::glad_cpu_sound_command_w)
294
soundlatch_byte_w(space,0,data);
295
cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
298
READ8_MEMBER(gladiatr_state::glad_cpu_sound_command_r)
300
cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
301
return soundlatch_byte_r(space,0);
304
WRITE8_MEMBER(gladiatr_state::gladiatr_flipscreen_w)
306
flip_screen_set(data & 1);
311
311
/* !!!!! patch to IRQ timming for 2nd CPU !!!!! */
312
static WRITE8_HANDLER( gladiatr_irq_patch_w )
312
WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w)
314
cputag_set_input_line(space->machine(), "sub", 0, HOLD_LINE);
314
cputag_set_input_line(machine(), "sub", 0, HOLD_LINE);
324
static WRITE8_HANDLER(qx0_w)
326
gladiatr_state *state = space->machine().driver_data<gladiatr_state>();
334
static WRITE8_HANDLER(qx1_w)
336
gladiatr_state *state = space->machine().driver_data<gladiatr_state>();
344
static WRITE8_HANDLER(qx2_w){ }
346
static WRITE8_HANDLER(qx3_w){ }
348
static READ8_HANDLER(qx2_r){ return space->machine().rand(); }
350
static READ8_HANDLER(qx3_r){ return space->machine().rand()&0xf; }
352
static READ8_HANDLER(qx0_r)
354
gladiatr_state *state = space->machine().driver_data<gladiatr_state>();
356
return state->m_data1;
358
return state->m_flag2;
361
static READ8_HANDLER(qx1_r)
363
gladiatr_state *state = space->machine().driver_data<gladiatr_state>();
365
return state->m_data2;
367
return state->m_flag1;
324
WRITE8_MEMBER(gladiatr_state::qx0_w)
333
WRITE8_MEMBER(gladiatr_state::qx1_w)
342
WRITE8_MEMBER(gladiatr_state::qx2_w){ }
344
WRITE8_MEMBER(gladiatr_state::qx3_w){ }
346
READ8_MEMBER(gladiatr_state::qx2_r){ return machine().rand(); }
348
READ8_MEMBER(gladiatr_state::qx3_r){ return machine().rand()&0xf; }
350
READ8_MEMBER(gladiatr_state::qx0_r)
358
READ8_MEMBER(gladiatr_state::qx1_r)
370
366
static MACHINE_RESET( ppking )
374
370
state->m_flag1 = state->m_flag2 = 1;
377
static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8 )
373
static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8, gladiatr_state )
378
374
AM_RANGE(0x0000, 0xbfff) AM_ROM
379
AM_RANGE(0xc000, 0xcbff) AM_RAM AM_BASE_MEMBER(gladiatr_state, m_spriteram)
375
AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
380
376
AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w)
381
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_BASE_GENERIC(paletteram)
382
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_BASE_MEMBER(gladiatr_state, m_videoram)
383
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_BASE_MEMBER(gladiatr_state, m_colorram)
384
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_BASE_MEMBER(gladiatr_state, m_textram)
377
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram")
378
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram")
379
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram")
380
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram")
385
381
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
389
static ADDRESS_MAP_START( ppking_cpu3_map, AS_PROGRAM, 8 )
385
static ADDRESS_MAP_START( ppking_cpu3_map, AS_PROGRAM, 8, gladiatr_state )
390
386
AM_RANGE(0x2000, 0x2fff) AM_ROM
391
387
AM_RANGE(0xc000, 0xffff) AM_ROM
394
static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8 )
390
static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, gladiatr_state )
395
391
// ADDRESS_MAP_GLOBAL_MASK(0xff)
396
392
AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w)
397
393
AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w)
399
395
AM_RANGE(0xc0bf, 0xc0bf) AM_NOP
402
static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8 )
398
static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, gladiatr_state )
403
399
ADDRESS_MAP_GLOBAL_MASK(0xff)
404
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
400
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w)
405
401
AM_RANGE(0x20, 0x21) AM_READ(qx1_r) AM_WRITE(qx1_w)
406
402
AM_RANGE(0x40, 0x40) AM_READNOP
407
AM_RANGE(0x60, 0x61) AM_READ(qx2_r) AM_WRITE(qx2_w)
408
AM_RANGE(0x80, 0x81) AM_READ(qx3_r) AM_WRITE(qx3_w)
403
AM_RANGE(0x60, 0x61) AM_READWRITE(qx2_r,qx2_w)
404
AM_RANGE(0x80, 0x81) AM_READWRITE(qx3_r,qx3_w)
414
static ADDRESS_MAP_START( gladiatr_cpu1_map, AS_PROGRAM, 8 )
410
static ADDRESS_MAP_START( gladiatr_cpu1_map, AS_PROGRAM, 8, gladiatr_state )
415
411
AM_RANGE(0x0000, 0x5fff) AM_ROM
416
412
AM_RANGE(0x6000, 0xbfff) AM_ROMBANK("bank1")
417
AM_RANGE(0xc000, 0xcbff) AM_RAM AM_BASE_MEMBER(gladiatr_state, m_spriteram)
413
AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram")
418
414
AM_RANGE(0xcc00, 0xcfff) AM_WRITE(gladiatr_video_registers_w)
419
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_BASE_GENERIC(paletteram)
420
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_BASE_MEMBER(gladiatr_state, m_videoram)
421
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_BASE_MEMBER(gladiatr_state, m_colorram)
422
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_BASE_MEMBER(gladiatr_state, m_textram)
415
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram")
416
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram")
417
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram")
418
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram")
423
419
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */
426
static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8 )
422
static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, gladiatr_state )
427
423
AM_RANGE(0x0000, 0x7fff) AM_ROM
428
424
AM_RANGE(0x8000, 0x83ff) AM_RAM
431
static ADDRESS_MAP_START( gladiatr_cpu3_map, AS_PROGRAM, 8 )
432
AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE("msm", glad_adpcm_w)
427
static ADDRESS_MAP_START( gladiatr_cpu3_map, AS_PROGRAM, 8, gladiatr_state )
428
AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE_LEGACY("msm", glad_adpcm_w)
433
429
AM_RANGE(0x2000, 0x2fff) AM_READ(glad_cpu_sound_command_r)
434
430
AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank2")
438
static ADDRESS_MAP_START( gladiatr_cpu1_io, AS_IO, 8 )
434
static ADDRESS_MAP_START( gladiatr_cpu1_io, AS_IO, 8, gladiatr_state )
439
435
// ADDRESS_MAP_GLOBAL_MASK(0xff)
440
436
AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w)
441
437
AM_RANGE(0xc001, 0xc001) AM_WRITE(gladiatr_spritebank_w)
442
438
AM_RANGE(0xc002, 0xc002) AM_WRITE(gladiatr_bankswitch_w)
443
439
AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */
444
440
AM_RANGE(0xc007, 0xc007) AM_WRITE(gladiatr_flipscreen_w)
445
AM_RANGE(0xc09e, 0xc09f) AM_READWRITE(TAITO8741_0_r, TAITO8741_0_w)
441
AM_RANGE(0xc09e, 0xc09f) AM_READWRITE_LEGACY(TAITO8741_0_r, TAITO8741_0_w)
446
442
AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog_reset_w doesn't work
449
static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8 )
445
static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state )
450
446
ADDRESS_MAP_GLOBAL_MASK(0xff)
451
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
452
AM_RANGE(0x20, 0x21) AM_READWRITE(TAITO8741_1_r, TAITO8741_1_w)
447
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w)
448
AM_RANGE(0x20, 0x21) AM_READWRITE_LEGACY(TAITO8741_1_r, TAITO8741_1_w)
453
449
AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w)
454
AM_RANGE(0x60, 0x61) AM_READWRITE(TAITO8741_2_r, TAITO8741_2_w)
455
AM_RANGE(0x80, 0x81) AM_READWRITE(TAITO8741_3_r, TAITO8741_3_w)
450
AM_RANGE(0x60, 0x61) AM_READWRITE_LEGACY(TAITO8741_2_r, TAITO8741_2_w)
451
AM_RANGE(0x80, 0x81) AM_READWRITE_LEGACY(TAITO8741_3_r, TAITO8741_3_w)
456
452
AM_RANGE(0xa0, 0xa7) AM_NOP // filters on sound output
457
453
AM_RANGE(0xe0, 0xe0) AM_WRITE(glad_cpu_sound_command_w)