632
632
static SAMPLES_START( kageki_init_samples )
634
running_machine *machine = device->machine;
635
tnzs_state *state = machine->driver_data<tnzs_state>();
634
running_machine &machine = device->machine();
635
tnzs_state *state = machine.driver_data<tnzs_state>();
636
636
UINT8 *scan, *src;
641
src = machine->region("samples")->base() + 0x0090;
641
src = machine.region("samples")->base() + 0x0090;
642
642
for (i = 0; i < MAX_SAMPLES; i++)
644
644
start = (src[(i * 2) + 1] * 256) + src[(i * 2)];
657
657
/* 2009-11 FP: should these be saved? */
658
state->sampledata[i] = auto_alloc_array(machine, INT16, size);
659
state->samplesize[i] = size;
658
state->m_sampledata[i] = auto_alloc_array(machine, INT16, size);
659
state->m_samplesize[i] = size;
662
662
if (start < 0x100)
663
663
start = size = 0;
665
665
// signed 8-bit sample to unsigned 8-bit sample convert
666
dest = state->sampledata[i];
666
dest = state->m_sampledata[i];
667
667
scan = &src[start];
668
668
for (n = 0; n < size; n++)
677
677
static READ8_DEVICE_HANDLER( kageki_csport_r )
679
tnzs_state *state = device->machine->driver_data<tnzs_state>();
679
tnzs_state *state = device->machine().driver_data<tnzs_state>();
680
680
int dsw, dsw1, dsw2;
682
dsw1 = input_port_read(device->machine, "DSWA");
683
dsw2 = input_port_read(device->machine, "DSWB");
682
dsw1 = input_port_read(device->machine(), "DSWA");
683
dsw2 = input_port_read(device->machine(), "DSWB");
685
switch (state->kageki_csport_sel)
685
switch (state->m_kageki_csport_sel)
687
687
case 0x00: // DSW2 5,1 / DSW1 5,1
688
688
dsw = (((dsw2 & 0x10) >> 1) | ((dsw2 & 0x01) << 2) | ((dsw1 & 0x10) >> 3) | ((dsw1 & 0x01) >> 0));
728
sample_start_raw(device, 0, state->sampledata[data], state->samplesize[data], 7000, 0);
728
sample_start_raw(device, 0, state->m_sampledata[data], state->m_samplesize[data], 7000, 0);
729
729
sprintf(mess, "VOICE:%02X PLAY", data);
731
731
// popmessage(mess);
746
746
dac_data_w(device, data);
749
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
749
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8 )
750
750
AM_RANGE(0x0000, 0x7fff) AM_ROM
751
751
AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1") /* ROM + RAM */
752
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, objram)
752
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_objram)
753
753
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
754
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, vdcram)
755
AM_RANGE(0xf200, 0xf2ff) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, scrollram) /* scrolling info */
756
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
757
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, bg_flag) /* enable / disable background transparency */
754
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_vdcram)
755
AM_RANGE(0xf200, 0xf2ff) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_scrollram) /* scrolling info */
756
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
757
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_bg_flag) /* enable / disable background transparency */
758
758
AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(tnzs_bankswitch_w)
759
759
/* arknoid2, extrmatn, plumppop and drtoppel have PROMs instead of RAM */
760
760
/* drtoppel writes here anyway! (maybe leftover from tests during development) */
762
762
AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE_GENERIC(paletteram)
765
static ADDRESS_MAP_START( cpu0_type2, ADDRESS_SPACE_PROGRAM, 8 )
765
static ADDRESS_MAP_START( cpu0_type2, AS_PROGRAM, 8 )
766
766
AM_RANGE(0x0000, 0x7fff) AM_ROM
767
767
AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank1") /* ROM + RAM */
768
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, objram)
768
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_objram)
769
769
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
770
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, vdcram)
771
AM_RANGE(0xf200, 0xf2ff) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, scrollram) /* scrolling info */
772
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
773
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, bg_flag) /* enable / disable background transparency */
770
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_vdcram)
771
AM_RANGE(0xf200, 0xf2ff) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_scrollram) /* scrolling info */
772
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
773
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_bg_flag) /* enable / disable background transparency */
774
774
AM_RANGE(0xf600, 0xf600) AM_WRITE(tnzs_bankswitch_w)
775
775
/* kabukiz still writes here but it's not used (it's paletteram in type1 map) */
776
776
AM_RANGE(0xf800, 0xfbff) AM_WRITENOP
779
static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 8 )
779
static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8 )
780
780
AM_RANGE(0x0000, 0x7fff) AM_ROM
781
781
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
782
782
AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
789
789
/* all by insectx. */
792
static ADDRESS_MAP_START( kageki_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
792
static ADDRESS_MAP_START( kageki_sub_map, AS_PROGRAM, 8 )
793
793
AM_RANGE(0x0000, 0x7fff) AM_ROM
794
794
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
795
795
AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
806
806
static WRITE8_HANDLER( tnzsb_sound_command_w )
808
tnzs_state *state = space->machine->driver_data<tnzs_state>();
808
tnzs_state *state = space->machine().driver_data<tnzs_state>();
809
809
soundlatch_w(space, offset, data);
810
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
810
device_set_input_line_and_vector(state->m_audiocpu, 0, HOLD_LINE, 0xff);
813
static ADDRESS_MAP_START( tnzsb_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
813
static ADDRESS_MAP_START( tnzsb_cpu1_map, AS_PROGRAM, 8 )
814
814
AM_RANGE(0x0000, 0x7fff) AM_ROM
815
815
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
816
816
AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
826
826
AM_RANGE(0xf000, 0xf3ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE_GENERIC(paletteram)
829
static ADDRESS_MAP_START( kabukiz_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
829
static ADDRESS_MAP_START( kabukiz_cpu1_map, AS_PROGRAM, 8 )
830
830
AM_RANGE(0x0000, 0x7fff) AM_ROM
831
831
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
832
832
AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
841
841
AM_RANGE(0xf800, 0xfbff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE_GENERIC(paletteram)
844
static ADDRESS_MAP_START( tnzsb_cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
844
static ADDRESS_MAP_START( tnzsb_cpu2_map, AS_PROGRAM, 8 )
845
845
AM_RANGE(0x0000, 0x7fff) AM_ROM
846
846
AM_RANGE(0xc000, 0xdfff) AM_RAM
849
static ADDRESS_MAP_START( kabukiz_cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
849
static ADDRESS_MAP_START( kabukiz_cpu2_map, AS_PROGRAM, 8 )
850
850
AM_RANGE(0x0000, 0x7fff) AM_ROM
851
851
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3")
852
852
AM_RANGE(0xe000, 0xffff) AM_RAM
855
static ADDRESS_MAP_START( tnzsb_io_map, ADDRESS_SPACE_IO, 8 )
855
static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8 )
856
856
ADDRESS_MAP_GLOBAL_MASK(0xff)
857
857
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w)
858
858
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
861
static ADDRESS_MAP_START( i8742_io_map, ADDRESS_SPACE_IO, 8 )
861
static ADDRESS_MAP_START( i8742_io_map, AS_IO, 8 )
862
862
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(tnzs_port1_r)
863
863
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(tnzs_port2_r, tnzs_port2_w)
864
864
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ_PORT("COIN1")
873
space->machine->generic.paletteram.u8[offset] = data;
873
space->machine().generic.paletteram.u8[offset] = data;
875
875
offset = offset >> 1;
877
paldata = (space->machine->generic.paletteram.u8[offset * 2] << 8) | space->machine->generic.paletteram.u8[(offset * 2 + 1)];
877
paldata = (space->machine().generic.paletteram.u8[offset * 2] << 8) | space->machine().generic.paletteram.u8[(offset * 2 + 1)];
879
879
g = (paldata >> 12) & 0x000f;
880
880
r = (paldata >> 4) & 0x000f;
881
881
b = (paldata >> 8) & 0x000f;
882
882
// the other bits seem to be used, and the colours are wrong..
884
palette_set_color_rgb(space->machine, offset, r << 4, g << 4, b << 4);
884
palette_set_color_rgb(space->machine(), offset, r << 4, g << 4, b << 4);
887
static ADDRESS_MAP_START( jpopnics_main_map, ADDRESS_SPACE_PROGRAM, 8 )
887
static ADDRESS_MAP_START( jpopnics_main_map, AS_PROGRAM, 8 )
888
888
AM_RANGE(0x0000, 0x7fff) AM_ROM
889
889
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
890
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, objram)
890
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_objram)
891
891
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") /* WORK RAM (shared by the 2 z80's) */
892
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, vdcram) /* VDC RAM */
893
AM_RANGE(0xf200, 0xf2ff) AM_RAM AM_BASE_MEMBER(tnzs_state, scrollram) /* scrolling info */
894
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
895
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, bg_flag) /* enable / disable background transparency */
892
AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_vdcram) /* VDC RAM */
893
AM_RANGE(0xf200, 0xf2ff) AM_RAM AM_BASE_MEMBER(tnzs_state, m_scrollram) /* scrolling info */
894
AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */
895
AM_RANGE(0xf400, 0xf400) AM_WRITEONLY AM_BASE_MEMBER(tnzs_state, m_bg_flag) /* enable / disable background transparency */
896
896
AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(tnzs_bankswitch_w)
897
897
AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(jpopnics_palette_w) AM_BASE_GENERIC(paletteram)
900
900
static WRITE8_HANDLER( jpopnics_subbankswitch_w )
902
902
/* bits 0-1 select ROM bank */
903
memory_set_bank(space->machine, "bank2", data & 0x03);
903
memory_set_bank(space->machine(), "bank2", data & 0x03);
906
static ADDRESS_MAP_START( jpopnics_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
906
static ADDRESS_MAP_START( jpopnics_sub_map, AS_PROGRAM, 8 )
907
907
AM_RANGE(0x0000, 0x7fff) AM_ROM
908
908
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2")
1561
1561
/* handler called by the 2203 emulator when the internal timers cause an IRQ */
1562
1562
static void irqhandler( device_t *device, int irq )
1564
tnzs_state *state = device->machine->driver_data<tnzs_state>();
1565
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
1564
tnzs_state *state = device->machine().driver_data<tnzs_state>();
1565
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
1568
1568
static const ym2203_interface kageki_ym2203_interface =
1630
1630
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1631
1631
MCFG_SCREEN_SIZE(32*8, 32*8)
1632
1632
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
1633
MCFG_SCREEN_UPDATE(tnzs)
1634
MCFG_SCREEN_EOF(tnzs)
1634
1636
MCFG_GFXDECODE(tnzs)
1635
1637
MCFG_PALETTE_LENGTH(512)
1637
1639
MCFG_PALETTE_INIT(arknoid2)
1638
MCFG_VIDEO_UPDATE(tnzs)
1639
MCFG_VIDEO_EOF(tnzs)
1641
1641
/* sound hardware */
1642
1642
MCFG_SPEAKER_STANDARD_MONO("mono")
1670
1670
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1671
1671
MCFG_SCREEN_SIZE(32*8, 32*8)
1672
1672
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
1673
MCFG_SCREEN_UPDATE(tnzs)
1674
MCFG_SCREEN_EOF(tnzs)
1674
1676
MCFG_GFXDECODE(tnzs)
1675
1677
MCFG_PALETTE_LENGTH(512)
1677
1679
MCFG_PALETTE_INIT(arknoid2)
1678
MCFG_VIDEO_UPDATE(tnzs)
1679
MCFG_VIDEO_EOF(tnzs)
1681
1681
/* sound hardware */
1682
1682
MCFG_SPEAKER_STANDARD_MONO("mono")
1904
1901
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1905
1902
MCFG_SCREEN_SIZE(32*8, 32*8)
1906
1903
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
1904
MCFG_SCREEN_UPDATE(tnzs)
1905
MCFG_SCREEN_EOF(tnzs)
1908
1907
MCFG_GFXDECODE(tnzs)
1909
1908
MCFG_PALETTE_LENGTH(1024)
1911
MCFG_VIDEO_UPDATE(tnzs)
1912
MCFG_VIDEO_EOF(tnzs)
1914
1910
/* sound hardware */
1915
1911
MCFG_SPEAKER_STANDARD_MONO("mono")