Skip to content
CB-Emu sur Mac : trente ordinateurs d'échecs sous MAME 0.289

Laboratoire · émulation · octobre–novembre 2026

CB-Emu sur Mac : trente ordinateurs d’échecs sous MAME 0.289

Sur le PC du laboratoire, les ordinateurs d’échecs de CB-Emu jouent depuis des mois comme des moteurs UCI ordinaires. Les faire jouer sur un MacBook Pro M1 Max paraissait n’être qu’une affaire de recompilation : même MAME, mêmes ROM, même greffon. C’était compter sans les six années de MAME qui séparent les deux machines. Voici ce qui a changé entre MAME 0.220 et MAME 0.289, comment chaque machine a été remise d’aplomb, la panne qui a failli tout faire échouer, les trois machines qui résistent encore, puis ce qu’ont donné 510 parties de tournoi et l’étalonnage contre le PC : une quinzaine de machines jouent sous MAME 0.289 exactement comme sous MessChess, mais pas toutes.

Le point de départ

CB-Emu fait jouer d’anciens ordinateurs d’échecs (Mephisto, Saitek, Fidelity, Novag) dans l’émulateur MAME. Sur le PC, il s’appuie sur MessChess, une version de MAME 0.220 adaptée pour l’occasion, et sur un greffon écrit en Lua, chessengine, qui transforme chaque machine en moteur UCI. Le programme d’origine reste intact dans sa ROM : il ne sait rien d’UCI. Le greffon fait ce que ferait un joueur assis devant l’appareil. Il pose les pièces sur l’échiquier à capteurs, appuie sur les touches et lit le coup de la machine sur ses diodes ou sur son afficheur.

Entre le greffon et l’interface de tournoi, le laboratoire ajoute un relais, mess_uci.py. Il traduit la pendule en niveau de jeu de la machine, envoie l’ordre d’arrêt au bon moment et coupe une machine qui ne répond plus. Sur le Mac, MessChess n’existe pas. On part donc du MAME 0.289 officiel, installé par Homebrew, et on y porte le greffon et le relais.

Arbitre tournoi_mac.py python-chess · 60/900 Relais UCI mess_uci.py pendule → niveau, arrêt MAME 0.289 greffon chessengine touches · capteurs · diodes ROM d’origine le programme de la machine, intact UCI UCI matériel émulé

Seuls le relais et le greffon savent qu’ils parlent à un tournoi. La machine, elle, voit un joueur qui appuie sur ses touches.

Six ans de MAME entre les deux

Le programme de chaque machine n’a pas bougé : ce sont les mêmes ROM. Ce qui a bougé, c’est la façon dont MAME expose le matériel émulé. Entre 0.220 et 0.289, beaucoup de pilotes ont été réécrits : les diodes ont changé de nom, les afficheurs d’ordre, certaines machines de nom. Le greffon lisait les diodes « 0.0 », « 0.1 »… là où il les trouvait en 0.220. En 0.289, il lisait souvent la mauvaise case, ou rien du tout. Chaque écart a été retrouvé dans les sources des pilotes de MAME 0.289, puis corrigé dans le greffon.

MachinesCe que MAME 0.289 a changéCorrectif
ToutesLes fonctions de démarrage et d’arrêt du greffon (register_start, register_stop) ont disparu après la 0.264.Passage aux nouveaux « notificateurs », conservés en mémoire faute de quoi Lua les désinscrit en silence.
Star Diamond, Zircon II, Prisma, SapphireLeurs modules, venus d’une autre branche de CB-Emu, attendent des variables que le greffon de MessChess ne fournit pas.Ces variables leur sont fournies au chargement.
Amsterdam, Dallas, Roma, GlasgowL’afficheur Mephisto à 4 chiffres est lu dans l’ordre inverse : le premier chiffre est désormais à droite.Table de correspondance des chiffres.
RISC 2500Les deux lignes de la matrice de diodes ont été permutées (colonnes et rangées).Table de correspondance explicite.
Milano, Nigel ShortLes diodes forment une matrice 8 × 2 ; la règle générale du greffon se trompait de case.Table de correspondance explicite.
CoronaAu démarrage, les diodes défilent pendant environ 25 secondes émulées ; les touches pressées pendant ce temps sont perdues.Le greffon attend la fin de cette initialisation avant de commencer la partie.
DallasLe coup était déjà affiché quand l’ordre d’arrêt arrivait : la machine le prenait pour une nouvelle demande et jouait pour les deux camps.Pas d’ordre d’arrêt quand le coup est déjà affiché. Réservé au Dallas : essayé sur les MM IV et MM V, qui affichent leur variante pendant la réflexion, il empêchait de les arrêter (le MM V est resté figé 300 secondes, deux fois en cinq parties).
PresidentLe pilote installé, prschess, était le SciSys President Chess de 1982 (Kaplan), pas le President de Morsch, qui n’est pas émulé.Remplacé le 26 octobre par le GK 2100 (Morsch, H8 à 10 MHz), joué sous le nom Saitek President.
Par ExcellenceLa version B a changé de nom dans MAME (fexcelpb → fexcelpa).Le relais retrouve sa table de niveaux sous le nouveau nom.
Sparc, Maestro D++Ce ne sont plus des machines à part, mais des modules enfichés dans la Renaissance.Voir plus bas.

Le Sparc et le Maestro jouaient trop vite

Dans le premier tournoi, le Saitek Sparc a perdu ses six parties, contre des machines qu’il bat sans peine sur le PC. Il jouait en 8 secondes là où les autres en prenaient 14. Le Maestro D++ montrait le même défaut. Ce sont les deux seules machines du Mac qui passent par la Renaissance de Saitek. Mesurés seuls, à 15 secondes par coup, les deux modules répondaient en 1,1 seconde. Le Par Excellence, lui, répondait en 5,3 secondes. Tous trois jouaient à leur niveau par défaut, quel que soit le temps qu’on leur donnait.

Il y avait trois causes, toutes dues à MAME 0.289.

  1. Le relais ne trouvait pas la table des niveaux. Sur le PC, MessChess avait un pilote sparc et un pilote maestrodpp. En 0.289, on lance la Renaissance en lui enfichant un module (renaissa -exp sparc). Le relais cherchait la table sous le nom renaissa, n’en trouvait pas, et ne demandait donc aucun niveau. Il lit désormais le module enfiché. Le Par Excellence avait le même problème, sous son nouveau nom.
  2. L’interface ne savait plus quel module était enfiché. MessChess publiait une sortie MOD qui indiquait le module et le nombre de niveaux qu’il ajoute (32 pour le Sparc, 24 pour le Maestro). En 0.289, cette sortie existe toujours, mais vaut toujours zéro. L’interface refusait donc tous les niveaux propres au module, sans rien signaler. C’est désormais le greffon, qui détecte le module à coup sûr dans l’arborescence des périphériques émulés, qui le lui indique.
  3. L’afficheur est devenu illisible pour le greffon. Pour régler le niveau, l’interface de la Renaissance appuyait sur Level, relisait la case allumée, puis avançait case par case jusqu’à la bonne. En 0.289, l’affichage passe par un contrôleur LCD dont les segments n’ont plus rien à voir avec les anciennes sorties. Le niveau courant ne se relit plus. Mais la machine démarre toujours au même niveau, a3. Le réglage se fait donc à l’aveugle depuis a3 : pour le niveau d’analyse f8, Level, cinq fois Tab, cinq fois +, puis Normal.

Comme les autres machines du laboratoire, ces trois-là jouent au niveau d’analyse, où elles réfléchissent sans limite, et c’est le relais qui leur fait jouer leur coup au bout de 15 secondes environ. On aurait pu préférer leur niveau « 15 secondes par coup ». Mais un temps fixe par coup se heurte à la cadence de 60 coups en 15 minutes : pour peu qu’il dépasse ses 15 secondes à chaque coup, la machine perd au temps vers le soixantième. Le relais, lui, recalcule le temps disponible à chaque coup, si bien que la pendule ne tombe jamais.

MachineAvant (temps par coup)Après (coups 2 et 3)
Saitek Sparc1,1 s14,3 s · 14,4 s
Saitek Maestro D++1,1 s14,3 s · 14,2 s
Fidelity Par Excellence5,3 s14,5 s · 14,5 s
Un piège de mesure Un essai d’un seul coup ne prouve rien. Le niveau se règle au premier coup, et la dizaine de secondes passée à appuyer sur les touches est décomptée du temps de ce coup : le Sparc, pourtant bien réglé, n’a réfléchi que 4 secondes. Il faut en jouer au moins trois et regarder les suivants.

Pas de cutechess : un arbitre maison

Sur le PC, les tournois passent par cutechess. Sur le Mac, c’est un petit programme écrit pour l’occasion, tournoi_mac.py, qui arbitre à l’aide de la bibliothèque python-chess. Il tient les deux pendules (60 coups en 15 minutes, renouvelés), vérifie la légalité de chaque coup, constate la fin de partie et écrit le PGN. Chaque partie lance ses deux machines à neuf, puis les arrête. Huit parties se jouent en même temps, mais jamais deux d’une même machine : deux MAME du même pilote se disputeraient le même fichier de mémoire non volatile.

Une partie interrompue par la machine (muette, coup illégal, émulateur arrêté) n’est pas comptée comme perdue : elle part dans un fichier d’incidents et elle est rejouée une fois. Une machine responsable de trois incidents est retirée du tournoi pour la suite. Le PGN donne aux machines un suffixe « (Mac) », pour que ces parties ne se mêlent pas par erreur aux cotes établies sur le PC.

La panne des émulateurs orphelins

Le premier soir, le tournoi a joué 61 parties en trois heures et demie, sans accroc notable. Le lendemain matin, après une nouvelle mise en route, il s’est effondré : 2 parties terminées et environ 36 incidents en une heure, presque tous du même type. Le relais avait arrêté une machine restée cinq minutes sans jouer. Cinq machines ont été écartées les unes après les autres.

Aucune machine n’était en cause. Quand on tue le relais, le MAME qu’il a lancé, lui, continue de tourner, seul en arrière-plan. La veille, interrompre le tournoi au clavier en avait laissé huit en marche toute la nuit. Au lancement suivant, huit nouveaux MAME se sont ajoutés aux anciens, soit seize émulations lourdes pour les dix cœurs du M1 Max. Les machines n’avaient plus assez de processeur pour rendre leur coup à temps. Chaque arrêt forcé pouvait laisser derrière lui un orphelin de plus, et le Mac s’enfonçait.

Le correctif tient en trois points. À l’interruption, le tournoi envoie d’abord quit à chaque moteur : le relais quitte normalement et tue son MAME avant de sortir. Le lanceur supprime tout MAME resté d’un lancement précédent avant de commencer. Enfin, le délai au bout duquel on considère qu’une machine est figée repasse à dix minutes : une machine lourde qui démarre pendant que sept autres parties tournent peut légitimement mettre plusieurs minutes à rendre son premier coup.

Avec des MAME orphelinsMac nettoyé
Durée1 h2 h
Parties terminées228
Incidents≈ 362
Machines écartées50

Ce qui résiste encore

Trois machines restent à l’écart du tournoi.

  • Saitek Turbo King II : il démarre mais ne joue pas, même en attendant la fin de son initialisation.
  • Fidelity Elite Avantgarde V9 : elle se fige à son deuxième coup quand elle a les Noirs, et annonce un coup impossible (d1d8) dès la position de départ quand elle a les Blancs.
  • Novag Star Diamond : il ignore parfois l’ordre d’arrêt. Il est écarté de la même façon sur le PC.

Trois machines du PC manquent tout simplement sur le Mac. Les Designer 2100 et Designer 2000 de Fidelity n’existent plus dans MAME 0.289 ; le fdes2100d qui s’en approche est un autre modèle, avec afficheur, et la cote porte sur le programme du modèle sans afficheur. Le pilote du Novag Super VIP n’a plus d’échiquier à capteurs : la machine ne se pilote qu’au clavier, ce que son module ne sait pas faire.

Les trente autres jouent, à environ 14 secondes par coup.

510 parties de tournoi

Une fois le Mac nettoyé de ses orphelins, le tournoi toutes rondes a tourné du 25 au 27 octobre : 510 parties entre les trente machines, à 60 coups en 15 minutes, avant que le Mac ne soit réservé à d’autres essais. Il n’est pas allé au bout : selon les machines, de 18 à 41 parties ont été jouées, et les adversaires rencontrés diffèrent. Les pourcentages ci-dessous se comparent donc avec prudence ; ils ne sont pas des cotes.

#Machine (Mac)Score%
1Mephisto Genius 68030 London34 / 3987 %
2Mephisto Berlin Pro 6802031 / 3686 %
3Saitek Sparc (rev. 518)34 / 4183 %
4Novag Sapphire26,5 / 3478 %
5Mephisto Berlin 68000 v0.0321,5 / 2974 %
6Saitek RISC 2500 v1.0417 / 2374 %
7Fidelity Designer Mach IV26 / 3672 %
8Mephisto RISC II22 / 3367 %
9Novag Super Forte C v3.620,5 / 3264 %
10Mephisto Nigel Short20,5 / 3559 %
11Novag Zircon II20,5 / 3755 %
12Fidelity Designer Mach III20,5 / 3854 %
13Saitek President (GK 2100)16,5 / 3153 %
14Mephisto Mondial 68000 XL20,5 / 3953 %
15Fidelity Par Excellence (B)17,5 / 3649 %
16Mephisto Roma 6800016 / 3348 %
17Mephisto Modena (set 3)17 / 3746 %
18Novag Super Expert C v3.614 / 3145 %
19Mephisto Dallas 6800015,5 / 3544 %
20Saitek Maestro D++12 / 2843 %
21Novag Constellation Forte A16,5 / 3942 %
22Mephisto MM V (v5.1)12 / 3040 %
23Mephisto MM IV (v7.10)10 / 2737 %
24Mephisto Amsterdam10,5 / 3035 %
25Saitek Corona II (ver. D+)12 / 3534 %
26Saitek Simultano (ver. B)11 / 3333 %
27Saitek Prisma6,5 / 3718 %
28Tandy Chess Champion 21502 / 1811 %
29Saitek Leonardo (v1.4)4 / 3811 %
30Saitek Turbo 16K2,5 / 338 %

Tournoi CB-Emu Mac, MacBook Pro M1 Max, MAME 0.289, 25–27 octobre 2026. Les 17 parties jouées par le SciSys President Chess de 1982, installé par erreur sous le nom du President, sont exclues (0 sur 17). 143 parties interrompues par une machine ont été mises de côté et rejouées.

L’ordre d’ensemble ressemble à celui du PC : le Genius London et le Berlin Pro en tête, le Turbo 16K et le Leonardo en queue. Mais deux classements sont à lire avec réserve. Celui de l’Amsterdam, 24e, et peut-être ceux du Dallas et du Roma, sont faussés par une vitesse d’émulation trop basse, comme le montre l’étalonnage ci-dessous. Celui du Sparc, 3e, contredit ses résultats aux tests de positions, sans qu’on sache encore pourquoi.

L’étalonnage contre le PC

Une machine émulée par MAME 0.289 calcule-t-elle aussi vite que la même machine sous MessChess ? Pour le savoir, on a repris les positions des tests BT-2450 et BT-2630 que chaque machine résout sur le PC en 8 à 300 secondes, et on a mesuré sur le Mac le temps qu’il lui faut pour trouver le même coup. Le rapport des deux temps, en médiane, dit tout : 1, c’est la même vitesse ; au-dessus de 1, le Mac est plus lent. Les temps de résolution sont bruités, un coup pouvant être trouvé tôt ou tard selon l’itération : seul un écart de plus de 15 % sur au moins six positions a été corrigé.

MachinePositionst Mac / t PCVerdict
Mephisto Genius 68030 London160,96conforme
Mephisto Berlin Pro 68020140,99conforme
Mephisto RISC II151,00conforme
Mephisto Berlin 68000 v0.03131,00conforme
Novag Sapphire141,00conforme
Fidelity Designer Mach IV141,00conforme
Fidelity Designer Mach III101,00conforme
Novag Zircon II101,00conforme
Mephisto Nigel Short91,00conforme
Novag Super Forte C v3.681,00conforme
Novag Super Expert C v3.6111,00conforme
Mephisto MM V (v5.1)81,00conforme
Saitek Corona II (ver. D+)51,00conforme
Mephisto Mondial 68000 XL41,00conforme
Mephisto Modena (set 3)41,00conforme
Saitek RISC 2500 v1.04181,1719 % plus lent : corrigé (Speed 119 %)
Mephisto Amsterdam64,524,7 fois plus lent : corrigé (Speed 468 %)
Mephisto Dallas 6800034,69même écart que l’Amsterdam, trop peu de positions pour corriger
Saitek Sparc (rev. 518)16—2 positions résolues sur 16 (PC : 16)
Saitek Maestro D++6—1 position résolue sur 6 (PC : 6)

Étalonnage du 26 octobre 2026. Machines testées sur moins de quatre positions (MM IV, Forte A, Par Excellence, Prisma, Tandy 2150, Turbo 16K, Leonardo) : pas de conclusion. Le Roma et le Simultano n’ont pas de position utilisable.

Quinze machines tombent à 1 à quelques pour cent près : pour elles, le Mac et le PC jouent la même partie. Le RISC 2500 est 19 % plus lent sur le Mac, et l’Amsterdam 4,7 fois plus lent. Le Dallas montre à peu près le même écart, sur trop peu de positions pour être corrigé ; le Roma, de la même génération, n’a pas pu être mesuré. Ce sont trois Mephisto à 68000 cadencé à 12 MHz : l’hypothèse la plus simple est une horloge différente dans le pilote de MAME 0.289, qui toucherait les trois. Depuis le 26 octobre au soir, le relais corrige la vitesse de l’Amsterdam et du RISC 2500 au démarrage ; seule une huitaine de parties de l’Amsterdam et deux du RISC 2500 ont été jouées ainsi dans le tournoi.

Le cas du Sparc et du Maestro Les deux modules de la Renaissance ne résolvent presque aucune position BT sur le Mac, alors qu’ils les résolvent toutes sur le PC. Ce n’est pas une affaire de vitesse. Mais le Sparc finit troisième du tournoi avec 83 % : un programme affaibli ne ferait pas ce score. Le défaut est donc plus probablement dans la façon dont le test installe les positions sur la Renaissance que dans le jeu des machines. Tant que ce n’est pas élucidé, leurs parties restent hors des cotes.

Et les cotes ?

Pour une quinzaine de machines, l’étalonnage autorise désormais à verser les parties du Mac dans le classement commun : elles jouent sous MAME 0.289 comme sous MessChess. Il faudra en écarter l’Amsterdam et le RISC 2500 avant leur correction, le Dallas et le Roma tant qu’ils ne sont pas mesurés, le Sparc et le Maestro tant que leur échec aux tests n’est pas expliqué, et bien sûr les 17 parties du President de Kaplan. D’ici là, les parties du Mac gardent leur suffixe « (Mac) » et leur propre classement.

À suivre Mesurer le Dallas et le Roma, et leur appliquer la correction de l’Amsterdam si elle se confirme ; comprendre l’échec du Sparc et du Maestro aux tests BT ; puis reprendre le tournoi toutes rondes pour qu’il aille à son terme, avant de calculer des cotes sur l’échelle du PC. Le Turbo King et l’Elite Avantgarde attendent toujours leur tour.

chess.lumn.eu · laboratoire de calibration · 25 octobre 2026, mis à jour le 3 novembre 2026