md, fix vdp reset handling
authorkub <derkub@gmail.com>
Fri, 12 Apr 2024 18:08:33 +0000 (20:08 +0200)
committerkub <derkub@gmail.com>
Fri, 12 Apr 2024 18:08:33 +0000 (20:08 +0200)
pico/pico.c
pico/videoport.c

index 1d60afd..3402657 100644 (file)
@@ -77,6 +77,15 @@ void PicoPower(void)
   // my MD1 VA6 console has this in IO\r
   PicoMem.ioports[1] = PicoMem.ioports[2] = PicoMem.ioports[3] = 0xff;\r
 \r
+  // powerup default VDP register values from TMSS BIOS\r
+  Pico.video.reg[0] = Pico.video.reg[1] = 0x04;\r
+  Pico.video.reg[0xc] = 0x81;\r
+  Pico.video.reg[0xf] = 0x02;\r
+  SATaddr = 0x0000;\r
+  SATmask = ~0x3ff;\r
+\r
+  Pico.video.hint_irq = (PicoIn.AHW & PAHW_PICO ? 5 : 4);\r
+\r
   if (PicoIn.AHW & PAHW_MCD)\r
     PicoPowerMCD();\r
 \r
index 1cf93a4..b4d6767 100644 (file)
@@ -982,6 +982,7 @@ PICO_INTERNAL_ASM void PicoVideoWrite(u32 a,unsigned short d)
           case 0x0c:\r
             // renderers should update their palettes if sh/hi mode is changed\r
             if ((d^dold)&8) Pico.m.dirtyPal = 1;\r
+            if ((d^dold)&1) Pico.est.rendstatus |= PDRAW_DIRTY_SPRITES;\r
             break;\r
           default:\r
             return;\r
@@ -1164,22 +1165,14 @@ unsigned char PicoVideoRead8HV_L(int is_from_z80)
 \r
 void PicoVideoReset(void)\r
 {\r
-  Pico.video.hint_irq = (PicoIn.AHW & PAHW_PICO ? 5 : 4);\r
   Pico.video.pending_ints=0;\r
+  Pico.video.reg[1] &= ~0x40; // TODO verify display disabled after reset\r
+  Pico.video.reg[10] = 0xff; // HINT is turned off after reset\r
+  Pico.video.status = 0x3428 | Pico.m.pal; // 'always set' bits | vblank | collision | pal\r
 \r
-  // default VDP register values (based on Fusion)\r
-  Pico.video.reg[0] = Pico.video.reg[1] = 0x04;\r
-  Pico.video.reg[0xc] = 0x81;\r
-  Pico.video.reg[0xf] = 0x02;\r
-  SATaddr = 0x0000;\r
-  SATmask = ~0x1ff;\r
-\r
-  memset(VdpSATCache, 0, sizeof(VdpSATCache));\r
   memset(&VdpFIFO, 0, sizeof(VdpFIFO));\r
   Pico.m.dirtyPal = 1;\r
 \r
-  Pico.video.status = 0x3428 | Pico.m.pal; // 'always set' bits | vblank | collision | pal\r
-\r
   PicoDrawBgcDMA(NULL, 0, 0, 0, 0);\r
   PicoVideoFIFOMode(0, 1);\r
 }\r