Dans la jungle, terrible jungle
L'émulation Mame n'est pas une chose simple
Pour ce que j'en ai compris (les spécialistes corrigeront d'eux même), Mame est un programme unique, un fourre-tout, dont le but est de faire fonctionner une ROM passée en paramètre.
Mais ce programme est un simple exécutable, et non un lanceur couplé à une pelletée de DLLs chacune dévolue à l'émulation d'un processeur particulier - vidéo ou audio - de borne d'arcade.
De fait, il doit tout gérer en interne, ce qui en fait une grosse usine à gaz plus ou moins optimisée.
Lorsqu'une nouvelle ROM est déplombée, ou qu'un nouveau processeur de borne est émulé, une nouvelle version de Mame est compilée puis distribuée.
Aujourd'hui, Mame est en version 0.115, pour 115 versions distribuées (sans compter les Beta). Chacune ayant amené son nouveau processeur émulé, ou sa rom bidule nouvellement promue du status NOT WORKING à WORKING, ou la correction d'un disfonctionnement.
Dans le meilleur des mondes, la version 0.115 est donc la meilleure release, malheureusement, une correction ou un ajout dans la boucle de traitement géante de cet émulateur monolythique, amène parfois une régression sur la qualité de l'émulation de tel ou tel processeur de borne, ou de telle ou telle rom de jeu en particulier.
A priori je dirait même que si la puissance processeur de la machine sur laquelle on fait tourner Mame n'évolue pas proportionnellement à la "prise de poids" de l'émulateur, on perd en qualité avec le temps.
Pour couronner le tout, le code source étant fourni, certains passionnés ont recompilé eux même une version de Mame. Dans le meilleur des cas il ne s'agit que de changements cosmétiques, d'améliorations de l'interface de sélection des roms. Dans d'autres cas, ces versions sont presque réécrites, corrigeant certains bugs, améliorant le rendu d'un jeu en particulier, supprimant carrément des pans de codes entiers lorsqu'il concernait des émulations qui ne les interessaient pas, ou ajoutant des corrections non-officielles.
Pour une même release de Mame, on trouve par exemple mame, mame32, Houba32k, MamePlus, AdvanceMame, ZetaMame32, WolfMame, Mame32FX, Zinc, Raine, et j'en passe.
J'ai donc fait quelques tests, aidé par mon équipe de beta-testeurs officiels.

Et maintenant ? Je joue comment à World of warcraft hein ?
J'ai comparé le rendu de quelques jeux dont l'émulation n'était pas parfaite sur différentes machines, et avec différentes versions de Mame.
Le résultat est sans appel :
C'EST LE BORDEL MON ADJUDANT.
Exemple :

Ghosts'n Goblins sous Mame32 0.115a Officiel

Ghosts'n Goblins sous Houba32k 0.109
En gros, aucune version n'est ultime, chacune apportant son lot d'améliorations et de régressions.
A moins de gaver la borne d'arcade avec un P4 3GHz / Geforce 7900 / Audigy, il faut faire des concessions.
Certains jeux sont émulés à la perfection, d'autres ont le son qui crachotte ou qui fait de l'écho avec un Mame32, pas avec un Houba32. Certains jeux s'exécutent au ralenti, d'autres à la bonne vitesse mais sans le son, etc, etc.
Heureusement, la finalité de mon projet n'est pas de faire tourner des jeux récents du genre Virtual Fighter ou Mortal Kombat, mais des jeux plus anciens, disons période 80-90.
Dans 90% des cas, l'émulation est correcte, ou nécessite juste quelques réglages sous Mame (réduction du sampling, frame skipping, etc)
edit du 16/10/2007 :
Depuis la version 0.117, l'ensemble du code a subit une amélioration notable. Le cas Ghosts'n Goblins par exemple, a été corrigé. Depuis cette 0.117, j'utilise la dernière version officielle en date, ça me simplifie grandement la gestion des cas particuliers.
Pour ce que j'en ai compris (les spécialistes corrigeront d'eux même), Mame est un programme unique, un fourre-tout, dont le but est de faire fonctionner une ROM passée en paramètre.
Mais ce programme est un simple exécutable, et non un lanceur couplé à une pelletée de DLLs chacune dévolue à l'émulation d'un processeur particulier - vidéo ou audio - de borne d'arcade.
De fait, il doit tout gérer en interne, ce qui en fait une grosse usine à gaz plus ou moins optimisée.
Lorsqu'une nouvelle ROM est déplombée, ou qu'un nouveau processeur de borne est émulé, une nouvelle version de Mame est compilée puis distribuée.
Aujourd'hui, Mame est en version 0.115, pour 115 versions distribuées (sans compter les Beta). Chacune ayant amené son nouveau processeur émulé, ou sa rom bidule nouvellement promue du status NOT WORKING à WORKING, ou la correction d'un disfonctionnement.
Dans le meilleur des mondes, la version 0.115 est donc la meilleure release, malheureusement, une correction ou un ajout dans la boucle de traitement géante de cet émulateur monolythique, amène parfois une régression sur la qualité de l'émulation de tel ou tel processeur de borne, ou de telle ou telle rom de jeu en particulier.
A priori je dirait même que si la puissance processeur de la machine sur laquelle on fait tourner Mame n'évolue pas proportionnellement à la "prise de poids" de l'émulateur, on perd en qualité avec le temps.
Pour couronner le tout, le code source étant fourni, certains passionnés ont recompilé eux même une version de Mame. Dans le meilleur des cas il ne s'agit que de changements cosmétiques, d'améliorations de l'interface de sélection des roms. Dans d'autres cas, ces versions sont presque réécrites, corrigeant certains bugs, améliorant le rendu d'un jeu en particulier, supprimant carrément des pans de codes entiers lorsqu'il concernait des émulations qui ne les interessaient pas, ou ajoutant des corrections non-officielles.
Pour une même release de Mame, on trouve par exemple mame, mame32, Houba32k, MamePlus, AdvanceMame, ZetaMame32, WolfMame, Mame32FX, Zinc, Raine, et j'en passe.
J'ai donc fait quelques tests, aidé par mon équipe de beta-testeurs officiels.
Et maintenant ? Je joue comment à World of warcraft hein ?
J'ai comparé le rendu de quelques jeux dont l'émulation n'était pas parfaite sur différentes machines, et avec différentes versions de Mame.
Le résultat est sans appel :
C'EST LE BORDEL MON ADJUDANT.
Exemple :
Ghosts'n Goblins sous Mame32 0.115a Officiel
Ghosts'n Goblins sous Houba32k 0.109
En gros, aucune version n'est ultime, chacune apportant son lot d'améliorations et de régressions.
A moins de gaver la borne d'arcade avec un P4 3GHz / Geforce 7900 / Audigy, il faut faire des concessions.
Certains jeux sont émulés à la perfection, d'autres ont le son qui crachotte ou qui fait de l'écho avec un Mame32, pas avec un Houba32. Certains jeux s'exécutent au ralenti, d'autres à la bonne vitesse mais sans le son, etc, etc.
Heureusement, la finalité de mon projet n'est pas de faire tourner des jeux récents du genre Virtual Fighter ou Mortal Kombat, mais des jeux plus anciens, disons période 80-90.
Dans 90% des cas, l'émulation est correcte, ou nécessite juste quelques réglages sous Mame (réduction du sampling, frame skipping, etc)
edit du 16/10/2007 :
Depuis la version 0.117, l'ensemble du code a subit une amélioration notable. Le cas Ghosts'n Goblins par exemple, a été corrigé. Depuis cette 0.117, j'utilise la dernière version officielle en date, ça me simplifie grandement la gestion des cas particuliers.
Publicité