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 0af0236eb7921a4d6f46b4fb11faa6801af81165
parent f95077026497c0208d43f7667c84ff7ecf278fab
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sun, 21 Jul 2024 02:38:23 +0200

attempt to press a button on the frontpanel

Diffstat:
Msource/nord/n2x/n2xLib/n2xfrontpanel.cpp | 30++++++++++++++++++++++++++++++
Msource/nord/n2x/n2xLib/n2xfrontpanel.h | 2++
2 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/source/nord/n2x/n2xLib/n2xfrontpanel.cpp b/source/nord/n2x/n2xLib/n2xfrontpanel.cpp @@ -13,6 +13,13 @@ namespace n2x { } + uint8_t FrontPanelCS4::read8(mc68k::PeriphAddress _addr) + { + return 0xff; + + return FrontPanelCS<2107392>::read8(_addr); + } + FrontPanelCS4::FrontPanelCS4(FrontPanel& _fp) : FrontPanelCS(_fp) { } @@ -87,6 +94,29 @@ namespace n2x FrontPanelCS<2105344>::write8(_addr, _val); } + static uint8_t g_counter = 0; + + uint8_t FrontPanelCS6::read8(mc68k::PeriphAddress _addr) + { + const auto a = static_cast<uint32_t>(_addr); + switch (a) + { + case g_frontPanelAddressCS6: + return 0b11101100; + if(++g_counter >= 128) + { + const auto up = static_cast<uint8_t>(ButtonType::Up) & 0xff; + return ~up; + } + return 0xff; + case g_frontPanelAddressCS6 + 2: + case g_frontPanelAddressCS6 + 4: + case g_frontPanelAddressCS6 + 6: + return 0xff; + } + return FrontPanelCS::read8(_addr); + } + void FrontPanelCS6::printLCD() { /* diff --git a/source/nord/n2x/n2xLib/n2xfrontpanel.h b/source/nord/n2x/n2xLib/n2xfrontpanel.h @@ -20,6 +20,7 @@ namespace n2x class FrontPanelCS4 : public FrontPanelCS<g_frontPanelAddressCS4> { public: + uint8_t read8(mc68k::PeriphAddress _addr) override; explicit FrontPanelCS4(FrontPanel& _fp); }; @@ -29,6 +30,7 @@ namespace n2x explicit FrontPanelCS6(FrontPanel& _fp); void write8(mc68k::PeriphAddress _addr, uint8_t _val) override; + uint8_t read8(mc68k::PeriphAddress _addr) override; private: void printLCD();