[Megadrive] Valis - compression (LZ?)
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
[Megadrive] Valis - compression (LZ?)
Salut à tous, je suis en train de traduire ce petit jeu sympa qu'est Valis sur Megadrive (sûrement la meilleure version d'ailleurs) et j'ai quasiment fini excepté 2 écrans, ce qui est assez dommage:
L'écran-titre le "PRESS START BUTTON" que je voudrais remplacer par "PRESSER START", les données se trouvent à l'adresse x8A850 et utilisent cette table:
Et le menu in-game des magies( quand on presse START) qui se trouve vers x40350 et qui utilise cette table-ci:
Ca ressemble à du LZ mais vu que je ne s'y connais rien en programmation, j'en suis pas sûr. Enfin si quelqu'un peut m'aider, ce serait sympa.
L'écran-titre le "PRESS START BUTTON" que je voudrais remplacer par "PRESSER START", les données se trouvent à l'adresse x8A850 et utilisent cette table:
Code : Tout sélectionner
0130=
0103=P
0104=R
0105=E
0106=S
0107=T
0108=A
0109=B
010A=U
010B=O
010C=N
Code : Tout sélectionner
8581=
859E=0
859F=1
85A0=2
85A1=3
85A2=4
85A3=5
85A4=6
85A5=7
85A6=8
85A7=9
85A8=:
85A9=A
85AA=B
85AB=C
85AC=D
85AD=E
85AE=F
85AF=G
85B0=H
85B1=I
85B2=J
85B3=K
85B4=L
85B5=M
85B6=N
85B7=O
85B8=P
85B9=Q
85BA=R
85BB=S
85BC=T
85BD=U
85BE=V
85BF=W
85C0=X
85C1=Y
85C2=Z
85C3=.
85C4=!
Re: [Megadrive] Valis - compression (LZ?)
Salut FlashPV,
J'ai vite fait regardé et je ne pense pas que ça soit codé. C'est plus une tilemap standard pour l’écran titre.
Voici un dump de la vram pendant l’écran :

Oui je sais j'aurais pu couper la moitié de l'image mdrr
Mais on voit bien qu'il n'y a que les lettres nécessaires pour écrire "press start button".
J'ai vite fait regardé et je ne pense pas que ça soit codé. C'est plus une tilemap standard pour l’écran titre.
Voici un dump de la vram pendant l’écran :

Oui je sais j'aurais pu couper la moitié de l'image mdrr

Mais on voit bien qu'il n'y a que les lettres nécessaires pour écrire "press start button".
Re: [Megadrive] Valis - compression (LZ?)
Oui bahabulle a raison je viens de check la rom a la main est c'est du lzss avec un flag de 8bits.
L'adresse de début est 0x8A546, les deux premiers octets sont la taille de données a lire, et ensuite c'est du lzss.
Si il y a un 1 sur le flag c'est une copie direct sinon c'est une recherche en arrière.
Je ne suis pas sur mais je pense qu'il y a deux octets d'information lors d'une recherche arrière,
le premier octets sert de déplacement et le suivant du nombre d'octet a copier.
Faudrait continuer a debug pour voir mais la j'ai plus trop le temps.
L'adresse de début est 0x8A546, les deux premiers octets sont la taille de données a lire, et ensuite c'est du lzss.
Si il y a un 1 sur le flag c'est une copie direct sinon c'est une recherche en arrière.
Je ne suis pas sur mais je pense qu'il y a deux octets d'information lors d'une recherche arrière,
le premier octets sert de déplacement et le suivant du nombre d'octet a copier.
Faudrait continuer a debug pour voir mais la j'ai plus trop le temps.
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Oui les graphs aussi sont compressés mais ça c'est moins gênant, le problême c'est surtour la tilemap.
Il y a beaucoup de variantes du LZSS ou je pourrai trouver un prog de compression/décompression générique?
Il y a beaucoup de variantes du LZSS ou je pourrai trouver un prog de compression/décompression générique?
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Le bloc commence en 0x8A540 dont le pointeur est en 0x2BB8ANaBoo a écrit :L'adresse de début est 0x8A546, les deux premiers octets sont la taille de données a lire, et ensuite c'est du lzss.
4 octets : peut-être le nombre d'octets à lire mais il ne s'en sert pas
4 octets : nombre d'octets en sortie
1 octet : header lz
......
Oui, 2 octets. L'adresse est sur 12 bits et le nombre à lire sur 4NaBoo a écrit :Je ne suis pas sur mais je pense qu'il y a deux octets d'information lors d'une recherche arrière,
le premier octets sert de déplacement et le suivant du nombre d'octet a copier.
Quand on lit les 2 octets en little endian, ça donne :
Code : Tout sélectionner
0000 0000 0000 0000
AAAA NNNN AAAA AAAA
Et il se base sur un buffer de 0x1000 octets pré-initialisé avec un début en 0xFEE.
Re: [Megadrive] Valis - compression (LZ?)
Décidément trop ouf ce bahabulle !!!
Voila y'a plus qu'a coder un décompresseur/recompresseur.
Par contre je vois vraiment pas l’intérêt de mettre un nombre d'octet sur 32bit c'est un peu gros pour une megadrive mais bon ...
Voila y'a plus qu'a coder un décompresseur/recompresseur.
Par contre je vois vraiment pas l’intérêt de mettre un nombre d'octet sur 32bit c'est un peu gros pour une megadrive mais bon ...
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Effectivement c'est vraiment pas de mon ressort, j'ai rien compris. 

- Pixel
- Codeur à l'irc dormant
- Messages : 1946
- Inscription : 17 avr. 2002, 17:30
- Localisation : San Jose
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Faire un LZSS totalement générique (comme tout le reste) est strictement impossible.
Après, un schéma comme le décrit Baha, ça reste assez standard...
Baha: tu avais pas un bout de code vaguement générique pour ce genre de choses dans un coin ?
Après, un schéma comme le décrit Baha, ça reste assez standard...
Baha: tu avais pas un bout de code vaguement générique pour ce genre de choses dans un coin ?
pixel: A mischievous magical spirit associated with screen displays. The computer industry has frequently borrowed from mythology. Witness the sprites in computer graphics, the demons in artificial intelligence, and the trolls in the marketing department.
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Ben, j'ai fait pas mal de décompresseur LZ alors je dois bien en avoir un qui traîne quelque part et qui ressemble à celui-là.
Je pense particulièrement à ToD qui utilise aussi un buffer pré-initialisé .
Je pense particulièrement à ToD qui utilise aussi un buffer pré-initialisé .
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Essaye ça (en espérant que ça fonctionne du premier coup
) :
Exécution :
<fichier> est un fichier texte contenant les instructions de décompression ou compression. Tu as 2 fichiers dans l'archive qui font le boulot. Il faut juste changer les chemins d'accès si besoin parce que là, tout se trouve dans le même répertoire (outil, rom...).
Si la compression prend plus de place que l'original et que tu as de la place dans la rom, tu dois pouvoir déplacer les données en modifiant juste l'adresse du paramètre "dest" lors de l'insertion (BIN...). Le pointeur devrait être modifié automatiquement mais je t'avoue que je n'ai pas testé
Si tu comprends la syntaxe et que tu as d'autres données à traiter, tu peux ajouter des lignes, elles seront prises en compte.
Je remet le contenu des 2 fichiers ici :
Décompression :
Compression :
J'espère ne rien avoir oublié (c'est souvent le cas
)

Code : Tout sélectionner
BahaTools.exe <fichier>
Si la compression prend plus de place que l'original et que tu as de la place dans la rom, tu dois pouvoir déplacer les données en modifiant juste l'adresse du paramètre "dest" lors de l'insertion (BIN...). Le pointeur devrait être modifié automatiquement mais je t'avoue que je n'ai pas testé

Si tu comprends la syntaxe et que tu as d'autres données à traiter, tu peux ajouter des lignes, elles seront prises en compte.
Je remet le contenu des 2 fichiers ici :
Décompression :
Code : Tout sélectionner
Import-Module Fr.BahaBulle.Valis.dll
#ROM_IN=Valis (U) [!].bin
-- Chargement de la rom en mémoire
BIN source(file=ROM_IN) dest(file=1)
-- Décompression de la tilemap du menu
DECOMP-VALIS source(file=1;adress=0x8A540) dest(file=Menu-Tilemap.bin))
-- Décompression de la tilemap des magies
DECOMP-VALIS source(file=1;adress=0x40326) dest(file=Magies-Tilemap.bin))
Code : Tout sélectionner
Import-Module Fr.BahaBulle.Valis.dll
#ROM_IN=Valis (U) [!].bin
#ROM_OUT=Valis_FR.bin
-- Chargement de la rom en mémoire
BIN source(file=ROM_IN) dest(file=1)
-- Menu général
---------------
-- Compression du fichier
COMP-VALIS source(file=Menu-Tilemap.bin) dest(file=2)
-- Insertion du fichier dans la rom
BIN source(file=2) dest(file=1;adress=0x8A540;size=1640) pointer(adress=0x2BB8A;size=4;endian=big)
-- Menu des magies
------------------
COMP-VALIS source(file=Magies-Tilemap.bin) dest(file=3)
BIN source(file=3) dest(file=1;adress=0x40326;size=1106) pointer(adress=0x822;size=4;endian=big)
-- On sauvegarde la rom modifiée dans un fichier
BIN source(file=1) dest(file=ROM_OUT)

- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
T'es vraiment un killer, merci. Je regarde ça ce week-end, aujourd'hui j'aurai pas trop le temps. Sinon, juste un petite question: tu utilises quoi comme debugger pour la Megadrive?
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Bon, je sais pas si j'ai fait un truc de travers ou que j'en ai oublié un mais ça n'a pas marché.
Donc je tape BahaTools.exe Valis-E.txt
Et là, ça me marque:
Start Control parameter file
Import module Fr.Bahabulle.Valis.dll : Les informations relatives au chemin d'accès absolu sont requises.
Unknown method 'DECOMP VALIS' (line 9)
Unknown method 'DECOMP VALIS' (line 12)
Stop Control parameter file
Ou je suis un boulet (c'est possible); ou alors y a un truc qui tourne pas rond...
Donc je tape BahaTools.exe Valis-E.txt
Et là, ça me marque:
Start Control parameter file
Import module Fr.Bahabulle.Valis.dll : Les informations relatives au chemin d'accès absolu sont requises.
Unknown method 'DECOMP VALIS' (line 9)
Unknown method 'DECOMP VALIS' (line 12)
Stop Control parameter file
Ou je suis un boulet (c'est possible); ou alors y a un truc qui tourne pas rond...
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Groumpf
Je l'avais corrigé ce truc. Je regarde demain
Je l'avais corrigé ce truc. Je regarde demain
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Ah oui. Tu dois pouvoir contourner le problème.
Dans le fichier texte, sur la 1ère ligne Import-Module, écris le chemin complet de la dll
Dans le fichier texte, sur la 1ère ligne Import-Module, écris le chemin complet de la dll
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Ok, maintenant, ça me fait ça:
Start Control parameter file
Import module Fr.BahaBulle.Valis.Fr.dll : OK
Stop Control parameter file
Start Processing
bin <line 6>
decomp-valis <line 9>
Stop Processing
Et rien...
Start Control parameter file
Import module Fr.BahaBulle.Valis.Fr.dll : OK
Stop Control parameter file
Start Processing
bin <line 6>
decomp-valis <line 9>
Stop Processing
Et rien...
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
T'as pas un fichier menu-tilemap.bin qui s'est créé ?
Normalement dans le même répertoire. Sinon faut regarder dans le fichier txt.
Au pire faire pareil, mettre le chemin complet.
Normalement dans le même répertoire. Sinon faut regarder dans le fichier txt.
Au pire faire pareil, mettre le chemin complet.
- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Non, toujours pas, j'ai même crée un petit fichier menu-tilemap.bin pour voir s'il le modifie mais non. 

- FlashPV
- Dieu Suprême du flood
- Messages : 1753
- Inscription : 15 sept. 2002, 23:44
- Localisation : Un coin perdu dans la colline
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Non, ça ne change rien, hormis que je n'ai plus besoin de mettre le chemin de la DLL.
- Loki
- Dieu Suprême du flood
- Messages : 1624
- Inscription : 03 juil. 2006, 10:06
- Localisation : Mer des Sarcasmes
Re: [Megadrive] Valis - compression (LZ?)
J'ai pas essayé mais c'est probablement les pointeurs des fonctions importées qui sont incorrects, Baha tu te fais chier avec des DLL pour pas grand chose, fais lui un stand alone.
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Je te prout 
Ca fonctionne chez moi, il n'y a pas de raison que ca ne fonctionne pas ailleurs.
A la vue des dernières traces qu'il a mis, la dll est bien chargée et la fonction reconnue. Donc le problème ne vient sûrement pas de là.
Après il a du mal à trouver son chemin quand il n'a que le nom du fichier.
Je regarderais sûrement demain en début d'aprem.
Flash si tu peux te connecter à Skype à ce moment-là, ca facilitera les choses.

Ca fonctionne chez moi, il n'y a pas de raison que ca ne fonctionne pas ailleurs.
A la vue des dernières traces qu'il a mis, la dll est bien chargée et la fonction reconnue. Donc le problème ne vient sûrement pas de là.
Après il a du mal à trouver son chemin quand il n'a que le nom du fichier.
Je regarderais sûrement demain en début d'aprem.
Flash si tu peux te connecter à Skype à ce moment-là, ca facilitera les choses.
- Loki
- Dieu Suprême du flood
- Messages : 1624
- Inscription : 03 juil. 2006, 10:06
- Localisation : Mer des Sarcasmes
Re: [Megadrive] Valis - compression (LZ?)
Hé, il se calme le p'tit à la pancarte ou je la lui fais bouffer.^^
C'était pour te faire gagner du temps, hein !
ça fonctionne chez toi parce que la DLL est déjà chargée via ton IDE, chez lui non. Et Windows peut indiquer qu'une DLL est chargée ça ne veut pas dire que les fonctions sont disponibles.
C'était pour te faire gagner du temps, hein !
ça fonctionne chez toi parce que la DLL est déjà chargée via ton IDE, chez lui non. Et Windows peut indiquer qu'une DLL est chargée ça ne veut pas dire que les fonctions sont disponibles.
- BahaBulle
- Bub'n'Bob Pawa!
- Messages : 6496
- Inscription : 06 août 2002, 09:34
- Localisation : Sur une bulle
- Contact :
Re: [Megadrive] Valis - compression (LZ?)
Si je dis que ça fonctionne chez moi c'est que j'ai testé sans IDE.