[GH-ISSUE #368] Wipeout Pure graphics issues (alpha, stencil, colors) #106

Closed
opened 2026-03-17 03:42:33 +03:00 by kerem · 8 comments
Owner

Originally created by @ghost on GitHub (Jan 8, 2013).
Original GitHub issue: https://github.com/hrydgard/ppsspp/issues/368

Nothing obivous in the log but wipeout pure has some possible alpha blending issues. It also runs at about 400fps, just to make it extra challenging ;)

wipeoutpure

This is the only graphics thing in the log:

 26:46:634 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:647 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:658 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:668 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:678 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:691 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:705 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:722 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:739 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:756 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:772 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:789 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:805 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:834 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:844 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:855 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:872 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:889 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:910 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:923 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:940 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:958 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:973 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:46:990 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:006 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:023 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:040 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:056 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:073 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:084 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:097 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:109 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:129 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:143 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:159 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:176 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:193 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:212 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:227 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:243 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:260 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:277 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:293 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:309 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:327 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:343 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:360 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:377 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:394 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:409 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:426 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:443 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:460 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:479 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:494 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:510 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:527 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:544 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:561 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:576 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:594 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:609 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:627 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:644 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:660 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:677 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:694 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000
26:47:710 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000

Originally created by @ghost on GitHub (Jan 8, 2013). Original GitHub issue: https://github.com/hrydgard/ppsspp/issues/368 Nothing obivous in the log but wipeout pure has some possible alpha blending issues. It also runs at about 400fps, just to make it extra challenging ;) ![wipeoutpure](https://f.cloud.github.com/assets/1208293/51881/637e3e42-59e2-11e2-9351-a4dbbcea487d.jpg) This is the only graphics thing in the log: ``` 26:46:634 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:647 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:658 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:668 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:678 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:691 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:705 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:722 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:739 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:756 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:772 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:789 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:805 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:834 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:844 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:855 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:872 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:889 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:910 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:923 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:940 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:958 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:973 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:46:990 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:006 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:023 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:040 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:056 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:073 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:084 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:097 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:109 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:129 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:143 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:159 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:176 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:193 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:212 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:227 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:243 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:260 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:277 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:293 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:309 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:327 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:343 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:360 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:377 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:394 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:409 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:426 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:443 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:460 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:479 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:494 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:510 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:527 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:544 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:561 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:576 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:594 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:609 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:627 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:644 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:660 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:677 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:694 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 26:47:710 GLES\DisplayListInterpreter.cpp:561 E[G3D]: Signal without wait. signal/end: 0200 0000 ```
kerem closed this issue 2026-03-17 03:42:38 +03:00
Author
Owner

@hrydgard commented on GitHub (Jan 8, 2013):

Wow, I didn't realize it ran already, one of my favorite PSP games :)

Will have to look at this when I'm done with initial ARM jit work :)

<!-- gh-comment-id:12021746 --> @hrydgard commented on GitHub (Jan 8, 2013): Wow, I didn't realize it ran already, one of my favorite PSP games :) Will have to look at this when I'm done with initial ARM jit work :)
Author
Owner

@ghost commented on GitHub (Jan 8, 2013):

I'm 99% certain it was one of the commits in the last 12 hours that did it. Lots of other stuff that wasn't working before now runs too but needs buffered rendering turned off (midnight run and silent hill for example)

<!-- gh-comment-id:12022694 --> @ghost commented on GitHub (Jan 8, 2013): I'm 99% certain it was one of the commits in the last 12 hours that did it. Lots of other stuff that wasn't working before now runs too but needs buffered rendering turned off (midnight run and silent hill for example)
Author
Owner

@hrydgard commented on GitHub (Jan 8, 2013):

Tried it now, it definitely has some issue with time, runs way too fast indeed :) I wonder what it's checking...

I think it's not just alpha blending but also stencil issues (and some R/B swaps too?). Stencil will be tricky because the PSP overloads the top alpha bit to be the stencil bit, which is not the case at all on PC.

<!-- gh-comment-id:12024187 --> @hrydgard commented on GitHub (Jan 8, 2013): Tried it now, it definitely has some issue with time, runs way too fast indeed :) I wonder what it's checking... I think it's not just alpha blending but also stencil issues (and some R/B swaps too?). Stencil will be tricky because the PSP overloads the top alpha bit to be the stencil bit, which is not the case at all on PC.
Author
Owner

@ghost commented on GitHub (Jan 9, 2013):

I wish I had more time, would probably be pretty easy to see what it is in the debugger.

Could it be the wait refered to in the message ( E[G3D]: Signal without wait. signal/end: 0200 0000 ) not existing? Maybe it does something funky with the audio buffer for timing? It was one of the first PSP games so who knows what fun and exciting things they would have done to work around issue, etc.

<!-- gh-comment-id:12024750 --> @ghost commented on GitHub (Jan 9, 2013): I wish I had more time, would probably be pretty easy to see what it is in the debugger. Could it be the wait refered to in the message ( E[G3D]: Signal without wait. signal/end: 0200 0000 ) not existing? Maybe it does something funky with the audio buffer for timing? It was one of the first PSP games so who knows what fun and exciting things they would have done to work around issue, etc.
Author
Owner

@hrydgard commented on GitHub (Jan 12, 2013):

Now fixed.

Wipeout still has other graphical problems: shadows are missing, the glow is missing and it looks a bit dark. But 60f9da3926 gets rid of a lot of the weird colored stuff in the screenshot at least.

<!-- gh-comment-id:12177071 --> @hrydgard commented on GitHub (Jan 12, 2013): Now fixed. Wipeout still has other graphical problems: shadows are missing, the glow is missing and it looks a bit dark. But 60f9da39263a1d36f8a15a9a3e14af1b504c7cdb gets rid of a lot of the weird colored stuff in the screenshot at least.
Author
Owner

@ghost commented on GitHub (Jan 12, 2013):

Cool, that's looking a lot better :)

<!-- gh-comment-id:12177753 --> @ghost commented on GitHub (Jan 12, 2013): Cool, that's looking a lot better :)
Author
Owner

@hrydgard commented on GitHub (Jan 12, 2013):

wpure

Got the stencil shadows working too :) It turned brighter in the process, not sure why.

Still many gfx bugs left though...

<!-- gh-comment-id:12180628 --> @hrydgard commented on GitHub (Jan 12, 2013): ![wpure](https://f.cloud.github.com/assets/130929/62120/43364e22-5cda-11e2-809e-2ea080da0aec.jpg) Got the stencil shadows working too :) It turned brighter in the process, not sure why. Still many gfx bugs left though...
Author
Owner

@hrydgard commented on GitHub (Jan 22, 2013):

The big issues are fixed so I'll close this for now, single-game issues should be used for more specific things.

<!-- gh-comment-id:12525058 --> @hrydgard commented on GitHub (Jan 22, 2013): The big issues are fixed so I'll close this for now, single-game issues should be used for more specific things.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ppsspp#106
No description provided.