Vendredi 12 juin 2026

JSD files : comment les ouvrir et les convertir

C
Par Cécile
5 min de lecture
JSD files : comment les ouvrir et les convertir

Un fichier JSD ouvert dans le mauvais logiciel affiche du charabia. C'est frustrant, mais évitable si on comprend ce qu'on manipule. Derrière l'extension .jsd, se cachent en réalité plusieurs formats très distincts, et les confondre mène droit dans le mur.

Comprendre les fichiers JSD et leur structure interne

Le format JSD le plus documenté vient du jeu Jagged Alliance 2, où il sert à stocker les propriétés physiques des objets du jeu (armure, points de vie, densité, orientation). Statistiquement, les utilisateurs qui cherchent à ouvrir ces fichiers se trouvent majoritairement aux États-Unis, sous Windows 10, avec Google Chrome. Ce n'est pas un hasard : la communauté de modding autour de ce titre reste active des années après sa sortie.

La structure interne est rigoureuse. L'en-tête fait exactement 16 octets, organisé ainsi :

Octets Contenu
1-4 Identifiant "J2SD"
5-6 Nombre de structures ou images
7-8 Nombre de structures stockées
9-10 Taille totale des structures
11 Drapeaux du type de fichier
15-16 Localités de tuiles d'image

Il existe trois types de fichiers JSD dans cet univers. Le type 1 contient uniquement des données auxiliaires (16 octets chacune), le type 2 uniquement des données structurelles, et le type 3 combine les deux. L'octet 11 encode ce type sous forme binaire : 00000001, 00000010 ou 00000011. Le type 2 est de loin le plus répandu, et c'est celui que l'éditeur JSD historique prend en charge.

Chaque tuile de structure occupe 32 octets, dont 25 dédiés aux données LOS (Line of Sight) dans un tableau 5x5, soit 5 lignes et 5 colonnes. Chaque octet de ce tableau prend une valeur de 0 à 15, les 4 bits indiquant si chaque sous-cellule est occupée. Chris Camfield d'IFORCE Games l'a bien résumé : c'est cette information centrale qui détermine si un personnage peut voir ou traverser un objet.

Les données structurelles portent aussi des valeurs d'armure allant de 0 à 26 (index dans le tableau gubMaterialArmour), une densité de 0 à 100, et des drapeaux sur 4 octets couvrant 32 types distincts : mur, porte, véhicule, arbre, clôture, toit incliné... La granularité est impressionnante pour un jeu sorti à la fin des années 1990.

Le format JSD vu du côté dev : la bibliothèque NASA JPL pour EtherCAT

Le même acronyme désigne une bibliothèque de développement bien différente. NASA JPL a créé JSD (Simple Open EtherCAT Master) pour interfacer des appareils EtherCAT sur des systèmes POSIX. Si vous tombez sur un dépôt de fichiers JSD dans un contexte robotique ou embarqué, c'est probablement cette version qui vous concerne.

La bibliothèque supporte plusieurs plateformes testées : Ubuntu 16.04, 18.04, 20.04, 22.04, 24.04, et Raspberry Pi. Elle repose sur deux dépendances principales : SOEM et CMake en version 3.11 minimum. Attention, l'utilisation de PThreads invalide JSD sur certaines plateformes SOEM. Les mainteneurs ne visent que les environnements POSIX, ce qui exclut Windows.

Les appareils compatibles sont classés en trois niveaux :

  1. Tier 1 : appareils pleinement supportés dès la version 1.0.0 (dont Elmo Gold Drives)
  2. Tier 2 : appareils ajoutés progressivement, par exemple EL3356 dès la v1.1.0, JED JPL EtherCat Device dès la v1.2.0, ATI Force-Torque Sensor dès la v1.4.0, EL1008 dès la v2.3.4
  3. Tier 3 : appareils comme EL2798 et EL2828, disponibles dès la version 3.1.5

Elmo Platinum Drives nécessite quant à lui la version 2.2.0 au minimum. Ce n'est pas un détail à ignorer si vous intégrez du matériel existant dans un nouveau projet.

Construire, tester et contribuer aux fichiers dev JSD

Pour compiler la bibliothèque depuis les sources, la procédure passe par Git, avec SOEM et CMake 3.11 comme prérequis. Sur Ubuntu, la dépendance optionnelle libreadline-dev active des fonctionnalités supplémentaires. Les tests unitaires se lancent via l'option CMake BUILDJSDTESTS=ON suivie de make test. Pour la vérification mémoire, on utilise valgrind.

Deux outils méritent une attention particulière. jsdslaveinfo inspecte les appareils connectés et liste notamment la cartographie PDO active avec l'option -map. C'est l'outil de diagnostic de base. jsdegdtlctty, de son côté, est un terminal pour Elmo Gold Drive Two-Letter Command : il réplique le comportement de l'Elmo Application Studio sous Windows, mais fonctionne sous Linux via la bibliothèque GNU Readline. Franchement, pour quiconque veut se passer d'un PC Windows en atelier, c'est un gain réel.

Côté contribution, les conventions sont strictes. Chaque branche doit porter le préfixe USER- (par exemple USER-mon-pilote). Tous les enums, structs et fonctions portent le préfixe jsd_. La documentation Doxygen est obligatoire pour les fonctions et structs. Je déconseille fortement de négliger ce point : les reviewers le bloquent systématiquement. L'outil clang-format doit être exécuté avant toute demande de fusion, sans exception.

JSD adopte le versioning sémantique : les versions majeures signalent des ruptures d'API, les mineures introduisent de nouvelles fonctionnalités sans casser l'existant, les patches corrigent des bogues. Cette logique aide à anticiper l'impact d'une mise à jour sur un projet en production. Pour aller plus loin sur l'optimisation des performances dans des environnements contraints, la question de l'isolation thermique et acoustique revient souvent dans les projets embarqués industriels : le principe de réduction des déperditions s'applique aussi bien à l'énergie qu'aux signaux, comme l'illustre bien cet article sur le triple vitrage et son efficacité contre les déperditions thermiques.

L'auteur

C

Cécile

Rédaction de Le JSD.

Partager cet article