summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit8336296bd322635b03e5fce4317ca0377ab4548a (patch)
treeb7290a5cdaa9720027972bfcba9abcdff0840749
parentab5640b7f5cf7a7a82850ad8cda8ebf9047c2774 (diff)
ks1064: Store the voice registers (nw)
-rw-r--r--src/devices/sound/ks0164.cpp39
-rw-r--r--src/devices/sound/ks0164.h14
-rw-r--r--src/mame/drivers/dgpix.cpp14
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 */