From efba4e29f92ec888e332cf1ac003e912102ca405 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 10 Feb 2023 19:56:26 -0500 Subject: [PATCH] come on ES5506 gotta move --- .../vgsound_emu/src/es550x/es5504.cpp | 10 +++++----- .../vgsound_emu/src/es550x/es5505.cpp | 10 +++++----- .../vgsound_emu/src/es550x/es5506.cpp | 16 +++++++++++----- .../vgsound_emu/src/es550x/es550x.hpp | 14 +++++--------- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp index a7ee9e32..0e10a9e6 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp @@ -46,14 +46,14 @@ void es5504_core::tick() } if (m_e.current_edge()) // Host interface { - if (m_host_intf.host_access()) + if (m_host_intf.m_host_access) { - if (m_host_intf.rw() && (m_e.cycle() == 2)) // Read + if (m_host_intf.m_rw && (m_e.cycle() == 2)) // Read { m_hd = read(m_ha); m_host_intf.clear_host_access(); } - else if ((!m_host_intf.rw()) && (m_e.cycle() == 2)) + else if ((!m_host_intf.m_rw) && (m_e.cycle() == 2)) { // Write write(m_ha, m_hd); } @@ -193,7 +193,7 @@ void es5504_core::voice_t::reset() // Accessors u16 es5504_core::host_r(u8 address) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; if (m_e.rising_edge()) @@ -210,7 +210,7 @@ u16 es5504_core::host_r(u8 address) void es5504_core::host_w(u8 address, u16 data) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; m_hd = data; diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp index b00b1047..67afd69c 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp @@ -117,14 +117,14 @@ void es5505_core::tick() } if (m_e.current_edge()) // Host interface { - if (m_host_intf.host_access()) + if (m_host_intf.m_host_access) { - if (m_host_intf.rw() && (m_e.cycle() == 2)) // Read + if (m_host_intf.m_rw && (m_e.cycle() == 2)) // Read { m_hd = read(m_ha); m_host_intf.clear_host_access(); } - else if ((!m_host_intf.rw()) && (m_e.cycle() == 2)) + else if ((!m_host_intf.m_rw) && (m_e.cycle() == 2)) { // Write write(m_ha, m_hd); } @@ -301,7 +301,7 @@ void es5505_core::voice_t::reset() // Accessors u16 es5505_core::host_r(u8 address) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; if (m_e.rising_edge()) @@ -318,7 +318,7 @@ u16 es5505_core::host_r(u8 address) void es5505_core::host_w(u8 address, u16 data) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; m_hd = data; diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp index 192ce6eb..f511f31e 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp @@ -162,14 +162,14 @@ void es5506_core::tick() } if (m_e.current_edge()) // Host interface { - if (m_host_intf.host_access()) + if (m_host_intf.m_host_access) { - if (m_host_intf.rw() && (m_e.cycle() == 0)) // Read + if (m_host_intf.m_rw && (m_e.cycle() == 0)) // Read { m_hd = read(m_ha); m_host_intf.clear_host_access(); } - else if ((!m_host_intf.rw()) && (m_e.cycle() == 2)) + else if ((!m_host_intf.m_rw) && (m_e.cycle() == 2)) { // Write write(m_ha, m_hd); } @@ -212,19 +212,25 @@ void es5506_core::tick_perf() } } + bool bounce=m_voice_end; + // update + if (bounce) { // falling edge m_e.edge().set(false); m_intf.e_pin(false); m_host_intf.clear_host_access(); m_host_intf.clear_strobe(); + } m_voice[m_voice_cycle].fetch(m_voice_cycle, 0); m_voice[m_voice_cycle].fetch(m_voice_cycle, 1); voice_tick(); + if (bounce) { // rising edge m_e.edge().set(true); m_intf.e_pin(true); m_host_intf.update_strobe(); + } } void es5506_core::voice_tick() @@ -407,7 +413,7 @@ void es5506_core::voice_t::reset() // Accessors u8 es5506_core::host_r(u8 address) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; if (m_e.rising_edge()) @@ -424,7 +430,7 @@ u8 es5506_core::host_r(u8 address) void es5506_core::host_w(u8 address, u8 data) { - if (!m_host_intf.host_access()) + if (!m_host_intf.m_host_access) { m_ha = address; m_hd = data; diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es550x.hpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es550x.hpp index 02ddcd9a..181b8dce 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es550x.hpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es550x.hpp @@ -516,16 +516,12 @@ class es550x_shared_core : public vgsound_emu_core m_host_access = m_host_access_strobe; } - // Getters - bool host_access() { return m_host_access; } - bool rw() { return m_rw; } - - private: - u8 m_host_access : 1; // Host access trigger - u8 m_host_access_strobe : 1; // Host access strobe - u8 m_rw : 1; // R/W state - u8 m_rw_strobe : 1; // R/W strobe + public: + u8 m_host_access ; // Host access trigger + u8 m_host_access_strobe ; // Host access strobe + u8 m_rw ; // R/W state + u8 m_rw_strobe ; // R/W strobe }; public: