MSX Village forum

La Place des Développeurs Décompression Pletter (DSK2ROM) Help pour convertir de l'asm Z80 en C

Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 19/02/2024 à 14h51
Bonjour à tous, j'ai dumpé un jeu il y a peu et j'ai vu en regardant avec mon éditeur hexa que c'était un jeu au format disquette créé avec dsk2rom.
Au début je me suis dit "Haha je vais virer le header pour récupérer l'image dsk à partir de la rom", mais pas de bol la rom a été créée avec l'option -c 1, concrètement ça calcul le hash de chaque secteur et si jamais il y a plusieurs secteurs avec le même hash alors il ne le stocke qu'une fois et il crée une table avec les correspondances pour chaque secteur. C'est malin mais c'est pas pratique pour récupérer l'image dsk du coup.
Donc au final j'ai pris le code source de l'application de création des roms et j'ai écrit du code pour pouvoir recréer le .dsk à partir de la rom. Super je suis content et ça marche bien et j'ai fait un fork du projet d'origine en ajoutant une option -r pour reverse la conversion dsk2rom :
https://github.com/sylverb/dsk2rom
./dsk2rom -r game.rom game.dsk
dsk2rom.exe -r game.rom game.dsk

Voilà c'est super je suis content sauf qu'il existe une option -c 2 qui en plus de ce que fait -c 1 compresse les secteurs avec un algo appelé pletter (je ne connaissais pas), qui semble être un truc basé sur du lzss. Bref c'est bien beau mais c'est quoi le soucis ? Et bien dans dsk2rom il n'y a que le code de compression en C++, le code de décompression n'est pas dispo (donc pas possible de revenir en arrière sur la conversion sans ça). Ha pas tout à fait, il y a un code de décompression en assembleur Z80 ! Sauf que j'ai tenté quelques trucs mais rien à faire je n'arrive pas à faire le code équivalent à ce code assembleur dans une version C ou C++ :(

Du coup je me demandais si quelqu'un voulait bien me venir en aide en écrivant le code C qui fait l'équivalent de ce code assembleur :
https://github.com/sylverb/dsk2rom/blob/master/pletter/unpack.asm

Merci d'avance à ceux qui pourront m'aider à finaliser ça :)

PS : j'ai demandé à chatgpt, mixtral et Cie, et c'était pas fameux du tout ...
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5484

Le 20/02/2024 à 16h54
je pense que aoineko as, dû intégrer Pletter dans sa lib C.


banniere-ericb59e
Site web    
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 20/02/2024 à 18h31
Merci pour le tuyau, je viens de regarder et à priori il a juste intégré la partie compression pletter, donc au final ça m'avance pas à grand chose :(
   
Mokona Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 16/10/2022 à 15h02

Messages: 9

Le 20/02/2024 à 21h40
Hello, aoineko m'a justement signalé ce message hier. Je m'étais dis que si personne ne s'était proposé avant, je m'y collerai :) J'ai un peu regardé le code Z80 du décompresseur et ça me semble faisable (et j'avais envie de regarder ce que Pletter faisait de différemment de ZX0 justement, par curiosité).

Je vais regarder ça.
   
Mokona Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 16/10/2022 à 15h02

Messages: 9

Le 21/02/2024 à 00h34
Voilà, c'est ici : https://gitea.zaclys.com/Mokona/Unpletter/src/branch/main/unpletter

Notes d'implémentation : je suis parti de la version de pletter qui est dans MSXgl. Il y a une note dans l'unpacker de dsk2rom qui semble dire que le schéma a été un peu adapté. J'ai l'impression que la valeur de "q" (la largeur max de l'offset) n'est pas lue depuis les données, mais fixée à 9... ça peut tout décaler le flux.

Ce qui est compressé avec le pletter de MSXgl (qui est aussi dans le dépôt pour référence) se décompresse avec unplotter.cpp (version C++ de base de travail) et unplotter_c.c (que j'ai rapidement convertie).

Si ça ne décompresse pas ce que compresse dsk2rom, je veux bien regarder un fichier de référence pour adapter le code (mais plus tard).
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 21/02/2024 à 14h21
Merci Mokona ! :top

J'ai effectivement ajouté Pletter a MSXgl, mais que le décompresseur en assembleur.

Et autant je me débrouille pas trop mal pour écrire du code assembler autant traduire en C un code assembleur aussi optimisé m'aurait été difficile.

Heureusement que Mokona est là. ^^


On est toujours ignorant avant de savoir.
Github    
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 21/02/2024 à 16h52
Mokona :
Voilà, c'est ici : https://gitea.zaclys.com/Mokona/Unpletter/src/branch/main/unpletter

Notes d'implémentation : je suis parti de la version de pletter qui est dans MSXgl. Il y a une note dans l'unpacker de dsk2rom qui semble dire que le schéma a été un peu adapté. J'ai l'impression que la valeur de "q" (la largeur max de l'offset) n'est pas lue depuis les données, mais fixée à 9... ça peut tout décaler le flux.

Ce qui est compressé avec le pletter de MSXgl (qui est aussi dans le dépôt pour référence) se décompresse avec unplotter.cpp (version C++ de base de travail) et unplotter_c.c (que j'ai rapidement convertie).

Si ça ne décompresse pas ce que compresse dsk2rom, je veux bien regarder un fichier de référence pour adapter le code (mais plus tard).

Ha c'est génial merci, je vais tester tout ça merci :) Edité par Sylver Le 21/02/2024 à 16h55
   
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 21/02/2024 à 18h39
Bon alors verdict : ça marche pas fort :( Mais en faisant une petite modification, j'ai réussi à avoir un truc qui fonctionne sous certaines conditions (que je ne connais pas)

Par la suite les dump sont les données représentées au format hexadécimal
Je donne un exemple : le 1er secteur de 512 octets compressé par dsk2rom avec l'option -c 2 :
Uncompressed : sector_size = 512
EB FE 90 44 53 4B 54 4F 4F 4C 20 00 02 02 01 00 02 70 00 A0 05 F9 03 00 09 00 02 00 00 00 D0 ED 53 59 C0 32 C4 C0 36 56 23 36 C0 31 1F F5 11 79 C0 0E 0F CD 7D F3 3C CA 63 C0 11 00 01 0E 1A CD 7D F3 21 01 00 22 87 C0 21 00 3F 11 79 C0 0E 27 CD 7D F3 C3 00 01 58 C0 CD 00 00 79 E6 FE FE 02 C2 6A C0 3A C4 C0 A7 CA 22 40 11 9E C0 0E 09 CD 7D F3 0E 07 CD 7D F3 18 B2 00 4D 53 58 44 4F 53 20 20 53 59 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 6F 74 20 65 72 72 6F 72 0D 0A 50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 66 6F 72 20 72 65 74 72 79 0D 0A 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Compressed : plet_size = 181
EB 00 FE 90 44 53 4B 54 4F 4F 02 4C 20 00 02 02 01 03 00 70 00 A0 05 F9 03 00 09 90 09 00 00 D0 ED 53 00 59 C0 32 C4 C0 36 56 23 00 36 C0 31 1F F5 11 79 C0 00 0E 0F CD 7D F3 3C CA 63 03 C0 11 00 01 0E 1A 10 0B 21 34 22 87 C0 1C 21 00 3F 1C 27 C4 10 C3 18 58 20 C0 CD 3C 79 E6 FE FE 04 02 C2 6A C0 3A 3F A7 04 CA 22 40 11 9E 1E 09 C3 1E 0E 07 00 04 18 B2 00 4D 53 58 04 44 4F 53 20 20 61 53 6F 00 C0 00 42 6F 6F 74 20 00 65 72 72 6F 72 0D 0A 50 00 72 65 73 73 20 61 6E 79 12 20 6B 65 03 66 12 42 20 10 74 72 79 18 35 24 00 FD CF 00 FF FF FF F8


Si je me fais un petit fichier binaire avec le contenu compressé et que je lance l'appli compilée à partir de unpletter_c.c, je récupère des données qui ne sont pas celle d'origine (j'ai modifié légèrement le code c pour afficher %02X à la place de %c car c'est du binaire que j'ai en entrée et pas du texte pur) :
FE 00 00 00 00 00 00 4B 00 00 4F 02 00 00 00 00 00 00 00 00 20 00 01 03 00 70 00 02 00 02 00 03 00 09 90 00 00 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 00 00 00 00 00 00 00 00 00 00 56 23 00 36 02 00 03 F5 00 00 00 79 00 00 00 00 00 00 00 00 00 03 F5 00 00 00 79 00 00 00 7D F3 CA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F3 CA 00 00 00 00 00 00 F3 CA 00 00 00 00 00 00 07 00 FE 00 00 00 79 00 79 0E 1A 0B 21 34 C0 1F 00 00 1C 00 3F 00 00 00 00 00 20 00 01 27 34 C0 1F 00 00 1C 00 3F 00 00 00 7D 00 00 CA 58 34 C0 1F 00 00 1C 00 00 00 00 00 00 00 56 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE 00 FE 00 00 FE 00 00 FE 00 FE 00 00 FE 00 00 FE 00 FE 00 00 FE 00 00 FE 00 FE 00 C2 6A C0 3A C0 A7 CA 22 40 11 9E 00 00 00 00 FE 0E 11 9E 00 07 00 18 B2 00 4D 53 58 44 53 00 FE 20 00 00 20 00 01 27 34 C0 1F 00 00 1C 00 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 6F 20 00 00 FE 00 00 00 72 72 6F 6F 20 00 00 FE 00 00 00 72 72 6F 50 72 65 00 FE 00 00 FE 00 FE 00 00 FE 00 00 FE 00 FE 00 C2 6A C0 00 18 B2 00 00 79 20 6B 65 20 53 58 44 53 00 FE 20 00 18 B2 00 4D 53 58 44 53 00 FE 20 00 00 65 00 20 72 79 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


J'ai l'impression qu'il y a déjà un soucis, c'est que dans tous les cas le 1er octet des données compressées est le même que le 1er octet des données brutes, j'ai vérifié en regardant un bon paquet de données de compression et c'est toujours le cas, sauf que dans ton code les getBit pour récupérer la q_value décalent les choses ...
J'ai testé en ne récupérant pas la q_value (pas d'appel à getBit et initialisation de q_value à différentes valeurs entre 1 et 6), et miracle le 1er secteur est toujours bien décompressé (quelque soit la valeur de q_value) ! Par contre sur tous les secteurs, certains secteurs se décompressent bien avec cette modification mais pas tous ... Certains secteurs se retrouvent a être une répétition du premier octet ... et en fonction de la valeur de q_value, le résultat global n'est pas le même (mais le 1er secteur lui est toujours bien décompressé).

Peut-être que tout ça peut te donner des pistes sur le truc qu'il manque pour que ça fonctionne bien ... Si tu veux que je tente des choses, n'hésite pas à demander ! Edité par Sylver Le 21/02/2024 à 18h40
   
Mokona Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 16/10/2022 à 15h02

Messages: 9

Le 21/02/2024 à 22h01
Hello,

cela confirme ce que je pensais sur la modification (je suis aussi aller vérifier le code pletter de dsk2rom, qui est légèrement différent).

Pour avoir une décompression qui fonctionne (presque) sur l'exemple que tu donnes, il faut en effet ne pas lire 'q_value' (qui est en dur dans l'unpack de dsk2rom) et commencer par un getByte(), mais aussi mettre dataPosition = 1 (plutôt que 2) juste après.

En effet, ce Pletter modifié décale tout de 1 en n'écrivant pas la 'q_value'.

J'ai essayé, ça fonctionne (je vais modifier le code dans le soirée sur le dépôt pour prendre en compte la différence).

MAIS ! À la décompression, j'ai toutes les données jusqu'au 00 répétés... qui ne sont pas entièrement décompressés. Je vais fouiller.
Edité par Mokona Le 21/02/2024 à 22h17
   
Mokona Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 16/10/2022 à 15h02

Messages: 9

Le 21/02/2024 à 22h59
J'ai ajouté un "dsk2rom_tweak" dans l'algo (dispo dans le dépôt, uniquement sur la version C++) pour montrer le changement qu'il faut effectuer.

Ça décompression bien... mais ça s'arrête avant la fin, à pile 100 octets. Tout le reste est bon, et la suite est de toute façon entièrement constituée de 0, mais ça m'intrigue.

Je n'ai pas trouvé de partie spécifique dans dsk2rom qui enlève des 0 en fin de secteurs. Regarde déjà si tu as de meilleurs résultats avec la modif.

J'ai aussi ajouté un README.md dans le dossier unpletter qui donne un aperçu de ce qu'on trouve dans un fichier Pletter.

À partir de là, on peut assez "facilement" lire le début du fichier compressé :

EB -> le premier octet est toujours copié tel quel
00 -> les 8 prochains octets seront copiés tel quel (FE 90 44 53 4B 54 4F 4F)
02 -> les 6 bits hauts sont des zéros, donc les 6 prochains octets seront copiés tel quel (4C 20 00 02 02 01)
02 (toujours, mais on lit maintenant le bit 1) -> il y a une back référence, dont la longueur est le prochain "gamma" dans le bit stream. C'est le bit qui suit (le 0), ce qui vaut 2. La distance est l'octet suivant (03) + 1 (donc 4). On revient 4 en arrière et on copie les deux octets qui sont là (00 02)
00 -> les 8 prochains octets seront copiés tel quel (70 00 A0 05 ... etc)
   
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 22/02/2024 à 08h33
Merci j'ai intégré tes modification dans mon code en C (j'utilise la version en C pour le moment) correctement j'espère, mais j'ai toujours un soucis dans un cas qui semble être que les données compressées sont identiques aux données décompressées :
Uncompressed : sector_size = 512
F9 FF FF FF 4F 00 05 60 00 07 80 00 09 A0 00 0B C0 00 0D E0 00 0F F0 FF FF 2F 01 13 40 01 15 60 01 17 80 01 19 A0 01 1B C0 01 1D E0 01 1F F0 FF 21 20 02 23 40 02 25 60 02 27 80 02 29 A0 02 2B C0 02 2D E0 02 2F F0 FF 31 20 03 33 40 03 35 F0 FF 37 80 03 39 A0 03 3B C0 03 3D E0 03 3F 00 04 41 20 04 43 40 04 FF 6F 04 47 80 04 49 A0 04 4B C0 04 4D E0 04 4F 00 05 51 20 05 53 F0 FF 55 60 05 57 80 05 59 A0 05 5B C0 05 5D E0 05 5F 00 06 61 20 06 63 40 06 65 60 06 67 80 06 69 A0 06 6B C0 06 6D E0 06 6F 00 07 71 20 07 73 40 07 75 60 07 77 80 07 79 A0 07 7B C0 07 7D E0 07 7F 00 08 81 20 08 83 F0 FF 85 60 08 87 80 08 89 A0 08 8B C0 08 8D E0 08 8F 00 09 91 20 09 FF 4F 09 95 60 09 97 80 09 99 A0 09 9B C0 09 9D E0 09 9F 00 0A FF 2F 0A A3 40 0A A5 60 0A A7 80 0A A9 A0 0A AB C0 0A AD E0 0A FF 0F 0B B1 20 0B B3 40 0B B5 60 0B B7 80 0B B9 F0 FF BB C0 0B BD E0 0B BF 00 0C C1 20 0C C3 40 0C C5 F0 FF C7 80 0C C9 A0 0C CB C0 0C CD E0 0C CF 00 0D D1 20 0D FF 4F 0D D5 60 0D D7 F0 FF D9 A0 0D DB C0 0D DD E0 0D DF 00 0E FF 2F 0E E3 40 0E E5 60 0E E7 80 0E E9 A0 0E EB C0 0E ED E0 0E EF 00 0F F1 20 0F F3 40 0F F5 60 0F F7 80 0F F9 A0 0F FB C0 0F FD E0 0F FF 00 10 01 21 10 03 41 10 05 61 10 07 81 10 09 A1 10 0B C1 10 0D E1 10 0F F1 FF 11 21 11 13 F1 FF 15 61 11 17 81 11 19 A1 11 1B C1 11 1D F1 FF 1F 01 12 21 21 12 FF 4F 12 25 61 12 27 81 12 29 A1 12 2B C1 12 2D F1 FF 2F 01 13 31 21 13 33 41 13 35 61 13 37 81 13 39 F1 FF 3B C1 13 3D E1 13 3F 01 14 41 21 14 43 F1 FF 45 61 14 47 81 14 49 A1 14 4B C1 14 4D E1 14 4F 01 15 51 21 15 FF 4F 15 55 61
Compressed : plet_size = 512
F9 FF FF FF 4F 00 05 60 00 07 80 00 09 A0 00 0B C0 00 0D E0 00 0F F0 FF FF 2F 01 13 40 01 15 60 01 17 80 01 19 A0 01 1B C0 01 1D E0 01 1F F0 FF 21 20 02 23 40 02 25 60 02 27 80 02 29 A0 02 2B C0 02 2D E0 02 2F F0 FF 31 20 03 33 40 03 35 F0 FF 37 80 03 39 A0 03 3B C0 03 3D E0 03 3F 00 04 41 20 04 43 40 04 FF 6F 04 47 80 04 49 A0 04 4B C0 04 4D E0 04 4F 00 05 51 20 05 53 F0 FF 55 60 05 57 80 05 59 A0 05 5B C0 05 5D E0 05 5F 00 06 61 20 06 63 40 06 65 60 06 67 80 06 69 A0 06 6B C0 06 6D E0 06 6F 00 07 71 20 07 73 40 07 75 60 07 77 80 07 79 A0 07 7B C0 07 7D E0 07 7F 00 08 81 20 08 83 F0 FF 85 60 08 87 80 08 89 A0 08 8B C0 08 8D E0 08 8F 00 09 91 20 09 FF 4F 09 95 60 09 97 80 09 99 A0 09 9B C0 09 9D E0 09 9F 00 0A FF 2F 0A A3 40 0A A5 60 0A A7 80 0A A9 A0 0A AB C0 0A AD E0 0A FF 0F 0B B1 20 0B B3 40 0B B5 60 0B B7 80 0B B9 F0 FF BB C0 0B BD E0 0B BF 00 0C C1 20 0C C3 40 0C C5 F0 FF C7 80 0C C9 A0 0C CB C0 0C CD E0 0C CF 00 0D D1 20 0D FF 4F 0D D5 60 0D D7 F0 FF D9 A0 0D DB C0 0D DD E0 0D DF 00 0E FF 2F 0E E3 40 0E E5 60 0E E7 80 0E E9 A0 0E EB C0 0E ED E0 0E EF 00 0F F1 20 0F F3 40 0F F5 60 0F F7 80 0F F9 A0 0F FB C0 0F FD E0 0F FF 00 10 01 21 10 03 41 10 05 61 10 07 81 10 09 A1 10 0B C1 10 0D E1 10 0F F1 FF 11 21 11 13 F1 FF 15 61 11 17 81 11 19 A1 11 1B C1 11 1D F1 FF 1F 01 12 21 21 12 FF 4F 12 25 61 12 27 81 12 29 A1 12 2B C1 12 2D F1 FF 2F 01 13 31 21 13 33 41 13 35 61 13 37 81 13 39 F1 FF 3B C1 13 3D E1 13 3F 01 14 41 21 14 43 F1 FF 45 61 14 47 81 14 49 A1 14 4B C1 14 4D E1 14 4F 01 15 51 21 15 FF 4F 15 55 61

Et à la décompression ça me donne :
compressed data : 512 bytes
F9 FF FF FF 4F 00 05 60 00 07 80 00 09 A0 00 0B C0 00 0D E0 00 0F F0 FF FF 2F 01 13 40 01 15 60 01 17 80 01 19 A0 01 1B C0 01 1D E0 01 1F F0 FF 21 20 02 23 40 02 25 60 02 27 80 02 29 A0 02 2B C0 02 2D E0 02 2F F0 FF 31 20 03 33 40 03 35 F0 FF 37 80 03 39 A0 03 3B C0 03 3D E0 03 3F 00 04 41 20 04 43 40 04 FF 6F 04 47 80 04 49 A0 04 4B C0 04 4D E0 04 4F 00 05 51 20 05 53 F0 FF 55 60 05 57 80 05 59 A0 05 5B C0 05 5D E0 05 5F 00 06 61 20 06 63 40 06 65 60 06 67 80 06 69 A0 06 6B C0 06 6D E0 06 6F 00 07 71 20 07 73 40 07 75 60 07 77 80 07 79 A0 07 7B C0 07 7D E0 07 7F 00 08 81 20 08 83 F0 FF 85 60 08 87 80 08 89 A0 08 8B C0 08 8D E0 08 8F 00 09 91 20 09 FF 4F 09 95 60 09 97 80 09 99 A0 09 9B C0 09 9D E0 09 9F 00 0A FF 2F 0A A3 40 0A A5 60 0A A7 80 0A A9 A0 0A AB C0 0A AD E0 0A FF 0F 0B B1 20 0B B3 40 0B B5 60 0B B7 80 0B B9 F0 FF BB C0 0B BD E0 0B BF 00 0C C1 20 0C C3 40 0C C5 F0 FF C7 80 0C C9 A0 0C CB C0 0C CD E0 0C CF 00 0D D1 20 0D FF 4F 0D D5 60 0D D7 F0 FF D9 A0 0D DB C0 0D DD E0 0D DF 00 0E FF 2F 0E E3 40 0E E5 60 0E E7 80 0E E9 A0 0E EB C0 0E ED E0 0E EF 00 0F F1 20 0F F3 40 0F F5 60 0F F7 80 0F F9 A0 0F FB C0 0F FD E0 0F FF 00 10 01 21 10 03 41 10 05 61 10 07 81 10 09 A1 10 0B C1 10 0D E1 10 0F F1 FF 11 21 11 13 F1 FF 15 61 11 17 81 11 19 A1 11 1B C1 11 1D F1 FF 1F 01 12 21 21 12 FF 4F 12 25 61 12 27 81 12 29 A1 12 2B C1 12 2D F1 FF 2F 01 13 31 21 13 33 41 13 35 61 13 37 81 13 39 F1 FF 3B C1 13 3D E1 13 3F 01 14 41 21 14 43 F1 FF 45 61 14 47 81 14 49 A1 14 4B C1 14 4D E1 14 4F 01 15 51 21 15 FF 4F 15 55 61

uncompressed data : 1496 bytes
F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 00 07 80 80 80 F9 F9 00 F9 F9 C0 F9 F9 E0 00 0F F0 FF FF 2F 13 40 01 15 60 01 17 01 17 01 19 A0 01 1B C0 1D E0 01 1F F0 FF 21 F0 FF 23 F9 F9 02 25 60 02 80 02 F9 F9 A0 F9 E0 00 0F C0 02 2D E0 02 FF FF F9 F9 F9 F9 F9 F9 F9 20 03 60 01 17 40 17 01 F0 FF 37 80 03 12 F9 F9 03 12 3B F9 03 12 3B 3D E0 03 3F 00 41 20 04 43 40 41 20 FF 04 00 00 00 00 00 00 00 00 00 00 00 00 04 49 00 00 00 04 49 00 00 00 04 49 00 00 00 4B C0 04 E0 00 4B 4F C0 04 E0 00 4B 51 20 05 53 F0 FF 60 20 05 F9 F9 F9 F9 59 A0 05 5B 00 00 5D E0 05 5F 5F 5F 01 17 20 06 63 40 40 17 01 60 06 67 80 F0 FF 37 A0 06 6B C0 80 03 12 E0 06 6F 00 F9 F9 03 20 07 73 40 12 3B F9 03 60 07 77 80 12 3B 3D E0 A0 07 7B C0 03 3F 00 41 E0 07 7F 00 20 04 43 40 20 E0 07 83 F0 C0 04 E0 00 4B 51 20 05 53 F0 FF 60 20 05 F9 F9 F9 F9 59 A0 05 5B 00 00 5D E0 05 5F 5F 5F 01 17 08 87 80 05 5F F9 F9 F9 08 8B 87 80 05 5F 8D E0 08 8F 00 91 20 09 FF 12 3B 09 F9 03 20 91 20 F9 F9 09 99 A0 09 9B C0 09 F9 F9 60 20 05 F9 F9 F9 F9 0A 09 F9 F9 60 20 05 F9 F9 F9 F9 0A 09 F9 F9 60 20 05 F9 F9 F9 F9 0A 09 F9 F9 60 20 05 F9 F9 F9 F9 A3 00 91 6B C0 80 03 12 E0 06 5F 5F 00 91 F9 F9 0A F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 AB C0 0A F9 F9 F9 F9 F9 F9 FF 0F 0B B1 0B B3 F9 60 0B B5 60 0B F9 F9 0B F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 BD E0 0B BF 00 C1 20 0C C3 F9 F9 F9 C5 F0 FF C7 F9 F9 F9 C9 A0 C3 F9 F9 59 A0 05 F9 F9 F9 F9 F9 F9 CF 00 C3 F9 F9 C1 20 0C C3 F9 0D F9 F9 F9 CF 00 C3 F9 F9 C1 20 0C C3 F9 0D F9 F9 F9 CF 00 C3 F9 F9 C1 20 0C C3 F9 0D F9 F9 F9 CF F9 F9 F9 F9 C1 20 F9 F9 F9 F0 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 DB C0 0D DD F9 F9 F9 F9 F9 F9 F9 F9 F9 F9 DB C0 DF 00 0E FF 0E E3 F9 F9 20 0C C3 F9 F9 F9 C5 F9 F9 F9 F9 E7 80 0E E9 F9 F9 F9 F9 EB C0 C5 F9 F9 F9 F9 60 20 05 0E E9 F9 F9 F9 F9 EB C0 C5 F9 F9 F9 F9 60 20 05 0E E9 F9 F9 F9 F9 EB C0 C5 F9 F9 F9 F9 F1 20 0F F3 40 0F F5 0F 0C C3 F9 80 F9 A0 0F FB F1 20 0F F3 40 0F F5 0F 0C C3 F9 80 F9 A0 0F FD E0 0F FF 10 01 21 10 03 41 10 05 10 01 21 10 81 10 F9 F9 10 41 10 C1 10 05 E1 10 10 01 F1 FF 11 11 13 F9 F9 FF 0E E9 11 17 F9 F9 F9 F9 A1 11 10 41 C1 11 F9 F9 F9 F9 F9 F9 01 12 E1 10 10 01 F1 FF 11 11 12 F9 F9 4F 13 F9 61 12 F9 FF 81 E1 10 A1 12 E9 11 F9 F9 2D F1 FF F9 F9 01 F9 61 21 13 F9 A1 11 41 11 10 61 13 41 C1 81 C1 11 F9 F1 20 0C F9 F9 F9 F9 F9 F9 01 12 E1 13 E1 10 01 10 10 01 21 F9 F1 FF 11 F1 0E E9 11 17 F9 F9 F9 F9 A1 11 10 41 C1 11 F9 F9 F9 F9 F9 F9 01 12 E1 10 10 01 F1 FF 11 11 12 F9 F9 4F 13 F9 61 12 F9 FF 81 E1 10 A1 12 E9 11 F9 F9 2D F1 FF F9 F9 01 F9 61 21 13 F9 A1 14 01 10 A1 12 E9 49 A1 14 4B F1 FF F9 F9 4D E1 14 4F 21 13 51 21 15 FF 4F 15 10 01


Est-ce qu'il n'y aurait pas un truc qui dit que si le 2ème octet est différent des valeurs standard alors on copie les données telles quelles ?
Ou alors je vais juste copier les données telles quelles si elles font la taille des données d'un secteur, c'est surement ce qui est fait ... Edité par Sylver Le 22/02/2024 à 08h45
   
Mokona Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 16/10/2022 à 15h02

Messages: 9

Le 22/02/2024 à 13h07
Dans la version pletter de dsk2rom (fin du fichier pletter.cpp), il y a un test : si le résultat de la compression a une taille plus grande ou égal à la taille d'origine, le fichier est renvoyé tel quel. Cela renvoie donc un fichier non compressé, et il est normal que la décompression fasse n'importe quoi.

Vu le test qui est fait, je dirais que dans le cas précis de cette utilisation, si la donnée source fait 512 octets, alors c'est qu'il n'est pas compressé.
   
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 22/02/2024 à 14h17
Oui ça paraissait être le plus logique, j'ai encore quelques différences entre le fichier dsk original et le fichier obtenu en faisant une compression/décompression, je vais creuser pour voir si ça vient de moi ou pas, et si ça ne vient pas de moi je vais identifier des blocks qui ne se décompressent pas correctement !
Encore merci pour ton aide ;)
   
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 22/02/2024 à 15h14
Alors les cas qui continuent à déconner pour moi sont des cas où l'algo me retourne 256 octets au lieu des 512 attendus.
Dans ce cas par exemple à la décompression on ne semble avoir que les 256 derniers octets :
Source : sector_size = 512
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 01 65 00 78 B1 28 08 11 8D BC 21 04
Compressed : plet_size = 25
FF FF D5 00 00 00 00 01 65 00 78 00 B1 28 08 11 8D BC 21 04 FF FF FF FF 80
uncompressed data : 256 bytes
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 01 65 00 78 B1 28 08 11 8D BC 21 04


et un cas où on a les 256 premiers octets :
Source : sector_size = 512
EB FE 90 44 53 4B 54 4F 4F 4C 20 00 02 02 01 00 02 70 00 A0 05 F9 03 00 09 00 02 00 00 00 D0 ED 53 59 C0 32 C4 C0 36 56 23 36 C0 31 1F F5 11 79 C0 0E 0F CD 7D F3 3C CA 63 C0 11 00 01 0E 1A CD 7D F3 21 01 00 22 87 C0 21 00 3F 11 79 C0 0E 27 CD 7D F3 C3 00 01 58 C0 CD 00 00 79 E6 FE FE 02 C2 6A C0 3A C4 C0 A7 CA 22 40 11 9E C0 0E 09 CD 7D F3 0E 07 CD 7D F3 18 B2 00 4D 53 58 44 4F 53 20 20 53 59 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 6F 74 20 65 72 72 6F 72 0D 0A 50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 66 6F 72 20 72 65 74 72 79 0D 0A 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Compressed : plet_size = 181
EB 00 FE 90 44 53 4B 54 4F 4F 02 4C 20 00 02 02 01 03 00 70 00 A0 05 F9 03 00 09 90 09 00 00 D0 ED 53 00 59 C0 32 C4 C0 36 56 23 00 36 C0 31 1F F5 11 79 C0 00 0E 0F CD 7D F3 3C CA 63 03 C0 11 00 01 0E 1A 10 0B 21 34 22 87 C0 1C 21 00 3F 1C 27 C4 10 C3 18 58 20 C0 CD 3C 79 E6 FE FE 04 02 C2 6A C0 3A 3F A7 04 CA 22 40 11 9E 1E 09 C3 1E 0E 07 00 04 18 B2 00 4D 53 58 04 44 4F 53 20 20 61 53 6F 00 C0 00 42 6F 6F 74 20 00 65 72 72 6F 72 0D 0A 50 00 72 65 73 73 20 61 6E 79 12 20 6B 65 03 66 12 42 20 10 74 72 79 18 35 24 00 FD CF 00 FF FF FF F8
uncompressed data : 256 bytes
EB FE 90 44 53 4B 54 4F 4F 4C 20 00 02 02 01 00 02 70 00 A0 05 F9 03 00 09 00 02 00 00 00 D0 ED 53 59 C0 32 C4 C0 36 56 23 36 C0 31 1F F5 11 79 C0 0E 0F CD 7D F3 3C CA 63 C0 11 00 01 0E 1A CD 7D F3 21 01 00 22 87 C0 21 00 3F 11 79 C0 0E 27 CD 7D F3 C3 00 01 58 C0 CD 00 00 79 E6 FE FE 02 C2 6A C0 3A C4 C0 A7 CA 22 40 11 9E C0 0E 09 CD 7D F3 0E 07 CD 7D F3 18 B2 00 4D 53 58 44 4F 53 20 20 53 59 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 6F 74 20 65 72 72 6F 72 0D 0A 50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 66 6F 72 20 72 65 74 72 79 0D 0A 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


J'ai des cas où les données décompressées font plus de 512 octets, mais les 512 premiers octets sont ok donc j'ai ajouté un contrôle pour m'arrêter à 512 octets au niveau de la décompression
Le cas où il manque les 256 derniers octets semblent des cas où en fait il ne manque que des 00 donc ça passe sans soucis, mais quand il manque les 256 premiers octets, ça se passe moins bien forcement ... Edité par Sylver Le 22/02/2024 à 15h16
   
Sylver Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 20/04/2018 à 15h26

Messages: 89

Le 22/02/2024 à 17h00
J'ai un autre cas particulier :
Si en sortie de décompression je n'ai qu'un seul octet, alors ça veut dire que c'est 512 fois cet octet

Mais au final si j'ai 256 octets, alors je ne sais pas si ce sont les 256 premiers ou dernier octets, j'ai réussi à reconstruire mon image DSK correctement en prenant comme supposition que l'octet répété était soit 0 soit FF et que suivant si le premier octet ou le dernier octet était une de ces valeurs alors je collais les 256 octets au début ou à la fin, mais cette hypothèse est fausse (j'ai testé en mettant des 55 et on se retrouve avec 256 octets décompressés)

J'ai trouvé un cas qui déconne encore :
Source : sector_size = 512
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 EB FE 90 44 53 4B 54 4F 4F 4C 20 00 02 02 01 00 02 70 00 A0 05 F9 03 00 09 00 02 00 00 00 D0 ED 53 59 C0 32 C4 C0 36 56 23 36 C0 31 1F F5 11 79 C0 0E 0F CD 7D F3 3C CA 63 C0 11 00 01 0E 1A CD 7D F3 21 01 00 22 87 C0 21 00 3F 11 79 C0 0E 27 CD 7D F3 C3 00 01 58 C0 CD 00 00 79 E6 FE FE 02 C2 6A C0 3A C4 C0 A7 CA 22 40 11 9E C0 0E 09 CD 7D F3 0E 07 CD 7D F3 18 B2 00 4D 53 58 44 4F 53 20 20 53 59 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6F 6F 74 20 65 72 72 6F 72 0D 0A 50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 66 6F 72 20 72 65 74 72 79 0D 0A 24 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
Compressed : plet_size = 184
55 FF FC 00 00 EB FE 90 44 53 4B 54 4F 01 4F 4C 20 00 02 02 01 00 03 70 00 A0 05 F9 03 00 48 09 09 00 00 D0 ED 00 53 59 C0 32 C4 C0 36 56 00 23 36 C0 31 1F F5 11 79 00 C0 0E 0F CD 7D F3 3C CA 01 63 C0 11 00 01 0E 1A 88 0B 21 34 22 87 0E C0 21 00 3F 1C 62 27 10 C3 18 10 58 C0 CD 3C 79 E6 FE 02 FE 02 C2 6A C0 3A 3F 02 A7 CA 22 40 11 9E 1E 61 09 1E 0E 07 80 04 18 B2 00 4D 53 02 58 44 4F 53 20 20 61 37 53 00 E0 00 42 6F 6F 74 00 20 65 72 72 6F 72 0D 0A 00 50 72 65 73 73 20 61 6E 09 79 20 6B 65 03 66 21 12 20 10 74 72 79 3F 18 24 78 FF FF FF FF FF 80
uncompressed data : 1 bytes
55


Je me retrouve avec un seul octet en décompression ... Edit : Si je vire la condition de sortie si length == 255 alors j'ai les bonnes données ! Edité par Sylver Le 22/02/2024 à 21h14
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie