Update index.md

This commit is contained in:
Matías Locatti 2020-12-09 13:34:40 -03:00 committed by GitHub
parent 53604d49cd
commit a53102960b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,12 +1,12 @@
+++ +++
date = "2020-11-30T12:00:00-03:00" date = "2020-12-09T12:00:00-03:00"
title = "Progress Report November 2020" title = "Progress Report November 2020"
author = "GoldenX86" author = "GoldenX86"
coauthor = "Honghoa" coauthor = "Honghoa"
forum = 0 forum = 0
+++ +++
Salutations, yuz-ers! This is the November progress report, which for an unlimited time will offer you hundreds of graphical fixes, improved performance, kernel changes, input additions and major code cleanups. Salutations, yuz-ers! This is the November progress rreport which, for an unlimited time, will offer you hundreds of graphical fixes, improved performance, kernel changes, input additions, and major code cleanups.
<!--more--> <!--more-->
@ -14,15 +14,15 @@ Salutations, yuz-ers! This is the November progress report, which for an unlimit
[bunnei](https://github.com/bunnei) and [Blinkhawk](https://github.com/FernandoS27) have been taking a look at yuzu's implementation of the kernel, searching for bugs or code that could be refactored — that is to say, rewritten to gain performance or make it easier to read, without changing the core functionality. [bunnei](https://github.com/bunnei) and [Blinkhawk](https://github.com/FernandoS27) have been taking a look at yuzu's implementation of the kernel, searching for bugs or code that could be refactored — that is to say, rewritten to gain performance or make it easier to read, without changing the core functionality.
[This PR](https://github.com/yuzu-emu/yuzu/pull/4996) focuses on modifying how the JIT (Just-in-time) Compiler, an elemental tool to emulate the Nintendo Switch's CPU, is being used in yuzu. These changes greatly benefit the user, since they will mitigate the need to set up a huge pagefile for the emulator: Now, defaulting the pagefile size to `auto` should be sufficient, although some games, like `Super Smash Bros. Ultimate`, might still need a pagefile with a more reasonable size due to the sheer amount of resources being allocated; to cover these worst-case scenarios, the user can set the pagefile size to 10000MB, if they wish to do so. [4-JIT, or 4 instances of Dynarmic,](https://github.com/yuzu-emu/yuzu/pull/4996) focuses on modifying how the JIT (Just-in-time) Compiler, an elemental tool to emulate the Nintendo Switch's CPU, is being used in yuzu. These changes greatly benefit the user, since they will mitigate the need to set up a huge pagefile for the emulator: Now, defaulting the pagefile size to `auto` should be sufficient, although some games, like `Super Smash Bros. Ultimate`, might still need a pagefile with a more reasonable size due to the sheer amount of resources being allocated; to cover these worst-case scenarios, the user can set the pagefile size to 10000MB, if they wish to do so.
Speaking of `Super Smash Bros. Ultimate`, this PR has fixed a softlock that occurred quite frequently when the final smash of the DLC character “Hero” was used. You can now graciously kick your opponents off the screen with all your might without needing to hold your breath while crossing fingers. Speaking of `Super Smash Bros. Ultimate`, these changes have also fixed a softlock that occurred quite frequently when the Final Smash of the DLC character “Hero” was used. You can now freely kick your opponents off the screen with all your might without needing to hold your breath and cross your fingers.
{{< imgs {{< imgs
"./hero.mp4| Heros final smash (Super Smash Bros. Ultimate)" "./hero.mp4| Heros Final Smash (Super Smash Bros. Ultimate)"
>}} >}}
Additionally, the stutters experienced when changing character costumes in SSBU, as well as other stutters that occurred in many games, like the performance drop that happened right before the world map and tutorial videos play in `Super Mario Odyssey`, have disappeared. The videos also play much more smoothly. Additionally, the stutters experienced when changing character costumes in Super Smash Bros. Ultimate, as well as other stutters that occurred in many games, like the performance drop that happened right before the world map and tutorial videos play in `Super Mario Odyssey`, have disappeared. The videos also play much more smoothly.
{{< single-title-imgs {{< single-title-imgs
"World map in Super Mario Odyssey, before (left) and after (right) the changes, now stutter-free!" "World map in Super Mario Odyssey, before (left) and after (right) the changes, now stutter-free!"
@ -46,11 +46,11 @@ bunnei is still working on more cleanups and looking for things that can be furt
## The Texture Cache Rewrite ## The Texture Cache Rewrite
Weve already spoken in detail about [this feature](https://github.com/yuzu-emu/yuzu/pull/4967) in its [dedicated article](https://yuzu-emu.org/entry/yuzu-tcr/), so in short, the `Texture Cache Rewrite` (which is not a shader cache change) is a work done by [Rodrigo](https://github.com/ReinUsesLisp) to reimplement the old texture cache yuzu used, which was forked from [Citra.]() This work took over 10000 lines of code, fixing graphical bugs on uncountable games and improving performance along the way. Weve already spoken in detail about [the Texture Cache Rewrite](https://github.com/yuzu-emu/yuzu/pull/4967) in its [dedicated article](https://yuzu-emu.org/entry/yuzu-tcr/), so in short, the `Texture Cache Rewrite` (which is not a shader cache change) is work done by [Rodrigo](https://github.com/ReinUsesLisp) to reimplement the old texture cache yuzu used, which was forked from [Citra.](https://github.com/citra-emu/citra) This effort took over 10000 lines of code, fixing graphical bugs in numerous games and improving performance along the way.
This paves the way for future important changes that will come later, like the `Buffer Cache Rewrite`, which is expected to not only continue to improve render accuracy, but to raise performance by optimizing the “hottest” code in the GPU section of our source, according to profiling. After this, `Project Hades` is planned, as a rewrite of the `Shader Cache`, with its main focus being improved precision and stability, and increased performance in Intel GPUs that are bottlenecked by the current implementation. This paves the way for future important changes, like the `Buffer Cache Rewrite`, which is expected to not only continue to improve render accuracy, but to raise performance by optimizing the “hottest” code in the GPU section of our source, according to profiling. Afterwards, development of `Project Hades` is planned. This is a rewrite of the `Shader Cache`, with its main focus being improved precision and stability, and increased performance in Intel GPUs that are bottlenecked by the current implementation.
Expected soon-ish is the `Compute Texture Decoders`, leveraging the compute shader capabilities of GPUs to decode the texture formats handled by the Nintendo Switch games. This includes even elusive formats like `ASTC`, the main cause of non-shader related stuttering on non-Intel GPUs. Expected soon-ish are the `Compute Texture Decoders` which will leverage the compute shader capabilities of GPUs to decode the texture formats handled by the Nintendo Switch games. This includes even elusive formats like `ASTC`, the main cause of non-shader related stuttering on non-Intel GPUs.
{{< imgs {{< imgs
"./botw.mp4| Prettiest fast-traveling (The Legend of Zelda: Breath of the Wild)" "./botw.mp4| Prettiest fast-traveling (The Legend of Zelda: Breath of the Wild)"
@ -62,15 +62,15 @@ A small PSA, AMD users should install the `20.11.3` driver version or newer, as
## Project Aether, or how to visit yuzu from within yuzu ## Project Aether, or how to visit yuzu from within yuzu
Nintendo Switch games have access to a `web applet`, used to show tutorials or guides while playing. Our original implementation using [QtWebEngine](https://doc.qt.io/qt-5/qtwebengine-index.html) had some lasting bugs that impeded gameplay in some cases, like the tutorials on a first boot of Super Smash Bros. Ultimate. Nintendo Switch games have access to a `web applet` that is typically used to show tutorials or guides while playing. Our original implementation using [QtWebEngine](https://doc.qt.io/qt-5/qtwebengine-index.html) had some lasting bugs that impeded gameplay in some cases, like the tutorials on a first boot of `Super Smash Bros. Ultimate`.
[Morph](https://github.com/Morph1984) [rewrote yuzus web applet](https://github.com/yuzu-emu/yuzu/pull/5042), still based on QtWebEngine, but completely overhauled, now accepting control input instead of only touch emulation via mouse, and rendering native fonts extracted from the native OS on the Switch, or using Open Source Software fallbacks. [Morph](https://github.com/Morph1984) [rewrote yuzus web applet](https://github.com/yuzu-emu/yuzu/pull/5042), still based on QtWebEngine, but completely overhauled. The web applet now accepts controller input instead of only touch emulation via mouse, and rendering fonts extracted from the native OS on the Switch, or using Open Source Software fallbacks.
{{< imgs {{< imgs
"./webapplet.png| Working tutorials in Super Smash Bros. Ultimate" "./webapplet.png| Working tutorials in Super Smash Bros. Ultimate"
>}} >}}
Previously non-rendering applets are now working, this includes the few cases where games got stuck due to the previous implementation, like in `Super Smash Bros. Ultimate`. Mods that bypass the applet are no longer required, like in `Super Mario Odyssey`. Previously non-rendering applets are now working. This includes the few cases where games got stuck due to the previous implementation, like in `Super Smash Bros. Ultimate`. Mods that bypass the applet are no longer required, like in `Super Mario Odyssey`.
There are limitations listed in the Pull Request that we will continue to work on. Expect this change to force our minimum Ubuntu version requirement to 20.10 in the future due to the need to update Qt to version 5.14.2 or higher. There are limitations listed in the Pull Request that we will continue to work on. Expect this change to force our minimum Ubuntu version requirement to 20.10 in the future due to the need to update Qt to version 5.14.2 or higher.
@ -83,14 +83,14 @@ There are limitations listed in the Pull Request that we will continue to work o
[Rodrigo](https://github.com/ReinUsesLisp) brings the Xenoblade fans a nice little fix. [Implementing `early fragment tests`](https://github.com/yuzu-emu/yuzu/pull/5013) fixes ghost geometry problems that resulted in dark rendering areas. [Rodrigo](https://github.com/ReinUsesLisp) brings the Xenoblade fans a nice little fix. [Implementing `early fragment tests`](https://github.com/yuzu-emu/yuzu/pull/5013) fixes ghost geometry problems that resulted in dark rendering areas.
{{< single-title-imgs {{< single-title-imgs
"Like day and night! (Xenoblade Chronicles Definitive Edition)" "Like night and day! (Xenoblade Chronicles Definitive Edition)"
"./xcdebug.png" "./xcdebug.png"
"./xcdefix.png" "./xcdefix.png"
>}} >}}
This fix will be a Vulkan exclusive for now, to avoid invalidating the current OpenGL shader cache. This fix will be a Vulkan exclusive for now to avoid invalidating the current OpenGL shader cache.
More vulkan fixes! Now by [epicboy.](https://github.com/ameerj) Our resident fish [implemented the missing `alpha test culling` feature](https://github.com/yuzu-emu/yuzu/pull/4946) from Vulkan, removing transparency related rendering bugs. This could be easily spotted in the main menu of `Super Smash Bros. Ultimate` or the vegetation of `Tales of Vesperia: Definitive Edition`. More vulkan fixes, now by [epicboy!](https://github.com/ameerj) He [implemented the missing `alpha test culling` feature](https://github.com/yuzu-emu/yuzu/pull/4946) from Vulkan, resolving transparency related rendering bugs. This could be easily spotted in the main menu of `Super Smash Bros. Ultimate` or the vegetation of `Tales of Vesperia: Definitive Edition`.
{{< single-title-imgs {{< single-title-imgs
" " " "
@ -104,7 +104,7 @@ More vulkan fixes! Now by [epicboy.](https://github.com/ameerj) Our resident fis
"./talesfix.png" "./talesfix.png"
>}} >}}
While we are speaking about [epicboy](https://github.com/ameerj), he also improved the quality of the NVDEC video decoder, by [queueing all frames](https://github.com/yuzu-emu/yuzu/pull/5002) plus some cleaning up of the code. This results in reduced skipped frames, and greatly improves videos encoded in `VP9`. While we are speaking about [epicboy](https://github.com/ameerj), he also improved the quality of the NVDEC video decoder, by [queueing all frames](https://github.com/yuzu-emu/yuzu/pull/5002) and cleaning up the code. This results in reduced skipped frames, and greatly improves videos encoded in `VP9`.
{{< single-title-imgs {{< single-title-imgs
"Do you need a hand? (Super Smash Bros. Ultimate)" "Do you need a hand? (Super Smash Bros. Ultimate)"
@ -120,7 +120,7 @@ While we are speaking about [epicboy](https://github.com/ameerj), he also improv
There has been some progress in World of Light playability, the single player campaign of `Super Smash Bros. Ultimate`. The main problem is not fixed yet, but thanks to [bunnei](https://github.com/bunnei) [stubbing `GetAlbumFileList3AaeAruid`,](https://github.com/yuzu-emu/yuzu/pull/4901) now users can do a single fight in World of Light, save, restart yuzu, and do another one. Were slowly getting there! There has been some progress in World of Light playability, the single player campaign of `Super Smash Bros. Ultimate`. The main problem is not fixed yet, but thanks to [bunnei](https://github.com/bunnei) [stubbing `GetAlbumFileList3AaeAruid`,](https://github.com/yuzu-emu/yuzu/pull/4901) now users can do a single fight in World of Light, save, restart yuzu, and do another one. Were slowly getting there!
Later updates of `Animal Crossing: New Horizons` fail to load, by [stubbing `OLSC Initialize` and `SetSaveDataBackupSettingEnabled`](https://github.com/yuzu-emu/yuzu/pull/4951) [bunnei](https://github.com/bunnei) restored playability once again. You can now enjoy all the new stuff and events added with the latest update. Later updates of `Animal Crossing: New Horizons` fail to load, but by [stubbing `OLSC Initialize` and `SetSaveDataBackupSettingEnabled`](https://github.com/yuzu-emu/yuzu/pull/4951), [bunnei](https://github.com/bunnei) restored playability once again. You can now enjoy all the new content and events added with the latest update.
[ogniK](https://github.com/ogniK5377) [started preliminary work](https://github.com/yuzu-emu/yuzu/pull/4932) on future fixes for audio emulation. This change currently improves fidelity in games like `Shovel Knight` and the `LEGO` series. Expect more audio related changes soon. [ogniK](https://github.com/ogniK5377) [started preliminary work](https://github.com/yuzu-emu/yuzu/pull/4932) on future fixes for audio emulation. This change currently improves fidelity in games like `Shovel Knight` and the `LEGO` series. Expect more audio related changes soon.
@ -128,17 +128,17 @@ yuzu has always been unstable when stopping emulation, and there are several rea
## Input improvements ## Input improvements
Youve been asking for it for ages, and [german77](https://github.com/german77) delivers. [Mouse support is here!](https://github.com/yuzu-emu/yuzu/pull/4939) With this, users can now set their mouse as they desire, bet it an analog stick, buttons, motion, or touch screen emulation. A controller with motion support is still the recommended input method, but a mouse can save you in a pinch. Youve been asking for it for ages, and [german77](https://github.com/german77) delivers. [Mouse support is here!](https://github.com/yuzu-emu/yuzu/pull/4939) With this, users can now set their mouse as they desire, be it an analog stick, buttons, motion, or touch screen emulation. A controller with motion support is still the recommended input method, but a mouse can save you in a pinch.
{{< imgs {{< imgs
"./mouse.mp4| Keep in mind that a mouse can't emulate all three dimensional space axis" "./analogkey.png| You can find this setting in Emuation > Configure... > Controls > Advanced > Emulate Analog with Keyboard Input"
>}} >}}
As an extra gift for keyboard users, [german77](https://github.com/german77) also added support for [better analog emulation with keyboard inputs.](https://github.com/yuzu-emu/yuzu/pull/4905) With this change, keyboard players can now “drift” the emulated analog stick to get any angle, not just the fixed eight ones you can get by pressing keys combinations. As an extra gift for keyboard users, [german77](https://github.com/german77) also added support for [better analog emulation with keyboard inputs.](https://github.com/yuzu-emu/yuzu/pull/4905) With this change, keyboard players can now “drift” the emulated analog stick to get any angle, not just the fixed eight directions you can get by pressing key combinations.
[german77](https://github.com/german77) also enabled the use of [up to 8 different UDP servers.](https://github.com/yuzu-emu/yuzu/pull/4937) This allows for motion controls for each player. [german77](https://github.com/german77) also enabled the use of [up to 8 different UDP servers.](https://github.com/yuzu-emu/yuzu/pull/4937) This allows for motion controls for each player.
By [using `NpadStyleSet`,](https://github.com/yuzu-emu/yuzu/pull/4959) [Morph](https://github.com/Morph1984) now limits the available input options depending on the game. For example, in `Pokémon: Lets Go`, now the only possible options are Handheld, Left Joy-Con or Right Joy-Con. By [using `NpadStyleSet`,](https://github.com/yuzu-emu/yuzu/pull/4959) [Morph](https://github.com/Morph1984) now limits the available input options depending on the game. For example, in `Pokémon: Lets Go`, the options are now limited to either Handheld, Left Joy-Con, or Right Joy-Con.
{{< imgs {{< imgs
"./limit.png| No cheating!" "./limit.png| No cheating!"
@ -150,7 +150,7 @@ By [stubbing both](https://github.com/yuzu-emu/yuzu/pull/5021) `SetNpadCommunica
## A silent Guardian, a watchful Protector ## A silent Guardian, a watchful Protector
[Lioncache](https://github.com/lioncash), our harsh but fair code reviewer. has been [removing](https://github.com/yuzu-emu/yuzu/pull/5028) the `global variable accessor` from the whole project (the linked PR is just the latest section), a work that took months. yuzu used to be able to run a single global system instance, but with this change, yuzu can now create as many emulated instances as needed, all separate from each other. This provides full control over the life cycle of the emulated system, allowing among other things, faster game boot times, and maybe more importantly, forcing the devs to keep up cleaner code, which is easier to maintain in the future. [Lioncache](https://github.com/lioncash), our harsh but fair code reviewer, has been [removing](https://github.com/yuzu-emu/yuzu/pull/5028) the `global variable accessor` from the whole project (the linked PR is just the latest section), work that has taken months. yuzu used to be able to run a single global system instance, but with this change, yuzu can now create as many emulated instances as needed, all separate from each other. This provides full control over the life cycle of the emulated system, allowing among other things, faster game boot times, and maybe more importantly, forcing the devs to keep up cleaner code, which is easier to maintain in the future.
## Future projects ## Future projects
@ -158,7 +158,7 @@ The `Buffer Cache Rewrite` has been progressing very fast with no delays so far,
More multicore changes are incoming, along with input improvements... More multicore changes are incoming, along with input improvements...
...And a [certain legend](https://github.com/comex) of iOS hacking has been contributing to the project, time will tell what will this bring us. ...And a [certain legend](https://github.com/comex) of iOS hacking has been contributing to the project, time will tell what this will bring us.
That's all folks! Thank you so much for taking the time to read this progress report. See you next month, maybe Christmas will come early! That's all folks! Thank you so much for taking the time to read this progress report. See you next month, maybe Christmas will come early!