Un jeu ZX81 “caché” dans un vinyle

On continue avec les programmes cachés dans de l’audio. Cette fois, je reviens sur un disque que j’avais déjà présenté : Camouflage.

Je risque d’en parler plusieurs fois (et on devrait le voir dans un prochain Canard PC Hardware), certains disques des années 80 et 90 contiennent des données pour d’anciens ordinateurs. Pas de vraies pistes de données, mais des informations encodées directement dans la partie audio. Je vous mets des liens vers les précédents sujets.

Camouflage (ZX81)
Över Tid Och Rum (Atari 8 bits)
Everybody Loves Urusei Yatsura (ZX Spectrum)
Peace and love, inc. (texte caché)
Inner City Unit (ZX Spectrum)

Pour Camouflage de Chris Sievey, les données ne sont pas cachées : il est bien indiqué sur la pochette que les trois programmes pour ZX81 (un ordinateur du début des années 80) sont présents. Dans mon premier article, il y a environ 5 ans, j’expliquais que je n’étais pas arrivé à récupérer les données. Cette fois, j’ai persévéré.

La pochette

Première chose, il faut bien nettoyer le vinyle. Deuxième chose, je suis passé d’une platine basique (un modèle ION) à un modèle Sony un rien plus évolué (PS-LX300USB). Troisième chose, j’ai enregistré directement en mono (c’est important) avec une carte son USB plus efficace que l’USB de la platine. Avec tout ça, j’ai pu extraire sans erreurs le premier programme (Camouflage, une sorte de clip pour le titre principal du disque) et la version pour ZX81 1 ko de Flying Train (le troisième programme). Pour le second fichier, c’était plus… fastidieux.

Une analyse manuelle

La solution, c’est de charger le fichier WAV dans Audacity et de corriger manuellement. Pour essayer de faire simple : avec le ZX81, un 0 est codé avec 4 pulsations, un 1 est codé avec 9 pulsations, et il y a un blanc entre chaque groupe. C’est mieux expliqué là, mais l’idée est de chercher visuellement les erreurs, les endroits ou la lecture peut sembler compliquée. Je suis passé par un programme qui s’appelle ZX81 Tape Converter (en Java) et j’ai corrigé tous les endroits qui semblaient ambigus. Attention, il vaut mieux faire une modification, tester, puis ensuite la valider.

00010011


L’analyse du programme (il indique l’échantillon)


Une zone ambigue


Une zone à corriger

Du coup, j’ai passé le fichier en revue (~3 minutes) pour chercher les erreurs et faire un copier/coller d’une zone valable à la place. Heureusement, l’enregistrement était à peu près valable et j’ai dû modifier très peu de zones. Une fois les modifications effectuées dans le .wav, j’ai pu extraire des fichiers .p utilisables dans un émulateur avec ZX81 Tape Converter. je vous mets les trois fichiers ici.

Dernier petit souci, quand j’ai voulu synchroniser la piste audio avec l’image pour la vidéo, j’ai trouvé la chanson lente… avant de me rendre compte que si les données étaient enregistrées à 33 tpm, la musique, elle, devait être lue à 45 tpm. Pour la vidéo, j’ai joué un peu sur la vitesse de lecture pour synchroniser la vidéo et la musique, mais ce n’est pas parfait vers la fin, désolé.

On commence par Flying Train en version ZX81 1 ko, très basique. Dans cette version, il faut presser V pour descendre, et poser l’avion sur le train.

La seconde, c’est Flying Train en version ZX81 16 ko, avec une petite intro et une explication. C’est assez compliqué, mais le principe est le même : on doit descendre (avec V) ou tomber (avec C).

La troisième, c’est Camouflage, une sorte de clip interactif. J’ai synchronisé la musique (à peu près).