core, regression fix for h32 scaling
authorkub <derkub@gmail.com>
Sun, 11 Jun 2023 21:17:50 +0000 (21:17 +0000)
committerkub <derkub@gmail.com>
Sun, 11 Jun 2023 21:17:50 +0000 (21:17 +0000)
pico/draw.c

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