jerome674 a écrit:5. padding ok
modifier taille du header->ajuster suivant le padding ajouté ou non ?
Selon le cas tu devras soit ajouter ou retirer 1, 2 ou 3 octets de padding, ou alors ne pas y toucher si la mise en forme est correcte dès le départ
C'est tres simple, ton header de base fait 0x8 octets, tu dois placer ce dernier en suivant la règle des 32 bits expliquée plus haut
Tu auras donc au final une fois la mise en forme retapée, 0, 1, 2 ou 3 octets 0xFF de padding juste avant des 8 octets du header
La taille du header prend en compte ces octets de padding => donc de 0x08 octets (pour 0 octet de padding) à 0x0B (pour 3 octets de padding)
Suffit juste de voir combien fait ton header mis en forme avec le padding (donc en gros les 0xFF + les 8 octets du header)
jerome674 a écrit:modifier taille des données compressées->la taille change ou je garde les infos créées par la compression ?
Là encore à voir selon le cas, suivant si tu auras ajouté ou retiré des octets de padding, il faut adapter cette taille en consequence puisqu'elle inclus le header
Mais pour faire simple, regarde la taille que ton fichier general fait une fois celui-ci mis en forme, et retire à cette taille, les 0x3F qui ne sont pas compressés
jerome674 a écrit:6. pour connaitre la taille totale décompressée, c'est bien l'original -> sans le header ?
et avec les 0x3F du début a ajouter ?
Sans le header, c'est la copie ^^
Au depart tu as ton fichier d'origine non modifié qui est compressé, une fois decompressé avec crystaltile, tu obtiens le fichier original decompressé
C'est sur cet original decompressé que tu vas faire tes modifs pour la traduction (ce qui va sans doute changer la taille de ce dernier (elle sera sans doute plus grande)
Tu as donc maintenant que tu as traduit ton fichier, le fichier modifié "d'origine" non compressé (dans lequel tu as les 0x3F octets)
C'est sur ce fichier là qu'il faut voir pour la taille (avant de retirer les 0x3F) puisque cette nouvelle taille devra à la fois etre reportée dans le y9.bin, mais il faut aussi l'utiliser pour calculer le différentiel des données compressées/décompressées par la suite
Lorsque tu vas calculer la taille du différentiel entre les données compressées et les données non compressées que tu auras besoin d'ajuster dans le header de compression, il faudra donc dans un 1er temps soustraire à la taille générale de ce fichier les 0x3F "qui ne sont pas pris en compte" dans le header de compression
Ensuite soustrait la taille de tes données compressées (une fois remise en forme bien entendu) pour obtenir la difference de taille entre les données compressées et les données décompressées
C'est cette valeur qu'il faudra ajuster dans le header de compression
Au final avec le chemin inverse, ça donne : donnees compressées + differentiel + 0x3F = taille du fichier traduit decompressé
jerome674 a écrit:8. oula, je teste et te redis ca :s
Là rien de plus simple, une fois le differentiel données compressées/décompressées obtenu, faut juste le modifier (enfin plus precisement l'ajuster) dans ton header de compression
