Autore Topic: [snes] Bahamut Lagoon  (Letto 26691 volte)

Offline Chester

  • Moderatore globale
  • Utente avanzato
  • *****
  • Post: 384
  • Wave Existence
    • Mostra profilo
Re:[snes] Bahamut Lagoon
« Risposta #45 il: Maggio 03, 2010, 11:05:50 »
Hack al 100% invidiatoci dal mondo intero, DeJap inclusi, ma da parte mia c'è scarsa voglia (nonché tempo) di continuare a tradurlo. Il progetto può considerarsi sospeso fino a quando non si farà vivo qualche volontario *serio*. Mi spiace, ma ho altri progetti in cantiere :ph34r:
Close the world, txEn eht nepO

Offline Vivi 86

  • Utenti Base
  • *
  • Post: 44
    • Mostra profilo
Re:[snes] Bahamut Lagoon
« Risposta #46 il: Gennaio 16, 2012, 08:23:26 »
qualcuno può contattare chester personalmente e dirgli di collegarsi al forum?! Ho quasi finito la traduzione del gioco ma è da giorni che non lo vedo su msn (io è da circa un anno che non mi connetto  ;D ) e per email non risponde!

Offline Chester

  • Moderatore globale
  • Utente avanzato
  • *****
  • Post: 384
  • Wave Existence
    • Mostra profilo
Re:[snes] Bahamut Lagoon
« Risposta #47 il: Gennaio 17, 2012, 23:04:05 »
Hai PM.
Close the world, txEn eht nepO

Offline Clomax

  • Amministratore
  • Utente senior
  • *****
  • Post: 1.339
  • Cavaliere di ventura
    • Mostra profilo
    • http://www.romhacking.it
Re:[snes] Bahamut Lagoon
« Risposta #48 il: Gennaio 18, 2012, 09:45:55 »
urka, news in arrivo? :P
Clomax
Personal website: clomax.it
rfontanarosa's romhacking bookmarks on
delicious


Offline arnold101

  • Utenti Base
  • *
  • Post: 13
    • Mostra profilo
Re:[snes] Bahamut Lagoon
« Risposta #49 il: Settembre 07, 2017, 16:51:27 »
Ce l'ho fatta :favorevole:

Dopo ore passate in mezzo alle routine di Bahamut Lagoon DeJap, ecco a voi il risultato dei miei sforzi!




Di seguito spiego molto rapidamente tutti i procedimenti effettuati (l'emulatore utilizzato è il Geiger Snes9x Debugger):

La scoperta del funzionamento dei puntatori
- Una veloce occhiata alla RAM durante la visualizzazione del testo ha confermato che era lì che veniva allocato una volta decompresso, o meglio durante la decompressione;
- Con un breakpoint in lettura all'indirizzo 7FAC46 (l'indirizzo in cui iniziava una frase, quindi al quale avrebbe dovuto puntare il pointer) l'esecuzione si è fermata a quest'istruzione:
Codice: [Seleziona]
$DA/694D B7 2B       LDA [$2B],y[$7F:AC46]   A:0CFF X:0E03 Y:0C46 P:envMxdizCLa quale carica nell'accumulatore il valore contenuto nella posizione equivalente alla somma tra il valore contenuto in $2B e nel registro Y, in tutto 7FAC46. A questo punto appare evidente che, essendo il valore di Y pari a 0C46, $2B contenga 7FA000, ovvero l'indirizzo di partenza dei dati decompressi in RAM (da notare come, a partire da qui e prima dell'inizio del testo, siano memorizzati, tra l'altro, i puntatori). Y rappresenta dunque lo scostamento a partire da questa locazione, ed è quindi con ogni probabilità il puntatore (opportunamente invertito).

La scoperta della tabella degli indirizzi dei blocchi compressi
- Il breakpoint in scrittura per l'indirizzo $7F:A000 ha fermato l'esecuzione su quest'istruzione:
Codice: [Seleziona]
$DA/68CB 8D 80 21    STA $2180  {$7F:A000}   A:A00C X:0000 Y:0003 P:envMxdizc- Ho steppato fino ad arrivare a un'istruzione che facesse riferimento a un indirizzo della ROM:
Codice: [Seleziona]
$DA/68CE C8          INY                     A:A00C X:0000 Y:0003 P:envMxdizc
$DA/68CF B7 28       LDA [$28],y[$DB:F4B5]   A:A00C X:0000 Y:0004 P:envMxdizc <-----
$DA/68D1 8D 80 21    STA $2180  {$7F:A001}   A:A000 X:0000 Y:0004 P:envMxdiZc
$DA/68D4 C8          INY                     A:A000 X:0000 Y:0004 P:envMxdiZc
$DA/68D5 B7 28       LDA [$28],y[$DB:F4B6]   A:A000 X:0000 Y:0005 P:envMxdizc
L'istruzione indicata dalla freccia carica nell'accumulatore il valore formato dalla somma del contenuto di $28 e di quello di Y, l'indirizzo DBF4B5. Si capisce dal valore della Y che ci si trova già nel bel mezzo della routine di decompressione, e non esattamente all'inizio. Si intuisce quindi che DBF4B5 (somma di $28 + Y) meno 0004 (Y) è uguale a DBF4B1, ovvero la posizione della ROM dal quale il gioco comincia a decomprimere il blocco compresso. Uno sguardo nella posizione della RAM 7E0028 ha confermato questa tesi;

- Una volta invertito il valore DBF4B1 (formato SNES HiRom*), ho ottenuto B1F4DB e l'ho cercato nella ROM tramite un Hexeditor. All'indirizzo 1A8000 (formato PC) ho trovato la tanto cercata tabella che mi permette, modificandola, di espandere la ROM e spostare il testo dove preferisco** :lol:

* L'indirizzo DBF4B1 è in formato SNES HiRom, convertito in formato PC corrisponde a 1BF4B1.

** In realtà, avendo scritto un compressore non è strettamente necessario spostare alcunché. Questa tabella mi è utile soprattutto per trovare gli indirizzi a partire dai quali ha inizio ciascun blocco compresso.

P.S. I primi 2 byte del blocco compresso rappresentano la lunghezza in byte, invertita, del blocco di testo compresso. E' fondamentale che il suo valore sia regolato in modo tale che la sequenza di byte corrisponda in maniera valida a ciascun bit dell'ultimo flag della compressione. Se mancano dei byte per completare la sequenza, è sufficente aggiungere tanti 00 (che ovviamente vanno tenuti in considerazione nel conteggio) quanti sono i byte mancanti.



Se siete interessati e non è chiaro qualche punto (molto probabile visto che l'ho scritto in 10 minuti) chiedete pure :)
tutto sto casino e sta pappardella tecnica e poi hai abbandonato tutto? no comment. E quello che diceva di aver quasi finito di tradurlo, pure lui sparito?

Offline Clomax

  • Amministratore
  • Utente senior
  • *****
  • Post: 1.339
  • Cavaliere di ventura
    • Mostra profilo
    • http://www.romhacking.it
Re:[snes] Bahamut Lagoon
« Risposta #50 il: Settembre 11, 2017, 10:49:08 »
il progetto è stato spostato da tempo in "progetti abbandonati". ergo: tutto è fermo. la "pappardella tecnica" potrebbe essere utile a chi volesse cimentarsi nella traduzione. avevi veramente bisogno di questa risposta? :P
Clomax
Personal website: clomax.it
rfontanarosa's romhacking bookmarks on
delicious