Tel qu'elle est fournie et comme nous avons pu le voir dans les précédents articles de la série, l'application MAME permet de lancer des jeux sans vraiment se soucier de certains réglages. Pourtant l'application offre toute une palette de configuration dont on va voir ici une toute petite partie dédiée aux réglages graphiques.
1/ Sélection du moteur de rendu vidéo
Nous n'avons pour l'instant touché à rien pour que l'affichage de MEWUI et des jeux fonctionne.
Si l'on cherche un peu dans le fichier de configuration, évidemment, nous trouvons à la ligne 253 l'information suivante.
video auto
Par défaut, MAME choisit lui même le moteur graphique utilisé. La raison est toute simple, en choisissant elle-même du moteur, elle s'assure que dès son installation, l'application sera fonctionnelle sur toutes les plateformes. En effet, MAME est disponible sur de nombreuses plateformes, mais chacune d'entre elle dispose de moteurs graphiques différents.
Par exemple pour nous, sur macOS, c'est OpenGL qui est utilisé par défaut car le moteur est disponible sur toutes les versions de macOS, de Mac OS X (voir de Mac OS 9 si l'on souhaite remonter plus loin dans le temps). Sur Windows c'est Direct3D qui est utilisé, un moteur propriétaire de Microsoft qui n'est disponible que sur Windows ou les consoles de jeux de la société. Enfin, sur Linux, aucun moteur n'est garanti d'être installé, c'est donc le mode de rendu logiciel qui est utilisé.
Evidemment, il est possible d'utiliser le moteur de son choix, il suffit simplement de changer la configuration du logiciel.
Voici les choix disponibles :
- auto : Mode par défaut, MAME choisit le mode de rendu le plus compatible pour la plateforme.
- d3d : Le mode Direct3D utilise le plein potentiel des cartes graphiques actuelles, mais ce mode de rendu est réservé à la plateforme Windows.
- gdi : Le mode GDI est un vieux mode de rendu pour Windows, disponible avant l'avènement de Direct3D.
- opengl : Le mode OpenGL est la méthode de rendu par défaut sur macOS, elle utilise les librairies OpenGL, aussi disponibles sur Windows (en standard) et Linux (disponibles à l'installation).
- soft : Le mode de rendu logiciel (software) est certainement le plus compatible, mais aussi le moins performant. Tous les éléments graphiques sont calculés par l'application et donc le CPU, au lieu de déporter certains de ces calculs sur la carte graphique.
- accel : Il s'agit du mode utilisant les APIs des libraries SDL, c'est ensuite la librairie SDL qui optimisera l'affichage selon les capacités de la machine.
- none : Ce mode un peu particulier, propose de n'avoir aucun affichage graphique. Il permet cependant de faire des benchs sur l'émulation des puces sans avoir d'altération à cause de l'affichage.
- bgfx : Ce mode est le plus complexe que l'on puisse trouver pour MAME. Le mode de rendu bgfx propose d'ajouter des filtres permettant de retrouver un résultat graphique plus proche des bornes arcades originales en reproduisant, si besoin, l'affichage d'un tube cathodique. Le mode de rendu bgfx est cependant plus compliqué à configurer et donc à utiliser. Le prochain article sera dédié à ce mode de rendu.
2/ Autres éléments de configuration vidéo
Sous le réglages du mode de rendu il y a d'autres éléments de configuration. Moins importants, ils peuvent néanmoins avoir un intérêt pour certains amateurs ou pour certains jeux.
- numscreens : Indique le nombre d'écrans à émuler. En effet, certains disposent de plusieurs écrans et si votre configuration aussi, vous pourrez en profiter pleinement. L'utilisation de cette configuration est optimale dans la configuration spécifique à chaque jeu. La valeur par défaut est 1, pour n'avoir qu'un seul écran actif.
- window : Indique si l'émulateur doit s'ouvrir en mode fenêtré. L'utilisation de cette configuration est optimal lors du lancement de l'émulateur ou d'un jeu directement en ligne de commande.
mame -window
La valeur par défaut est 0, pour laquelle MAME s'ouvre donc en mode plein écran.
- maximize : À utiliser uniquement en mode fenêtré. La commande maximize permet d'obtenir une fenêtre occupant tout l'écran.
mame -window -maximize
Par défaut, la valeur de maximize est à 1. Dans le cas d'une utilisation en ligne de commande, pour avoir l'effet inverse, il faut utiliser
mame -window -nomaximize
- waitvsync : Ce réglage MAME active la synchronisation verticale. Elle force l'émulateur à synchroniser le rafraichissement du jeu avec celui de l'écran. Cela permet d'afficher uniquement des images entières et d'éviter le phénomène qui arrive parfois sur certaines configurations ou certaines machines (en particulier les jeux dont l'écran est vertical ou avec un fort scrolling). Cette option est à utiliser uniquement en cas de soucis d'affichage car elle peut provoquer une petite perte d'images par seconde.
_ Sur macOS, il est déconseillé de ne pas activer cette option, car les drivers graphiques de macOS dont on connait la réputation ne permettent pas une synchronisation sans grosse perte.
_ Sur macOS ou en mode plein écran en général il est préférable d'utiliser le réglage suivant :
triplebuffer 1
- syncrefresh : Cette option tente de corriger les mêmes problèmes d'affichage que waitvsync. Au lieu d'attendre à chaque image, il va tenter de synchroniser les images par seconde de MAME avec le rafraichissement de l'écran. En cas de trop gros décalage entre la vitesse originale de l'émulation et le rafraichissement effectif, cela peut provoquer un décalage du son. A éviter, sauf si l'on sait exactement ce que l'on fait.
- monitorprovider : Ce réglage permet de choisir le mode gestion de la résolution de l'écran. La valeur par défaut est auto, et il n'y vraiment pas lieu de changer cette valeur.
3/ Configuration multi-écrans
La partie "OSD PER-WINDOW VIDEO OPTIONS" permet de configurer plus précisément les multiples écrans de l'émulateur, pour les machines qui en disposent.
Cette partie ne sera donc utile uniquement si vous souhaitez configurer MAME sur plusieurs écrans.
Il y a 4 valeurs à configurer, mais qui se répètent 5 fois, pour supporter jusqu'à 5 écrans ou fenêtres d'émulation.
- screen : Permet d'indiquer quelle fenêtre va sur quel écran. Les écrans doivent être écris tel que .DISPLAYn où n est un entier définissant l'index de l'écran.
- aspect : Permet de définir l'aspect de l'écran. En conservant la valeur auto, MAME va utiliser l'aspect indiqué via la machine.
- resolution : Permet de définir la résolution sur chaque écran. Ainsi vous pouvez adapter les tailles comme vous le souhaitez. L'information doit être marquée avec la largeur et la hauteur séparées d'un x. En option, vous pouvez ajouter le taux de rafraichissement, précédé d'un @.
- view : Définit comment les écrans doivent être placés et gérés. Il est très difficile d'obtenir les valeurs disponibles pour cette configuration.
Par défaut, toutes les valeurs sont définies à "auto".
En utilisant la version direct, sans numéro, cela configurera l'ensemble des écrans/fenêtres créés.
4/ Configuration plein écran et accélération vidéo
La configuration en mode plein écran se résume à une seule même value.
- switchres : il permet de forcer le changement de résolution en mode plein écran. Par défaut elle est à 0. Si cette option est activé, il faudra indiquer la résolution à appliquer via le réglage resolution vu dans la section précédente.
Ensuite, il y a deux éléments de configuration en relation avec l'accélération vidéo.
- filter : Active un filtre bi-linéaire afin d'améliorer le rendu graphique. Bien souvent, la résolution native des écrans cathodiques des bornes d'arcade est bien inférieure à la résolution de nos écrans modernes. Le filtre sert à lisser l'image afin que le résultat ne soit pas un gros amas de pixels. Par défaut, le filtre est activé, mais attention, sur macOS, le filtre n'est actif qu'avec le mode vidéo OpenGL. En mode "accel", et donc via la librairie SDL, c'est la librairie qui s'occupera d'optimiser l'affichage.
- prescale : Indique la taille à laquelle le rendu est pré-calculé. Par défaut à la valeur 1, MAME calcule l'affichage à la taille d'origine du jeu. Il est possible d'augmenter la taille de pré-calcul avant le passage par les filtres et autres shaders.
5/ C'est bon, on a fait le tour ?
Et bien non, au prochain article nous verrons les configurations spécifiques au moteur de rendu bgfx.