~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/mame/drivers/taito_f2.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
278
278
                        GAME INPUTS
279
279
**********************************************************/
280
280
 
281
 
static WRITE16_HANDLER( growl_coin_word_w )     /* what about coins 3&4 ?? */
282
 
{
283
 
        if (ACCESSING_BITS_0_7)
284
 
        {
285
 
                coin_lockout_w(space->machine(), 0, ~data & 0x01);
286
 
                coin_lockout_w(space->machine(), 1, ~data & 0x02);
287
 
                coin_counter_w(space->machine(), 0,  data & 0x04);
288
 
                coin_counter_w(space->machine(), 1,  data & 0x08);
289
 
        }
290
 
}
291
 
 
292
 
static WRITE16_HANDLER( taitof2_4p_coin_word_w )
293
 
{
294
 
        if (ACCESSING_BITS_0_7)
295
 
        {
296
 
                coin_lockout_w(space->machine(), 0, ~data & 0x01);
297
 
                coin_lockout_w(space->machine(), 1, ~data & 0x02);
298
 
                coin_lockout_w(space->machine(), 2, ~data & 0x04);
299
 
                coin_lockout_w(space->machine(), 3, ~data & 0x08);
300
 
                coin_counter_w(space->machine(), 0,  data & 0x10);
301
 
                coin_counter_w(space->machine(), 1,  data & 0x20);
302
 
                coin_counter_w(space->machine(), 2,  data & 0x40);
303
 
                coin_counter_w(space->machine(), 3,  data & 0x80);
304
 
        }
305
 
}
306
 
 
307
 
static WRITE16_HANDLER( ninjak_coin_word_w )
 
281
WRITE16_MEMBER(taitof2_state::growl_coin_word_w)/* what about coins 3&4 ?? */
 
282
{
 
283
        if (ACCESSING_BITS_0_7)
 
284
        {
 
285
                coin_lockout_w(machine(), 0, ~data & 0x01);
 
286
                coin_lockout_w(machine(), 1, ~data & 0x02);
 
287
                coin_counter_w(machine(), 0,  data & 0x04);
 
288
                coin_counter_w(machine(), 1,  data & 0x08);
 
289
        }
 
290
}
 
291
 
 
292
WRITE16_MEMBER(taitof2_state::taitof2_4p_coin_word_w)
 
293
{
 
294
        if (ACCESSING_BITS_0_7)
 
295
        {
 
296
                coin_lockout_w(machine(), 0, ~data & 0x01);
 
297
                coin_lockout_w(machine(), 1, ~data & 0x02);
 
298
                coin_lockout_w(machine(), 2, ~data & 0x04);
 
299
                coin_lockout_w(machine(), 3, ~data & 0x08);
 
300
                coin_counter_w(machine(), 0,  data & 0x10);
 
301
                coin_counter_w(machine(), 1,  data & 0x20);
 
302
                coin_counter_w(machine(), 2,  data & 0x40);
 
303
                coin_counter_w(machine(), 3,  data & 0x80);
 
304
        }
 
305
}
 
306
 
 
307
WRITE16_MEMBER(taitof2_state::ninjak_coin_word_w)
308
308
{
309
309
        if (ACCESSING_BITS_8_15)
310
310
        {
311
 
                coin_lockout_w(space->machine(), 0, ~data & 0x0100);
312
 
                coin_lockout_w(space->machine(), 1, ~data & 0x0200);
313
 
                coin_lockout_w(space->machine(), 2, ~data & 0x0400);
314
 
                coin_lockout_w(space->machine(), 3, ~data & 0x0800);
315
 
                coin_counter_w(space->machine(), 0,  data & 0x1000);
316
 
                coin_counter_w(space->machine(), 1,  data & 0x2000);
317
 
                coin_counter_w(space->machine(), 2,  data & 0x4000);
318
 
                coin_counter_w(space->machine(), 3,  data & 0x8000);
 
311
                coin_lockout_w(machine(), 0, ~data & 0x0100);
 
312
                coin_lockout_w(machine(), 1, ~data & 0x0200);
 
313
                coin_lockout_w(machine(), 2, ~data & 0x0400);
 
314
                coin_lockout_w(machine(), 3, ~data & 0x0800);
 
315
                coin_counter_w(machine(), 0,  data & 0x1000);
 
316
                coin_counter_w(machine(), 1,  data & 0x2000);
 
317
                coin_counter_w(machine(), 2,  data & 0x4000);
 
318
                coin_counter_w(machine(), 3,  data & 0x8000);
319
319
        }
320
320
}
321
321
 
322
 
static READ16_HANDLER( ninjak_input_r )
 
322
READ16_MEMBER(taitof2_state::ninjak_input_r)
323
323
{
324
324
        switch (offset)
325
325
        {
326
326
                case 0x00:
327
 
                        return (input_port_read(space->machine(), "DSWA") << 8);
 
327
                        return (ioport("DSWA")->read() << 8);
328
328
 
329
329
                case 0x01:
330
 
                        return (input_port_read(space->machine(), "DSWB") << 8);
 
330
                        return (ioport("DSWB")->read() << 8);
331
331
 
332
332
                case 0x02:
333
 
                        return (input_port_read(space->machine(), "IN0") << 8);
 
333
                        return (ioport("IN0")->read() << 8);
334
334
 
335
335
                case 0x03:
336
 
                        return (input_port_read(space->machine(), "IN1") << 8);
 
336
                        return (ioport("IN1")->read() << 8);
337
337
 
338
338
                case 0x04:
339
 
                        return (input_port_read(space->machine(), "IN3") << 8);
 
339
                        return (ioport("IN3")->read() << 8);
340
340
 
341
341
                case 0x05:
342
 
                        return (input_port_read(space->machine(), "IN4") << 8);
 
342
                        return (ioport("IN4")->read() << 8);
343
343
 
344
344
                case 0x06:
345
 
                        return (input_port_read(space->machine(), "IN2") << 8);
 
345
                        return (ioport("IN2")->read() << 8);
346
346
 
347
347
//      case 0x07:
348
348
//          return (coin_word & mem_mask);
349
349
        }
350
350
 
351
 
        logerror("CPU #0 PC %06x: warning - read unmapped input offset %06x\n", cpu_get_pc(&space->device()), offset);
 
351
        logerror("CPU #0 PC %06x: warning - read unmapped input offset %06x\n", cpu_get_pc(&space.device()), offset);
352
352
 
353
353
        return 0xff;
354
354
}
355
355
 
356
 
static READ16_HANDLER( cameltry_paddle_r )
 
356
READ16_MEMBER(taitof2_state::cameltry_paddle_r)
357
357
{
358
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
359
358
        int curr, res = 0xff;
360
359
 
361
360
        switch (offset)
362
361
        {
363
362
                case 0x00:
364
 
                        curr = input_port_read(space->machine(), "PADDLE1");
365
 
                        res = curr - state->m_last[0];
366
 
                        state->m_last[0] = curr;
 
363
                        curr = ioport("PADDLE1")->read();
 
364
                        res = curr - m_last[0];
 
365
                        m_last[0] = curr;
367
366
                        return res;
368
367
 
369
368
                case 0x02:
370
 
                        curr = input_port_read(space->machine(), "PADDLE2");
371
 
                        res = curr - state->m_last[1];
372
 
                        state->m_last[1] = curr;
 
369
                        curr = ioport("PADDLE2")->read();
 
370
                        res = curr - m_last[1];
 
371
                        m_last[1] = curr;
373
372
                        return res;
374
373
        }
375
374
 
376
 
        logerror("CPU #0 PC %06x: warning - read unmapped paddle offset %06x\n", cpu_get_pc(&space->device()), offset);
 
375
        logerror("CPU #0 PC %06x: warning - read unmapped paddle offset %06x\n", cpu_get_pc(&space.device()), offset);
377
376
 
378
377
        return 0;
379
378
}
380
379
 
381
 
static READ16_HANDLER( mjnquest_dsw_r )
 
380
READ16_MEMBER(taitof2_state::mjnquest_dsw_r)
382
381
{
383
382
        switch (offset)
384
383
        {
385
384
                case 0x00:
386
385
                {
387
 
                        return (input_port_read(space->machine(), "IN5") << 8) + input_port_read(space->machine(), "DSWA");     /* DSW A + coin */
 
386
                        return (ioport("IN5")->read() << 8) + ioport("DSWA")->read();   /* DSW A + coin */
388
387
                }
389
388
 
390
389
                case 0x01:
391
390
                {
392
 
                        return (input_port_read(space->machine(), "IN6") << 8) + input_port_read(space->machine(), "DSWB");     /* DSW B + coin */
 
391
                        return (ioport("IN6")->read() << 8) + ioport("DSWB")->read();   /* DSW B + coin */
393
392
                }
394
393
        }
395
394
 
396
 
        logerror("CPU #0 PC %06x: warning - read unmapped dsw_r offset %06x\n", cpu_get_pc(&space->device()), offset);
 
395
        logerror("CPU #0 PC %06x: warning - read unmapped dsw_r offset %06x\n", cpu_get_pc(&space.device()), offset);
397
396
 
398
397
        return 0xff;
399
398
}
400
399
 
401
 
static READ16_HANDLER( mjnquest_input_r )
 
400
READ16_MEMBER(taitof2_state::mjnquest_input_r)
402
401
{
403
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
404
 
        switch (state->m_mjnquest_input)
 
402
        switch (m_mjnquest_input)
405
403
        {
406
404
                case 0x01:
407
 
                          return input_port_read(space->machine(), "IN0");
 
405
                          return ioport("IN0")->read();
408
406
 
409
407
                 case 0x02:
410
 
                          return input_port_read(space->machine(), "IN1");
 
408
                          return ioport("IN1")->read();
411
409
 
412
410
                 case 0x04:
413
 
                          return input_port_read(space->machine(), "IN2");
 
411
                          return ioport("IN2")->read();
414
412
 
415
413
                 case 0x08:
416
 
                          return input_port_read(space->machine(), "IN3");
 
414
                          return ioport("IN3")->read();
417
415
 
418
416
                 case 0x10:
419
 
                          return input_port_read(space->machine(), "IN4");
 
417
                          return ioport("IN4")->read();
420
418
 
421
419
        }
422
420
 
423
 
        logerror("CPU #0 mjnquest_input %06x: warning - read unknown input %06x\n", cpu_get_pc(&space->device()), state->m_mjnquest_input);
 
421
        logerror("CPU #0 mjnquest_input %06x: warning - read unknown input %06x\n", cpu_get_pc(&space.device()), m_mjnquest_input);
424
422
 
425
423
        return 0xff;
426
424
}
427
425
 
428
 
static WRITE16_HANDLER( mjnquest_inputselect_w )
 
426
WRITE16_MEMBER(taitof2_state::mjnquest_inputselect_w)
429
427
{
430
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
431
 
        state->m_mjnquest_input = (data >> 6);
 
428
        m_mjnquest_input = (data >> 6);
432
429
}
433
430
 
434
431
/******************************************************************
592
589
                            SOUND
593
590
****************************************************************/
594
591
 
595
 
static WRITE8_HANDLER( sound_bankswitch_w )
 
592
WRITE8_MEMBER(taitof2_state::sound_bankswitch_w)
596
593
{
597
 
        memory_set_bank(space->machine(), "bank2", (data - 1) & 7);
 
594
        membank("bank2")->set_entry((data - 1) & 7);
598
595
 
599
596
#ifdef MAME_DEBUG
600
597
        if (((data - 1) & 7) > 2)
603
600
}
604
601
 
605
602
 
606
 
static READ8_HANDLER( driveout_sound_command_r)
 
603
READ8_MEMBER(taitof2_state::driveout_sound_command_r)
607
604
{
608
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
609
605
 
610
 
        device_set_input_line(state->m_audiocpu, 0, CLEAR_LINE);
611
 
//  logerror("sound IRQ OFF (sound command=%02x)\n", state->m_driveout_sound_latch);
612
 
        return state->m_driveout_sound_latch;
 
606
        device_set_input_line(m_audiocpu, 0, CLEAR_LINE);
 
607
//  logerror("sound IRQ OFF (sound command=%02x)\n", m_driveout_sound_latch);
 
608
        return m_driveout_sound_latch;
613
609
}
614
610
 
615
611
 
619
615
        state->m_oki->set_bank_base(state->m_oki_bank * 0x40000);
620
616
}
621
617
 
622
 
static WRITE8_HANDLER( oki_bank_w )
 
618
WRITE8_MEMBER(taitof2_state::oki_bank_w)
623
619
{
624
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
625
 
        if ((data & 4) && (state->m_oki_bank != (data & 3)) )
 
620
        if ((data & 4) && (m_oki_bank != (data & 3)) )
626
621
        {
627
 
                state->m_oki_bank = (data & 3);
 
622
                m_oki_bank = (data & 3);
628
623
        }
629
624
 
630
 
        reset_driveout_sound_region(space->machine());
 
625
        reset_driveout_sound_region(machine());
631
626
}
632
627
 
633
 
static WRITE16_HANDLER( driveout_sound_command_w )
 
628
WRITE16_MEMBER(taitof2_state::driveout_sound_command_w)
634
629
{
635
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
636
630
 
637
631
        if (ACCESSING_BITS_8_15)
638
632
        {
639
633
                data >>= 8;
640
634
                if (offset == 0)
641
635
                {
642
 
                        state->m_nibble = data & 1;
 
636
                        m_nibble = data & 1;
643
637
                }
644
638
                else
645
639
                {
646
 
                        if (state->m_nibble == 0)
 
640
                        if (m_nibble == 0)
647
641
                        {
648
 
                                state->m_driveout_sound_latch = (data & 0x0f) | (state->m_driveout_sound_latch & 0xf0);
 
642
                                m_driveout_sound_latch = (data & 0x0f) | (m_driveout_sound_latch & 0xf0);
649
643
                        }
650
644
                        else
651
645
                        {
652
 
                                state->m_driveout_sound_latch = ((data << 4) & 0xf0) | (state->m_driveout_sound_latch & 0x0f);
653
 
                                device_set_input_line(state->m_audiocpu, 0, ASSERT_LINE);
 
646
                                m_driveout_sound_latch = ((data << 4) & 0xf0) | (m_driveout_sound_latch & 0x0f);
 
647
                                device_set_input_line(m_audiocpu, 0, ASSERT_LINE);
654
648
                        }
655
649
                }
656
650
        }
666
660
 
667
661
***************************************************************************/
668
662
 
669
 
static WRITE16_HANDLER( cchip2_word_w )
 
663
WRITE16_MEMBER(taitof2_state::cchip2_word_w)
670
664
{
671
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
672
 
 
673
 
        logerror("cchip2_w pc: %06x offset %04x: %02x\n", cpu_get_pc(&space->device()), offset, data);
674
 
 
675
 
        COMBINE_DATA(&state->m_cchip2_ram[offset]);
 
665
 
 
666
        logerror("cchip2_w pc: %06x offset %04x: %02x\n", cpu_get_pc(&space.device()), offset, data);
 
667
 
 
668
        COMBINE_DATA(&m_cchip2_ram[offset]);
676
669
}
677
670
 
678
 
static READ16_HANDLER( cchip2_word_r )
 
671
READ16_MEMBER(taitof2_state::cchip2_word_r)
679
672
{
680
 
        taitof2_state *state = space->machine().driver_data<taitof2_state>();
681
673
 
682
674
        /* C-Chip ID */
683
675
        if (offset == 0x401)
685
677
 
686
678
        logerror("cchip2_r offset: %04x\n", offset);
687
679
 
688
 
        return state->m_cchip2_ram[offset];
 
680
        return m_cchip2_ram[offset];
689
681
}
690
682
 
691
683
 
693
685
                     MEMORY STRUCTURES
694
686
***********************************************************/
695
687
 
696
 
static ADDRESS_MAP_START( finalb_map, AS_PROGRAM, 16 )
 
688
static ADDRESS_MAP_START( finalb_map, AS_PROGRAM, 16, taitof2_state )
697
689
        AM_RANGE(0x000000, 0x03ffff) AM_ROM
698
690
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
699
 
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)   /* palette */
700
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
701
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
702
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
703
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
 
691
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)    /* palette */
 
692
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
693
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
694
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
695
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
704
696
        AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP   /* error in game init code ? */
705
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
706
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
697
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
698
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
707
699
        AM_RANGE(0xb00002, 0xb00003) AM_WRITENOP   /* ?? */
708
700
ADDRESS_MAP_END
709
701
 
710
 
static ADDRESS_MAP_START( dondokod_map, AS_PROGRAM, 16 )
 
702
static ADDRESS_MAP_START( dondokod_map, AS_PROGRAM, 16, taitof2_state )
711
703
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
712
704
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
713
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
714
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
715
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
716
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
717
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
718
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
719
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
720
 
        AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_word_r, tc0280grd_word_w)   /* ROZ tilemap */
721
 
        AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_ctrl_word_w)
722
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
705
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
706
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
707
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
708
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
709
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
710
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
711
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
712
        AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE_LEGACY("tc0280grd", tc0280grd_word_r, tc0280grd_word_w)    /* ROZ tilemap */
 
713
        AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE_LEGACY("tc0280grd", tc0280grd_ctrl_word_w)
 
714
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
723
715
ADDRESS_MAP_END
724
716
 
725
 
static ADDRESS_MAP_START( megab_map, AS_PROGRAM, 16 )
 
717
static ADDRESS_MAP_START( megab_map, AS_PROGRAM, 16, taitof2_state )
726
718
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
727
 
        AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
728
 
        AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
729
 
        AM_RANGE(0x120000, 0x12000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
730
 
        AM_RANGE(0x180000, 0x180fff) AM_READWRITE(cchip2_word_r, cchip2_word_w) AM_BASE_MEMBER(taitof2_state, m_cchip2_ram)
 
719
        AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
720
        AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
721
        AM_RANGE(0x120000, 0x12000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
722
        AM_RANGE(0x180000, 0x180fff) AM_READWRITE(cchip2_word_r, cchip2_word_w) AM_SHARE("cchip2_ram")
731
723
        AM_RANGE(0x200000, 0x20ffff) AM_RAM
732
 
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
733
 
        AM_RANGE(0x400000, 0x40001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
734
 
        AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
 
724
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
725
        AM_RANGE(0x400000, 0x40001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
 
726
        AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
735
727
        AM_RANGE(0x610000, 0x61ffff) AM_RAM   /* unused? */
736
 
        AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
737
 
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
728
        AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
729
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
738
730
ADDRESS_MAP_END
739
731
 
740
 
static ADDRESS_MAP_START( thundfox_map, AS_PROGRAM, 16 )
 
732
static ADDRESS_MAP_START( thundfox_map, AS_PROGRAM, 16, taitof2_state )
741
733
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
742
 
        AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
743
 
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
744
 
        AM_RANGE(0x220000, 0x220001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
745
 
        AM_RANGE(0x220002, 0x220003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
734
        AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
735
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
736
        AM_RANGE(0x220000, 0x220001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
737
        AM_RANGE(0x220002, 0x220003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
746
738
        AM_RANGE(0x300000, 0x30ffff) AM_RAM
747
 
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
748
 
        AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
749
 
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
750
 
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
751
 
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
752
 
        AM_RANGE(0x800000, 0x80001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0xff00)
 
739
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0100scn_1", tc0100scn_word_r, tc0100scn_word_w)  /* tilemaps */
 
740
        AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE_LEGACY("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
741
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE_LEGACY("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w)  /* tilemaps */
 
742
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE_LEGACY("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
743
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
 
744
        AM_RANGE(0x800000, 0x80001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0xff00)
753
745
ADDRESS_MAP_END
754
746
 
755
 
static ADDRESS_MAP_START( cameltry_map, AS_PROGRAM, 16 )
 
747
static ADDRESS_MAP_START( cameltry_map, AS_PROGRAM, 16, taitof2_state )
756
748
        AM_RANGE(0x000000, 0x03ffff) AM_ROM
757
749
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
758
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
759
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
750
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
751
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
760
752
        AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r)
761
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
762
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
763
 
        AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
764
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
765
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
766
 
        AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_word_r, tc0280grd_word_w)   /* ROZ tilemap */
767
 
        AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_ctrl_word_w)
768
 
        AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
753
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
754
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
755
        AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
756
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
757
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
758
        AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE_LEGACY("tc0280grd", tc0280grd_word_r, tc0280grd_word_w)    /* ROZ tilemap */
 
759
        AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE_LEGACY("tc0280grd", tc0280grd_ctrl_word_w)
 
760
        AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
769
761
ADDRESS_MAP_END
770
762
 
771
 
static ADDRESS_MAP_START( qtorimon_map, AS_PROGRAM, 16 )
 
763
static ADDRESS_MAP_START( qtorimon_map, AS_PROGRAM, 16, taitof2_state )
772
764
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
773
765
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
774
 
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)   /* palette */
775
 
        AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
776
 
        AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
777
 
        AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
778
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
779
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
780
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
766
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)    /* palette */
 
767
        AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
768
        AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
769
        AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
770
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
771
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
772
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
781
773
        AM_RANGE(0x910000, 0x9120ff) AM_WRITENOP   /* error in init code ? */
782
774
ADDRESS_MAP_END
783
775
 
784
 
static ADDRESS_MAP_START( liquidk_map, AS_PROGRAM, 16 )
 
776
static ADDRESS_MAP_START( liquidk_map, AS_PROGRAM, 16, taitof2_state )
785
777
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
786
778
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
787
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
788
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
789
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
790
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
791
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
792
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
793
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
794
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
779
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
780
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8_LEGACY("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
 
781
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
782
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
783
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
784
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
785
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
786
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
795
787
ADDRESS_MAP_END
796
788
 
797
 
static ADDRESS_MAP_START( quizhq_map, AS_PROGRAM, 16 )
 
789
static ADDRESS_MAP_START( quizhq_map, AS_PROGRAM, 16, taitof2_state )
798
790
        AM_RANGE(0x000000, 0x0bffff) AM_ROM
799
791
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
800
 
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)   /* palette */
 
792
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)    /* palette */
801
793
        AM_RANGE(0x500004, 0x500005) AM_WRITE(growl_coin_word_w)
802
794
        AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSWB")
803
795
        AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN0")
806
798
        AM_RANGE(0x580000, 0x580001) AM_READ_PORT("DSWA")
807
799
        AM_RANGE(0x580002, 0x580003) AM_READ_PORT("IN1")
808
800
        AM_RANGE(0x580004, 0x580005) AM_READ_PORT("IN2")
809
 
        AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
810
 
        AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
801
        AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
802
        AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
811
803
        AM_RANGE(0x680000, 0x680001) AM_WRITENOP   /* ??? */
812
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
 
804
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
813
805
        AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP   /* error in init code ? */
814
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
815
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
806
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
807
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
816
808
ADDRESS_MAP_END
817
809
 
818
 
static ADDRESS_MAP_START( ssi_map, AS_PROGRAM, 16 )
 
810
static ADDRESS_MAP_START( ssi_map, AS_PROGRAM, 16, taitof2_state )
819
811
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
820
 
        AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
812
        AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
821
813
        AM_RANGE(0x200000, 0x20ffff) AM_RAM
822
 
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
823
 
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
824
 
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
814
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
815
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
816
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
825
817
//  AM_RANGE(0x500000, 0x500001) AM_WRITENOP   /* ?? */
826
 
        AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps (not used) */
827
 
        AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
828
 
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)   /* sprite ram */
 
818
        AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps (not used) */
 
819
        AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
820
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")   /* sprite ram */
829
821
ADDRESS_MAP_END
830
822
 
831
 
static ADDRESS_MAP_START( gunfront_map, AS_PROGRAM, 16 )
 
823
static ADDRESS_MAP_START( gunfront_map, AS_PROGRAM, 16, taitof2_state )
832
824
        AM_RANGE(0x000000, 0x0bffff) AM_ROM
833
825
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
834
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
835
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_wordswap_r, tc0510nio_halfword_wordswap_w)
836
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
837
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
838
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
839
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
840
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
826
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
827
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_wordswap_r, tc0510nio_halfword_wordswap_w)
 
828
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
829
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
830
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
831
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
832
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
841
833
//  AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* ?? */
842
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
834
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
843
835
ADDRESS_MAP_END
844
836
 
845
 
static ADDRESS_MAP_START( growl_map, AS_PROGRAM, 16 )
 
837
static ADDRESS_MAP_START( growl_map, AS_PROGRAM, 16, taitof2_state )
846
838
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
847
839
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
848
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
840
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
849
841
        AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w)
850
842
        AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
851
843
        AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
853
845
        AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1")
854
846
        AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2")
855
847
        AM_RANGE(0x340000, 0x340001) AM_WRITE(watchdog_reset16_w)
856
 
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
857
 
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
848
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
849
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
858
850
        AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w)
859
851
        AM_RANGE(0x504000, 0x504001) AM_WRITENOP        /* unknown... various values */
860
852
        AM_RANGE(0x508000, 0x50800f) AM_READ_PORT("IN3")
861
853
        AM_RANGE(0x50c000, 0x50c00f) AM_READ_PORT("IN4")
862
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
863
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
864
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
865
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
854
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
855
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
856
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
857
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
866
858
ADDRESS_MAP_END
867
859
 
868
 
static ADDRESS_MAP_START( mjnquest_map, AS_PROGRAM, 16 )
 
860
static ADDRESS_MAP_START( mjnquest_map, AS_PROGRAM, 16, taitof2_state )
869
861
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
870
862
        AM_RANGE(0x110000, 0x11ffff) AM_RAM   /* "sram" */
871
863
        AM_RANGE(0x120000, 0x12ffff) AM_RAM
872
 
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)   /* palette */
 
864
        AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE_LEGACY("tc0110pcr", tc0110pcr_word_r, tc0110pcr_word_w)    /* palette */
873
865
        AM_RANGE(0x300000, 0x30000f) AM_READ(mjnquest_dsw_r)
874
866
        AM_RANGE(0x310000, 0x310001) AM_READ(mjnquest_input_r)
875
867
        AM_RANGE(0x320000, 0x320001) AM_WRITE(mjnquest_inputselect_w)
876
868
        AM_RANGE(0x330000, 0x330001) AM_WRITENOP   /* watchdog ? */
877
869
        AM_RANGE(0x350000, 0x350001) AM_WRITENOP   /* watchdog ? */
878
 
        AM_RANGE(0x360000, 0x360001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
879
 
        AM_RANGE(0x360002, 0x360003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
880
 
        AM_RANGE(0x380000, 0x380001) AM_DEVWRITE("tc0100scn", tc0100scn_gfxbank_w)      /* scr gfx bank select */
881
 
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
882
 
        AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
883
 
        AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
870
        AM_RANGE(0x360000, 0x360001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
871
        AM_RANGE(0x360002, 0x360003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
872
        AM_RANGE(0x380000, 0x380001) AM_DEVWRITE_LEGACY("tc0100scn", tc0100scn_gfxbank_w)       /* scr gfx bank select */
 
873
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
874
        AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
875
        AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram")
884
876
ADDRESS_MAP_END
885
877
 
886
 
static ADDRESS_MAP_START( footchmp_map, AS_PROGRAM, 16 )
 
878
static ADDRESS_MAP_START( footchmp_map, AS_PROGRAM, 16, taitof2_state )
887
879
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
888
880
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
889
 
        AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
881
        AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
890
882
        AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w)     /* updated at $a6e, off irq5 */
891
 
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)    /* tilemaps */
892
 
        AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
893
 
        AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* 500002 written like a watchdog?! */
894
 
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
883
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)     /* tilemaps */
 
884
        AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
 
885
        AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* 500002 written like a watchdog?! */
 
886
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
895
887
        AM_RANGE(0x700006, 0x700007) AM_WRITE(taitof2_4p_coin_word_w)
896
888
        AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")
897
889
        AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB")
901
893
        AM_RANGE(0x70000e, 0x70000f) AM_READ_PORT("IN3")
902
894
        AM_RANGE(0x700010, 0x700011) AM_READ_PORT("IN4")
903
895
        AM_RANGE(0x800000, 0x800001) AM_WRITE(watchdog_reset16_w)   /* ??? */
904
 
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
905
 
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
896
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
897
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
906
898
ADDRESS_MAP_END
907
899
 
908
 
static ADDRESS_MAP_START( koshien_map, AS_PROGRAM, 16 )
 
900
static ADDRESS_MAP_START( koshien_map, AS_PROGRAM, 16, taitof2_state )
909
901
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
910
902
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
911
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
912
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
913
 
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
914
 
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
915
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
916
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
917
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
903
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
904
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
905
        AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
906
        AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
907
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
908
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
909
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
918
910
        AM_RANGE(0xa20000, 0xa20001) AM_WRITE(koshien_spritebank_w)
919
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0xff00)
 
911
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0xff00)
920
912
ADDRESS_MAP_END
921
913
 
922
 
static ADDRESS_MAP_START( yuyugogo_map, AS_PROGRAM, 16 )
 
914
static ADDRESS_MAP_START( yuyugogo_map, AS_PROGRAM, 16, taitof2_state )
923
915
        AM_RANGE(0x000000, 0x03ffff) AM_ROM
924
 
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
925
 
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
926
 
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
927
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
928
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
929
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
930
 
        AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
916
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
917
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
918
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
919
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
920
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
921
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
922
        AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
931
923
        AM_RANGE(0xb00000, 0xb10fff) AM_RAM   /* deliberate writes to $b10xxx, I think */
932
 
        AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
 
924
        AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
933
925
        AM_RANGE(0xd00000, 0xdfffff) AM_ROM AM_REGION("extra", 0)
934
926
ADDRESS_MAP_END
935
927
 
936
 
static ADDRESS_MAP_START( ninjak_map, AS_PROGRAM, 16 )
 
928
static ADDRESS_MAP_START( ninjak_map, AS_PROGRAM, 16, taitof2_state )
937
929
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
938
930
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
939
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
931
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
940
932
        AM_RANGE(0x300000, 0x30000f) AM_READ(ninjak_input_r)
941
933
        AM_RANGE(0x30000e, 0x30000f) AM_WRITE(ninjak_coin_word_w)
942
934
        AM_RANGE(0x380000, 0x380001) AM_WRITE(watchdog_reset16_w)       /* ??? */
943
 
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
944
 
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
935
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
936
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
945
937
        AM_RANGE(0x600000, 0x60000f) AM_WRITE(taitof2_spritebank_w)
946
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
947
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
948
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
949
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* b00002 written like a watchdog?! */
 
938
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
939
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
940
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
941
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* b00002 written like a watchdog?! */
950
942
ADDRESS_MAP_END
951
943
 
952
 
static ADDRESS_MAP_START( solfigtr_map, AS_PROGRAM, 16 )
 
944
static ADDRESS_MAP_START( solfigtr_map, AS_PROGRAM, 16, taitof2_state )
953
945
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
954
946
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
955
 
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
947
        AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
956
948
        AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w)        /* NOT VERIFIED */
957
949
        AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA")
958
950
        AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB")
960
952
        AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1")
961
953
        AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2")
962
954
        AM_RANGE(0x340000, 0x340001) AM_WRITE(watchdog_reset16_w)       /* NOT VERIFIED */
963
 
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
964
 
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
955
        AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
956
        AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
965
957
        AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w)
966
958
        AM_RANGE(0x504000, 0x504001) AM_WRITENOP        /* unknown... various values */
967
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
968
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
969
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
970
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
959
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
960
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
961
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
962
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
971
963
ADDRESS_MAP_END
972
964
 
973
 
static ADDRESS_MAP_START( qzquest_map, AS_PROGRAM, 16 )
 
965
static ADDRESS_MAP_START( qzquest_map, AS_PROGRAM, 16, taitof2_state )
974
966
        AM_RANGE(0x000000, 0x17ffff) AM_ROM
975
 
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
976
 
        AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
977
 
        AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
978
 
        AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
 
967
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
968
        AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
969
        AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
970
        AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
979
971
        AM_RANGE(0x500000, 0x50ffff) AM_RAM
980
 
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
981
 
        AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
982
 
        AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
972
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
 
973
        AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
974
        AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
983
975
ADDRESS_MAP_END
984
976
 
985
 
static ADDRESS_MAP_START( pulirula_map, AS_PROGRAM, 16 )
 
977
static ADDRESS_MAP_START( pulirula_map, AS_PROGRAM, 16, taitof2_state )
986
978
        AM_RANGE(0x000000, 0x0bffff) AM_ROM
987
 
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
988
 
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
979
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
980
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
989
981
        AM_RANGE(0x300000, 0x30ffff) AM_RAM
990
 
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)   /* ROZ tilemap */
991
 
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0430grw_ctrl_word_w)
 
982
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE_LEGACY("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)    /* ROZ tilemap */
 
983
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE_LEGACY("tc0430grw", tc0430grw_ctrl_word_w)
992
984
//  AM_RANGE(0x500000, 0x500001) AM_WRITENOP   /* ??? */
993
 
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
994
 
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
995
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
996
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
997
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
998
 
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0xff00)
999
 
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
985
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
 
986
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
 
987
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
988
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
989
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
990
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0xff00)
 
991
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1000
992
ADDRESS_MAP_END
1001
993
 
1002
 
static ADDRESS_MAP_START( metalb_map, AS_PROGRAM, 16 )
 
994
static ADDRESS_MAP_START( metalb_map, AS_PROGRAM, 16, taitof2_state )
1003
995
        AM_RANGE(0x000000, 0x0bffff) AM_ROM
1004
996
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
1005
 
        AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
997
        AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("spriteram")
1006
998
//  AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP   /* zeroed */
1007
 
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)    /* tilemaps */
1008
 
        AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
1009
 
        AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)
1010
 
        AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
1011
 
        AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_wordswap_r, tc0510nio_halfword_wordswap_w)
1012
 
        AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1013
 
        AM_RANGE(0x900002, 0x900003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
999
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)     /* tilemaps */
 
1000
        AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
 
1001
        AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)
 
1002
        AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
1003
        AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_wordswap_r, tc0510nio_halfword_wordswap_w)
 
1004
        AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1005
        AM_RANGE(0x900002, 0x900003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1014
1006
//  AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* ??? */
1015
1007
ADDRESS_MAP_END
1016
1008
 
1017
 
static ADDRESS_MAP_START( qzchikyu_map, AS_PROGRAM, 16 )
 
1009
static ADDRESS_MAP_START( qzchikyu_map, AS_PROGRAM, 16, taitof2_state )
1018
1010
        AM_RANGE(0x000000, 0x17ffff) AM_ROM
1019
 
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1020
 
        AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0x00ff)
1021
 
        AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
1022
 
        AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
 
1011
        AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1012
        AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
 
1013
        AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff)
 
1014
        AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
1023
1015
        AM_RANGE(0x500000, 0x50ffff) AM_RAM
1024
 
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1025
 
        AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1026
 
        AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1016
        AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram")
 
1017
        AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1018
        AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1027
1019
ADDRESS_MAP_END
1028
1020
 
1029
 
static ADDRESS_MAP_START( yesnoj_map, AS_PROGRAM, 16 )
 
1021
static ADDRESS_MAP_START( yesnoj_map, AS_PROGRAM, 16, taitof2_state )
1030
1022
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
1031
1023
        AM_RANGE(0x200000, 0x20ffff) AM_RAM
1032
 
        AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1033
 
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1034
 
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1035
 
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
1036
 
//  AM_RANGE(0x700000, 0x70000b) AM_READ(yesnoj_unknown_r)   /* what's this? */
1037
 
        AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1038
 
        AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1024
        AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
 
1025
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1026
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1027
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
1028
//  AM_RANGE(0x700000, 0x70000b) AM_READ_LEGACY(yesnoj_unknown_r)   /* what's this? */
 
1029
        AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1030
        AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1039
1031
        AM_RANGE(0x900002, 0x900003) AM_WRITENOP   /* lots of similar writes */
1040
1032
        AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("IN0")
1041
1033
        AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("IN1")
1045
1037
        AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP   /* lots of similar writes */
1046
1038
ADDRESS_MAP_END
1047
1039
 
1048
 
static ADDRESS_MAP_START( deadconx_map, AS_PROGRAM, 16 )
 
1040
static ADDRESS_MAP_START( deadconx_map, AS_PROGRAM, 16, taitof2_state )
1049
1041
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
1050
1042
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
1051
 
        AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
 
1043
        AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram")
1052
1044
        AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w)
1053
 
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)    /* tilemaps */
 
1045
        AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_word_r, tc0480scp_word_w)     /* tilemaps */
1054
1046
//    AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP   /* zeroed */
1055
 
        AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
1056
 
        AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* uses 500002 like a watchdog !? */
1057
 
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
1047
        AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE_LEGACY("tc0480scp", tc0480scp_ctrl_word_r, tc0480scp_ctrl_word_w)
 
1048
        AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* uses 500002 like a watchdog !? */
 
1049
        AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
1058
1050
        AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA")
1059
1051
        AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB")
1060
1052
        AM_RANGE(0x700004, 0x700005) AM_READ_PORT("IN2")
1062
1054
        AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN0")
1063
1055
        AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1")
1064
1056
        AM_RANGE(0x800000, 0x800001) AM_WRITE(watchdog_reset16_w)   /* ??? */
1065
 
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1066
 
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1057
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1058
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1067
1059
ADDRESS_MAP_END
1068
1060
 
1069
 
static ADDRESS_MAP_START( dinorex_map, AS_PROGRAM, 16 )
 
1061
static ADDRESS_MAP_START( dinorex_map, AS_PROGRAM, 16, taitof2_state )
1070
1062
        AM_RANGE(0x000000, 0x2fffff) AM_ROM
1071
 
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1072
 
        AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
1073
 
        AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
 
1063
        AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1064
        AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
 
1065
        AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
1074
1066
        AM_RANGE(0x600000, 0x60ffff) AM_RAM
1075
 
        AM_RANGE(0x700000, 0x70001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
1076
 
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1077
 
        AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1078
 
        AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1079
 
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1080
 
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1067
        AM_RANGE(0x700000, 0x70001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
 
1068
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
 
1069
        AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1070
        AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1071
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1072
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1081
1073
        AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP   /* watchdog? */
1082
1074
ADDRESS_MAP_END
1083
1075
 
1084
 
static ADDRESS_MAP_START( qjinsei_map, AS_PROGRAM, 16 )
 
1076
static ADDRESS_MAP_START( qjinsei_map, AS_PROGRAM, 16, taitof2_state )
1085
1077
        AM_RANGE(0x000000, 0x1fffff) AM_ROM
1086
 
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1087
 
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1078
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1079
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1088
1080
        AM_RANGE(0x300000, 0x30ffff) AM_RAM
1089
1081
        AM_RANGE(0x500000, 0x500001) AM_WRITENOP   /* watchdog ? */
1090
 
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
1091
 
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
1092
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1093
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1094
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1095
 
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
1096
 
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1082
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
 
1083
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
1084
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1085
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1086
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
1087
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
 
1088
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1097
1089
ADDRESS_MAP_END
1098
1090
 
1099
 
static ADDRESS_MAP_START( qcrayon_map, AS_PROGRAM, 16 )
 
1091
static ADDRESS_MAP_START( qcrayon_map, AS_PROGRAM, 16, taitof2_state )
1100
1092
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
1101
1093
        AM_RANGE(0x100000, 0x10ffff) AM_RAM
1102
1094
//  AM_RANGE(0x200000, 0x200001) AM_WRITENOP   /* unknown */
1103
1095
        AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("extra", 0)   /* extra data rom */
1104
 
        AM_RANGE(0x500000, 0x500001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1105
 
        AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1106
 
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
1107
 
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
1108
 
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1109
 
        AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1110
 
        AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1111
 
        AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1112
 
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
 
1096
        AM_RANGE(0x500000, 0x500001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1097
        AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1098
        AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
 
1099
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
1100
        AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
 
1101
        AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1102
        AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1103
        AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1104
        AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
1113
1105
ADDRESS_MAP_END
1114
1106
 
1115
 
static ADDRESS_MAP_START( qcrayon2_map, AS_PROGRAM, 16 )
 
1107
static ADDRESS_MAP_START( qcrayon2_map, AS_PROGRAM, 16, taitof2_state )
1116
1108
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
1117
1109
        AM_RANGE(0x200000, 0x20ffff) AM_RAM
1118
 
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE_GENERIC(paletteram)
1119
 
        AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1120
 
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1121
 
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1110
        AM_RANGE(0x300000, 0x301fff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_word_w) AM_SHARE("paletteram")
 
1111
        AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram")
 
1112
        AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1113
        AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1122
1114
        AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("extra", 0)   /* extra data rom */
1123
 
        AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1124
 
        AM_RANGE(0x900000, 0x90001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0x00ff)     /* ?? */
1125
 
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1126
 
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1127
 
        AM_RANGE(0xb00000, 0xb017ff) AM_WRITE(taitof2_sprite_extension_w) AM_BASE_SIZE_MEMBER(taitof2_state, m_sprite_extension, m_spriteext_size)
 
1115
        AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1116
        AM_RANGE(0x900000, 0x90001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0x00ff)      /* ?? */
 
1117
        AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1118
        AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1119
        AM_RANGE(0xb00000, 0xb017ff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext")
1128
1120
ADDRESS_MAP_END
1129
1121
 
1130
 
static ADDRESS_MAP_START( driftout_map, AS_PROGRAM, 16 )
 
1122
static ADDRESS_MAP_START( driftout_map, AS_PROGRAM, 16, taitof2_state )
1131
1123
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
1132
 
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_port_w, 0xff00)
1133
 
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
 
1124
        AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0xff00)
 
1125
        AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0xff00)
1134
1126
        AM_RANGE(0x300000, 0x30ffff) AM_RAM
1135
 
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)   /* ROZ tilemap */
1136
 
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0430grw_ctrl_word_w)
1137
 
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
1138
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1139
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1140
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1141
 
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0xff00)
1142
 
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1127
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE_LEGACY("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)    /* ROZ tilemap */
 
1128
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE_LEGACY("tc0430grw", tc0430grw_ctrl_word_w)
 
1129
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
 
1130
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1131
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1132
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
1133
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0xff00)
 
1134
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1143
1135
        AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1")
1144
1136
        AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2")
1145
1137
ADDRESS_MAP_END
1146
1138
 
1147
1139
/* same as driftout, except for sound address 0x200000 */
1148
 
static ADDRESS_MAP_START( driveout_map, AS_PROGRAM, 16 )
 
1140
static ADDRESS_MAP_START( driveout_map, AS_PROGRAM, 16, taitof2_state )
1149
1141
        AM_RANGE(0x000000, 0x0fffff) AM_ROM
1150
1142
        AM_RANGE(0x200000, 0x200003) AM_READNOP AM_WRITE(driveout_sound_command_w)
1151
1143
        AM_RANGE(0x300000, 0x30ffff) AM_RAM
1152
 
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)   /* ROZ tilemap */
1153
 
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0430grw_ctrl_word_w)
1154
 
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
1155
 
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)   /* tilemaps */
1156
 
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
1157
 
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_BASE_SIZE_MEMBER(taitof2_state, m_spriteram, m_spriteram_size)
1158
 
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_w, 0xff00)
1159
 
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
 
1144
        AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE_LEGACY("tc0430grw", tc0430grw_word_r, tc0430grw_word_w)    /* ROZ tilemap */
 
1145
        AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE_LEGACY("tc0430grw", tc0430grw_ctrl_word_w)
 
1146
        AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
 
1147
        AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_word_r, tc0100scn_word_w)    /* tilemaps */
 
1148
        AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE_LEGACY("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
 
1149
        AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram")
 
1150
        AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8_LEGACY("tc0360pri", tc0360pri_w, 0xff00)
 
1151
        AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE_LEGACY("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
1160
1152
        AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1")
1161
1153
        AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2")
1162
1154
ADDRESS_MAP_END
1164
1156
 
1165
1157
/***************************************************************************/
1166
1158
 
1167
 
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
 
1159
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, taitof2_state )
1168
1160
        AM_RANGE(0x0000, 0x3fff) AM_ROM
1169
1161
        AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
1170
1162
        AM_RANGE(0xc000, 0xdfff) AM_RAM
1171
 
        AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
1172
 
        AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
1173
 
        AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
 
1163
        AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE_LEGACY("ymsnd", ym2610_r, ym2610_w)
 
1164
        AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
 
1165
        AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
1174
1166
        AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
1175
1167
        AM_RANGE(0xea00, 0xea00) AM_READNOP
1176
1168
        AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
1181
1173
 
1182
1174
/* Alt version of Cameltry, YM2203 + M6925 sound */
1183
1175
 
1184
 
static ADDRESS_MAP_START( cameltrya_sound_map, AS_PROGRAM, 8 )
 
1176
static ADDRESS_MAP_START( cameltrya_sound_map, AS_PROGRAM, 8, taitof2_state )
1185
1177
        AM_RANGE(0x0000, 0x7fff) AM_ROM         // I can't see a bank control, but there ARE some bytes past 0x8000
1186
1178
        AM_RANGE(0x8000, 0x8fff) AM_RAM
1187
 
        AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
1188
 
        AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
1189
 
        AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
1190
 
//  AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w)    // probably controlling sample player?
1191
 
        AM_RANGE(0xb000, 0xb001) AM_MIRROR(0x0001) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
 
1179
        AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w)
 
1180
        AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
 
1181
        AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
 
1182
//  AM_RANGE(0xb000, 0xb000) AM_WRITE_LEGACY(unknown_w)    // probably controlling sample player?
 
1183
        AM_RANGE(0xb000, 0xb001) AM_MIRROR(0x0001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
1192
1184
ADDRESS_MAP_END
1193
1185
 
1194
1186
 
1195
 
static ADDRESS_MAP_START( driveout_sound_map, AS_PROGRAM, 8 )
 
1187
static ADDRESS_MAP_START( driveout_sound_map, AS_PROGRAM, 8, taitof2_state )
1196
1188
        AM_RANGE(0x0000, 0x7fff) AM_ROM
1197
1189
        AM_RANGE(0x8000, 0x87ff) AM_RAM
1198
1190
        AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_bank_w)
1199
 
        AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
 
1191
        AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
1200
1192
        AM_RANGE(0xa000, 0xa000) AM_READ(driveout_sound_command_r)
1201
1193
ADDRESS_MAP_END
1202
1194
 
2469
2461
 
2470
2462
        PORT_START("IN0")
2471
2463
        /* Joystick Control */
2472
 
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2473
 
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2474
 
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2475
 
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2476
 
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2477
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2478
 
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2479
 
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )                                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
 
2464
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2465
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2466
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2467
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2468
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2469
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2470
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2471
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )                                  PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
2480
2472
        /* 4 Buttons Control */
2481
 
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2482
 
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2483
 
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2484
 
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2485
 
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )                                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2486
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2487
 
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2488
 
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
 
2473
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2474
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2475
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2476
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2477
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )                                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2478
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2479
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2480
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
2489
2481
 
2490
2482
        PORT_START("IN1")
2491
2483
        /* Joystick Control */
2492
 
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2493
 
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2494
 
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2495
 
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2496
 
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2497
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2498
 
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
2499
 
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )                                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x80)
 
2484
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2485
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2486
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2487
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2488
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2489
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2490
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
 
2491
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )                                  PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
2500
2492
        /* 4 Buttons Control */
2501
 
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2502
 
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2503
 
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2504
 
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2505
 
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )                                  PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2506
 
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2507
 
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
2508
 
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,PORTCOND_EQUALS,0x00)
 
2493
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2494
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2495
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2496
        PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2497
        PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )                                  PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2498
        PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2499
        PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
 
2500
        PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )                                 PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
2509
2501
 
2510
2502
        PORT_START("IN2")
2511
2503
        TAITO_F2_SYSTEM_INPUT
3021
3013
static MACHINE_START( f2 )
3022
3014
{
3023
3015
        MACHINE_START_CALL(common);
3024
 
        memory_configure_bank(machine, "bank2", 0, 8, machine.region("audiocpu")->base() + 0x10000, 0x4000);
 
3016
        machine.root_device().membank("bank2")->configure_entries(0, 8, machine.root_device().memregion("audiocpu")->base() + 0x10000, 0x4000);
3025
3017
}
3026
3018
 
3027
3019
static MACHINE_CONFIG_START( taito_f2, taitof2_state )
5282
5274
        int i;
5283
5275
        UINT8 data;
5284
5276
        UINT32 offset;
5285
 
        UINT8 *gfx = machine.region("gfx2")->base();
 
5277
        UINT8 *gfx = machine.root_device().memregion("gfx2")->base();
5286
5278
 
5287
5279
        offset = 0x100000;
5288
5280
        for (i = 0x180000; i < 0x200000; i++)
5318
5310
static DRIVER_INIT( mjnquest )
5319
5311
{
5320
5312
        taitof2_state *state = machine.driver_data<taitof2_state>();
5321
 
        int i, len = machine.region("gfx2")->bytes();
5322
 
        UINT8 *gfx = machine.region("gfx2")->base();
 
5313
        int i, len = state->memregion("gfx2")->bytes();
 
5314
        UINT8 *gfx = state->memregion("gfx2")->base();
5323
5315
 
5324
5316
        /* the bytes in each longword are in reversed order, put them in the
5325
5317
       order used by the other games. */