laitimes

Switch Simulator Ryujinx Progress Report 2022-June

author:YUZU

Switch Simulator Ryujinx Progress Report 2022-June

Switch Simulator Ryujinx Progress Report 2022-June

Halfway through 2022, time is sure to pass quickly when we have some good games to play! Speaking of games, some real games have been released this month, and we're happy to say that most of them work, either out of the box or with some small workarounds. Despite coming from Koei Tecmo (a name that all simulator developers fear), Fire Emblem is unmatched: Wind and Snow Moon, both in demo and full version, runs perfectly on Day 1, with only Mario Striker stealing our limelight!

If a mod is needed to bypass the introduction, we try not to advertise it as a playable game, but anyone interested can choose it and the rest of the game works well.

It's the more exciting release of the second half, and without further ado, let's get into our patreon goal!

Patreon Goals:

Vulkan GPU backend - still in progress.

Public beta version delivered!

ARB Shaders - Targets reached in April 2021.

Work is underway with Vulkan, please wait a moment until we are able to deliver this update to our satisfaction.

By using the OpenGL API to improve shader compilation speed on NVIDIA GPUs, arb shaders will further reduce stuttering on first run.

$2000/month - Texture Pack/Replacement Features - It's Almost Here!

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

Once the target is maintained, the estimated time of arrival: ~3-4 weeks

$2500/month - a full-time developer - has not yet met.

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

$5,000/month – additional full-time developers – haven't met yet.

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

Let's get started.

Graphics:

Switch emulation is not something that any group or project can monopolize, and the Skyline team will definitely put their work into proving it! Co-lead developer Bylaws made some fixes to Ryujinx; The first solves the possible race conditions, and the second solves the long-standing bugs in The Elder Scrolls V: Skyrim. While it may be the most resilient platform porting game ever, it has never opened a menu since its launch in 2020, and it turns out that the type of counter skyrim uses actually requires a semaphore (an alternative data structure to help) multithreaded tasks, not just constant zeros to release.

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

While not perfect yet, it's always cool to see some of the more visually complex Switch games rendered and actually perform really well!

Not content with just fixing one of the best-selling games of all time, this change actually completely solves the extremely slow pace in Isu 9: Night of the Strange Guys and solves the problem of the black screen graphics in Sister Gina: Twisted Dreams. There was a very patient user running Isu 9: Night of the Freaks it took 5 hours to get into the game, uh...

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

Continuing his war with the endless GPU Black Magic vs. Shovel game this month, gdkchan completed the final polish to fully fix the 18+ Gentleman Games Living World and Limit Bulge: Cute Crystals. How to handle multisampled and non-multisampled textures was missed due to missed . By allowing a non-multisampled texture to inherit the same data as a multisampled texture, Ryujinx will no longer read junk data if this is the case.

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

Of course, the limit bulge: the cute crystal doesn't look much better. Unless you're a big fan of the color... Tan skin ? Fortunately, the game is actually allowed to render content other than a single color.

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

Subsequent changes related to index sweepstakes fix some of the sluggish performance that games that use them may have. Sometimes the emulator draws the same result multiple times, which adds a lot of rendering time before the frame is ready. By passing the index count to only a single instance, the excess draw is eliminated as shown below (the rightmost column is the draw count).

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

The newly released video crash in When the Boxer has been restricted to the defined surface by limiting the output rectangle to a defined surface . Previously, if there was a mismatch between the input and output surfaces, any data outside the input range was technically "undefined" and would crash randomly due to access violations.

Continuing with our theme of fixing visual novels, we've tweaked the drawing texture fallback used on AMD and Intel GPUs so that some games don't turn their windows upside down. Since only NVIDIA supports NV_draw_texture extensions, Ryujinx needs to ignore the current ClipControl settings because they are not valid on non-NVIDIA GPUs.

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

Well, for those who don't care about visual fiction, there are also some changes and fixes for you this month! The first of these influenced one of the most anticipated (but indeed disappointing) games of the year: the new Mario Striker. Due to the uncorrected crash caused by the introductory video, most of the game ran and rendered fairly well at launch outside of the animated 3D crowd. gdkchan immediately came to the rescue, adding support for some new forms of depth template render targets (arrays and 3D textures), while fixing a bug that caused Ryujinx to ignore render target purges. With the changes in these two places, the crowds are now actually present and the gameplay is not so lonely!

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

The Hat of Time is another game that crashes in front of the title screen, but oddly enough, it only crashes when the player moves forward in some way through the story. Texture IDs can be invalid when shader compilation occurs for a number of reasons, so by checking this before accessing the descriptor , we can avoid any unmapped memory crashes associated with this.

Switch Simulator Ryujinx Progress Report 2022-June

Shader Cache 2.0 has greatly improved the playability of many notorious games, but that doesn't mean it doesn't have some drawbacks. Due to the new shader specialization support, this property needs to be checked every time you draw; It sounds cumbersome, and while overall it's not as bad as it might look at first, there are performance hits associated with it in several games, including Super Mario Odyssey and Xenoblade: The Decisive Edition. Riperiperi undertook itself to optimize texture bindings and shader specialization checks.

Switch Simulator Ryujinx Progress Report 2022-June

Super Mario: Odyssey and Blade of Heterogeneousness: Decisive Edition performance returns to a new level of caching, while Zelda: Breath of the Wild's performance is limited by other factors and is therefore almost the same, but there has been a considerable drop in FIFO, which indicates that the emulated GPU load is less. Once other bottlenecks in the gaming experience are shifted, this should see good returns in the future. Feel free to check any games that feel slower after the new cache and hope they return to normal or at least shut down!

Nothing is free, and it comes at the cost of breaking the resolution scaling in a matter of hours, then updating the new texture binding method to take into account scaling, and some titles like Maid Run To the Right need to consider the full pool change cache.

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

CPU/Core:

This month our CPU portion starts with some CS:101. For people who are not familiar with data types, and more specifically, how to number, there are many ways to do this: integer, short, long, floating point, etc. Previously, Ryujinx used unsigned (must be positive) short to store operand usage counts, up to the number 65535. If you try to store a value above this, you will get what is called an "integer overflow" and everything will go back to 0 again! Limiting yourself like this is primarily just a best practice, as data types that store higher values are often more expensive in terms of memory. Unfortunately, some games do need this extra data, so the type is switched to an unsigned integer , and its upper limit is a rather ridiculous number 2147483647, so there's almost no chance of needing higher data!

Taikoku V DX is now the boss of the game, and possibly the boss of other games (Switch has so many gaammmmesss!). )。

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

Stop simulation is currently a bit like playing Russian roulette, but requires the use of Task Manager. The problem is that the cause of the problem is not single, and as the game becomes more complex and is doing different things, many recent versions will fall into suspended animation when they close. Isolating and solving two of these issues in the CPU/Kernel space this month When the "TerminateProcess" function is called, it will attempt to kill all running threads. The problem here is that TerminateProcess itself fires on its own thread. Has anyone found this problem? This error prevents the thread calling TerminateProcess from being unscheduled and deadlocking itself in an infinite loop.

Regression fixes for gdkchan's large memory alias changes will cause a memory crash on Windows a few months ago when trying to use or switch games after running another game, these may be triggered most often. Finally, the entire kernel memory allocator has been rewritten to be more concise and readable for our contributors and maintainers. There are no expected bug fixes or performance improvements here, but as always, there may be some $5 JRPG launches now. Remember kids and write clean code!

Serve:

Diablo II: Resurrection is a strange popular title that has been in a state of uncertainty since the recent web overhaul. After these changes, the game will crash at startup because newer methods handle all read and write calls on the same thread, resulting in a deadlock if they are needed at the same time. By allowing the service to increase its number of threads to 2, the game will start continuously again.

Switch Simulator Ryujinx Progress Report 2022-June

However, this fix is not all that is needed to prevent other problems. Because processes are allowed to be multithreaded, you need to deal with situations where one thread is processing and another thread is trying to respond. This exact problem causes other games that use socket services, such as Pokémon Sword/Shield, to crash at startup. The solution here is to return a single-threaded method from these requests, but add a flag to prevent blocking issues that cause Diablo deadlocks. In the future, going back to the multithreaded method will be a more accurate way to deal with this problem, but in order for everything to work well, the changes required will be huge and time-consuming. Currently this solution can meet the needs of all games!

"TimeZoneRule" in the System Time service has received some favor this month because it is very undesirable in the code base and requires the use of copies anywhere it is used. By making this "blittable" (giving it a generic representation that doesn't require special handling between managed and unmanaged code), it can reduce JIT overhead in a few cases and potentially boost any area that might be a performance bottleneck. Minor bugs were then fixed and time zones were fixed for how they appeared on the UI.

Miscellaneous:

Everyone's favorite rapid-fire variation part!

All XAML files are formatted and elements should now be consistent and aligned.

Finally added Chinese Simplified translation of the Avalonia project

Last month, the project's build script was finally switched to specifically for Windows 10.

Vulkan Progress:

As mentioned in previous reports, the work on Vulkan itself is almost complete, and if you are the proud owner of NVIDIA GPUs, it will be a great experience! However, as outlined in the offset, one of the main goals of implementing a Vulkan backend is to ensure that it is (to some extent) well compatible with AMD and Intel's graphics cards and drivers. It's not a small task, and trying to fix some of the bugs that are occasionally limited to a certain generation of graphics cards, especially when all the developers themselves don't own a certain video card with one, and progress in this area is at least hard to say. Ironically, it should actually be Intel here pretty good, because while there are some bugs, they tend to be consistent across the architecture, far from how often AMD seems to be able to summon them.

But.... Before I roll myself into another AMD hate rage, let's take a look at some of the things that have been tracked down and fixed for you AMD people!

Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June
Switch Simulator Ryujinx Progress Report 2022-June

The last three problems are unique to the Polaris architecture (any RX 400/RX 500 and below), which is a real headache. It turns out that when using the 'VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT' flag, these cards completely destroy the 2D array texture with mipmap. By forcing replication without using this feature, the problem can be resolved at the expense of slightly slower cubemap creation. The performance impact is not significant and should be relatively inconspicuous in most test games. Thanks, AMD!

Sure, Team Red™ has about 20,000 other bugs, but we hope to be nearing the end.

Conclusion:

The first half of 2022 is over and will soon be gone, but there will definitely be some killer game releases in the second half of the year! A new Xenoblade 3, Neil, Persona, a new Sonic game and another Pokémon. It should be months of action, right? Thanks again to all of our contributors for keeping us going over the years! Thanks to you, we have the hope of seeing all of the above on the first day.

As always, this is the HR recruitment time for the report! If you know some C#, . NET, 3D graphics or low-level engineering, you can also help make this year as smooth as possible and fix bugs. If this is all magic for you, then a patreon donated to us or actively involved in testing and bug reporting will really help a lot of people.

See you next time!