MESS, un emulatore condannato al fallimento?

8 Novembre 2008 · Archiviato in Emulazione & Retrogaming, Notizie 

Notizie - Una carrellata di notizie fresche e di qualità, dentro e fuori dal WebNubi scure, anzi scurissime si intravedono all’orizzonte per MESS, emulatore omni-comprensivo di sistemi casalinghi che condivide buona parte del codice base di MAME e che soprattutto ne sposa la filosofia di grande fedeltà ai meccanismi di funzionamento interni dell’hardware replicato in software. Secondo l’opinione di Haze, uno dei mamedev storici che per lungo tempo è stato coordinatore dello sviluppo sull’emulatore creato da Nicola Salmoria, “il framework di MAME è troppo fondamentalmente fallato per riuscire davvero a emulare in maniera adeguata questo genere di cose“.

Haze ha fatto la spiacevole scoperta mentre stava lavorando sull’emulazione di 32X, l’unità aggiuntiva per la console Sega Mega Drive, in vista di una sua aggiunta al già corposo parco macchine supportato da MESS (”oltre 250 sistemi delle ultime 5 decadi“, stando alle FAQ). Arrivato al punto in cui “un paio di giochi fanno il boot“, scrive Haze, il coder si è imbattuto in “quello che sembra un problema considerevole“. “Kolibri, uno dei giochi che fanno il boot - continua Haze - richiede una sincronizzazione molto stretta tra le CPU” integrate nell’unità 32X.

MESS logoHaze sostiene che se gli emulatori stand-alone “sembrano emulare il 32X e il Sega Mega-CD con il single-stepping delle CPU“, verificando una per una le istruzioni dei microprocessori “producendo così una sincronizzazione perfetta senza costi aggiuntivi“, in MAME (e quindi in MESS) una cosa del genere ha un costo enorme a livello di velocità arrivando al punto che “forzare tutte le CPU a girare in single-step porta come conseguenza che l’intero emulatore gira al di sotto dei 5 frame al secondo su un processore Core 2 di fascia alta“.

Ci sono un certo numero di ragioni” per cui si verifica un tale calo di prestazioni, dice Haze, nessuna delle quali può essere risolta rispettando contemporaneamente la filosofia emulativa condivisa da MAME e MESS. Lo scoglio principale sarebbe il timer di sincronizzazione delle istruzioni sulle schede arcade multi-CPU, un sistema che risale al 1997 e che rappresenta indubbiamente il contributo fondamentale di Aaron Giles (attuale coordinatore dei mamedev) alla crescita e allo sviluppo globale di MAME.

Il sistema di sincronizzazione di MAME è particolarmente preciso ma anche particolarmente pesante per le prestazioni complessive dell’emulatore, visto che deve ri-sincronizzare e “ri-schedulare” tutto dopo ogni singolo step dell’emulazione dell’arcade di turno. Anche i raffinamenti successivi da parte di Giles, che hanno raddoppiato le prestazioni in alcuni intervalli di esecuzione, non hanno cambiato granché la sostanza del codice.

Sega 32X

Considerando questo, e considerando che “da quello che mi è stato detto il Sega Mega-CD richiede una sincronizzazione ancora più stretta della 32X“, continua Haze, “riuscire a ottenere un buon livello di compatibilità sembra praticamente impossibile“. Gli emulatori stand-alone non hanno problemi del genere, visto che al contrario di MAME/MESS sono progettati per rispondere alle specifiche esigenze di una singola piattaforma, mentre l’aggiunta del 32X a MESS è un progetto che “sta cominciando a sembrare destinato al fallimento” dice David Haywood aka Haze.

Un destino che lo stesso MESS nel suo complesso potrebbe condividere, conclude il coder, perché “i giochi per console tendono a sfruttare l’hardware in maniera molto più spinta di quanto facciano le loro controparti arcade“. Il futuro di MESS non promette nulla di buono, ed Haze non si aspetta molto dalle discussioni attualmente in corso per cercare di porre rimedio a limitazioni così strutturali (ad esempio attraverso hack specifici per singoli giochi).

Doom on 32X screenshot

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

Articoli correlati

Commenti

4 Risposte a “MESS, un emulatore condannato al fallimento?”

  1. smaramba il 8 Novembre 2008 23:55

    Bè, che dire se non nomen omen …


    Browser Firefox 3.0.3 Firefox 3.0.3 sull'O.S. Ubuntu Ubuntu
    Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3
  2. Sir Arthur, King of Ghouls'n Ghosts il 9 Novembre 2008 00:00

    Beh, il “casino” non è tanto l’idea in se, quanto il fatto che probabilmente hanno sopravvalutato l’adattabilità di MAME, un progetto che nasce con gli arcade e morirà tale e che per quanto sia incredibile per la raffinatezza del lavoro speso da autentici geni del codice (vedi Aaron Giles, uno che è stato assunto da Microsoft mica per niente…), ha delle fondamenta ed è addirittura basato su un linguaggio di programmazione (se non sbaglio il C, che Giles e gli altri si sono sempre rifiutati di aggiornare o cambiare) che risalgono a lustri fa….


    Browser Firefox 2.0.0.16 Firefox 2.0.0.16 sull'O.S. Windows XP Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
  3. smaramba il 9 Novembre 2008 00:46

    Premetto che non ho analizzato a fondo il codice di MAME/MESS, magari dico ‘na cazzata, ma ritengo che il “casino” ora risieda nel proposito velleitario di mantenere un cuore generico e dei driver specifici che implementano le varie macchine.
    Il cuore generico, per sua natura, non può contenere ottimizzazioni ritagliate ad hoc sui calcolatori emulati; implementa invece la logica di base comune a tutte le macchine. Ovviamente nel modo più preciso possibile. I vari driver realizzano invece le specificità (il microcodice?) delle macchine emulate.
    Le implementazioni generiche, e l’eleganza ingegneristica che esse rappresentano in termini di riusabilità del codice, cozzano spesso con la necessità di ottenere elevate prestazioni, spesso attraverso implementazioni specializzate ma poco riattabili per altri usi.

    Ho letto poco tempo addietro che lo stesso John Carmack, Dio del codice della id Software (e se lo dice lui io ci credo), ha ammesso che gli algoritmi di illuminazione implementati in Doom 3, che seguivano il concetto di genericità elegante della soluzione, mal si adattavano alle necessità di coloro che poi si trovavano ad usare il motore in contesti diversi da Doom 3. Col Tech 5 (Rage) ha perciò sacrificato l’eleganza sull’altare delle performance realizzando codice ottimizzato per la soluzione di problemi specifici di rendering.

    In ogni caso, il linguaggio C è quanto di meglio potessero usare. In cosa si dovevano “evolvere”? C++? Peggio che andar di notte. C#? Java? Ma se già ora hanno problemi di performance… e in ogni caso dovrebbero riscrivere tutto da zero. Python? Ada? Smalltalk? Fortran? PHP? No direi che C è l’unica vera alternativa.


    Browser Firefox 3.0.3 Firefox 3.0.3 sull'O.S. Ubuntu Ubuntu
    Mozilla/5.0 (X11; U; Linux x86_64; it; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3
  4. Sir Arthur, King of Ghouls'n Ghosts il 9 Novembre 2008 19:37

    ritengo che il “casino” ora risieda nel proposito velleitario di mantenere un cuore generico e dei driver specifici che implementano le varie macchine.

    Mi raccomando, non dire mai ‘na cosa del genere su mameinfo e sui forum simili: non ne usciresti vivo, sta certo :-D
    In realtà è proprio quello lo scopo di MAME, le prime versioni di Nicola (Salmoria) erano un’accozzaglia di driver con ben poco in comune, poi pian piano è emersa la natura “generic” dei sottosistemi che si occupano di gestire l’output e le interfaccia di I/O (grafica, sonoro, mappatura dei comandi, accessi alla DRAM, varie und eventuali) ed è stata proprio quella struttura che ha portato il MAME dove si trova ora, cioè dappertutto, venduto con le ROM legali dei joystick modello HotRod, nei cabinati degli appassionati, dei delinquenti che li vendono illegalmente nelle sale giochi profittando del lavoro di emulazione dei mamedev ma anche in quelli che qualche pazzo si costruisce in casa partendo (più o meno) da zero…

    Le implementazioni generiche, e l’eleganza ingegneristica che esse rappresentano in termini di riusabilità del codice, cozzano spesso con la necessità di ottenere elevate prestazioni, spesso attraverso implementazioni specializzate ma poco riattabili per altri usi.

    Anche questo, ti consiglio di non dirlo troppo forte tra i MAME fanatici :-D Più che eleganza si tratta di adattabilità e portabilità del codice di MAME e fedeltà emulativa all’hardware mantenendo nel contempo una struttura altamente modulare, in modo che il maggior numero di persone ci possa lavorare dedicandosi ai driver e ai problemi specifici di emulazione di un singolo gioco piuttosto che alla riscrittura pedissequa e reiterata di routine che si possono astrarre a un livello più basso e comune tra i driver stessi… (respira….)

    Lascia stare il confronto con Doom 3, quelli sono autori di software commerciale che devono vendere su macchine di oggi, gli autori principali di MAME sono un fenomeno del tutto particolare, perché pensano a documentare il funzionamento dell’hardware in maniera più chiara possibile così da essere un archivio degli arcade non solo oggi, ma anche e soprattutto negli anni a venire. E questo, se lavori di ottimizzazione, è un obiettivo che non puoi mai pensare di ottenere.

    Il linguaggio C è quanto di meglio potessero usare

    Tempo addietro, su MAME.net, seguivo una discussione (o magari erano le FAQ, non ricordo bene) sul fatto che molti cozzavano contro i limiti del C usato da MAME, ma di alternative altrettanto valide globalmente non se ne sono finora trovate.

    O meglio, in realtà sembra stiano migrando grandi porzioni di codice in vista di una possibile conversione totale in Simple DirectMedia Layer (SDL), una sorta di DirectX universale per Linux, Mac, amiga e quant’altro. Una libreria che è comunque programmata in C.

    in ogni caso dovrebbero riscrivere tutto da zero

    Oltre 11 anni di linee di codice, decine, centinaia e forse migliaia di autori diversi, core di CPU via via sempre più raffinati, alcuni dei quali concessi a MAME con una licenza un pò particolare ancorché open source… provaci te, anche solo a pensare di riscrivere tutto daccapo, lol :-D

    Ma se già ora hanno problemi di performance…

    Ah non dirlo a me: con la macchina a mia disposizione sono costretto a usare due diverse versioni di MAME (entrambe molto vecchie), quella più recente alcuni dei miei giochi preferiti li fa girare al 30% della velocità dell’altra. E se aggiorno all’ultima versione posso dire addio anche ai giochi su CPS1, e lì mi suicido direttamente…

    No, MAME non è decisamente qualcosa per cui si può pensare alle performance pure come elemento fondamentale per gli autori :-D


    Browser Firefox 2.0.0.16 Firefox 2.0.0.16 sull'O.S. Windows XP Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16

Lascia una risposta