| Age | Commit message (Collapse) | Author |
|
Some widescreen hacks (see below) properly force anamorphic output, but
don't make the last projection in a frame 16:9, so Dolphin doesn't
display it correctly.
This changes the heuristic code to assume a frame is anamorphic based on
the total number of vertex flushes in 4:3 and 16:9 projections that
frame. It also adds a bit of "aspect ratio inertia" by making it harder
to switch aspect ratios, which takes care of aspect ratio flickering
that some games / widescreen hacks would be susceptible with the new
logic.
I've tested this on SSX Tricky's native anamorphic support, Tom Clancy's
Splinter Cell (it stayed in 4:3 the whole time), and on the following
widescreen hacks for which the heuristic doesn't currently work:
Paper Mario: The Thousand-Year Door (Gecko widescreen code from Nintendont)
C202F310 00000003
3DC08042 3DE03FD8
91EEF6D8 4E800020
60000000 00000000
04199598 4E800020
C200F500 00000004
3DE08082 3DC0402B
61CE12A2 91CFA1BC
60000000 387D015C
60000000 00000000
C200F508 00000004
3DE08082 3DC04063
61CEE8D3 91CFA1BC
60000000 7FC3F378
60000000 00000000
The Simpsons: Hit & Run (AR widescreen code from the wiki)
04004600 C002A604
04004604 C09F0014
04004608 FC002040
0400460C 4082000C
04004610 C002A608
04004614 EC630032
04004618 48220508
04041A5C 38600001
04224344 C002A60C
04224B1C 4BDDFAE4
044786B0 3FAAAAAB
04479F28 3FA33333
|
|
w=1. This fixes some games at higher IRs.
|
|
VideoBackends: Set the maximum range when the depth range is oversized.
|
|
|
|
Fixes Projection alignment in some N64 VC games. The original code forgot to multiply rawProjection[1] and rawProjection[3].
|
|
|
|
|
|
|
|
|
|
These provide the same semantics, however aggregate initialization
doesn't force the structs to be trivially copyable. memset, on the other
hand, does.
|
|
|
|
Some compilers don't have an automatic abs() overload for floats.
Doesn't really matter if they use the integer variant here, but
it's better to be explicit about the fact that we're using floats.
|
|
In the vertex shader we have control over the depth clipping planes,
so we don't have to offset every floating point value and lose accuracy.
|
|
|
|
|
|
|
|
|
|
This fixes the gxtest_depth hwtest.
|
|
|
|
|
|
|
|
VertexShaderManager: Add an epsilon hack to the perspective projection.
|
|
Also remedies places where the video backends and core rely on things
being indirectly included.
|
|
|
|
It may be a bit weird to see calls to static functions in
VertexManagerBase now, but at least it's easier to see what's going on.
|
|
|
|
|
|
|
|
Standard supported alignment -> out with compiler-specific.
|
|
|
|
|
|
The last heuristic wasn't quite smart enough and had a few
false positives in Mario Kart: Double Dash and Metroid prime 2.
Now we only activate if the game is rendering a 16:9
projection to a 4:3 viewport.
|
|
Someone suggested on IRC that we should make a database of memory
locations in GameCube games which contain the 'Widescreen' setting
so we can automatically detect if the game is in 4:3 or 16:9 mode.
But that's hardly optimal, when the game actually tells the gpu
what aspect ratio to render in. 10 min and 6 lines of code later,
this is the result. Not only does it detect the correct aspect ratio
it does so on the fly.
I'm a little suprised nobody thought about doing this before.
|
|
|
|
|
|
Various fixes to formatting and whitespace
|
|
The bug is fixed in version 347.52 of the drivers.
|
|
|
|
Also:
* Implement support for per-vertex PosMatrixIndex
* Only update zslope constant once when zfreeze is activated.
* Added a bunch of comments.
|
|
Had to re-do *ShaderManager so they saved their constant arrays
instead of completly rebuilding them on restore state.
|
|
- Calculate ZSlope every flush but only set PixelShader Constant on Reset Buffer when zfreeze
- Fixed another Pixel Shader bug in D3D that was giving me grief
|
|
Initial port of original zfreeze branch (3.5-1729) by neobrain into
most recent build of Dolphin.
Makes Rogue Squadron 2 very playable at full speed thanks to recent core
speedups made to Dolphin. Works on DirectX Video plugin only for now.
Enjoy! and Merry Xmas!!
|
|
|
|
|
|
Moved projection epsilon back to g_fProjectionMatrix[15]
|
|
scales vertices instead of just biasing.
|
|
|
|
|
|
Added projection matrix epsilon that fixes depth clipping issues in some games
|
|
This shader constant was previously used for depth remapping in D3D and for pixel center correction. Now it only serves one purpose and the new name makes it clear.
|