[TUTO]Apprendre a patcher et compiler l'émulateur MAME

Tous les tutos concernant les logiciels annexes à Hyperspin (Joy2Key, LedBlinky, Windows...).

Modérateurs : Nabubokon, Porko, Thesalan, Modérateurs

Répondre
Avatar de l’utilisateur
kefran69
Maître
Maître
Messages : 3907
Inscription : 05 mai 2013 - 01:00
Localisation : Villefranche sur Saône
A remercié : 46 fois
A été remercié : 615 fois

Apprendre a patcher et compiler l'émulateur MAME

Message par kefran69 » 04 mars 2018 - 13:54

Salut à tous, je vous propose un tuto que je devais refaire depuis longtemps :)
Voici en plusieurs étapes comment apprendre à compiler soit-même l'émulateur MAME à partir des sources.
Il est vrai qu'il est très simple de trouver n'importe quelle version de mame sur le net déjà compilée mais bon parfois on ne peut résister à l'envie de faire les choses soit même.

PETIT RECAP :
- pour une première utilisation respecter les étapes 1 à 6
- pour les utilisations suivantes vous pouvez passer directement à l'étape 4
- vérifier régulièrement l'étape 3 (mise a jour) pour éviter les erreurs


1/ LE NECESSAIRE
Télécharger l'environnement MinGW pour compiler selon votre Windows 32 ou 64 bit
- msys32-2017-12-26.exe Si vous êtes sur Windows 32-bit pour compiler uniquement des versions 32-bit
- msys64-2017-12-26.exe Si vous êtes sur Windows 64-bit pour compiler uniquement des versions 64-bit

2/ INSTALLATION
a- Extraire le contenu de l'archive à la racine du disque C:/ (cela peut prendre pas mal de temps) ce qui devrai vous donner selon la version téléchargée C:/msys32 ou C:/msys64

b- Executer une première fois MinGW avec le fichier win32env.bat qui se trouve à la racine de C:/msysXX attendez quelques secondes puis fermer l'invité de commande

c- Installer l'environnement GIT pour télécharger les sources de l'émulateur plus tard. Pour cela éxecuter win32env.bat puis copier/coller la commande suivante :
code
git config --global core.autocrlf true

Patienter un court instant jusqu'a être revenu à la ligne C:\msysXX\src>

d- Sans fermer l'invité de commande nous allons maintenant télécharger le nécessaire pour donner la possibilité à MinGW de pouvoir patcher les sources.
Copier/coller la commander suivante :
code
pacman --needed -Sy patch

Confirmer avec "Y" lorsque cela vous sera demandé. A la fin du processus fermer l'invité de commande.

3/ MISE A JOUR
a- Lancer l'invité avec win32env.bat puis copier/coller la commander suivante :
code
pacman -Sy
Si nécessaire des fichiers seront téléchargés puis installer pour mettre a jour MinGW. Patienter jusqu'au retour à la ligne C:\msysXX\src>

b- Sans fermer l'invité copier/coller maintenant cette commande :
code
pacman -S bash pacman msys2-runtime
Confirmer avec "Y" autant de fois que nécessaire puis patienter jusqu'au retour à la ligne C:\msysXX\src> ensuite refermer l'invité.

c- Ouvrez à nouveau win32env.bat puis copier/coller cette commande :
code
pacman -Su
Confirmer avec "Y" autant de fois que nécessaire puis patienter jusqu'au retour à la ligne C:\msysXX\src> ensuite refermer l'invité.
Ré-ouvrez win32env.bat puis recommencer ce point (c) jusqu'à qu'il n'y ai plus aucunes mise à jour.

4/ LES SOURCES
Procédons au téléchargement des sources (GIT) officielles de l'émulateur MAME.

Ouvrir MinGW avec win32env.bat puis copier/coller la commande suivante :
code
git clone https://github.com/mamedev/mame.git" onclick="window.open(this.href);return false;
Confirmer avec "Y" autant de fois que nécessaire puis patienter jusqu'au retour à la ligne C:\msysXX\src> ensuite refermer l'invité.

Les sources seront téléchargées dans : C:\msysXX\src\mame

Il peut être utile de conserver un backup de ce dossier "mame" qui contiens les sources non seulement en cas de problèmes mais également si vous souhaitez compiler des builds non-officielles, un sujet que j'évoquerai lors d'une prochaine mise à jour du tuto.

5/ PATCHER (étape optionnelle)
Voici une étape optionnelle mais qui pourra être utile à certains. C'est à dire patcher les sources de l'émulateur avant de compiler pour faire quelques modifs en l'occurrence ici je vais évoquer le patch "NoNag" qui va nous servir a supprimer les fenêtres d'avertissements avant le lancement d'un jeu.
Auparavant il existait de nombreux patch différents pour permettre d'ajouter des fonctions qui n'étaient pas présentes dans les builds officielles comme direct input, overclock etc...
Mais depuis quelques temps ces fonctions ont été ajoutées dans les sources sauf une le "NoNag" car les devs officiels sont totalement contre car cela permet d'avoir des infos utiles avant le lancement du jeu (fonctionnel ou pas etc...) Bref, voici si vous le souhaitez comment ajouter le patch "NoNag" aux sources de MAME.

Rendez-vous tout d'abord à l'adresse suivante : Patch NoNag
a- Descendez au bas de la page et télécharger le dernier fichier "suppression_0xxu0.txt" mis a disposition en faisant clic droit enregistrer sous...

b- Enregistrer le fichier à la racine du dossier C:\msysXX puis renommer ce fichier "suppression_0xxu0.txt" en "nonag.diff"
Cela doit vous donner normalement C:\msysXX\nonag.diff

c- Ouvrez l'invité MinGW avec win32env.bat puis entrer la commande :
code
cd mame
MinGW devrait maintenant pointer sur le dossier des sources MAME ce qui dot vous donner à l'écran C:\msysXX\src\mame>

Copier/coller la commande suivante :
code
patch --binary -p0 -E <C:/msys64/nonag.diff <----- remplacer msys64 par msys32 si c'est votre cas
Confirmer avec "Y" si nécessaire et attendre jusqu'au retour à la ligne C:\msys64\src\mame>

Les sources sont maintenant patchées "NoNag", fermer l'invité de commande.

6/ COMPILER
Etape finale qui va permettre de compiler un executable de l'émulateur MAME en fonction de vos choix selon quelques paramètres. A la fin du processus, dans les 3 cas a, b ou c vous retrouverez le .exe de votre émulateur fraîchement créé dans le dossier suivant : C:\msysXX\src\mame>

Vous avez la possibilité de créer 3 differentes versions au choix MAME full, MAME arcade only ou MESS et aussi d'optimiser la rapidité de la compilation en fonction de votre processeur.
La variante qui va changer en fonction de votre processeur est la suivante : -j a laquelle il faudra ajouter le chiffre du nombre de coeur que votre processeur possède en ajoutant +1.
Dans les exemples ci-dessous nous seront donc sur la base d'un processeur quad-core avec la variante -j5 qui sera a modifier selon votre cas.

Le temps de compilation est très variable selon la puissance de votre système soyez patient.

Ouvrez l'invité MinGW avec win32env.bat puis pointer sur le dossier source en entrant la commande :
code
cd mame
Vous devriez voir à l'écran C:\msysXX\src\mame>

a- Compiler une version de MAME " complète ARCADE + SOFTWARE LIST

Copier/coller la commande suivante :
code
make -j5 SYMLEVEL=1 SYMBOLS=1 STRIP_SYMBOLS=1 NOWERROR=1
b- Compiler une version MAME qui contient les jeux ARCADE uniquement

Copier/coller la commande suivante :
code
make -j5 SUBTARGET=arcade SYMLEVEL=1 SYMBOLS=1 STRIP_SYMBOLS=1 NOWERROR=1
c- Compiler une version MAME (MESS) qui contient les jeux SOFTWARE LIST uniquement

Copier/coller la commande suivante :
code
make -j5 SUBTARGET=mess SYMLEVEL=1 SYMBOLS=1 STRIP_SYMBOLS=1 NOWERROR=1
A la fin de chaque compilation entrer la commande suivante pour nettoyer les résidus et éviter des erreurs lors des compilations suivantes (cela n'efface pas les sources) :
code
make clean
Lors d'une prochaine MAJ j'ajouterai les possibilités de compiler MAMEUI, MESSUI mais aussi encore GROOVYMAME..

Avatar de l’utilisateur
maximumstyle
Apprenti
Apprenti
Messages : 17
Inscription : 31 juil. 2015 - 18:11

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par maximumstyle » 05 sept. 2018 - 19:55

merci pour ce topic
j ai plus qu à essayer

Avatar de l’utilisateur
wildpumpk1n
Connaisseur
Connaisseur
Messages : 498
Inscription : 04 févr. 2018 - 19:01
Localisation : Région Parisienne
A remercié : 131 fois
A été remercié : 72 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par wildpumpk1n » 27 sept. 2018 - 09:37

Je me lance dans la galère aussi :) Merci à toi pour ce tuto :)

Avatar de l’utilisateur
Dodfr
noob
noob
Messages : 4
Inscription : 22 déc. 2018 - 00:44
A été remercié : 1 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par Dodfr » 22 déc. 2018 - 11:48

Bonjour,

J'aurais une question à ce sujet, actuellement MAME c'est un EXE de +200Mo et je me demandais s'il y avait moyen d'en produire une version plus légère aux petits oignons qui ne supporterait qu'un certain nombre de jeux, pas de clones du coup ça élimine aussi pas mal de librairires pour de CPU / copro son / copro vidéo ?

Il y aurait un moyen simple pour faire ça ? un ou plusieurs fichiers de conf ou sources à modifier pour "retirer" ce qui ne m'intéresse pas sans trop me prendre la tête ? je n'ai pas encore regardé le code source de MAME mais avant de commencer à gratter je pose la question au cas-où.

Faut aussi je trouve comment séparer les les clones pour les déplacer dans un répertoire à part et ne garder que les versions originales dans le but encore une fois de faire une version de MAME allégée, peut-être que CLRMamePro pourrait faire ça en modifiant le .DAT

cdlt.
Dernière modification par Dodfr le 22 déc. 2018 - 13:37, modifié 1 fois.

Avatar de l’utilisateur
LoloZ
Passionné
Passionné
Messages : 152
Inscription : 04 juin 2016 - 04:42
Localisation : Clermont-Ferrand
A remercié : 92 fois
A été remercié : 34 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par LoloZ » 22 déc. 2018 - 13:28

Salut !

J'ai quelques questions à poser, en effet MAME est un des rares émulateur dont je n'ai pas approfondi le sujet, bien que je l'utilise de manière basique, par manque de connaissances...

J'ai pourtant tenté de me renseigner sur plusieurs site, mais ça reste flou...

J'aurai aimé savoir ce qu'apporte réellement de faire les mises à jour de MAME, en effet je comprend bien que ça apporte surement de nouveau jeux compatible, mais on lis que certains jeux deviennent eux incompatible, ces derniers sont'ils des clones ou différentes rev (donc pas très graves) ? Faut il garder alors une ancienne version de MAME et la nouvelle ?
Pourquoi utiliser MAME plutôt que d'autres ému spécialisé ?

J'espère que mes questions sont pas trop redondantes, j'avoue ne pas avoir trouvé de réponses clair sur la toile et c'est surement ce qui me freine à m'essayer à ce genre de manip ! ^^

Avis aux experts de la bête, merci pour vos réponses ! :)

Et bonnes fêtes à tous !!!

Avatar de l’utilisateur
Dodfr
noob
noob
Messages : 4
Inscription : 22 déc. 2018 - 00:44
A été remercié : 1 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par Dodfr » 22 déc. 2018 - 13:48

@loloz où as-tu lu que les version plus récentes pouvaient rendre un jeu incompatible ? tu as un exemple ?

Ca fait presque 20 ans que je connais MAME et je vois qu'au fil du temps il s'est mis à supporter bien plus de hardware que les bornes d'arcade y compris semble-t-il des ordis du genre C64 ou Amiga et je dois bien avouer que je n'ai pas vraiment suivi le sujet car mon intérêt pour MAME reste les bornes d'arcade des années 80 d'où ma question précédente pour me faire une version allégée recompilée dédié à cette époque.

Après je dirais que ça dépend si tu es collectionneur ou pas (j'avoue que j'ai tendance à suivre les version (sans CHD) , soit tu veux tout et tu suis les versions et les nouvelles roms soit tu te contentes de ce que tu veux réellement auquel cas tu peux t'arrêter à une version spécifique.

Pour ce qui est de garder les anciennes versions là encore tout dépend de l'intérêt, j'ai gardé quelques versions intermédiaires comme la 0.70 qui tient en 6Go ou 0.103 qui tient en 13Go (sans CHD) et j'ai même une version encore plus ancienne qui tient en un seul CD :-)

Avatar de l’utilisateur
LoloZ
Passionné
Passionné
Messages : 152
Inscription : 04 juin 2016 - 04:42
Localisation : Clermont-Ferrand
A remercié : 92 fois
A été remercié : 34 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par LoloZ » 22 déc. 2018 - 14:10

@Dodfr j'ai pas d'exemples concret, je l'ai lu sur plusieurs tuto ou site d'ému traitant du sujet... et je me demande si ça fait référence au set de rom qu'il faut retélécharger pour correspondre à la dernière version (ça j'en ai connaissance) ou si certains sont uniquement valide avec d'anciennes versions, c'est pas vraiment expliqué, c'est ce qui me pousse à demander aux experts ! ^^

Pour moi aussi il me semblait que l'intérêt principal de MAME est les bornes des années 80/90, c'est pour ça que je me pose la question de l'utilité des mise à jours...?

Après pour ce qui est de se que je suis, je dirait que j'ai des tendances collectionnite, mais plutôt best setter dans l'âme, j'aime avoir les jeux les plus emblématique (qu'ils soit bon ou particulièrement mauvais^^) et surtout les faire découvrir sur des parties entre amis... donc dans le fond j'ai pas besoin de tout, c'est pour le partage, ambiance, rigolade et culture du JV. ;)

Du coup tu garde les anciennes versions par soucis de place, il n'y à pas de soucis de compatibilité si tu met tout à jour si je comprend bien ?

Avatar de l’utilisateur
Dodfr
noob
noob
Messages : 4
Inscription : 22 déc. 2018 - 00:44
A été remercié : 1 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par Dodfr » 22 déc. 2018 - 15:03

LoloZ a écrit :Du coup tu garde les anciennes versions par soucis de place, il n'y à pas de soucis de compatibilité si tu met tout à jour si je comprend bien ?
Je garde les anciennes versions avec le jeux de roms qui va avec et j'y touche plus sinon car si tu as une rom plus récente ça peut poser problème et à l'inverse si tu as un MAME plus récent il risque de pas fonctionner avec la rom plus ancienne.

Parfois les roms sont "bidon" (pas de dump valide) mais elle est "simulée" via un bout de code lié au jeu, et après si le bon dump sort alors une mise à jour de MAME pourra retirer le simulacre de code pour cette rom et utiliser directement le nouveau dump, récemment les mecs ont même été jusqu'à passer une rom aux rayons X et au microscope puis la gratter à l'acide pour comprendre comment elle était constituée et c'est comme ça qu'une protection de jeux Taito a pu enfin être reproduite pour faire marcher d'un seul coup plusieurs jeux qui utilisaient la même protection et ne fonctionnaient pas avant.

Image

Image

Il faut savoir que MAME est un projet assez phénoménal mais qui reste somme toute très simple dans le concept avec d'un côté des modules d'émulation de divers processeurs centraux, processeurs sonores, graphiques et autres puces spécialisées dans certaines fonctions..., ensuite viennent les roms
plus ou moins bien recopiées (les fameux "dump") qui contiennent du code d'exécution et des ressources sonores et graphiques, parfois les roms sont protégées et on arrive pas à en lire le contenu correctement voir même à comprendre leur réel usage, parfois elles sont mal copiées ou endommagées, vient ensuite pour chaque jeu un module qui va mettre en corrélation les bon émulateurs processeurs et les roms en face avec éventuellement des "patchs" logiciels pour tenter de corriger les problèmes de dump. Côté émulateurs de processeurs et d'interfaces tous ne sont pas 100% terminés ou fiables et ils s'améliorent au fil du temps avec les nouvelles versions, parfois pour un jeu on aura par exemple pas d'émulateur pour le processeur sonore et du coup on passera par des fichier WAV directement enregistrés des hauts parleurs de jeu original.

C'est un boulot impressionnant que les contributeurs depuis 20 ans !

Avatar de l’utilisateur
LoloZ
Passionné
Passionné
Messages : 152
Inscription : 04 juin 2016 - 04:42
Localisation : Clermont-Ferrand
A remercié : 92 fois
A été remercié : 34 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par LoloZ » 29 déc. 2018 - 01:28

Hello !

Merci à toi pour toutes ces précisions @Dodfr ! :)

J'avais bien conscience du travaille de fourmis réalisé, rien que par la "veluvité"(oui je viens de l'inventer, dédicace aux auteurs de MAME!^^) de l'ému, mais ça dépasse encore plus ce que je pensais ! :D

Je me posais d'autres questions...

- Si je remplace mon MAME 0.162 actuel, par un dossier avec la dernière version et les bonnes roms bien sûr, je ne risque pas de perturber mon Hyperspin ? Les roms et l'exe ont gardé le même nom ?

- Du coup si c'est réalisable comme ça, peut on récupérer la configuration des touches de la version 0.162 à la 0.205 ?
(sachant que je n'ai pas de dossier "ctrl" dans MAME 0.162) cela passe t'il par la copie des fichiers ".cfg" ou ".ini" ?

- J'espère ne pas être trop relou mais j'aime bien les choses clair et comprendre ce que je fait ^^

Merci d'avance !

J'en profite pour vous souhaiter de bonnes fêtes !!!

Avatar de l’utilisateur
Dodfr
noob
noob
Messages : 4
Inscription : 22 déc. 2018 - 00:44
A été remercié : 1 fois

Re: Apprendre a patcher et compiler l'émulateur MAME

Message par Dodfr » 29 déc. 2018 - 11:10

je ne connais pas Hyperspin mais à priori c'est un lanceur d'émulateurs comme il en existe des tas d'autres il ne sert qu'à lancer MAME et donc ce qui est important c'est ce qu'il y a dans MAME.

Les noms ne changent pas c'est toujours mame.exe ou mame64.exe selon 32/64bits, les fichiers .cfg/.ini n'ont pas dû beaucoup évoluer, au pire si tu dupliques depuis une 0.162 il manquera peut-être les nouvelles lignes dans les fichiers mais ça ne sera pas gênant.

le fichier ctrlr est peut-être "sorti" du chemin interne de MAME car géré et paramétré par Hyperspin mais ça aussi c'est pas gênant d'ailleurs tu peux le vérifier en regardant dans le .ini le chemin indiqué sur la ligne "ctrlrpath".

Allez... c'est parti pour 5 minutes de Moon Patrol du coup :-)

Répondre

Revenir à « Tutos Logiciels Annexes »