Ik heb iets met nostalgie. Ik heb ook iets met oude computers en consoles.

Hoe graag ik ook de laatste next-gen games speel op m'n Xbox, ergens heb ik diep vanbinnen een heel weke plek voor de tijd dat personages gewoon een hoopje pixels waren.

Daarom heb ik een Project MiSTer gebouwd, de heilige graal voor retrofreaks. Maar eerst een kleine geschiedenisles ...

Emulatie

PC-bezitters zijn al sinds de komst van de consoles droevig omdat hun buurman op zijn veel goedkopere Nintendo heel wat leukere games kan spelen.

Hoewel consoles op papier natuurlijk veel minder krachtig zijn dan PC's bevatten ze specifieke chips die heel snel exact dat doen wat consoles moeten kunnen: snel grafische bewerkingen uitvoeren.

Heel wat slimme mensen hebben getracht om toch die games van die consoles draaibaar te krijgen op een gewone PC. Dat heet dan emulatie.

Kort door de bocht leest een emulator de softwarecode die voor een ander systeem geschreven is, en vertaalt die naar de taal die het systeem waar de emulator op draait verstaat.

Het duurde nog tot de tweede helft van de jaren '90 voor de eerste emulators verschenen die een NES en een SNES redelijk deftig konden nabootsen op een gewone computer. Pas dan waren de processors van PC's krachtig genoeg om de vertaalslag te kunnen maken tussen NES/SNES en PC.

Als je dit interessant vindt is het Youtube-kanaal van MVG een aanrader.

We zijn nu een goede 25 jaar verder, en emulatie is overal. Op AliExpress smijten ze naar je kop met goedkope handhelds en consoles die alle klassieke games goed kunnen draaien. En consolebouwers zoals Nintendo en Microsoft gebruiken emulators om hun oude spellen te kunnen spelen op nieuwe hardware

Veel hobbyisten gaan ook aan de slag met een Raspberry Pi om zo kleine emulatorbakjes te bouwen om aan hun TV te hangen.

FPGA

Maar de titel van deze blogpost is niet "Hoe bouw je de ultieme retromachine met een Raspberry Pi".  

Deze post gaat over Project MiSTer, en dat is een heel ander beest.

Software-emulatie heeft namelijk ook nadelen. Het is zoals de naam al zegt het nabootsen van een heel systeem volledig in software. Elke instructie in de programmacode (het spel) wordt zo goed mogelijk vertaald. Maar verschillende chips, verschillende timings en daaronder ook nog een besturingssysteem dat nog 100 andere dingen heeft af te handelen maken dat er niet makkelijk op.

Daarom is software-emulatie vaak niet accuraat. Leg een geëmuleerd spel naast het echte, en de kans is groot dat er ergens wel glitches zijn of dat de audio niet perfect is. Er zijn wel emulators (zoals higan) die mikken op 100% accuraatheid, maar die zijn veel te zwaar voor bijvoorbeeld een simpele Raspberry Pi.

Maar zelfs voor relatief krachtige systemen is het vaak moeilijk om emulatie juist te krijgen. Nintendo voegde bijvoorbeeld onlangs Nintendo 64 games toe aan de Switch, en kreeg bakken kritiek over de kwaliteit van hun zelfgebouwde emulator.

N64 games on the Switch are here, and it’s off to an ugly start
Terrible emulation quality hinder the nostalgic experience.

Gelukkig bestaat er een manier om echt op hardwareniveau te gaan emuleren: de FPGA (Field Programmable Gate Array). Dit is een programmeerbare processor die tot eender wat geprogrammeerd kan worden. Dus bijvoorbeeld tot een complete Super Nintendo. Of een SEGA. Of tot eigenlijk eender welk apparaat dat fysiek op de chip past.

Het grootste voordeel van FPGA-emulatie is dat als de bouwer van de core (de implementatie van een systeem) zijn werk goed gedaan heeft je een 100% accurate emulatie hebt, inclusief alle mankementjes die de originele hardware ook had.

Het grootste nadeel is dan weer dat het duur is. Analogue begon enkele jaren geleden als eerste met het aanbieden van FPGA-systemen en die kosten rond de 200 euro per stuk per systeem (NES, SNES, Sega Master System, Game Boy, ...) en dan heb je ook nog de originele cartridges nodig.

Project MiSTer

Enter de open-source community. Een aantal jaren geleden begonnen er daar een aantal enthousiastelingen aan een project om de Amiga en de Atari ST te emuleren op een FPGA: MiST.

Terwijl zij daar goed bezig waren bracht Intel een veel krachtiger FPGA-ontwikkelbord uit voor het onderwijs: de DE10-Nano. En omdat ze die studenten niet teveel wilden laten betalen besloten ze het onder de kostprijs te verkopen.

Dat bracht Alexey Melnikov op het idee om MiST te laten draaien op die DE10-Nano. Hij gaf het de naam Project MiSTer.

Al snel was er een hele community rond dit project, en ook een hele hoop cores. De standaard klassieke console-emulators zijn er allemaal, maar ook een heleboel vintage computers en oude arcadekasten.

Omdat de DE10-Nano naast een Cyclone V FPGA ook nog een relatief krachtige ARM-processor heeft, kan Project MiSTER bovenop de verschillende cores ook nog een (Linux) besturingsysteem draaien.

Het besturingssysteem (bron)

Dit besturingssysteem ziet er extreem old-school uit, en is een pak minder fancy dan wat je krijgt bij andere emulators. Maar het doet zijn job, en zorgt ervoor dat elke core op exact dezelfde wijze configureerbaar is. Daarnaast zorgt de ARM-processor er ook voor dat je beeld- en geluidsfilters kan toepassen, en allerlei andere quality-of-life aanpassingen zoals cheatmenus, savegames en hermappen van controllerknoppen.

Waar te beginnen?

Het minimum dat je nodig hebt om aan de slag te gaan met Project MiSTer is natuurlijk het DE10 Nano bord. De prijs hiervan durft te variëren, maar momenteel gaat dit voor zo'n 180 euro hier.

Met enkel de DE10 kan je al een paar cores draaien, maar door *insert heel technische uitleg over geheugentimings* heb je voor de meeste cores ook nog de 128MB SDRAM uitbreiding nodig.

It's all about clock speed and latency. As DRAM evolved to give higher bandwidth the latency (time between request and returned data) got longer due to many factors. But the original systems sometimes rely on exact RAM timing. This can be mimicked using later DRAM by running it many times faster than the underlying core.

Daarnaast wil je zeker een USB-hub, want de DE10 Nano heeft enkel een micro-USB aansluiting, en geen ingebouwde WiFi of Bluetooth. Dus wil je die twee, dan heb je al zeker een extra usb-poort nodig. Hetzelfde voor een toetsenbord of gamepads.

Het laatste wat je misschien is het analoge of digitale IO-board. Dit voegt een extra SD-kaart slot toe en (bij het analoge) een VGA-out. Maar het handigste aan deze uitbreiding is dat je 3 fysieke knoppen krijgt om te resetten en het menu te openen.

Omdat heel het MiSTer project vanuit de community komt, en veel van de uitbreidingen gemaakt zijn door hobbyisten, zijn ze niet te koop in de Fnac of de MediaMarkt. In Europa heb je enkele webshops, en door de goeie recensies op het officiële MiSTer forum, besloot ik al mijn uitbreidingen te kopen bij UltimateMister.

Omdat er weinig verkopers zijn en doordat MiSTer extreem populair is op het moment, lopen de wachttijden wel serieus op (2 weken hier).

Mijn setup

Ik bestelde de Ultimate MiSTer Kit, voor ongeveer 200 euro. Dit omvat:

  • een fancy case
  • de SDRAM-module
  • het IO Board, dat extra analoge outputs, een extra SD-kaart slot en drie knoppen toevoegt
  • een fan, voor de meer veeleisende cores
  • USB-hub voor 7 apparaten

Daarnaast kocht ik ook nog twee 8BitDo M30 2.4G controllers, omdat deze door velen gezien worden als de ultieme retro controllers. Ik koos bewust voor de 2.4g versie in plaats van de Bluetoothversie. Hier zit een dongle bij, die automatisch verbindt. Bluetoothcontrollers doen dit onder MiSTer niet, wat heel lastig is.

Samen met de aankoop van de DE10 loopt dit wel op, en de totaalprijs komt al snel in de buurt van die van een next-gen console.

Mijn MiSTer is verbonden met zowel de TV als een monitor via een HDMI-splitter. Zo kan ik zowel lekker retrogamen op de bank, als oude computersystemen draaien op een scherm dat niet gigantisch groot is.

Wat kan dat nu allemaal?

Veel. Daarom verdeel ik het even onder in drie categorieën. Arcadebakken, consoles en computers.

Arcadebakken

Ongeveer 400 oude arcadegames worden momenteel door de MiSTer ondersteund. Dat gaat van echt heel oude spellen zoals Space Invaders tot al wat modernere games op de CPS2 en Sega System 16 systemen.

Een interessant figuur om hierover te volgen is Jotego, een hobbyist die er in slaagt om elke week wel een paar arcadegames naar de MiSTer te brengen.

X-men vs. Street Fighter

Consoles

De MiSTer kan quasi elke console emuleren tot ongeveer midden jaren '90. Momenteel zijn er 26 cores beschikbaar en dat gaat echt hele oude dingen zoals de Atari 2600 en Vectrex, tot relatief nieuwe zoals de SEGA Genesis (en CD), Gameboy Advance en Super Nintendo.

Sonic 2 op de Genesis
Metal Slug 5 op de Neo Geo

Voor moderne systemen (zoals de N64) is de FPGA op de MiSTer waarschijnlijk te klein/traag. Maar een PlayStation 1 core lijkt er wel te kunnen komen.

De meeste cores hebben ook leuke extra's. Zaken zoals cheatmenus hadden back in the day toen ik moest proberen Super Mario Land op 1 batterijlading uit te spelen best handig geweest.

En multiplayer Gameboy is ook een leuke feature:

Twee gameboys naast elkaar

Computers

Arcade en consoles zijn leuk, maar het allerleukste zijn de oude computers. De MiSTer komt met ongelofelijk veel cores die oude computers nabootsen. Commodore, Amstrad, Amiga, Altair en zelf zo'n ding met oscilloscopen en lampen.

Archie

Maar mijn favoriete twee zijn die van de Macintosh Plus, één van de allereerste Macs uit 1986, en die van de IBM PC. Ideaal om alle games en apps uit mijn nostalgisch verleden nog eens mee te spelen.

Hiermee heb ik leren programmeren :(
Dit is Photoshop en niet Paint

Tips als je er ook aan wil beginnen

  • Update-all: er zijn gigantisch veel cores, en die manueel up-to-date houden is onbegonnen werk. Het update-all script doet dit automatisch voor u, downloadt daarnaast alle arcade ROMs en BIOS-files, en sorteert uw arcadespellen zodat je er makkelijk je weg in vindt.
  • Ik heb heel de inhoud van mijn SD-kaart op m'n NAS gezet, en die share wordt automatisch gemount bij boot. Zo kan ik makkelijk ROMs toevoegen, en verlies ik minder mocht m'n SD-kaart het begeven.
  • Het is heel verleidelijk om ineens alle games ooit van een systeem te downloaden. Maar dan verlies je u sowieso in de overdaad. Ik google gewoon lijsten van de X beste games en beperkt me daartoe. Want er is voor elk systeem echt extreem veel crap verschenen.
  • Voor de PC core bestaat er een VHD (virtuele hard disk) met daarop de 300 beste DOS-games: MiSTer AO486 Top 300 DOS Games Pack
  • Voor de Macintosh Plus heb je iets soortgelijks, maar daar zitten dan ook nog heel veel applicaties bij: MacPack. Ideaal voor als je Photoshop 1.0 eens wil proberen.
  • Voor de Amiga is er iets soortgelijks: AGS2.
  • Archive.org is echt uw vriend voor oude shit, zelfs de Blokken CD-ROM staat erop.
  • Up-to-date blijven met de laatste ontwikkelingen kan in de Facebook groep, of op het officiële forum.