From 45d9bef2a8018a2566445856a54ff9420984945e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 23 Jan 2022 15:15:46 -0500 Subject: [PATCH] Genesis: restore LFO value when changing order --- src/engine/platform/genesis.cpp | 7 +++++-- src/engine/platform/genesis.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index ba4143c03..f8e0a3305 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -417,7 +417,8 @@ int DivPlatformGenesis::dispatch(DivCommand c) { break; } case DIV_CMD_FM_LFO: { - rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); + lfoValue=(c.value&7)|((c.value>>4)<<3); + rWrite(0x22,lfoValue); break; } case DIV_CMD_FM_MULT: { @@ -495,6 +496,7 @@ void DivPlatformGenesis::forceIns() { if (dacMode) { rWrite(0x2b,0x80); } + immWrite(0x22,lfoValue); } void DivPlatformGenesis::reset() { @@ -517,11 +519,12 @@ void DivPlatformGenesis::reset() { dacRate=0; dacSample=-1; sampleBank=0; + lfoValue=8; extMode=false; // LFO - immWrite(0x22,0x08); + immWrite(0x22,lfoValue); delay=0; diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 7be372e5e..d4a0dd4e8 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -42,6 +42,7 @@ class DivPlatformGenesis: public DivDispatch { unsigned int dacPos; int dacSample; unsigned char sampleBank; + unsigned char lfoValue; bool extMode;