diff options
author | Olivier Galibert <galibert@pobox.com> | 2020-03-14 22:06:16 +0100 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2020-03-14 22:06:30 +0100 |
commit | 8336296bd322635b03e5fce4317ca0377ab4548a (patch) | |
tree | b7290a5cdaa9720027972bfcba9abcdff0840749 | |
parent | ab5640b7f5cf7a7a82850ad8cda8ebf9047c2774 (diff) |
ks1064: Store the voice registers (nw)
-rw-r--r-- | src/devices/sound/ks0164.cpp | 39 | ||||
-rw-r--r-- | src/devices/sound/ks0164.h | 14 | ||||
-rw-r--r-- | src/mame/drivers/dgpix.cpp | 14 |
3 files changed, 59 insertions, 8 deletions
diff --git a/src/devices/sound/ks0164.cpp b/src/devices/sound/ks0164.cpp index fdc3cebaf9b..a7877338ba1 100644 --- a/src/devices/sound/ks0164.cpp +++ b/src/devices/sound/ks0164.cpp @@ -60,6 +60,9 @@ void ks0164_device::device_reset() m_bank1_base = 0; m_bank2_select = 0; m_bank2_base = 0; + memset(m_sregs, 0, sizeof(m_sregs)); + m_unk60 = 0; + m_voice_select = 0; } u16 ks0164_device::vec_r(offs_t offset, u16 mem_mask) @@ -114,10 +117,46 @@ void ks0164_device::bank2_select_w(offs_t, u16 data, u16 mem_mask) m_bank2_base = m_bank2_select << 14; } +u16 ks0164_device::voice_r(offs_t offset) +{ + return m_sregs[m_voice_select & 0x1f][offset]; +} + +void ks0164_device::voice_w(offs_t offset, u16 data, u16 mem_mask) +{ + COMBINE_DATA(&m_sregs[m_voice_select & 0x1f][offset]); + logerror("voice %02x.%02x = %04x (%04x)\n", m_voice_select & 0x1f, offset, m_sregs[m_voice_select & 0x1f][offset], m_cpu->pc()); +} + +u8 ks0164_device::unk60_r() +{ + return m_unk60; +} + +void ks0164_device::unk60_w(u8 data) +{ + m_unk60 = data; + logerror("unk60 = %02x (%04x)\n", m_unk60, m_cpu->pc()); +} + +u8 ks0164_device::voice_select_r() +{ + return m_voice_select; +} + +void ks0164_device::voice_select_w(u8 data) +{ + m_voice_select = data; + logerror("voice_select = %02x (%04x)\n", m_voice_select, m_cpu->pc()); +} + void ks0164_device::cpu_map(address_map &map) { map(0x0000, 0x001f).r(FUNC(ks0164_device::vec_r)); + map(0x0020, 0x005f).rw(FUNC(ks0164_device::voice_r), FUNC(ks0164_device::voice_w)); + map(0x0060, 0x0060).rw(FUNC(ks0164_device::unk60_r), FUNC(ks0164_device::unk60_w)); + map(0x0061, 0x0061).rw(FUNC(ks0164_device::voice_select_r), FUNC(ks0164_device::voice_select_w)); map(0x0062, 0x0063).rw(FUNC(ks0164_device::bank1_select_r), FUNC(ks0164_device::bank1_select_w)); map(0x0064, 0x0065).rw(FUNC(ks0164_device::bank2_select_r), FUNC(ks0164_device::bank2_select_w)); diff --git a/src/devices/sound/ks0164.h b/src/devices/sound/ks0164.h index 3a6c6c4629d..399a0e8f39a 100644 --- a/src/devices/sound/ks0164.h +++ b/src/devices/sound/ks0164.h @@ -34,8 +34,13 @@ private: sound_stream *m_stream; memory_access_cache<1, 0, ENDIANNESS_BIG> *m_mem_cache; - u16 m_bank1_select, m_bank2_select; u32 m_bank1_base, m_bank2_base; + u16 m_bank1_select, m_bank2_select; + + u16 m_sregs[0x20][0x20]; + + u8 m_unk60; + u8 m_voice_select; void cpu_map(address_map &map); @@ -49,6 +54,13 @@ private: void bank1_select_w(offs_t, u16 data, u16 mem_mask); u16 bank2_select_r(); void bank2_select_w(offs_t, u16 data, u16 mem_mask); + + u8 unk60_r(); + void unk60_w(u8 data); + u8 voice_select_r(); + void voice_select_w(u8 data); + u16 voice_r(offs_t offset); + void voice_w(offs_t offset, u16 data, u16 mem_mask); }; DECLARE_DEVICE_TYPE(KS0164, ks0164_device) diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp index dc698c6caeb..3ac9f13aa37 100644 --- a/src/mame/drivers/dgpix.cpp +++ b/src/mame/drivers/dgpix.cpp @@ -167,7 +167,7 @@ public: driver_device(mconfig, type, tag), m_flash(*this, "flash"), m_maincpu(*this, "maincpu"), - m_sound(*this, "ks1064"), + m_sound(*this, "ks0164"), m_vblank(*this, "VBLANK") { } @@ -463,7 +463,7 @@ ROM_START( elfin ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(eb56d7ca) SHA1(7c1cfcc68579cf3bdd9707da7d745a410223b8d9) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(cbf64ef4) SHA1(1a231872ee14e6d718c3f8888185ede7483e79dd) ) /* game settings & highscores are saved in here */ - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x000000, 0x400000, CRC(d378fe55) SHA1(5cc7bc5ae258cd48816857793a262e7c6c330795) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ @@ -485,7 +485,7 @@ ROM_START( jumpjump ) ROM_LOAD16_WORD_SWAP( "jumpjump.u8", 0x1800000, 0x400000, CRC(210dfd8b) SHA1(a1aee4ec8c01832e77d2e4e334a62c246d7e3635) ) ROM_LOAD16_WORD_SWAP( "jumpjump.u9", 0x1c00000, 0x400000, CRC(16d1e352) SHA1(3c43974fb8d90b0c84472dd9f2167eb983142095) ) - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "jumpjump.u10", 0x000000, 0x400000, CRC(2152ecce) SHA1(522d389952a07fa0830ca8aaa6de3aacf834e32e) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ @@ -510,7 +510,7 @@ ROM_START( xfiles ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(231ad82a) SHA1(a1cc5c4122605e564d51137f1dca2afa82616202) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(d68994b7) SHA1(c1752d6795f7aaa6beef73643327205a1c32f0f5) ) - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x0000000, 0x400000, CRC(1af33cda) SHA1(9bbcfb07a4a5bcff3efc1c7bcc51bc16c47ca9e6) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -543,7 +543,7 @@ ROM_START( xfilesk ) ROM_LOAD16_WORD_SWAP( "u8.bin", 0x1800000, 0x400000, CRC(3b2c2bc1) SHA1(1c07fb5bd8a8c9b5fb169e6400fef845f3aee7aa) ) ROM_LOAD16_WORD_SWAP( "u9.bin", 0x1c00000, 0x400000, CRC(6ecdd1eb) SHA1(e26c9711e589865cc75ec693d382758fa52528b8) ) - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "u10.bin", 0x0000000, 0x400000, CRC(f2ef1eb9) SHA1(d033d140fce6716d7d78509aa5387829f0a1404c) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -567,7 +567,7 @@ ROM_START( kdynastg ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(1016b61c) SHA1(eab4934e1f41cc26259e5187a94ceebd45888a94) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(093d9243) SHA1(2a643acc7144193aaa3606a84b0c67aadb4c543b) ) - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x0000000, 0x400000, CRC(3f103cb1) SHA1(2ff9bd73f3005f09d872018b81c915b01d6703f5) ) ROM_REGION( 0x1000, "cpu2", 0 ) /* PIC */ @@ -591,7 +591,7 @@ ROM_START( fmaniac3 ) ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(dc08a224) SHA1(4d14145eb84ad13674296f81e90b9d60403fa0de) ) ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(c1fee95f) SHA1(0ed5ed9fa18e7da9242a6df2c210c46de25a2281) ) - ROM_REGION( 0x400000, "ks1064", 0 ) /* sound rom */ + ROM_REGION( 0x400000, "ks0164", 0 ) /* sound rom */ ROM_LOAD16_WORD_SWAP( "flash.u10", 0x000000, 0x400000, CRC(dfeb91a0) SHA1(a4a79073c3f6135957ea8a4a66a9c71a3a39893c) ) ROM_REGION( 0x1000, "cpu2", ROMREGION_ERASEFF ) /* PIC */ |