hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.38k stars 2.19k forks source link

Abnormal graphical behaviour in Final Fantasy I and II since v0.8.1-209-g405ac23 due to #2580 (Regression, flickering window backgrounds in FF 1 and broken window backgrounds in FF 2) #2595

Closed solarmystic closed 11 years ago

solarmystic commented 11 years ago

Final Fantasy I:-

This game used to have working, static, blue backgrounds (default) in the the windows.

Since v0.8.1-209-g405ac23 (when https://github.com/hrydgard/ppsspp/pull/2580 https://github.com/raven02/ppsspp/commit/6a1b6407fdd9e7373b430f5be854f1d900071636 "Partially fix depth issues in multiple games" commit was merged into master https://github.com/hrydgard/ppsspp/commit/405ac236e646c091ca6987dd2639718784a45517), they now flicker intermittently.

Last revision to exhibit proper behaviour is v0.8.1-207-g6be8084.

Problem reproduction:-

  1. Start game in affected revision (0.8.1-209+) with default emulator settings.
  2. Load any save game and head to the status menu
  3. Graphical abnormality observed.

Short youtube videos comparing the present (abnormal) and previous (normal) behaviour:-

Abnormal behaviour in v0.8.1-209-g405ac23 http://www.youtube.com/watch?v=YZmLhiGjH9M&feature=youtu.be

Correct behaviour in v0.8.1-207-g6be8084. http://youtu.be/yAdPSpNBgUI

Temporary solution:-

Disabling Buffered Rendering fixes the flickering issue in the affected revisions http://youtu.be/YM1vYCcUIIg

Final Fantasy II:-

The game used to have functional blue (default) windows for dialogue and menus.

It does not display them anymore since v0.8.1-209-g405ac23 after @raven02's https://github.com/hrydgard/ppsspp/pull/2580 https://github.com/raven02/ppsspp/commit/6a1b6407fdd9e7373b430f5be854f1d900071636 "Partially fix depth issues in multiple games" pull request was merged into master https://github.com/hrydgard/ppsspp/commit/405ac236e646c091ca6987dd2639718784a45517.

Last revision displaying the correct graphical behaviour is v0.8.1-207-g6be8084.

Problem reproduction:-

  1. Start game using v0.8.1-209-g405ac23 or newer on default settings
  2. Start New Game
  3. Problem can be observed right away

Broken behaviour in v0.8.1-209-g405ac23

209

Correct behaviour in v0.8.1-207-g6be8084.

207

Temporary solution:-

Like FF I, disabling Buffered Rendering fixes this abnormality for now

209broff

DonelBueno commented 11 years ago

This commit has caused a glitch in MotoGP too.

sem ttulo

It only happens when Buffered Rendering is on. Any refresh on the buffer, like enabling/disabling SSAA and toggling between fullscreen and windowed, fixes it until you move the camera again.

It has also made the shadows disapear, regardless of the Buffered Rendering configuration.

dbz400 commented 11 years ago

For MotoGP, it is stencil issue .Has been fixed here d43a2f4 .However , i don't know whether it can fix FF1/II since i don't own those games and cannot test them .

solarmystic commented 11 years ago

@hrydgard

Please do not close this issue yet even after you merge @raven02's #2598 fix for MotoGP.

The FF games still need to be dealt with.

dbz400 commented 11 years ago

@solarmystic , for quick checkout on FFI/II , you can try this .

(rename from jpg to zip and extract) ppssppwindows

solarmystic commented 11 years ago

@raven02

Yep that fixed FF 1 and II as well, although your build is missing sound effects in those games for some reason.

I guess you should change the title of the pull request to reflect this new development.

dbz400 commented 11 years ago

Alright Thanks . (Missing sound effect is ok as my build is testing something on volume change )

dbz400 commented 11 years ago

@hrydgard / @unknownbrackets , regarding the depth issue fix . I think we still have one case missing (then would be prefect) however i have no idea what can be included to that bool depthMask to test it . (try to set something like glstate.depthChanged ?)

For example , Saint Seiya Omega and Gundam AGE Universe always require depth write to be TRUE in any cases in order to show ALL stuffs correctly however when depth test enabled , it returns FALSE which some scenes in-game still missing stuffs (When depth test disabled always return TRUE and that's why there're some missing stuff appears to be shown now)

    bool depthMask = (gstate.clearmode >> 10) & 1;
    if (gstate.isDepthTestEnabled()) {
        glstate.depthTest.enable();
        glstate.depthFunc.set(GL_ALWAYS);
        glstate.depthWrite.set(depthMask ? GL_TRUE : GL_FALSE);
    } else {
        glstate.depthTest.enable();
        glstate.depthFunc.set(GL_ALWAYS);
        glstate.depthWrite.set(GL_TRUE);
    } 
dbz400 commented 11 years ago

This issue should be resolved. @solarmystic , close it if you okay .

solarmystic commented 11 years ago

Okay, Closing it since its fixed.