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 ??
Benvenuto nel fantastico mondo di Seiken Densetsu 3 :D
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...
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 ???
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.
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 :(
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... ;)
Povero gemini, gira e rigira è sempre in mezzo :D
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
per la decompressione si può sfruttare l'arm....facendogli decomprimere della rom in un punto del gba... poi vai lì e lo dumpi...
hehehehe.....
CitazioneCronaldo, quel link non mi è nuovo...
;)
cmq è piuttosto completo.
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...)
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
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...
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
mentz di che tool stai parlando? dai, sputa il nome che lo aggiungo alla sezione programmi :clomax mode:
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)
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'?
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...