diff options
Diffstat (limited to 'src/mame/drivers/ddenlovr.c')
-rw-r--r-- | src/mame/drivers/ddenlovr.c | 318 |
1 files changed, 145 insertions, 173 deletions
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c index c1e3993bd95..4b00b7be614 100644 --- a/src/mame/drivers/ddenlovr.c +++ b/src/mame/drivers/ddenlovr.c @@ -1416,35 +1416,35 @@ static WRITE16_HANDLER( ddenlovr16_transparency_mask_w ) } -static WRITE8_HANDLER( quizchq_oki_bank_w ) +static WRITE8_DEVICE_HANDLER( quizchq_oki_bank_w ) { - okim6295_set_bank_base(0, (data & 1) * 0x40000); + okim6295_set_bank_base(device, (data & 1) * 0x40000); } -static WRITE16_HANDLER( ddenlovr_oki_bank_w ) +static WRITE16_DEVICE_HANDLER( ddenlovr_oki_bank_w ) { if (ACCESSING_BITS_0_7) - okim6295_set_bank_base(0, (data & 7) * 0x40000); + okim6295_set_bank_base(device, (data & 7) * 0x40000); } static int okibank; -static WRITE16_HANDLER( quiz365_oki_bank1_w ) +static WRITE16_DEVICE_HANDLER( quiz365_oki_bank1_w ) { if (ACCESSING_BITS_0_7) { okibank = (okibank & 2) | (data & 1); - okim6295_set_bank_base(0, okibank * 0x40000); + okim6295_set_bank_base(device, okibank * 0x40000); } } -static WRITE16_HANDLER( quiz365_oki_bank2_w ) +static WRITE16_DEVICE_HANDLER( quiz365_oki_bank2_w ) { if (ACCESSING_BITS_0_7) { okibank = (okibank & 1) | ((data & 1) << 1); - okim6295_set_bank_base(0, okibank * 0x40000); + okim6295_set_bank_base(device, okibank * 0x40000); } } @@ -1463,7 +1463,7 @@ static READ16_HANDLER( unk16_r ) static UINT8 ddenlovr_select, ddenlovr_select2; -static WRITE8_HANDLER( ddenlovr_select_w ) +static WRITE8_DEVICE_HANDLER( ddenlovr_select_w ) { ddenlovr_select = data; } @@ -1499,13 +1499,13 @@ static READ8_HANDLER( rongrong_input2_r ) } -static READ8_HANDLER( quiz365_input_r ) +static READ8_DEVICE_HANDLER( quiz365_input_r ) { - if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW1"); - if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW2"); - if (!(ddenlovr_select & 0x04)) return input_port_read(space->machine, "DSW3"); - if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(space->machine); - if (!(ddenlovr_select & 0x10)) return 0xff;//mame_rand(space->machine); + if (!(ddenlovr_select & 0x01)) return input_port_read(device->machine, "DSW1"); + if (!(ddenlovr_select & 0x02)) return input_port_read(device->machine, "DSW2"); + if (!(ddenlovr_select & 0x04)) return input_port_read(device->machine, "DSW3"); + if (!(ddenlovr_select & 0x08)) return 0xff;//mame_rand(device->machine); + if (!(ddenlovr_select & 0x10)) return 0xff;//mame_rand(device->machine); return 0xff; } @@ -1581,9 +1581,9 @@ static ADDRESS_MAP_START( quiz365_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r) // AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r) // Video Chip - AM_RANGE(0x3002c0, 0x3002c1) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0x300340, 0x30035f) AM_DEVREAD8(MSM6242, "rtc", msm6242_r, 0x00ff) // 6242RTC - AM_RANGE(0x300384, 0x300385) AM_READ(ay8910_read_port_0_lsb_r) + AM_RANGE(0x300384, 0x300385) AM_DEVREAD8(SOUND, "ay", ay8910_r, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1602,15 +1602,13 @@ static ADDRESS_MAP_START( quiz365_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x30026a, 0x30026b) AM_WRITE(ddenlovr16_priority_w) AM_RANGE(0x30026c, 0x30026d) AM_WRITE(ddenlovr16_layer_enable_w) AM_RANGE(0x300280, 0x300283) AM_WRITE(ddenlovr_blitter_w) - AM_RANGE(0x300300, 0x300301) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0x300302, 0x300303) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0x300340, 0x30035f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge - AM_RANGE(0x300380, 0x300381) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0x300382, 0x300383) AM_WRITE(ay8910_write_port_0_lsb_w) - AM_RANGE(0x3002c0, 0x3002c1) AM_WRITE(okim6295_data_0_lsb_w) - AM_RANGE(0x3003c2, 0x3003c3) AM_WRITE(quiz365_oki_bank1_w) - AM_RANGE(0x3003cc, 0x3003cd) AM_WRITE(quiz365_oki_bank2_w) + AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) + AM_RANGE(0x3002c0, 0x3002c1) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) + AM_RANGE(0x3003c2, 0x3003c3) AM_DEVWRITE(SOUND, "oki", quiz365_oki_bank1_w) + AM_RANGE(0x3003cc, 0x3003cd) AM_DEVWRITE(SOUND, "oki", quiz365_oki_bank2_w) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1650,7 +1648,7 @@ static ADDRESS_MAP_START( ddenlvrj_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") AM_RANGE(0x300186, 0x300187) AM_READ(ddenlvrj_dsw_r) // DSW - AM_RANGE(0x300240, 0x300241) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0x300240, 0x300241) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1666,16 +1664,14 @@ static ADDRESS_MAP_START( ddenlvrj_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w) AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w) AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w) - AM_RANGE(0x3000c0, 0x3000c1) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0x3000c2, 0x3000c3) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0x300100, 0x30011f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC - AM_RANGE(0x300140, 0x300141) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0x300142, 0x300143) AM_WRITE(ay8910_write_port_0_lsb_w) + AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) AM_RANGE(0x300188, 0x300189) AM_WRITE(ddenlvrj_coincounter_w) // Coin Counters AM_RANGE(0x30018a, 0x30018b) AM_WRITE(SMH_RAM) AM_BASE( &ddenlvrj_dsw_sel ) // DSW select - AM_RANGE(0x30018c, 0x30018d) AM_WRITE(ddenlovr_oki_bank_w) + AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE(SOUND, "oki", ddenlovr_oki_bank_w) AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge - AM_RANGE(0x300240, 0x300241) AM_WRITE(okim6295_data_0_lsb_w) + AM_RANGE(0x300240, 0x300241) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1701,7 +1697,7 @@ static READ16_HANDLER( ddenlvrk_protection2_r ) static WRITE16_HANDLER( ddenlvrk_protection2_w ) { COMBINE_DATA( ddenlvrk_protection2 ); - okim6295_set_bank_base(0, ((*ddenlvrk_protection2)&0x7) * 0x40000); + okim6295_set_bank_base(devtag_get_device(space->machine, SOUND, "oki"), ((*ddenlvrk_protection2)&0x7) * 0x40000); } static ADDRESS_MAP_START( ddenlvrk_readmem, ADDRESS_SPACE_PROGRAM, 16 ) @@ -1713,8 +1709,8 @@ static ADDRESS_MAP_START( ddenlvrk_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8(MSM6242, "rtc", msm6242_r, 0x00ff) // 6242RTC - AM_RANGE(0xe00604, 0xe00605) AM_READ(ay8910_read_port_0_lsb_r) - AM_RANGE(0xe00700, 0xe00701) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8(SOUND, "ay", ay8910_r, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1737,13 +1733,11 @@ static ADDRESS_MAP_START( ddenlvrk_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // - AM_RANGE(0xe00400, 0xe00401) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0xe00402, 0xe00403) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC // AM_RANGE(0xe00302, 0xe00303) AM_WRITE(SMH_NOP) // ? - AM_RANGE(0xe00600, 0xe00601) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0xe00602, 0xe00603) AM_WRITE(ay8910_write_port_0_lsb_w) - AM_RANGE(0xe00700, 0xe00701) AM_WRITE(okim6295_data_0_lsb_w) + AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1759,14 +1753,14 @@ static ADDRESS_MAP_START( ddenlovr_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8(MSM6242, "rtc", msm6242_r, 0x00ff) // 6242RTC - AM_RANGE(0xe00604, 0xe00605) AM_READ(ay8910_read_port_0_lsb_r) - AM_RANGE(0xe00700, 0xe00701) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8(SOUND, "ay", ay8910_r, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END static ADDRESS_MAP_START( ddenlovr_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM) // ROM - AM_RANGE(0x300000, 0x300001) AM_WRITE(ddenlovr_oki_bank_w) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE(SOUND, "oki", ddenlovr_oki_bank_w) AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w) // Palette // AM_RANGE(0xd01000, 0xd017ff) SMH_RAM) // ? B0 on startup, then 00 AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w) @@ -1780,13 +1774,11 @@ static ADDRESS_MAP_START( ddenlovr_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // - AM_RANGE(0xe00400, 0xe00401) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0xe00402, 0xe00403) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC // AM_RANGE(0xe00302, 0xe00303) AM_WRITE(SMH_NOP) // ? - AM_RANGE(0xe00600, 0xe00601) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0xe00602, 0xe00603) AM_WRITE(ay8910_write_port_0_lsb_w) - AM_RANGE(0xe00700, 0xe00701) AM_WRITE(okim6295_data_0_lsb_w) + AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1832,10 +1824,10 @@ static WRITE16_HANDLER( nettoqc_coincounter_w ) } } -static WRITE16_HANDLER( nettoqc_oki_bank_w ) +static WRITE16_DEVICE_HANDLER( nettoqc_oki_bank_w ) { if (ACCESSING_BITS_0_7) - okim6295_set_bank_base(0, (data & 3) * 0x40000); + okim6295_set_bank_base(device, (data & 3) * 0x40000); } static ADDRESS_MAP_START( nettoqc_readmem, ADDRESS_SPACE_PROGRAM, 16 ) @@ -1848,7 +1840,7 @@ static ADDRESS_MAP_START( nettoqc_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r) // DSW's - AM_RANGE(0x300240, 0x300241) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0x300240, 0x300241) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1865,16 +1857,14 @@ static ADDRESS_MAP_START( nettoqc_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w) AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w) AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w) - AM_RANGE(0x3000c0, 0x3000c1) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0x3000c2, 0x3000c3) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0x300100, 0x30011f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC - AM_RANGE(0x300140, 0x300141) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0x300142, 0x300143) AM_WRITE(ay8910_write_port_0_lsb_w ) + AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) AM_RANGE(0x300188, 0x300189) AM_WRITE(nettoqc_coincounter_w) // Coin Counters AM_RANGE(0x30018a, 0x30018b) AM_WRITE(ddenlovr_select_16_w) // - AM_RANGE(0x30018c, 0x30018d) AM_WRITE(nettoqc_oki_bank_w) + AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE(SOUND, "oki", nettoqc_oki_bank_w) AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge - AM_RANGE(0x300240, 0x300241) AM_WRITE(okim6295_data_0_lsb_w) + AM_RANGE(0x300240, 0x300241) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -1925,7 +1915,7 @@ static ADDRESS_MAP_START( quizchq_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GL AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r) AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r) AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r) - AM_RANGE(0x40, 0x40) AM_READ(okim6295_status_0_r) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0xa0, 0xaf) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END @@ -1935,9 +1925,8 @@ static ADDRESS_MAP_START( quizchq_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w) AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w) AM_RANGE(0x20, 0x20) AM_WRITE(ddenlovr_select2_w) - AM_RANGE(0x40, 0x40) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x60, 0x60) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x61, 0x61) AM_WRITE(ym2413_data_port_0_w) + AM_RANGE(0x40, 0x40) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x60, 0x61) AM_DEVWRITE(SOUND, "ym", ym2413_w) AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) @@ -1946,7 +1935,7 @@ static ADDRESS_MAP_START( quizchq_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) AM_RANGE(0xa0, 0xaf) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC - AM_RANGE(0xc0, 0xc0) AM_WRITE(quizchq_oki_bank_w) + AM_RANGE(0xc0, 0xc0) AM_DEVWRITE(SOUND, "oki", quizchq_oki_bank_w) AM_RANGE(0xc2, 0xc2) AM_WRITE(SMH_NOP) // enables palette RAM at 8000 ADDRESS_MAP_END @@ -1970,7 +1959,7 @@ static ADDRESS_MAP_START( rongrong_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r) AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r) AM_RANGE(0x20, 0x2f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC - AM_RANGE(0x40, 0x40) AM_READ(okim6295_status_0_r) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r) ADDRESS_MAP_END @@ -1980,9 +1969,8 @@ static ADDRESS_MAP_START( rongrong_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w) AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w) AM_RANGE(0x20, 0x2f) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC - AM_RANGE(0x40, 0x40) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x60, 0x60) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x61, 0x61) AM_WRITE(ym2413_data_port_0_w) + AM_RANGE(0x40, 0x40) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x60, 0x61) AM_DEVWRITE(SOUND, "ym", ym2413_w) AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) @@ -2092,7 +2080,7 @@ static ADDRESS_MAP_START( mmpanic_readport, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0") AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1") AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r) // Other cabinets? - AM_RANGE(0x7c, 0x7c) AM_READ(okim6295_status_0_r) // Sound + AM_RANGE(0x7c, 0x7c) AM_DEVREAD(SOUND, "oki", okim6295_r) // Sound AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1") AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2") AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3") // DSW 1&2 high bits @@ -2120,13 +2108,13 @@ static ADDRESS_MAP_START( mmpanic_writeport, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w) AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w) - AM_RANGE(0x68, 0x68) AM_WRITE(ddenlovr_select_w) + AM_RANGE(0x68, 0x68) AM_DEVWRITE(SOUND, "ay", ddenlovr_select_w) AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w) AM_RANGE(0x74, 0x74) AM_WRITE(mmpanic_rombank_w) AM_RANGE(0x78, 0x78) AM_WRITE(SMH_NOP) // 0, during RST 08 (irq acknowledge?) - AM_RANGE(0x7c, 0x7c) AM_WRITE(okim6295_data_0_w) // Sound + AM_RANGE(0x7c, 0x7c) AM_DEVWRITE(SOUND, "oki", okim6295_w) // Sound AM_RANGE(0x8c, 0x8c) AM_WRITE(mmpanic_soundlatch_w) // AM_RANGE(0x88, 0x88) AM_WRITE(mmpanic_leds_w) // Leds AM_RANGE(0x90, 0x90) AM_WRITE(SMH_NOP) // written just before port 8c @@ -2154,10 +2142,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mmpanic_sound_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x04, 0x04) AM_WRITE(SMH_NOP) // 0, during IRQ AM_RANGE(0x06, 0x06) AM_WRITE(SMH_NOP) // almost always 1, sometimes 0 - AM_RANGE(0x08, 0x08) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x09, 0x09) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(ay8910_control_port_0_w) + AM_RANGE(0x08, 0x09) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0x0c, 0x0c) AM_DEVWRITE(SOUND, "ay", ay8910_data_w) + AM_RANGE(0x0e, 0x0e) AM_DEVWRITE(SOUND, "ay", ay8910_address_w) ADDRESS_MAP_END @@ -2258,7 +2245,7 @@ static WRITE8_HANDLER( funkyfig_lockout_w ) } static ADDRESS_MAP_START( funkyfig_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(okim6295_status_0_r) // Sound + AM_RANGE(0x00, 0x00) AM_DEVREAD(SOUND, "oki", okim6295_r) // Sound AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r) AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r) AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r) // Video Chip @@ -2270,7 +2257,7 @@ static ADDRESS_MAP_START( funkyfig_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G ADDRESS_MAP_END static ADDRESS_MAP_START( funkyfig_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(okim6295_data_0_w) // Sound + AM_RANGE(0x00, 0x00) AM_DEVWRITE(SOUND, "oki", okim6295_w) // Sound AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds AM_RANGE(0x02, 0x02) AM_WRITE(mmpanic_soundlatch_w) // AM_RANGE(0x1e, 0x1e) AM_WRITE(funkyfig_rombank_w) @@ -2434,9 +2421,9 @@ static WRITE8_HANDLER( hanakanz_palette_w ) } } -static WRITE8_HANDLER( hanakanz_oki_bank_w ) +static WRITE8_DEVICE_HANDLER( hanakanz_oki_bank_w ) { - okim6295_set_bank_base(0, (data & 0x40) ? 0x40000 : 0); + okim6295_set_bank_base(device, (data & 0x40) ? 0x40000 : 0); } static READ8_HANDLER( hanakanz_rand_r ) @@ -2451,12 +2438,12 @@ static ADDRESS_MAP_START( hanakanz_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r) AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc0, 0xc0) AM_READ(okim6295_status_0_r) + AM_RANGE(0xc0, 0xc0) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0xe0, 0xef) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END static ADDRESS_MAP_START( hanakanz_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_WRITE(hanakanz_oki_bank_w) + AM_RANGE(0x2c, 0x2c) AM_DEVWRITE(SOUND, "oki", hanakanz_oki_bank_w) AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) @@ -2464,9 +2451,8 @@ static ADDRESS_MAP_START( hanakanz_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w) AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0xa1, 0xa1) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0xa0, 0xa1) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0xc0, 0xc0) AM_DEVWRITE(SOUND, "oki", okim6295_w) AM_RANGE(0xe0, 0xef) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC ADDRESS_MAP_END @@ -2478,22 +2464,21 @@ static ADDRESS_MAP_START( hkagerou_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM") AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r) AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc0, 0xc0) AM_READ(okim6295_status_0_r) + AM_RANGE(0xc0, 0xc0) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0xe0, 0xef) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END static ADDRESS_MAP_START( hkagerou_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_WRITE(hanakanz_oki_bank_w) + AM_RANGE(0x2c, 0x2c) AM_DEVWRITE(SOUND, "oki", hanakanz_oki_bank_w) AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0xa1, 0xa1) AM_WRITE(ym2413_data_port_0_w) + AM_RANGE(0xa0, 0xa1) AM_DEVWRITE(SOUND, "ym", ym2413_w) AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w) AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0xc0, 0xc0) AM_DEVWRITE(SOUND, "oki", okim6295_w) AM_RANGE(0xe0, 0xef) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC ADDRESS_MAP_END @@ -2518,12 +2503,12 @@ static ADDRESS_MAP_START( mjreach1_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x93, 0x93) AM_READ(mjreach1_protection_r ) AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM") AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r) - AM_RANGE(0xc0, 0xc0) AM_READ(okim6295_status_0_r) + AM_RANGE(0xc0, 0xc0) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0xe0, 0xef) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END static ADDRESS_MAP_START( mjreach1_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_WRITE(hanakanz_oki_bank_w) + AM_RANGE(0x2c, 0x2c) AM_DEVWRITE(SOUND, "oki", hanakanz_oki_bank_w) AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) @@ -2532,9 +2517,8 @@ static ADDRESS_MAP_START( mjreach1_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x90, 0x90) AM_WRITE(hanakanz_keyb_w) AM_RANGE(0x93, 0x93) AM_WRITE(mjreach1_protection_w) AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0xa1, 0xa1) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0xa0, 0xa1) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0xc0, 0xc0) AM_DEVWRITE(SOUND, "oki", okim6295_w) AM_RANGE(0xe0, 0xef) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC ADDRESS_MAP_END @@ -2632,10 +2616,10 @@ static WRITE8_HANDLER( mjchuuka_coincounter_w ) #endif } -static WRITE8_HANDLER( mjchuuka_oki_bank_w ) +static WRITE8_DEVICE_HANDLER( mjchuuka_oki_bank_w ) { // data & 0x08 ? - okim6295_set_bank_base(0, (data & 0x01) ? 0x40000 : 0); + okim6295_set_bank_base(device, (data & 0x01) ? 0x40000 : 0); #ifdef MAME_DEBUG // popmessage("1e = %02x",data); @@ -2653,7 +2637,7 @@ static ADDRESS_MAP_START( mjchuuka_readport, ADDRESS_SPACE_IO, 8 ) // 16 bit I/O AM_RANGE(0x62, 0x62) AM_MIRROR(0xff00) AM_READ_PORT("DSW3") AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4") AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5") // DSW 1-4 high bits - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_READ(okim6295_status_0_r) + AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END @@ -2663,13 +2647,11 @@ static ADDRESS_MAP_START( mjchuuka_writeport, ADDRESS_SPACE_IO, 8 ) // 16 bit I/ AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_palette_w) AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w) AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVWRITE(SOUND, "oki", okim6295_w) AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0xff00) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_WRITE(ay8910_control_port_0_w) - AM_RANGE(0xe1, 0xe1) AM_MIRROR(0xff00) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_oki_bank_w ) + AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w) + AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_DEVWRITE(SOUND, "oki", mjchuuka_oki_bank_w ) ADDRESS_MAP_END @@ -2774,8 +2756,8 @@ static ADDRESS_MAP_START( mjmyster_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r) AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) - AM_RANGE(0x40, 0x40) AM_READ(okim6295_status_0_r) - AM_RANGE(0x44, 0x44) AM_READ(ay8910_read_port_0_r) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "oki", okim6295_r) + AM_RANGE(0x44, 0x44) AM_DEVREAD(SOUND, "ay", ay8910_r) AM_RANGE(0x60, 0x6f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r) @@ -2788,11 +2770,10 @@ static ADDRESS_MAP_START( mjmyster_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x1e, 0x1e) AM_WRITE(mmpanic_rombank_w) AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w) AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x42, 0x42) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x43, 0x43) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0x46, 0x46) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x48, 0x48) AM_WRITE(ay8910_control_port_0_w) + AM_RANGE(0x40, 0x40) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x42, 0x43) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0x46, 0x46) AM_DEVWRITE(SOUND, "ay", ay8910_data_w) + AM_RANGE(0x48, 0x48) AM_DEVWRITE(SOUND, "ay", ay8910_address_w) AM_RANGE(0x60, 0x6f) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) @@ -2839,14 +2820,14 @@ static ADDRESS_MAP_START( hginga_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xf700, 0xf706) AM_WRITE(SMH_NOP) ADDRESS_MAP_END -static READ8_HANDLER( hginga_dsw_r ) +static READ8_DEVICE_HANDLER( hginga_dsw_r ) { - if (!(ddenlovr_select & 0x01)) return input_port_read(space->machine, "DSW4"); - if (!(ddenlovr_select & 0x02)) return input_port_read(space->machine, "DSW3"); - if (!(ddenlovr_select & 0x04)) return input_port_read(space->machine, "DSW2"); - if (!(ddenlovr_select & 0x08)) return input_port_read(space->machine, "DSW1"); - if (!(ddenlovr_select & 0x10)) return input_port_read(space->machine, "DSW5"); - logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), ddenlovr_select); + if (!(ddenlovr_select & 0x01)) return input_port_read(device->machine, "DSW4"); + if (!(ddenlovr_select & 0x02)) return input_port_read(device->machine, "DSW3"); + if (!(ddenlovr_select & 0x04)) return input_port_read(device->machine, "DSW2"); + if (!(ddenlovr_select & 0x08)) return input_port_read(device->machine, "DSW1"); + if (!(ddenlovr_select & 0x10)) return input_port_read(device->machine, "DSW5"); + logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", cpuexec_describe_context(device->machine), ddenlovr_select); return 0xff; } @@ -2954,7 +2935,7 @@ static WRITE8_HANDLER( hginga_blitter_w ) static ADDRESS_MAP_START( hginga_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) AM_RANGE(0x1c, 0x1c) AM_READ(SMH_NOP) - AM_RANGE(0x24, 0x24) AM_READ(ay8910_read_port_0_r) + AM_RANGE(0x24, 0x24) AM_DEVREAD(SOUND, "ay", ay8910_r) AM_RANGE(0x60, 0x6f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r) AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r) @@ -2965,10 +2946,9 @@ static ADDRESS_MAP_START( hginga_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GL AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w) AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) - AM_RANGE(0x22, 0x22) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x23, 0x23) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0x26, 0x26) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x28, 0x28) AM_WRITE(ay8910_control_port_0_w) + AM_RANGE(0x22, 0x23) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0x26, 0x26) AM_DEVWRITE(SOUND, "ay", ay8910_data_w) + AM_RANGE(0x28, 0x28) AM_DEVWRITE(SOUND, "ay", ay8910_address_w) AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w) AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w) AM_RANGE(0x60, 0x6f) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC @@ -3070,8 +3050,8 @@ static ADDRESS_MAP_START( hgokou_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLO AM_RANGE(0x20, 0x2f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r) - AM_RANGE(0x80, 0x80) AM_READ(okim6295_status_0_r) - AM_RANGE(0x84, 0x84) AM_READ(ay8910_read_port_0_r) + AM_RANGE(0x80, 0x80) AM_DEVREAD(SOUND, "oki", okim6295_r) + AM_RANGE(0x84, 0x84) AM_DEVREAD(SOUND, "ay", ay8910_r) AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r) ADDRESS_MAP_END static ADDRESS_MAP_START( hgokou_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) @@ -3088,11 +3068,10 @@ static ADDRESS_MAP_START( hgokou_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GL AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w) AM_RANGE(0x60, 0x60) AM_WRITE(hginga_input_w) AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w) - AM_RANGE(0x80, 0x80) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x82, 0x82) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x83, 0x83) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0x86, 0x86) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x88, 0x88) AM_WRITE(ay8910_control_port_0_w) + AM_RANGE(0x80, 0x80) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x82, 0x83) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0x86, 0x86) AM_DEVWRITE(SOUND, "ay", ay8910_data_w) + AM_RANGE(0x88, 0x88) AM_DEVWRITE(SOUND, "ay", ay8910_address_w) ADDRESS_MAP_END @@ -3168,7 +3147,7 @@ static ADDRESS_MAP_START( hparadis_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r) AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r) - AM_RANGE(0x40, 0x40) AM_READ(okim6295_status_0_r) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r) ADDRESS_MAP_END @@ -3176,9 +3155,8 @@ static ADDRESS_MAP_START( hparadis_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w) AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w) - AM_RANGE(0x40, 0x40) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x60, 0x60) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x61, 0x61) AM_WRITE(ym2413_data_port_0_w) + AM_RANGE(0x40, 0x40) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x60, 0x61) AM_DEVWRITE(SOUND, "ym", ym2413_w) AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) @@ -3215,8 +3193,8 @@ static ADDRESS_MAP_START( mjmywrld_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_G AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r) AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) - AM_RANGE(0x40, 0x40) AM_READ(okim6295_status_0_r) - AM_RANGE(0x44, 0x44) AM_READ(ay8910_read_port_0_r) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "oki", okim6295_r) + AM_RANGE(0x44, 0x44) AM_DEVREAD(SOUND, "ay", ay8910_r) AM_RANGE(0x60, 0x6f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r) @@ -3229,11 +3207,10 @@ static ADDRESS_MAP_START( mjmywrld_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_ AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w) AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(okim6295_data_0_w) - AM_RANGE(0x42, 0x42) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x43, 0x43) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0x46, 0x46) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x48, 0x48) AM_WRITE(ay8910_control_port_0_w) + AM_RANGE(0x40, 0x40) AM_DEVWRITE(SOUND, "oki", okim6295_w) + AM_RANGE(0x42, 0x43) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0x46, 0x46) AM_DEVWRITE(SOUND, "ay", ay8910_data_w) + AM_RANGE(0x48, 0x48) AM_DEVWRITE(SOUND, "ay", ay8910_address_w) AM_RANGE(0x60, 0x6f) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) @@ -3260,7 +3237,7 @@ static WRITE16_HANDLER( akamaru_protection1_w ) COMBINE_DATA( &akamaru_protection1 ); // BCD number? bank = (((akamaru_protection1>>4)&0xf)%10) * 10 + ((akamaru_protection1&0xf)%10); - okim6295_set_bank_base(0, bank * 0x40000); + okim6295_set_bank_base(devtag_get_device(space->machine, SOUND, "oki"), bank * 0x40000); // popmessage("bank $%0x (%d)",akamaru_protection1, bank); } @@ -3304,8 +3281,8 @@ static ADDRESS_MAP_START( akamaru_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8(MSM6242, "rtc", msm6242_r, 0x00ff) // 6242RTC - AM_RANGE(0xe00604, 0xe00605) AM_READ(ay8910_read_port_0_lsb_r) - AM_RANGE(0xe00700, 0xe00701) AM_READ(okim6295_status_0_lsb_r) // Sound + AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8(SOUND, "ay", ay8910_r, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8(SOUND, "oki", okim6295_r, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM) // RAM ADDRESS_MAP_END @@ -3327,12 +3304,10 @@ static ADDRESS_MAP_START( akamaru_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xe00304, 0xe00307) AM_WRITE(SMH_RAM) AM_BASE( &akamaru_dsw_sel) // DSW select AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) // - AM_RANGE(0xe00400, 0xe00401) AM_WRITE(ym2413_register_port_0_lsb_w) - AM_RANGE(0xe00402, 0xe00403) AM_WRITE(ym2413_data_port_0_lsb_w) + AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8(SOUND, "ym", ym2413_w, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8(MSM6242, "rtc", msm6242_w, 0x00ff) // 6242RTC - AM_RANGE(0xe00600, 0xe00601) AM_WRITE(ay8910_control_port_0_lsb_w) - AM_RANGE(0xe00602, 0xe00603) AM_WRITE(ay8910_write_port_0_lsb_w) - AM_RANGE(0xe00700, 0xe00701) AM_WRITE(okim6295_data_0_lsb_w) + AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8(SOUND, "ay", ay8910_address_data_w, 0x00ff) + AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8(SOUND, "oki", okim6295_w, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) // RAM ADDRESS_MAP_END @@ -3347,9 +3322,9 @@ static WRITE8_HANDLER( mjflove_rombank_w ) memory_set_bankptr(space->machine, 1, &rom[0x10000 + 0x8000 * (data & 0xf)]); } -static WRITE8_HANDLER( mjflove_okibank_w ) +static WRITE8_DEVICE_HANDLER( mjflove_okibank_w ) { - okim6295_set_bank_base(0, (data & 0x07) * 0x40000); + okim6295_set_bank_base(device, (data & 0x07) * 0x40000); // popmessage("SOUND = %02x",data); } @@ -3408,7 +3383,7 @@ static ADDRESS_MAP_START( mjflove_readport, ADDRESS_SPACE_IO, 8 ) // 16 bit I/O AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00) AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1") AM_RANGE(0x0280, 0x028f) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC - AM_RANGE(0x0380, 0x0380) AM_READ(okim6295_status_0_r) + AM_RANGE(0x0380, 0x0380) AM_DEVREAD(SOUND, "oki", okim6295_r) ADDRESS_MAP_END static ADDRESS_MAP_START( mjflove_writeport, ADDRESS_SPACE_IO, 8 ) // 16 bit I/O @@ -3423,24 +3398,22 @@ static ADDRESS_MAP_START( mjflove_writeport, ADDRESS_SPACE_IO, 8 ) // 16 bit I/O AM_RANGE(0x0040, 0x0041) AM_WRITE(mjflove_blitter_w) AM_MIRROR(0xff00) AM_RANGE(0x00f2, 0x00f2) AM_WRITE(mjmyster_rambank_w) AM_MIRROR(0xff00) AM_RANGE(0x00f8, 0x00f8) AM_WRITE(mjflove_rombank_w) AM_MIRROR(0xff00) - AM_RANGE(0x00fa, 0x00fa) AM_WRITE(mjflove_okibank_w) + AM_RANGE(0x00fa, 0x00fa) AM_DEVWRITE(SOUND, "oki", mjflove_okibank_w) AM_RANGE(0x0181, 0x0181) AM_WRITE(SMH_NOP) // ? int. enable AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w) - AM_RANGE(0x0200, 0x0200) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x0201, 0x0201) AM_WRITE(ym2413_data_port_0_w) + AM_RANGE(0x0200, 0x0201) AM_DEVWRITE(SOUND, "ym", ym2413_w) AM_RANGE(0x0280, 0x028f) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC - AM_RANGE(0x0300, 0x0300) AM_WRITE(ay8910_control_port_0_w) - AM_RANGE(0x0301, 0x0301) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x0380, 0x0380) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0x0300, 0x0301) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w) + AM_RANGE(0x0380, 0x0380) AM_DEVWRITE(SOUND, "oki", okim6295_w) ADDRESS_MAP_END /*************************************************************************** Mahjong Jong-Tei ***************************************************************************/ -static WRITE8_HANDLER( jongtei_okibank_w ) +static WRITE8_DEVICE_HANDLER( jongtei_okibank_w ) { - okim6295_set_bank_base(0, ((data >> 4) & 0x07) * 0x40000); + okim6295_set_bank_base(device, ((data >> 4) & 0x07) * 0x40000); } static WRITE8_HANDLER( jongtei_dsw_keyb_w ) @@ -3461,20 +3434,19 @@ static ADDRESS_MAP_START( jongtei_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GL AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r) AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r) AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0xa0, 0xa0) AM_READ(okim6295_status_0_r) + AM_RANGE(0xa0, 0xa0) AM_DEVREAD(SOUND, "oki", okim6295_r) AM_RANGE(0xc0, 0xcf) AM_DEVREAD(MSM6242, "rtc", msm6242_r) // 6242RTC ADDRESS_MAP_END static ADDRESS_MAP_START( jongtei_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_WRITE(jongtei_okibank_w) + AM_RANGE(0x2c, 0x2c) AM_DEVWRITE(SOUND, "oki", jongtei_okibank_w) AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w) AM_RANGE(0x43, 0x43) AM_WRITE(hanakanz_coincounter_w) AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w) AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x80, 0x80) AM_WRITE(ym2413_register_port_0_w) - AM_RANGE(0x81, 0x81) AM_WRITE(ym2413_data_port_0_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(okim6295_data_0_w) + AM_RANGE(0x80, 0x81) AM_DEVWRITE(SOUND, "ym", ym2413_w) + AM_RANGE(0xa0, 0xa0) AM_DEVWRITE(SOUND, "oki", okim6295_w) AM_RANGE(0xc0, 0xcf) AM_DEVWRITE(MSM6242, "rtc", msm6242_w) // 6242RTC ADDRESS_MAP_END @@ -6866,7 +6838,7 @@ static MACHINE_DRIVER_START( ddenlovr ) MDRV_SOUND_ADD("ym", YM2413, XTAL_28_63636MHz / 8) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MDRV_SOUND_ADD("ay8910", AY8910, XTAL_28_63636MHz / 16) // or /8 ? + MDRV_SOUND_ADD("ay", AY8910, XTAL_28_63636MHz / 16) // or /8 ? MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MDRV_SOUND_ADD("oki", OKIM6295, XTAL_28_63636MHz / 28) @@ -6904,10 +6876,10 @@ static const ay8910_interface quiz365_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, - quiz365_input_r, - 0, - 0, - ddenlovr_select_w + DEVCB_HANDLER(quiz365_input_r), + DEVCB_NULL, + DEVCB_NULL, + DEVCB_HANDLER(ddenlovr_select_w) }; static MACHINE_DRIVER_START( quiz365 ) @@ -6917,7 +6889,7 @@ static MACHINE_DRIVER_START( quiz365 ) MDRV_CPU_MODIFY("main") MDRV_CPU_PROGRAM_MAP(quiz365_readmem,quiz365_writemem) - MDRV_SOUND_MODIFY("ay8910") + MDRV_SOUND_MODIFY("ay") MDRV_SOUND_CONFIG(quiz365_ay8910_interface) MACHINE_DRIVER_END @@ -7253,10 +7225,10 @@ static const ay8910_interface mjmyster_ay8910_interface = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, - 0, - 0, - 0, - ddenlovr_select_w + DEVCB_NULL, + DEVCB_NULL, + DEVCB_NULL, + DEVCB_HANDLER(ddenlovr_select_w) }; static MACHINE_DRIVER_START( mjmyster ) @@ -7304,8 +7276,8 @@ static const ay8910_interface hginga_ay8910_interface = AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, // A B - hginga_dsw_r, 0, // R - 0, ddenlovr_select_w // W + DEVCB_HANDLER(hginga_dsw_r), DEVCB_NULL, // R + DEVCB_NULL, DEVCB_HANDLER(ddenlovr_select_w) // W }; static MACHINE_DRIVER_START( hginga ) |