● ATELIER ROCKY / TECHNICAL LIBRARYQUÉBEC · ARCADE ELECTRONICS

JVS-004 / DIAGNOSTIC DE L’ÉTABLI 19 min de lecture technique

Diagnostic JVS : RS-485, SENSE, erreurs de trames et reprise (JVS-004)

Quand une borne ne communique plus avec sa carte E/S, à quel niveau se trouve la panne ? Analyser chaque couche avec des captures sûres, des paquets pédagogiques et nos recherches Sega/Namco.

Documentation révisée le 14 novembre 2026

01

D'abord localiser la panne, pas remplacer le PCB

Un échec JVS peut venir du bus électrique, de SENSE et des adresses, de la structure des paquets, des commandes ou de l'intégration du jeu. Une carte E/S qui répond à la commande 10 n'est pas automatiquement compatible avec les commandes de la borne.

Relever la dernière transition vérifiée : l'hôte a-t-il envoyé F0 ? SENSE annonçait-il un nœud sans adresse ? F1 a-t-il reçu un accusé valide ? Les commandes 11 à 14 ont-elles réussi ? Les interrogations régulières des commandes physiques fonctionnent-elles ?

Sauf attribution explicite à un tiers, toutes les trames d'exemple sont synthétiques; ce ne sont pas des captures effectuées à l'oscilloscope par Atelier Rocky.

CoucheDonnées à releverCe que cela établit
ÉlectriqueAlimentation, A/B différentiel, UART et directionActivité réelle des circuits
SENSETension avant/après F0 et F1État possible de découverte et d'adresse
TrameOctets bruts, LEN décodée et SUMIntégrité de l'échange
CommandeÉtat global et rapports individuelsFonction prise en charge ou erreur de paramètre
Hôte / jeuCadence, entrées et repriseFonctionnement de l'application en situation
02

Préparer une capture sans danger électrique

Identifier le système, la borne, la révision exacte du PCB E/S et ses domaines d'alimentation. Couper l'alimentation avant de modifier les câbles. Les prises JVS peuvent ressembler à l'USB sans être de l'USB. Employer des sondes compatibles avec les tensions et la masse du matériel; ne jamais raccorder au hasard la pince de masse d'un oscilloscope à un conducteur alimenté.

Observer de préférence le signal différentiel A−B, UART RX/TX côté logique avec référence correcte, DE, /RE si accessible et SENSE en analogique. Les désignations A/B varient selon les fabricants de transcepteurs : contrôler leur fiche technique.

Contrôler la terminaison hors tension en comprenant l'ensemble du bus. Mettre une résistance fixe sur tous les nœuds n'est pas une réparation universelle. Garder le point de mesure, les réglages et la fréquence d'échantillonnage dans le dossier.

VoieUtilitéErreur à éviter
A−BSignal différentiel sur câbleSupposer une polarité universelle du nom A/B
UART RX/TXOctets série décodésMauvaise masse ou mauvais niveau logique
DE et /REQui conduit le bus semi-duplexConfondre FIFO vide et fin du dernier bit d'arrêt
SENSETransition entre états non adressé et adresséInterpréter comme une simple entrée numérique
AlimentationCorrélation avec les redémarragesOublier les défauts de tension
03

Journaliser une transaction complète

Une trace exploitable indique l'hôte et le jeu, la référence de la carte, l'alimentation, les signaux de direction synchronisés, SENSE, les trames physiques encodées et les trames logiques vérifiées. Une simple capture du nom de la carte ne révèle pas l'origine d'une panne de découverte.

À 115200 bauds en 8N1, un caractère UART occupe environ 86,8 microsecondes (dix bits), avant les éventuels octets d'échappement. Cette durée de transmission ne représente pas le délai maximal accepté par tous les hôtes.

Étiqueter chaque trace : mesure de notre atelier, capture d'un tiers, résultat calculé à partir du firmware ou exemple synthétique. Les horodatages logiciels seuls ne démontrent pas la libération physique du bus.

Fiche de capture — champs à remplir, non des mesures
HÔTE / JEU :   <nom et révision>
CARTE E/S :     <numéro PCB, firmware, ordre dans la chaîne>
MATÉRIEL :      <sondes, fréquence, polarité A/B, tension>
TEMPS :         <dernier bit hôte> <DE nœud actif> <première réponse>
SENSE :         <avant F0> <sans adresse> <après F1>
TX HÔTE :       <octets physiques bruts>
RX/TX NŒUD :    <octets physiques bruts>
DE / /RE :      <instants d'activation et de libération>
LOGIQUE :       <E0, adresse, LEN, données, SUM décodés>
VALIDATION :    <somme, longueur, destination, rapports>
RÉSULTAT :      <défaut reproductible et reprise observée>
PREUVE :        MESURE / TIERS / SOURCE / SYNTHÈSE
04

Référence saine : reset, adresse, puis interrogation

Sur un bus courant à un seul nœud, l'hôte diffuse F0 D9 sans attendre de réponse, puis F1 avec l'adresse 01; le nœud admissible doit normalement envoyer son accusé. Les identifications, versions et capacités viennent ensuite.

La séquence calculée ci-dessous suppose un nœud fictif annonçant la version 1.1 des commandes. Elle sert à comparer les champs de paquets, non à représenter la temporisation réelle d'une carte Sega, Taito ou Namco.

Séquence saine synthétique — paquets logiques hexadécimaux
HÔTE -> TOUS    E0 FF 03 F0 D9 CB       reset F0 D9; pas de réponse
HÔTE -> NŒUD    E0 FF 03 F1 01 F4       F1 attribue 01
NŒUD -> HÔTE    E0 00 03 01 01 05       état 01, rapport 01
HÔTE -> NŒUD    E0 01 02 11 14          demander la révision
NŒUD -> HÔTE    E0 00 04 01 01 11 17    état 01, rapport 01, BCD 11

Trames calculées pour l'enseignement, pas des captures réelles.
05

Décoder LEN et échappements avant de condamner la trame

Chaque trame commence par SYNC E0. LEN compte les octets logiques après LEN, y compris la somme finale SUM. SUM est l'addition modulo 256 de l'adresse, LEN et des données décodées, sans le SYNC initial.

Après SYNC, E0 logique devient D0 DF et D0 logique devient D0 CF. Dans un corps contenant D0 E0, deux octets physiques supplémentaires apparaissent; la longueur logique ne change pas. Un D0 final sans octet suivant est un échappement incomplet, pas la preuve d'une commande inconnue.

L'exemple suivant est artificiel pour tester le décodeur, et ne représente pas une commande JVS valide à envoyer au matériel réel.

Vecteur de décodeur hors ligne — pas une commande applicative
LOGIQUE : E0 01 03 D0 E0 B4
             |  |  |-----|  +-- SUM B4
             |  |  +-- octets artificiels D0, E0
             |  +----- LEN 03 : deux données + SUM
             +-------- destination 01

PHYSIQUE : E0 01 03 D0 CF D0 DF B4
                   D0 -> D0 CF
                   E0 -> D0 DF

01 + 03 + D0 + E0 = 01B4 hex => SUM B4
LEN logique reste 03.
06

Silence après F0 ou silence après F1 : deux diagnostics

Une remise à zéro F0 valide ne reçoit normalement pas d'accusé. Déclarer une panne pour ce seul silence est une erreur. En revanche, F1 provoque habituellement une réponse du nœud non adressé admissible.

Si F1 n'obtient pas de réponse complète, vérifier la commande, la condition SENSE, la prise de direction RS-485 et l'adresse interne avant de compter un nouveau nœud. Le firmware Sega SP5001-B exige que FF5A vaille FF avant d'accepter F1; la correspondance physique de deux autres bits de P7 reste partiellement inconnue.

Une carte déjà adressée ne doit pas s'attribuer l'adresse de la suivante. Un problème multicarte exige donc d'examiner SENSE dans la chaîne, et pas seulement les bonnes réponses de la première carte.

ObservationHypothèse à examinerMesure suivante
Aucune réponse à F0Comportement normal du resetObserver SENSE après F0
Aucune réponse complète à F1Adresse/SENSE, réception ou changement de directionTX hôte, RX nœud, DE et SENSE
Accusé F1 puis ID absentAdresse incorrecte ou paquet défectueuxDestination, somme et historique des resets
Nœud 1 actif mais nœud 2 absentChaînage ou association des réponsesSENSE aval et échanges par nœud
07

Une mauvaise somme n'indique pas une carte absente

Une réponse peut arriver au complet avec une somme de contrôle incorrecte. La réponse de version se terminant par 17 est valide; modifier uniquement ce dernier octet en 18 la rend incorrecte sans changer les autres champs. Le diagnostic doit distinguer BAD_CHECKSUM de NO_RESPONSE.

Avant d'accuser le câblage, vérifier le décodage des échappements et les limites du paquet. Si les erreurs se concentrent sur le premier octet de réponse, comparer les transitions DE de l'hôte et du nœud. Une mauvaise somme ne prouve pas à elle seule une collision électrique.

Ne jamais accepter une réponse partielle comme preuve de découverte réussie. Conserver les octets bruts et le résultat du calcul séparément.

Somme correcte ou modifiée — vecteurs synthétiques
VALIDE : E0 00 04 01 01 11 17
SUM = (00+04+01+01+11) & FF = 17

INVALIDE : E0 00 04 01 01 11 18
                                ^^ somme reçue 18
             somme calculée = 17

Classement : BAD_CHECKSUM, pas NO_RESPONSE.
Cette réponse corrompue n'a pas été envoyée à une vraie carte.
08

Différencier erreur de trame, état général et rapport

Une somme valide ne garantit pas qu'une réponse vise la bonne destination. Un paquet de réponse normal est destiné à l'hôte 00; un paquet adressé à 02 peut être arithmétiquement correct et néanmoins inacceptable. LEN égal à zéro ou des données tronquées indiquent aussi un problème de structure.

Le premier octet de données de réponse est l'état du paquet : habituellement 01 normal, 02 commande inconnue, 03 erreur de somme et 04 dépassement. Même avec l'état 01, chaque commande possède son rapport : 01 réussite, 02 paramètre incorrect, 03 erreur de paramètre de données ou 04 occupé.

Notre étude de Namco WAJVIO Ver2.04 établit différentes valeurs d'erreur internes pour ces cas. Les réduire toutes à « carte JVS débranchée » empêcherait un diagnostic utile.

Trame ou observationClassement correctÀ ne pas confondre avec
E0 00 02 02 04État général 02, somme valideAbsence physique de réponse
E0 00 03 01 02 06État 01, rapport de commande 02Paquet entier corrompu
E0 02 04 01 01 11 19Somme correcte, destination inattendue 02Réponse valide destinée à l'hôte
LEN 00 ou données manquantesErreur de structure ou trame incomplèteFonction non prise en charge
SUM incorrecteDéfaut d'intégrité ou de décodagePreuve définitive d'un câble défectueux
09

SENSE exige une observation analogique

SENSE est un signal auxiliaire, distinct des données RS-485. Dans les réalisations courantes, on distingue une tension haute sans nœud admissible, une tension intermédiaire avant l'attribution et une tension basse après F1 réussi. Ces zones ne sont pas des seuils universels.

Sur notre Sega 838-13683-93 Rév.B étudiée, une branche passive à diodes et une branche active commandée par P7.2 produisent ces comportements. Le conducteur SENSE ne rejoint pas directement une broche logique du MCU. Une résistance qui produit la bonne tension sur un hôte peut ne pas convenir à un autre.

Pour plusieurs cartes en chaîne, mesurer SENSE avant et après chaque attribution. Une tension basse sur la première ne prouve pas que la carte suivante peut recevoir son adresse; les tensions doivent être mesurées par un instrument analogique approprié.

Comportement SENSEQuestion à examinerLimite
Haute avant raccordementRappel hôte présent et câble correct ?Pas de seuil universel
Intermédiaire avec nœudF1 atteint-il une carte non adressée admissible ?Ne garantit pas une réponse
Basse après F1Circuit actif bien enclenché ?Ne valide pas les nœuds suivants
Pas de transition / instableAlimentation, ouverture, connecteur, circuits SENSENe permet pas de conclure que le MCU est défectueux
10

Changement de direction RS-485 : collisions au premier octet

Une transaction JVS classique est semi-duplex. L'hôte transmet la requête puis libère son émetteur; le nœud adressé active ensuite le sien. Si le nœud moderne répond avant que l'hôte ait libéré la paire, la contention peut abîmer le premier caractère ou faire disparaître la réponse.

Sur la Sega SP5001-B Rév.B, le signal P3.6 commande DE et /RE du SP485 : bas pour recevoir, haut pour transmettre. Le firmware attend la fin physique de la transmission UART avant de retourner en réception. Libérer DE dès que la FIFO est vide peut tronquer le dernier bit d'arrêt.

Notre calcul statique pour la requête combinée 20 02 02 + 21 02 donne 0,378147 à 0,384386 ms depuis la disponibilité du dernier octet reçu jusqu'à l'écriture du premier octet de réponse dans SCBUF. Cela n'inclut ni la transmission UART, ni la propagation physique. La garde de 200 µs retenue par un prototype moderne n'est pas une exigence générale JVS.

Passage de relais RS-485 — schéma conceptuel sans échelle
UART HÔTE :  [ requête ][ STOP final ].......................
DE HÔTE :    =====================0...........................
BUS JVS :    [ signaux de l'hôte ]...repos...[ signaux du nœud ]
DE NŒUD :    ............................1=============0......
UART NŒUD :  .............................[ réponse + STOP ]....
                           ^         ^                 ^
                           |         |                 |
                      libération  activation      libération
                       par hôte   par nœud        par nœud

Comparer : dernier STOP hôte, DE hôte inactif, DE nœud actif,
dernier STOP nœud et DE nœud inactif. Aucune durée n'est dessinée.
11

Les délais dépendent de l'hôte et du type de temporisation

Un hôte peut surveiller le délai avant le premier octet, l'intervalle de silence entre deux octets, la durée totale de réponse ou le budget d'une image vidéo. Ces limites ne sont pas interchangeables. Le temps de traitement calculé pour une carte originale n'est pas la tolérance d'un autre système.

Nos dossiers décrivent une fenêtre d'inactivité du système Chihiro d'environ 2,432 à 2,560 ms et, séparément, un temps CPU d'environ 0,236816 à 0,243056 ms pour une requête isolée de boutons sur Sega SP5001-B. Il s'agit d'observations et déductions portant sur des fonctions différentes.

Une version expérimentale peut injecter séparément un délai initial et un silence entre octets, mais ces essais restent proposés pour USB2JVS et ne constituent pas des résultats mesurés sur tous les hôtes. Ne pas activer ces retards dans le micrologiciel commercial.

Repère temporelSignification établieCe que cela ne prouve pas
86,806 µs par caractère 8N1Durée calculée à 115200 baudsDélai maximal de réponse
~0,237–0,243 msCPU SP5001-B pour requête de boutons isoléeTolérance du système hôte
~0,378–0,384 msCPU SP5001-B pour boutons + piècesMesure physique faite à notre établi
~2,432–2,560 msFenêtre sans activité déduite du code ChihiroLimite NAOMI, Triforce ou JVS universelle
Garde logicielle 200 µsChoix d'un prototype au débit classiqueMinima exigé par la norme JVS
12

Une anomalie Sega : délai prévu contre fonctionnement réel du parseur

Le micrologiciel SP5001-A/B initialise un compteur de deux intervalles, soit environ 20 ms prévus pour recevoir le paquet. Ce compteur devrait être diminué par Timer1. Pourtant, notre analyse des instructions et du fonctionnement du processeur montre que le parseur reste dans l'interruption de réception sans permettre d'autre interruption masquable : Timer1 ne peut donc pas faire avancer le compteur au moment voulu.

Le SP5001 sans suffixe utilise une architecture d'interruption longue et Timer3 avec le même problème conceptuel. Le SP5002-A emploie plutôt une interruption courte par octet et une machine d'états; Timer3 peut alors imposer le délai nominal d'environ 10 ms. La famille plus ancienne 315-6215 Type-1 avait déjà une approche par octet : il ne s'agit pas d'une simple évolution chronologique.

C'est une conclusion statique solide à partir du firmware et des règles du CPU, mais nous n'affirmons pas avoir reproduit physiquement un blocage permanent sur une carte commerciale. Une simple panne intermittente ne permet pas d'attribuer ce mécanisme sans vérification.

Famille de firmwareArchitecture de réceptionRésultat de l'analyse
SP5001 sans suffixeISR de réception longue, Timer3 ~20 ms prévuLe compte à rebours ne progresse pas dans l'ISR
SP5001-A / SP5001-BISR de réception longue, Timer1 ~20 ms prévuMême obstacle d'imbrication des interruptions
SP5002-AMachine d'états, une interruption par octetTimer3 peut appliquer ~10 ms de réception
315-6215 Type-1Architecture antérieure par octetLa chronologie n'explique pas toute la filiation
13

Erreurs Namco et procédure de reprise reproductible

Notre reconstruction Namco WAJVIO Ver2.04 distingue un compteur public de redémarrage du bus, un compteur de réponses manquées par nœud et un compteur d'occupation du moteur. Cette DLL considère un nœud défaillant après 64 échecs de réception consécutifs; un seul paquet perdu n'est pas nécessairement une erreur fatale. Ses codes internes -22, -23, -24 et -25 séparent délai expiré, mauvaise adresse, longueur nulle et somme invalide.

La reprise doit préserver l'étape précise qui a échoué. Après restauration des paramètres sûrs de liaison, laisser l'hôte suivre sa procédure normale de reset et de redécouverte, puis contrôler à nouveau les identités et capacités. Ne pas réutiliser d'anciens états de boutons comme s'ils étaient toujours actuels.

Ce guide n'affirme pas que les prototypes USB2JVS sont électriquement qualifiés, ni que ces comportements ont été mesurés sur tous les systèmes Sega, Namco ou Taito.

  • Archiver hôte, version logicielle, PCB, firmware et configuration.
  • Conserver destination, trames complètes, sommes calculées et rapports.
  • Mesurer SENSE et la direction RS-485 si le premier octet manque.
  • Séparer la mesure du délai initial et du silence entre octets.
  • Commencer par un système à un nœud connu avant de tester les chaînes.
  • Ne jamais annoncer une compatibilité réelle sur la seule base de tests synthétiques.
Arbre de diagnostic — observations sans manipulation risquée
DÉBUT : hôte et carte identifiés, aucune intervention sous tension
   |
   +-- L'hôte transmet-il un signal RS-485 valide ?
   |       NON -> étudier alimentation, connecteur et émission hôte
   |       OUI
   v
   F0 visible ? -> observer SENSE; silence après F0 est normal
   |
   +-- F1 obtient-il un accusé valide ?
   |       NON -> SENSE, admissibilité, RX, temporisation DE
   |       OUI
   v
   ID / versions / capacités : LEN, SUM, état et rapports valides ?
   |       NON -> classer TRAME / ÉTAT / COMMANDE / ADRESSE
   |       OUI
   v
   Boutons/pièces : lectures conformes aux fonctions annoncées ?
   |       NON -> paramètres, câblage et exigences du jeu
   |       OUI -> référence saine; éprouver la reprise prudemment

Conserver séparément OCTETS PHYSIQUES et PAQUETS LOGIQUES.
Code interne WAJVIO 2.04Signification analyséePortée
-22Délai de réception expiréChemin d'une DLL Namco donnée
-23Destination de réponse autre que 00Adresse inattendue
-24Longueur LEN nulleTrame incorrecte
-25Somme de contrôle incorrecteErreur d'intégrité
64 échecs de réception successifsNœud non sain (-18)Compteur par nœud, pas une règle JVS
-19Moteur occupé/réentrantCompteur distinct des pannes du bus

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, champs et échappements JVS
  2. OpenJVS — implémentation et circuits SENSE
  3. OpenJVS — commandes et rapports JVS
  4. Texas Instruments — principes RS-485 et câblage
  5. Texas Instruments — erreurs UART lors du changement de direction RS-485
  6. Arcade-Projects — recherche matérielle SENSE et MEGA-JVS

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 ←