Ayant récemment mis en place une Mame-cab avec Mala FE et désireux de faire tourner côte à côte Mame, ZiNc, U64emu, M2Emulator, CPS3Emulator, Demul, Supermodel, ... pour tirer parti des émulateurs les plus performants pour chaque système, j'ai été contraint de bidouiller un peu tout ce beau monde pour concevoir des listes multi-émulateurs (qui n'existent pas nativement dans Mala).
Pour celà, j'ai suivi le topic de BYOAC :
http://forum.arcadecontrols.com/index.php?topic=68419.0 et je me permet de vous en donner ma version.
Le principe :Utiliser un seul "émulateur virtuel" dans Mala qui sera paramétré dans le "MAME Config" de Mala et qui permettra de lancer le bon émulateur en fonction de la rom choisie.
Cet émulateur est un fichier de commande qui fera le switch d'émulateur en fonction d'un critère unique : l'emplacement de la Rom.
L'avantage principal est que la "Main Games List" de Mala est unique et contient toutes les roms de tous les émulateurs.
Première étape - tri des roms :Il s'agira tout d'abord de trier ses roms en sous répertoires en fonction de l'émulateur sur lequel on veut l'exécuter.
Pour ce faire, je ne peux que vous recommander d'utiliser "Romcenter" qui permet (entre autre) de déplacer les fichiers roms valides pour un émunateur choisi :
http://www.romcenter.com/Attention, une roms ne peut se situer à deux endroits différents sous peine de lancer un émulateur non prévu.
Deuxième étape - Configuration des émulateurs:Tout d'abord, je suggère de placer tous les émulateurs dans un répertoire spécifique, celà facilite la configuration du LaunchEmu.cmd (voir plus bas)
Maintenant que les Roms sont dans un répertoire spécifique, il va falloir configurer chaque émulateur pour qu'il lance ses roms en ligne de commande pour tenir compte de cet emplacement.
Je ne vais pas m'éterniser sur ce sujet car celà dépend vraiment de chaque émulateur.
Sachez simplement que
- pour CPS3emulateur et M2emulator, celà se trouve dans le fichier emulator.ini.
- pour ZiNc, c'est un fichier qui s'appelle zinc.cfg et/ou zincconfig.cfg
- pour Demul, c'est un fichier qui s'appelle demul.ini.
vous lirez dans l'annexe comment configurer M2Emulator (c'est pareil pour CPS3emulateur et Demul), Zinc et U64emu pour lancer les jeux en ligne de commande.
Troisième étape - Configuration de Mala:Dans les options de Mala, nous allons configurer l'émulateur Mame de la manière suivante
- Indiquer le fichier "LaunchEmu.cmd" dans l'exécutable Mame
(1)- Référencer le fichier XML listant les jeux émulés par notre émulateur Virtuel
(2) (cf Remarques supplémentaires ci-dessous)
- Spécifier l'emplacement de nos roms
(3) . Attention, il faut bien préciser le répertoire parent en cochant la case "Search in subfolders"
(4)- Préciser qu'on envoi le nom de la rom (%rom%) mais aussi son emplacement (%path%) dans la ligne de commande
(5) . Attention, il faut un espace entre %rom% et %path%, ce sont deux arguments différents
Lorsque cette configuration de Mala sera validée, Mala vous demandera s'il faut refraichir la liste "Main game List". Il faut évidemment accepter. Ce rafraichissement de la liste principale devra être effectuée si vous déplacez des roms plus tard (pour optimiser le choix de l'émulateur par exemple).
quatrième étape - "L'émulateur virtuel" LaunchEmu.cmd :Créez dans votre répertoire contenant les émulateurs un fichier de commande LaunchEmu.cmd. En voici un exemple de contenu
@echo off
SET EMUPATH=I:\Jeux\Emulation
SET ROMPATH=%EMUPATH%\_ROMS
SET EXEPATH=%EMUPATH%\_EMULATEURS
if "%2" == "%ROMPATH%\M2Emulator" goto m2
if "%2" == "%ROMPATH%\pc_games" goto pc_games
if "%2" == "%ROMPATH%\Daphne" goto daphne
if "%2" == "%ROMPATH%\FBA" goto fba
if "%2" == "%ROMPATH%\ZiNc" goto zinc
if "%2" == "%ROMPATH%\Raine" goto raine
if "%2" == "%ROMPATH%\Ultra64" goto u64
if "%2" == "%ROMPATH%\CPS3Emulator" goto cps3emulator
if "%2" == "%ROMPATH%\Demul_naomi" goto demul_naomi
if "%2" == "%ROMPATH%\Demul_dc" goto demul_dc
if "%2" == "%ROMPATH%\Demul_aw" goto demul_aw
if "%2" == "%ROMPATH%\SuperModel" goto supermodel
cd %EXEPATH%\Mame_0.143b
mame.exe %1
goto emuLaunched
:u64
cd %EXEPATH%\U64emu
if "%1" == "kinst" Copy closemul_(k1).ini closemul.ini
if "%1" == "kinst2" Copy closemul_(k2).ini closemul.ini
closemul.exe ESC u64emu.exe
goto emuLaunched
:cps3emulator
cd %EXEPATH%\cps3emulator
closemul.exe emulator.exe %1
goto emuLaunched
:fba
cd %EXEPATH%\FBA
fba.exe %1
goto emuLaunched
:raine
cd %EXEPATH%\Raine
Raine32.exe -nogui -g %1
goto emuLaunched
:zinc
cd %EXEPATH%\ZiNc
cmd-launch7.exe %1
goto emuLaunched
:m2
cd %EXEPATH%\M2Emulator
closemul.exe emulator.exe zip %1 rar
goto emuLaunched
:demul_naomi
cd %EXEPATH%\Demul
closemul.exe demul.exe -run=naomi -rom=%1
goto emuLaunched
:demul_dc
cd %EXEPATH%\Demul
demul.exe -run=dc -rom=%1
goto emuLaunched
:demul_aw
cd %EXEPATH%\Demul
closemul.exe demul.exe -run=atomiswave -rom=%1
goto emuLaunched
:supermodel
cd %EXEPATH%\SuperModel
supermodel.exe %2\%1.zip
goto emuLaunched
:pc_games
cd %EXEPATH%\pc_games
%1.cmd
goto emuLaunched
:daphne
SET DAPHNE=%EXEPATH%\daphne\daphne.exe
cd %EXEPATH%\daphne
if "%1" == "lair" start/wait %daphne% dle20 vldp -framefile %EXEPATH%\daphne\framefile\lair.txt -fullscreen -blank_skips -blank_searches -preset 1
if "%1" == "lair2" start/wait %daphne% lair2 vldp -framefile %EXEPATH%\daphne\framefile\lair2.txt -fullscreen -blank_skips -blank_searches -preset 1
if "%1" == "galaxy" start/wait %daphne% galaxy vldp -framefile %EXEPATH%\daphne\framefile\GalaxyRanger.txt -fullscreen -blank_skips -blank_searches -preset 1
if "%1" == "ace" start/wait %daphne% ace vldp -framefile %EXEPATH%\daphne\framefile\ace.txt -fullscreen -blank_skips -blank_searches -preset 1
goto emuLaunched
:emuLaunched
exit
C'est ici que se présente le coeur même de l'astuce : en fonction de l'emplacement de la rom, l'émulateur ad-hoc est lancé.
Vous pouvez vérifier le bon fonctionnement de notre émulateur virtuel en l'appelant directement en ligne de commande
LaunchEmu.cmd mslug2 I:\Jeux\Emulation\_ROMS\FBA
pour lancer la rom Metal Slug 2 avec FBA
Vous pouvez maintenant peupler vos listes de jeux (par catégorie par exemple) sans vous préoccuper de l'émulateur
--------------------------
Remarques supplémentaires : * Si la rom n'est pas émulée par Mame, il faut ajouter des lignes la décrivant dans le fichier d'info "gameList.xml"
<game name="ace2">
<description>Space Ace</description>
<year>1984</year>
<manufacturer>Cinematronics</manufacturer>
<driver status="good" emulation="good"/>
</game>
* De même, si Mame n'émule pas bien une rom, et que vous choississez de n'afficher que les "Working Games", il faudra modifier son statut d'émulation en good ; <driver status="good" emulation="good"/> pour que le jeu apparaisse (typiquement, c'est le cas des jeux Model 2)
<game name="vf2" sourcefile="model2.c">
<description>Virtua Fighter 2 (Version 2.1)</description>
<year>1995</year>
<manufacturer>Sega</manufacturer>
<driver status="good" emulation="good"/>
</game>
* De manière générale, il est bon de créer un fichier xml contenant les descriptifs de ces roms non émulées parfaitement par Mame mais que vous désirez faire tourner avec un autre émulateur (Daphne, M2emulator, ...). La raison de ce fichier supplémentaire est simple : gameList.xml peut être régénéré involontairement/maladroitement et toutes vos modifications seraient perdues.
Pour obtenir un fichier xml contenant mame.xml et votre config supplémentaire (additional.xml), lancez la commande
copy mame.xml+additional.xml gameList.xml
et précisez ce nouveau fichier "gameList.xml" dans le "Rom Info File (XML)" (Mame config) de Mala.
* Les GameLists maison ne sont pas corrigées à rebours. Il vous faudra malheureusement les refaire avec le nouvel emplacement des roms. Il en sera de même si vous "déplacer" une roms vers un autre émulateur : il faudra supprimer puis à nouveau ajouter le jeu aux listes dans lesquelles vous voulez la voir apparaitre.
* Si le jeu à émuler ne se lance pas avec une rom zippée (Daphne, u64emu), il vous faudra créer un faux fichier zip dans le répertoire ad-hoc pour que le jeu apparaissent dans la Main List.
-------
L'annexe expliquant la config de M2Emulator, ZiNc et de U64emu va suivre.