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;