9.2 KiB
+++ date = "2020-05-28T12:00:00-03:00" title = "Progress Report April 2020" author = "GoldenX86" forum = 243216 +++
Hello awesome yuz-ers! We hope you are doing well. We have lots of material to cover in this April progress report: some new additions, bug and regression fixes, and the groundwork for future improvements that affect both Mainline and Early Access. But first, let's discuss a few really big changes.
The Big Changes
This month brought us huge improvements to compatibility, fidelity and resource management.
bunnei, our serendipitous master, fixed a softlock in FINAL FANTASY VIII Remastered
.
What he didn’t know at the time is that this small fix also made Super Smash Bros. Ultimate
playable. Thanks to this, now you can enjoy local multiplayer battles with your friends, either locally or even via Parsec!
For quite a while, Nvidia Turing users (GTX 16 series and RTX 20 series GPUs) had to deal with several rendering bugs, like black and white terrain in Fire Emblem: Three Houses
, or black areas in Super Monkey Ball: Banana Blitz HD
.
Rodrigo fixed most of them by improving the accuracy of the shader decoder. This also fixes some bugs on older Nvidia GPUs too.
{{< single-title-imgs "Monochrome no more (Fire Emblem: Three Houses)" "./29.png" "./30.png"
}}
{{< single-title-imgs "No greasy black peels (Super Monkey Ball: Banana Blitz HD)" "./27.png" "./28.png"
}}
Speaking of shader decoding accuracy, Rodrigo improved the precision of the HADD2
and HMUL2
instructions, fixing some long standing bugs like the fog in Fire Emblem: Three Houses
and the excessive brigthness in most maps in Super Smash Bros. Ultimate
.
{{< single-title-imgs "You can now take off your sunglasses (Super Smash Bros. Ultimate)" "./33.png" "./34.png"
}}
{{< single-title-imgs "From steampunk, to the proper medieval fantasy setting (Fire Emblem: Three Houses)" "./16.png" "./15.png"
}}
We talked about this in its own article, but it deserves a mention here:
bunnei rewrote the Virtual Memory Manager (known internally as Project Epimetheus
), which drastically reduced RAM use by games, and helped Multicore support (also known asProject Prometheus
) become a reality.
One of the features in yuzu, and a common one in other emulators, is the ability to separate the rendering thread from the main emulation thread. This makes better use of CPU's resources, while also helping deliver better performance. That is exactly what Asynchronous GPU does in yuzu. Thanks to Blinkhawk, our Emulated GPU improved drastically, achieving better performance, stability, and accuracy. These changes introduce the option to adjust the GPU accuracy level while playing.
{{< imgs "./31.png| Performance may be reduced with more accurate levels"
}}
{{< single-title-imgs "Normal accuracy (left) and High accuracy (right) (Super Mario Odyssey)" "./v1.mp4" "./v2.mp4"
}}
One Line to Fix 'em All
Toki Tori
had sound problems that were related to a floating point instruction, and while investigating the issue,
Merry and bunnei were worried that it may be a problem in Dynarmic, our ARM to x64 recompiler.
Turns out the problem was just a bad default value in yuzu’s Dynarmic configuration.
Remember what we said about bunnei and serendipity? With a simple one line change, we fixed tons of bugs on a lot of games! Special mention goes to Pokémon Sword/Shield
, where thanks to this single line change, the game no longer softlocked and became fully playable!
Here's a partial list of fixes:
- Pokémon Sword/Shield - All softlocks fixed, running in tall grass fixed, hair salons fixed
- The Legend of Zelda: Link's Awakening - Miniature placing fixed
- Toki Tori, Final Fantasy 7, Diablo 3, Project DIVA MegaMix - Distorted audio fixed
- Team Sonic Racing - Physics fixed
- Onimusha Warriors, Tales of Vesperia, The Messenger - Game logic fixed
- Skyrim - Audio looping fixed, game progresses further
- Oninaki - Elevator softlock fixed
- All Unreal Engine 4 games - Motion jitter fixed
- Super Smash Bros. Ultimate - Fighter select jitter / flickers fixed
- Starlink - Softlock fixed, game progresses further
{{< imgs "./32.png| This sofa is no longer our enemy (Pokémon Sword/Shield)"
}}
Bug fixes and improvements
Morph did some Kirby magic and implemented the first steps to get World of Light
working in Super Smash Bros. Ultimate
.
Even thou it doesn’t work yet, the first step is always the most important one!
Kewlan once again strikes with more UI quality of life improvements. This time, more UI fixes to the placement of buttons mappings in the input settings, specifically this time for single joycons.
{{< imgs "./03.png| From this"
}}
{{< imgs "./05.png| To this"
}}
Not stopping there, Kewlan added a slider for the analog stick modifier, allowing keyboard users to half press the emulated sticks. Plus now the sliders show percentages, making them easier to read.
{{< imgs "./07.png| Precision"
}}
And to top it off, he also added a way to restore the default value for a hotkey. Part of emulation is having a tidy interface to set everything up.
{{< imgs "./08.png| More customization"
}}
Tobi implemented some fixes to the internal working of the input settings and the game list, besides that, he also changed some of our error and warning windows to something more user friendly, thanks Tobi!
{{< single-title-imgs "The old errors" "./19.png" "./21.png"
}}
{{< single-title-imgs "The new ones" "./20.png" "./22.png"
}}
Waluigi is not part of Smash, yet, but that doesn’t mean his own tennis game has to look bad.
Rodrigo decided to help the purple fellow and fixed the shadows in Mario Tennis Aces
.
The border color of textures in this game are in sRGB format, and we had some small precision errors.
Now you can enjoy those intensive matches!
{{< single-title-imgs "WAA! (Mario Tennis Aces)" "./09.png" "./10.png"
}}
Rodrigo added indexed QUADS to Vulkan, this brings mayor graphical fixes to Xenoblade Chronicles 2
and Fast RMX
! Some barrier fixes are still needed in Xenoblade Chronicles 2
to get proper rendering, work on these rendering fixes is on-going.
{{< single-title-imgs "From abstract to RPG (Xenoblade Chronicles 2)" "./23.png" "./24.png"
}}
Blinkhawk implemented some optimizations to the GPU command list, improving performance
in Diablo 3 and many other games.
He also ported a Ryujinx hack made by gdkchan, Fast GPU Time
, this helps force the maximum resolution in games that can dynamically change it when they run slower than their target framerate. Some examples include ARMS
, Super Mario Odyssey
, Splatoon 2
, Luigi’s Mansion 3
, and Mario Tennis Aces
.
This is not only a graphical improvement, but also a way to avoid very high memory use on such dynamic resolution games.
We still recommend the use of resolution mods, but if such mods are not available for your game, Fast GPU will help you.
A good example of this is The Legend of Zelda: Breath of the Wild
with the latest 1.6.0 update.
{{< single-title-imgs "Milk baths are over Link, go save Zelda or something (Legend of Zelda: Breath of the Wild)" "./35.png" "./36.png"
}}
Fixed regressions
Rei found a 3D texture regression in the Wooden Kingdom of Super Mario Odyssey
that was affecting both Vulkan and OpenGL,
so Blinkhawk worked on it and found out that there was a bug in the texture cache.
Now it works as intended again, no more fog stripes on trees.
{{< single-title-imgs "As it should be (Super Mario Odyssey)" "./17.png" "./18.png"
}}
Rodrigo fixed a regression found on Puyo Puyo Tetris
while running in OpenGL.
With it in place, character portraits in game have their proper white border rendered.
{{< single-title-imgs "Better, right? (Puyo Puyo Tetris)" "./01.png" "./02.png"
}}
Rodrigo also fixed a regression in Kirby Star Allies
, which restored shading and life to this cute game.
Kirby deserves a colorful world for his adventures!
{{< single-title-imgs "Poyo! (Kirby Star Allies)" "./25.png" "./26.png"
}}
Future plans
Rodrigo also removed the need to have a Qt build with Vulkan support in Linux, which will help get Vulkan support in our Ubuntu pre-built packages.
That’s all for now, folks! See you on the May report!