-
-
Notifications
You must be signed in to change notification settings - Fork 256
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
[WIP] Fix vertical lines #897
base: master
Are you sure you want to change the base?
Conversation
quickly tested this on few games. ACE: Click to expand![Screenshot 2020-05-03 at 02 53 49](https://user-images.githubusercontent.com/5013823/80896786-0c034c00-8cea-11ea-9958-c6edc1d6fb16.png) |
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
@@ -611,6 +611,9 @@ void CGSHandler::WriteRegisterImpl(uint8 nRegister, uint64 nData) | |||
|
|||
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!