vdp fifo, bugfix
authorkub <derkub@gmail.com>
Wed, 22 Apr 2020 19:51:35 +0000 (21:51 +0200)
committerkub <derkub@gmail.com>
Wed, 22 Apr 2020 19:51:35 +0000 (21:51 +0200)
pico/videoport.c

index dac74dc..f9fd6ec 100644 (file)
@@ -91,8 +91,10 @@ static __inline int AdvanceFIFOEntry(struct VdpFIFO *vf, struct PicoVideo *pv, i
   // if entry has been processed...\r
   if (cnt == 0) {\r
     // remove entry from FIFO\r
-    if (vf->fifo_ql)\r
+    if (vf->fifo_ql) {\r
+      vf->fifo_queue[vf->fifo_qx] = 0;\r
       vf->fifo_qx = (vf->fifo_qx+1) & 7, vf->fifo_ql --;\r
+    }\r
     // start processing for next entry if there is one\r
     if (vf->fifo_ql) {\r
       b = vf->fifo_queue[vf->fifo_qx] & FQ_BYTE;\r
@@ -230,7 +232,7 @@ int PicoVideoFIFOWrite(int count, int flags, unsigned sr_mask,unsigned sr_flags)
   if (count && vf->fifo_ql < 8) {\r
     // determine queue position for entry\r
     int x = (vf->fifo_qx + vf->fifo_ql - 1) & 7;\r
-    if (unlikely(vf->fifo_ql && (vf->fifo_queue[x] & FQ_BGDMA))) {\r
+    if (unlikely(vf->fifo_queue[x] & FQ_BGDMA)) {\r
       // CPU FIFO writes have priority over a background DMA Fill/Copy\r
       // XXX if interrupting a DMA fill, fill data changes\r
       if (x == vf->fifo_qx) { // overtaking to queue head?\r