diff --git a/progressive_field/README.md b/progressive_field/README.md index e47badc..0495b7e 100644 --- a/progressive_field/README.md +++ b/progressive_field/README.md @@ -1,8 +1,7 @@ # Progressive Field ## Description -Checks the behaviour of FIELD(in CSR) when the CMOD(in SMODE1) -and VFP(in SYNCHV) bits are changed. +Checks the behaviour of FIELD(in CSR) when the VFP(in SYNCHV) bits are changed. ## PCSX2 Behaviour PCSX2 would swap FIELD unconditionally, this caused some progressive games to @@ -16,20 +15,16 @@ This was later found to be incorrect behaviour. ## Findings The original finding determined that when the video mode is set to progressive, FIELD is set. - Turns out, the SMODE2 interlace bit has no control over FIELD behaviour. -The actual behaviour is determined by CMOD (bits 13 & 14 in SMODE1) -and VFP (bottom bits in SYNCV) +The actual behaviour is determined by VFP (bottom bits in SYNCV) -![img](https://i.imgur.com/dsFYHm5.jpg) ## Related PR(s) or Issue(s) https://github.com/PCSX2/pcsx2/pull/6256 https://github.com/PCSX2/pcsx2/pull/6342 + ## Expected Results -When testing CMOD 1, odd VFPs should say `FIELD IS CHANGING` - -When testing CMOD 0, no matter the VFP, it should say `FIELD IS NOT CHANGING` +When testing odd VFPs should say `FIELD IS CHANGING`, even VFPs should say `FIELD IS NOT CHANGING` diff --git a/progressive_field/prog_field.c b/progressive_field/prog_field.c index c070b54..c874226 100644 --- a/progressive_field/prog_field.c +++ b/progressive_field/prog_field.c @@ -52,11 +52,6 @@ int main(void) // Enable VSYNC event GSCSR = 0x8; - printf("Checking FIELD when CMOD is set to 1\n"); - SMODE1 |= (1 << 13); - test_gs_field(); - printf("Checking FIELD when CMOD is set to 0\n"); - SMODE1 &= ~(2 << 13); test_gs_field(); SleepThread(); diff --git a/progressive_field/prog_field.elf b/progressive_field/prog_field.elf index c65f053..4622c45 100644 Binary files a/progressive_field/prog_field.elf and b/progressive_field/prog_field.elf differ