Romhacking.it Forums

Traduzioni => Rom Hacking => Discussione aperta da: mentz il Febbraio 14, 2005, 14:43:57

Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 14, 2005, 14:43:57
Ho trovato un gioco bastardo che usa huffman per decomprimere i dati nella memoria 0x02000000 e poi chiama lzss per decomprimere quei dati....

Doppia compressione quindi per lo stesso dato...

sembra come uno zip chiuso dentro un file rar...

Bastardi !!!!

Il programmino di mat supera le lzss
(ho fatto dei test approfonditi anche su questo...)

ma per Huffman e quell'altra ??
Titolo: Compressioni Gba
Inserito da: Brisma il Febbraio 14, 2005, 14:54:08
Benvenuto nel fantastico mondo di Seiken Densetsu 3 :D
Titolo: Compressioni Gba
Inserito da: Chester il Febbraio 14, 2005, 16:23:05
Compressione Huffman:
http://www.gamedev.net/reference/articles/article286.asp (http://www.gamedev.net/reference/articles/article286.asp)

Codice sorgente di un decompressore Huffman molto semplice scritto in C:
http://rr.exhedra.com/upload_PSC/ftp/Compr...73381012001.zip (http://rr.exhedra.com/upload_PSC/ftp/Compressio273381012001.zip)

Vedi se può esserti utile...
Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 14, 2005, 16:28:17
Il problema delle compressioni gba è che sono personalizzate !!!

Mat ha dovuto sfacchinare un bel pò per trovare l'algoritmo giusto, perché una qualsiasi lzss non va bene...

La rogna più grande non è poi decomprimere (si potrebbero usare le routine del gba), quando ricomprimere (che non è previsto...)

ma Seiken Densetsu 3 è per gba ???
Titolo: Compressioni Gba
Inserito da: Chester il Febbraio 14, 2005, 17:35:02
Citazionema Seiken Densetsu 3 è per gba ???
...
...
...
Secret of Mana 2 ti dice qualcosa?
SNES...


se son personalizzate allora è difficile che trovi qualcosa.
Se è una compressione huffman standard allora quel programmino comprime anche.
Titolo: Compressioni Gba
Inserito da: Brisma il Febbraio 14, 2005, 18:49:19
CitazioneLa rogna più grande non è poi decomprimere (si potrebbero usare le routine del gba), quando ricomprimere (che non è previsto...)
Pensa che invece io con SD3 ho il problema opposto, ho il compressore perfetto, ma non ho il dumper :(  
Titolo: Compressioni Gba
Inserito da: |GeO| il Febbraio 14, 2005, 18:57:20
Mentz, fra la roba che ti ho passato tempo fa c'erano dei sorgenti per le varie compressioni specifiche gba... (Me li aveva dati Gemini mi sa...). Cmq al massimo chiedi a Gemini se ti mette in contatto con pixel, lui s'era studiato il bios gba per bene (e relative SWI e compressioni :P).

Cronaldo, quel link non mi è nuovo... ;)
Titolo: Compressioni Gba
Inserito da: Brisma il Febbraio 14, 2005, 19:47:44
Povero gemini, gira e rigira è sempre in mezzo :D
Titolo: Compressioni Gba
Inserito da: Gemini il Febbraio 14, 2005, 21:15:33
CitazionePovero gemini, gira e rigira è sempre in mezzo :D
Io sono sempre ovunque. :*
Perché noi siamo tanti...


:clomax mode:


Confermo comunque, i sorgenti delle varie compressioni GBA li ho passati io a GeaoMiaoMeravigliao, peccato manchi la decompressione. :9
Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 14, 2005, 21:25:35
per la decompressione si può sfruttare l'arm....facendogli decomprimere della rom in un punto del gba... poi vai lì e lo dumpi...

hehehehe.....
Titolo: Compressioni Gba
Inserito da: Chester il Febbraio 15, 2005, 13:24:15
CitazioneCronaldo, quel link non mi è nuovo...
;)
cmq è piuttosto completo.
Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 15, 2005, 13:46:15
CitazioneMentz, fra la roba che ti ho passato tempo fa c'erano dei sorgenti per le varie compressioni specifiche gba... (Me li aveva dati Gemini mi sa...). Cmq al massimo chiedi a Gemini se ti mette in contatto con pixel, lui s'era studiato il bios gba per bene (e relative SWI e compressioni :P).

Cronaldo, quel link non mi è nuovo... ;)
Sì, è vero... ci sono dei sorgenti delle compressioni...

Però sono buttate lì...

bisogna mettergli tutto quello che serve per poter comprimere/decomprimere un file....

Però ci si può smanettare sopra....
(peccato che ho poco tempo...)
Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 16, 2005, 08:50:22
anche se riguarda la lz77gba, riporto lo stesso quest'info...

r0   Source address, pointing to data as such:
       Data header (32bit)
         Bit 0-3   Reserved
         Bit 4-7   Compressed type (must be 1 for LZ77)
         Bit 8-31  Size of decompressed data
       Repeat below. Each Flag Byte followed by eight Blocks.
       Flag data (8bit)
         Bit 0-7   Type Flags for next 8 Blocks, MSB first
       Block Type 0 - Uncompressed - Copy 1 Byte from Source to Dest
         Bit 0-7   One data byte to be copied to dest
       Block Type 1 - Compressed - Copy N+3 Bytes from Dest-Disp-1 to Dest
         Bit 0-3   Disp MSBs
         Bit 4-7   Number of bytes to copy (minus 3)
         Bit 8-15  Disp LSBs
 r1   Destination address

Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 17, 2005, 08:26:11
A quanto pare il problema è risolto....

esiste un tool che può comprimere i dati per gba con le compressioni:

Differential 16 bit
Differential 8 bit
RLE
Huffman 8 bit
Huffman 4 bit
LZ77
LZ77 VRAM safe


Per decomprimere ho già visto che può essere usato l'arm per creare una piccola rom con i dati da decomprimere e si può decidere di farglieli decomprimere dove vuole, così si può fare un dump...(usando VBA)

Dalle header dei file compressi ricaviamo anche la lunghezza del blocco compresso...(siamo a cavallo)

L'ho già sperimentato con Klonoa Empire of Dreams(ma che gioco è ??)

Certo un tool che decomprimesse sarebbe l'ideale (come quello di mat)
ma non si può avere tutto dalla vita...
Titolo: Compressioni Gba
Inserito da: yuumeikai il Febbraio 17, 2005, 10:05:12
CitazioneL'ho già sperimentato con Klonoa Empire of Dreams(ma che gioco è ??)
Il tizio alato con il cappello blu... una sorta di Sonic  <_<
Lo hanno riciclato (come è successo per tanti titoli come Kirby) su varie console.

Per il resto, a quanto pare ti stai dando da fare  :o  
Titolo: Compressioni Gba
Inserito da: Clomax il Febbraio 17, 2005, 10:22:31
mentz di che tool stai parlando? dai, sputa il nome che lo aggiungo alla sezione programmi  :clomax mode:  
Titolo: Compressioni Gba
Inserito da: mentz il Febbraio 22, 2005, 21:18:00
hehehehe...

Il tool in questione non decomprime (quello lo faccio io con l'ARM).
È un tool che comprime (i sorgenti sono ovunque)...

Per ora ho fatto un programmino che mi estrae i blocchi compressi, così li inserisco in uno script arm e li decomprimo...

Ho superato senza difficoltà doppie compressioni Huffman e lz77...

Il problema più grande non sono le compressioni, ma i puntatori...

Quelli standard sono 4 byte permettendo puntamenti illimitati dentro la rom...
Quelli non standard dovrebbero essere a 2 byte e sono legati ad una rom che usa il Thumb (16bit) invece dell'ARM (32bit)

Infatti è la seconda rom che becco in thumb e non trovo i puntatori alle parti compresse e quindi niente da fare, perché le cose compresse modificate non sono grandi come l'originale e non si può neanche sostituire...
Anche volendo modificare il codice, per il thumb è impossibile fare salti a fine rom...

Riassunto:

Arm -> 32 bit -> puntatori a 4 byte
Thumb->16bit-> puntatori a 2 byte (bastardi)
Titolo: Compressioni Gba
Inserito da: neon il Marzo 03, 2005, 12:10:07
CitazioneA quanto pare il problema è risolto....

esiste un tool che può comprimere i dati per gba con le compressioni:

Differential 16 bit
Differential 8 bit
RLE
Huffman 8 bit
Huffman 4 bit
LZ77
LZ77 VRAM safe
Credo tu ti riferisca al GBAcrusher

Cmq per quanto riguarda LZ77 esiste un programma che si chiama gbacomp (scritto da un jappo) ed effettua compressione e decompressione.

L'ideale sarebbe avere l'agbcomp (prog ufficiale nintendo) che supporta tutti i formati.

Tanto per curiosita', che gioco e'?
Titolo: Compressioni Gba
Inserito da: mentz il Marzo 10, 2005, 14:53:47
Per quanto riguarda la scena italiana, il buon MAT ha fatto un tool che comprime e decomprime in lz77 per gba...

E funziona alla grande...

Il gioco in questione è "Klonoa empire of dreams"

solo se l'agbcomp decomprimesse, sarebbe utile...