-
-
Notifications
You must be signed in to change notification settings - Fork 326
[WIP] Fix vertical lines #897
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
quickly tested this on few games. ACE: Click to expand |
|
So far, Lego Star Wars was the toughest case for me. We did talk briefly about rounding - maybe the final fix is two-fold? Offsetting the center, and then some rounding magic? |
3c456b4 to
69f9634
Compare
| switch(nRegister) | ||
| { | ||
| case GS_REG_ST: | ||
| m_nReg[nRegister] &= 0xFFFFFF00FFFFFF00; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These (ST) are floating point values. Does it makes sense to mask out the last 8 bits of these values?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, thats what the GS manual explicitly states.
69f9634 to
699fc5c
Compare
699fc5c to
21371d1
Compare
21371d1 to
940691c
Compare
3cf8f78 to
3869d56
Compare
3869d56 to
d579e76
Compare
d579e76 to
998c172
Compare
998c172 to
7de8057
Compare
According to the GS manual, the 8 lower bits of S and T of GS_REG_ST must be rounded down. This commit just masks them away, which just serves that purpose.
The PS2 assumes the 0,0 pixel at the center of the screen. OpenGL (at least) assumes the 0,0 pixel at the top left. When the screen width/height is even, this causes a slight discrepancy.
7de8057 to
01ffa38
Compare


Didn't know what to call this PR - it fixes quite a bit more then than the title suggests.
The PS2 assumes the 0,0 pixel at the center of the screen. OpenGL (at least) assumes the 0,0 pixel at the top left. When the screen width/height is even, this causes a slight discrepancy of half a pixel.
In all games I tested this yields very neat results, and fixes all kinds of slight visual artifacts. For me, notable text rendering and text boxes in Suikoden 5, as well as briefings in Ring of Red.
This needs more testing with different games. Together with #895, this fixes most visual problems of the games that start for me. But for cleanness purposes, the following screenshots are without the fixes in #895.
Lego Star Wars II
Click to expand!
This issue is only visible in tandem with #895, so differences are show to this PR here!
Ring of Red
Click to expand!
Suikoden 5
Click to expand!
Look especially at the question mark at the bottom!