mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2024-11-14 13:27:41 -07:00
small fix
This commit is contained in:
parent
424c5755ea
commit
1aa86967b5
@ -880,9 +880,9 @@ void GPU::StartHBlank(u32 line) noexcept
|
|||||||
DispStat[0] |= (1<<1);
|
DispStat[0] |= (1<<1);
|
||||||
DispStat[1] |= (1<<1);
|
DispStat[1] |= (1<<1);
|
||||||
|
|
||||||
// not the correct timing, but... close enough i guess?
|
// TODO: not quite the correct update time, but... close enough i guess?
|
||||||
int scanline = (VCount == 262 ? 0 : (line+1));
|
int scanline = (VCount == 262 ? 0 : (line+1));
|
||||||
GPU3D.ScanlineSync(scanline);
|
if (!(scanline & 1)) GPU3D.ScanlineSync(scanline);
|
||||||
if (GPU3D.UnderflowFlagVCount == scanline) GPU3D.DispCnt |= (1<<12);
|
if (GPU3D.UnderflowFlagVCount == scanline) GPU3D.DispCnt |= (1<<12);
|
||||||
|
|
||||||
if (VCount < 192)
|
if (VCount < 192)
|
||||||
|
@ -2158,18 +2158,21 @@ void SoftRenderer::RenderThreadFunc(GPU& gpu)
|
|||||||
}
|
}
|
||||||
void SoftRenderer::ScanlineSync(int line)
|
void SoftRenderer::ScanlineSync(int line)
|
||||||
{
|
{
|
||||||
|
// only used in accurate mode (timings must be emulated)
|
||||||
if (Accuracy && RenderThreadRunning.load(std::memory_order_relaxed))
|
if (Accuracy && RenderThreadRunning.load(std::memory_order_relaxed))
|
||||||
{
|
{
|
||||||
if (line < 192)
|
if (line < 192)
|
||||||
// We need a scanline, so let's wait for the render thread to finish it.
|
{
|
||||||
// (both threads process scanlines from top-to-bottom,
|
// wait for two scanlines here, since scanlines render in pairs.
|
||||||
// so we don't need to wait for a specific row)
|
|
||||||
Platform::Semaphore_Wait(Sema_ScanlineCount);
|
Platform::Semaphore_Wait(Sema_ScanlineCount);
|
||||||
|
Platform::Semaphore_Wait(Sema_ScanlineCount);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u32* SoftRenderer::GetLine(int line)
|
u32* SoftRenderer::GetLine(int line)
|
||||||
{
|
{
|
||||||
|
// only wait in in-accurate mode (we've already waited for scanlines in accurate mode)
|
||||||
if (!Accuracy && RenderThreadRunning.load(std::memory_order_relaxed))
|
if (!Accuracy && RenderThreadRunning.load(std::memory_order_relaxed))
|
||||||
{
|
{
|
||||||
if (line < 192)
|
if (line < 192)
|
||||||
|
Loading…
Reference in New Issue
Block a user