Romhacking.it Forums

Altro => Archivio => Collaborazioni => Discussione aperta da: PhantomFav il Aprile 10, 2007, 17:17:20

Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 10, 2007, 17:17:20
che fine hanno fatto i dialoghi di questo gioco (così scemo (NES))è un mistero non esistono mte/dte o dizionari per nasconderli ma comunque non si trovano, c'è qualcuno che mi vuole aiutare?
Titolo: [nes] Snake's revenge
Inserito da: Vash il Aprile 11, 2007, 11:45:05
sento puzza di compressione...
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 11, 2007, 16:11:07
si però non riesco a carpire che razza di compressione
Titolo: [nes] Snake's revenge
Inserito da: mog_tom il Aprile 11, 2007, 20:33:45
Forse hai già provato, ma cerca i tile in uso con il PPU viewer di FCE Ultra, magari è una tabella non standard.
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 11, 2007, 23:24:38
scusa?

cosa sono ppu e fce?
Titolo: [nes] Snake's revenge
Inserito da: Phoenix il Aprile 11, 2007, 23:43:47
Citazionescusa?

cosa sono ppu e fce?
FCE Ultra è un emulatore che ha un viewer (PPU) che consente di visualizzare le tiles (grafica) utilizzate in quell'istante dal gioco, usandolo quando viene visualizzato del testo, dovresti poter vedere il font, e, se per caso le lettere non sono in ordine alfabetico, questo è il motivo per cui non riesci a trovare niente con la ricerca relativa.

Pagina Download FCEUXD SP (http://www.the-interweb.com/serendipity/index.php?/archives/90-Release-of-FCEUXD-SP-1.07.html&PHPSESSID=6bad4428440995532f7142453031f06e)
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 12, 2007, 15:13:47
pultroppo sono in ordine alfabetico.

me ne sono accorto anche con tlp.

qualche altro consiglio?
Titolo: [nes] Snake's revenge
Inserito da: bell1-1010 il Aprile 20, 2007, 10:31:41
una cosa che si nota però che per l'intro usa una table mentre  per il testo nel gioco ne usa un'altra...
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 25, 2007, 21:23:18
altre idee?
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 27, 2007, 15:48:23
io penso proprio ke sia compresso...
se è un lzss e se siamo fortunati è lo stesso algoritmo di tmnt tournament fighters x snes ti passo il tool ke ho scritto
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 27, 2007, 17:07:00
passa passa :),

di che tipo di compressione si trattava il gioco in questione?
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 27, 2007, 21:29:42
si trattava di lzss, ed essendo sempre roba della konami...
ma prima dovresti trovare il blocco di testo compresso con il debugger.
fai prima questo e poi ti passo il tool x pm.

byee ^__^
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 27, 2007, 21:51:47
che devo fare?
se sapessi dove si trova il testo già l'avrei modificato.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 28, 2007, 02:52:50
ahhaha allora ti do un'ottima notizia.
la compressione è la stessa usata nel gioko bart vs space mutants.
hai presente quando parli x la prima volta alla radiolina dove c'è il tizio col casco ke ti dice: snake,..... e la frase finisce con hold?
beh quella prima frase la trovi all'indirizzo 0xeac4 (ho testato la rom snake's revenge (u)[!]) della rom fisica.
per capire come funziona la semplice compressione vai al thread:
http://www.romhacking.it/forum/index.php?showtopic=1064 (http://www.romhacking.it/forum/index.php?showtopic=1064)
dove spiego tutto.
in pratika ad ogni nibble (mezzo byte) corrisponde un carattere.
guarda se sai il c++ ti mando il sorgente del mio programma e te lo modifiki.
se nn lo conosci prova a darmi le corrispondenze es.:6=a,7=l ecc...
e se possibile modifikerò il programma. ok?
bye
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 28, 2007, 15:19:23
come hai fatto a trovare l'inizio del blocco di testo?
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 28, 2007, 16:27:56
kon il debugger di fceultra.
cmq sia vedi ke ovviamente differisce un po' da bart vs space mutants anke se
ho visto ke i bytes di crittografia sono posti dopo anzikè prima...
vedi un po' kom'è strutturato io purtroppo devo dedikarmi ad altri progetti..
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 28, 2007, 16:31:36
non penso che sia come dici tu. ho appena provato ma non mi sembra seguire le regole dell'altra compressione. ci assomiglia molto ma sembra più complessa, provo a cambiare qualcosa ma non riesco a capire quale nibble corrisponde a quale lettera es.

sei sicuro che sia come bart vs space mutant?
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 28, 2007, 16:43:30
mi dai il link di dove lo hai scaricato?
Titolo: [nes] Snake's revenge
Inserito da: Gemini il Aprile 28, 2007, 16:48:49
Usarlo google ogni tanto...
http://www.romhacking.net/?Category=&Conso...action=utillist (http://www.romhacking.net/?Category=&Console=0&Game=0&Author=0&Recm=&Level=&utilsearch=++Go++&title=fce&dsearch=&page=utils&action=utillist)
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 28, 2007, 17:46:21
vedi ke forse nn è proprio identico a basrt vs space mutant.. xò mi sembra molto simile..
bisognerebbe stare lì a studiarlo a fare tutto il trace col debugger...
scusa ma in questo nn posso aiutarti nn avrei il tempo.. (già mi manka x i miei progetti)

x trovare il testo metti un bpx on write sulla ram all'indirizzo 77c (dovrebbe essere giusto).
poi fai il trace con il tasto STEP, vedi un po' ke ne esce fuori...
in ogni kaso nn preoccuparti, penso sia una cazzata di algoritmo..
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 28, 2007, 19:21:39
Bene, ho capito la compressione. Cerca di capire bene xkè è semplice e cmq se riesci potrai scrivere un programmino, io al momento nn ho tempo... (poi kissà^___^)
allora guarda bene la tabella delle fonts.
(http://img82.imageshack.us/img82/449/fontzr1.gif)
come vedi ad ogni lettera corrisponde un valore.
IMPORTANTE: la compressione consiste in comprimere 2 caratteri per volta in modo tale ke da 4 nibbles (2 bytes) occupino 3 nibbles (1 byte e mezzo).
mo tu dirai... e per mezzo byte a carattere mi devono rompere i marones??
eh la konami fa questo ed altro...
dunque ogni 3 nibbles avremo 2 caratteri ok?
proviamo dunque a capire come funziona provando a scrivere "ABCD"
come vedi alla lettera A corrisponde il valore hex 2C o meglio dal 2C al 2F
perkè??
perkè dalla C alla F non fai altro ke scegliere una delle 4 righe della tabella.
C=prima riga, D=seconda... ecc...
ora dopo la A noi dobbiamo scrivere la B. Vediamo ke B si trova sulla prima riga.
Quindi scriviamo prima di tutto il byte 2C.
Ora essendo ke la tabella è 16x4 dobbiamo ricavarci le coordinate di B.
in esadecimale come hai visto ho messo le ascisse da 0 a F.
la lettera B si trova sull'ascissa C quindi se noi scriviamo i nibbles: '2C C'
otteniamo la scritta "AB". adiamo avanti. dobbiamo scrivere ankora "CD"
la lettera C corrisponde a 34 e quindi aggiungiamo il valore ai nostri bytes precedenti:
2C C3 4
adesso dobbiamo scrivere la D. questa si trova sulla prima riga.
in questa caso essendo ke abbiamo scritto 34, le righe saranno date da:
4=prima riga, 5=seconda ecc.. (da 4 a 7)
quindi lasciamo il 4 (perkè la D sta sulla rpima riga) e scriviamo il nuovo nibble: 0xE
ke corrisponde alla lettera D sulle ascisse. i bytes da noi scritti saranno quindi:
"2C C3 4E" ed avremo così scritto "ABCD".


in sostanza si scrivono 2 caratteri ogni 3 nibbles:
primo nibble(+secondo nibble)=primo carattere
secondo nibble=parte del primo nibble+ordinata del secondo carattere
terzo nibble=ascissa del secondo carattere

tutto kiaro??(inutile dire ke questa compressione è valida solo x le stringhe e nn x qualsiasi file binario)
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 28, 2007, 20:17:19
grandissimo ho capito perfettamente, quindi AQ= 2D B.

solo due cose e poi non rompo più:

come hai fatto ad ottenere quella tabella?

Citazionex trovare il testo metti un bpx on write sulla ram all'indirizzo 77c (dovrebbe essere giusto).
poi fai il trace con il tasto STEP, vedi un po' ke ne esce fuori...
in ogni kaso nn preoccuparti, penso sia una cazzata di algoritmo..
come si fà?
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 28, 2007, 20:23:56
1) x i fonts ho usato la funzione ppu viewer dell'emulatore fceuxdsp.
2) apri fceultra debugger poi dove dice ADD tra i beackpoints scrivi sulla prima casella 77C.
a quel punto noterai ke in assempbly l'operatore LDA carikerà dei bytes dalla rom fisika... es. dirà LDA AAC4. signifika ke sta prelevando un byte dall'offset
AAC4. xò x andarlo a trovare nella rom fisika devi aggiungere 0x4000.
quindi AAC4+4000=EAC4. poi con il tasto STEP ti scorri tutte le operazioni una alla volta. ma a sto punto ke te ne fai? ormai l'arcano è stato svelato... devi puttare un po' di codice e scrivere un tool..

bye
Titolo: [nes] Snake's revenge
Inserito da: Vash il Aprile 28, 2007, 21:25:45
geniale come compressione...vista in piccolo è inutile ma ragionando si comprime il 25% di spazio (se lo script è tutto consecutivo) quindi su 100 mega se ne occupano 75.....
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 28, 2007, 21:55:04
non riesco a trovare AAC4, ci sono un sacco di LDA qulae devo prendere?
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 29, 2007, 18:12:34
tu guarda dove dice LDA 0xAxxx
perkè dove dice LDA 0x07xx significa che prende dalla ram.
tu dici... xkè?
io ho fatto questo:
ho fatto un save state mentre il messaggio si formava.
ho aperto il save state con searchr2 cercando l'ultima parola  visualizzata mentre salvavo (era "hold") poi ho copiato i bytes ke formavano questa parola (dato ke non è in ascii)
poi ho fatto un dump dalla memoria sempre con quel debugger.
il dump va fatto allo stesso momento del save state.
poi ho cercato i bytes copiati nel dump, e me li trovava all'indirizzo 0x77c
capito il trukketto?
ora so ke in ram a quell'indirizzo il gioko mi decomprime la stringa.
quando metto il bpx sul 0x77c mi appaiono delle istruzioni LDA ke prelevano dalla rom fisika i bytes della stringa.
e questo è tutto.

ah vedi ke ho modificato il mio de/compressore x bart vs space mutants e in 20 min. ne è uscito fuori il compressore per questo metal gear...
significa ke in 10 min. farò il decompressore.
vediamo se stasera trovo un buco...
se posso lo scrivo tanto è di una facilità immonda sto programmino x cui vediamo appena posso lo posterò su sto thread.

byee
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 29, 2007, 20:40:27
:o

:applauso:  
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 30, 2007, 02:23:30
Come promesso (anke se sono tornato tardi)
ho finito questo programmino. il decompressore era anke + semplice e veloce da fare...
ecco il link:
Mgs2Decompv01 (http://www.divshare.com/download/518847-e66)

Ovviamente questo tool comprime e decomprime, ma non estrae il testo. quello devi farlo tu ^__^

alla prox
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 08:39:01
come lo faccio a far funzionare? premo un tasto e termina.
Titolo: [nes] Snake's revenge
Inserito da: Phoenix il Aprile 30, 2007, 12:53:37
Citazionecome lo faccio a far funzionare? premo un tasto e termina.
È un'applicazione da riga di comando, devi aprire il prompt di comandi, spostarti nella directory in cui c'è l'eseguibile ed eseguirlo con i parametri, come ad esempio:
mgs2.exe -d TestoCompressoEstrattoDallaRom.dat TestoDecompressoInUscita.txt

premi invio ed il gioco è fatto.
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 13:11:44
.dat? come lo faccio a fare?
Titolo: [nes] Snake's revenge
Inserito da: Vash il Aprile 30, 2007, 13:30:21
era un esempio  -_-  
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 30, 2007, 14:15:00
Ecco la v0.2:
Mgs2Decompv02 (http://www.divshare.com/download/525219-599)
ho fixato un piccolo bug^___^

Dunque ti dico come farei io. Se hai notato bene il testo comincia sempre con i bytes "FC XX" dove XX è 00 o 01 o 02 o 03 o FB a seconda delle facce ke devono comparire.
tu copiati i bytes del dialogo con un hex editor e salvali su un file ke kiamerai come vuoi.
ti mostro la tabella dei simboli del tool:
unsigned char table[4][16] = { '|', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
                               'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
                               'V', 'W', 'X', 'Y', 'Z', '.', ',', '°', '\'', '!', '"', '-', '_', '=', '?', '[',
                               '(', ')', ']', '<', '>', '\\', '/', '$', '#', '^', '&', ' ', '%', '*', '£', '@' };


uno di loro assume valori tipo:
*=vai a capo
£=finisci la frase

vedi un pkino insomma ora il lavoro ti è molto + facile dai...
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 15:54:09
come si crea il file .dat????

mi dice file inesistente se ci dò un txt.
Titolo: [nes] Snake's revenge
Inserito da: Phoenix il Aprile 30, 2007, 16:35:59
Citazionecome si crea il file .dat????

mi dice file inesistente se ci dò un txt.
In sostanza il prog vuole come parametri il nome delfile che contiene il testo compresso (l'estesione non deve sessere per forza dat ma qualunque visto he il testo comprsso sei tu a doverlo estrarre a mano dalla rom con un editor esadecimale) e il nome del file in uscita che conterrà il testo decompresso la cui estensioe non deve essere necessariamente txt visto che poi il file in uscita dovrai modificarlo con il thingy o qualunque altro editor che supporti una table.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 30, 2007, 16:46:39
in realtà però il file d'uscita (dalla decompressione) sarà in ASCII quindi potrai liberamente modificarlo col notepad.
ho scritto *.dat ma può essere anke *.xxx basta ke il file contenga i bytes del testo compresso.
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 17:29:25
EDIT:
risolto, ma pare che le frasi siano sconnesse, ma se per caso un parola viene sfasata di un nibble(esempio un byte di separazione non contemplato)la decompressione và a quel paese?
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 17:49:32
si è così, se estraggo un byte prima si leggono altre frasi, pultroppo la struttura non è rogolare, dovrò estrarre a pezzettini.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Aprile 30, 2007, 18:13:43
se ho ben kapito quello ke intendi..
se si trova un byte ke divide le frasi, evidentemente c'è anke un puntatore ke punta alla nuova frase, quindi sei obbligato a procedere come hai detto.
altrimenti fammi capire bene con un esempio concreto.. magari c'è da migliorare il tool  
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 19:29:38
hai capito perfettamente, pultroppo è così.

a proposito qual'è formula per calcolare i puntatori NES?
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Aprile 30, 2007, 20:15:09
ho un problema(o meglio il programmino ha un problema), ho provato a vedere se decomprimendo e poi comprimendo un file uscivo lo stesso risultato, giusto per vedere se funzionava ed ecco un errore:

[img=http://img115.imageshack.us/img115/4488/immagineqj0.th.jpg] (http://img115.imageshack.us/my.php?image=immagineqj0.jpg)

puoi fare qualcosa?

P.S la parte che ho provato a decomprimere/comprimere si trova da 0xEAC4 a 0xEB5D.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Maggio 01, 2007, 00:40:30
si hai ragione scusa ^__^
piccolo errorino. succede =)
ecco la 0.3:
Mgs2Decompv03 (http://www.divshare.com/download/539939-0b6)

ps. fammi sapere se è tutto ok

byeee
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Maggio 01, 2007, 08:36:17
mi dispiace ma il problema non si è risolto, esce sempre uguale l'errore.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Maggio 01, 2007, 18:55:50
guarda, ho ripetutamente provato a decomprimere e poi comprimere e con la 0.3
il problema non esiste +.
il byte ke differiva era il 0x40, ma ora funziona e scrive il 0x7E come in figura.
sei sicuro di aver provato bene?
scarika il tool e assicurati ke sia la versione 0.3

bye
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Maggio 01, 2007, 19:56:41
ho appena riprovato e continua a rifarlo. forse mi hai dato di nuovo la versione 02
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Maggio 01, 2007, 20:59:00
d'oh hai ragione.
riscarike ora
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Maggio 01, 2007, 21:33:01
problemino, adesso è tutto ok ma ho notato una cosa mentre facevo manualmente la traduzione. alla quinta riga non funziona la combinazione che và da F4 a F7, insomma quella che fà andare a capo.
serve invece quella che và da EC a EF. prova se non ci credi.
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Maggio 01, 2007, 22:47:59
spiegati meglio... nnn ho ben capito cosa nn funge. tieni presente ke io la rom nn l'ho studiata eh
in ogni caso usando il tool ke ho scritto e rispettando i simboli, nn dovresti avere problemi.
Titolo: [nes] Snake's revenge
Inserito da: PhantomFav il Maggio 21, 2007, 20:38:48
scusami per la momentanea assenza ma ho dovuto studiare molto.

cmq ho capito il prob.

il compressore comprime bene le stringe ("lettara" "a capo") ma non funziona quando deve comprimere ("a capo" "lettera"), con a capo indico il byte che fà andare a capo la riga.

bisogna trovare il corispondente giusto per la seconda opzione.


speriamo che riesca  atrovare altro tempo libero.

per il momento mi arrangerò mettendo uno spazio prima di andare da capo.

:)
Titolo: [nes] Snake's revenge
Inserito da: White Dragon il Maggio 21, 2007, 22:39:17
mi posteresti x favore l'indirizzo del testo ke nn riesci a tradurre col compressore, oppure meglio ankora, mi posteresti una frase da comprimere e decomprimere, ke nn riesci a codificare?
cmq sec. me nn è ke ci sono problemi al compressore... +tosto invece dato ke un numero di lettere pari si codificano in byte dispari allora immagino ke ci sia un meccanismo ke faccia da puntatore anke sul nibble. sul compressore la fine della frase su un nibble, la risolvo affiankandoci un nibble "bin: 0000" quindi il file finisce con 0xX0 ok? xò si deve vedere ke succede nella rom...
questo xò è lavoro del rom hacker ;)