sort of a hack (as usual) but ohwell...
#define PSXGPU_FIELD (1u<<13)
// both must be set for interlace to work
-#define PSXGPU_ILACE_BITS (PSXGPU_ILACE | PSXGPU_DHEIGHT | PSXGPU_FIELD)
+#define PSXGPU_ILACE_BITS (PSXGPU_ILACE | PSXGPU_DHEIGHT)
#define HW_GPU_STATUS psxHu32ref(0x1814)
void psxHwWriteGpuSR(u32 value)
{
+ u32 old_sr = HW_GPU_STATUS, new_sr;
GPU_writeStatus(value);
gpuSyncPluginSR();
+ new_sr = HW_GPU_STATUS;
+ // "The Next Tetris" seems to rely on the field order after enable
+ if ((old_sr ^ new_sr) & new_sr & SWAP32(PSXGPU_ILACE))
+ frame_counter |= 1;
}
u32 psxHwReadGpuSR(void)