2013-06-17_062043Je vous propose aujourd'hui un nouvel utilitaire développé encore une fois avec AutoHotkey. Pump Up the Volume ! (puisque c'est son nom) devrait simplifier la vie de tous ceux manipulant des images .dsk. Il n'est pas rare en effet de tomber sur certaines qui refusent tout simplement de booter sous émulateurs (comme AppleWin par exemple) car le numéro de volume attendu est différent du $FE (254) par défaut. C'est le cas notamment de la série de disquettes Pom's mais aussi de quasiment tous les Quest (King's Quest, Space Quest, Police Quest) et beaucoup d'autres jeux de chez Sierra (Leisure Suit Larry, Manhunter, etc.) ou d'ailleurs. Tous ceux ayant été confrontés à ce genre de problème connaissent déjà très probablement dsk2nib, l'excellent convertisseur de DSK vers le format NIB (préservant, lui, le volume) écrit par Jean-Marc Boutillon. Et bien, Pump Up the Volume essaie, pour un .dsk donné, de le reconnaître et lance automatiquement dsk2nib pour effectuer la conversion vers le format nibble en intégrant bien évidemment le bon numéro de volume !
[article mis à jour le 17.06.2013]

Pump Up the Volume ! se compose de trois éléments distincts :

  • PumpUp.ahk : le script AutoHotkey en lui-même (il faut bien évidemment que AutoHotkey soit installé sur votre PC). Il existe aussi une version exécutable directement (PumpUp.exe) ne nécessitant pas l'installation d'AutoHotkey, l'exe regroupant à la fois le script et le runtime.
  • PUV-List.txt : le fichier de configuration (format texte) contenant la base de données (même si le mot est un peu pompeux) avec les images .dsk actuellement reconnues. Ce fichier est totalement modifiable et peut être étendu avec de nouvelles entrées pour de nouvelles images.
  • dsk2nib.jar : le programme de Jean-Marc (dans une version très légèrement modifiée par mes soins) permettant de convertir les .dsk en .nib. C'est lui qui fera tout le boulot en fait. Il faut bien entendu que Java soit installé correctement sur la machine pour le fonctionnement de dsk2nib.jar.

Veillez à bien avoir ces 3 fichiers dans le même répertoire avant de lancer Pump Up the Volume !

PUV-List.txt :

Le grand intérêt de Pump Up the Volume ! est de pouvoir compléter facilement le fichier de configuration avec de nouvelles entrées pour étendre sa capacité de reconnaissance.

Chaque ligne du fichier est une entrée correspondant elle-même à une (ou plusieurs) images .dsk. La syntaxe est simple : chaque entrée est composée de 4 parties, chacune devant être séparée de l'autre par un point virgule (;) ou une tabulation (touche TAB) :

  • partie 1 - l'offset (exprimé en hexadécimal) de la suite d'octets à rechercher dans le fichier .dsk. 
  • partie 2 - la suite d'octets à rechercher (octets également en hexa et de la forme XX, exemple 01 ou AB). Chaque octet à rechercher doit être coller au précédent.

Ces deux éléments servent donc à identifier le .dsk. Le couple offset/octets doit donc être choisi judicieusement...

  • partie 3 - l'information concernant le volume en lui-même. Cette valeur peut prendre deux formes : soit directement le numéro de volume (toujours en hexa), soit l'offset auquel il peut être localisé dans le fichier .dsk. Dans ce cas, la valeur indiquée doit être précédée d'un & pour signaler que l'on a à faire à un offset et non à la valeur du volume directement.
  • partie 4 - le nom (ou bien un commentaire) associé à l'image en question et qui sera affiché par Pump Up the Volume ! lors du traitement.

 

Exemples extraits du fichier PUV-List : 

Voyons maintenant plusieurs exemples afin de bien comprendre la syntaxe d'une entrée :

Exemple 1 : 1E8 016001 01 DOS 3.3

  • partie 1 - 1E8 : on va donc rechercher à l'offset $1E8 du fichier .dsk (en partant du début)...
  • partie 2 - 016001  : ... la chaîne d'octet 016001

si cette suite d'octet est trouvée à l'offset donné, alors

  • partie 3 - 01 : valeur du volume à utiliser en argument pour dsk2nib.jar. Pump Up the Volume ! va alors générer un .nib avec 01 pour volume. Il n'y a pas de & devant le 01, c'est donc le numéro de volume direct qui est utilisé.
  • partie 4 - DOS 3.3 : informations affichées par Pump Up the Volume ! lors du traitement permettant ainsi de suivre ce qu'il a reconnu...

 

Exemple 21E8 016001 &1EB DOS 3.3

  • partie 1 - 1E8 : comme précédemment, on va rechercher à l'offset $1E8 du .dsk...
  • partie 2 - 016001 : ... la chaîne d'octets 016001

si cette suite d'octets est trouvée à l'offset donné, alors

  • partie 3 - &1EB  : on va lire l'octet en position $1EB pour y trouver le volume. On n'utilise donc pas directement 1EB mais la valeur contenue à cette position dans le fichier.
  • partie 4 - DOS 3.3 : informations affichées lors du traitement.

Pourquoi avoir prévu l'option & ? Tous les .dsk utilisant un DOS 3.3 classique seront sous la même forme et contiendront en $1E8 la table RWTS avec ces fameuses valeurs 016001. Mais, ils n'auront pas tous pour autant le même numéro de volume. Plutôt que d'avoir une entrée par disquette, l'idée est de permettre à Pump Up the Volume ! de reconnaître qu'il a à faire à une disquette DOS 3.3 et d'y chercher tout seul le numéro de volume au bon endroit ($1EB). Une seule entrée pour toutes les disquettes DOS en somme ! Et on peut bien sûr étendre ce principe à d'autres disks...

 

Exemple 3E000 1234!00 &E002 King's Quest III (Faces B/G)

  • partie 1 - E000 : offset de recherche (toujours en partant du début du fichier .dsk).
  • partie 2 - 1234!00 : attention ici une petite variante. On doit bien trouver $12 et $34 pour les deux premiers octets (en $E000 et $E001 donc). Mais en $E002, il ne faudra pas y trouver 00. Le modificateur permet donc de spécifier un octet que l'on ne veut pas rencontrer pour que la correspondance soit correcte. 123410 sera donc reconnu positivement, 123401 aussi. Mais 123400 ne sera pas accepté.
  • partie 3 - &E002 : offset auquel se trouve le numéro de volume voulu. 
  • partie 4 - King's Quest III (Faces B/G) : cet exemple correspond effectivement à certaines disquettes de King's Quest III.

Le modificateur ! permet d'éviter les faux-positifs lors de la recherche d'octets avec des disquettes dans lesquelles on retrouve des similitudes comme par exemple les jeux Sierra.

[mise à jour du 17.06.2013] : l'ajout du drag and drop avec la version 0.61 m'a fait revoir l'utilisation de base du programme. Celle-ci reposant désormais principalement sur le glisser-déposer, il n'était plus nécessaire d'ouvrir systématiquement au lancement la boite de sélection de fichiers. J'ai donc dû ajouter un bouton pour obtenir l'action. L'aspect général du programme ayant alors changé, j'ai updaté l'article avec les nouveaux screenshots modifiant deci delà certaines choses.

Résumé des fonctionnalités de Pump Up the Volume ! :

  • traitement multi-fichiers des .dsk.
  • support du drag and drop (depuis version 0.61).
  • reconnaissance des .dsk par comparaison d'octets.
  • base de données au format texte qui peut être facilement modifiée et complétée.
  • possibilité de recharger la base après lancement pour tester les modifications sans relancer le programme (depuis version 0.71).
  • support des modificateurs de comparaison ! (ne doit pas correspondre) et * (ignorer).
  • récupération du volume depuis le .dsk possible (entrée unique dans la base pour plusieurs .dsk).
  • entrée manuelle du numéro de volume si non reconnaissance du .dsk depuis la base de données.
  • affichage des informations dans une fenêtre Windows (y compris celles de dsk2nib).
  • lancement de dsk2nib.jar en fenêtre cachée.
  • volumes supportés de 0 à 255.
  • version script AHK (nécessite l'installation de AutoHotkey) ou EXE autonome.

 

Téléchargements :

Les éléments étant susceptibles d'évoluer séparément au gré des mises à jour et des corrections de bugs, les liens sont également séparés.

PumpUp.ahk (script AHK) / PumpUp.exe (script AHK en format Exe)

  • 29.05.2013 : version 0.60 - première release publique.
  • 03.06.2013 : version 0.61 - ajout du drag and drop.
  • 17.06.2013 : version 0.71
    1. modification de l'interface : il n'y a plus ouverture automatique de la boite de dialogue de sélection lors du lancement. Ajout du bouton Open .dsk Files pour cette action.
    2. ajout du bouton Reload Database pour recharger la base de donnée (et donc pouvoir effectuer des modifications de la base à la volée). Ce bouton permet également d'effacer l'écran d'infos.
    3. corrections de bugs/ajouts mineurs.

 

PUV-List.txt

  • v01062013

 

dsk2nib.jar (auteur : Jean-Marc Boutillon)

  • v20130515 : version 20081114 légèrement modifiée.

 

Screenshots :

2013-06-17_061619

 

 

Au lancement du programme, la fenêtre principale indique que la fichier Database a été chargé correctement (si tout se passe bien) ainsi que la présence de disk2nib.jar. À partir de ce moment là, Pump Up the Volume ! est en attente. Vous pouvez y glisser le ou les fichiers à traiter par drag-n-drop...

Pump Up the Volume ! (sélection des fichiers .dsk)

 

 

 

Ou cliquer sur le bouton "Open .dsk Files" pour ouvrir la fenêtre de sélections de fichiers. On peut bien évidemment en sélectionner plusieurs.

On remarque ici que c'est la version EXE de Pump Up the Volume ! qui est lancée, l'icône n'est pas le petit H par défaut, typique des scripts AutoHotkey mais l'icône générique de Control-Pomme-Reset !

 

 2013-06-17_061928

 

 

Si Pump Up the Volume ! ne trouve aucune correspondance, il propose une entrée manuelle pour le volume. Si vous ne faites rien, cette boite de dialogue se fermera automatiquement et le traitement des autres fichiers continuera...

dsk2nib

 

 

dsk2nib de Jean-Marc Boutillon (ici lancé en ligne de commande et non par Pump Up the Volume !) dans sa version modifiée. Les plus observateurs auront remarqué que la plage de valeurs acceptées en entrée, a été augmentée en y intégrant 0 et 255. Bien sûr, ces deux extrêmes sont en dehors des spécifications DOS mais pourront être utiles pour certains programmes.
Seconde modification apportée : le programme renvoie maintenant un 1 en cas d'erreur et un 0 si tout s'est passé correctement. Ces codes sont récupérés par Pump Up the Volume ! pour savoir ce qu'il en est du traitement du .dsk.

Bad Volume (DOS 3.3)

 

L'erreur classique rencontrée avec un boot de DOS 3.3 qui n'a pas le volume attendu...Le DOS Coldstart exécuté à la fin du chargement plante lamentablement en $9D88 car rien n'a été chargé ! Si vous rencontrez ce genre d'écran au lancement d'un .dsk, la probabilité que le volume voulu ne soit pas $FE est grande...

Bad Volume (Rescue Raiders)

 

 

 

Autre grand client des problèmes de volume, le toujours très apprécié Rescue Raiders qui ne se lance pas directement en version .dsk et affiche cet écran après un joli plantage.