test(prog_field): Update to reflect more findings.

This commit is contained in:
Ty Lamontagne
2022-07-24 12:09:15 -04:00
parent 883437dee3
commit 8892e26cf2
3 changed files with 4 additions and 14 deletions

View File

@@ -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`

View File

@@ -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();

Binary file not shown.