From cac78257923a0e57dd3b320decdf0dd4d31ee8e0 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Tue, 8 Apr 2025 18:47:34 +0300 Subject: [PATCH] Very low audio period hack improvement (R-Type II) --- audio.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/audio.cpp b/audio.cpp index 14846165..f51876c4 100644 --- a/audio.cpp +++ b/audio.cpp @@ -2506,8 +2506,15 @@ void event_audxdat_func(uae_u32 v) if (cdp->wlen == 1) { cdp->wlen = cdp->len; // if very low period sample repeats, set higher period value to not cause huge performance drop - if (cdp->per < PERIOD_MIN_LOOP * CYCLE_UNIT) { - cdp->minperloop++; + // For example: Spaceport, R-Type II, Rambo III + if (cdp->per < PERIOD_MIN_LOOP * CYCLE_UNIT && !(intena & (1 << (nr + 7))) && !(currprefs.cs_hacks & 32)) { + int add = 1; + if (cdp->len == 0 || cdp->len > 10000) { + add = PERIOD_MIN_LOOP_COUNT; + } else if (cdp->len > 1000) { + add = 5; + } + cdp->minperloop += add; if (cdp->minperloop >= PERIOD_MIN_LOOP_COUNT) { cdp->per = PERIOD_MIN_LOOP * CYCLE_UNIT; } -- 2.47.3