Immagine presa da qui
https://www.classicgaming.cc/classics/space-invaders/technical-info
Cos’è un FPGA
Una FPGA (Field Programmable Gate Array) è un circuito integrato che contiene un certo numero di macrocelle che si chiamano LUT o LE a seconda della marca (Lattice, Intel, Altera etc)
L’interconnessione di queste macrocelle può dare origine a qualsiasi circuito digitale esistente.
Per fare una CPU come lo Z80 (ZX Spectrum) o il 6510 (simile al 6502 usato sul Commodore 64), ad esempio, bastano circa 700 macrocelle (leggi qui)
https://electronics.stackexchange.com/questions/400504/how-many-luts-are-needed-to-implement-a-cpu
MiSTer
La piattaforma MiSTer nata nel 2017, utilizza una FPGA Cyclone V della Intel con a bordo 110.000 macrocelle.
Una roba sproporzionata rispetto alle reali necessità di un videogioco anni ’80.
In più.
Siccome dentro alle FPGA alla fine una CPU fa sempre comodo per controllare il funzionamento generale della macchina, nel Cyclone V hanno integrato una CPU Arm dual core… così non sprechi le 110.000 macrocelle per fare la tua CPU e hai una serie di software già pronti come Linux da utilizzare per il controllo del tuo chippone.
I vantaggi di usare una FPGA rispetto ad un emulatore come il MAME è evidente: latenza.
Sulla FPGA tutti i circuiti lavorano in parallelo, audio, video, controller sono interconnessi a livello hardware.
Se guardate un gioco Amiga girare su MAME, vi accorgerete che lagga, anche se il Motorola 68.000 emulato dal MAME va 100 volte più veloce di quello dell’Amiga originale!!
Il gioco che gira su MiSTer infatti gira sullo stesso hardware in cui girava allora, con la differenza che il segnale video esce su HDMI invece che in analogico.
Hardware sintetizzato
Per programmare questi circuiti hardware fatti di macrocelle, si usa un linguaggio ad alto livello; tra i più famosi abbiamo VHDL, Verilog e System Verilog .
In alcuni progetti nel repo della MiSTer li troviamo tutti e tre: .v –> Verilog, .vhd –> VHDL, .sv –> System Verilog
Usando questi linguaggi di descrizione dell’hardware si possono quindi definire tutti i circuiti digitali esistenti (e anche quelli non ancora inventati).
E’ software che sintetizza l’hardware (infatti il processo che avviene dopo la compilazione del sorgente si chiama sintesi ed è in quel momento che il progettista specifica l’hardware fisico (la FPGA) dove vorrà far girare il circuito digitale.
Il compilatore quindi compila il sorgente e genera/sintetizza il file binario da iniettare nell’ FPGA.
Poi si passa al testing (e qui viene il difficile perchè servono strumenti come logic analyzer, protocol analyzer etc. molto costosi, complicati da usare ma anche molto divertenti)
Il gruppo di lavoro a capo del progetto MiSTer, dal 2017 produce sorgenti di descrizione dell’hardware di tutte le architetture dei videogame esistenti (mi sembra di aver letto prima del 1995).
In pratica hanno pubblicato su GitHub (e qui c’è da chiedersi come abbiano fatto… ma serve un opera di reverse engineering piuttosto robusta) tutto l’hardware da retro gaming possibile e immaginabile descrivendo anche i classici circuiti integrati della serie SN74xx
Elenco dei giochi
Partendo dal primo videogioco della storia, Spacewar su DEC PDP-1,
https://github.com/MiSTer-devel/PDP1_MiSTer
passando dal PONG
https://github.com/MiSTer-devel/Arcade-Pong_MiSTer
e dal Breakout che NON avevano CPU ma solo logica integrata (tutti i chip della serie 74xx per intenderci)
https://github.com/MiSTer-devel/Arcade-Breakout_MiSTer
per passare allo Space Invader che aveva un 8080
https://github.com/MiSTer-devel/Arcade-SpaceInvaders_MiSTer
e al Pacman che invece aveva uno Z80.
https://github.com/MiSTer-devel/Arcade-Pacman_MiSTer
Fino ai NeoGeo, ai VS della Nintendo a al Gameboy…
MiSTer è davvero un repo denso di cultura digitale.
Se vuoi sintetizzarti il tuo Z80 o 8080, basta che dai un occhiata al loro T80 (reverse engineering dello Z80) che è arrivato alla versione 350!!
https://github.com/MiSTer-devel/ZX-Spectrum_MISTer/tree/master/rtl/T80
Qui ci sono persone che da anni lavorano per non disperdere questo patrimonio.
E lo fanno sapendo che formalmente è illegale!
Ma la passione è talmente forte che non resistono!
:-))
Questo è l’elenco dei giochi disponibili
https://www.timeextension.com/guides/all-mister-fpga-cores-and-where-to-download-them
Hardware necessario
Tutte queste architetture sono state infilate in un unica FPGA molto potente della serie Cyclone V Intel e la scheda utilizzata è la demo board DE10-nano della Terasic utilizzata nei corsi di reti logiche universitari.
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046
La scheda ha un connettore HDMI quindi tutti i giochi sono stati adattati a questo standard visto che negli anni 70/80 c’erano solo dei monitor CRT monocromatici (i colori dello Space Invaders io me li ricordo… erano delle strisce di plastica colorate attaccate sul vetro del monitor).
Qui invece c’è un video lunghissimo ma molto interessante sulla quantità impressionante di videogiochi emulati dalla scheda MiSTer.
https://www.youtube.com/watch?v=rhT6YYRH1EI&t=1665s&ab_channel=MyLifeinGaming
Al minuto corrente spiega come funziona l’installazione e anche qui c’è da farsi qualche domanda sul discorso pirateria, legalità, copyright dei giochi etc.
Nel video utilizzano una sdCard da 200GB e poi si appoggiano ad un SSD esterno che ne ha altrettanti e vengono scaricati automaticamente da uno script che viene salvato sulla sdCard del MiSTer.