Annexe technique · Accueil · English
Utilisé par les flux .HUF et par G3.CON
enregistrement 0x27 sous-enr. 9 et 10. Ce sont les deux
seuls blocs .CON qui passent try_decompress.
Tout cela est implémenté par maup_parse.py.
| Routine | EA | Rôle |
|---|---|---|
Lz_DecompressFar |
0x19D92 |
entrée : AX = longueur basse, DX = longueur haute ; efface l'état, fixe la limite |
Lz_Decompress |
0x19C6A |
boucle principale, possède la fenêtre circulaire |
Lz_ReadToken |
0x19BD6 |
parcours de l'arbre jusqu'à un symbole |
Lz_ReadDistance |
0x19C14 |
décodage de la distance |
Lz_ReadByte / Lz_ReadBit |
0x19855 / 0x197F8 |
entrée |
Lz_BitInit |
0x198AF |
initialisation de l'arbre et du lecteur de bits |
Lz_UpdateTree / Lz_RebuildTree |
0x19ACE / 0x19958 |
mise à jour adaptative |
Un flux commence par une longueur de sortie u32, sautée en
0x19C70. L'arbre est construit à l'exécution, il n'y a donc
pas de table statique à trouver. Le décodage s'arrête quand le nombre
d'octets produits atteint la longueur.
Bit de poids fort d'abord, via un registre de 16 bits
(DS:303E, compteur en DS:3040).
tree: 314 symbols; token < 0x100 is a literal
match length = token - 0xFD (add ax,0FF03h at 0x19CF6)
c = ReadByte()
high = LzDist_ExtraBits[c] << 6 ; DS:2E3E
n = LzDist_BaseBits[c] - 2 ; DS:2F3E
acc = c; repeat n times: acc = acc*2 + ReadBit()
distance = high | (acc & 0x3F)
Un anneau de 4 096 octets en DS:6754, dont les
0xFC4 premiers octets sont remplis d'espaces, l'écriture
commençant en 0xFC4. Source d'une correspondance =
(pos - distance - 1) & 0xFFF.
0x400 n'est pas un format par blocs0x19D4F-0x19D69 ne fait qu'augmenter
wLzProgressLimit de 0x400 quand la sortie le
dépasse. Rien ne lit cela pour le décodage : la position d'entrée,
l'état des bits, l'arbre et la fenêtre ne changent pas. maup_parse.py
décode tous les flux correctement sans gérer de blocs.
selftest décode les 29 flux MUS et les 28
flux SND ; les longueurs d'en-tête concordent et le
remplissage final fait au plus 7 bits.
Précédent : Formats de fichiers, scènes et palettes · Suivant : Vidéo · Annexe technique · Accueil