laitimes

Switch emulator Ryujinx progress report 2022-December

author:YUZU

Switch emulator Ryujinx progress report 2022-December

Switch emulator Ryujinx progress report 2022-December

Happy New Year!

We hope you all have had a truly incredible year. With so many areas covered every month in 2022, December is not intended to break that trend. Performance improvements, fewer black-screen gaming, and some upstream work on macOS scattered over a 31-day time span isn't just rampant consumerism for everyone to enjoy.

So get ready for the wrap-up for 2022, laid out by a witty, engaging, and if you want to use another word, a handsome writer's report. Before that, though: let's take a look at our remaining Patreon incentive goals.

Patron Objectives:

$2000/mo - Texture pack/replacement feature - coming soon!

This will help replace graphics textures in your game, enabling custom texture enhancements, alternate controller button graphics, and more.

$2500/month – a full-time developer – hasn't been met yet.

This monthly donation will enable the project's founder, gdkchan, to develop Ryujinx full-time. All our contributors are currently only working on the project in their spare time!

$5000/month – additional full-time developers – hasn't been met yet.

This monthly donation will allow additional Ryujinx team developers to work full-time on the project.

3....2....1....go!

Graphics:

Pokémon again this month had to steal the entrance to the GPU part, and we hope this is the last problem for the game. Anyone who played at launch or even in late November could experience a completely random flashback: your character, NPCs, other Pokémon, or any other environmental asset could lose grip on reality and turn into a giant wall of glitches or beige spikes.

Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December

As with most flashbacks, this is caused by simple data loss. Flushes on some buffers occasionally flush uninitialized data, which may cascade into the results seen above. By keeping track of these troublesome buffers and flushing their sources, rather than their potentially incomplete copies, most of the flashbacks in Scarlet & Violet are greatly reduced. There is still a small chance that NPCs may exhibit minor explosions, but these explosions will take several hours to appear in the test and be resolved by reloading the area.

Some of the smaller changes this month include: fewer texture operations in shaders, which may slightly boost low-end iGPUs, SNorm buffer textures are now cleared for use with Vulkan (we previously even enforced OpenGL workarounds in Vulkan), and more improvements to shader specialization and shader binding arrays A further 3-4% performance boost for our usual benchmark game, Super Mario Odyssey!

With the new Zelda game approaching, it's only natural that some of our long-standing bugs with its predecessor are now in the spotlight for fixes. Considering that The Legend of Zelda: Breath of the Wild never received any sustained attention from our development team, it was already in relatively good shape, with only a few notable issues left. One of them is the lack of any movement against the wind and grass particle effects.

Video loading...

Video loading...

As witnessed, the grass seemed to just fade in and out of the dragon god, while the impact on the Switch was more like a breeze that blew the grass out of focus. By adding further fallback parameters for LDG to the constant buffer binding, another item is crossed out from the list.

Video loading...

Game of the Year 2022 is the latest FromSoft product: Elden Ring, which promises to be bigger, more diverse, and more stuttering than any software that came before it. But take a moment to get your mind back more than eleven years... Skyrim is coming, your phone still has a 3.5mm headphone jack, and Game of Thrones is premiering on TV. More important than all this is the release of FromSoft's mainstream hit Dark Souls.

Now fast-forward another eleven years. There you are. Want to play this certification classic on your personal computer. The Dragon God immediately activated (of course), and the Dark Soul was double-clicked..."Is it always so dark?" A million voices shouted in despair.

Switch emulator Ryujinx progress report 2022-December

Lengthy and dubious humorous gags aside, no, visual impairment has not been added to any soul game as a skill checker. However, if so, fans will claim that it is revolutionizing the difficulty and refusing to properly illuminate the "handheld" nature of the 3D world.

On our side, though, a simple implementation of the PrimitiveID output on the geometry shader is enough to completely solve this problem:

Switch emulator Ryujinx progress report 2022-December

Stanley's Fable: Deluxe Edition highlights a small bug in the FSWZADD shader helper function that caused the LUT index to go out of bounds. Fix this directive so that the text renders correctly.

Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December

Textures in games utilize various compression formats to reduce their file size and impact on video memory. Because there are many different development environments for games, desktop GPUs do not support some of these formats, while mobile GPUs do not. Since the Switch is actually a mobile device, it in turn can use some texture compression formats that your Nvidia or AMD desktop card simply doesn't know how to do. You may have heard that one type associated with Otherworldly Chains and Bayonetta 3 is the ASTC compression format, where we need to manually decompress textures in software before using them. In case you're wondering, that's why these two games use a lot of VRAM compared to the others, as completely uncompressed textures are loaded into VRAM before use!

Switch emulator Ryujinx progress report 2022-December

However, ASTC is only an unsupported type of compression; We have some other decoders that can convert any unsupported texture to a format that is easier to read by the GPU. Except for two. The ETC2 and EAC compression formats still lack a software decoder, which means that any game that uses these formats will crash with an unsupported format error. Luckily, EAC doesn't seem to be used by any game we know of, so only the ETC2 software decoder is implemented.

Games like Las Vegas Party and Otome Game Paradigm Paradox are now available on Nvidia and AMD GPUs (ironically, Intel already natively supports this format!). )。

Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December

Implementing the missing GPU quirk continues to implement another off-index drawing method that solves some rendering issues in Ikaruga and fixes vertex buffer size in DrawArrays, fixes the rendering of Sphinx and Cursed Mummies on OpenGL.

Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December

For any OpenGL enjoyer, the Blade game has been one of the few stickers to this agenda. Unfortunately, all good things had to come to an end, and in December, Vulkan finally took the performance crown. With Xenoblade Chronicles 3's performance improvement in Colony 4 hotspots by 30%, Vulkan now performs an average of 5-8% better than OpenGL, while of course retaining other advantages such as shader compilation speed.

Switch emulator Ryujinx progress report 2022-December

On the topic of Xenoblade, Vulkan recently fixed the XC2's cutscene shadows by using custom border colors, which caused a lot of trouble for Linux users. Shortly after the merger, it was discovered that the open-source RADV driver didn't like this at all and crashed in various games, including: Smash Bros. Definitive, The Legend of Zelda: Breath of the Wild, and Metroid Fear. Not a subheading, to say the least. External contributor DadSchoorse discovered that RADV required the custom border feature to be explicitly enabled before use, which ended this tragic saga, especially for the influx of Steam Deck users!

Finally, texture pools and sampler pools will now force rebinding when the pool itself changes to mitigate the regression caused by shader specialization optimizations described above. This change was made in the "New Prince of Tennis: Let's Go!" ~Daily Life~ from RisingBeat" (incredible name), pool rebinding fix.

Switch emulator Ryujinx progress report 2022-December
Switch emulator Ryujinx progress report 2022-December

macOS Upstream:

A new section is added this month. As described in this issue, a number of changes were made to Ryujinx in the private branch to provide support for macOS on Intel and Apple Macs. Merging all of this at once would be a code review nightmare and it's impossible to go back to tracking, so it's decided to methodically upstream each change in a piecemeal format. This allows for proper code review and regression tracking, but also allows time to clean up certain implementations. The journey has begun!

Initially, you need to make some mundane changes to get anything done:

macOS requires a SDL_event pump on the main thread.

Actually building anything also requires CI files for packaging and dependency distribution.

The above changes allow the program to build and start, but only into the GUI. Launching any game is still impossible because a valid Vulkan device doesn't exist on macOS. Therefore, it is also necessary to create a metal surface rendering window that MoltenVK can eventually draw to. This actually allows very basic games like Undertale to run on self-compiled Mac versions via Rosetta:

From this point on, some other GPU and MVK workarounds were merged:

Non-MS to MS copies are implemented using draw, which is required because Apple GPUs do not support image loading or storage to multisampled images.

When a match fails, the shader storage buffer search is throttled. This prevents macOS from getting out of storage buffer bindings in some cases.

Implemented a fallback for 16-bit texture formats because, while these formats are supported under native conditions, for some reason they are not supported under Rosetta.

CAVE:

Services. Don't we all love them?

"IsIlluminanceAvailable" and "GetCurrentIlluminanceEx" were both stubbed in December, which allowed the Labo VR Kit app to enter the title screen.

Switch emulator Ryujinx progress report 2022-December

There's really nothing to play due to the absolute mess of niche services and HID implementations required for this game, but it's still worth noting!

"Choice" is fully implemented in the BSD socket, eventually allowing Saints Row: The Third and Saints Row IV to access their LAN game mode for campaign co-op.

Switch emulator Ryujinx progress report 2022-December

Some other minor fixes, stubs, and implementations in December include:

The current process ID of Mesosphere is now part of the HOS InfoType enumeration. This allows homebrew to easily obtain its own process ID.

REV11 of the Audio Renderer adds the implemented "compressor" effect.

Support for atmospheric dns_mitm was implemented. This allows some mods or homebrews to mislead with simple DNS.

PCMFloat, PCM32, and PCM8 conversions have been added to allow the use of SoundIO on systems that may not support PCM16 audio.

An interesting last one is the "CheckNetworkServiceAvailabilityAsync" stub, which allows everyone to launch the applications they need most: Hulu! Unfortunately, there are some other issues with this title, so don't try to use Ryujinx to tune into Forge in Fire: Defeat the Judge.

Switch emulator Ryujinx progress report 2022-December

Graphical user interface:

Let's talk about GUI, let's talk about Avalonia. With the macOS version fully using the new framework, we are now completely in the endgame. The endgame consists mostly of "fixing the stutter," as new contributor Isaac Marovitz so aptly points out. All the basics of GUIs now work and fall into place, but random stuff can sometimes seem a little weird.

Based on the stylization of the OS-specific design, the dialog box becomes more intuitive in every way. Our recent influx of macOS users may require a platform-based UX language.

If you're using Windows, the style will be roughly the same, but the confirmation options are accented:

Switch emulator Ryujinx progress report 2022-December

If you're using macOS, you'll see a more natural inverted layout (when pushing new macOS updates):

Switch emulator Ryujinx progress report 2022-December

A few different cleanups were made to the input classification, status bar, and project file structure itself, finally eliminating bugs on software keyboards that were not visible on Linux. Achieved tighter alignment with fluentUI and WinUI3 principles, improving readability and reducing instances of "selection beans" and wide box type selectors clipping each other.

Functionality: Added a save manager to easily find user profile-specific archives without switching, and the ability to recover lost accounts that are still bound to archives! Very beautiful features!

Switch emulator Ryujinx progress report 2022-December

Oh, and you can't update Dragon God while playing the game anymore. Too many of you run the game in some way and then decide that now is the perfect time for the emulator to download and replace the files. So yes. Stop.

Year-end review: 2022

Many people say that 2022 is actually a year. One of the years in history.

Who wants some statistics? Everyone loves some statistics and they seem to be all the rage.

Switch emulator Ryujinx progress report 2022-December

To get rid of some jargon as early as possible, our definition is very strict and more stringent in most emulators. To get "playable" status, the game must have zero errors. It must be the same as a hardware clearance with no workaround and run at full speed on "reasonable" hardware. In-game means that the game enters the main game loop, but may have graphics, audio, input, service, or performance limitations. From there, others speak for themselves.

As of 2023, a staggering 84.2% of currently tested Switch libraries are error-free. Another 11.6% of games are in-game, but at least one problem; This can range from major graphic errors all the way to individual texture corruption in the credits. So, we bet that most of these "in-game" games may already be considered "playable" by other sources! Only 3.5% of games launched, but for some reason the gameplay could not be reached, and the absolutely insignificant 0.8% of games (30 to be exact) did not respond at all. In less than 5 years of development, we've been reduced to just 30 games that won't start, which is a huge achievement. We have no doubt that more games will be released and continue to test us, but here it is, right now, it looks really good. In the meantime, there are still thousands of untested Switch games (mostly multi-platform shovel software, but the focus remains), and we need your help testing and cataloging.

In 2022, the main feature release makes people eyeball:

The first Switch emulator to support macOS and Apple Silicon.

First switch emulator to support LDN interfacing with CFW switches

The Vulkan backend is completed and merged into the main release.

As the second ever .NET application on FlatHub.

The first Switch emulator with support for advanced mod features for games like Nintendo Star Smash Bros. Ultimate Edition and Jet Fighter 2.

It's been a crazy ride, and we want to thank everyone for supporting our efforts during this time. One of the questions that many people ask us is "What's next?" What will 2023 look like for Dragon God? Well, to be honest, even we ourselves do not know! But, we have cool stuff to show...

Switch emulator Ryujinx progress report 2022-December

Dragon God on Raspberry Pi, anyone? Admittedly, the performance is quite bad because... It's a Raspberry Pi! It's just a proof of concept that the work of porting to macOS can be transferred to other platforms and should be a great platform to run Switch games when the right Windows/Linux ARM system arrives.

That's what we're all about in 2022 (says a report published in 2023).

As always, if you know a little C#, . NET, 3D graphics, or low-level engineering, and need good New Year's resolution, we are always looking for developers who can continue to provide these compatibility statistics. If it's all alchemy and magic for you, it really helps to donate to our Patreon, or actively participate in testing and bug reporting.

Happy New Year!