Project

General

Profile

Actions

Emulator Issues #13136

closed

Vertex Explosion in Pocoyo Racing

Added by ZephyrSurfer about 1 year ago. Updated about 1 year ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
Yes
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
3.5-594
Fixed in:
5.0-18171

Description

Game Name?

Pocoyo Racing

Game ID? (right click the game in the game list, Properties, Info tab)

SPCPZS

MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)

8b30cbea7c2d906015e0da8629123305

What's the problem? Describe what went wrong.

Playing on the level "beach" (possibly others) will cause vertex explosions.

Select "Grand Prix"
Select "1 player"
Select "Configure"
Select any character (Pocoyo for example)
Select any car (Racing Car for example)
Select "Ocean" for environment
Select "Beach" for circuit
Select any difficulty (easy for example)
Select any number of stars (24 stars for example)
Press 2 when game loads (next)
When game loads vertex explosions will be visible

This can be seen here:
https://youtu.be/keKqhhaAYgU?t=369

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

Yes, 5.0-18143

Is the issue present in the latest stable version?

Yes, 5.0

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)

The issue started in 3.5-594 -> https://dolphin-emu.org/download/dev/8d5299c20b69f524b20a8d9451aaf754b36690cc/

If your issue is a graphical issue, please attach screenshots and record a three frame fifolog of the issue if possible. Screenshots showing what it is supposed to look like from either console or older builds of Dolphin will help too. For more information on how to use the fifoplayer, please check here: https://wiki.dolphin-emu.org/index.php?title=FifoPlayer

[Attach any fifologs if possible, write a description of fifologs and screenshots here to assist people unfamiliar with the game.]

What are your PC specifications? (CPU, GPU, Operating System, more)

4790k
1060 6GB
Windows 10
16GB DDR3

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

Let me know, I'll see what else I can do.


Files

explosion_beach_pocoyo.zip (2.67 MB) explosion_beach_pocoyo.zip Beach level with explosions present ZephyrSurfer, 01/02/2023 02:25 AM
SPCPZS_3.5-564.png (82.6 KB) SPCPZS_3.5-564.png Working ZephyrSurfer, 01/02/2023 02:31 AM
SPCPZS_3.5-594.png (95.1 KB) SPCPZS_3.5-594.png Broken ZephyrSurfer, 01/02/2023 02:32 AM
SPCPZS_5.0-18027.png (118 KB) SPCPZS_5.0-18027.png Broken on Current Builds Too ZephyrSurfer, 01/02/2023 02:40 AM
SPCPZS_5.0-18027.png (92.2 KB) SPCPZS_5.0-18027.png Broken on Current Builds Too (fifolog 2) ZephyrSurfer, 01/02/2023 02:47 AM
explosion_mirrored_beach_pocoyo_intro_2.zip (2.64 MB) explosion_mirrored_beach_pocoyo_intro_2.zip Mirrored Beach level intro with explosions present ZephyrSurfer, 01/02/2023 03:28 AM

Related issues 3 (0 open3 closed)

Related to Emulator - Emulator Issues #6135: Super Mario Sunshine Grass Broken by Vertex Loader CleanupFixed

Actions
Related to Emulator - Emulator Issues #10312: VertexManagerBase.cpp:95 E[Video]: Too little remaining index values. Use 32-bit or reset them on flush. (non-fatal)Fixed

Actions
Related to Emulator - Emulator Issues #13453: Trauma Team: Skeleton bug (Demons & Death mission)Fixed

Actions
Actions #3

Updated by JMC4789 about 1 year ago

  • Status changed from New to Accepted
  • Regression start set to 3.5-594
Actions #4

Updated by pokechu22 about 1 year ago

  • Regression changed from No to Yes

Can you upload a longer fifolog? This one only contains 1 frame of actual content (the first and last frames are it clearing the screen), and (possibly relatedly) the fifoplayer only is willing to loop it about 16 times before it stops drawing anything and only gives a green screen. A 9-frame-long one would probably work better.

This fifolog does appear to render correctly using the hardware fifoplayer (though it doesn't behave super well). The software vertex loader still produces vertex explosions.

Actions #5

Updated by ZephyrSurfer about 1 year ago

Here's a 9 frame fifolog (recorded with default settings 5.0-18027). It looks like it displays correctly with "Store XFB Copies to Texture Only" Disabled or using 4.0 or 5.0 before hybrid XFB with XFB disabled.

I have used default settings to record it though. Is this one okay?

Actions #6

Updated by ZephyrSurfer about 1 year ago

Or rather it doesn't look quite right currently. It's got a bit of an offset issue.

Actions #7

Updated by pokechu22 about 1 year ago

Thanks, that one should work. The offsetting is weird (and seems to only happen on even frames, the ones that only consist of a copy), but things don't break if I leave the fifoplayer running, and I can change the object range and isolate just the flags (object 12) as long as I loop several frames of the fifolog.

Actions #8

Updated by pokechu22 about 1 year ago

Object 12 includes this:

00049f87:  PRIMITIVE GX_DRAW_TRIANGLES (2) (90)  65535 vertices 6 bytes/vertex 393210 total bytes
000a9f84:  PRIMITIVE GX_DRAW_TRIANGLES (2) (90)  3681 vertices 6 bytes/vertex 22086 total bytes

65535 is the maximum value for the number of vertices, and also is divisible by 3 (21845 * 3). I'm guessing that this maximum value is causing issues. The actual vertex data does not use an index above 0x8000 (and in particular does not use 0xffff) so this isn't a primitive restart case, but instead the game just drawing a lot of stuff at once.

It seems like something in our vertex-handling code breaks with this. If I add if (num_vertices == 0xffff) num_vertices--; to the start of OpcodeDecoder::RunCallback's OnPrimitiveCommand, the vertex explosions are fixed (though this probably results in one triangle somewhere being skipped).

Actions #9

Updated by pokechu22 about 1 year ago

Actions #10

Updated by pokechu22 about 1 year ago

Actions #11

Updated by pokechu22 about 1 year ago

Actions #12

Updated by pokechu22 about 1 year ago

  • Related to Emulator Issues #10312: VertexManagerBase.cpp:95 E[Video]: Too little remaining index values. Use 32-bit or reset them on flush. (non-fatal) added
Actions #13

Updated by pokechu22 about 1 year ago

  • Status changed from Accepted to Fix pending
Actions #14

Updated by pokechu22 about 1 year ago

  • Status changed from Fix pending to Fixed
  • Fixed in set to 5.0-18171
Actions #15

Updated by pokechu22 2 months ago

Actions

Also available in: Atom PDF