mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
core, regression fix for h32 scaling
This commit is contained in:
parent
17c1401b44
commit
5864c4214a
1 changed files with 9 additions and 8 deletions
17
pico/draw.c
17
pico/draw.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue