[SNES] Dragon Ball Z : Super Saiyajin Densetsu

Le groupe de ceux qui n'ont pas de groupe. Vous vous êtes mis à plusieurs sur un projet et souhaitez en discuter ? Vous voulez montrer l'avancement de votre traduction ? Cette partie vous est dédiée !
Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Ca fonctionne, t'as le bon pointeur, j'ai réussi à expandre la rom, à déplacer pointeurs+textes dans la partie ajoutée, j'ai viré les anciens textes de la rom + modifié les nouveaux pour tester et ça roule.

Faudra chercher celui de l'autre script, si c'est faisable pour l'un, il y a de grosses probabilité que ce soit possible pour l'autre aussi, au pire je regarderai tout à l'heure, là j'ai un truc sur le feu.

De cette façon, on pourra déjà faire la traduction sereinement sans crainte que ça ne rentre pas dans la rom.

Par curiosité, faudrait déplacer les pointeurs +textes pile au début d'une bank (j'ai déplacé à la même adresse mais juste dans une bank différente pour ne pas avoir à recalculer les pointeurs), et voir combien d'espace libre indique "Hareng-Tool" pour les textes.

Si tu déplaces à "0x100000" (début de l'expansion), ton "008006" devient "008020"

La bank s'étend de "0x100000" à "0x107FFF" (comme c'est une low-rom), donc tes pointeurs iront à 0x100000, le début de tes textes à 0x1002DC et la limite de fin de tes textes à 0x107FFF". Ca fait gagner 12023 octets.

Théoriquement, on doit gagner 50% de place en plus (on gagne 0x3000 sur 0x8000 en gros).
Dernière modification par Hiei- le 13 mai 2012, 04:30, modifié 1 fois.

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

0x2F14 : le premier octet change la couleur du fond sur le panorama du début. Mets "AF" et il devient vert par exemple). La suite change aussi les couleurs des persos. Ce qui suit ensuite change la couleur du sous-titre, donc j'imagine que c'est la palette.

L'intro semble commencer en 0x7151 et semble se terminer en 0x71E8 (si c'est bien ici, elle commence et se termine par "1F").

Par contre, bizarrement, une fois déplacé, les textes de combat déconnent. Pourtant, le pointeur de la table de pointeurs semblent bien être à 0x38F16 (c'est le seul "2E8F07" de toute la rom).

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

Le pointeur de la bank pour les textes combat semble être à l'adresse 0x38F19, y a toutes une table de pointeur sur 3 octet qui commence a 0x38F16.

EDIT: en faite ici il y a 576 pointeurs, du coup il ont coupé les pointeur bank en plusieurs partie, la 1er partie qui couvre les 100 pointeurs commence à l'adresse 0x38F16 la suite à 0x38F19 etc...

EDIT 2: L'intro commence à l'adresse 0x7151 et fini à 0x74FF, j'ai modifié une partie du texte qui n'était pas compressé et ca a bien modif le texte, donc je confirme les adresse.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Ah oui, je n'avais pas pensé que ça pouvait être découpé en plusieurs morceaux, pas bête.

Donc, selon toute logique, niveaux pointeurs de banks, en suivant cette logique :

0x38F16 (2E8F07) pointe vers 0x38F2E (Deuxième morceau de la table des pointeurs des textes annexes, 42 pointeurs)
0x38F19 (828F07) pointe vers 0x38F82 (Premier morceau de la table des pointeurs des textes annexes, 526 pointeurs)
0x38F1C (008006) pointe vers 0x30000 (table de pointeurs des textes principaux, 366 pointeurs)
0x38F1F (269207) pointe vers 0x39226 (??)

etc... (je ne pense pas que le reste servira pour les textes de base).

Malgré ça, le dump des textes annexes est donc coupé en deux banks donc deux dumps, j'ai réinséré les deux dans des banks différentes, j'ai bien recalculer les pointeurs comme il faut (sauf erreur de ma part), j'ai bien modifié les pointeurs de banks en question et ça bugge toujours sur le texte de Raditz.

Je vais faire des tests déjà, pour voir dans quel bank il est à l'origine, car c'est bien zarbi.

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Ok, j'ai pigé le fonctionnement, en fait c'est un gros bordel. C'est découpé en 7 morceaux qui vont chacun tapper dans le morceau des voisins, donc pour déplacer ça proprement et avec le maximum de place, c'est un peu le bordel (mais faisable, ça va juste prendre un peu de temps car il faut déplacer ça à la main, et vérifier une fois chaque pointeur. Une fois que ce sera déplacé, il sera possible de réutiliser le hareng-tool pour le faire automatiquement, le but c'est de rajouter en double/repointer correctement les phrases qu'ils vont piquer dans les autres morceaux pour que chaque morceau soit indépendant).

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

Ouais c'est le même principe que pour Chrono Trigger ^^

Maintenant on est pas obliger de déplacer tout le bloc de texte, s'il manque 300 octet par exemple, on déplace juste un morceau de texte et le reste, on le laisse dans la bank d'origine (tout en utilisant le gain de place que l'on aura récupéré en déplaçant certain morceau de texte)

Ca se fera tout a la fin uniquement, ça évite de devoir modifier tout les pointeur, on le fera juste pour le texte concerné.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Une fois le japonais déplacé et fonctionnel, ce sera réglé, ensuite "hareng-tool" pourra prendre le relais.

Perso, je préfère être sûr d'avoir assez de place pour traduire avant de commencer. Là, je suis dessus pour voir.

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Voilà, ça fonctionne enfin !

Textes principaux et annexes déplacés dans le Mo rajouté, textes originaux effacés et le jeu fonctionne très bien :)

Maintenant, il ne me reste plus qu'à retravailler un peu tout ça, en séparant les textes annexes (un morceau par bank, cf les pointeurs 24-bits), histoire d'avoir un maximum de place disponible.

Ensuite, je t'envois le nécessaire dès que c'est prêt (scripts de dumps/réinsertion de textes prenant en compte l'agrandissement de la rom).

Edit : Pour le reste, c'est un peu chiant pour pas grand chose au final donc restons comme on est en ce moment, avoir une bank complète pour chaque devrait amplement suffire.

Mais pour ça (avoir la bank complète pour le texte annexe), il ne faudra pas oublier de vérifier/noter sur quel n° de pointeur sont pointés les octets de banks car en traduisait les textes annexes et même en repointant le japonais à la base, ça décalera le texte, donc les pointeurs de base, et donc les pointeurs de banks qu'il faudra modifier à la main(pour mon test, j'ai gardé les mêmes adresses pour n'avoir à modifier que le n° de bank).

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Je suis en train de rejeter un coup d'oeil vite fait, et :

0x38F16 (2E8F07) pointe vers 0x38F2E (Premier morceau de la table des pointeurs des textes annexes, 42 pointeurs)
0x38F19 (828F07) pointe vers 0x38F82 (Deuxième morceau de la table des pointeurs des textes annexes, 338 pointeurs)
0x38F1F (269207) pointe vers 0x39226 (Troisième morceau de la table des pointeurs des textes annexes, 167 pointeurs)
0x38F22 (749307) pointe vers 0x39374 (Quatrième morceau de la table des pointeurs des textes annexes, 9 pointeurs)
0x38F25 (869307) pointe vers 0x39386 (Cinquième morceau de la table des pointeurs des textes annexes, 2 pointeurs) D3BC D40B
0x38F28 (8A9307) pointe vers 0x3938A (Sixième morceau de la table des pointeurs des textes annexes, 2 pointeurs) D3BC D40B
0x38F2B (8E9307) pointe vers 0x3938E (Septième [et dernier] morceau de la table des pointeurs des textes annexes, 16 pointeurs)

A propos des pointeurs des morceaux de la table des pointeurs :

0x38F2E => Pointe sur <PT0001>
0x38F82 => Pointe sur <PT0043>
0x39226 => Pointe sur <PT0381>
0x39374 => Pointe sur <PT0548>
0x39386 => Pointe sur <PT0548>
0x3938A => Pointe sur <PT0548>
0x3938E => Pointe sur <PT0561>

Si on fait 43-1, ça donne : 42. Si on fait 381-43, ça donne : 338 et si on fait 548-381, ça donne : 167. Ca signifierait donc que les trois premiers gros morceaux sont standards, il faut juste que je vérifie qu'ils n'aillent pas tapper hors de leur "adresses" pour les pointeurs et ceux là doivent pouvoir être déplacés proprement (s'ils tappent hors de leurs adresses pour certains pointeurs, il faudra mettre les dialogues en question en double). Les autres font moins de 30 pointeurs en tout, donc peuvent toujours être déplacés "à la main" (ou même ne pas être déplaces, vu qu'il n'y a quasi pas de textes pour ceux-là). J'éditerai mon message dès que j'aurais vérifié tout ça.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

Perso j'aurais attendu que le script soit entièrement traduit pour voir si il y'aurait eu besoin de déplacer le texte.
En cas de dépassement, j'aurais uniquement déplacé les textes en fin de la bank qui déborde de manière à éviter de toucher au textes en début de bank de façons à éviter tout bug inutile.

En tout cas, c'est comme ça que j'ai procédé sur Chrono Trigger car il y a des pointeurs qui font appel à d'autres pointeurs et cela nous oblige à chaque fois de les retrouver et les modifier pour que le jeux affiche les bon texte.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

En tout cas, le script principal, on peut le déplacer en deux secondes, mais c'était juste pour être sûr d'avoir assez de place avant de commencer. S'il n'y a pas besoin de place supplémentaire, ben pas la peine de déplacer, mais au moins maintenant je sais que si le script dépasse, c'est ok (les scripts annexes sont un peu plus bordelique mais le script, je peux déjà assurer que ça ne devrait causer aucun bug même si tout le script entier est déplacé).

Sinon, pour réinsérer la font fr de bessab dans la rom japonaise, voilà comment faire (merci BahaBulle) :

Tu vas dans la rom fr de bessab (v1.3), et tu copies le bloc 0x40000-0x40D4C. Tu vas ensuite à 0x40000 dans la rom jap et tu recolles le bloc que tu as copié de la rom fr au moment endroit et voilou (ça remplace la font jap compressée par la font fr compressée).

Maintenant, comme disait BabaBulle, la font est assez moche :
[10:02] <BahaBulle> Ouh, qu'est-ce qu'elle est merdique cette font fr
[10:03] <Hiei-> lol
[10:03] <Hiei-> elle est pas géniale cay sur
[10:03] <Hiei-> mais bon
[10:03] <BahaBulle> Y'en a dans tous le sens...
[10:03] <BahaBulle> Bref, j'ai fini mon boulot :)
[10:03] <Hiei-> c'est mieux que rien
[10:03] <Hiei-> moi mon avis c'est de s'en contenter pour l'instant
[10:04] <Hiei-> une fois la trad terminée, pourquoi pas la rechanger
Mais comme je disais, ça suffit pour traduire le jeu pour l'instant, il sera toujours possible de la rechanger à la fin (comme c'est une font à taille fixe, le fait de la changer à la fin n'affectera pas la mise en page du texte).

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

Je me douté que tu allez suggérer cette solution pour la font ^^
Et je suis d'accords avec toi pour la font, faudrait que j'en trouve une sympa.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Ben, ça permet d'en avoir une fonctionnelle en attendant et de ne pas être bloqué pendant des plombes, c'est une bonne chose non ? :wink: (même si je ne compte pas non plus garder celle là).

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

Oui vaux mieux ça que ce retrouver bloqué (comme je le suis avec le Super Butôden 2)
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Pourquoi tu pars pas de la FR pour Butôden 2 ? (Font déjà disponible).

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Tu essaieras ce patch : http://www.hiei-tf.fr/DBZ-16MB.ips (à utiliser sur la rom "Dragon Ball Z - Super Saiya Densetsu (J) (V1.1).smc").

Je pense avoir compris comment fonctionnait les textes annexes, j'ai tout déplacé (textes du script + annexes dans le Mo en plus et j'ai effacé les anciens) et ça fonctionne toujours, même si c'est à tester un peu plus profondément (mais si j'ai bien compris comment ça fonctionnait, comme je le pense, il n'y a aucune raison que ça bugge quelque part).

Et donc, toujours si j'ai bien pigé, les pointeurs de banks ne seront plus à modifier (pour ceux listés au dessus en tout cas) vu que les 4 qui posaient problèmes pointent vers des pointeurs et non directement vers du texte. On aura beau changer du texte dans "Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Textes_Annexes-04.txt", qui est le texte dont les pointeurs font parti, les pointeurs eux ne bougeront plus de place dans la rom vu qu'ils sont déjà déplacés.

Donc, si besoin, voilà le gain possible utilisable pour chaque fichier texte :

Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Script_Principal.txt : 12023 octets (limite : 60% plus gros que l'original).
Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Textes_Annexes-01.txt : 31497 octets (limite : 2655% plus gros que l'original).
Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Textes_Annexes-02.txt : 22800 octets (limite : 245% plus gros que l'original).
Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Textes_Annexes-03.txt : 26515 octets (limite : 448% plus gros que l'original).
Dragon Ball Z - Super Saiya Densetsu (J) (V1.1)_Textes_Annexes-04.txt : 31686 octets (limite : 3097% plus gros que l'original).

Je t'ai envoyé tout le détail en pm.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6496
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par BahaBulle »

La routine :

Code : Tout sélectionner

$00/C559 08          PHP
$00/C55A 8B          PHB
$00/C55B E2 20       SEP #$20
$00/C55D C2 10       REP #$10
$00/C55F A2 00 90    LDX #$9000
$00/C562 86 86       STX $86
$00/C564 A9 7E       LDA #$7E
$00/C566 85 88       STA $88
$00/C568 A4 83       LDY $83
$00/C56A A5 85       LDA $85
$00/C56C 48          PHA
$00/C56D AB          PLB
$00/C56E BE 00 00    LDX $0000,y
$00/C571 86 89       STX $89
$00/C573 C8          INY
$00/C574 C8          INY
$00/C575 A2 00 00    LDX #$0000
$00/C578 64 8C       STZ $8C
$00/C57A A5 8C       LDA $8C
$00/C57C D0 0A       BNE $0A    [$C588]
$00/C57E B9 00 00    LDA $0000,y
$00/C581 85 8B       STA $8B
$00/C583 C8          INY
$00/C584 A9 08       LDA #$08
$00/C586 85 8C       STA $8C
$00/C588 C6 8C       DEC $8C
$00/C58A 46 8B       LSR $8B
$00/C58C 90 0B       BCC $0B    [$C599]
$00/C58E B9 00 00    LDA $0000,y
$00/C591 9F 00 90 7E STA $7E9000,x
$00/C595 C8          INY
$00/C596 E8          INX
$00/C597 80 4D       BRA $4D    [$C5E6]

$00/C599 B9 00 00    LDA $0000,y
$00/C59C 29 0F       AND #$0F
$00/C59E 1A          INC A
$00/C59F 1A          INC A
$00/C5A0 85 8D       STA $8D
$00/C5A2 C2 20       REP #$20
$00/C5A4 B9 00 00    LDA $0000,y
$00/C5A7 C8          INY
$00/C5A8 C8          INY
$00/C5A9 5A          PHY
$00/C5AA 4A          LSR A
$00/C5AB 4A          LSR A
$00/C5AC 4A          LSR A
$00/C5AD 4A          LSR A
$00/C5AE 85 8F       STA $8F
$00/C5B0 8A          TXA
$00/C5B1 38          SEC
$00/C5B2 E5 8F       SBC $8F
$00/C5B4 10 1A       BPL $1A    [$C5D0]
$00/C5B6 E2 20       SEP #$20
$00/C5B8 49 FF       EOR #$FF
$00/C5BA 85 8F       STA $8F
$00/C5BC A9 00       LDA #$00
$00/C5BE 9F 00 90 7E STA $7E9000,x
$00/C5C2 E8          INX
$00/C5C3 C6 8D       DEC $8D
$00/C5C5 30 1E       BMI $1E    [$C5E5]
$00/C5C7 C6 8F       DEC $8F
$00/C5C9 10 F3       BPL $F3    [$C5BE]
$00/C5CB A0 00 00    LDY #$0000
$00/C5CE 80 03       BRA $03    [$C5D3]

$00/C5D0 A8          TAY
$00/C5D1 E2 20       SEP #$20
$00/C5D3 8B          PHB
$00/C5D4 A9 7E       LDA #$7E
$00/C5D6 48          PHA
$00/C5D7 AB          PLB
$00/C5D8 B9 00 90    LDA $9000,y
$00/C5DB 9D 00 90    STA $9000,x
$00/C5DE E8          INX
$00/C5DF C8          INY
$00/C5E0 C6 8D       DEC $8D
$00/C5E2 10 F4       BPL $F4    [$C5D8]
$00/C5E4 AB          PLB
$00/C5E5 7A          PLY
$00/C5E6 E4 89       CPX $89
$00/C5E8 90 90       BCC $90    [$C57A]
$00/C5EA AB          PLB
$00/C5EB 28          PLP
$00/C5EC 6B          RTL
J'ai voulu tenter de me faire le décompresseur et compresseur en lua pour voir ce que ça donnait. Et comme cette routine n'est pas trop compliqué, j'en ai profité.
Résultat : le décompresseur est plutôt rapide mais le compresseur est assez long car le lua n'est pas trop adapté à la recherche comme j'ai fait.
Faudrait que je trouve une autre façon de faire.

Ces fonctions ne fonctionnent pas en l'état. Il faut ajouter une petite gestion pour passer les paramètres (un Input et une adresse pour le décompresseur et le nom du fichier à compresser pour le compresseur) et gérer les buffer en retour. Ce qui n'est vraiment pas très compliqué.

J'ai seulement testé avec la font donc je ne garantie pas pour d'autres graphismes du jeu :-P

Une fonction de décompression pour lua-interface :

Code : Tout sélectionner

function DBZDecompData(rom_in, adress)

   rom_in:seek(adress)

   local size_out = rom_in:readU16()
   print(string.format('  0x%X octets a decompresser', size_out))

   local buf_out = Buffer(true)
   local pos_out = 0
   while size_out > 0 do
      local header = rom_in:readU8()

      for i = 1, 8 do
         if bit.band(header, 0x01) == 0 then
            local bytes = rom_in:readU16()
            local nb    = bit.band(bytes, 0x0F) + 3
            local back  = bit.rshift(bytes, 4)
            local pos   = pos_out - back

            if pos < 0 then
               local val = bit.band(bit.bnot(pos), 0xFF)

               while val >= 0 and nb > 0 do
                  buf_out:writeU8(0)
                  size_out = size_out - 1
                  pos_out  = pos_out + 1
                  val = val - 1
                  nb  = nb - 1
               end
               for j = 1, nb do
                  buf_out:writeU8(buf_out[j-1])
                  size_out = size_out - 1
                  pos_out  = pos_out + 1
               end
            else
               for j = 0, nb-1 do
                  buf_out:writeU8(buf_out[pos+j])
                  size_out = size_out - 1
                  pos_out  = pos_out + 1
               end
            end
         else
            buf_out:writeU8(rom_in:readU8())
            size_out = size_out - 1
            pos_out  = pos_out + 1
         end

         header = bit.rshift(header, 1)
         if size_out <= 0 then break end
      end
   end

   return buf_out

end
Une fonction de compression pour lua-interface :

Code : Tout sélectionner

function DBZCompData(name)

   local file_in = Input(name)
   local buf_in  = Buffer(true)
   local buf_out = Buffer(true)
   buf_in:copyfrom(file_in)

   local filesize = file_in:getsize()
   print(string.format('  0x%X octets a compresser', filesize))

   local pos_in = 0
   local pos_out = 0
   while pos_in < filesize do
      local header = 0
      local bytes  = {}

      for i = 0, 7 do
         local nb_rle = SearchRLE(buf_in, pos_in, filesize)
         local nb_lz, pos_lz = SearchLZ(buf_in, pos_in, filesize)

         if nb_rle > 0 and nb_rle >= nb_lz then
            local nb   = nb_rle - 3
            local back = pos_in + 1
            local comp = nb + bit.lshift(back, 4)
            header = bit.bor(header, bit.lshift(0, i))
            table.insert(bytes, bit.band(comp, 0xFF))
            table.insert(bytes, bit.band(bit.rshift(comp, 8), 0xFF))
            pos_in = pos_in + nb_rle
         elseif nb_lz > 0 then
            local nb   = nb_lz - 3
            local back = pos_in - pos_lz
            local comp = nb + bit.lshift(back, 4)
            header = bit.bor(header, bit.lshift(0, i))
            table.insert(bytes, bit.band(comp, 0xFF))
            table.insert(bytes, bit.band(bit.rshift(comp, 8), 0xFF))
            pos_in = pos_in + nb_lz
         else
            table.insert(bytes, buf_in[pos_in])
            header = bit.bor(header, bit.lshift(1, i))
            pos_in = pos_in + 1
         end

         if pos_in >= filesize then break end
      end

      buf_out:writeU8(header)
      for i = 1, #bytes do
         buf_out:writeU8(bytes[i])
      end
   end

   buf_in:destroy()
   file_in:destroy()

   print(string.format('  0x%X octets compresses', buf_out:getsize()))

   return buf_out, filesize

end

function SearchLZ(buf, pos, size)

   local nb = 0
   local nb_save = 0
   local pos_save = 0

   local pos_in = pos - 1

   while pos_in ~= pos - 4095 and nb_save ~= 18 do
      local nb = 0
      while buf[pos_in+nb] == buf[pos+nb] and nb < 18 and pos+nb < size do
         nb = nb + 1
      end

      if nb > nb_save and nb > 2 then
         nb_save = nb
         pos_save = pos_in
      else
         pos_in = pos_in - 1
      end
   end

   return nb_save, pos_save

end

function SearchRLE(buf, pos, size)

   local nb = 0
   local pos_in = pos

   if pos < 0x1000 and buf[pos_in] == 0x00 then
      while nb < 18 and buf[pos_in] == 0x00 and pos_in < size do
         nb = nb + 1
         pos_in = pos_in + 1
      end
   end

   if nb >= 3 then
      return nb
   else
      return 0
   end

end

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

C'est probablement dans mes cordes (enfin, je pense) de rajouter l'input, l'adresse et le fichier à décompresser (j'ai d'autres modèles à disposition) mais pour le "buffer", aucune idée de la méthode.

Merci en tout cas d'y avoir jeté un oeil :wink:

Avatar de l’utilisateur
kipy
109ème étoile du destin
Messages : 2111
Inscription : 17 avr. 2006, 19:29
Localisation : Belgique
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kipy »

BahaBulle a écrit :Résultat : le décompresseur est plutôt rapide mais le compresseur est assez long car le lua n'est pas trop adapté à la recherche comme j'ai fait.
Si tu veux gagner en vitesse, essaies de faire un tableau de petits groupes potentiels (genre qui ont minimum 3 octets en commun avec la séquence recherchée) avant d'aller plus loin, c'est en général ce qui ralentit tout ;) (en tout cas j'avais gagné blindé avec ça)
♪ Tapferen kleinen Liebling, bis dahin, träume schön,
Träume so süß wie bayerische Creme ♫

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Honnêtement, la vitesse ce n'est pas vraiment un problème perso :)

Personnellement, j'ai quand même un PC un minimum véloce et même si ça mettait 10 minutes, ce ne serait pas un drame :wink:

Avatar de l’utilisateur
kipy
109ème étoile du destin
Messages : 2111
Inscription : 17 avr. 2006, 19:29
Localisation : Belgique
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kipy »

Ha ouais non, je me doute bien que ça n'a pas d'importance pour toi, le principal c'est que ça fonctionne ;)
♪ Tapferen kleinen Liebling, bis dahin, träume schön,
Träume so süß wie bayerische Creme ♫

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

Qui se dévoue pour le finaliser, alors ? :-D

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6496
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par BahaBulle »

Hiei- a écrit :Honnêtement, la vitesse ce n'est pas vraiment un problème perso :)
Certes, sur un fichier ce n'est pas catastrophique mais quand tu lances sur plusieurs dizaines de fichiers, ça commence à être long ;)
Hiei- a écrit :Qui se dévoue pour le finaliser, alors ? :-D
Ben t'as dit que ça devait être dans tes cordes :)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 771
Inscription : 17 juin 2004, 16:47
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par kogami »

J'avoue ne pas trop savoir comment faire pour utiliser ton code sur le jeu, la ligne de commande pour commencer, si quelqu'un la connait ?
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-
Re: [SNES] Dragon Ball Z : Super Saiyajin Densetsu

Message non lu par Hiei- »

BahaBulle a écrit :
Hiei- a écrit :Qui se dévoue pour le finaliser, alors ? :-D
Ben t'as dit que ça devait être dans tes cordes :)
Non, j'ai dit que le rajout des variables (adresse, nom de fichiers) devrait être dans mes cordes, mais pas le rajout du buffer.

Je me cite :
Hiei- a écrit :C'est probablement dans mes cordes (enfin, je pense) de rajouter l'input, l'adresse et le fichier à décompresser (j'ai d'autres modèles à disposition) mais pour le "buffer", aucune idée de la méthode.

Merci en tout cas d'y avoir jeté un oeil :wink:


Répondre