diff --git a/src/engine/chipUtils.h b/src/engine/chipUtils.h index 814935e6..57d4731c 100644 --- a/src/engine/chipUtils.h +++ b/src/engine/chipUtils.h @@ -33,7 +33,7 @@ template struct SharedChannel { bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; T vol, outVol; DivMacroInt std; - void macroInit(DivInstrument* which) { + virtual void macroInit(DivInstrument* which) { std.init(which); pitch2=0; } diff --git a/src/engine/platform/es5506.h b/src/engine/platform/es5506.h index b26fc0d4..abd9ffb7 100644 --- a/src/engine/platform/es5506.h +++ b/src/engine/platform/es5506.h @@ -30,7 +30,7 @@ #include "vgsound_emu/src/es550x/es5506.hpp" class DivPlatformES5506: public DivDispatch, public es550x_intf { - struct Channel : public SharedChannelFreq, public SharedChannelVolume { + struct Channel : public SharedChannel { struct PCM { bool isNoteMap; int index, next; @@ -183,10 +183,8 @@ class DivPlatformES5506: public DivDispatch, public es550x_intf { signed int oscOut; DivInstrumentES5506::Filter filter; DivInstrumentES5506::Envelope envelope; - DivMacroInt std; - void macroInit(DivInstrument* which) { - std.init(which); - pitch2=0; + virtual void macroInit(DivInstrument* which) override { + SharedChannel::macroInit(which); if (std.ex1.mode==2) { k1Offs=0; } @@ -197,8 +195,7 @@ class DivPlatformES5506: public DivDispatch, public es550x_intf { k2Prev=0xffff; } Channel(): - SharedChannelFreq(), - SharedChannelVolume(0xff), + SharedChannel(0xff), pcm(PCM()), nextFreq(0), nextNote(0),