From 02c2a505e096d8505be8afbadd161bbb0c8d3ec9 Mon Sep 17 00:00:00 2001 From: KyloRen97 <163339705+KyloRen97@users.noreply.github.com> Date: Wed, 13 Mar 2024 19:57:19 +0200 Subject: [PATCH 1/2] GSP_GPU: Fix framebuffer dirty bit --- src/core/hle/service/gsp/gsp_gpu.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/gsp/gsp_gpu.cpp b/src/core/hle/service/gsp/gsp_gpu.cpp index 374bbe3c6..914e07b03 100644 --- a/src/core/hle/service/gsp/gsp_gpu.cpp +++ b/src/core/hle/service/gsp/gsp_gpu.cpp @@ -362,7 +362,8 @@ void GSP_GPU::SignalInterruptForThread(InterruptId interrupt_id, u32 thread_id) auto* info = GetFrameBufferInfo(thread_id, screen_id); if (info->is_dirty) { system.GPU().SetBufferSwap(screen_id, info->framebuffer_info[info->index]); - info->is_dirty.Assign(false); + // Decompiling the GSP module shows that the dirty bit is assigned 1 for top screen, 0 for bottom + info->is_dirty.Assign(screen_id == 0); } } From 2f6765fc8a892c0661c9341047eaf97337ab3d4f Mon Sep 17 00:00:00 2001 From: KyloRen97 <163339705+KyloRen97@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:05:17 +0200 Subject: [PATCH 2/2] HLE DSP: Fix sample clamping in SimpleFilter --- src/audio_core/hle/filter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio_core/hle/filter.cpp b/src/audio_core/hle/filter.cpp index 6dcfc79a7..25f39a493 100644 --- a/src/audio_core/hle/filter.cpp +++ b/src/audio_core/hle/filter.cpp @@ -67,7 +67,7 @@ std::array SourceFilters::SimpleFilter::ProcessSample(const std::array y0; for (std::size_t i = 0; i < 2; i++) { const s32 tmp = (b0 * x0[i] + a1 * y1[i]) >> 15; - y0[i] = std::clamp(tmp, -32768, 32767); + y0[i] = std::clamp(tmp, -32768, 32768); } y1 = y0;