MAME

Da Wikipedia, l'enciclopedia libera.
Se riscontri problemi nella visualizzazione dei caratteri, clicca qui.
MAME
Sviluppatore MAME Team
Ultima versione 0.155 (15 ottobre 2014)
Sistema operativo Multipiattaforma
Linguaggio C
Genere Emulatore
Licenza MAME License
Sito web mamedev.org/

MAME[1] (Acronimo di Multiple Arcade Machine Emulator) è un software sviluppato inizialmente per MS-DOS e in seguito per quasi tutte le macchine e sistemi operativi in circolazione, in grado di emulare varie piattaforme di gioco arcade. Lo scopo di tale emulazione è quello di documentare il funzionamento dei coin-op, preservare la storia dei videogame e di prevenire la sparizione di vecchie rarità una volta che le macchine originali abbiano cessato di funzionare per motivi di obsolescenza.

Storia[modifica | modifica wikitesto]

Il primo autore del progetto è stato Nicola Salmoria, che ha iniziato a lavorare all'emulatore il 24 dicembre 1996. Salmoria aveva avuto l'idea di unire più emulatori trovati in rete (tra i quali un primitivo emulatore di Pac Man) in un unico programma in grado di eseguire più giochi. La prima versione, la 0.1, è stata rilasciata il 5 febbraio 1997; funzionante in ambiente MS-DOS da riga di comando, questa versione è in grado di eseguire cinque titoli. In breve tempo il progetto ha cominciato ad attirare l'attenzione di altri sviluppatori, che hanno iniziato a collaborare inserendo nuovi driver per il funzionamento dei videogiochi, grazie ad una peculiare architettura del codice sorgente.

Nel 1997 è cominciato lo sviluppo parallelo di MAME32 (ora MAMEUI), una versione adattata all'ambiente Windows a 32 bit con l'aggiunta di una GUI (interfaccia grafica) che ne facilita notevolmente l'utilizzo, soprattutto per chi non conosce i comandi DOS.

Nel 1998 la versione 0.34 raggiunge la quota dei 1000 titoli supportati. Dal 2001 la versione ufficiale del MAME non viene più sviluppata sotto DOS ma sotto Microsoft Windows, sempre senza interfaccia grafica, come programma a riga di comando. L'ultima versione stabile di MAME è la 0.154, rilasciata il 23 luglio 2014: sono supportati oltre 8.000 titoli, più di 26.000 contando anche i vari cloni.

A partire dal 5 aprile 2011 il progetto è coordinato da Angelo Salese. È il terzo italiano a coordinare il progetto MAME dopo Nicola Salmoria e Mirko Buffoni (che sostituì per breve tempo Salmoria mentre questi era in servizio militare). Prima di Salese, il progetto era coordinato da Aaron Giles.[2]

Funzionamento[modifica | modifica wikitesto]

MAME è composto da varie parti in grado di emulare completamente le architetture tipiche delle macchine arcade che ad esempio si trovavano nei bar e nelle sale giochi. In pratica MAME ricostruisce via software tutte quelle circuiterie interne che permettono di gestire gli input dei joystick, la gestione del monitor e dei riproduttori di suoni. L'unica cosa che manca è la parte software delle macchine, cioè le ROM originali dei giochi, che per motivi di copyright non possono essere distribuite legalmente.

Fanno eccezione, al momento, alcuni titoli per i quali è stato concesso espressamente il permesso di distribuzione da parte dei detentori del copyright: in particolare Gridlee della Videa, Robby Roto di Bally/Midway, Alien Arena di Duncan Brown e una serie di 11 giochi prodotti da Exidy, per i quali il produttore ha concesso la libera distribuzione per scopi non commerciali. Anche la Gaelco ha "liberato" il suo World Rally.[3]

Architettura[modifica | modifica wikitesto]

Da un punto di vista logico MAME può essere diviso in 3 livelli:

  • Il primo livello si occupa dell'emulazione dell'hardware vero e proprio.
  • Il secondo livello contiene tutte le funzioni generali e i moduli che fanno da collante tra il primo e il terzo livello.
  • Il terzo livello è quello che "presenta" l'emulatore all'utente. È composto dall'interfaccia grafica (se presente) e da tutte quelle opzioni che permettono di avviare e pilotare l'emulatore.

I primi due livelli sono scritti in C in modo d'avere maggior velocità e portabilità. Nessuna libreria esterna è richiesta e questo codice è compilabile per qualunque piattaforma da un compilatore standard, praticamente senza modifica alcuna. Il terzo livello è definito OSD (Operating System Dependent) e contiene tutto quel codice specifico per le varie piattaforme. Tutte le varie chiamate di sistema di Windows o di Linux si trovano in questo livello permettendo una facile migrazione del codice da una piattaforma all'altra modificando solo questo livello.

ROMs[modifica | modifica wikitesto]

In quasi tutti i giochi arcade i dati (software, grafica, audio, ecc.) sono memorizzati in chip di memoria di sola lettura (Read Only Memory, ROM) sebbene in alcuni casi siano utilizzati anche floppy disk, CD-ROM o cassette. I dati contenuti in questi supporti vengono letti e riscritti in file contenenti l'esatta copia del chip da cui provengono attraverso un processo chiamato dumping. Tali file (indipendentemente dal supporto dal quale provengono) vengono chiamati ROM. Solitamente un gioco è composto da più ROM (alcune per l'audio, alcune per la grafica, ecc.). L'insieme di tutte le ROM di un gioco prende il nome di ROM Set.

Il MAME gestisce i ROM Set in 2 modi: file CHD (Compressed Hunks of Data) che contengono le immagini compresse di hard disk o compact disc oppure file ZIP contenenti tutte le ROM.

ROM Set[modifica | modifica wikitesto]

I ROMSet sono gruppi di immagini delle ROM che compongono lo stesso gioco. Ci sono 3 tipi principali di ROM Set:

  • ROM Set Originale: anche chiamato ROM Set Parent, questo set contiene tutte le ROM del gioco che il team di sviluppo del MAME ha definito come originale (alcune volte è la versione più recente e completa del gioco, altre volte è la prima e più tradizionale, altre volte ancora è la versione mondiale o la più famosa). Le ROM di questo set contengono tutte le informazioni per lanciare il gioco.
  • ROM Set Clone: sono varianti dei giochi originali, per esempio versioni precedenti o successive o localizzate, che usano svariate ROM identiche ad altre versioni dello stesso gioco. Per risparmiare spazio queste ROM duplicate vengono incluse una sola volta nel set Parent, mentre il set Clone contiene solamente le ROM che lo distinguono dalle altre edizioni del gioco.
  • BIOS ROM Set: non sono veri e propri giochi, contengono delle ROM necessarie ad altri giochi per poter essere eseguiti. Il BIOS (Basic Input/Output System) è un insieme di routine di base che gestiscono le varie componenti hardware della macchina del gioco. Queste immagini sono particolarmente importanti per sistemi che supportano più giochi quali il Neo Geo.

Sviluppo[modifica | modifica wikitesto]

Coordinatori[modifica | modifica wikitesto]

  • Nicola Salmoria (febbraio 1997-aprile 1997)
  • Mirko Buffoni (aprile 1997-agosto 1997) (Buffoni sostituì Salmoria mentre questi svolgeva il servizio militare)
  • Nicola Salmoria (agosto 1997-2003)
  • "Haze" David Haywood (2003-2005)
  • Aaron Giles (2005 - 2011)
  • "Kale" Angelo Salese (2011 - presente)

Team di sviluppo[modifica | modifica wikitesto]

Attualmente MAME viene sviluppato attivamente da:

  • Aaron Giles WIP
  • "Alex" WIP
  • Andreas Naive WIP
  • Andrew J. Gardner WIP
  • Angelo Salese "Kale" WIP
  • Bryan McPhail "Mish" WIP
  • Charles MacDonald WIP
  • Dave Widel WIP
  • David Haywood "Haze" WIP
  • Derrick Renaud WIP
  • Elsemi WIP
  • Frank Palazzolo WIP
  • "Guru" WIP
  • Luca Elia WIP
  • Manuel Abadia WIP
  • Mariusz Wojcieszek
  • Nicola Salmoria WIP
  • Norbert Kehrer WIP
  • Paul Priest "Tourniquet" WIP
  • Philip J. Bennett WIP
  • Phil Stroffolino WIP
  • Pierpaolo Prazzoli "Reip" WIP
  • R. Belmont "Arbee" WIP
  • Roberto Fresca "Robbie" WIP
  • Roberto Zandonà "Robiza" WIP
  • "smf" WIP
  • "Stiletto" WIP
  • Jim Stolis "Stolistic" WIP
  • Tomasz Slanina "Dox" WIP
  • Ville Linde WIP

Essendo comunque un progetto il cui codice sorgente è liberamente distribuibile, chiunque con le dovute conoscenze e capacità tecniche può inviare il proprio contributo.

Versioni[modifica | modifica wikitesto]

Versioni ufficiali[modifica | modifica wikitesto]

MAME viene sviluppato da programmatori esperti che scrivono codice per passione senza alcun compenso di denaro. Le release ufficiali, contraddistinte fino ad ora da un codice del tipo 0.X dove X è la versione (per esempio 0.89) vengono rilasciate piuttosto regolarmente ogni 3-4 settimane. Circa ogni settimana poi vengono rilasciate delle versioni intermedie con codice 0.XuY dove X rappresenta ancora la versione e Y il livello di patch (per esempio 0.89u3). MAME è liberamente scaricabile dal sito ufficiale.

Versioni particolari[modifica | modifica wikitesto]

La 0.32 non fu mai rilasciata per evitare confusioni con il MAME32, la versione di MAME con interfaccia grafica Windows. Della release 0.31 si iniziò a numerare le beta con numeri sempre più alti nella speranza di arrivare presto ad una versione 1.0. Ciò portò all'uscita di molte release nominate beta ma che in realtà erano versioni vere e proprie perfettamente funzionanti (0.35b13, 0.36b9 per esempio). Con la release 0.37 si iniziò ad utilizzare la numerazione attuale senza più sperare in una versione 1.0 tanto che alcuni sviluppatori pensano che probabilmente non ci sarà mai una vera e propria versione definitiva di MAME. In effetti la versione successiva alla 0.99 è stata rilasciata il 14 settembre 2005 con numerazione 0.100. Le versioni dalla 0.36b10 alla 0.36b16 sono state ritirate in quanto contengono dei giochi definiti "gambling" (giochi in cui conta solamente la fortuna e non l'abilità del giocatore, come ad esempio le roulette). La loro rimozione è stata effettuata in base ad una scelta più filosofica che tecnica di Nicola Salmoria. Questi giochi sono stati poi reintrodotti ufficialmente in MAME con la versione 0.100.

Porting e modifiche[modifica | modifica wikitesto]

La portabilità del MAME ha fatto sì che molti programmatori ne abbiano sviluppato versioni per varie piattaforme, alcune volte realizzando vere e proprie versioni modificate:

  • QMC2 [1]: front-end con interfaccia grafica di MAME ed anche di MESS. Disponibile per diverse piattaforme hardware (Linux, UNIX[OpenSolaris,FreeBSD], Mac OS X e Windows)
  • MAMEUI - IV/Play (precedentemente MAME32) [2]: come già detto questa è una delle prime versioni modificate. È il porting per ambienti Windows a 32 bit e 64 bit con interfaccia grafica.
  • Mame32 Plus! [3]
  • VCMAME [4]: non è una vera e propria versione modificata, ma soltanto una serie di file che permettono a MAME di essere compilato con Microsoft Visual C++.
  • SDLmame [5]: versione di MAME per piattaforme che utilizzano librerie grafiche SDL, come linux e mac OS X. Dalla versione 0.138 è stato direttamente integrato in MAME
  • MAME OS X [6]: è un porting nativo per Mac OS X progettato per avvantaggiarsi di tutte le ultime tecnologie MAC OS X come Core Video e Core Image.
  • MacMAME [7]: è il primo porting per piattaforma Apple. Non viene più sviluppato e quindi è fermo alla versione 0.103.
  • XMAME [8]: è il primo porting per piattaforme *nix (Linux, Unix, ecc.). Non viene più sviluppato (fermo alla versione 0.106) e SDLMAME è il suo "ufficiale" sostituto. Anche il sito di XMAME non è più disponibile.
  • AdvanceMAME [9]: è una versione modificata con delle opzioni particolari per poter utilizzare MAME con i monitor dei cabinet arcade originali (basato su MAME 0.106).
  • MAMED [10]: è il porting per Dreamcast e per qualche fotocamera digitale. Basato su MAME v0.37b6
  • MAMEDC [11]: è il porting ufficiale per Dreamcast. La v0.4 è basata su mame v0.37b15. Non è più presente sul sito mamedc.kaillera.
  • MAME per OS/2 [12]: è il porting per OS/2 basato su MAME v.37b14.
  • PhMAME [13]: è il porting per il sistema operativo real-time QNX. Basato su XMAME.
  • MAME for MorphOS PegasosPPC [14]: è il porting per il MorphOS (ultimo porting: Mame0.97).
  • MAME per Amiga [15]: è il porting per piattaforma Amiga (ultimo porting: MAME v0.37b2).
  • MAME per ARM/RISC OS (Archimedes) [16]: è il porting per piattaforme ARM/RISC OS (Archimedes).
  • BeMAME [17]: è il port per BeOS. (Basato su MAME 0.36b15 ?)
  • MAMEnet [18]: una versione di MAME con l'aggiunta del gioco online.
  • MAMECE3 [19]: porting per PocketPC.
  • zMAME [20]: porting per Sharp Zaurus basato su XMAME v0.57.
  • EMAME [21]: porting per EPOC32, palmari Psion e SonyEricsson P800/P900 basato su XMAME 0.37b7
  • EMAME9210 [22]: porting per cellulare Nokia 9210 basato su EMAME
  • E²MAME [23]: porting per Symbian OS basato su EMAME.
  • MAME4ALL GP2X/WIZ [24]: porting per console portatile Linux GP2X realizzato da Franxis. Basato su vecchie versioni del mame(0.35-0.40)
  • iMAME4all [25]: è un porting per i dispositivi iOS jailbroken (iPad HD, iPhone 4G, iPod touch e precedenti) di David Valdeita; è un porting del MAME 0.37b5 basato su GP2X, WIZ MAME4ALL 2.5 di Franxis. Emula i giochi della 0.37b5 più alcuni giochi provenienti da versioni più nuove di mame.
  • MAME4droid [26]: è il porting di iMAME4all per Android (basato quindi su MAME4ALL a sua volta su MAME 0.37b5).
  • MAME4droid Reloaded [27]: porting del MAME 0.139 su Android, sviluppato da David Valdeita (Seleuco)
  • MAMEoX [28]: è il porting per Xbox.

Note etiche e legali[modifica | modifica wikitesto]

ROM[modifica | modifica wikitesto]

Il problema legale maggiore quando si parla del MAME è quello delle ROM. Dal punto di vista legale un ROM set altro non è che una copia del gioco originale. Per questo motivo s'incorre in violazione di copyright nel caso in cui non si abbia l'originale del gioco stesso che, nel caso delle piattaforme arcade, è la scheda con i chip. Online si trovavano siti da cui scaricare tutti i giochi emulati dal MAME ma dopo varie pressioni legali questi siti hanno dovuto eliminare il servizio. Attualmente i giochi si possono trovare sulle reti peer-to-peer e attraverso sistemi di vendita on-line. La vendita di ROM è soggetta alle restrizioni sulla vendita di materiale coperto da copyright, ed il loro acquisto da venditori che non detengono il diritto alla vendita è legalmente perseguibile. È vietato (la licenza del MAME è piuttosto chiara in merito) distribuire il MAME sullo stesso supporto in cui si trovano i giochi copiati. Esiste però un caso di ROM che si può tenere liberamente a fini personali: si tratta di World Rally della Gaelco, un gioco di corse che ha spopolato come arcade.

Filosofia[modifica | modifica wikitesto]

Tolto ogni dubbio sulla legalità delle copie dei giochi, rimane il dubbio sulla legittimità etica dell'emulazione di piattaforme che ancora oggi si trovano comunque in bar e sale giochi. Lo spirito del MAME non è comunque quello di evitare ai giocatori di pagare per giocare, ma solo quello di preservare questi giochi e di documentarne l'hardware. Storicamente il poter giocare col MAME è infatti considerato dai suoi creatori un "nice side effect" (piacevole effetto collaterale). Per di più è una storica politica del MAME quella di non includere giochi troppo recenti nell'emulatore. L'attuale licenza di MAME prevede che siano passati almeno 3 anni dall'uscita del gioco, e che il gioco non sia più attivamente commercializzato, prima che venga incluso nei sorgenti ufficiali (anche se spesso, contro la licenza del MAME si trovano in rete versioni modificate con il supporto di giochi molto recenti). Esistono comunque casi di giochi, che pur non essendo attivamente in commercio, sono stati rimossi dal codice per espressa richiesta delle case produttrici.

Licenza[modifica | modifica wikitesto]

Sebbene il codice sorgente del MAME sia disponibile, MAME non è software libero nel senso più stretto del termine. È vietato vendere MAME compilato o in forma sorgente, utilizzare MAME per fini di lucro è espressamente vietato, tutto il codice utilizzato per la compilazione (sia esso il cuore del MAME o le librerie esterne) deve essere disponibile. Sono inoltre vietate versioni modificate del MAME che facciano funzionare giochi recenti o appositamente disabilitati.

Trademark[modifica | modifica wikitesto]

Marchio

Nel febbraio 2005 una piccola società californiana produttrice di cabinet arcade in grado di lanciare più giochi, la Ultracade, ha cercato di registrare il nome MAME per prevenire l'abuso di tale termine da parte di società concorrenti che invece usano MAME e copie pirata dei giochi nei loro cabinet. La comunità di utenti si è subito mobilitata e ha costretto il titolare della società a cedere la registrazione a Nicola Salmoria che ora detiene il trademark del nome MAME[4].

Note[modifica | modifica wikitesto]

  1. ^ L'autore, l'italiano Nicola Salmoria, ha indicato nella sua tesi di laurea sul MAME (Il progetto MAME: Reverse Engineering e macchine da gioco, Università di Siena, 2002, pag. 5), la pronuncia da lui seguita, ossia all'italiana ("mame"), non all'inglese ("meim" o "em ei em i").
  2. ^ MAME | Multiple Arcade Machine Emulator
  3. ^ ALREADY IN THE ARCADES!
  4. ^ MAME dovrà cambiare nome?, «Punto Informatico», 22 febbraio 2005

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]