From ec671068416432451635f1c73de07551ef973483 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Apr 2025 16:37:41 -0500 Subject: [PATCH] OPN/A/B/2: fix arp macro stacking issue #2470 --- src/engine/platform/genesisext.cpp | 4 +++- src/engine/platform/ym2203ext.cpp | 4 +++- src/engine/platform/ym2608ext.cpp | 4 +++- src/engine/platform/ym2610bext.cpp | 4 +++- src/engine/platform/ym2610ext.cpp | 4 +++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 561b9cc8d..b56e3dc21 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -515,7 +515,9 @@ void DivPlatformGenesisExt::tick(bool sysTick) { } } - if (opChan[i].std.arp.had) { + if (NEW_ARP_STRAT) { + opChan[i].handleArp(); + } else if (opChan[i].std.arp.had) { if (!opChan[i].inPorta) { opChan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(opChan[i].note,opChan[i].std.arp.val),11,chan[extChanOffs].state.block); } diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index 2a6d8d9d6..6f983a41c 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -442,7 +442,9 @@ void DivPlatformYM2203Ext::tick(bool sysTick) { } } - if (opChan[i].std.arp.had) { + if (NEW_ARP_STRAT) { + opChan[i].handleArp(); + } else if (opChan[i].std.arp.had) { if (!opChan[i].inPorta) { opChan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(opChan[i].note,opChan[i].std.arp.val),11,chan[extChanOffs].state.block); } diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 6cf83600e..1272d1bc2 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -470,7 +470,9 @@ void DivPlatformYM2608Ext::tick(bool sysTick) { } } - if (opChan[i].std.arp.had) { + if (NEW_ARP_STRAT) { + opChan[i].handleArp(); + } else if (opChan[i].std.arp.had) { if (!opChan[i].inPorta) { opChan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(opChan[i].note,opChan[i].std.arp.val),11,chan[extChanOffs].state.block); } diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index d0c374a52..2e40048d9 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -463,7 +463,9 @@ void DivPlatformYM2610BExt::tick(bool sysTick) { } } - if (opChan[i].std.arp.had) { + if (NEW_ARP_STRAT) { + opChan[i].handleArp(); + } else if (opChan[i].std.arp.had) { if (!opChan[i].inPorta) { opChan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(opChan[i].note,opChan[i].std.arp.val),11,chan[extChanOffs].state.block); } diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index 8f678813e..032f07756 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -463,7 +463,9 @@ void DivPlatformYM2610Ext::tick(bool sysTick) { } } - if (opChan[i].std.arp.had) { + if (NEW_ARP_STRAT) { + opChan[i].handleArp(); + } else if (opChan[i].std.arp.had) { if (!opChan[i].inPorta) { opChan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(opChan[i].note,opChan[i].std.arp.val),11,chan[extChanOffs].state.block); }