340
static WRITE8_HANDLER( irq_adr_w )
340
WRITE8_MEMBER(taitol_state::irq_adr_w)
342
taitol_state *state = space->machine().driver_data<taitol_state>();
343
342
//logerror("irq_adr_table[%d] = %02x\n", offset, data);
344
state->m_irq_adr_table[offset] = data;
347
static READ8_HANDLER( irq_adr_r )
349
taitol_state *state = space->machine().driver_data<taitol_state>();
350
return state->m_irq_adr_table[offset];
353
static WRITE8_HANDLER( irq_enable_w )
355
taitol_state *state = space->machine().driver_data<taitol_state>();
343
m_irq_adr_table[offset] = data;
346
READ8_MEMBER(taitol_state::irq_adr_r)
348
return m_irq_adr_table[offset];
351
WRITE8_MEMBER(taitol_state::irq_enable_w)
356
353
//logerror("irq_enable = %02x\n",data);
357
state->m_irq_enable = data;
359
356
// fix Plotting test mode
360
if ((state->m_irq_enable & (1 << state->m_last_irq_level)) == 0)
361
device_set_input_line(state->m_maincpu, 0, CLEAR_LINE);
364
static READ8_HANDLER( irq_enable_r )
366
taitol_state *state = space->machine().driver_data<taitol_state>();
367
return state->m_irq_enable;
371
static WRITE8_HANDLER( rombankswitch_w )
373
taitol_state *state = space->machine().driver_data<taitol_state>();
375
if (state->m_cur_rombank != data)
357
if ((m_irq_enable & (1 << m_last_irq_level)) == 0)
358
device_set_input_line(m_maincpu, 0, CLEAR_LINE);
361
READ8_MEMBER(taitol_state::irq_enable_r)
367
WRITE8_MEMBER(taitol_state::rombankswitch_w)
370
if (m_cur_rombank != data)
377
if (data > state->m_high)
379
state->m_high = data;
380
logerror("New rom size : %x\n", (state->m_high + 1) * 0x2000);
375
logerror("New rom size : %x\n", (m_high + 1) * 0x2000);
383
//logerror("robs %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space->device()));
384
state->m_cur_rombank = data;
385
memory_set_bankptr(space->machine(), "bank1", space->machine().region("maincpu")->base() + 0x10000 + 0x2000 * state->m_cur_rombank);
378
//logerror("robs %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space.device()));
379
m_cur_rombank = data;
380
membank("bank1")->set_base(machine().root_device().memregion("maincpu")->base() + 0x10000 + 0x2000 * m_cur_rombank);
389
static WRITE8_HANDLER( rombank2switch_w )
384
WRITE8_MEMBER(taitol_state::rombank2switch_w)
391
taitol_state *state = space->machine().driver_data<taitol_state>();
395
if (state->m_cur_rombank2 != data)
389
if (m_cur_rombank2 != data)
397
if (data > state->m_high2)
399
state->m_high2 = data;
400
logerror("New rom2 size : %x\n", (state->m_high2 + 1) * 0x4000);
394
logerror("New rom2 size : %x\n", (m_high2 + 1) * 0x4000);
403
//logerror("robs2 %02x (%04x)\n", data, cpu_get_pc(&space->device()));
397
//logerror("robs2 %02x (%04x)\n", data, cpu_get_pc(&space.device()));
405
state->m_cur_rombank2 = data;
406
memory_set_bankptr(space->machine(), "bank6", space->machine().region("slave")->base() + 0x10000 + 0x4000 * state->m_cur_rombank2);
399
m_cur_rombank2 = data;
400
membank("bank6")->set_base(machine().root_device().memregion("slave")->base() + 0x10000 + 0x4000 * m_cur_rombank2);
410
static READ8_HANDLER( rombankswitch_r )
412
taitol_state *state = space->machine().driver_data<taitol_state>();
413
return state->m_cur_rombank;
416
static READ8_HANDLER( rombank2switch_r )
418
taitol_state *state = space->machine().driver_data<taitol_state>();
419
return state->m_cur_rombank2;
422
static WRITE8_HANDLER( rambankswitch_w )
424
taitol_state *state = space->machine().driver_data<taitol_state>();
426
if (state->m_cur_rambank[offset] != data)
404
READ8_MEMBER(taitol_state::rombankswitch_r)
406
return m_cur_rombank;
409
READ8_MEMBER(taitol_state::rombank2switch_r)
411
return m_cur_rombank2;
414
WRITE8_MEMBER(taitol_state::rambankswitch_w)
417
if (m_cur_rambank[offset] != data)
428
state->m_cur_rambank[offset] = data;
429
//logerror("rabs %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space->device()));
419
m_cur_rambank[offset] = data;
420
//logerror("rabs %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space.device()));
430
421
if (data >= 0x14 && data <= 0x1f)
433
state->m_current_notifier[offset] = rambank_modify_notifiers[data].notifier;
434
state->m_current_base[offset] = state->m_rambanks + rambank_modify_notifiers[data].offset;
424
m_current_notifier[offset] = rambank_modify_notifiers[data].notifier;
425
m_current_base[offset] = m_rambanks + rambank_modify_notifiers[data].offset;
436
427
else if (data == 0x80)
438
state->m_current_notifier[offset] = palette_notifier;
439
state->m_current_base[offset] = state->m_palette_ram;
429
m_current_notifier[offset] = palette_notifier;
430
m_current_base[offset] = m_palette_ram;
443
logerror("unknown rambankswitch %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space->device()));
444
state->m_current_notifier[offset] = 0;
445
state->m_current_base[offset] = state->m_empty_ram;
434
logerror("unknown rambankswitch %d, %02x (%04x)\n", offset, data, cpu_get_pc(&space.device()));
435
m_current_notifier[offset] = 0;
436
m_current_base[offset] = m_empty_ram;
447
memory_set_bankptr(space->machine(), bankname[offset], state->m_current_base[offset]);
438
membank(bankname[offset])->set_base(m_current_base[offset]);
451
static READ8_HANDLER( rambankswitch_r )
442
READ8_MEMBER(taitol_state::rambankswitch_r)
453
taitol_state *state = space->machine().driver_data<taitol_state>();
454
return state->m_cur_rambank[offset];
444
return m_cur_rambank[offset];
457
447
static void bank_w(address_space *space, offs_t offset, UINT8 data, int banknum )
469
static WRITE8_HANDLER( bank0_w )
471
bank_w(space, offset, data, 0);
474
static WRITE8_HANDLER( bank1_w )
476
bank_w(space, offset, data, 1);
479
static WRITE8_HANDLER( bank2_w )
481
bank_w(space, offset, data, 2);
484
static WRITE8_HANDLER( bank3_w )
486
bank_w(space, offset, data, 3);
489
static WRITE8_HANDLER( control2_w )
491
coin_lockout_w(space->machine(), 0, ~data & 0x01);
492
coin_lockout_w(space->machine(), 1, ~data & 0x02);
493
coin_counter_w(space->machine(), 0, data & 0x04);
494
coin_counter_w(space->machine(), 1, data & 0x08);
459
WRITE8_MEMBER(taitol_state::bank0_w)
461
bank_w(&space, offset, data, 0);
464
WRITE8_MEMBER(taitol_state::bank1_w)
466
bank_w(&space, offset, data, 1);
469
WRITE8_MEMBER(taitol_state::bank2_w)
471
bank_w(&space, offset, data, 2);
474
WRITE8_MEMBER(taitol_state::bank3_w)
476
bank_w(&space, offset, data, 3);
479
WRITE8_MEMBER(taitol_state::control2_w)
481
coin_lockout_w(machine(), 0, ~data & 0x01);
482
coin_lockout_w(machine(), 1, ~data & 0x02);
483
coin_counter_w(machine(), 0, data & 0x04);
484
coin_counter_w(machine(), 1, data & 0x08);
497
487
static READ8_DEVICE_HANDLER( portA_r )
499
489
taitol_state *state = device->machine().driver_data<taitol_state>();
500
return input_port_read(device->machine(), (state->m_extport == 0) ? state->m_porte0_tag : state->m_porte1_tag);
490
return state->ioport((state->m_extport == 0) ? state->m_porte0_tag : state->m_porte1_tag)->read();
503
493
static READ8_DEVICE_HANDLER( portB_r )
505
495
taitol_state *state = device->machine().driver_data<taitol_state>();
506
return input_port_read(device->machine(), (state->m_extport == 0) ? state->m_portf0_tag : state->m_portf1_tag);
496
return state->ioport((state->m_extport == 0) ? state->m_portf0_tag : state->m_portf1_tag)->read();
509
499
static READ8_DEVICE_HANDLER( extport_select_and_ym2203_r )
513
503
return ym2203_r(device, offset & 1);
516
static WRITE8_HANDLER( mcu_data_w )
506
WRITE8_MEMBER(taitol_state::mcu_data_w)
518
taitol_state *state = space->machine().driver_data<taitol_state>();
519
state->m_last_data = data;
520
state->m_last_data_adr = cpu_get_pc(&space->device());
521
// logerror("mcu write %02x (%04x)\n", data, cpu_get_pc(&space->device()));
509
m_last_data_adr = cpu_get_pc(&space.device());
510
// logerror("mcu write %02x (%04x)\n", data, cpu_get_pc(&space.device()));
525
state->m_mcu_pos = 0;
526
state->m_mcu_reply_len = ARRAY_LENGTH(puzznic_mcu_reply);
515
m_mcu_reply_len = ARRAY_LENGTH(puzznic_mcu_reply);
531
static WRITE8_HANDLER( mcu_control_w )
520
WRITE8_MEMBER(taitol_state::mcu_control_w)
533
// logerror("mcu control %02x (%04x)\n", data, cpu_get_pc(&space->device()));
522
// logerror("mcu control %02x (%04x)\n", data, cpu_get_pc(&space.device()));
536
static READ8_HANDLER( mcu_data_r )
525
READ8_MEMBER(taitol_state::mcu_data_r)
538
taitol_state *state = space->machine().driver_data<taitol_state>();
540
// logerror("mcu read (%04x) [%02x, %04x]\n", cpu_get_pc(&space->device()), last_data, last_data_adr);
541
if (state->m_mcu_pos == state->m_mcu_reply_len)
528
// logerror("mcu read (%04x) [%02x, %04x]\n", cpu_get_pc(&space.device()), last_data, last_data_adr);
529
if (m_mcu_pos == m_mcu_reply_len)
544
return state->m_mcu_reply[state->m_mcu_pos++];
532
return m_mcu_reply[m_mcu_pos++];
547
static READ8_HANDLER( mcu_control_r )
535
READ8_MEMBER(taitol_state::mcu_control_r)
549
// logerror("mcu control read (%04x)\n", cpu_get_pc(&space->device()));
537
// logerror("mcu control read (%04x)\n", cpu_get_pc(&space.device()));
554
static WRITE8_HANDLER( sound_w )
542
WRITE8_MEMBER(taitol_state::sound_w)
556
logerror("Sound_w %02x (%04x)\n", data, cpu_get_pc(&space->device()));
544
logerror("Sound_w %02x (%04x)\n", data, cpu_get_pc(&space.device()));
560
static READ8_HANDLER( mux_r )
548
READ8_MEMBER(taitol_state::mux_r)
562
taitol_state *state = space->machine().driver_data<taitol_state>();
564
switch (state->m_mux_ctrl)
567
return input_port_read(space->machine(), "DSWA");
554
return ioport("DSWA")->read();
569
return input_port_read(space->machine(), "DSWB");
556
return ioport("DSWB")->read();
571
return input_port_read(space->machine(), "IN0");
558
return ioport("IN0")->read();
573
return input_port_read(space->machine(), "IN1");
560
return ioport("IN1")->read();
575
return input_port_read(space->machine(), "IN2");
562
return ioport("IN2")->read();
577
logerror("Mux read from unknown port %d (%04x)\n", state->m_mux_ctrl, cpu_get_pc(&space->device()));
564
logerror("Mux read from unknown port %d (%04x)\n", m_mux_ctrl, cpu_get_pc(&space.device()));
582
static WRITE8_HANDLER( mux_w )
569
WRITE8_MEMBER(taitol_state::mux_w)
584
taitol_state *state = space->machine().driver_data<taitol_state>();
586
switch (state->m_mux_ctrl)
589
575
control2_w(space, 0, data);
592
logerror("Mux write to unknown port %d, %02x (%04x)\n", state->m_mux_ctrl, data, cpu_get_pc(&space->device()));
578
logerror("Mux write to unknown port %d, %02x (%04x)\n", m_mux_ctrl, data, cpu_get_pc(&space.device()));
596
static WRITE8_HANDLER( mux_ctrl_w )
582
WRITE8_MEMBER(taitol_state::mux_ctrl_w)
598
taitol_state *state = space->machine().driver_data<taitol_state>();
599
state->m_mux_ctrl = data;
649
632
sound->set_output_gain(0, data / 255.0);
652
static READ8_HANDLER( horshoes_tracky_reset_r )
654
taitol_state *state = space->machine().driver_data<taitol_state>();
656
/* reset the trackball counter */
657
state->m_tracky = input_port_read(space->machine(), "AN0");
661
static READ8_HANDLER( horshoes_trackx_reset_r )
663
taitol_state *state = space->machine().driver_data<taitol_state>();
665
/* reset the trackball counter */
666
state->m_trackx = input_port_read(space->machine(), "AN1");
670
static READ8_HANDLER( horshoes_tracky_lo_r )
672
taitol_state *state = space->machine().driver_data<taitol_state>();
673
return (input_port_read(space->machine(), "AN0") - state->m_tracky) & 0xff;
676
static READ8_HANDLER( horshoes_tracky_hi_r )
678
taitol_state *state = space->machine().driver_data<taitol_state>();
679
return (input_port_read(space->machine(), "AN0") - state->m_tracky) >> 8;
682
static READ8_HANDLER( horshoes_trackx_lo_r )
684
taitol_state *state = space->machine().driver_data<taitol_state>();
685
return (input_port_read(space->machine(), "AN1") - state->m_trackx) & 0xff;
688
static READ8_HANDLER( horshoes_trackx_hi_r )
690
taitol_state *state = space->machine().driver_data<taitol_state>();
691
return (input_port_read(space->machine(), "AN1") - state->m_trackx) >> 8;
635
READ8_MEMBER(taitol_state::horshoes_tracky_reset_r)
638
/* reset the trackball counter */
639
m_tracky = ioport("AN0")->read();
643
READ8_MEMBER(taitol_state::horshoes_trackx_reset_r)
646
/* reset the trackball counter */
647
m_trackx = ioport("AN1")->read();
651
READ8_MEMBER(taitol_state::horshoes_tracky_lo_r)
653
return (ioport("AN0")->read() - m_tracky) & 0xff;
656
READ8_MEMBER(taitol_state::horshoes_tracky_hi_r)
658
return (ioport("AN0")->read() - m_tracky) >> 8;
661
READ8_MEMBER(taitol_state::horshoes_trackx_lo_r)
663
return (ioport("AN1")->read() - m_trackx) & 0xff;
666
READ8_MEMBER(taitol_state::horshoes_trackx_hi_r)
668
return (ioport("AN1")->read() - m_trackx) >> 8;
707
684
AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w)
709
686
#define COMMON_SINGLE_MAP \
710
AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", extport_select_and_ym2203_r, ym2203_w) \
687
AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE_LEGACY("ymsnd", extport_select_and_ym2203_r, ym2203_w) \
711
688
AM_RANGE(0x8000, 0x9fff) AM_RAM
715
static ADDRESS_MAP_START( fhawk_map, AS_PROGRAM, 8 )
692
static ADDRESS_MAP_START( fhawk_map, AS_PROGRAM, 8, taitol_state )
717
694
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
718
695
AM_RANGE(0xa000, 0xbfff) AM_RAM
721
static ADDRESS_MAP_START( fhawk_2_map, AS_PROGRAM, 8 )
698
static ADDRESS_MAP_START( fhawk_2_map, AS_PROGRAM, 8, taitol_state )
722
699
AM_RANGE(0x0000, 0x7fff) AM_ROM
723
700
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank6")
724
701
AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
725
AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_port_w)
726
AM_RANGE(0xc801, 0xc801) AM_DEVREADWRITE("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
702
AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_port_w)
703
AM_RANGE(0xc801, 0xc801) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
727
704
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA") AM_WRITENOP // Direct copy of input port 0
728
705
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("DSWB")
729
706
AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN0")
734
711
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
737
static ADDRESS_MAP_START( fhawk_3_map, AS_PROGRAM, 8 )
714
static ADDRESS_MAP_START( fhawk_3_map, AS_PROGRAM, 8, taitol_state )
738
715
AM_RANGE(0x0000, 0x3fff) AM_ROM
739
716
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
740
717
AM_RANGE(0x8000, 0x9fff) AM_RAM
741
AM_RANGE(0xe000, 0xe000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
742
AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
743
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
718
AM_RANGE(0xe000, 0xe000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
719
AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
720
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w)
747
static ADDRESS_MAP_START( raimais_map, AS_PROGRAM, 8 )
724
static ADDRESS_MAP_START( raimais_map, AS_PROGRAM, 8, taitol_state )
749
726
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
750
727
AM_RANGE(0x8800, 0x8800) AM_READWRITE(mux_r, mux_w)
751
728
AM_RANGE(0x8801, 0x8801) AM_WRITE(mux_ctrl_w) AM_READNOP // Watchdog or interrupt ack (value ignored)
752
AM_RANGE(0x8c00, 0x8c00) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_port_w)
753
AM_RANGE(0x8c01, 0x8c01) AM_DEVREADWRITE("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
729
AM_RANGE(0x8c00, 0x8c00) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_port_w)
730
AM_RANGE(0x8c01, 0x8c01) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
754
731
AM_RANGE(0xa000, 0xbfff) AM_RAM
757
static ADDRESS_MAP_START( raimais_2_map, AS_PROGRAM, 8 )
734
static ADDRESS_MAP_START( raimais_2_map, AS_PROGRAM, 8, taitol_state )
758
735
AM_RANGE(0x0000, 0xbfff) AM_ROM
759
736
AM_RANGE(0xc000, 0xdfff) AM_RAM
760
737
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
764
static WRITE8_HANDLER( sound_bankswitch_w )
741
WRITE8_MEMBER(taitol_state::sound_bankswitch_w)
766
UINT8 *RAM = space->machine().region("audiocpu")->base();
743
UINT8 *RAM = memregion("audiocpu")->base();
767
744
int banknum = (data - 1) & 3;
769
memory_set_bankptr (space->machine(), "bank7", &RAM [0x10000 + (banknum * 0x4000)]);
746
membank ("bank7")->set_base (&RAM [0x10000 + (banknum * 0x4000)]);
772
static ADDRESS_MAP_START( raimais_3_map, AS_PROGRAM, 8 )
749
static ADDRESS_MAP_START( raimais_3_map, AS_PROGRAM, 8, taitol_state )
773
750
AM_RANGE(0x0000, 0x3fff) AM_ROM
774
751
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
775
752
AM_RANGE(0xc000, 0xdfff) AM_RAM
776
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
777
AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
778
AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
753
AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE_LEGACY("ymsnd", ym2610_r, ym2610_w)
754
AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
755
AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
779
756
AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
780
757
AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */
781
758
AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
801
778
AM_RANGE(0xe004, 0xe004) AM_WRITE(control2_w)
802
779
AM_RANGE(0xe007, 0xe007) AM_READ_PORT("IN2")
803
780
AM_RANGE(0xe008, 0xe00f) AM_READNOP
804
AM_RANGE(0xe800, 0xe800) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_port_w)
805
AM_RANGE(0xe801, 0xe801) AM_DEVREADWRITE("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
781
AM_RANGE(0xe800, 0xe800) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_port_w)
782
AM_RANGE(0xe801, 0xe801) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
806
783
AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w)
809
static ADDRESS_MAP_START( champwr_3_map, AS_PROGRAM, 8 )
786
static ADDRESS_MAP_START( champwr_3_map, AS_PROGRAM, 8, taitol_state )
810
787
AM_RANGE(0x0000, 0x3fff) AM_ROM
811
788
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
812
789
AM_RANGE(0x8000, 0x8fff) AM_RAM
813
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
814
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
815
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
790
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w)
791
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
792
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
816
793
AM_RANGE(0xb000, 0xb000) AM_WRITE(champwr_msm5205_hi_w)
817
794
AM_RANGE(0xc000, 0xc000) AM_WRITE(champwr_msm5205_lo_w)
818
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("msm", champwr_msm5205_start_w)
819
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", champwr_msm5205_stop_w)
795
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("msm", champwr_msm5205_start_w)
796
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE_LEGACY("msm", champwr_msm5205_stop_w)
824
static ADDRESS_MAP_START( kurikint_map, AS_PROGRAM, 8 )
801
static ADDRESS_MAP_START( kurikint_map, AS_PROGRAM, 8, taitol_state )
826
803
AM_RANGE(0x8000, 0x9fff) AM_RAM
827
804
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
1555
1532
PORT_DIPSETTING( 0x08, "Mode A" )
1556
1533
PORT_DIPSETTING( 0x00, "Mode B" )
1557
1534
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
1558
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1559
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1560
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1561
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1562
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1563
PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1564
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1565
PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1535
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1536
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1537
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1538
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1539
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1540
PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1541
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1542
PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1566
1543
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
1567
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1568
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1569
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1570
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x08)
1571
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1572
PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1573
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1574
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWA", 0x08, PORTCOND_EQUALS, 0x00)
1544
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1545
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1546
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1547
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x08)
1548
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1549
PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1550
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1551
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWA", 0x08, EQUALS, 0x00)
1576
1553
PORT_START("DSWB")
1577
1554
TAITO_DIFFICULTY_LOC(SW2) /* Difficulty controls the number of hits requiered to destroy enemies */