libretro / LRPS2

GNU General Public License v2.0
165 stars 48 forks source link

FMVs and screen size issues #136

Closed bslenul closed 8 months ago

bslenul commented 3 years ago

c6acc3827571a62e9e6f4e3ae8736f4f221b9d09 introduced issues with FMVs and screen size, very similar to #93 (although for GoW, only FMVs were affected). It doesn't happen in OpenGL.

Example in 007 - Nightfire:

https://user-images.githubusercontent.com/33353403/131046707-49f7ecf6-3a25-407d-bcaa-2dfa063623de.mp4

Haven't tried all my games, but after testing ~10 of them, the only game that displayed properly so far (FMVs and ingame) was Maximo - Ghosts to Glory.

inactive123 commented 3 years ago

@SeventySixx While I have duct-tape 'fixed' this for now, it's obvious that there's something wrong with the D3D11 implementation vs. GL when it comes to these screen sizes -

https://github.com/libretro/pcsx2/commit/2e252a3e744674a99d4d138d498b6b659bf72d1d

Another good game to test this with is Resident Evil: Code Veronica X. With the current values on D3D11, the game will constantly flicker back and forth between two screen sizes. If I change the hardcoded values for D3D11 from 640x480 to 640x448, then at least I don't get this flickering anymore, but I still get the odd frame that is different and it seems to cause some framepacing issues.

Using the same 'ClientRect' heuristic for GL and D3D leads to D3D being broken but GL outputting fine.

bslenul commented 3 years ago

Oh interesting, setting orig_h to "448" fixes GoW FMVs (#93), they don't flicker anymore.

inactive123 commented 3 years ago

yeah, what I guess is going on here is that some native frames are 640x448 in width/size, while others are 640x480. Hope we are able to fix this globally without a lot of hackery going on here. There must be some kind of scaling issues going on in the D3D11 renderer in PCSX2 that isn't the case on GL.