\r
SekCyclesBurnRun(PicoVideoFIFOWrite(len, FQ_FGDMA | (pvid->type == 1),\r
PVS_DMABG, SR_DMA | PVS_CPUWR));\r
+ // short transfers might have been completely conveyed to FIFO, adjust state\r
+ if ((pvid->status & SR_DMA) && VdpFIFO.fifo_total <= 4)\r
+ SetFIFOState(&VdpFIFO, pvid);\r
\r
if ((source & 0xe00000) == 0xe00000) { // Ram\r
base = (u16 *)PicoMem.ram;\r
// the vertical scroll value for this line must be read from VSRAM early,\r
// since the A/B tile row to be read depends on it. E.g. Skitchin, OD2\r
// in contrast, CRAM writes would have an immediate effect on the current\r
- // pixel. XXX think about different offset values for different RAM types\r
+ // pixel, so sync can be closer to start of actual image data\r
PicoVideoSync(InHblank(pvid->type == 3 ? 103 : 30)); // cram in Toy Story\r
\r
if (!(PicoIn.opt&POPT_DIS_VDP_FIFO))\r