summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/devices/sound/k056800.cpp6
-rw-r--r--src/devices/sound/rf5c400.cpp26
-rw-r--r--src/devices/sound/rf5c400.h3
3 files changed, 29 insertions, 6 deletions
diff --git a/src/devices/sound/k056800.cpp b/src/devices/sound/k056800.cpp
index beac3a67b73..908a0b2d42c 100644
--- a/src/devices/sound/k056800.cpp
+++ b/src/devices/sound/k056800.cpp
@@ -108,11 +108,11 @@ WRITE8_MEMBER( k056800_device::host_w )
case 7:
// Sound interrupt
- m_int_pending = true;
-
if (m_int_enabled)
+ {
+ m_int_pending = true;
m_int_handler(ASSERT_LINE);
-
+ }
break;
}
}
diff --git a/src/devices/sound/rf5c400.cpp b/src/devices/sound/rf5c400.cpp
index ad381817ccf..e652dda3056 100644
--- a/src/devices/sound/rf5c400.cpp
+++ b/src/devices/sound/rf5c400.cpp
@@ -354,6 +354,11 @@ READ16_MEMBER( rf5c400_device::rf5c400_r )
{
return 0;
}
+
+ case 0x13: // memory read
+ {
+ return m_rom[m_ext_mem_address];
+ }
}
return 0;
@@ -413,17 +418,32 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w )
case 0x08: // relative to env attack (channel no)
case 0x09: // relative to env attack (0x0c00/ 0x1c00)
- case 0x11: // ? counter for 0x13?
+ case 0x11: // memory r/w address, bits 15 - 0
+ {
+ m_ext_mem_address &= ~0xffff;
+ m_ext_mem_address |= data;
+ break;
+ }
+ case 0x12: // memory r/w address, bits 23 - 16
{
+ m_ext_mem_address &= 0xffff;
+ m_ext_mem_address |= (UINT32)(data) << 16;
break;
}
- case 0x13: // ? bujutsu writes sample data here
+ case 0x13: // memory write data
{
+ m_ext_mem_data = data;
break;
}
- case 0x14: // ? related to 0x11/0x13 ?
+ case 0x14: // memory write
+ {
+ if ((data & 0x3) == 3)
+ {
+ m_rom[m_ext_mem_address] = m_ext_mem_data;
+ }
break;
+ }
case 0x21: // reverb(character).w
case 0x32: // reverb(pre-lpf).w
diff --git a/src/devices/sound/rf5c400.h b/src/devices/sound/rf5c400.h
index fd04b788f93..bc30301d9cd 100644
--- a/src/devices/sound/rf5c400.h
+++ b/src/devices/sound/rf5c400.h
@@ -109,6 +109,9 @@ private:
double m_env_rr_table[0x9f];
rf5c400_channel m_channels[32];
+
+ UINT32 m_ext_mem_address;
+ UINT16 m_ext_mem_data;
};
extern const device_type RF5C400;