3D-retrogames geporteerd in plaats van geëmuleerd: van N64 naar moderne hardware
Als alternatief voor software-emulatie, die oude videogamehardware nabootst, zijn er inmiddels pc-ports die native draaien op Linux, macOS en Windows. Zo draaien retro-3D-games in 4K en met 120 fps. We laten zien hoe dit werkt en presenteren veelbelovende ports.
Lees verder na de advertentie
Van Nintendo 64 naar 4K en 120 fps
Vroeger viel bij spelers de mond open bij het zien van Mario’s eerste 3D-avontuur in Super Mario 64. Tegenwoordig is die game nog steeds een fascinerend stukje videogamegeschiedenis, maar door de lage resolutie (320 × 240 pixels) en de haperende weergave met slechts 20 tot 30 frames per seconde (fps) is de fascinatie van toen tegenwoordig nauwelijks nog te begrijpen.
Helaas is er tot nu toe geen remaster van Nintendo die de game technisch naar het heden brengt. Daar komen verschillende opensourceprojecten om de hoek kijken: met decompilatie- en recompilatiemethoden toveren ze retrogames van klassieke gameconsoles zoals Nintendo’s N64 en Sony’s PlayStation 2 in 4K-resolutie met 120 fps in breedbeeldformaat op je tv.
Tip
Download het e-book en krijg direct inzicht in de stappen die jouw organisatie moet zetten.
In dit artikel leggen we uit wat daar technisch achter zit, hoe je dergelijke titels installeert en welke hardware je nodig hebt voor het perfecte grafische genot.
Op dit moment zijn er pc-ports van vroege 3D-titels zoals Banjo-Kazooie, Jak & Daxter, Mario Kart 64, Super Mario 64 en The Legend of Zelda: Ocarina of Time. Heel recent is de GameCube-titel The Legend of Zelda: Twilight Princess voor Android, iOS, Linux, macOS en Windows van het Dusklight-team daarbij gekomen.
Het team heeft naar eigen zeggen zes jaar aan dat decompilatieproject gewerkt. Inmiddels zijn er ook ports van 2D-titels zoals The Legend of Zelda: The Minish Cap verschenen.
Decompilatie versus recompilatie
Natuurlijk kun je vroege 3D-titels al op een relatief zwakke Raspberry Pi 3 spelen via software-emulators, maar daarbij blijven ook de technische tekortkomingen van oude gamelconsoles behouden. De geëmuleerde gameconsole moet zich immers zo trouw mogelijk aan het origineel gedragen.
Een groot deel van de beschikbare rekenkracht van moderne pc’s blijft dan onbenut. Software-emulatie moet berekeningen zelfs kunstmatig afremmen, zodat games niet uit de pas raken.
Om het volledige potentieel van de huidige hardware te kunnen benutten, ontdoen ontwikkelaars zich van die beperkingen door de codebasis aan te passen. Tijdens het decompileren proberen ze aan de hand van de originele binaire code van een spel de broncode zo nauwkeurig mogelijk te reconstrueren. Die code passen ze vervolgens aan, bijvoorbeeld om moderne grafische interfaces aan te spreken en 3D-titels zo in hogere resoluties weer te geven.
Verder lezen?
Laat je e-mailadres achter en lees dit artikel direct gratis verder. Daarnaast ontvang je onze wekelijkse nieuwsbrief, zodat je op de hoogte blijft van alles wat speelt in de (zakelijke) techwereld.
Uiteindelijk resulteert dat vaak in C-code, die wordt gecompileerd tot een applicatie die native draait op Linux, macOS en Windows.
Dat proces is erg tijdrovend, en het reverse-engineeren van code kan meerdere jaren in beslag nemen.
Een alternatief is de recompilatie-aanpak. Daarbij wordt reeds gecompileerde binaire code direct omgezet in code die begrijpelijk is voor de huidige systemen. Zo krijg je ook een bestand dat op moderne pc’s draait en het volledige potentieel van moderne hardware benut. Maar ook dat proces is moeizaam en kost veel ontwikkelingstijd.
Na uitgebreid verschillende titels te hebben gespeeld die op basis van decompilatie en recompilatie zijn gemaakt, zijn we tot de conclusie gekomen dat er geen betere of slechtere aanpak is. Beide methoden leveren indrukwekkende resultaten op die gelijk staan aan perfecte remasters. Het is eerder de keuze van de ontwikkelaars op welke basis ze een pc-port maken.
In de praktijk profiteren beide benaderingen zelfs van elkaar: we kwamen in Discord-chats steeds weer opmerkingen van ontwikkelaars tegen dat ze bij hun recompilatieprojecten bijvoorbeeld belangrijke inzichten hebben opgedaan over de technische werking van games op basis van gedecompileerde broncode.
Betere graphics en speelbaarheid
Vooral 3D-games profiteren van pc-ports die op die basis gemaakt zijn. Door met verouderde methoden te breken, verdwijnen beperkingen en draaien games in 4K met 3840 × 2160 pixels en 120 fps in de beeldverhouding 16:9. Maar er zijn ook nog hogere resoluties en verversingsfrequenties mogelijk in de beeldverhouding 21:9. Als je wilt, kun je titels ook in de originele 240p-resolutie spelen, maar dan wel met 360 fps.
Voor de hogere verversingssnelheid maken de ontwikkelaars gebruik van kunstmatig gegenereerde frames. Dat klinkt in eerste instantie afschrikwekkend, maar in de praktijk werkt het prima – we hebben geen beeldartefacten kunnen ontdekken.
De hardware-eisen blijven daarbij binnen de perken. We hebben de genoemde titels bijvoorbeeld op een Steam Deck OLED in de native 800p-resolutie vloeiend met 90 fps gespeeld. Als je in Full HD met 60 fps wilt gamen, kan dat al met veel geïntegreerde grafische processors.
Een AMD Ryzen 7 5700G met geïntegreerde GPU kon dat in de praktijk zonder problemen aan. Die processor kon zelfs probleemloos 4K60 aan. Voor 4K120 is echter een krachtigere grafische kaart nodig.
Bij onze tests werkte dat uitstekend op een Mac mini M4. Vooral dankzij de Frameboost spelen de titels een stuk beter. The Legend of Zelda: Ocarina of Time draait bijvoorbeeld op een N64 met haperende 20 fps. Dat voelt ontzettend traag aan en het personage reageert met vertraging op je invoer.
Met een ultravloeiende 120 fps bereikt het spel een heel nieuw niveau, en de besturing voelt merkbaar directer aan. Als je wilt, kun je de genoemde titel of ook Super Mario 64 en Mario Kart 64 voorzien van door de community gemaakte HD-texturen in Full HD- of 4K-resolutie en zo de retrolook een upgrade geven (downloads zie de link bij dit artikel).
Naast HD-texturen zijn er voor veel spellen ook modificaties die de speelbaarheid verbeteren. Voor Banjo-Kazooie zijn er bijvoorbeeld mods om het weergegeven zichtbereik in het spel te vergroten. Daardoor zijn vijanden al van veraf te herkennen, die anders pas plotseling opduiken als je dichterbij komt.

Daarnaast kun je tussenfilmpjes overslaan en het personage met cheats onkwetsbaar maken. Er zijn handige functies: per level zijn er in deze game 100 noten. Als je die niet allemaal in één run verzamelt en het level verlaat, gaan de tot dan toe verzamelde noten verloren en moet je weer helemaal vanaf nul beginnen. De recompilatieversie slaat de tot dan toe in een level verzamelde noten op wanneer je het level verlaat.
Met de Harbour Masters 64-versie van The Legend of Zelda: Ocarina of Time kun je de rechter analoge stick van een gamepad gebruiken om de camera vrij te draaien. Er is zelfs een pc-port van Super Smash Bros. (codenaam BattleShip) van de N64, die een experimentele online multiplayer-modus bevat.

Wie zit daarachter?
Voor de pc-ports hebben ontwikkelaars uit verschillende opensourceprojecten hun krachten gebundeld. Daarbij zijn vooral Harbour Masters 64, N64 Recompiled en OpenGOAL het vermelden waard.
De leden van Harbour Masters 64 gebruiken voor hun ports onder andere de zelfgemaakte libultraship-bibliotheek, die is gebaseerd op de originele N64-SDK (Libultra) van Nintendo. In combinatie met de inzichten uit decompilatieprojecten maken ze uitstekende pc-ports.
Op dit moment heeft het project de volgende titels opgeleverd: Ship of Harkinian (The Legend of Zelda: Ocarina of Time), 2 Ship 2 Harkinian (The Legend of Zelda: Majora’s Mask), Starship (Star Fox 64), SpaghettiKart (Mario Kart 64) en Ghostship (Super Mario 64).
N64 Recompiled is een tool van ontwikkelaar Wiseguy. Daarmee kun je binaire code opnieuw compileren, zodat er een spel van ontstaat dat op pc’s draait.
Om te profiteren van de voordelen van moderne grafische kaarten, maken die pc-ports gebruik van de sm64rt-legacy-renderer. Daarmee wordt een GPU rechtstreeks aangestuurd via Microsofts Direct3D-API of Vulkan onder Linux. Op termijn moet de tool op alle N64-spellen toepasbaar zijn.
Tot nu toe hebben veel titels echter nog individuele aanpassingen nodig. Het is gelukt met de volgende titels: Banjo-Kazooie, Bomberman 64, Duke Nukem Zero Hour, The Legend of Zelda: Majora’s Mask, de nooit uitgebrachte N64-titel Dinosaur Planet, Goemon en Star Fox 64.
Het team van OpenGOAL heeft zich gespecialiseerd in de Jak & Daxter-reeks van Sony’s PlayStation 2. Naast Jak and Daxter: The Precursor Legacy en Jak II is sinds kort ook het derde deel Jak 3 beschikbaar. Deel twee en drie zitten echter nog in de bètafase en er zijn hier en daar wat audio- en grafische bugs. Maar ook die delen zijn al bijna perfect speelbaar.
Het werk van de ontwikkelaars is gebaseerd op de programmeertaal Game-Oriented-Assembly-Lisp (GOAL) van de oorspronkelijke ontwikkelaars van Naughty Dog. Het OpenGOAL-team heeft die taal bestudeerd en naar eigen zeggen voor 99 procent gereconstrueerd.
Om de spellen op moderne pc’s aan de praat te krijgen, zijn de ports in C++ geïmplementeerd.

Installeren
De genoemde projecten zijn te vinden op GitHub (zie de link). Ondersteuning krijg je via het messenger- en chatplatform Discord. Op GitHub vind je naast de documentatie over de pc-ports ook installatie-instructies.
Omdat de ontwikkelaars niet met de originele assets van de spellen werken, heeft bijvoorbeeld Nintendo geen juridische basis om de projecten vanwege schending van het auteursrecht offline te halen. Maar omdat de pc-ports wel afhankelijk zijn van de assets, is een back-up van een spel in de vorm van een ROM- of ISO-bestand nodig.

Het installeren onder Linux, macOS en Windows is voor alle pc-ports relatief eenvoudig. Hieronder leggen we de werkwijze uit aan de hand van een voorbeeld op Windows. Voor de ports van Harbour Masters 64 download je voor de betreffende titel een ziparchief van de GitHub-pagina. Na het uitpakken start je het .exe-bestand en word je gevraagd het pad naar het ROM-bestand op te geven. Vervolgens worden de assets binnen enkele seconden uitgepakt en start het spel.
Met de Esc-toets roep je het instellingenmenu op en kun je daar onder andere de resolutie en verversingssnelheid aanpassen. Bij de N64-Recompiled-ports download je voor elke titel een aparte launcher, waarmee je de assets uitpakt en instellingen aanpast. Daarmee kun je indien nodig ook de knoppen op gamepads vrij toewijzen.
Voor Linux en Windows is er de N64RecompLauncher (zie de link), die alle door het project gemaakte pc-ports start. In de client kun je ook zien of er updates voor de afzonderlijke ports zijn en die direct installeren.

OpenGOAL gebruikt voor alle drie de Jak & Daxter-delen ook een universele launcher.
Conclusie en vooruitblik
De genoemde projecten laten retrotitels in de ware zin van het woord in een nieuw jasje schitteren. De vroege 3D-titels profiteren enorm van de kracht van de huidige hardware, en je kunt de graphics naar believen schalen. In theorie is met een high-end grafische kaart 8K met 240 fps mogelijk.
Maar niet alleen de gepolijste graphics doen de games goed, ook handige functies en door fans gemaakte modificaties dragen ertoe bij dat de titels succesvol naar het heden gehaald worden. Het verbazingwekkende is dat de pc-ports, ondanks de soms ingrijpende aanpassingen, nog steeds de charme van de originele spellen uitstralen – maar als je wilt, kun je de titels ook op de oorspronkelijke resolutie en verversingssnelheid spelen.
De pc-ports voelen aan als de ultieme versie van de klassiekers die je altijd al had gewild. De scene is super actief en werkt voortdurend aan verbeteringen die je in nightly-versies kunt uitproberen.
De ontwikkelaars van N64 Recompiled werken zelfs aan raytracing-ondersteuning voor een realistischere belichting. Maar volgens Wiseguy gaat dat gepaard met een enorme technische en artistieke inspanning. Tot nu toe kun je dat nog bij geen enkele port uitproberen.
De vooruitzichten voor de retro-toekomst zien er rooskleurig uit, en wie gamet, kan zich nu al verheugen op meer pc-ports. Harbour Masters 64 heeft onlangs de ontwikkeling van Paper Mario en Harvest Moon 64 aangekondigd.
Op de website thegamingemporium.com vind je een overzicht van de momenteel beschikbare en geplande pc-ports, inclusief links naar de betreffende projecten.
Op een andere overzichtssite (zie de link bij dit artikel) zie je de huidige decompilatiestatus van verschillende spellen. Zo staat Snowboard Kids 2 van de N64 op zo’n 98 procent, terwijl Super Smash Bros. Brawl van Nintendo’s Wii met één procent nog een hele tijd op zich zal laten wachten.
Dennis Schirrmacher en Noud van Kruysbergen
Links
| Website van het OpenGOAL-project | https://opengoal.dev/ |
| Website van Harbours Masters 64 | https://www.harbourmasters.org/ |
| GitHub-website BattleShip | https://github.com/JRickey/BattleShip |
| N64 Recomp Launcher | https://github.com/SirDiabo/N64RecompLauncher |
| Modificaties voor Banjo-Kazooie | https://thunderstore.io/c/banjo-recompiled/ |
| HD-texturen voor verschillende titels | https://evilgames.eu/texture-packs.htm |
| HD-texturen voor The Legend of Zelda: Twillight Princess | https://www.henrikomagnifico.com/zelda-twilight-princess-4k |
| Decompilatiestatus verschillende titels | https://https//decomp.dev/projects |
| Zelda Twilight Princess PC-port | https://twilitrealm.dev/ |
| Overzicht van PC-ports oude retrotitels | https://thegamingemporium.com/categories/decompilations-recompilations/ |
Tip
Krijg direct toegang tot alle beschikbare edities op je laptop, tablet of smartphone.
Praat mee