MAME 0.128u4, modifiche strutturali e nuovo lasergame emulato

1 Dicembre 2008 · Archiviato in Emulazione & Retrogaming, Notizie 

Notizie - Una carrellata di notizie fresche e di qualità, dentro e fuori dal WebIl ciclo di sviluppo della release 0.129 di MAME non è ancora completo, ma l’ultima versione intermedia distribuita dai mamedev porta in dote modifiche e novità di notevole importanza che val la pena osservare più da vicino. Il design strutturale dell’emulatore degli emulatori ha subito l’ennesimo cambiamento mentre la lista di giochi emulati include ora Firefox, il secondo laserdisc videogame a essere implementato in MAME dopo Cube Quest.

Con la versione 0.128u4, recita il whatsnew allegato al codice sorgente, MAME affronta “la prima parte di un colossale cambiamento interno nel modo in cui vengono gestiti i core delle CPU e come la memoria è indirizzata“. Che il cambiamento sia enorme lo dimostra d’altronde la quantità di lavoro svolta e riportata nel suddetto whatsnew, molto più corposo del solito e in cui la notizia della corretta emulazione del laserdisc di Firefox - altrettanto importante almeno dal punto di vista dell’utente giocante - passa quasi inosservata.

Aaron Giles ha pubblicato un articolo sul suo blog per spiegare in dettaglio quello che sta attualmente accadendo al design interno di MAME: con l’obiettivo finale di rendere il codice maggiormente orientato agli oggetti e fare in modo che il programma impieghi “meno lavoro quando deve alternarsi velocemente tra diverse CPU” nell’emulazione dei sistemi multi-processore, vanno rimossi tutti i riferimenti architetturali al cosiddetto Context Switching tra i core delle CPU.

Giles spiega che il context switching è stato introdotto in MAME per permettere l’emulazione di sistemi multi-CPU, una funzionalità non presente all’inizio e che si è presto resa indispensabile. Usando come riferimento lo Z80 (il primo processore emulato da MAME), in un sistema multiprocessore ideale che ne contenga più di uno, il coordinatore del progetto MAME dice che “con il context switching, quando MAME ha bisogno di bloccare l’esecuzione di uno degli Z80 e iniziare l’esecuzione di uno degli altri, l’emulatore chiede al primo Z80 di copiare tutte le sue variabili globali in qualche zona di memoria temporanea, e poi copia lo stato del secondo Z80 da quella memoria verso le variabili globali. A quel punto, le variabili contengono lo stato del secondo Z80, e quest’ultimo può essere eseguito normalmente“.

MAME logo

La spiegazione evidenzia in sostanza come il context switching sia finora servito per facilitare l’emulazione di più processori in un sistema multi-CPU, servendo bene allo scopo senza un grande impatto sulle prestazioni complessive. Il problema, come ha già anticipato David “Haze” Haywood nel suo post sull’emulatore MESS condannato al fallimento e come Giles conferma, sorge quando si tenta di emulare fedelmente ogni singola istruzione di una particolare CPU. “In questa situazione - scrive Giles - è venuto fuori che si passa più tempo a fare del context switching piuttosto che a eseguire codice“.

La soluzione al problema evidenziato da Haze è appunto l’eliminazione del context switching, un lavoro lungo e laborioso considerando che tutti i core delle CPU vanno modificati, va cambiato radicalmente anche il sottosistema che si occupa della memoria e va eliminato il concetto di CPU “attiva” profondamente innervato nel design sin qui adottato in MAME. Una buona parte del lavoro necessario è stata già portata a termine con la release intermedia 0.128u4, ma altro rimane ancora da fare per completare l’upgrade.

Dal punto di vista dell’utente, continua Giles, questi cambiamenti dovrebbero inizialmente risultare trasparenti: tutti i giochi dovrebbero continuare a girare normalmente e in alcuni casi anche più velocemente, “specialmente in situazioni dove oggi viene usato un context switching particolarmente aggressivo“. Sul lungo periodo, al contrario, si prevede che la già non esaltante velocità di MAME peggiori ulteriormente, perché “per ottenere il comportamento più accurato possibile, dovremmo idealmente eseguire ogni CPU una istruzione per volta, andando avanti e indietro molto rapidamente” durante l’emulazione delle varie CPU. Giles spera che il single-stepping delle CPU sarà tollerabile, dal punto di vista delle prestazioni, “almeno per molti dei sistemi a 8 bit“.

Sussistono forti dubbi poi sul fatto che tutto questo rimestare con il codice serva almeno in quei casi in cui, come ha evidenziato Haze, occorre una sincronizzazione perfetta tra le CPU: è Haze stesso, sulla board di MAME World, a riferire che “per quanto riguarda il 32X, beh si, aiuta un pò, ma il costo per far girare le CPU in perfetta sincronia rimane comunque proibitivo anche se la performance venisse raddoppiata, e ci sono altri problemi addizionali“.

Tra tanti dubbi e incertezze sul futuro di MAME / MESS la cosa che attualmente rimane certa è l’emulazione di Firefox, divenuto finalmente giocabile grazie alla corretta implementazione della parte laserdisc nel drive (presente già da tempo in MAME) per opera di Giles ed smf. Il gioco, uno sparatutto tratto dal film omonimo diretto e interpretato da Clint Eastwood, è l’unico lasergame mai prodotto da Atari nel 1983 e racconta la storia del furto di un super-aereo sovietico a opera del personaggio di Eastwood.

Firefox - screenshot 1

Chi volesse provare Firefox dovrà prepararsi all’ennesimo download-monstre, visto che il dump del laserdisc è perfettamente allineato ai quasi 11 Gigabyte di Cube Quest pesando “solo” un Gigabyte in più. In attesa di trattare l’argomento in una guida omnicomprensiva, le istruzioni per scaricare il CHD di Cube Quest possono risultare utili anche per Firefox soprattutto quando si parla di BitTorrent e Pleasuredome. Per chi invece si accontenta di vedere il gioco in azione, il sito The Dragon’s Lair Project offre alcune immagini e brevi spezzoni video tratti dall’arcade originale, mentre corredati a questa news dovrebbero esserci gli screenshot del gioco emulato in MAME. La collezione completa è disponibile sui forum di MAME World in questo thread.

Firefox - screenshot 2

Firefox - screenshot 3

Firefox - screenshot 4

Firefox - screenshot 5

Firefox - screenshot 6

Condividi questo articolo!
  • OKNOtizie
  • Facebook
  • Diggita
  • ZicZac
  • Wikio Italia
  • StumbleUpon
  • Technorati

Articoli correlati

Commenti

Lascia una risposta