Project

General

Profile

Actions

Emulator Issues #13192

open

Song of Passing Graphical Issue (The Legend of Zelda: The Wind Waker)

Added by InfoManiac742 almost 2 years ago. Updated almost 2 years ago.

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

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

Game Name?

The Legend of Zelda: The Wind Waker

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

GZLE01

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

d8e4d45af2032a081a0f446384e9261b

What's the problem? Describe what went wrong.

The animation after playing the Song of Passing has a single incorrect frame.

What steps will reproduce the problem?

  1. Play the game until you obtain the Song of Passing (or use the provided save)
  2. Pull out the Wind Waker
  3. Play the Song of Passing (Right-Left-Down on the C-stick)

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

Is the issue present in the latest stable version?

No, 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 bisection tool is completely broken (https://github.com/Helios747/DolphinBisectTool/issues/27)

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
A screenshot and fifolog are attached below.

What are your PC specifications? (CPU, GPU, Operating System, more)
CPU: AMD Ryzen 7 3750H
GPU: NVIDIA GeForce GTX 1650

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

A save file is attached below as well.


Files

broken.png (6.07 KB) broken.png InfoManiac742, 03/03/2023 01:51 AM
ww.dff.7z (370 KB) ww.dff.7z InfoManiac742, 03/03/2023 02:09 AM
01-GZLE-gczelda.gci.7z (13.4 KB) 01-GZLE-gczelda.gci.7z InfoManiac742, 03/03/2023 02:13 AM
Actions #1

Updated by pokechu22 almost 2 years ago

  • Description updated (diff)

Confirmed with fifolog. I'll need to test using the hardware fifoplayer to make sure that this doesn't also happen on real hardware. I can't see it on a video (https://youtu.be/1NyzuQAOrS4?t=70) but that video is in 30fps.

Actions #2

Updated by pokechu22 almost 2 years ago

  • Status changed from New to Accepted

Confirmed; hardware fifoplayer renders one circle frame, then 2 black frames; dolphin renders one circle frame, one garbage frame, then one black frame.

Actions #3

Updated by pokechu22 almost 2 years ago

The game draws 4 quarter circles across the quarters of the screen, and changes the texture coordinates used for it each frame. Clamping is enabled, so out of bounds parts use the edge of the texture (black). On the first frame, the texture coordinates range from (-19, -15.4) to (1, 1), so for 320 by 240 pixels, the region from (0, 0) to (1, 1) (which has actual texture data) covers 1/20th of the space horizontally and 1/16.4 vertically (which comes out to 16 by 14.6). On the final frame, the texture coordinates are all (0, 0), so everything uses the same color (black).

On the broken frame, the texture coordinates range from (-1278263.125, -1049476.875) to (1, 1). This ends up producing extremely large texture coordinates, which overflow. More precisely, dolphin emulates the texture coordinates being 24-bit values and thus overflowing that way; disabling that fixes Wind Waker. I believe this 24-bit overflowing behavior was hardware tested, though; my guess is instead transform unit or the rasterization process ends up clamping the input texture coordinates to smaller values. More testing would be needed.

Actions #4

Updated by InfoManiac742 almost 2 years ago

A quick update: I did some testing, and it appears that enabling "Exclusive Ubershaders" causes Dolphin to render correctly (confirmed on both the fifolog and playing the actual game).

Actions

Also available in: Atom PDF