diff --git a/src/devices/sound/k051649.cpp b/src/devices/sound/k051649.cpp index acc61e9bda8..b961ae7067f 100644 --- a/src/devices/sound/k051649.cpp +++ b/src/devices/sound/k051649.cpp @@ -31,6 +31,14 @@ #define FREQ_BITS 16 #define DEF_GAIN 8 +void k051649_device::scc_map(address_map &map) +{ + map(0x00, 0x7f).rw(this, FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0x80, 0x89).w(this, FUNC(k051649_device::k051649_frequency_w)); + map(0x8a, 0x8e).w(this, FUNC(k051649_device::k051649_volume_w)); + map(0x8f, 0x8f).w(this, FUNC(k051649_device::k051649_keyonoff_w)); + map(0xe0, 0xff).rw(this, FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); +} // device type definition DEFINE_DEVICE_TYPE(K051649, k051649_device, "k051649", "K051649 SCC1") diff --git a/src/devices/sound/k051649.h b/src/devices/sound/k051649.h index 3971d5371e7..923cf7cd881 100644 --- a/src/devices/sound/k051649.h +++ b/src/devices/sound/k051649.h @@ -40,6 +40,7 @@ public: DECLARE_WRITE8_MEMBER( k052539_waveform_w ); DECLARE_READ8_MEMBER ( k052539_waveform_r ); + void scc_map(address_map &map); protected: // device-level overrides virtual void device_start() override; diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp index ee56ed4aa9a..0ae989184ec 100644 --- a/src/mame/drivers/hcastle.cpp +++ b/src/mame/drivers/hcastle.cpp @@ -81,11 +81,7 @@ void hcastle_state::sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram(); - map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); - map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); - map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); - map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); - map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0x9800, 0x98ff).m("k051649", FUNC(k051649_device::scc_map)); map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); map(0xc000, 0xc000).w(this, FUNC(hcastle_state::sound_bank_w)); /* 7232 bankswitch */ diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp index 2ec6f1eecdd..4950578970a 100644 --- a/src/mame/drivers/hexion.cpp +++ b/src/mame/drivers/hexion.cpp @@ -129,11 +129,7 @@ void hexion_state::hexion_map(address_map &map) map(0xc000, 0xdffe).rw(this, FUNC(hexion_state::bankedram_r), FUNC(hexion_state::bankedram_w)); map(0xdfff, 0xdfff).w(this, FUNC(hexion_state::bankctrl_w)); map(0xe000, 0xe000).noprw(); - map(0xe800, 0xe87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); - map(0xe880, 0xe889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); - map(0xe88a, 0xe88e).w("k051649", FUNC(k051649_device::k051649_volume_w)); - map(0xe88f, 0xe88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); - map(0xe8e0, 0xe8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xe800, 0xe8ff).m("k051649", FUNC(k051649_device::scc_map)); map(0xf000, 0xf00f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); map(0xf200, 0xf200).w("oki", FUNC(okim6295_device::write)); map(0xf400, 0xf400).portr("DSW1"); diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index c39f2007e35..a3f9ee0f043 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -260,11 +260,7 @@ void konmedal_state::ddboy_main(address_map &map) map(0xc80f, 0xc80f).r(this, FUNC(konmedal_state::magic_r)); map(0xcc00, 0xcc00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xd000, 0xd000).nopw(); // ??? writes 00 and 3f every frame - map(0xd800, 0xd87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); - map(0xd880, 0xd889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); - map(0xd88a, 0xd88e).w("k051649", FUNC(k051649_device::k051649_volume_w)); - map(0xd88f, 0xd88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); - map(0xd8e0, 0xd8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xd800, 0xd8ff).m("k051649", FUNC(k051649_device::scc_map)); map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::vram_r), FUNC(konmedal_state::vram_w)); } @@ -278,11 +274,7 @@ void konmedal_state::shuriboy_main(address_map &map) map(0x8803, 0x8803).portr("DSW2"); map(0x8b00, 0x8b00).nopw(); // watchdog? map(0x8c00, 0x8c00).w(this, FUNC(konmedal_state::shuri_bank_w)); - map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); - map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); - map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); - map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); - map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0x9800, 0x98ff).m("k051649", FUNC(k051649_device::scc_map)); map(0xa000, 0xbfff).bankr("bank1"); map(0xc000, 0xdbff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); map(0xdd00, 0xdd00).rw(this, FUNC(konmedal_state::shuri_irq_r), FUNC(konmedal_state::shuri_irq_w)); diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index 0aaad50890c..50d0f5dc630 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -566,11 +566,7 @@ void nemesis_state::city_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram(); - map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); - map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); - map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); - map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); - map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0x9800, 0x98ff).m("k051649", FUNC(k051649_device::scc_map)); map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); map(0xc000, 0xc000).w(this, FUNC(nemesis_state::city_sound_bank_w)); /* 7232 bankswitch */