aica: small dma transfer must be correctly scheduled

Previously transfer taking less than 4096 cycles would be instantly
executed.
Fixes Sports Jam announcer broken audio.
Issue #980
This commit is contained in:
Flyinghead 2023-03-21 11:32:21 +01:00
parent 9f2ffd102c
commit 5c5c872afc
1 changed files with 2 additions and 1 deletions

View File

@ -12,6 +12,7 @@
#include "hw/sh4/sh4_sched.h"
#include "profiler/dc_profiler.h"
#include "hw/sh4/dyna/blockmanager.h"
#include "hw/sh4/sh4_interpreter.h"
#include "hw/arm7/arm7.h"
#include "cfg/option.h"
@ -395,7 +396,7 @@ static void Write_SB_ADST(u32 addr, u32 data)
// Schedule the end of DMA transfer interrupt
int cycles = len * (SH4_MAIN_CLOCK / 2 / G2_BUS_CLOCK); // 16 bits @ 25 MHz
if (cycles < 4096)
if (cycles < SH4_TIMESLICE / 2)
dma_end_sched(0, 0, 0);
else
sh4_sched_request(dma_sched_id, cycles);