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; 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); } }