From e07f9cd3f40799fa16ebc71ed666d2f2ff84ce8f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 15 Jul 2023 20:29:49 -0500 Subject: [PATCH] does not work --- src/engine/platform/genesisext.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index e0a3e4a6..d4ac2760 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -452,6 +452,9 @@ static int opChanOffsH[4]={ }; void DivPlatformGenesisExt::tick(bool sysTick) { + int hardResetElapsed=0; + bool mustHardReset=false; + if (extMode) { bool writeSomething=false; unsigned char writeMask=2; @@ -462,6 +465,12 @@ void DivPlatformGenesisExt::tick(bool sysTick) { writeMask&=~(1<<(4+i)); opChan[i].keyOff=false; } + if (opChan[i].hardReset && opChan[i].keyOn) { + mustHardReset=true; + unsigned short baseAddr=chanOffs[extChanOffs]|opOffs[i]; + immWrite(baseAddr+ADDR_SL_RR,0x0f); + hardResetElapsed++; + } } if (writeSomething) { if (chan[csmChan].active) { // CSM @@ -630,6 +639,22 @@ void DivPlatformGenesisExt::tick(bool sysTick) { (writeMask&0x80)?'4':'-' );*/ immWrite(0x28,writeMask); + + // hard reset handling + if (mustHardReset) { + for (unsigned int i=hardResetElapsed; i