Emulator Issues #9809
Paper Mario: The Thousand-Year Door Scaled EFB Copy Inconsistent
Paper Mario: The Thousand-Year Door
Game ID? (right click the game in the game list, properties, info tab)
MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)
What's the problem? Describe what went wrong.
The game appears to use EFB copies when it needs render a lot of one particular character, and these don't always upscale as they should, resulting in them looking quite pixellated as would be expected. I've attached a screenshot below of what it's supposed to look like, and what it looks like when the issue occurs. I turned on dump EFB target and checked the EFB copies it's created to render the characters, and they are indeed high resolution, so they just don't seem to be drawing correctly. It seems like this happens when they are first loaded, but then it fixes itself on a scene change if those EFB copies are also used in that scene.
What steps will reproduce the problem?
Go to any point in the game where a lot of a single character is rendered, probably the prologue when a large number X-Nauts attack Mario. It may require multiple attempts to reproduce it.
Which versions of Dolphin did you test on? Does using an older version of Dolphin solve your issue? If yes, which versions of Dolphin used to work?
What are your PC specifications? (CPU, GPU, Operating System, more)
Intel Core i7-3930k
NVIDIA GeForce GTX 780
Is there any other relevant information? (e.g. logs, screenshots,
Using Direct3D 11 if it matters.
Here's what it should look like:
Here's what the bug looks like (it's a bit zoomed out but you should be able to tell they aren't upscaled, notice the aliasing):
#4 Updated by Techjar over 4 years ago
Scratch that, some effects still need EFB to RAM to render correctly (or even at all). So, what, are only texture EFB copies scalable, and not RAM EFB copies? And if that's the case, what is going on that's causing this? EFB copies being stored in RAM when they could be stored in a texture?
#11 Updated by Bighead.0 over 4 years ago
This is another issue I've known about for some time. A while back I tried to understand it because I did the textures for these guys in the PMTTYD texture pack. I don't know the technical side of why it happens, but I can share my observations.
To start, EFB to RAM or Texture does not seem to make a difference, at least, which of the two is selected in Dolphin and what textures pop out. Both behave identically. To me it looks like there there are 2 copies of the "completed" X-naut being created, the high rez one which seems invisible and temporary, and the low-res one which Dolphin falls back to if the high rez one is missing. I'll elaborate...
The X-naut textures themselves are assembled from the pieces below (image 1). If these textures are retextured, the X-nauts will effectively be retextured in most cases. It seems sometime before the scene where a bunch of them show up at once, the "complete high rez" X-naut is created from this collection of textures. I believe this happens BEFORE the battle with lord Krump, because if a state is loaded during it, then the fully assembled low resolution textures are used (image 2). This is 100% reproducible. Somewhere, the high rez texture was lost? Load from the save cube, don't use save states, and they will be retextured almost all the time unless it bugs.
If something goes wrong somewhere (such as loading a save state between krump battle and where they are littered across the screen), the game falls back to the low-rez completed X-naut (image 2), which is an animation sequence of 24 textures. If these versions were retextured, then they would be retextured in-game as well. I was too lazy to attempt to remake these though which would have masked the "bug" for anyone using the texture pack.
There are also times in this situation where Dolphin may fail to load any texture at all, or it becomes corrupted, or maybe both of them go missing? In this case the texture shows up invisible or sometimes glitchy. I'm not 100% sure how to reproduce this one, but I've seen it a number of times trying to figure out what was going on and why I was getting low rez versions only sometimes. I've seen it with both using and not using savestates, high rez textures or not, settings irrelevant. Whether the game uses the high rez, low rez, or no texture at all seems completely random regardless of any backend or setting.
Recently a user on the forums has experienced it as well, so I'll kindly borrow his image.
#13 Updated by Techjar over 3 years ago
Yeah, after taking another look at this, seems that the non-scaled characters are just an oddity in the game's design that the texture pack isn't accounting for, rather than a bug in Dolphin. There is that invisible characters thing though, which probably is a bug in Dolphin.