diff options
-rw-r--r-- | src/devices/sound/k056800.cpp | 6 | ||||
-rw-r--r-- | src/devices/sound/rf5c400.cpp | 26 | ||||
-rw-r--r-- | src/devices/sound/rf5c400.h | 3 |
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; |