Yuzu Nintendo Switch emulator details latest features in September progress report

2A518489-4165-48FE-8253-5C9A4CD6F53B.jpeg

Are you curious about how one of the two major Nintendo Switch emulators is doing? Lucky day for you then, as the development team behind Yuzu has put out their latest progress report. Published this week, it details all the new features and improvements made to the emulator throughout September. Many hardware specific problems were ironed out, and if you were prone to crashes, then this update might fix performance for you. You can check out the full changelog below.

Hi yuz-ers! Welcome to the latest entry of our monthly progress reports. We have even more GPU rendering fixes, TAS support, 8 player mayhem, input and UI changes, some preliminary work for future big changes, and more!

Yet more AMD specific changes and other graphical fixes​

Certain AMD and Intel GPUs were unable to utilize yuzu’s unlock FPS feature with the Vulkan API, due to the lack of driver support for the VK_PRESENT_MODE_MAILBOX_KHRpresentation mode. They, however, support VK_PRESENT_MODE_IMMEDIATE_KHR, another mode that allows Vulkan to present at a higher framerate than the screen refresh rate, so epicboy made the necessary changes in order to unlock the FPS on these GPUs. Due to the nature of this presentation mode, this may cause visible tearing on the screen, so bear that in mind if you try this out.

 And this is with just an RX 550 (Metroid Dread)
And this is with just an RX 550 (Metroid Dread)
Booting a title in Linux with the Vulkan API using the Intel Mesa driver resulted in a crash due to a device loss error. The problem was in the synchronization between the rendering and subsequent presentation of frames.

Previously, yuzu would issue the Vulkan Present command, then wait for the frame to be rendered before continuing with the process. While this was fine for other drivers and vendors, ANV (Intel’s Vulkan driver) expected to have the frame already rendered before this command, causing this error.

epicboy fixed the synchronization behaviour so that yuzu now waits until the frame is fully rendered and ready before presenting it.

With the release of AMD’s Windows driver version 21.9.1, and its equivalent AMDVLK and AMDGPU-PRO Vulkan Linux counterparts, users started noticing crashes in most games right at boot. We rushed once again to blame AMD for breaking another extension, as it wouldn’t be the first time. We even singled out Int8Float16 as the culprit, providing an alternative path that reduced performance on all AMD GPUs running non-RADV drivers.

We were wrong.

Turns out, it was our fault. epicboy found out that during the process of initializing Vulkan, the emulator assigned Int8Float16’s values after its memory was freed. Surprisingly, this only started affecting official AMD drivers recently, after their periodical Vulkan version update. So we had to lay down the pitchforks, this time. Performance returned to normal after the introduction of this PR.

AMD Windows users are also familiar with certain stages in Super Smash Bros. Ultimate turning completely white or ghosting, akin to when applications would freeze back in the Windows XP era. Those were the good days.

Ahem, anyway, AMD Radeon GPUs lack support for fixed point 24-bit depth textures, or D24 for short, a relatively common texture format. To bypass this hardware limitation, yuzu uses D32 textures instead, which can cause precision issues during the conversion process. By adjusting the Depth Bias and Polygon Offset of yuzu’s D24 emulation,Blinkhawk solves the issue for good.

Fair play, please (Super Smash Bros. Ultimate)
Fair play, please (Super Smash Bros. Ultimate)
Fair play, please (Super Smash Bros. Ultimate)

Yet another AMD Radeon specific issue is visible when playing The Legend of Zelda: Breath of the Wild. Terrain textures were colourful and corrupted, like when a PC gamer dials up the RGB to 11.

This issue affected our regular suspects, GCN4 devices (Polaris, RX 400/500 series) and older, running on the Windows and Linux proprietary Vulkan drivers. GCN5 (Vega), RDNA1, and RDNA2 devices were unaffected. The problem resided in how we guessed the textures were being handled by the game.

Some information first: there are several ways to handle textures, and in this particular example we need to focus on two, Cube Maps and Texture Arrays.

Cube maps are a cube with its six faces filled with different textures. The coordinate used to fetch the data, unlike the regular X and Y values, is a single versor originating from the center and pointing to the surface of the cube.



Texture arrays on the other hand are just as the name implies, an ordered array of textures one after the other, with X and Y used for positioning information inside the texture, and a Z axis used to determine which texture of the array is in use.



TL;DR, one is a sphere and the other is a list.

Vulkan allows for textures to be marked for conversion into cube maps if later needed, but the sampling (reading) is determined by the texture type specified by the game’s shader instructions. This type is then passed to the graphics API. We do just this and the game decides to keep its textures as arrays, which is its own decision. However, the AMD driver decides that the textures should be sampled as cube maps, ignoring what the texture view determined just before.

While this should not be a problem on its own, as coordinates can still be pulled out from the wrong texture type, the driver can end up reading the wrong texel. This can result in happy rainbow ground in The Legend of Zelda: Breath of the Wild, or as dark and evil terrain in Hyrule Warriors: Age of Calamity.

By disabling Cube Compatibility on GCN4 and older devices running the official AMD proprietary drivers, epicboy returned proper sense to the devastated land of Hyrule.

:arrow: Source
 

Xzi

Arm Cannon Enthusiast
Member
Joined
Dec 26, 2013
Messages
13,201
Trophies
2
Location
Spiraling Out
Website
gbatemp.net
XP
15,141
Country
United States
They really are delivering on this project, quite amazing to see the progress when you consider that the Switch is still a current gen machine.
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).
 

Costello

Headmaster
Administrator
Joined
Oct 24, 2002
Messages
14,007
Trophies
2
XP
17,138
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).
Well, now you have to make an infographic listing all the "gens" and the consoles that go in each of them.
You have to, otherwise, your point is moot.
 

lokomelo

Edson Arantes do Nascimento
Member
Joined
Aug 19, 2009
Messages
1,369
Trophies
0
Age
35
Location
São Paulo
Website
3ds-style.blogspot.com.br
XP
1,482
Country
Brazil
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).

PlayStation 5 and Xbox series have their teraflops but are yet to make the switch obsolete culturally and market wise, so it is current gen. The 3DS for example was weaker than a PS2 on FLOPS thing, but it is ahead on generation charts.

Besides that, they're emulating a current ARM device on a X86 machine, it is hard you know?
 

hippy dave

BBMB
Member
Joined
Apr 30, 2012
Messages
7,133
Trophies
1
XP
8,101
Country
United Kingdom
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).
Oh, you're one of them.
The relevant metric is that it's current.
 

MasterJ360

Well-Known Member
Member
Joined
Jan 10, 2016
Messages
2,330
Trophies
1
Age
32
XP
2,359
Country
United States
Yuzu made in incredible progress.
I managed to play Super Mario Odyssey and finished it 100% in a perfect emulation state at full speed, with no fps drop on graphicals glitch. I just got 1 or 2 random crash in the 100% story 50h+ gameplay.
Agree I noticed they got much better this year ever since Xenoblade Chronicles 2 actually became playable b/c before I could never pass the loading screen. Also Fire Emblem Warriors is still struggling, but its somewhat playable with slowdowns from using the ultimate attacks. So progress is definitely there.
 
  • Like
Reactions: Subtle Demise

lordelan

Well-Known Member
Member
Joined
Jan 4, 2015
Messages
5,193
Trophies
1
Age
41
XP
4,835
Country
Germany
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).
Doesn't matter. It's a console that is on the market for one generation so it's amazing, if an emulator for it succeeded in making its games run within only a few years.
 

sarkwalvein

There's hope for a Xenosaga port.
Member
Joined
Jun 29, 2007
Messages
8,175
Trophies
1
Age
38
Location
Niedersachsen
XP
9,738
Country
Germany
Eh, there's really no metric by which Switch could be considered current gen. Eighth gen maybe, since it was meant to serve as a replacement for the failed WiiU, but in terms of power it's more akin to seventh generation consoles (just as WiiU was).
I believe the only meaning for "current" gen is that it is the main most recent "current" platform supported by a given vendor. So yes, Switch is Nintendo's current gen.
 

ZeroFX

why?
Member
Joined
Jun 18, 2018
Messages
433
Trophies
0
Location
napaJ
XP
1,254
Country
Japan
Pardon but may I ask how they might be shady?
I am interested in trying Yuzu out.
The emulator is fine, just the team that does some questionable choices, mainly regarding how they operate, like having early access builds for patreons that they put the source code out if non patreons want to build... but then call you out if you actually build yourself, they also can't handle poop emoji it seems, there's also the multiplayer episode.
Just funny things i see while lurking on the discord server that makes me think they are a bit shady but since they're foss and gpl they are a bit held off.
But they do a good job on the emulator, although i prefer how ryujinx works.
 

pwjpssdfvqyuhweuxx

Active Member
Newcomer
Joined
Sep 27, 2021
Messages
27
Trophies
0
Age
31
XP
48
Country
Senegal
I can afford the games and choose to not to pay for them.
Also imo Ryujinx seems like a better project, even if it runs some games worse in its current state.
 

ClownPrinceOfCrime

New Member
Newbie
Joined
Oct 7, 2021
Messages
3
Trophies
0
Age
21
XP
20
Country
United States
Just hope the bug that plague Mario Golf for AMD cards only letting two courses not crash the emulator gets fixed soon. I've tried it on Ryujinx but the course flashes like crazy on all courses.
 

TheEnigma

Member
Newcomer
Joined
Oct 10, 2021
Messages
7
Trophies
0
XP
30
Country
Italy
The emulator is fine, just the team that does some questionable choices, mainly regarding how they operate, like having early access builds for patreons that they put the source code out if non patreons want to build... but then call you out if you actually build yourself, they also can't handle poop emoji it seems, there's also the multiplayer episode.
Just funny things i see while lurking on the discord server that makes me think they are a bit shady but since they're foss and gpl they are a bit held off.
But they do a good job on the emulator, although i prefer how ryujinx works.
Thanks for the insight!
 
General chit-chat
Help Users
  • No one is chatting at the moment.
    kenenthk @ kenenthk: MacMiller was better