From bf9eb8b0a4d1edab3ae64a54c8e30f9ad222a732 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 30 Jan 2022 15:55:31 -0500 Subject: [PATCH] fix two possible pitch slide regressions now let's fix blue crow --- src/engine/platform/genesis.cpp | 4 ++++ src/engine/platform/genesis.h | 1 + src/engine/platform/genesisext.cpp | 4 ++++ src/engine/platform/genesisext.h | 1 + src/engine/playback.cpp | 1 + 5 files changed, 11 insertions(+) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 800c5d222..9f57d98af 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -638,6 +638,10 @@ void DivPlatformGenesis::notifyInsDeletion(void* ins) { psg.notifyInsDeletion(ins); } +int DivPlatformGenesis::getPortaFloor(int ch) { + return (ch>5)?12:0; +} + void DivPlatformGenesis::setFlags(unsigned int flags) { if (flags==2) { chipClock=8000000.0; diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 7e4318956..4b4404639 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -85,6 +85,7 @@ class DivPlatformGenesis: public DivDispatch { void setFlags(unsigned int flags); void notifyInsChange(int ins); void notifyInsDeletion(void* ins); + int getPortaFloor(int ch); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformGenesis(); diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 7d8810d4e..8376a0b5b 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -334,6 +334,10 @@ void DivPlatformGenesisExt::notifyInsChange(int ins) { } } +int DivPlatformGenesisExt::getPortaFloor(int ch) { + return (ch>8)?12:0; +} + int DivPlatformGenesisExt::init(DivEngine* parent, int channels, int sugRate, unsigned int flags) { DivPlatformGenesis::init(parent,channels,sugRate,flags); for (int i=0; i<4; i++) { diff --git a/src/engine/platform/genesisext.h b/src/engine/platform/genesisext.h index f893232d2..3958a128f 100644 --- a/src/engine/platform/genesisext.h +++ b/src/engine/platform/genesisext.h @@ -27,6 +27,7 @@ class DivPlatformGenesisExt: public DivPlatformGenesis { bool keyOffAffectsArp(int ch); bool keyOffAffectsPorta(int ch); void notifyInsChange(int ins); + int getPortaFloor(int ch); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformGenesisExt(); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index a8a2052fa..2ba7a5036 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -685,6 +685,7 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; chan[i].scheduledSlideReset=false; + chan[i].inPorta=false; } if (!chan[i].keyOn && chan[i].volume>chan[i].volMax) { chan[i].volume=chan[i].volMax;