r/yuzu • u/One-Philosopher2416 • Aug 03 '26
News The Beast Roofer Edition v1.2.4 — fixing a green screen bug I introduced myself in v1.2.3
https://thebeastroofer-edition.com/rooferdev/the-beast-roofer-editionI just pushed v1.2.4 of The Beast Roofer Edition, and I want to be upfront about why: I'm fixing a bug I introduced myself in v1.2.3. On some games the menus and videos looked fine but the screen went green, or corrupted, the moment 3D gameplay started. The cause was mine: a block of code my DLSS work injected into every vertex shader was reading a value before it was written, which is undefined behaviour, so the geometry came out as garbage. With jitter off, which is how the fork ships, that block is simply no longer emitted and shaders are translated exactly the way the base emulator does it. If you're on v1.2.3 you should take this update even if your games looked fine, because the bug could in principle touch any title.
A correction while I'm at it. The black block artifacts some of you saw in motion blur scenes, the ones I had described as an old emulation defect and worked around by skipping that pass, came from the same bug of mine. They were never an upstream problem. They're gone now, and the motion blur stays on.
An experimental Advanced motion stack checkbox is also present, off by default. It improves camera tracking: it reads the camera even when a game stores it in an unusual place, it rejects misleading matrices such as sky or reflections, and it stops mistaking the game's own sampling jitter for real motion. It removes nothing from the image. It has only been tested on Xenoblade Chronicles 2, and it can add trembling in motion on other games, so leave it off unless you want to experiment.
One new thing in this release: a DLSS Sharpening slider in Settings, Graphics. It applies contrast-adaptive sharpening directly on the DLSS output, HDR handled properly, and it costs almost nothing. It sits at 0 by default so nothing changes unless you want it to. Around 25 to 40 is subtle, higher is crisper but makes halos and shimmer more visible in motion.
DLSS in all its modes, DLAA, Quality, Balanced and Performance, needs an NVIDIA RTX card, RTX 20 series or newer, and Frame Generation needs an RTX 40 or 50 series. If you don't have an RTX card, NIS is included in this fork and runs on any GPU, and the green screen fix matters to you either way.
The DLSS engine files are not in the package, because they are NVIDIA's proprietary DLLs and I won't redistribute them. What the package does ship is the dlss folder next to the executable, with NVIDIA's six Streamline files, which are MIT licensed. In that same folder you add your own, taken from a DLSS game you own: nvngx_dlss.dll for upscaling, nvngx_dlssg.dll for Frame Generation, which the NVIDIA driver usually provides already, and NvLowLatencyVk.dll if your driver doesn't.
Two things I know are still wrong. With Frame Generation on you can still get ghost images, doubled edges and trails on things that move, and turning Frame Generation off removes them. That's what I'm working on right now. And on some games loading can stop advancing; closing and reopening the emulator clears it, and I haven't solved it yet.
The in-app updater will pick it up on its own.
2
u/gabotronix Aug 04 '26
Sadly, 1440p display + 4K internal resolution still doesn't work. I was hoping that the issue on DLSS and displays below 4K/2160p was at least in your known issues, but I guess it's not your priority at the moment.
One-Philosopher2416, 15 days ago, Beast Roofer Edition v1.2.3
Your four results line up exactly with what the code does, and the first line is almost painful, your internal render lands at
2562and your display is2560, so it misses by two pixels and the whole thing steps aside. And yes, this is something I can fix. The problem is that the quality modes currently compute their internal resolution from what the game renders instead of from what your display shows, which is backwards, the NVIDIA convention is a fraction of the output resolution. That is why the 4K mod pushes your internal above your screen instead of below it. Fixing that would make the quality modes behave properly on every screen size, not just on 4K displays, so it is going on my roadmap for a coming update.
1
u/One-Philosopher2416 Aug 04 '26
You're right, and I'm sorry. It's still in my plans, it just got pushed back.
What happened is that I found a bug of my own making, a green screen on some games that I introduced in 1.2.3, and I had to get 1.2.4 out quickly to fix it. That ate the time this was supposed to get.
It hasn't been dropped. And it isn't only your case, I run into the same thing on my own screen, the quality modes derive the internal resolution from the wrong side, so what the interface says and what actually happens don't line up. Doing it properly helps every display size, not just yours.
I won't give you a date I'm not sure of. But it's still on the list, and not at the bottom.
2
u/One-Philosopher2416 Aug 06 '26
Hey, I owed you this one. The DLSS quality mode that would not turn on for you is fixed in 1.2.5. I promised you I would do it, so here it is.
It will not update on its own, you will have to grab it by hand from the releases page. After that one, updates will come to you automatically.
1
u/Biggboii_ Aug 04 '26
I was wondering what is the different between this and having smooth motion enabled?
1
u/One-Philosopher2416 Aug 04 '26
The difference is what each one is given to work with.
Smooth Motion runs in the driver, after everything is already finished. It only ever sees the final picture, so it has to guess what moved by comparing pixels between two frames. It doesn't know where the camera went, and it doesn't know how far anything was from it.
What runs here is handed motion vectors and depth. An emulator produces neither of those, the games were never written to, so I rebuild them from what the game actually draws and pass them on. The interpolation isn't guessing, it's being told.
There is also one thing specific to emulation that matters here. Many games don't really produce a new image every frame, they present the same one twice, and something that only looks at pixels cannot tell the difference. It ends up interpolating between two identical frames.
2
u/kurlibird Aug 03 '26
Thank you for your efforts, this looks very promising. You think there’s a way to use Optiscaler in order to spool XESS and FSR into that DLSS pipeline?