gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 7e45cd01bde3a2f7985d5c1816a64678548795de
parent 957945a0ef09f8c1aea9ac1a8096c4a73a24d170
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Mon,  3 Feb 2025 21:21:58 +0100

support memory accesses via templates

Diffstat:
Msource/hardwareLib/am29f.cpp | 4++--
Msource/mqLib/mqmc.cpp | 10+++++-----
Msource/nord/n2x/n2xLib/n2xmc.cpp | 4++--
Msource/nord/n2x/n2xLib/n2xmc.h | 6+++++-
Msource/xtLib/xtUc.cpp | 10+++++-----
5 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/source/hardwareLib/am29f.cpp b/source/hardwareLib/am29f.cpp @@ -123,10 +123,10 @@ namespace hwLib if(_addr >= m_size) return; MCLOG("Programming word at " << MCHEX(_addr) << ", value " << MCHEXN(_data, 4)); - const auto old = mc68k::Mc68k::readW(m_buffer, _addr); + const auto old = mc68k::memoryOps::readU16(m_buffer, _addr); // "A bit cannot be programmed from a 0 back to a 1" const auto v = _data & old; - mc68k::Mc68k::writeW(m_buffer, _addr, v); + mc68k::memoryOps::writeU16(m_buffer, _addr, v); // assert(v == _data); break; } diff --git a/source/mqLib/mqmc.cpp b/source/mqLib/mqmc.cpp @@ -116,12 +116,12 @@ namespace mqLib { if(addr < g_memorySize) { - return readW(m_memory, addr); + return mc68k::memoryOps::readU16(m_memory, addr); } if(addr >= g_romAddress && addr < g_romAddress + ROM::size()) { - const auto r = readW(m_romRuntimeData, addr - g_romAddress); + const auto r = mc68k::memoryOps::readU16(m_romRuntimeData, addr - g_romAddress); // LOG("read16 from ROM addr=" << HEXN(addr, 8) << " val=" << HEXN(r, 4)); return r; } @@ -133,12 +133,12 @@ namespace mqLib { if(addr < g_memorySize) { - return readW(m_memory, addr); + return mc68k::memoryOps::readU16(m_memory, addr); } if(addr >= g_romAddress && addr < g_romAddress + ROM::size()) { - const auto r = readW(m_romRuntimeData, addr - g_romAddress); + const auto r = mc68k::memoryOps::readU16(m_romRuntimeData, addr - g_romAddress); // LOG("read16 from ROM addr=" << HEXN(addr, 8) << " val=" << HEXN(r, 4)); return r; } @@ -197,7 +197,7 @@ namespace mqLib if(addr < g_memorySize) { - writeW(m_memory, addr, val); + mc68k::memoryOps::writeU16(m_memory, addr, val); return; } diff --git a/source/nord/n2x/n2xLib/n2xmc.cpp b/source/nord/n2x/n2xLib/n2xmc.cpp @@ -124,7 +124,7 @@ namespace n2x { if(_addr < m_romRam.size()) { - const auto r = readW(m_romRam.data(), _addr); + const auto r = mc68k::memoryOps::readU16(m_romRam.data(), _addr); return r; } @@ -200,7 +200,7 @@ namespace n2x if(_addr < m_romRam.size()) { assert(_addr >= g_ramAddress); - writeW(m_romRam.data(), _addr, _val); + mc68k::memoryOps::writeU16(m_romRam.data(), _addr, _val); return; } diff --git a/source/nord/n2x/n2xLib/n2xmc.h b/source/nord/n2x/n2xLib/n2xmc.h @@ -31,7 +31,11 @@ namespace n2x uint16_t readImm16(const uint32_t _addr) override { - return readW(m_romRam.data(), _addr & (m_romRam.size()-1)); + return mc68k::memoryOps::readU16(m_romRam.data(), _addr & (m_romRam.size()-1)); + } + uint32_t readImm32(const uint32_t _addr) const + { + return mc68k::memoryOps::readU32(m_romRam.data(), _addr & (m_romRam.size()-1)); } uint16_t read16(uint32_t _addr) override; uint8_t read8(uint32_t _addr) override; diff --git a/source/xtLib/xtUc.cpp b/source/xtLib/xtUc.cpp @@ -69,12 +69,12 @@ namespace xt if(addr < g_ramSize) { - return readW(m_memory.data(), addr); + return mc68k::memoryOps::readU16(m_memory.data(), addr); } if(addr >= g_romAddr && addr < g_romAddr + Rom::Size) { - const auto r = readW(m_romRuntimeData.data(), addr - g_romAddr); + const auto r = mc68k::memoryOps::readU16(m_romRuntimeData.data(), addr - g_romAddr); // LOG("read16 from ROM addr=" << HEXN(_addr, 8) << " val=" << HEXN(r, 4)); return r; } @@ -90,12 +90,12 @@ namespace xt if(addr < g_ramSize) { - return readW(m_memory.data(), addr); + return mc68k::memoryOps::readU16(m_memory.data(), addr); } if(addr >= g_romAddr && addr < g_romAddr + Rom::Size) { - const auto r = readW(m_romRuntimeData.data(), addr - g_romAddr); + const auto r = mc68k::memoryOps::readU16(m_romRuntimeData.data(), addr - g_romAddr); // LOG("read16 from ROM addr=" << HEXN(_addr, 8) << " val=" << HEXN(r, 4)); return r; } @@ -136,7 +136,7 @@ namespace xt if(addr < g_ramSize) { - writeW(m_memory.data(), addr, val); + mc68k::memoryOps::writeU16(m_memory.data(), addr, val); return; }