# MAME

MAME, acronyme signifiant « Multiple Arcade Machine Emulator », est un logiciel d'émulation pour PC dont le but est de reproduire fidèlement le fonctionnement des jeux et des systèmes d'arcade afin de préserver l'histoire du jeu vidéo et ainsi éviter que certains titres ne sombrent dans l'oubli. Depuis le 27 mai 2015, il intègre MESS.
MAME est officiellement disponible pour les systèmes d'exploitation Windows et DOS, mais a été porté sur différents systèmes. Une version nommée SDLMAME, utilisant la bibliothèque portable Simple DirectMedia Layer (SDL), est développée pour être compatible avec les systèmes de type UNIX et Mac OS X.
La première version publique (0.1) de MAME, par Nicola Salmoria, est sortie le 5 février 1997. Sortie le 21 octobre 2010, la version 0.140 de l'émulateur prend en charge plus de 4 510 jeux uniques et plus de 9 012 ROM sets, ce nombre grandissant sans cesse. Toutefois, de nombreux jeux ne fonctionnent pas, sans compter que certains jeux émulés peuvent devenir non fonctionnels à la suite des évolutions du logiciel. Il faut alors se procurer la dernière image (ROM) des jeux concernés.
MAME est utilisé par certains particuliers afin de réaliser de véritables bornes d'arcade multi-jeux reposant sur du matériel informatique.

## Fonctionnement

MAME contient différents composants :
* plusieurs émulateurs de matériel imitant le comportement des processeurs et des cartes mères des jeux d'arcade pris en charge ;
* un émulateur de contrôle simulant les différents dispositifs (manette de jeu) par les claviers ou d'autres périphériques ;
* un émulateur pour simuler et rediriger les sorties audio et vidéo des bornes d'arcades vers les sorties respectives de l'ordinateur.
Pour des raisons légales, les différents BIOS des jeux d'arcade émulés ainsi que les ROM des jeux originaux ne sont pas distribués avec l'émulateur.

## Philosophie de l'émulation

Le but avoué de MAME est de documenter le matériel. Une vue plutôt puriste de l'émulation est adoptée, interdisant des modifications pouvant faire fonctionner un jeu correctement ou plus rapidement au profit de la précision de l'émulation. Dans MAME, chaque composant est émulé le plus fidèlement possible, des registres aux jeux d'instructions. Par conséquent, l'émulation des jeux réalisée par MAME est très précise mais le système minimum requis pour exécuter le logiciel devient ainsi plus élevé que d'autres émulateurs. Ne faisant généralement tourner que des jeux anciens, la loi de Moore assure que la majorité des jeux fonctionnent bien sur un ordinateur avec un processeur se situant dans les 2 GHz. Cependant, l'émulation des jeux d'arcade utilisant de l'électronique plus récente, comme des processeurs RISC ou des DSP dédiés aux opérations mathématiques, nécessite une machine bien plus puissante.
En activant la prise en charge du multithreading, soit la gestion des CPU multi-cœurs, la vitesse d'émulation peut être améliorée comme sur certains jeux en 3D ou sur les systèmes Cave de 3e génération, le CV1000 à base d'Hitachi SH-3 prenant en charge les derniers jeux de la série DoDonPachi. Avec la sortie de la version 0.191, fin octobre 2017, MAME inclut un compilateur dynamique expérimental pour les processeurs SH3/SH4 améliorant ainsi la vitesse d'exécution. Toutefois, il n'est activé actuellement que pour les cartes utilisant un processeur SH3.

## Stockage des jeux

Dans la plupart des jeux d'arcade, les données (comprenant le programme, les graphismes, les sons…) sont entreposées dans de la mémoire morte ou ROM (Read-Only Memory). Par différentes méthodes, ces supports peuvent être lus pour créer des images numériques fidèles, sauvées ensuite dans des fichiers. Par abus de langage, ces derniers sont appelés ROMs, parfois à tort car d'autres support de stockage comme les cassettes, disquettes, disques durs ou CD-ROM sont également utilisés.
Le stockage d'un jeu est ainsi réalisé en 2 parties :
* un fichier d'archive ZIP, contenant les données principales du jeu ;
* un fichier CHD (Compressed Hunks of Data), contenant les données d'un disque dur ou d'un CD-ROM.
Pour jouer à un jeu en particulier, MAME doit donc utiliser un ensemble de ROM (appelé ROM set) contenant toutes les données du jeu original. Le nom de chaque fichier image a été normalisé, permettant à l'émulateur de s'y retrouver.

### Types de ROM sets

Il existe trois types de ROM sets :
* Le ROM set du jeu original (au nombre des jeux que l'équipe de MAME a décidé de nommer « versions originales »). Excepté pour les fichiers ROM BIOS (voir ci-dessous), les fichiers ROM pour ces jeux contiennent tout ce qui est nécessaire au fonctionnement du jeu. L'ensemble original (appelé ROM parent) est jugé comme étant la révision la plus récente et si de multiples versions régionales sont disponibles, est utilisée la révision world (internationale) ou US (américaine).
* Les ROM sets clones, qui sont différentes versions ou variantes d'un même jeu (par exemple, Street Fighter II Turbo est considéré comme variante de Street Fighter II Champion Edition).
* Les ROM sets du BIOS, qui sont les ROM communes utilisées par tous les jeux d'une même machine (comme Neo-Geo MVS). Ce sont les programmes utilisés au démarrage de la machine, et qui exécutent ensuite le logiciel.

## Statut légal

La possession et la distribution d'un émulateur, comme MAME, sont légales aux États-Unis, à la condition d'être distribué seul sans ROM. Certaines compagnies, dont Sony, ont tenté d'empêcher la distribution d'émulateurs en justice, mais leurs tentatives furent infructueuses. Pour l'instant, aucune action en justice n'a été prise à l'encontre de l'équipe du projet MAME. Toutefois, bien que l'émulation soit légale, les ROM sont soumises aux droits d'auteurs.

## Licence

MAME est un programme à code source ouvert et gratuit. Il est distribué sous une licence BSD modifiée depuis le 20 mai 2015.
Avant cette date, il possédait sa propre licence, qui n'était pas considéré comme une licence libre par la Free Software Foundation, car des contraintes sur la redistribution et sur la vente existaient.
Le code source, pouvait être librement redistribué et modifié sous réserve :
* d'une utilisation non commerciale ;
* d'une consultation possible des codes sources modifiés (open source) ;
* de ne pas toucher au code désactivant l'utilisation de certains jeux (pour empêcher que l'équipe de MAME ne soit dénoncée comme faisant concurrence a une vraie borne d'arcade).
Comme tous les projets open source, MAME encourage la contribution au projet plutôt qu'au développement de projets parallèles.
Depuis le 4 mars 2016, les conditions de modifications et de distribution sont modifiées. MAME passe sous licence GPL à partir de la 0.172.

## SDLMAME

SDLMAME est un portage de MAME utilisant la bibliothèque portable Simple DirectMedia Layer. SDLMAME suit les principes de développement suivants : le logiciel doit pouvoir s'exécuter sous Linux, Mac OS X, les systèmes de type Unix et d'autres systèmes d'exploitation pris en charge par la bibliothèque SDL, en ne modifiant le moins possible le code source de base. Ainsi, SDLMAME peut suivre l'évolution de MAME plus rapidement que des portages plus conventionnels comme MacMAME ou xMame. Les développeurs maintiennent également ce qu'ils appellent la « compatibilité Firefox », qui signifie que l'apprentissage de l'application sur un système d'exploitation est valorisée sur les autres plateformes, par exemple si un utilisateur sait utiliser MAME en ligne de commande sous Windows, il saura utiliser SDLMAME de cette façon sur toutes les autres plateformes.
Pour les développeurs de SDLMAME, le développement réalisé sur MAME est important : le fait d'avoir une version de SDLMAME rapidement à jour permet aux non utilisateurs de Windows de proposer des modifications directement sur le code de MAME. Par exemple, les développeurs de SDLMAME ont proposé des implémentations natives d'un débogeur avec interface graphique multi-fenêtrée pour MAME à la fois pour Linux, Unix et Mac OS X.
Depuis la version 0.136u1 (16 janvier 2010), SDLMAME est directement inclus dans MAME. Les sources ne sont donc plus disponibles séparément et sont intégrées aux sources de MAME.

### Plateformes compatibles

SDLMAME est officiellement compatible avec toutes les plateformes Linux, FreeBSD, Mac OS X 10.4 « Tiger » ou 10.5 « Leopard » (10.3 « Panther » fonctionne également bien que non officiellement pris en charge), sur les microprocesseurs d'architecture PowerPC et x86, 32 ou 64 bits. La plateforme Windows est également intégrée bien que n'ayant peu d'intérêt à être utilisée, l'implémentation de base de MAME fonctionnant nativement sous ce système.

### Auteurs du portage

Olivier Galibert a eu l'idée originale du portage et a réalisé la plupart des portages originaux. R. Belmont a pris part à ces portages et à la plupart des portages récents. Olivier Galibert a écrit la version Linux GTK+ du débogueur multi-fenêtré. Ernesto Corvi écrira la version Mac OS X Carbon. Hans de Goede a contribué à d'innombrables nettoyages, améliorations et optimisation du code source, et Tim Lindner a rendu le débogueur Mac OS X plus agréable à utiliser. Beaucoup de grandes améliorations ont été apportées par Couriersud et Antoine Mine, et presque tout le code OpenGL (Open Graphics Library) a été écrit par Sven Gothel. L'assurance qualité a été assurée par MooglyGuy et Firewave, parmi tant d'autres.
SDLMAME est actuellement maintenu par R. Belmont et Couriersud.