Recompilation: An Incredible New Way to Keep N64 Games Alive

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
N64 emulation has long been held back by 2000s era software- there have certainly been advancements over the years, but mostly built atop the same archaic plugin system. Native ports solve that issue but they take a lot of time and work. A full decompilation can take years- "It is done. Two years! We started this in 2019" and the ports themselves are usually separate projects taking months more. Not every game can get this treatment, with most efforts so far focusing on the same handful of popular games that emulators did. What if there were a way to… I don’t know… magically turn an N64 ROM into a runnable exe? Like, in a matter of minutes? While opening the door to ray tracing, 4k, widescreen, gyro, and high framerates, if it’s not too much trouble? It may sound like a late April Fool’s Day joke, but that’s what the “static recompilation” tool made by modder Wiseguy is capable of. I thought viewers might not believe this was real, so I asked Wiseguy to record a demonstration. A standard ROM is loaded, translated, and ready for compiling, in mere seconds. It’s so fast, the workload doesn’t even bother multithreading. It’s important to note that the end user won’t have to do this- the compiled ports don’t include the original game assets, so Wiseguy should be able to share them pre-built. You’ll be prompted to load from your own ROM dump on first startup, similar to the current PC ports. As far as how it works, the tool converts the N64 code into C so it can be compiled to run on a modern processor, and at runtime the renderer translates the graphics operations to modern low level API calls- Direct3D12 on Windows and Vulkan on Linux. Wiseguy likened this to the way Valve’s Proton compatibility layer works, and also compared it to the approach taken by the Mega Man Legacy Collection. A decompiled port may alter the game’s source code to make it easier to run on PC, but the translation based approach of these recomps keeps the internal processing the same as original hardware. Wiseguy claims their method achieves near Parallel-RDP accuracy, having created dozens of test ROMs to make sure the original lighting and effects are correct, and I’ve seen nothing so far to suggest otherwise. Issues GlideN64 still struggles with, like depth effects, work perfectly here without the need to configure pages of settings. Any glitches I ran into were related to the high framerate feature and have been patched. The only suspected bugs otherwise, like this tearing effect when the screen shrinks, turned out to be accurate behavior, though the effect was fixed anyway for good measure. I didn't experience a single crash or stability issue. There was a game ending bug involving a lot of head stepping, but that's a known issue within the game itself. That said, the automated process isn’t perfect and the recomps usually require manual fixes for things like modern hardware speeds being way faster than expected. But the amount of time and work needed to patch them up pales in comparison to a full decompilation and port process- while the Majora’s Mask repo is still inching towards completion, Wiseguy claims to have had a fully playable port as early as February 2023- and it only took two days to make. The time since was spent on polishing the recompilation process and various enhancements. In no way does this render decompilation and traditional porting obsolete- the recomp code is not readable, so having fully reverse engineered source code is a big help for modding and patching even when using this tool. Part of the reason Majora’s Mask only took two days is that there was a decompilation to reference. But of course, the point is that you don’t need a decompilation to create a port anymore, opening the door to the most obscure games running natively on PC. Wiseguy’s first successful recomp test was Rocket: Robot on Wheels, a game I had never even heard of before, but that now has a port thanks to this tool. Even Superman 64- a direct affront to God- has a port thanks to this tool. That’s not a joke! This piece of shit is on PC! Testing has been limited to a handful of games so far, but Wiseguy expects the tool to generally work with the full N64 library. The exceptions will be games with custom microcodes- for Majora’s Mask, the lighting microcode was already understood well enough to be implemented in its port. For other and less documented microcodes, ports could still work but in LLE mode, which would mean sacrificing the major enhancements like ray tracing and high framerates. Speaking of- major enhancements, like ray tracing and high framerates. These come courtesy of Dario’s RT64 renderer; you may know Dario from his excellent Mario 64 ray tracing fork. When preparing to bring RT64 to Ocarina of Time he realized that he could carry his work over to an emulator plugin and deliver his enhancements to many games at once. From there, Wiseguy’s experimental recomp tool allowed RT64 to bypass emulators altogether. Some of the screenshots Dario has been sharing for the RT plugin were secretly from recomp ports instead. That emulator plugin is still planned for release, but the recomps will be less restricted when it comes to enhancement potential. And in specific ways, the recomps will be less restricted than the current PC ports. I’m a big fan of Ship of Harkinian, so I don’t mean to disparage it in any way- it’s a great port with amazing features and compatibility, but its use of older APIs and reliance on the CPU for processing vertices creates roadblocks for certain enhancements. RT64 relies much more heavily on the GPU, taking advantage of compute shaders and low level APIs to make enhancements easier. High framerates are achieved with the game logic running at 20fps, but instead of sending commands as draw calls right away, the full frame data is recorded and queued for the renderer- that difference is apparently critical to everything RT64 does. The queued frames are checked for matching draw calls, and then the renderer creates the additional frames between them. In the event the renderer gets something wrong, specific animations can be tagged with IDs that tell the renderer how to do it right. The results are extremely smooth. The animations don’t look out of place to me (as they often can at higher rates) and even the texture scrolling effects for fire and water are interpolated- without this, the game action and 2D effects can be wildly mismatched. Model replacements will also be done at the render stage, not unlike RTX remix, so modern formats can be used and there’s no danger of the game exploding due to a larger than expected file, since it’s internally using the original assets. Much like MY BODY, ultrawide aspect ratios are supported and mostly work well. The 3D cone for song effects was patched to extend beyond the 4:3 window, though the camera still clips through the landscape during some cutscenes. There's support extensive modding, and it should be possible to port existing ROMhacks over- the Zelda games will support gyro aiming, D-pad mappings and widescreen HUD placements out of the box. Majora’s Mask also has an auto-save mode, which hijacks the owl slot to intermittently back up your progress. Everything is saved but your location, so you can quit as soon as the icon appears. Here I’ve closed the recomp just at the end of the laborious Don Gero quest, and picked right back up where I left off. The last auto-save loads at startup by default, though you can still choose the song of time saves using the “rewind” button. Using an owl statue will overwrite the autosave, and like the 3DS version these are permanent. You could rely on this system entirely if you want a more modern experience, but you’re free to disable it and play the original way. Everybody wins. The recomp also has corrected timings to keep the Giant’s sequence from finishing before the music. These ports have been designed from the ground up to have low latency and no stuttering, using an ubershader approach similar to Dolphin. It’s unbelievable how fluid and smooth Majora’s Mask is every step of the way- from the pause menu to the pictobox, there’s no hanging or delay in any of the usual places. The audio is also deserving of praise, with excellent clarity and no crackling or timing issues. Wiseguy rewrote the audio system three times to get a satisfactory result and didn’t take the shortcuts with frame pacing that most audio plugins have, resulting in the clearest N64 sound quality I’ve heard: After years of fiddling with plugins and still getting bad results, it’s a relief for the sound to just work, and to work this well. The existence of this recomp shouldn’t dampen anyone’s enthusiasm for the decompilation-based port that’s coming. Ship of Harkinian aims for a different experience, crafted with the help of speedrunners and people familiar with all of the game’s quirks and absolutely loaded with options to customize each and every one of them. The Majora’s Mask port should offer the same depth, as well as lower hardware requirements. The recomps are streamlined for simplicity- the interface is restrained to get you into the game with minimal fuss, more like an official release. These are very much focused on playing rather than tinkering, so there’s room enough for two ports to coexist. Majora’s Mask is the only recomp launching now, but Ocarina of Time will be added soon. The plan is for sequels, like the Zeldas or Banjo games, to be combined together in one launcher. Some features, like DLSS, custom textures, free cameras, and of course ray tracing will arrive in upcoming builds. I didn’t get a chance to go hands-on with an RT build, but everything I’ve seen gels with the 64 graphics surprisingly well, and the results are worlds apart from ReShade’s RT. Zelda’s time of day systems especially take on a new realism when you can actually see the sun casting shadows on the landscape. There are even more possible enhancements Dario would like to bring afterward, but the roadmap is already too full to mention anything else. The emulator plugin likely won’t be ready until late this year but it should offer a great sampling of Dario’s RT work until more recomps arrive. The RT64 library is shared between recomps and the plugin, so any- I’m sorry, he put ray tracing in this... This piece of shit! …So any fixes or updates made for one branch will benefit the other. The plugin can theoretically be integrated into Ship of Harkinian as a rendering backend as well, though a lot of tech details would have to be worked out first. Even without the fancy enhancements, this is a monumental step forward for keeping the full N64 platform accessible and should vastly improve the playability of many games. It’s yet another testament to the ingenuity of the fan community and the ever-escalating level of quality it delivers for retro gaming. Wiseguy is only able to do so much, so his hope is for other modders to take the tool into their own hands and do recomps from here. If you’ve always wanted a certain game on PC and know how to COMPUTER, this could be your chance. The recomp is linked below, and again, you’ll need to provide a US ROM of your own to use it. Whether you own a physical or digital version of the game, this is easily done. And because there’s a native Linux version it can easily run on a Deck- no Protoning required. If you want to learn more about recomps or RT64- and you should- check out the official trailer from Wiseguy, as well as RT64’s development history on TWITTERI’mNotCallingItX Barf! Koolooh Limpah! SUPERMAN, in short time your fate will be sealed, SUPERMAN. SUPERMAN, in short time your SUPERMAN will be sealed, SUPERMAN. SUPERMAN. SUPERMAN, in short time your SUPERMAN will be SUPERMAN. Piece of shit! SUPERMAN
Info
Channel: Nerrel
Views: 588,501
Rating: undefined out of 5
Keywords: emulation, nintendo 64, preservation, pc port, decompilation, majora's mask, ray tracing, high framerates, mod, wiseguy, dario, rt64
Id: ywWwUuWRgsM
Channel Id: undefined
Length: 11min 13sec (673 seconds)
Published: Fri May 10 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.