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
DarkTony93 opened this issue Apr 14, 2013 · 42 comments

Comments

Projects
None yet
@DarkTony93
Copy link

commented Apr 14, 2013

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

This comment has been minimized.

Copy link
Collaborator

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

This comment has been minimized.

Copy link
Contributor

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

This comment has been minimized.

Copy link
Collaborator

commented May 10, 2013

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

This comment has been minimized.

Copy link
Owner

commented May 10, 2013

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

This comment has been minimized.

Copy link

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

@raven02

This comment has been minimized.

Copy link
Contributor

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

This comment has been minimized.

Copy link

commented Sep 3, 2013

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

@raven02

This comment has been minimized.

Copy link
Contributor

commented Sep 3, 2013

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

@raven02

This comment has been minimized.

Copy link
Contributor

commented Sep 3, 2013

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

@unknownbrackets

This comment has been minimized.

Copy link
Collaborator

commented Sep 3, 2013

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

This comment has been minimized.

Copy link
Collaborator

commented Sep 12, 2013

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

This comment has been minimized.

Copy link
Collaborator

commented Sep 30, 2013

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]

@raven02

This comment has been minimized.

Copy link
Contributor

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

This comment has been minimized.

Copy link
Owner

commented Oct 14, 2013

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

This comment has been minimized.

Copy link
Owner

commented Oct 14, 2013

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...

@raven02

This comment has been minimized.

Copy link
Contributor

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

This comment has been minimized.

Copy link
Collaborator

commented Oct 15, 2013

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

This comment has been minimized.

Copy link
Collaborator

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

This comment has been minimized.

Copy link
Owner

commented Dec 14, 2013

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

This comment has been minimized.

Copy link
Collaborator

commented Dec 14, 2013

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

This comment has been minimized.

Copy link
Owner

commented Dec 14, 2013

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

On desktop, blit depth when not cleared.
Workaround for hrydgard#1283, makes Jeanne d'Arc playable.
@thedax

This comment has been minimized.

Copy link
Collaborator

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

This comment has been minimized.

Copy link

commented Jan 27, 2014

Its fixed, but game itself has wrong fps
#5154

@thedax

This comment has been minimized.

Copy link
Collaborator

commented Jan 27, 2014

That has nothing to do with this issue, though.

@DarkTony93

This comment has been minimized.

Copy link
Author

commented Jan 27, 2014

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

This comment has been minimized.

Copy link

commented Apr 7, 2015

Tested with latest build. LGTM:
image

@sum2012

This comment has been minimized.

Copy link
Collaborator

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

This comment has been minimized.

Copy link
Owner

commented Apr 7, 2015

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

@Neikiddo

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link
Collaborator

commented Sep 4, 2015

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

This comment has been minimized.

Copy link

commented Sep 5, 2015

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

@Plusman28

This comment has been minimized.

Copy link

commented Nov 21, 2015

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 changed the title Jeanne D'Arc - Invisible Dialogue Box and Models Jeanne D'Arc - Invisible Dialogue Box and Models (GLES2) Jan 18, 2016

@hrydgard

This comment has been minimized.

Copy link
Owner

commented Mar 14, 2018

@Plusman28 is this still a problem on GPD XD?

@Emulatorer

This comment has been minimized.

Copy link

commented Nov 7, 2018

The issue still happen :'(

@hrydgard

This comment has been minimized.

Copy link
Owner

commented Nov 7, 2018

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

@unknownbrackets

This comment has been minimized.

Copy link
Collaborator

commented Nov 7, 2018

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]

@Emulatorer

This comment has been minimized.

Copy link

commented Nov 7, 2018

@unknownbrackets sad to hear that :'(

@hrydgard

This comment has been minimized.

Copy link
Owner

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 Nov 7, 2018

@Emulatorer

This comment has been minimized.

Copy link

commented Dec 20, 2018

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

@hrydgard

This comment has been minimized.

Copy link
Owner

commented Dec 20, 2018

No, at least it shouldn't have.

@Emulatorer

This comment has been minimized.

Copy link

commented Dec 20, 2018

:'(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.