Cerca articoli...
Mini gallery
  • Eventi/fvb2013
  • Eventi/brusaporto 2013
  • Eventi/fvb2010
  • Eventi/brusaporto 2013
  • Eventi/fvb2013
  • Eventi/brusaporto 2013
  • Eventi/viretro2014
  • Varie/miscellanea
  • Eventi/brusaporto 2010
  • Eventi/brusaporto 2013
Storico articoli
Mailing list
Nome
Email
Iscrizione
Cancellazione
YouTube Channel
Facebook
il TI99 sul Mister FPGA... Funziona davvero?

IL TI99 SUL MISTER FPGA... FUNZIONA DAVVERO?

 Mercoledì, 11 Settembre, 2019 00:00

scritto da Alessandro Benedettini

   

La tecnologia FPGA sta favorendo sempre più gli appassionati di retrocomputer. In questo articolo vedremo una di queste schede FPGA: il MiSTer. Cercheremo di illustrare in modo semplice tutti i passaggi per poter configurare il vostro MiSTer per l'utilizzo come un TI-99/4A...
 

Il TI-99/4A è stato il mio primo computer, regalatomi per il Natale del 1983. Negli anni seguenti è stato pian piano espanso con l’Extended Basic, l’espansione di memoria 32K, lo Speech Synthesizer e, infine, il mitico PEB con il Disk Drive. Mi ha accompagnato con i giochi e la programmazione fino al 1988, quando sono passato all’Amiga e, per un bel po’, il TI99 è rimasto spento ed ho anche venduto alcune componenti (PEB, Speech Synthesizer, etc.).

Con l’Amiga, oltre ai fantastici programmi e ai giochi esistenti, avevo iniziato ad interessarmi e a provare i vari emulatori di altre piattaforme (ad esempio Mac, C64, IBM PC, etc.). Non esisteva, però, nessun emulatore del TI99. La prima emulazione del TI99 è stata fatta sulla piattaforma PC DOS intorno al 1993 da E. Swartz, con il “TI Emulator!”, poi diventato “V9T9”. Con un processore Pentium l’emulazione girava bene, solo la sintesi vocale non era perfetta. Sono poi nati altri emulatori come MESS/MAME, PC99, Classic99 (solo per citarne alcuni) che sono stati perfezionati e si sono evoluti nel corso degli anni, così come è cresciuta la potenza dell’hardware su cui girano. Si può dire che è stato quindi raggiunto un ottimo livello di emulazione del TI99.

Il fatto di dover usare un PC per utilizzare questi emulatori li rende tuttavia un po’ scomodi e non c’è sicuramente l’immediatezza che si aveva con il TI99 in cui bastava accenderlo e inserire un modulo software per giocare. Ora è necessario accendere il PC, attendere il caricamento del sistema operativo, cercare l’emulatore, etc.

Per cercare di ricreare questa sensazione di immediatezza nell’utilizzo ho provato ad utilizzare il Raspberry Pi, con la distribuzione RetroPie e l’emulatore TI-99/Sim. Una volta configurato correttamente, è molto comodo, facilmente spostabile (giocare su un grosso TV in salotto è sempre meglio che nella postazione PC) ed offre un buon livello di emulazione del TI99 (e di molti altri vecchi sistemi), ma del Raspberry parleremo in un articolo dedicato

Invece, recentemente, sempre per cercare di riavvicinarsi di più all’esperienza originale di utilizzo del TI99, ho provato il MiSTer FPGA con il core del TI-99/4A. In questo articolo introdurremo questo particolare sistema e illustreremo tutti i passi per poter far girare con esso il nostro TI99.

 Field Programmable Gate Array
cosa è l'FPGA ?

Un "Field Programmable Gate Array" (abbreviato in FPGA) è un dispositivo formato da un circuito integrato le cui funzionalità sono programmabili tramite un linguaggio di descrizione hardware.

Un FPGA contiene una matrice di blocchi logici programmabili ed una gerarchia di interconnessioni riconfigurabili, che permette ai blocchi di essere collegati insieme. In pratica un FPGA può essere continuamente riprogrammato per comportarsi esattamente come un circuito integrato dentro un qualsiasi hardware. Il limite è dato solo dall'abilità del programmatore che può configurarlo a basso livello con un HDL (Hardware Description Language).

Per capire meglio, immaginiamo ad esempio un computer Amiga, con il suo processore principale e i vari chip custom (per la grafica, suono, etc.) tutti programmati usando la propria matrice di blocchi e che girano in parallelo con una precisa temporizzazione. Questo vuol dire che i vari blocchi della matrice possono essere programmati per eseguire le operazioni in parallelo, diversamente dall’emulazione tradizionale in cui la CPU (che è un processing device di tipo sequenziale) spezza i vari task in una sequenza di operazioni, che poi esegue una dietro l’altra.

Utilizzando un sistema FPGA possono quindi venire indirizzati due limiti dell’emulazione tradizionale, la necessità di elevata potenza di calcolo della CPU su cui gira l’emulatore e l’input lag.

Per quel che riguarda il primo problema, un emulatore è un hardware o un programma software che permette ad un computer (detto host) di imitare le funzioni di un altro computer (il guest). Questo implica che, per ottenere un'esperienza accurata, il sistema host deve fornire molta più potenza di calcolo di quella che è necessaria al sistema guest per svolgere i suoi compiti. Maggiore è la potenza di calcolo dell'host e maggiore sarà l'impressione di essere sul computer reale.

A causa dell'ammontare della potenza di calcolo richiesta per emulare un sistema, i timing del sistema originale vengono largamente ignorati ed approssimati. Questo vuol dire che il sistema che viene emulato non sembrerà esattamente come l'originale e ci potranno anche essere fenomeni di input lag.

Risulta pertanto chiaro come mai negli ultimi 4/5 anni abbia preso piede il fenomeno dell’uso dei sistemi FPGA per il retro gaming. 

In primis tra gli svantaggi dei sistemi FPGA c'è il costo superiore, sia in termini di hardware che di programmazione. In particolare, per la programmazione, è necessario conoscere il complesso HDL più a basso livello (si programma a livello di logica/gate) e più dispendioso in termini di tempo rispetto alla programmazione normale.

MiSTer FPGA

Il MiSTer è un sistema FPGA che sta acquisendo grande popolarità nell’ambito del retrogaming. Precedentemente veniva utilizzato il MIST in questo ambito. Il vantaggio del MiSTer è che è un progetto open, basato su una FPGA più potente ed è competitivo come costo.

Il sistema MiSTer è composto da una board Terasic-DE10-nano a cui si possono aggiungere varie daughter board come add-on. Una board da aggiungere, che è sicuramente raccomandata, è la SDRAM board, in quanto richiesta per emulare alcuni computer/console. Altre board sono la I/O board (utile per aggiungere l’uscita VGA) e la USB Hub board (aggiunge 7 porte USB).

Servono inoltre una tastiera ed un gamepad USB da connettere ad un hub USB attraverso un cavo OTG da connettere alla porta MicroUSB (in caso non abbiate la USB Hub board).

Tutte le informazioni sul MiSTer le trovate nella pagina dedicata.

Il MiSTer è in grado di fare girare vari retro computer, console ed arcade. Tra i vari sistemi (i cosiddetti “core”) ci sono C64, Spectrum, Atari 2600, Amiga, Vectrex, Super Nintendo, Megadrive, etc. In pratica, tutti i sistemi che giravano sul MIST sono ormai disponibili anche sul MiSTer e ce ne sono alcuni disponibili solo su questa piattaforma, come il Neo-Geo, visto che è basata su una FPGA più potente.

Per quel che riguarda il nostro TI99, è disponibile solo per MiSTer e non per il MIST. Vediamo ora come configurare e far girare il core del TI99.

TI99/4A Core su MiSTer FPGA

Il core del TI99 gira sulla board Terasic-DE10-nano base, senza la necessità di avere la SDRAM board. Vi consiglio tuttavia di procurarvi ugualmente la SDRAM, perché sarebbe un peccato non poter provare anche gli altri sistemi disponibili.

Il primo passo della configurazione è quello di preparare la scheda MicroSD. Nella confezione della DE10-nano è inclusa già una schedina da 8GB. Se pensate di usare la schedina fornita, vi suggerisco di effettuare prima un backup del contenuto. Potete utilizzare una delle tante utility gratuite, disponibili in rete, per fare l’immagine del disco.

Scaricate l’ultima versione del pacchetto di installazione de MiSTer (la versione per Windows a 64bit è disponibile al link), scompattate l’archivio (solitamente nella forma “release_201#####.rar”), inserite la MicroSD nel PC e lanciate l’installer (“MiSTer SD Card Utility.exe”):

Assicuratevi di selezionare "U-Boot + Linux + MiSTer" nel campo "Image" (le nuove versioni hanno "Boot + Files"), selezionate la MicroSD card e premete “Full Install”.

Noterete che l'Installer aprirà varie finestre con la richiesta di formattare il drive, ma NON dovrete farlo! Queste richieste sono dovute a delle partizioni non leggibili da Windows. La MicroSD conterrà, però, anche una partizione perfettamente leggibile da Windows. Apritela e vedrete alcuni file e directory:

In particolare, il file "menu.rbf" che è il menu principale, cioè quello che si vede all'avvio della scheda e "MiSTer", che è il firmware principale. È meglio aggiornare questi due file, scaricando la versione più recente (da https://github.com/MiSTer-devel/Menu_MiSTer/tree/master/releases e da https://github.com/MiSTer-devel/Main_MiSTer/tree/master/releases).

Tutti i dettagli dell’installazione li trovate in Setup Guide.

È ora necessario installare il core del TI99 (i core disponibili li trovate nel link sopra, sulla barra a destra). Scaricate l’ultima versione disponibile dal link https://github.com/MiSTer-devel/TI-99_4A_MiSTer. Andate nella directory “releases” e cercate quello con la data più recente. I file sono del tipo “Ti994a_20######.rbf”.

Dopo aver scaricato il file, copiatelo semplicemente nella root della MicroSD. Conviene lasciare il nome del file con la data, in modo da poter individuare subito la versione usata. Ora il core del TI99 sarà visibile nel menu iniziale del MiSTer. Volendo è possibile lanciare in automatico questo core, semplicemente rinominandolo in “core.rbf”. Questa può essere una soluzione in caso si vogliano usare MicroSD differenti per sistemi differenti (ad esempio, una per il C64, una per l’Amiga, etc.). Al momento, però, lasciamolo così.

Ci serve preparare ora il BIOS del TI99.
Procuratevi il file con la ROM e la GROM di sistema del TI99 e rinominateli rispettivamente “994aROM.BIN” e “994AGROM.BIN”. Dobbiamo ora mettere questi due file in un unico file immagine per il MiSTer ed useremo Python per questa operazione. Una volta installato (per comodità fate inserire il path dell’interprete alla richiesta durate l’installazione) andate al link https://github.com/GHPS/pyTIrom dove dovrete scaricare gli script “convertArchive.py” e “createImage.py” ed i 3 file di supporto: “hole32”, “hole48k” e “hole8k”. Create una directory sul vostro hard disk (per esempio “C:\TI99_Files”) e copiate questi file e i due con la ROM e GROM.

Aprite il Command Prompt (premete il tasto destro del mouse sull’icona di Windows in basso a sinistra, nel menu selezionate “Esegui” e nella finestra digitare il comando “cmd” e poi premete “Invio”). Posizionatevi nella directory con gli script e le ROM/GROM con il comando “cd” (nel nostro caso: “cd C:\TI99_Files”) e lanciate lo script “createImage.py”:

createImage.py -v tiroms.bin

Create ora nella MicroSD una cartella “TI-99_4a” e copiate il file “tiroms.bin” appena creato. Fate ora una copia del file rinominandolo in “boot.rom”. In questo modo al lancio del core del TI99 verrà subito caricato e vedrete la solita schermata iniziale del nostro TI99. Se non c’è il file “boot.rom” sarà necessario, dopo aver lanciato il TI99, caricare il file del BIOS “tiroms.bin”.

Vediamo ora come convertire un modulo SSS (Solid State Software) in un file immagine per il MiSTer. I moduli SSS possono contenere sia chip di memoria ROM che di memoria GROM. Tutti i moduli prodotti dalla Texas Instruments contengono sicuramente un chip di memoria GROM e possono contenere uno o due chip di memoria ROM. I moduli di terze parti (Atarisoft, Navarone, etc.) contengono solo chip di memoria ROM, in quanto non avevano la licenza per le memorie GROM, proprietarie della Texas Instruments.

C’è una convenzione, usata nell’ambito dell’emulazione TI99, che identifica i tipi di memoria usati nei moduli SSS. Le GROM sono identificate con il suffisso “G.bin” e le ROM con i suffissi “C.bin” e “D.bin” per indicare il primo ed il secondo modulo rispettivamente.

Vediamo ora qualche esempio di conversione. Partiamo dall’Extended Basic. Questo modulo ha una GROM (file “TIEXTGC.BIN”) e due ROM (file “TIEXTC.BIN” e “TIEXTD.BIN”). Copiamo questi 3 file nella directory in cui abbiamo messo i file del BIOS e gli script. Convertiamo il modulo con il comando:

createImage.py -v –Crom=TIEXTC.BIN –Drom=TIEXTD.BIN –Grom=TIEXTG.BIN extendedBasic.bin

La sintassi dello script permette di specificare i vari tipi di chip di memoria usati. Copiate ora il file ottenuto (“extendedBasic.bin”) nella cartella “TI-99_4a” della MicroSD.

Convertiamo ora il gioco “Hunt the Wumpus”. In questo caso il modulo ha solo una GROM, quindi per convertirlo basta semplicemente il comando:

createImage.py -v –Grom=WUMPUSG.BIN HuntTheWumpus.bin

In caso di giochi con sole ROM, come “Donkey Kong” avremo invece il comando:

createImage.py -v –Crom=DKONGC.BIN –Drom=DKONGD.BIN DonkeyKong.bin

Per convertire più file insieme si può utilizzare l’altro script Pyton, cioè “convertArchive.py”. Dopo aver copiato i file convertiti sulla MicroSD, rimuovetela dal PC ed inseritela nel MiSTer. Siamo ora pronti per provare il core del TI99, ma prima vogliamo condividere qualche altra informazione sul processo di conversione dei file.

È possibile non convertire i file e caricarli singolarmente, ma è molto più scomodo, in quanto in questo caso dovremo aprire il menu di caricamento dei file più volte (una volta per il file con il suffisso “G.bin”, una per il file “C.bin” e una per il “D.bin”). Inoltre dovrà essere caricato prima il BIOS (file “tiroms.bin”). Un modulo convertito con lo script può invece essere semplicemente caricato come singolo file (usate l’opzione "Load Full or C.bin *.BIN" del menu del TI99) e include all’interno anche il BIOS.

In caso il modulo sia fatto solo da un file “G.bin” o “C.bin” si potrebbe anche evitare di convertirlo, in quanto richiederebbe solo una apertura del menu di caricamento (ovviamente serve che sia già stato caricato prima il BIOS del TI99).

Nel processo di conversione assicuratevi che la dimensione del file sia esattamente di 192 KB (196.608 byte), altrimenti non funzionerà. In caso venisse generato un file con dimensioni diverse, dovrete necessariamente usare i file delle GROM/ROM. Questo avviene per alcuni moduli il cui dump non ha dimensione standard e nei casi in cui il modulo è stato generato a partire dai file assembler su disco in formato EA5.

Ci sono anche casi in cui file convertito ha la dimensione corretta, ma il modulo non parte ugualmente. In tal caso provate anche qui ad eseguirlo caricando i singoli file (alcuni esempi sono i giochi “Jungle Hunt” e “Ms. Pac-Man”).

Infine, il caricamento dei moduli deve essere sempre fatto in quest’ordine: file “C.bin”, file “G.bin” e per ultimo il file “D.bin”.

Siamo ora, finalmente, pronti a partire. Connettiamo la board al monitor/tv con il cavo HDMI, inseriamo la MicroSD, connettiamo il cavo USB-OTG (il connettore sulla scheda è posto sul lato in cui c’è l’ingresso per il cavo di rete, ed è quello più a destra) e connettiamo un hub USB al connettore OTG. All’hub andremo poi a connettere una tastiera ed un gamepad (per esempio, quelli di 8BitDo sono compatibili). Attacchiamo ora l’alimentazione alla board, che si accenderà e dopo una manciata di secondi comparirà il menu del MiSTer sul monitor con il core del TI99 che avete copiato sulla schedina. Premete invio sulla tastiera per farlo partire.

Nella cartella “TI-99_4a” è stato precedentemente copiato il file “boot.rom”, quindi dovrebbe comparire già la schermata iniziale del TI99, altrimenti vedrete una schermata vuota, poiché non è stata caricata nessuna immagine BIOS. In questo caso sarebbe allora necessario premere il tasto “F12” per aprire il menu del TI99, selezionare l’opzione "Load Full or C.bin *.BIN", cercare il file “tiroms.bin”, selezionarlo e premere il tasto “Enter”.

Alcuni tasti comuni a tutti i core sono:

  • LCtrl + LAlt + RAlt per resettare il core corrente;
  • LShift + LCtrl + LAlt + RAlt per resettare il MiSTer (ricarica il menu inziale);
  • F12 per attivare/disattivare il menu OSD.

A questo punto è possibile utilizzare il TI99 normalmente con il TI BASIC.

Premendo il tasto “F12” vedremo il menu OSD con all’inizio le opzioni per caricare un modulo SSS, la possibilità di settare l’aspect ratio (4:3 o 16:9), gli effetti scandoubler (con eventuali scanlines, per un effetto retrò), l’opzione turbo (aumenta la velocità del clock della CPU) e la possibilità di effettuare lo scambio della porta joystick (utile per alcuni giochi).

Carichiamo ora il gioco “Hunt the Wumpus”. Dal menu selezioniamo la prima voce, cioè "Load Full or C.bin *.BIN" e poi selezioniamo il modulo “HuntTheWumpus.bin”. Possiamo iniziare a giocare! Per configurare il gamepad usiamo l’opzione apposita del menu. Premendo al solito “F12” vediamo il menu del core TI99, poi premiamo la freccia destra per spostarci sul menu successivo che contiene l’opzione “Define TI-99_4A buttons” per mappare le direzioni del joystick e il pulsante di fuoco con quelle del vostro gamepad.

Il core del TI99 per MiSTer è stato creato partendo dal lavoro fatto da Erik Piehl con il progetto EP994A (presentato anche al 32mo TI-TREFF a Roma nel 2017), che non si è mai concretizzato, purtroppo, in una board comoda da utilizzare come il MISTer.

Dopo un po’ di prove ed utilizzi posso dirvi che l’impressione generale di trovarsi su un TI99 reale è molto maggiore rispetto ad un emulatore tradizionale su PC o Raspberry Pi.

Il boot della scheda è rapidissimo, così come i vari menu di selezione dei moduli SSS, opzioni, etc. Il livello di emulazione è molto buono, la maggior parte dei giochi gira senza problemi o input lag. Tra quelli che hanno problemi segnaliamo: Tennis, Tutankham, Moon Patrol, Congo Bongo, Lasso, Return to Pirate's Isle ed i vari moduli MBX della Milton Bradley (Big Foot, Sewermania, etc.).

Al momento la versione del core TI99 non supporta lo Speech Synthesizer ed il disk drive, mentre è supportata l’espansione di memoria a 32K. La mancanza del disco limita l’accesso alla libreria di programmi BASIC ed Extended BASIC. Molti giochi su disco in Assembler (in modalità EA5) possono essere convertiti in modulo SSS e girano senza problemi, mentre quelli che richiedono la lettura di dati aggiuntivi (es. i livelli) dal disco non possono invece ovviamente girare. I recenti homebrew, quali ad esempio Scramble, Titanium, girano perfettamente, mentre su TI-99/Sim alcuni avevano dei problemi (come nelle collisioni degli sprite su Scramble). Anche alcuni giochi, come Ambulance, girano correttamente sul MiSTer, mentre hanno dei problemi in alcuni emulatori (MAME/MESS).

In conclusione, il giudizio sul core TI99 su MiSTer è decisamente positivo, considerando anche che è relativamente recente. Speriamo in futuri aggiornamenti che migliorino la compatibilità con il parco software e aggiungano il supporto per il disco e lo Speech Synthesizer.

Considerando poi il fatto che sia possibile far girare anche svariate altre piattaforme, l’acquisto è sicuramente consigliato per chi è interessato al retro gaming.

 

  
Link utili:

Link con tutti i moduli dei giochi testati, include file .txt con le istruzioni:    
  TI-99_Mister_Collection_v1.0;

- Sito Web del MiSTer;

- Sito Web del Mist;

- Sito web per la scheda Terasic-DE10-nano;

- Sito web del progetto EP994A di Erik Pihel  +  Video della Presentazione al 32° TI-TREFF;

 

 


Vuoi commentare l'articolo?
 Nome
 Email
Il tuo commento
Verifica

I vostri commenti ...

1

Donazione

Per sostenere il nostro Club puoi effettuare una donazione.

... e riceverai un nostro Gadget inviandoci il tuo indirizzo!

Translate with Bing
News
Materiale TI99?

Vuoi aiutarmi preservare la storia del TI-99 ?

Se possiedi Materiale Italiano e non che riguarda il TI-99 e che vorresti condividere nella nostra Community... contattami e potermo inserirlo nel nostro Database Globale

Hot Links

TI-99 RELEATED

RETROCOMPUTING altro...

Copyright © 2013-2017 by TI99 I.U.C. - Tutti i diritti riservati - All rights reserved - Loghi e marchi sono di proprietà dei rispettivi proprietari.
E' vietata la riproduzione integrale o parziale di contenuti o documenti previa autorizzazione.
Copyright   |    Privacy

Short Url: