samedi 26 mai 2018

Transférer un jeu ZX81 pour y jouer sur émulateur



Premièrement, il vous faut une cassette en bon état et bien enregistrée (originale de préférence).


 

 Il vous faut une platine cassette (mono, c’est mieux !) : 

 Dans mon cas, j’ai utilisé ma chaîne hifi :

J’ai utilisé la sortie casque et un simple câble jack 3.5mm : 

Un ordinateur avec une entrée ligne (c’est plutôt facile à trouver)
Je l’ai fait sur mon PC windows. Pour l’acquisition de l’entrée ligne, j’ai utilisé « Smart PC Recorder » mais tout programme équivalent fera l’affaire.
Mes paramètres :
Enregistrement = entrée ligne
Sortie = 22050Hz 16bit mono

Pour avoir un retour du son pendant l’enregistrement, j’ai utilisé le fameux programme VLC :
Choisir :
Media -> Ouvrir un périphérique de capture et choisir l’entrée ligne :

Puis « Lire »

Il faut ajuster le volume de sortie casque pour que les pics du son remplissent toute la zone de l’oscilloscope vert comme sur la capture ci-dessous : 

En vidéo :

Vous aurez donc un fichier son (.wav sous windows).

Ensuite, il faut analyser et convertir ce fichier son.
Pour ma part, j’ai utilisé « ZX81 tape converter ». C’est un programme java. 


Une page lui est dédiée ici :
Faire un File->Open et charger votre fichier son.
L’analyse commence et vous aurez un bilan :

Le bouton ZX81 Listing vous montre le code source :


Et la vue du fichier son :


Un « 0 » est codé avec 4 pics (couleur turquoise)
Un « 1 » est codé avec 9 pics (couleur bleu foncé)
Le reste est ignoré.

Si tout va bien, vous pouvez sauvegarder votre code au format .P ou .TZX

Si c’est une cassette de mauvaise qualité, vous aurez ce genre de retours :



S’il n’y a pas trop d’erreurs, il est toujours possible de faire les corrections bit par bit… si vous avez une grande patience !
Par exemple, ce qui est au milieu de la zone ci-dessus n’a pas été correctement lu. Nous savons que c’est un « 0 » (4 pics).
Et voila, c’est réparé :

 Lorsqu’il y a beaucoup d’erreurs, un deuxième enregistrement avec un réglage différent peut aider : 


Le deuxième enregistrement est plus faible mais les deux derniers bit « 0 » sont mieux compris.
Parfois la bande est très abîmée avec un effet de vague :

Mais on reconnaît encore le codage… il y a sûrement un développement à faire pour reconnaître mieux le signal malgré les variations.
Par exemple, il faudrait faire un traitement sur le signal pour ramener les oscillations autour de la ligne bleue que j’ai tracé à la main. Cette ligne bleue serait ensuite la nouvelle référence (à transformer en axe des ordonnées) et le codage serait parfait.


Ensuite, pour l’émulateur, j’ai utilisé EightyOne 0.42 ou 1.10.
Pour la version 1.10, il faut charger la ROM :


Et pour éviter les lignes grises, aller dans Option -> TV Emulation et décocher la case « Enable »


Voici le résultat pour Argolath :

Jean-Stéphane MARTIN

2 commentaires:

  1. Bonne idée le traitement du signal selon ta ligne bleue. J'avais aussi quelques idées pour normaliser le signal, mais pas évident. Quand j'aurai le courage et le temps, c'est quelque chose que j'aimerais bien mettre en place. Dommage que tapeutils ne soit pas en open source (même si c'est facile de récupérer les sources depuis le jar ^^). Et du coup entre le Argolath sauvé et mes essais illisibles, ça permettrait d'avoir des exemples concrets ;)

    RépondreSupprimer
  2. Bravo et merci de votre travail qui me comble de bonheur de pouvoir enfin rejouer à Argolath.... 3X annees plus tard...

    RépondreSupprimer

Merci par avance pour votre commentaire, c'est sympa :)