MAME
Template:Infobox Software Il MAME[1] (acronimo per Multiple Arcade Machine Emulator) è un software per personal computer 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
Il primo autore del progetto fu Nicola Salmoria che iniziò a lavorare all'emulatore il 24 dicembre 1996 e rilasciò la prima versione, la 0.1, il 5 febbraio 1997 che funzionava in ambiente MS-DOS da linea di comando. Salmoria aveva avuto l'idea di unire più emulatori trovati in rete (tra i quali un primitivo emulatore di PacMan) in un unico programma in grado di eseguire più giochi (sei nella versione 0.1). In breve tempo MAME iniziò a crescere e sempre più giochi furono aggiunti anche grazie ad un'archittettura che aiutava la programmazione. Nel 1997 appariva MAME32, la versione di MAME adattata all'ambiente Windows a 32 bit con l'aggiunta di una GUI che facilitava l'utilizzo. Nel 1998 la versione 0.30 supportava oltre 300 giochi e con la 0.34 si raggiunse quota 1000. Dal 2001 la versione ufficiale del MAME non viene più sviluppata sotto DOS ma sotto Microsoft Windows, sempre senza interfaccia grafica, come programma da linea di comando. L'ultima versione di MAME è la 0.124, rilasciata il 24 marzo 2008. Considerate che già la 0.116, rilasciata il 10 giugno 2007, era già così composta:
- Sets: 6643
- BIOS sets: 34
- Principali: 1468
- Cloni: 3061
- Altre: 2131
- Roms: 94629
- BIOS Roms: 100
- Samples: 2074
- 'nodump' ROMs: 992
- 'baddump' ROMs: 440
Funzionamento
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- una quindicina giochi: Gridlee e Robby Roto, per i quali è stato concesso espressamente il permesso di distribuzione da parte dei detentori del copyright e Poly-Play, del quale si sono perse le tracce della detenzione del copyright, in quanto prodotto da una compagnia dell' ex Repubblica Democratica Tedesca, nonché una serie di giochi prodotti da Exidy, per i quali il produttore ha concesso la libera distribuzione per scopi non commerciali.
Architettura
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.
ROM
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) vengoni 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
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
Coordinatori
- 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 - presente)
Team di sviluppo
Attualmente MAME viene sviluppato attivamente da:
- Nicola Salmoria
- "Haze" (David Haywood)
- Aaron Giles
- "Arbee" (R. Belmont)
- Frank Palazzolo
- Charles MacDonald
- "Mish" (Bryan McPhail)
- "Reip" (Pierpaolo Prazzoli)
- Tomasz Slanina
- "Kale" (Angelo Salese)
- Luca Elia
- Ville Linde
- "AJG" (Andrew J. Gardner)
- Philip J. Bennett
- Derrick Renaud
- "smf"
- "Tourniquet" (Paul Priest)
- "Robbie" (Roberto Fresca)
- Manuel Abadia
- "Stiletto"
- Norbert Kehrer
- "Guru"
Essendo comunque un progetto il cui codice sorgente è liberamente distribuibile, chiunque con le dovute conoscenze e capacità tecniche può inviare il proprio contributo.
Versioni
Versioni ufficiali
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
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
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:
- MAME32[1]: come già detto questa è una delle prime versioni modificate. È il porting per ambienti Windows a 32 bit con interfaccia grafica. I rilasci seguono di poco le versioni ufficiali.
- Mame32 Plus![2]
- VCMAME[3]: non è una vera e propria versione modificata, ma soltanto una serie di file che permettono a MAME di essere compilato con Microsoft Visual C++.
- MacMAME[4]: è il porting per piattaforma Apple. È curata da Aaron Giles.
- XMAME[5]: è il porting per piattaforme *nix (Linux, Unix, ecc.).
- SDLmame[6]: versione di MAME per piattaforme che utilizzano librerie grafiche SDL, come linux e mac OS X
- AdvanceMAME[7]: è una versione modificata con delle opzioni particolari per poter utilizzare MAME con i monitor dei cabinet arcade originali.
- MAMED[8]: è il porting per Dreamcast e per qualche fotocamera digitale.
- MAMEDC[9]: è il porting ufficiale per Dreamcast.
- MAME per OS/2[10]: è il porting per OS/2.
- PhMAME[11]: è il porting per il sistema operativo real-time QNX.
- MAME for MorphOS PegasosPPC[12]: è il porting per il MorphOS.
- MAME per Amiga[13]: è il porting per piattaforma Amiga.
- MAME per RISC[14]: è il porting per piattaforme RISC.
- BeMAME[15]: è il port per BeOS.
- MAMEnet[16]: una versione di MAME con l'aggiunta del gioco online.
- MAMECE3[17]: porting per PocketPC.
- zMAME[18]: porting per Sharp Zaurus.
- EMAME[19]: porting per palmari Psion.
- EMAME9210[20]: porting per cellulare Nokia 9210.
- EMAME[21]: porting per Symbian OS
- MAMEGP2x[22]: porting per console portatile Linux GP2X
Note etiche e legali
ROM
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 è comunque 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. Resta comunque vietato (la licenza del MAME è piuttosto chiara in merito) distribuire il MAME sullo stesso supporto in cui si trovano i giochi copiati.
Emulazione
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
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) devono poter essere disponibili. Sono inoltre vietate versioni modificate del MAME che facciano funzionare giochi recenti o appositamente disabilitati.
Trademark
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[2].
Note
- ^ 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").
- ^ MAME dovrà cambiare nome?, «Punto Informatico», 22 febbraio 2005
Collegamenti esterni
- MameDev - Sito ufficiale MAME
- MameChannel.it - Il sito italiano
- Progetto EMMA Database contenente informazioni sui giochi emulati
- Informazioni tecniche
- Wikicab, wiki dedicato ai cabinati MAME (mamecabs)