Emulator Issues #9382
Textures get blurry in new super mario bros when changing IR
[Put Game Name here]
New Super Mario Bros (PAL Wii)
[Put Game ID here]
[Put MD5 Hash here]
Every time the internal resolution(IR) is changed, the 1024x1024 texture, which holds most of the elements on screen, will get rescaled. After a few times it will be blurry.
[Reproduction steps here]
- Set hotkey to increase and decrease the IR
- Start the game
- Get into any level
- Change the IR a few times with the hotkeys
- Many elements on screen will be blurry
It should be any version after the partial updates features was implemented in its current form.
[PC specs here]
not related here
[Anything else here]
See sceenhots, 1st one is after starting the game, the 2nd is after changing the IR a few times
#1 Updated by hosode over 4 years ago
Drawing the graphics involves all sorts of scaling and cacheing and the IR setting is right in the middle of everything.
To me (as non-developer) changing the IR mid-game sounds almost as intrusive as changing the CPU emulation core or the graphics backend mid-game. Anyone would understand that they would be... hard to implement. Yet the IR works pretty well in Dolphin. I mean, you have to often restart normal DirectX-based games only to change the resolution.
I don't know how many users have a real need to change the IR when playing? At least after finding out the sweet spots for the games that they play. Not saying that this isn't an issue at all. And I'm biased as a huge fan of the partial texture implementation, as it is now. I don't understand any of the wizardry behind it, though.
I still think it would be good enough to warn people by adding an OSD line "Changing the internal resolution mid-game can cause graphical glitches" when the hotkey is pressed. Just as we warn people to open the graphics settings when a game is running. Vs. mimimi writing huge amounts of code only to verify that the scaling of the textures is recalculated / maintained after the IR changes in a very limited (?) number of games.
#4 Updated by JMC4789 almost 3 years ago
- Status changed from New to Working as intended
So I looked into the code a bit.
Changing the internal resolution clears our copies, right, so we have to fallback to what is in memory. The only thing in memory at that point would be the original version, all of our copies would be invalidated. Thus... this seems to be invalid.
Feel free to override me.
#5 Updated by phire almost 3 years ago
- Status changed from Working as intended to Accepted
The original version in memory doesn't entirely exist, because the user is probably using efb2tex and any area replaced by efb copies will be blank.
What we do is resize the whole 1024x1024 resolution texture to the new size.
After several round trips (say 1x to 4x) the texture will get more and more blurry, way more blurry than 1x.
One possible fix would be to keep the original efb2tex copies around (whatever resolution they were copied at) and then reconstruct the partial efb copy from ram and these efb copies.