core vdp, fix s/h handling for layer window
authorkub <derkub@gmail.com>
Mon, 17 Feb 2025 22:04:59 +0000 (23:04 +0100)
committerkub <derkub@gmail.com>
Mon, 17 Feb 2025 22:04:59 +0000 (23:04 +0100)
pico/draw.c
pico/draw_arm.S

index b62333c..f1d92f4 100644 (file)
@@ -629,8 +629,9 @@ static void DrawWindow(int tstart, int tend, int prio, int sh,
   tend<<=1;\r
 \r
   // Draw tiles across screen:\r
-  if (!sh)\r
+  if (!sh || !prio)\r
   {\r
+    sh = (sh ? 0x80 : 0x00); // sh and low prio -> shadow\r
     for (; tilex < tend; tilex++)\r
     {\r
       int dx, pal;\r
@@ -640,15 +641,15 @@ static void DrawWindow(int tstart, int tend, int prio, int sh,
         est->rendstatus |= PDRAW_WND_DIFF_PRIO;\r
         continue;\r
       }\r
-      if (code==blank) continue;\r
 \r
+      if (code==blank) continue;\r
       dx = 8 + (tilex << 3);\r
       DrawTile(~0,yshift,ymask,code,0);\r
     }\r
   }\r
   else\r
   {\r
-    sh <<= 6;\r
+    sh = lflags; // sh and high prio -> no shadow (lflags to suppress warning)\r
     for (; tilex < tend; tilex++)\r
     {\r
       int dx, pal;\r
@@ -659,14 +660,12 @@ static void DrawWindow(int tstart, int tend, int prio, int sh,
         continue;\r
       }\r
 \r
-      if (prio) {\r
-        int *zb = (int *)(est->HighCol+8+(tilex<<3));\r
-        *zb++ &= 0x7f7f7f7f;\r
-        *zb   &= 0x7f7f7f7f;\r
-      }\r
-      if(code==blank) continue;\r
+      // sh and high prio -> clear shadow\r
+      int *zb = (int *)(est->HighCol+8+(tilex<<3));\r
+      *zb++ &= 0x7f7f7f7f;\r
+      *zb   &= 0x7f7f7f7f;\r
 \r
-      sh = (sh & ~0x80) | (prio << 7);\r
+      if(code==blank) continue;\r
       dx = 8 + (tilex << 3);\r
       DrawTile(~0,yshift,ymask,code,0);\r
     }\r
index 40d5c44..05a2ece 100644 (file)
@@ -1520,7 +1520,7 @@ DrawWindow:
     orr     r4, r4, r4, lsl #16\r
     mov     r5, r4\r
     stmia   r1!, {r4,r5}\r
-    b       .dwloop_nor1       @ we incremeted r1 ourselves\r
+    b       .dwloop_nor1       @ we incremented r1 ourselves\r
 \r
 .dw_shadow:\r
     tst     r6, #1             @ hi pri?\r