● ATELIER ROCKY / TECHNICAL LIBRARYQUÉBEC · ARCADE ELECTRONICS

JVS-001 / RÉFÉRENCE TECHNIQUE 20 min de lecture technique

Protocole JVS : référence technique pratique (JVS-001)

Une référence octet par octet pour les E/S d'arcade JAMMA Video Standard : signalisation, découverte des cartes, commandes et observations issues de nos recherches.

Documentation révisée le 14 novembre 2026

01

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.

02

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.

Topologie de principe, pas un plan de câblage
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
03

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é.

CoucheCaractéristique classiqueÀ distinguer
DonnéesPaire RS-485 différentielle semi-duplexPas le protocole USB
UART115200 8N1Modes plus rapides facultatifs
DirectionRequête de l'hôte, réponse du nœudDélais d'activation à mesurer
Signal auxiliaireSENSE, distinct du bus sériePas une commande UART
AlimentationDépendante du systèmeNe pas déduire la tension de la forme de prise
04

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 couranteInterprétationLimite
HauteAucun nœud non adressé détectéRappel propre à l'hôte
IntermédiaireNœud présent mais non adressé2,5 V n'est pas un seuil universel
BasseAdresse acceptée / circuit actifPropagation différente en chaîne
05

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.

Trames logiques : tous les nombres sont hexadécimaux
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.
06

É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 logiqueValeurs sur le filPourquoi
E0D0 DFProtéger la synchronisation
D0D0 CFProtéger le marqueur d'échappement
AutresInchangéesAucun échappement requis
07

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.

Exemple A — interrogation de version (synthétique)
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
08

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.

Exemple B — trois requêtes d'initialisation
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.
09

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.

CodeCommandeRéponse attendue
10Lire l'identité de la carte E/SChaîne fabricant/modèle/version/commentaire terminée par zéro
11Version du format des commandesUn octet BCD
12Version de la norme JVSUn octet BCD
13Version de communicationUn octet BCD
14Fonctions déclaréesEnregistrements de quatre octets et fin 00
15Fournir l'identité de l'hôteChaîne hôte terminée par NUL
10

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.

CodeFonctionParamètres principaux
01Boutons des joueursP1 joueurs; P2 boutons/joueur
02Entrées de piècesP1 voies
03Entrées analogiquesP1 voies; P2 résolution utile
04Encodeurs rotatifsP1 voies
05Clavier / codesVérifier la révision
06Position à l'écranP1 bits X; P2 bits Y; P3 voies
07Commutateurs générauxNombre / format indiqué
10 / 11Lecteur de carte / distributeurParamètres propres au dispositif
12Sorties généralesNombre de banques de 8 bits
13 / 14 / 15Sorties analogiques / affichage / sauvegardeParamètres selon la révision
00Fin de listeUn seul octet, sans P1–P3
11

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.

OctetBits 7 à 0
SystèmeTEST, TILT / auxiliaires, autres bits selon profil
Joueur, octet 1START SERVICE HAUT BAS GAUCHE DROITE B1 B2
Joueur, octet 2B3 B4 B5 B6 B7 B8 et bits réservés ou spécifiques
12

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.

Exemple C — lecture de deux joueurs (synthétique)
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
13

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 motSignification
Bits 15–14Condition ou état du mécanisme
Bits 13–0Compteur 14 bits : 0 à 16 383
Traitement hôteÉcarts, débordement, remise à zéro et données anciennes
14

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.

CodeFamillePoint à vérifier
22AnalogiqueVoies, résolution et alignement
23Encodeur rotatifDébordement et données relatives
24Clavier / codesReprésentation selon version
25Position / pistoletCoordonnées, voies, étalonnage
26Commutateurs générauxNombre et format de bits
15

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.

CodeFonctionLimite
2E / 31 / 36Distribution et compteursOptionnel, selon mécanisme
2FRetransmissionHistorique et erreurs propres à la carte
30 / 35Pièces : diminuer / augmenterPlages et politiques des compteurs
32 / 37 / 38Sorties généralesPilotes physiques et protection
33Sortie analogiqueVoies facultatives
34Affichage de caractèresCodage et dimensions
F2Mode de communicationFacultatif; non requis pour 115200
16

É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ômePremière vérification
Aucune réponseAdresse, SENSE et direction RS-485
Mauvaise sommeÉchappements décodés avant le calcul ?
Mauvaise longueurLEN inclut-il SUM et seulement les octets logiques ?
Commande refuséeFonction annoncée ? Paramètres corrects ?
Seul le premier nœud répondPropagation de SENSE et attribution des adresses
Entrées figées après découverteL'hôte a-t-il commencé les lectures périodiques ?
17

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 logicielRésultat utilePreuve
Sega SP5001-B Rév.B14 gestionnaires, UART et politique SENSEReconstruction du firmware et mesures du PCB
Taito K91X1130AListe riche de capacitésCapture matérielle publique tierce
Namco WAJVIO 2.04 / 2.1.1Différences de sondage multi-nœudsAnalyse statique des binaires hôtes
Carte étiquetée 98701Identifiant différent de l'attenteCapture publique; provenance usine incertaine
18

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.
19

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.

  1. Arcade Docs — trames et échappements JVS
  2. OpenJVS — commandes et définitions des capacités
  3. OpenJVS — attribution des adresses et documentation
  4. psx-spx — trames et échappement, vérification indépendante
  5. OpenJVS — réalisations matérielles et SENSE
  6. Arcade-Projects — captures d'identification de cartes E/S
  7. sduponch/jvs — projet hôte FPGA et couverture des commandes
  8. 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.

ATELIER ROCKY / GUIDES

Une autre lecture utile

Tous les guides ←