From 30c8de495e40dea51ced600b13b8af40a7496f3e Mon Sep 17 00:00:00 2001 From: skidau Date: Fri, 3 Oct 2014 21:30:09 +1000 Subject: [PATCH] Re-added the change to make the dsp remaining block count zero-based. Fixes Dream Mix TV World Fighters. --- Source/Core/Core/HW/DSP.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/HW/DSP.cpp b/Source/Core/Core/HW/DSP.cpp index 5258933cae..9bbb998f15 100644 --- a/Source/Core/Core/HW/DSP.cpp +++ b/Source/Core/Core/HW/DSP.cpp @@ -435,7 +435,10 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base) // Audio DMA blocks remaining is invalid to write to, and requires logic on // the read side. mmio->Register(base | AUDIO_DMA_BLOCKS_LEFT, - MMIO::DirectRead(&g_audioDMA.remaining_blocks_count), + MMIO::ComplexRead([](u32) { + // remaining_blocks_count is zero-based. DreamMix World Fighters will hang if it never reaches zero. + return (g_audioDMA.remaining_blocks_count > 0 ? g_audioDMA.remaining_blocks_count - 1 : 0); + }), MMIO::InvalidWrite() );