Skip to content
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

Jeanne D'Arc - Invisible Dialogue Box and Models (GLES2) #1283

Closed
Antonio-Reikashi opened this issue Apr 14, 2013 · 42 comments
Closed

Jeanne D'Arc - Invisible Dialogue Box and Models (GLES2) #1283

Antonio-Reikashi opened this issue Apr 14, 2013 · 42 comments
Labels
Depth / Z Issue involves depth drawing parameters. No Feedback / Outdated?

Comments

@Antonio-Reikashi
Copy link

This game has some problems. While the in-game graphics were fixed in the latest builds, it is still impossible to play this game due to invisible dialogue boxes, characters' models, images and menus.
However you guys are amazing. Keep up the good work!!!

Device: iPhone 4S
PPSSPP Build: 7.5-3

Here there are two images that show the issues reported above. :)
In the first one there should be the Jeanne D'Arc logo and the opening menu (New Game, Continue, etc...). The latter is self explaining. :D

image
image

@sum2012
Copy link
Collaborator

sum2012 commented Apr 15, 2013

The game will black screen when not use real psp font.
ppsspp font Log:
http://www.mediafire.com/?7f492q9xlkjzk1a
Real psp font log:
http://www.mediafire.com/?cwvmyuqm3a01298

@Krude
Copy link
Contributor

Krude commented Apr 23, 2013

Yep, this issue sure exists.
This is PPSSPP currently, 7.6-48
ppsspp
This is what it SHOULD look like:
jpcsp

I can't comment on crashes when using non-psp fonts, but here's a log of the start screen with the localized version.
http://pastebin.com/iwDSDY8A

@unknownbrackets
Copy link
Collaborator

Frame dump:

https://gist.github.com/unknownbrackets/5553127

By the way, I keep seeing alpha test using ff0107 and such. Probably the ff is a mask on the alpha value? Hopefully games don't use it...

Anyway, I guess this is probably beziers, but not sure...

-[Unknown]

@hrydgard
Copy link
Owner

Yes, I think the mask specifies which bits of alpha to use in the test (that is, the GPU will AND the alpha value with this mask before doing the compare). We can't really emulate that with OpenGL ES 2.0 shaders due to lack of bitwise ops (although we could simulate some bit patterns like 0xF0 with multiplication and rounding and 0x0F with modulo and rounding). You could make it report for non-0xFF values only.

@papel
Copy link

papel commented Sep 2, 2013

Thank you, @raven02, the bezier problem is fixed.
However, this problem prevents the game from being playable.
http://forums.ppsspp.org/showthread.php?tid=1237&pid=46534#pid46534

@dbz400
Copy link
Contributor

dbz400 commented Sep 2, 2013

Yep , it is well-observerd that those characters are missing however we still have no idea how to get around it unfornaturely.

@papel
Copy link

papel commented Sep 3, 2013

Another bug with invisible characters, #1392, it may be related.

@dbz400
Copy link
Contributor

dbz400 commented Sep 3, 2013

That one should be more closely related to final fantasy one which character only shows in non buffered mode

@dbz400
Copy link
Contributor

dbz400 commented Sep 3, 2013

I did try to turn off stencil to see if it is hiding the character but it is not ..

@unknownbrackets
Copy link
Collaborator

I used DEBUG_TEXTURES, and there are a bunch of SetTexture() calls that are not visible. I'm guessing it's trying to draw them, one way or another.

-[Unknown]

@unknownbrackets
Copy link
Collaborator

Vertex decoders active while missing models should be visible:

P: 3 T: 3 Verts: 278760  (size: 20) - float UVs, float coords
P: 3 N: 3 T: 3 I: 2 Verts: 127794  (size: 32) - float UVs, float normals, float coords, u16 indexes
P: 3 N: 3 C: 7 T: 3 I: 2 Verts: 768913  (size: 36) - float UVs, ABGR 8888 colors, float normals, float coords, u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 114736  (size: 36) - float UVs, float normals, float coords, float weights (0), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 152712  (size: 40) - float UVs, float normals, float coords, float weights (1), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 80093  (size: 44) - float UVs, float normals, float coords, float weights (2), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 8181  (size: 48) - float UVs, float normals, float coords, float weights (3), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 27472  (size: 52) - float UVs, float normals, float coords, float weights (4), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 45955  (size: 56) - float UVs, float normals, float coords, float weights (5), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 124331  (size: 60) - float UVs, float normals, float coords, float weights (6), u16 indexes
P: 3 N: 3 T: 3 W: 3 I: 2 Verts: 515807  (size: 64) - float UVs, float normals, float coords, float weights (7), u16 indexes
P: 2 C: 7 Verts: 3232  (through) (size: 12) - through, ABGR 8888 colors, u16 coords

If I make it skip all draws that have a weightcount/weight type, nothing visible changes. The read weight values are all between 0.0 and 1.0, inclusive. They don't appear to be using spline/bezier stuff.

-[Unknown]

@unknownbrackets
Copy link
Collaborator

If I disable depth testing, then I see the models drawn on the white surface (although this causes them to be incorrectly drawn on top of each other.) It still doesn't work, but I see why. Yay.

In a frame:

Primary framebuffer: 0x00044000 (512 stride) 5551
Depthbuffer: 0x00088000 (512 stride)
Clear stencil/depth/color

Model framebuffer: 0x000cc000 (512 stride) 5551
REUSE depthbuffer
Clear stencil/color NOT depth
Draw stuff - expect existing depthbuffer <-- failure

So as far as I can tell, this game REQUIRES shared depthbuffers to work properly.

-[Unknown]

@dbz400
Copy link
Contributor

dbz400 commented Oct 14, 2013

Interesting that skipping GE_COMP_GEQUAL , all characters show up though overlapped somehow.

        if (gstate.getDepthTestFunction() != GE_COMP_GEQUAL)
            glstate.depthFunc.set(ztests[gstate.getDepthTestFunction()]); 

screen00045

@hrydgard
Copy link
Owner

That just seems to turn off depth testing, look how broken they look. However, that clearly points in the direction that this is a depth buffer issue somehow.

@hrydgard
Copy link
Owner

There's one annoyance if we are to implement shared depth buffers btw - on most devices, the fastest and sometimes only depth buffer format is D24S8 where you interleave stencil and depth, which locks a specific stencil buffer to a depth buffer, while on the PSP, stencil should really be associated with the color buffer as it overlays alpha.

I guess one could hope that the games that rely on shared stencil buffers might not also do stencil tricks...

@dbz400
Copy link
Contributor

dbz400 commented Oct 14, 2013

I see. I tested few other games that used GE_COMP_LESS or GE_COMP_LEQUAL and they all look fine however except GE_COMP_GEQUAL .Feel strange or may be just concidence

@unknownbrackets
Copy link
Collaborator

Yeah, that is annoying.

When creating a buffer, we should also be "within" its first draw. So if clearmode is on and includes depth, it's likely we don't need to share anything ever.

One way or another this'll probably end up being hacky... ugh.

-[Unknown]

@unknownbrackets
Copy link
Collaborator

unknownbrackets commented Dec 14, 2013

Is it possible to just blit the depth when switching if we can detect this accurately enough? Seems like glBlitFramebuffer won't work on gles2, but maybe will on gles3.

-[Unknown]

@hrydgard
Copy link
Owner

Yes, it should be. But sharing depth buffers between FBOs is also possible, so maybe we should try to extend the api in native/gfx_es2/fbo and do that first. We should add a depth buffer cache just like the frame buffer cache, and create FBOs for the combinations that we see. Might be a little complicated.

@unknownbrackets
Copy link
Collaborator

Well, Jeanne d'Arc is also using various stencil INCRs on a 5551 texture when it expects the depth to have been reused (it uses this primarily for the alpha though, so maybe that's okay...)

-[Unknown]

@hrydgard
Copy link
Owner

Well on the PSP, depth is "independent" of stencil as stencil is in the color buffer as alpha so that shouldn't be any more of an issue than it already is.. well, except that on PC we do use combined 24/8 depth stencil on some gpus...

Anyway, feel free to try glBlitFramebuffer, it is very likely to be available on your PC GPU. If it fixes it on PC but not old mobile devices then so be it for now. For example I will soon add dual source alpha blending which will fix a lot of the alpha problems without multipassing, but it won't work on mobile as no mobile GPU supports that extension.

unknownbrackets added a commit to unknownbrackets/ppsspp that referenced this issue Jan 4, 2014
Workaround for hrydgard#1283, makes Jeanne d'Arc playable.
@thedax
Copy link
Collaborator

thedax commented Jan 27, 2014

Should this be closed then? The issue's been worked around/fixed for almost a month. Or are most mobile devices still out of luck, in which case this issue is basically for GLES only?

@pinguallyj
Copy link

Its fixed, but game itself has wrong fps
#5154

@thedax
Copy link
Collaborator

thedax commented Jan 27, 2014

That has nothing to do with this issue, though.

@Antonio-Reikashi
Copy link
Author

This hasn't been fixed on iOS, so I guess on mobile in general. While dialogues are visible, those characters models are still invisible. I'm using the latest revision available (0.9.6-594-g7ed88ce). Is it fixable?

@ppmeis
Copy link
Contributor

ppmeis commented Apr 7, 2015

Tested with latest build. LGTM:
image

@sum2012
Copy link
Collaborator

sum2012 commented Apr 7, 2015

I remember some people who reported in chinese ppsspp forum that still see invisible because their phone does not support opengl es 3.0

@hrydgard
Copy link
Owner

hrydgard commented Apr 7, 2015

Yup, that's still the case unfortunately. It does work on ES 3.0+.

@Neikiddo
Copy link

Neikiddo commented Sep 4, 2015

Just recently redownloaded ppsspp 1.0.1. Loaded up Jeanne D' Arc just fine, before it was the issue with the sprites not showing up in battle (game play moving on their own, they would). Everything is runnign fine now, its great. But after the first battle, after the animated scene with the little prince and it goes back to showing Jeanne with a black background. It crashes right there.

Running:
Dell XPS 15
Windows 10 64 bit
8gb Ram
Intel Core i5 2.50 ghz

I didn't mess with any settings when i downloaded ppsspp, so it all should be defaulted already.
ddwqqdw

@ofry
Copy link

ofry commented Sep 4, 2015

Neikiddo, try the latest dev version from http://buildbot.orphis.net/ppsspp/index.php?m=fulllist
Latest version is v1.0.1-865-g825662d now

@unknownbrackets
Copy link
Collaborator

On Windows 10, make sure to update your video card drivers. There have been bugs and issues in them. Windows 10 was just released, and like with all new things, there have been bugs.

-[Unknown]

@Neikiddo
Copy link

Neikiddo commented Sep 5, 2015

I just did both of your guys suggestions (new dev came out today actually), still gettin that same crash.

@Plusman28
Copy link

Hey!

I am using a GPD XD, which actually offers GLES 3.0. But there is still that problem with the partielly visible characters. Tested latest official and latest build. Why is that?

@unknownbrackets unknownbrackets added the Depth / Z Issue involves depth drawing parameters. label Dec 30, 2015
@unknownbrackets unknownbrackets changed the title Jeanne D'Arc - Invisible Dialogue Box and Models Jeanne D'Arc - Invisible Dialogue Box and Models (GLES2) Jan 18, 2016
@hrydgard
Copy link
Owner

@Plusman28 is this still a problem on GPD XD?

@ghost
Copy link

ghost commented Nov 7, 2018

The issue still happen :'(

@hrydgard
Copy link
Owner

hrydgard commented Nov 7, 2018

So does it look like any of the above screenshots, or can you provide a new one?

@unknownbrackets
Copy link
Collaborator

Well, it requires depth copying which isn't supported on GLES2. So for a Mali-450, unfortunately it's expected that it would still happen.

It should work properly on GLES3 devices.

-[Unknown]

@ghost
Copy link

ghost commented Nov 7, 2018

@unknownbrackets sad to hear that :'(

@hrydgard
Copy link
Owner

hrydgard commented Nov 7, 2018

Oh right. I think we can close this, anyway. It might be possible to hack around the issue by sharing depth buffers, but since stencil and color are tightly coupled that is sure to break many other effects.

@hrydgard hrydgard closed this as completed Nov 7, 2018
@ghost
Copy link

ghost commented Dec 20, 2018

GPU: Fix curve breakage due to cull flipping #11674 fixed this even in OGL 2.0?

@hrydgard
Copy link
Owner

No, at least it shouldn't have.

@ghost
Copy link

ghost commented Dec 20, 2018

:'(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Depth / Z Issue involves depth drawing parameters. No Feedback / Outdated?
Projects
None yet
Development

No branches or pull requests