31 janvier 2024

Un décompresseur utilisable simplement en Basic sur Amstrad CPC

Par Claire CheshireCat

Il y a quelques jours, Eric Cubizolle a lancé un appel à l’aide sur Facebook concernant un problème de compression d’image. Alors qu’on a au moins une dizaine de compresseurs/décompresseurs sur CPC, il n’en existe pas d’utilisables facilement en Basic. Sauf peut-être ConvimgCPC qui est plutôt un convertisseur d’images. Rien de simple à utiliser pour le commun des mortels. Voici donc DZX0, qui devrait combler ce manque !

Autant le dire tout de suite, le plus gros du travail est l’oeuvre de Einar Saukas et Urisergi. J’ai juste wrappé leur décompresseur pour le rendre utilisable via le Basic. La petite subtilité (Il fallait bien que je m’amuse un peu) réside dans le fait que la routine fonctionne quel que soit l’endroit où vous l’exécutez. Ainsi vous pourrez la mettre dans un petit coin de la RAM, voire même dans la mémoire écran si la place manque vraiment. La routine fonctionnera sans soucis. Pour l’utiliser c’est très simple : un CALL [Adresse de dzx0],[Adresse des données compressées],[adresse où décompresser les données] suffira. Le décompresseur ne bloque pas les interruptions, ce qui fait qu’il peut fonctionner en même temps qu’un player musical, par exemple.

Voici un exemple de code minimal :

ASM
10 MEMORY &3FFF
20 LOAD"DZX0.BIN",&4000
30 LOAD"SHINOBI.ZX0",&4086
40 CALL &4000,&4086,&C000

Pour compresser les données il vous suffira de le télécharger et de l’exécuter en ligne de commande via un « zx0 [nom du fichier à compresser] ». Il vous créera alors un fichier en « .zx0 » que vous pourrez décompresser avec dzx0 sur CPC.

Le DSK contient un programme d’exemple. Il décompresse l’image d’Eric Cubizolle en guise de démonstration (Image fournie avec son accord bien entendu).