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.
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.
| Machines | Ce que MAME 0.289 a changé | Correctif |
|---|---|---|
| Toutes | Les 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, Sapphire | Leurs 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, Glasgow | L’afficheur Mephisto à 4 chiffres est lu dans l’ordre inverse : le premier chiffre est désormais à droite. | Table de correspondance des chiffres. |
| RISC 2500 | Les deux lignes de la matrice de diodes ont été permutées (colonnes et rangées). | Table de correspondance explicite. |
| Milano, Nigel Short | Les diodes forment une matrice 8 × 2 ; la règle générale du greffon se trompait de case. | Table de correspondance explicite. |
| Corona | Au 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. |
| Dallas | Le 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). |
| President | Le 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 Excellence | La 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.
- Le relais ne trouvait pas la table des niveaux. Sur le PC, MessChess avait un pilote
sparcet un pilotemaestrodpp. En 0.289, on lance la Renaissance en lui enfichant un module (renaissa -exp sparc). Le relais cherchait la table sous le nomrenaissa, 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. - L’interface ne savait plus quel module était enfiché. MessChess publiait une sortie
MODqui 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. - 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.
| Machine | Avant (temps par coup) | Après (coups 2 et 3) |
|---|---|---|
| Saitek Sparc | 1,1 s | 14,3 s · 14,4 s |
| Saitek Maestro D++ | 1,1 s | 14,3 s · 14,2 s |
| Fidelity Par Excellence | 5,3 s | 14,5 s · 14,5 s |
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 orphelins | Mac nettoyé | |
|---|---|---|
| Durée | 1 h | 2 h |
| Parties terminées | 2 | 28 |
| Incidents | ≈ 36 | 2 |
| Machines écartées | 5 | 0 |
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 | % |
|---|---|---|---|
| 1 | Mephisto Genius 68030 London | 34 / 39 | 87 % |
| 2 | Mephisto Berlin Pro 68020 | 31 / 36 | 86 % |
| 3 | Saitek Sparc (rev. 518) | 34 / 41 | 83 % |
| 4 | Novag Sapphire | 26,5 / 34 | 78 % |
| 5 | Mephisto Berlin 68000 v0.03 | 21,5 / 29 | 74 % |
| 6 | Saitek RISC 2500 v1.04 | 17 / 23 | 74 % |
| 7 | Fidelity Designer Mach IV | 26 / 36 | 72 % |
| 8 | Mephisto RISC II | 22 / 33 | 67 % |
| 9 | Novag Super Forte C v3.6 | 20,5 / 32 | 64 % |
| 10 | Mephisto Nigel Short | 20,5 / 35 | 59 % |
| 11 | Novag Zircon II | 20,5 / 37 | 55 % |
| 12 | Fidelity Designer Mach III | 20,5 / 38 | 54 % |
| 13 | Saitek President (GK 2100) | 16,5 / 31 | 53 % |
| 14 | Mephisto Mondial 68000 XL | 20,5 / 39 | 53 % |
| 15 | Fidelity Par Excellence (B) | 17,5 / 36 | 49 % |
| 16 | Mephisto Roma 68000 | 16 / 33 | 48 % |
| 17 | Mephisto Modena (set 3) | 17 / 37 | 46 % |
| 18 | Novag Super Expert C v3.6 | 14 / 31 | 45 % |
| 19 | Mephisto Dallas 68000 | 15,5 / 35 | 44 % |
| 20 | Saitek Maestro D++ | 12 / 28 | 43 % |
| 21 | Novag Constellation Forte A | 16,5 / 39 | 42 % |
| 22 | Mephisto MM V (v5.1) | 12 / 30 | 40 % |
| 23 | Mephisto MM IV (v7.10) | 10 / 27 | 37 % |
| 24 | Mephisto Amsterdam | 10,5 / 30 | 35 % |
| 25 | Saitek Corona II (ver. D+) | 12 / 35 | 34 % |
| 26 | Saitek Simultano (ver. B) | 11 / 33 | 33 % |
| 27 | Saitek Prisma | 6,5 / 37 | 18 % |
| 28 | Tandy Chess Champion 2150 | 2 / 18 | 11 % |
| 29 | Saitek Leonardo (v1.4) | 4 / 38 | 11 % |
| 30 | Saitek Turbo 16K | 2,5 / 33 | 8 % |
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é.
| Machine | Positions | t Mac / t PC | Verdict |
|---|---|---|---|
| Mephisto Genius 68030 London | 16 | 0,96 | conforme |
| Mephisto Berlin Pro 68020 | 14 | 0,99 | conforme |
| Mephisto RISC II | 15 | 1,00 | conforme |
| Mephisto Berlin 68000 v0.03 | 13 | 1,00 | conforme |
| Novag Sapphire | 14 | 1,00 | conforme |
| Fidelity Designer Mach IV | 14 | 1,00 | conforme |
| Fidelity Designer Mach III | 10 | 1,00 | conforme |
| Novag Zircon II | 10 | 1,00 | conforme |
| Mephisto Nigel Short | 9 | 1,00 | conforme |
| Novag Super Forte C v3.6 | 8 | 1,00 | conforme |
| Novag Super Expert C v3.6 | 11 | 1,00 | conforme |
| Mephisto MM V (v5.1) | 8 | 1,00 | conforme |
| Saitek Corona II (ver. D+) | 5 | 1,00 | conforme |
| Mephisto Mondial 68000 XL | 4 | 1,00 | conforme |
| Mephisto Modena (set 3) | 4 | 1,00 | conforme |
| Saitek RISC 2500 v1.04 | 18 | 1,17 | 19 % plus lent : corrigé (Speed 119 %) |
| Mephisto Amsterdam | 6 | 4,52 | 4,7 fois plus lent : corrigé (Speed 468 %) |
| Mephisto Dallas 68000 | 3 | 4,69 | mê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.
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.
chess.lumn.eu · laboratoire de calibration · 25 octobre 2026, mis à jour le 3 novembre 2026
