Problème décompression graphique

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
heavyjo99
Nouveau Floodeur
Messages : 35
Inscription : 21 août 2017, 10:08

Problème décompression graphique

Message non lu par heavyjo99 » 15 avr. 2019, 01:11

Bonjour,

j'ai un gros souci pour décompresser des graphiques et je viens solliciter votre aide.
J'ai ce gros pavé de texte, écrit en anglais :( et je ne comprend pas tout.
:
[DCOMP] Decompressing Graphics
Some graphics encountered are compressed to save space. This compression is not super-complex,
and it vaguely resembles RLE compression. Compressed graphics are stored linearly- that means
to decompress them, all you need to do is read in some compressed values, then output the
appropriate decompressed values. Rinse, repeat. After encountering the "end of graphic" value,
the entire array of decompressed values will be the actual graphic as it should be for loading
into VRAM.

The first 8 bytes are called "common values"- each byte being it's own value. These are values
that show up frequently in the compressed graphic, and later on will be referred to by index.
After the common values, all other values are stored as nybbles (2 values per byte, 4 bits
each)- these values should be read in the following manner:

1) Read 1 value. This is the opcode- it represents what sort of compression exists for the
coming value(s), or what action to take (such as the end of compression marker)
2) Depending on the opcode, there may be parameter values following the opcode. Read these
values as well.
3) Calculate what the output values should be and add them to the output array.
4) If the opcode was NOT the end of compression marker, go back to step 1, starting at the
position immediately following the parameters, if any, in the compressed data.

The opcodes and parameters are as follows:
Opcode What to do with it
0x0 Read 2 more values. Bitshift the first value left by 4, then add it to the 2nd
value, and finally add 19 to that value. Append that many 0's (zeroes) to the
decompressed array.
0x1 Read 1 more value. Append that value to the decompressed array.
0x2 Read 1 more value. Append that value twice to the decompressed array.
0x3 Read 1 more value. Append that value to the decompressed array. Read and Append
another value.
0x4 Read 1 more value. Append that value to the decompressed array. Read and Append
another value. Read and Append a 3rd value.
0x5 Read 1 more value- This is your desired value. Read another value- This is your
loop value. Append the desired value to the decompressed array, loop times.
0x6 Read 1 more value. Append that many 0's (zeroes) to the decompressed array.
0x7-0xE Subtract 7 from the opcode and use that as an index into the common values array-
From that value, the first 4bits are your loop value, and the last 4 bits are
your desired value. Append your desired value to de decompressed array, loop
times.
0xF Finish. This signals that decompression is done, and no more opcodes should be
read from the compressed data.
Et l'image compresser
:
Sans titre 2.png
Sans titre 2.png (201.78 Kio) Consulté 598 fois
Est-ce que quelqu'un à déjà été confronté à ça ?
C'est un truc à devenir fou, mais j'ai pas envie de lâcher l'affaire.

Avatar de l’utilisateur
RyleFury
Maître Suprême Floodeur
Messages : 405
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Problème décompression graphique

Message non lu par RyleFury » 15 mai 2019, 11:28

Si t'es toujours là je veux bien t'aider.
Par contre il va falloir me dire avant ce qui t'embête exactement dans la doc, parce que tout est expliqué dans ce que tu montres à première vue.

heavyjo99
Nouveau Floodeur
Messages : 35
Inscription : 21 août 2017, 10:08

Re: Problème décompression graphique

Message non lu par heavyjo99 » 18 mai 2019, 15:00

Oui je suis toujours là,

C'est plus la ligne 0x7-0xE que je ne comprends pas.
Je soustrait 7 de l'opcode, là OK, et je l'utilise dans l'index appelé "common values"
Pour moi l'index "common values" c'est tout ce qui est en vert dans l'image, si je ne me trompe pas.
Mais comment je l'utilise ?
Ensuite, avec cette valeurs donné, les 4 premières bites seraient ma boucle et les 4 dernières, mes valeurs désirée,
Comment j'utilise ma boucle avec ces valeurs ?

Merci pour ton aide.

Avatar de l’utilisateur
RyleFury
Maître Suprême Floodeur
Messages : 405
Inscription : 16 janv. 2012, 12:48
Contact :

Re: Problème décompression graphique

Message non lu par RyleFury » 18 mai 2019, 16:44

Si je me réfère à la doc, pour moi, le problème ici c'est le début de tes données compressées. Tes "common values" ne peuvent pas être bonnes. Déjà il y a 2 octets à zéro, et si je regarde la doc, tu dois répéter x fois un demi-octet, sauf que si tu le répètes 0 fois, c'est qu'il y a un soucis. Tu peux m'envoyer ton fichier que je voie ça ?

heavyjo99
Nouveau Floodeur
Messages : 35
Inscription : 21 août 2017, 10:08

Re: Problème décompression graphique

Message non lu par heavyjo99 » 23 mai 2019, 15:26

Voilà le fichier:
DRA.zip
(643.95 Kio) Téléchargé 9 fois

Avatar de l’utilisateur
Ryusan
Super Floodeur
Messages : 218
Inscription : 27 sept. 2006, 11:53

Re: Problème décompression graphique

Message non lu par Ryusan » 23 mai 2019, 17:37

Salut. Ce serait bien d'indiquer clairement le nom du jeu, la version utilisée et sur quelle machine il tourne si tu veux avoir de l'aide plus facilement.

EDIT : Bon, je suppose que c'est Symphony of the night sur PS1 en version PAL ou NTSC/U et que tu veux remettre les graphismes non censurés dedans, si on regarde tes précédents posts.
Pourquoi ne pas faire tes demandes dans le même sujet ? Ce serait plus simple...
Traduction de Xenogears sur PS1 par Ryusan (CRhack).
ÉTAPE 1 : Traduction terminée au 11/12/2018.
ETAPE 2 : Phase de vérifications / corrections en cours.

Répondre