core, regression fix for h32 scaling

This commit is contained in:
kub 2023-06-11 21:17:50 +00:00
parent 17c1401b44
commit 5864c4214a

View file

@ -1915,20 +1915,20 @@ PICO_INTERNAL void PicoFrameStart(void)
// prepare to do this frame // prepare to do this frame
est->rendstatus = 0; est->rendstatus = 0;
if ((PicoIn.AHW & PAHW_32X) && (*est->PicoOpt & POPT_ALT_RENDERER)) if (PicoIn.AHW & PAHW_32X) // H32 upscaling, before mixing in 32X layer
est->rendstatus |= PDRAW_BORDER_32; // no scaling for fastest est->rendstatus = (*est->PicoOpt & POPT_ALT_RENDERER) ?
else if (PicoIn.AHW & PAHW_32X) // H32 upscaling, before mixing in 32X layer PDRAW_BORDER_32 : PDRAW_32X_SCALE|PDRAW_SOFTSCALE;
est->rendstatus |= PDRAW_32X_SCALE|PDRAW_SOFTSCALE;
else if (PicoIn.opt & POPT_EN_SOFTSCALE)
est->rendstatus |= PDRAW_SOFTSCALE;
else if (!(PicoIn.opt & POPT_DIS_32C_BORDER)) else if (!(PicoIn.opt & POPT_DIS_32C_BORDER))
est->rendstatus |= PDRAW_BORDER_32; est->rendstatus |= PDRAW_BORDER_32;
if ((PicoIn.opt & POPT_EN_SOFTSCALE) && !(*est->PicoOpt & POPT_ALT_RENDERER))
est->rendstatus |= PDRAW_SOFTSCALE;
if ((est->Pico->video.reg[12] & 6) == 6) if ((est->Pico->video.reg[12] & 6) == 6)
est->rendstatus |= PDRAW_INTERLACE; // interlace mode est->rendstatus |= PDRAW_INTERLACE; // interlace mode
if (!(est->Pico->video.reg[12] & 1)) { if (!(est->Pico->video.reg[12] & 1)) {
est->rendstatus |= PDRAW_32_COLS; est->rendstatus |= PDRAW_32_COLS;
if (est->rendstatus & PDRAW_BORDER_32) { if (!(est->rendstatus & PDRAW_SOFTSCALE)) {
columns = 256; columns = 256;
coffs = 32; coffs = 32;
} }
@ -1945,7 +1945,8 @@ PICO_INTERNAL void PicoFrameStart(void)
rendlines = lines; rendlines = lines;
// mode_change() might reset rendstatus_old by calling SetColorFormat // mode_change() might reset rendstatus_old by calling SetColorFormat
emu_video_mode_change(loffs, lines, coffs, columns); emu_video_mode_change(loffs, lines, coffs, columns);
rendstatus_old = est->rendstatus & (PDRAW_INTERLACE|PDRAW_32_COLS|PDRAW_30_ROWS); rendstatus_old = est->rendstatus & (PDRAW_BORDER_32|PDRAW_INTERLACE|
PDRAW_32X_SCALE|PDRAW_SOFTSCALE|PDRAW_32_COLS|PDRAW_30_ROWS);
// mode_change() might clear buffers, redraw needed // mode_change() might clear buffers, redraw needed
est->rendstatus |= PDRAW_SYNC_NEEDED; est->rendstatus |= PDRAW_SYNC_NEEDED;
} }