Portée du JVS et de cette référence
JVS (JAMMA Video Standard) définit des interfaces destinées aux systèmes d'arcade. Cette référence technique indépendante traite principalement du protocole série d'entrées/sorties : découverte des cartes, lecture des boutons et compteurs de pièces, annonce des capacités et pilotage de sorties. Elle ne remplace pas la norme physique complète qui traite aussi des connexions vidéo, audio et d'alimentation des bornes.
Le jeu joue le rôle d'hôte tandis que les cartes d'entrées/sorties constituent des nœuds adressés. Sega, Namco, Taito et d'autres fabricants partagent des fonctions JVS, sans garantir que leurs extensions et exigences spécifiques sont interchangeables.
Nous distinguons les comportements documentés par la norme, ceux observés par analyse de micrologiciel, les captures matérielles publiées par des tiers et les exemples de paquets entièrement synthétiques. Pour les commandes rares, consulter la norme originale et la révision exacte de la carte.
Architecture du bus et rôle des nœuds
L'hôte envoie une requête et le nœud visé renvoie une réponse. La carte annonce ses boutons, monnayeurs, entrées analogiques et sorties disponibles; l'hôte ne doit pas supposer un câblage identique sur toutes les bornes. Plusieurs cartes peuvent être chaînées et la ligne distincte SENSE intervient dans la découverte des nœuds encore sans adresse.
Chemin habituel : logiciel du jeu → hôte JVS → transcepteur série différentiel → carte E/S → commandes physiques. Les lectures de boutons et de pièces remontent sous forme de réponses.
JEU / HÔTE (maître)
| données RS-485 + chaîne SENSE
v
NŒUD E/S JVS 1 [adresse 01]
| raccordement suivant facultatif
v
NŒUD E/S JVS 2 [adresse 02]
|
+--> boutons / pièces / lampes / analogique Transmission électrique et sécurité des connecteurs
Le JVS classique utilise du RS-485 différentiel semi-duplex, normalement à 115 200 bauds, 8 bits, sans parité et un bit d'arrêt (115200 8N1). Un seul émetteur doit conduire la paire à la fois; son activation doit durer jusqu'à la fin du dernier bit d'arrêt.
Les prises peuvent ressembler à des connecteurs USB, mais RS-485 et SENSE ne sont PAS le protocole USB habituel. Ne pas connecter un port USB de PC, une manette ordinaire ou un adaptateur inconnu sur JVS simplement parce que les fiches correspondent. Les signaux, domaines d'alimentation et broches doivent être identifiés sur la révision exacte.
Terminaison, protection contre les décharges, références de masse et alimentation dépendent de la borne. Une résistance de terminaison sur chaque nœud n'est pas automatiquement correcte. Ce document ne prescrit pas un brochage universel ou un câblage non vérifié.
| Couche | Caractéristique classique | À distinguer |
|---|---|---|
| Données | Paire RS-485 différentielle semi-duplex | Pas le protocole USB |
| UART | 115200 8N1 | Modes plus rapides facultatifs |
| Direction | Requête de l'hôte, réponse du nœud | Délais d'activation à mesurer |
| Signal auxiliaire | SENSE, distinct du bus série | Pas une commande UART |
| Alimentation | Dépendante du système | Ne pas déduire la tension de la forme de prise |
SENSE et attribution des adresses
SENSE est un signal électrique servant à la découverte des cartes chaînées. Un modèle pratique distingue une tension haute en l'absence de nœud non adressé, une tension intermédiaire lorsqu'un nœud attend son adresse, puis une tension basse après attribution. Ce sont des régions qualitatives et non des seuils universels.
Notre étude de la Sega 838-13683-93 Rév.B a retrouvé une branche passive de diodes et un chemin commandé vers la masse. Le micrologiciel SP5001-B active ce dernier après l'acceptation de F1. C'est une observation sur une carte bien identifiée, qui ne doit pas être généralisée à tous les fabricants.
Les valeurs proches de 5 V, 2–3 V et 0 V proviennent de réalisations historiques. Les niveaux réels dépendent du rappel hôte, des seuils, du câblage et du traitement des nœuds suivants. Il faut les mesurer.
| Zone SENSE courante | Interprétation | Limite |
|---|---|---|
| Haute | Aucun nœud non adressé détecté | Rappel propre à l'hôte |
| Intermédiaire | Nœud présent mais non adressé | 2,5 V n'est pas un seuil universel |
| Basse | Adresse acceptée / circuit actif | Propagation différente en chaîne |
Structure logique des paquets
Chaque paquet commence par SYNC E0, puis une adresse, une longueur logique sur un octet, les données et une somme SUM sur un octet. Une requête transporte des commandes; une réponse commence par un état global puis des rapports de commandes et leurs données.
LEN compte les octets logiques décodés après LEN, y compris SUM. Ainsi, avec N octets de commandes et paramètres, LEN = N + 1. La somme est l'addition modulo 256 de l'adresse, de LEN et des octets de données décodés; l'octet SYNC initial et SUM elle-même sont exclus.
FF est une adresse de diffusion. Les premières adresses de nœud sont généralement 01, 02, etc.; les réponses ciblent l'hôte 00. Les octets d'échappement allongent la trame physique sans modifier la longueur logique.
REQUÊTE : E0 DEST LEN CMD [ARG...] [CMD ARG...] SUM
RÉPONSE : E0 00 LEN ÉTAT RAPPORT [DONNÉES...] SUM
LEN = octets logiques de DONNÉES + 1 (SUM)
SUM = (DEST + LEN + somme(DONNÉES décodées)) & 0xFF
SYNC E0 initial ne compte ni dans LEN ni dans SUM. Échappement des valeurs réservées D0 et E0
Un octet E0 dans le corps d'une trame pourrait être confondu avec un nouveau SYNC. Le codage remplace donc E0 logique par D0 DF; D0 logique devient D0 CF. Cela concerne tous les champs après le premier SYNC, même une somme qui contient E0 ou D0.
Le récepteur reconstruit les valeurs logiques avant de vérifier longueur et somme. Par exemple, les valeurs logiques D0 E0 sont transportées physiquement sous la forme D0 CF D0 DF. Un octet logique demeure un seul octet de LEN, même si deux octets ont été transmis.
| Valeur logique | Valeurs sur le fil | Pourquoi |
|---|---|---|
| E0 | D0 DF | Protéger la synchronisation |
| D0 | D0 CF | Protéger le marqueur d'échappement |
| Autres | Inchangées | Aucun échappement requis |
Requête et réponse annotées, octet par octet
Pour demander la version du format de commande (11) au nœud 01, l'hôte envoie E0 01 02 11 14. La somme vaut 01 + 02 + 11 = 14. La réponse fictive choisit la révision 1.1 (BCD 11), un état global 01 et un rapport de commande 01.
Ces séquences sont calculées pour enseigner le protocole; elles ne proviennent pas d'une capture de notre établi. L'état global, le rapport individuel et la version retournée sont trois champs différents.
HÔTE -> NŒUD 01 :
E0 01 02 11 14
| | | +-- SUM = (01+02+11) & FF = 14
| | +----- commande 11 (version)
| +-------- LEN = 02
+----------- destination 01
NŒUD -> HÔTE (version fictive 1.1) :
E0 00 04 01 01 11 17
| | | | | +-- SUM = 04+01+01+11 = 17
| | | | +----- révision BCD 11
| | | +-------- rapport 01 (succès)
| | +----------- état global 01
| +-------------- LEN = 04
+----------------- destination 00 Réinitialisation, numérotation et découverte
Le maître remet d'abord les attributions d'adresse à zéro, puis numérote les cartes non adressées selon SENSE et les accusés de réception. La requête de remise à zéro habituelle diffuse F0 D9 à FF; F1, suivi de l'adresse souhaitée, est également diffusé. La carte attribuée répond ensuite aux commandes 10 (identité), 11 (version des commandes), 12 (version JVS), 13 (communication) et 14 (fonctions).
Les véritables hôtes peuvent répéter F0, utiliser 15 pour annoncer leur identité ou appliquer des étapes propres au fabricant. Les temporisations, essais et changements de direction doivent être établis sur le système cible. Une démonstration à un seul nœud ne prouve pas le bon chaînage.
REMETTRE LES ADRESSES À ZÉRO : E0 FF 03 F0 D9 CB
ATTRIBUER L'ADRESSE 01 : E0 FF 03 F1 01 F4
LIRE L'IDENTITÉ DU NŒUD 01 : E0 01 02 10 13
Chaque somme est calculée sur les champs logiques.
F0 ne demande normalement pas de réponse individuelle.
F1 produit normalement un accusé de réception. Commandes de découverte 10 à 15
Les octets de version sont en BCD : une carte peut répondre 11 pour les commandes 1.1, 20 pour JVS 2.0 et 10 pour la communication 1.0. Il s'agit d'un profil réel du firmware Sega étudié, mais pas de valeurs constantes sur tous les appareils.
La commande 10 fournit une chaîne d'identification terminée par NUL. L'hôte doit limiter sa taille et ne pas considérer le nom du fabricant comme preuve qu'il s'agit du firmware d'usine.
| Code | Commande | Réponse attendue |
|---|---|---|
| 10 | Lire l'identité de la carte E/S | Chaîne fabricant/modèle/version/commentaire terminée par zéro |
| 11 | Version du format des commandes | Un octet BCD |
| 12 | Version de la norme JVS | Un octet BCD |
| 13 | Version de communication | Un octet BCD |
| 14 | Fonctions déclarées | Enregistrements de quatre octets et fin 00 |
| 15 | Fournir l'identité de l'hôte | Chaîne hôte terminée par NUL |
Les capacités déclarées par la commande 14
La réponse contient des enregistrements CODE, P1, P2, P3 suivis d'un octet 00 de fin. L'interprétation des paramètres change selon la fonction. L'hôte doit garder les enregistrements bruts, vérifier la fin et limiter ses interrogations aux capacités déclarées.
Par exemple, la fonction 01 précise le nombre de joueurs et de commutateurs par joueur; 02, le nombre de monnayeurs; 03, les voies analogiques et la résolution utile. La fonction 12 annonce généralement des banques de sorties de huit bits. Un commutateur de configuration peut modifier les capacités annoncées par un firmware.
Une fonction déclarée n'est pas la preuve que le câblage physique de la borne est complet.
| Code | Fonction | Paramètres principaux |
|---|---|---|
| 01 | Boutons des joueurs | P1 joueurs; P2 boutons/joueur |
| 02 | Entrées de pièces | P1 voies |
| 03 | Entrées analogiques | P1 voies; P2 résolution utile |
| 04 | Encodeurs rotatifs | P1 voies |
| 05 | Clavier / codes | Vérifier la révision |
| 06 | Position à l'écran | P1 bits X; P2 bits Y; P3 voies |
| 07 | Commutateurs généraux | Nombre / format indiqué |
| 10 / 11 | Lecteur de carte / distributeur | Paramètres propres au dispositif |
| 12 | Sorties générales | Nombre de banques de 8 bits |
| 13 / 14 / 15 | Sorties analogiques / affichage / sauvegarde | Paramètres selon la révision |
| 00 | Fin de liste | Un seul octet, sans P1–P3 |
Entrées numériques : commande 20
La commande 20 reçoit le nombre de joueurs et le nombre d'octets par joueur à lire. Une réponse réussie donne un octet pour les commutateurs système, puis les octets de chaque joueur. Le rapport de commande précède les données et l'état général du paquet précède ce rapport.
Dans le premier octet joueur courant, les bits 7 à 0 représentent Start, Service, Haut, Bas, Gauche, Droite, bouton 1 et bouton 2. Le deuxième octet transporte d'autres boutons. L'octet système comprend Test et parfois Tilt ou d'autres positions auxiliaires. Un bouton pressé est normalement représenté par un bit à 1 dans la réponse JVS, même quand le contact physique est actif-bas.
Respecter la liste des fonctions déclarées. Une carte à deux joueurs et six boutons ne peut pas être présumée identique à un contrôleur pour quatre joueurs.
| Octet | Bits 7 à 0 |
|---|---|
| Système | TEST, TILT / auxiliaires, autres bits selon profil |
| Joueur, octet 1 | START SERVICE HAUT BAS GAUCHE DROITE B1 B2 |
| Joueur, octet 2 | B3 B4 B5 B6 B7 B8 et bits réservés ou spécifiques |
Exemple de sondage numérique complet
Cette requête synthétique demande deux joueurs avec deux octets chacun au nœud 01. La réponse fictive indique aucun commutateur système, Start du joueur 1 enfoncé et Droite du joueur 2 enfoncé, sans autre entrée. LEN = huit octets logiques après ce champ : état, rapport, système, quatre octets joueur, puis somme.
Les sommes sont calculées modulo 256. Les octets constituent un vecteur pédagogique et non une capture d'une borne Sega, Namco ou Taito.
HÔTE -> NŒUD 01 :
E0 01 04 20 02 02 29
| | | | | +-- SUM = 01+04+20+02+02 = 29
| | | | +----- 2 octets par joueur
| | | +-------- 2 joueurs
| | +----------- commande 20
NŒUD -> HÔTE :
E0 00 08 01 01 00 80 00 04 00 8E
| | | | | |------| |------|
| | | | | J1 2o J2 2o
| | | | +-- commutateurs système 00
| | | +----- rapport 01
| | +-------- état global 01
| +----------- LEN = 08
+-------------- destination 00
J1 80 00 = START; J2 04 00 = DROITE.
SUM = 00+08+01+01+00+80+00+04+00 = 8E Compteurs de pièces : 21, 30 et 35
La commande 21 lit les monnayeurs demandés. Chaque voie répond avec un mot de 16 bits : les deux bits supérieurs portent une condition du mécanisme et les 14 autres le nombre cumulé de pièces. Ce n'est pas un simple bouton momentané. L'hôte doit calculer les différences entre lectures et gérer les remises à zéro et les débordements.
Les commandes 30 et 35 diminuent ou augmentent les compteurs des nœuds qui les prennent en charge. L'état global du paquet est distinct de la condition propre à un monnayeur. La politique de crédits et la comptabilité appartiennent aussi au programme hôte.
| Partie du mot | Signification |
|---|---|
| Bits 15–14 | Condition ou état du mécanisme |
| Bits 13–0 | Compteur 14 bits : 0 à 16 383 |
| Traitement hôte | Écarts, débordement, remise à zéro et données anciennes |
Analogique, rotation, clavier et position
La commande 22 interroge les voies analogiques; une réponse courante fournit deux octets par voie, mais la résolution utile doit être tirée de la fonction 03. L'alignement des bits et l'étalonnage dépendent de la carte : ne pas réduire toutes les lectures à huit bits sans preuve.
La commande 23 traite les encodeurs rotatifs, 24 les claviers ou codes, 25 les coordonnées de position ou pistolets et 26 les commutateurs généraux. Ces fonctions sont facultatives. Le nombre de voies, les arguments et l'interprétation exacte demandent la révision correspondante de la norme ainsi que des captures du matériel concerné.
Une fonction de position annoncée ne garantit pas à elle seule la compatibilité avec une technologie de pistolet, un écran ou un jeu.
| Code | Famille | Point à vérifier |
|---|---|---|
| 22 | Analogique | Voies, résolution et alignement |
| 23 | Encodeur rotatif | Débordement et données relatives |
| 24 | Clavier / codes | Représentation selon version |
| 25 | Position / pistolet | Coordonnées, voies, étalonnage |
| 26 | Commutateurs généraux | Nombre et format de bits |
Sorties, distribution et retransmission
Les fonctions JVS facultatives comprennent les commandes 2E relatives à la distribution, 2F pour retransmettre une réponse, 30/35 pour modifier les compteurs de pièces, 31/36 pour gérer les comptes de distribution, 32 pour les sorties générales, 33 pour les sorties analogiques, 34 pour les afficheurs, et 37/38 pour d'autres modes de sorties. F2 modifie la communication lorsque l'appareil le permet.
Ces noms ne fournissent pas tous les paramètres de toutes les versions de la norme. Les charges et mécanismes peuvent être réels : ne jamais envoyer au hasard des commandes de sortie à une carte inconnue.
Notre reconstruction du micrologiciel Sega SP5001-B a trouvé des traitements pour F0, F1, 10–14, 20–22, 2F, 30, 32 et 35. Une carte qui ne prend en charge qu'un sous-ensemble n'est pas nécessairement incorrecte lorsqu'elle n'annonce pas les autres capacités.
| Code | Fonction | Limite |
|---|---|---|
| 2E / 31 / 36 | Distribution et compteurs | Optionnel, selon mécanisme |
| 2F | Retransmission | Historique et erreurs propres à la carte |
| 30 / 35 | Pièces : diminuer / augmenter | Plages et politiques des compteurs |
| 32 / 37 / 38 | Sorties générales | Pilotes physiques et protection |
| 33 | Sortie analogique | Voies facultatives |
| 34 | Affichage de caractères | Codage et dimensions |
| F2 | Mode de communication | Facultatif; non requis pour 115200 |
États de paquet, rapports et erreurs
Une réponse JVS contient un état général et un rapport par commande. Dans les réalisations standard, l'état 01 signifie normal, 02 commande inconnue, 03 erreur de somme et 04 dépassement ou autre erreur de paquet. Les rapports individuels permettent de distinguer la réussite de problèmes de prise en charge, de paramètres ou de disponibilité; le comportement précis peut varier selon le firmware.
Une absence de réponse, une somme invalide et une commande non reconnue ne demandent pas la même correction. L'hôte peut refaire une requête, employer 2F lorsque pris en charge ou réinitialiser l'adresse et SENSE, selon sa politique.
Lors de la recherche de panne, enregistrer les octets UART physiques et les paquets logiques décodés séparément, surtout lorsque SUM elle-même a été échappée.
| Symptôme | Première vérification |
|---|---|
| Aucune réponse | Adresse, SENSE et direction RS-485 |
| Mauvaise somme | Échappements décodés avant le calcul ? |
| Mauvaise longueur | LEN inclut-il SUM et seulement les octets logiques ? |
| Commande refusée | Fonction annoncée ? Paramètres corrects ? |
| Seul le premier nœud répond | Propagation de SENSE et attribution des adresses |
| Entrées figées après découverte | L'hôte a-t-il commencé les lectures périodiques ? |
Différences entre fabricants : nos dossiers
Notre étude du micrologiciel Sega SP5001-B, pour la carte 838-13683-93 Rév.B, retrouve la configuration UART 115200 8N1, le traitement E0/D0, une table de commandes, quatorze gestionnaires et la direction RS-485. Le contrôle actif SENSE correspond à une commande F1 acceptée. Il s'agit de conclusions sur cette carte originale, pas de règles universelles pour tous les systèmes JVS.
Une capture publique de la Taito K91X1130A dans le fil Arcade-Projects JVS Information Extractor annonce des commandes numériques, des pièces, des voies analogiques, une position à l'écran et des sorties générales et analogiques. Cette capture provient d'un TIERS; ne pas confondre K91X1130A et K91X1215A.
Notre comparaison des bibliothèques hôtes Namco WAJVIO 2.04 et 2.1.1 montre des stratégies différentes pour le sondage et l'association des réponses de plusieurs nœuds. Une carte étiquetée Capcom 98701 a retourné un identifiant inattendu dans une capture publique : cela ne permet pas de confirmer l'origine du firmware d'usine.
| Appareil ou logiciel | Résultat utile | Preuve |
|---|---|---|
| Sega SP5001-B Rév.B | 14 gestionnaires, UART et politique SENSE | Reconstruction du firmware et mesures du PCB |
| Taito K91X1130A | Liste riche de capacités | Capture matérielle publique tierce |
| Namco WAJVIO 2.04 / 2.1.1 | Différences de sondage multi-nœuds | Analyse statique des binaires hôtes |
| Carte étiquetée 98701 | Identifiant différent de l'attente | Capture publique; provenance usine incertaine |
Vérifications pour une implémentation robuste
Bien séparer la couche UART/RS-485, l'échappement, le parseur de paquets logiques, la machine d'initialisation et le circuit SENSE. L'émetteur RS-485 doit être relâché selon la fin réelle de transmission, et pas uniquement parce que la FIFO est vide.
Rejeter les longueurs impossibles, D0 sans octet suivant, chaînes d'identification sans limite, sommes invalides, adresses inattendues et nombres de voies non pris en charge. Vérifier la taille des tampons et chaque variable lue. Des tests logiciels sur PC ne prouvent pas la sécurité d'une carte physique.
Avant toute affirmation de compatibilité, consigner le système hôte, le PCB E/S et sa révision, le micrologiciel, l'ordre du chaînage, l'alimentation et les traces, puis tester les réinitialisations, les passages d'adresse, les entrées et les états de sortie sûrs.
- Identifier le maître, les cartes, leurs adresses et leurs listes de fonctions.
- Observer RS-485 A/B, activation d'émission, tension SENSE et horodatage UART.
- Conserver les paquets physiques encodés et les paquets logiques décodés.
- Vérifier F0, F1, identité, versions, capacités et sondage ordinaire.
- Tester LEN invalide, mauvaise somme, D0, absence de réponse et délais.
- Maintenir les sorties sûres au démarrage, lors des défauts et des déconnexions.
- Qualifier une révision commerciale seulement après essais matériels.
Portée de cette édition, provenance et révisions futures
JVS-001 décrit la trame série classique, SENSE, la découverte, les principales capacités et les familles de commandes. Il ne reproduit pas tous les paramètres optionnels des différentes versions de la norme ni les extensions propriétaires. Le texte japonais original et les preuves liées aux cartes restent nécessaires pour les fonctions rares.
Nos études Sega et Namco sont conservées dans des dépôts d'ingénierie privés; le présent document expose les conclusions sans distribuer de ROM ou firmware propriétaire. Les captures réalisées par des tiers sont créditées; tous les exemples sont synthétiques et les sommes vérifiées.
Les futures captures à l'oscilloscope, identifications de PCB ou corrections documentaires entraîneront une révision datée. USB2JVS reste une recherche : aucun produit commercial qualifié n'est actuellement proposé.
Sources et documents de référence
Documents d’origine et références utilisées pour cette page. Les modèles et révisions peuvent varier.
- Arcade Docs — trames et échappements JVS
- OpenJVS — commandes et définitions des capacités
- OpenJVS — attribution des adresses et documentation
- psx-spx — trames et échappement, vérification indépendante
- OpenJVS — réalisations matérielles et SENSE
- Arcade-Projects — captures d'identification de cartes E/S
- sduponch/jvs — projet hôte FPGA et couverture des commandes
- Norme JVS édition 3 — archive publique japonaise
Document d’information : aucun essai de compatibilité produit n’est revendiqué. L’atelier ne vend pas encore ces accessoires.