Cos'è il MiSTer?

Cos'è il MiSTer?

Diciamo che il MiSTer è, in linea teorica, il “riassunto” di quanto di meglio possa offrire oggi l’emulazione; dico in linea teorica perché tutto dipende dalla conoscenza dell’hardware reale che va ad emulare. Ma andiamo un pochino più nel dettaglio.

FPGA sta per field-programmable gate array, un tipo di circuito integrato che può essere riconfigurato dopo la produzione.
A differenza di un tradizionale chip per computer, gli FPGA utilizzano blocchi logici programmabili ed interconnessioni che possono essere riconfigurati per adattarsi ad una varietà di scopi diversi. In sostanza, un FPGA può essere riprogrammato più e più volte per agire come qualsiasi tipo di circuito digitale. Mentre i vecchi FPGA utilizzavano schemi circuitali, quelli nuovi utilizzano invece la programmazione basata su testo per descrivere il comportamento.

Questo ovviamente è possibile solamente se si conosce a fondo come il chip lavori a livello hardware, cosa che ultimamente sta diventando molto dettagliata soprattutto per i chip proprietari grazie al gran lavoro di decapping e successive analisi e ricostruzioni circuitali partendo dalle fotografie al microscopio che alcuni devs (come il francese Furrtek) stanno portando avanti. Una volta compreso lo schema questo viene tradotto in HDL (Hardware Description Language), che nel MiSTer diventa un “core”, permettendo così all’FPGA di emulare come se fosse il vero hardware.

In questo modo, se la riproduzione del chip è corretta al 100%, si avrà una strettissima vicinanza con la macchina reale visto che l’emulazione stavolta è effettuata ad un livello più “basso”, quello hardware, permettendo dunque un lavoro delle varie componenti della scheda madre originale emulate in parallelo (quindi avremo anche gli stessi bugs presenti nelle macchine originali!) senza eventuali rallentamenti, lags o altre problematiche intrinseche degli emulatori software che per definizione devono ovviare in qualche modo all’impossibilità di far lavorare il software in parallelo..

PROGRAMMIAMO IL DE10-nano

Questo gioiellino rappresenta il (costoso!) cuore del dispositivo ! E’ purtroppo possibile utilizzare soltanto questa scheda per avere tutte le funzioni disponibili create dalla comunità di sviluppatori.

Acquistando il kit di sviluppo (che è scontato di circa il 25-30% se dimostrate di essere studenti o professori universitari!) sarete già pronti per installare i dati su microSD e configurare il dispositivo anche in assenza degli accessori !

TOOLS NECESSARI

PROCEDURA

Per fortuna nel corso del tempo il sistema per avviare per la prima volta il firmware del MiSTer è diventato davvero molto semplice ! Innanzitutto assicuriamoci che i dip switches ed i toggle switches siano impostati sulla scheda del de10-nano come segue:

Dopodiché:
Backuppare la microSD in dotazione al de10-nano utilizzando Win32 Disk Imager (non necessario ma contiene il software/firmware originale ed è sempre bene averne una copia anche se inutile per il MiSTer)

2) Estrarre e flashare l’ultima versione dell’immagine SD di Mr. Fusion nella microSD
3) inserire la microSD nel de10-nano ed avviarlo
4) dopo pochi secondi si accenderà il LED arancione e, se avete collegato anche il cavo HDMI, a schermo apparirà una schermata blu seguita da uno splash screen:

Mr Fusion ridimensionerà le partizioni rendendo disponibile tutto lo spazio a disposizione e copierà tutti i files necessari al MiSTer. La procedura non deve superare i 90-120 secondi, dopodiché apparirà il menu del MiSTer !

5) Ora collegate la tastiera USB ed andate alla voce “Scripts” (se non vede il menu premete F12 per farlo comparire) e confermate al messaggio di rischio che apparirà; 6a) Se avete una chiavetta USB WiFi scegliere lo script chiamato “wifi” per configurare la vostra rete (se avete il cavo LAN non è necessario); 6b) Andate ora su “Scripts” -> Yes -> downloader per avviare la procedura di aggiornamento; vedrete scaricare, verificare ed installare una marea di files e questo potrebbe durare anche 25-30 minuti ! Alla fine il sistema si riavvierà, apparirà il menu ed avrete i cores aggiornati cosi come il menu e l’eseguibile principale del MiSTer (insieme ad una marea di nuovi scripts a disposizione):

COMPONENTI PER COSTRUIRLO

(necessari e non)

Necessario:
Terasic DE-10 Nano FPGA board Development Kit (include alimentatore, cavo mini e microUSB + microSD da 8GB)

Opzionale :
I/O Board : utile per l’uscita VGA/RGB e i tasti
Hub USB : molto utile per connettere varie periferiche
SDRAM : necessaria per far girare diversi core
RTC : mantiene la data e l’ora

  • MiSTer SDRAM Extra Slim Board (da 32 a128MB a seconda delle necessità):
    Qui per vedere quali cores consoles la richiedono, qui per i cores computer.
  • Scheda Hub USB 7 porte dedicata (se ne avete già uno autoalimentato potete usare quello sulla porta microUSB)
  • Adattatore microUSB per alimentare anche la schedina USB 7 porte (se non la utilizzerete non servirà)
  • Scheda I/O con uscita video VGA, audio, 3 tasti, 3 led di stato, slot microSD aggiuntivo (oltre quello già presente nel de10-nano), porta alimentazione simile USB 3.0 (ma non utilizzabile come USB) e connettore ventola.
  • Ventolina (se non inclusa nella board I/O)
  • Schedina RTC (non necessaria se si utilizza una connessione di rete)
  • Cavetto sdoppiatore alimentazione (per alimentare la scheda I/O e il DE-10 contemporaneamente)
  • Cavo HDMI
  • Tastiera USB
  • Chiavetta WIFI (opzionale, potete tranquillamente utilizzare un cavo di rete in alternativa – funziona anche da RTC se connessa alla rete internet)
  • Adattatore Bluetooth (necessario se volete un controller wireless, qui un elenco con le varie latenze riscontrate – funzionano benissimo anche i controllers USB ma il dispositivo è piccolino e piuttosto leggero quindi rischiate di fare danni avendo collegato un controller con il filo)

Come si può vedere le parti necessarie per costruirselo da soli sono diverse e questo è l’unico modo per evitare di pagarlo troppo ! Prima della carenza di microchip dovuti al covid19 si poteva acquistare pre-costruito e già programmato per circa 300-350€, ora con tale cifra oggi riusciamo a farcelo per conto nostro.

Dobbiamo infatti spendere dai 180€ ai 210€ per il de10-nano (sul sito ufficiale Terasic) ed altri 85-90€ per gli accessori (prendendoli in maniera molto oculata su AliExpress).

Alcuni di voi diranno che è una cifra assurda ed in parte lo condivido è però anche vero che per una spesa “una tantum” si hanno quasi tutte le macchine a disposizione (anche i vecchi computers e numerosi arcades!) a portata di mano !

Se volete leggere ulteriori informazioni riguardanti il funzionamento delle macchine reali ed i loro rapporti con il mondo dell’emulazione potete leggere questo articolo e la intro di quest’ altro articolo.

Quanti giga vi occorrono ? Date uno sguardo a questo articolo.

Tasti utili

F1 – cambia il background ciclicamente con le modalità predefinite (static, wallpaper, color bars, black).
F9 – Avvia la shell Linux (login:pwd = root:1 – F12 per tornare al menù).
F11 – Menu pairing Bluetooth.
F12
 – Premendolo si passa dal menù principale al menu dei cores
Left Ctrl + Left Alt + Right Alt – corrisponde alla pressione del tasto “USER” nella I/O board che di solito effettua un reset del core in cui ci si trova.
Left Shift + Left Ctrl + Left Alt + Right Alt – effettua un reboot rapido del MiSTer.
Windows + Left Shift + Print Screen – Salva uno screenshot (i files di screenshot creati vengono salvati in una cartella \screenshot sulla partizione FAT della scheda SD; questa cartella conterrà quindi sottocartella che prendono il nome dal core corrispondente in cui è stata acquisita una schermata; il formato di salvataggio è il PNG.

Principali icone

Questa indica la presenza della connessione LAN.
Se avete il WiFi apparirà questa icona.
 Questa centrale indica la presenza di una periferica Bluetooth

La presenza (o meno) del modulo SDRAM è indicata così:
 Nessun modulo installato
 32MB di memoria installati
 64MB di memoria installati
 128MB di memoria installati

TIPS

Il MiSTer, da quello che ho potuto vedere, cerca da solo le ROMs in base alle estensioni dei files, in ogni caso è bene avere una struttura organizzata e quella di base (della microSD interna) è quella di avere la cartella:
root:\games\
dentro la quale abbiamo le cartelle specifiche per ogni core e cioè root:\games\NomeSistema\
come nell’immagine sottostante:

dentro le quali inserire le rispettive ROMs (le ROMs arcade vanno nella cartella root:\games\mame o root:\games\hbmame).
Quindi potete ricreare questa struttura sia su un dispositivo USB, copiare i files, inserire la chiavetta, accendere il MiSTer, caricare il core e dal suo menu caricare le ROMs !

CONFIGURARE UN JOYPAD BLUETOOTH

I pad USB funzionano non appena collegati; per quelli bluetooth è necessario avere un dongle USB che ne permetta il funzionamento. Io ho utilizzato l’ ASUS modello USB-BT21 (lo stesso usato per effettuare la softmod sulla Wii Mini !) ed ha funzionato benissimo. Potete leggere l’estesissima lista di prodotti testati con relativi tempi di latenza e ranking qui.

La procedura è sostanzialmente la stessa per quasi tutti i dispositivi e cioè:
1 – Andare su “Scripts” Yes bluetooth_pair entro 60 secondi premere sul pad il tasto (o la combinazione di tasti) per farlo andare in pairing mode (es per il pad della PS4 i tasti da premere sono PS + SHARE finchè non viene riconsociuto dal MiSTer).

Per alcuni joypads la procedura è invece specifica come ad esempio per quello PS3:

Collegare il pad tramite USB al MiSTer (se non lo avete la confezione del de10-nano contiene già un cavetto microUSB).
Premere il pulsante PS button ed attendere che i LED rossi smettano di lampeggiare (pochissimi secondi) e ne rimane acceso soltanto uno.
Scollegare il pad – le luci ricominceranno a lampeggiare finchè non si collegherà e rimarrà acceso soltanto 1 LED.
Una volta connesso il pad si va sul menu con F12 Define joystick buttons e si mappano tutti i pulsanti (verrà chiesto di mappare anche i “pulsanti” relativi al movimento ed al click del mouse ed il tasto per evocare il menu di sistema).

AVVIARE UN CORE E RELATIVO GIOCO

Per avviare i giochi si deve prima avviare uno specifico core dall’apposito menu di selezione che appare appena avviate il MiSTer (suddiviso in Arcade, Computers, Consoles, Others, ecc).

Una volta avviato il core dal menu utilizzate la prima voce “Load…” per scegliere la ROM (se il menu non appare in automatico premete F12 o il relativo tasto del pad che avete configurato). Prima di caricarla potete trafficare con le varie impostazione a disposizione (audio, video, cheats, ecc). Ricordate che si potranno avviare SOLTANTO i giochi del sistema caricato (es. se avviate il core Genesis scordatevi di poter avviare da qui ad esempio titoli NES).

Per uscire dal core e selezionarne un altro andate nella schermata che si trova tutta a destra nel menu ed utilizzate la voce “Core”.

Per riavviare il sistema: sempre dalla schermata dei menu che si trova tutta a destra selezionate l’ultima opzione “Reboot (hold cold reboot)”; in alternativa potete premere sulla tastiera, se è ancora collegata, la combo Left Shift + Left Ctrl + Left Alt + Right Alt; questo reboot “warm” impiegherà circa 2 secondi. Tenendo invece premuto per pochi secondi sulla voce “Reboot (hold cold reboot)” il sistema si riavvierà totalmente ed impiegherà circa 7 secondi.

NON E’POSSIBILE SPEGNERE IL DISPOSITIVO, per farlo dovete togliere la corrente nel modo che preferite !

COME MONTARE IL MiSTer FPGA !

Partiamo da questi componenti dicendo che NON ci saranno saldature da fare:
Come potete vedere la scheda di espansione USB, rispetto a quella mostrata più sopra, ha ben 9 porte anziché 7;
1 di queste [PWR1], è utilizzata per l’alimentazione;
nel kit mostrato in foto è infatti differente anche il cavetto sdoppiatore in quanto ha un barrel jack ed un USB (anziché 2 barrel jack come quello della foto più in alto);
questo è dovuto al fatto che esistono diverse versioni di queste schede di espansione USB, scegliete quella che vi piace di più e, se la prendete a parte, assicuratevi di comprare anche il cavetto sdoppiatore ed il corrispondente connettore USB per far passare i dati (vedi oltre).

Avvitiamo con le 4 viti la ventolina alla scheda I/O e colleghiamo il suo connettore.
Svitiamo il “coperchio” in plexiglass del de10-nano e mettiamolo via (tipo nella sua scatola originale per non perderlo) mentre teniamo da parte le 4 viti argentate ed i supporti dorati perché ci serviranno.
Rimontiamo, avvitandoli, i supporti dorati sulla scheda USB (che diventerà la base del nostro MiSTer).
Dalla scatola del de10-nano recuperiamo i copri-piedini in gomma ed applichiamoli come in foto (serviranno a non far scivolare su eventuali superfici lisce la struttura finita).
Colleghiamo il doppio connettore microUSB al de10-nano ed alla scheda USB (questo connettore servirà per far passare i dati, NON servirà per alimentare la scheda !). Questo connettore, come già detto, può essere realizzato in modo differente a seconda di come è costruita la scheda di espansione USB.

Dal kit degli accessori avvitiamo i 4 ulteriori supporti (distanziatori).

Se la avete acquistata questo è il momento di connettere la scheda RTC (e magari di inserire anche la batteria CR1220 ); attenzione, la plastica che limita il connettore del de10-nano dove si inserisce l’RTC è molto delicata (per fortuna i pin sono solidi) !
Ora appoggiamo il “tetto” della nostra torre rappresentato dalla scheda I/O.
Fissiamola con le 4 viti argentate che avevamo messo da parte all’inizio.
Colleghiamo infine il modulo SDRAM così come mostrato in foto (la scritta va verso l’esterno come dice il testo stesso).
Ora connettiamo correttamente lo sdoppiatore di alimentazione: il connettore USB maschio va nell’USB femmina chiamata PWR o POWER della scheda con le 9 porte USB (quella mostrata in foto) mentre il barrel jack va nel solito connettore femmina del de10-nano. Il jack femmina rimanente va collegato all’alimentatore originale (o altro alimentatore da voi scelto per il de10-nano). Questo cavetto, come già spiegato, può essere differente a seconda di come è realizzata la scheda USB.

IL VOSTRO MiSTer E' FINALMENTE PRONTO !!!!

F.A.Q.

SDRAM si o SDRAM no ? La maggior parte dei cores NON richiede l’espansione SDRAM. 32MB sono richiesti da alcuni titoli GBA (ma non necessari in quanto il MiSTer può prendere i MB mancanti dalla DDR3 del de-10 nano però con potenziale scapito della resa emulativa che è lo scopo del MiSTer quindi tanto vale prendere il modulo con più di 32MB) mentre 128MB sono richiesti da alcuni titoli Neo Geo64MB è una configurazione possibile ma poco utilizzata. Vi mancano i BIOS ? Andate qui, scaricate gli script “bios_getter.sh” e “bios_getter_update.sh”, copiateli nella cartella degli script della microSD ed avviateli (uno dovrebbe aggiornare soltanto senza sovrascrivere tutto mentre l’altro dovrebbe sovrascrivere tutto) ! E’un casino trovare le ROMs di MAME e HBMAME ? Qui gli scripts che fanno per voi ! E’ obbligatorio avere già installato i cores .mra dei titoli/piattaforme arcade che desiderate (es cps1/cps2) perché gli scripts analizzano quelli per andare a pescare i relativi dati di gioco.
Qualcuno ha detto WALLPAPERS ?
Se volete dei bellissimi wallpaper in background scaricate ed eseguite i files di questo script; scaricherà per voi delle fantastiche immagini che vedrete cambiare ad ogni reset (anche rapido) del MiSTer; per farlo, una volta avviato, premete F1 finché non vedrete il primo wallpaper; a questo punto ad ogni riavvio lo sfondo cambierà (NON tentate di scorrerli premendo F1, non funzionerà !).
Problemi di spazio ?
Il formato .zip è utilizzato da diversi cores ma controllate la dimensione del cluster della formattazione che utilizzate nella periferica USB di memoria: se la dimensione è “grande” ed avete tanti files delle dimensioni INFERIORI a quella della dimensione del cluster (es. molto materiale per C64) allora NON CONVIENE zippare; in alcuni casi il formatto zippato non funziona come ad esempio con le immagini dei CD; per queste ultime diversi cores (es. PSX, SegaCD, PC Engine CD) supportano il formato CHD del MAME che potete trovare all’interno della sua vastissima SoftwareList !
Hints sull’utilizzo dei cheats ?
I files dei cheats si trovano nella cartella \cheats e sono suddivisi per cartelle che portano il nome del sistema e dentro a queste abbiamo dei files zippati che DEVONO avere lo stesso nome della ROM nella quale vogliamo utilizzarli; es.
\cheats\NES\Mario.zip` per il gioco “Mario.nes”
Se utilizzate invece files in formato immagine (ISO, CHD, ecc) il file .zip DEVE risiedere all’interno della cartella dove è presente l’immagine del disco.
A cosa serve lo switch SOG OVR AUTO che si trova nella I/O board ? SOG = Sync on Green – Questo interruttore controlla se i segnali di sincronizzazione sono inseriti all’interno del canale del colore verde (alcuni CRT meno recenti utilizzavano il sync-on-green). Se impostato su Auto è il core a decidere se utilizzarlo, ma si può forzare l’impostazione settandolo su OVR.
In alcuni casi, utilizzando una uscita su monitor a tubo catodico, l’immagine potrebbe risultare “verdastra”:
[IMG] in questo caso consigliano di rimuovere C6 al di sotto dello switch in questione:
[IMG] con il seguente risultato:
[IMG]
Consigliate qualche periferica in particolare ? Diciamo che per tenere tutto piuttosto compatto e poco “sporgente” sarebbe buona cosa optare per periferiche USB molto contenute. Di seguito quelle testate e funzionanti senza dover installare nulla; da sinistra a destra abbiamo: [IMG] MODULO WiFi – HomeSpot 150Mbps Wireless N WiFi USB Nano Adapter [VID:PID = 0BDA:8176 = Realtek RTL8188CU] LETTORE uSD – Realtek Card Reader [VID:PID = 0BDA:0136] MODULO BLUETOOTH – ASUS USB-BT21 [VID:PID = 0B05:1715] Notare in particolare come il lettore uSD sia costruito in modo tale da inserire la schedina dalla parte opposta del “foro” per il connettore USB femmina limitando al minimo lo spazio occupato: [IMG]
Il cavo HDMI alimenta parzialmente il MiSTer ! Come posso risolvere ?
Se anche voi, collegando il MiSTer ad un monitor esterno attraverso la porta HDMI, avete notato che, anche se sconnesso dall’alimentazione, la scheda I/O viene parzialmente alimentata (si accendono alcuni led, la ventolina comincia a girare, ecc ma comunque non si avvia) il problema pare essere nel funzionamento del CEC (PIN 13 del connettore HDMI); questa “stranezza” per fortuna non accade con tutti i monitor HDMI ma per essere sicuri che ciò non avvenga dovete provare “sul campo”. Questa alimentazione “spuria” sembra dare alterazioni nel funzionamento della SDRAM di conseguenza, se riscontrate il problema, è consigliato risolverlo. Una soluzione consiste nel tagliare una piccola pista sulla scheda I/O, vicino all’integrato U34, evidenziata nell’immagine: [IMG] Dato che tagliare non è però molto carino e noi amiamo soluzioni più “eleganti” abbiamo scelto un adattatore che disconnette tale pin semplicemente interponendosi tra il cavo e la femmina HDMI DEL MONITOR (NON del MiSTer!!). Se lo cercate online ha nomi del tipo “NO CEC HDMI / NON CEC / MENO CEC”. Quello utilizzato con successo nei nostri test è questo:
[IMG]
Se non volessi usare l’uscita HDMI ?
Il MiSTer ha diverse opzione “succose” da poter utilizzare; innanzitutto permette una uscita contemporanea sia in HDMI che in VGA:
ma per poter utilizzare correttamente la porta VGA, a seconda del monitor che si andrà ad utilizzare (CRT, LCD datati, LCD recenti, ecc) ed a seconda del segnale in uscita ci sono alcuni settaggi hardware e parametri contenuti nel file MiSTer.ini (che va inserito nella root della microSD di sistema) da considerare:
– VGA ->VGA
Se non funziona direttamente senza modificare nulla (schermo nero o errori a schermo tipo “out of range” o “fuori scala”) impostate in MiSTEer.ini il seguente parametro:
vga_scaler=1
NOTA: quando il parametro vga_scaler è impostato al valore 0, la porta VGA della I/O board fa uscire il segnale originale 240p per la maggior parte dei cores, il vecchio standard per le televisioni a 15khz. Molti monitor LCD potrebbero non riconoscerlo perchè al di sotto del minimo standard della VGA su CRT (480p/31khz); per questo motivo se il segnale non viene mostrato con collegamento VGA il parametro vga_scaler va impsotato ad 1, così da avere una uscita come quella della porta HDMI port (720p se si utilizza in congiunzione al parametro video_mode=0).
se ancora non va impostate lo switch SOG su OVR (quindi non su “AUTO”):
[IMG]
se ancora non dovesse andare ponticellate i pin per i 5V vicino al connettore VGA:
se la vostra scheda I/O in quel punto ha soltanto i fori e non ha i pins ce li dovete saldare.
Se ancora non dovesse funzionare come ultimo tentativo sostitute a al parametro “video_mode=0” il valore:
video_mode=1680,104,176,280,1050,3,6,30,146250
– VGA-> RCA (o S-Video)
Per utilizzare questa modalità (probabilmente inutile ai più se non ai nostalgici del composito) vi servirà una schedina che converte il segnale tipo questa:
[IMG]
e dovrete impostare le seguenti cosucce per evitare di avere schermo nero:
nelle impostazioni hardware:
ponticellare i pin per i 5V nella scheda I/O (vedi sopra)
Disabilitare il SOG (potrebbe non essere necessario)
in MiSTer.ini:
composite_sync=1
vga_scaler=0
Consigliate qualche monitor in particolare ? Di recente, grazie alla soffiata da parte di Bisboch, sono incappato in un bellissimo display Retina LCD ricondizionato direttamente incastonato all’interno di un frame: [​IMG] Come potete vedere è disponibile in 2 versioni: con VGA, 1 HDMI e senza microUSB oppure con 2 miniHDMI senza VGA ma con una comodissima porta microUSB dalla quale poterlo direttamente alimentare !!! [​IMG] [​IMG] Le specifiche del prodotto (che potete dunque realizzare anche da soli): – LCD LG LP097QX1 (oppure SAMSUNG LTN097QL01) – 9.7″ – 2048X1536 – QXGA (4:3) 264PPI  – 3MegaPixel [entrambi i modelli sembrano essere identici nelle specifiche nonostante i diversi produttori] – Driver board: VS-RTD09703-V1 (o almeno finora questo è stato trovato all’interno quindi non si garantisce che nel tempo non cambino board !) – Spessore delle 2 versioni: 13mm (modello senza VGA) e 22mm (modello con VGA) (possibilità di aggiungere un pannello esterno per renderlo anche touchscreen) [​IMG] La cosa stupenda è che, scegliendo la versione con possibilità di alimentazione via microUSB e con un power bank che eroghi almeno 3A, potrete alimentare sia il MiSTer (di base richiede circa 1.3A) che il display (che consuma circa 1.04A): rendendo il tutto assolutamente “portable” ! [​IMG] [​IMG]
Il display è anche dotato di 2 speaker all’interno:
Nel thread dedicato consigliano di abbinarlo ad un cavo miniHDMI di buona fattura, quello in dotazione potrebbe non raggiungere la risoluzione massima descritta nelle specifiche del pannello LCD. Link al prodotto: https://it.aliexpress.com/item/1005001689746001.html

Varie/Backup

Se volete tornare alla SD originaria del MiSTer come fornita dalla Terasic, qui trovate un dump della microSD originale

L’immagine (.img) è stata compressa in rar.
Potete scaricare gratuitamente 7-Zip per aprire anche questo formato, mentre per la scrittura sulla SD potete usare BalenaEtcher