Romhacking.it Forums

Romhacking.it => Progetti => Progetti Completi => Discussione aperta da: Romhacking.it il Febbraio 14, 2006, 23:47:00

Titolo: [snes] Brain Lord
Inserito da: Romhacking.it il Febbraio 14, 2006, 23:47:00
(https://romhacking.it/upload/projects/%5B513%5DBrain%20Lord%20(I)%20%5B!%5D.004.png) (https://romhacking.it/upload/projects/%5B513%5DBrain%20Lord%20(I)%20%5B!%5D.008.png) (https://romhacking.it/upload/projects/%5B513%5DBrain%20Lord%20(I)%20%5B!%5D.009.png) (https://romhacking.it/upload/projects/%5B513%5DBrain%20Lord%20(I)%20%5B!%5D.014.png)

Autori: Clomax (http://www.romhacking.it/forums/index.php?action=profile;u=2), Mog (http://www.romhacking.it/forums/index.php?action=profile;u=22), _Ombra_ (http://www.romhacking.it/forums/index.php?action=profile;u=14)
Versione: Americana
Lingue: Inglese -> Italiano
Stato: Completato
Percentuale: 100%

[AUTORI]

Clomax, Ombra (hacking)
Clomax, Mog, Ombra (traduzione)

[STATO DEL PROGETTO]

[TESTI]

Dialoghi: 100%
Nomi e descrizioni delle giade: 100%
Nomi e descrizioni delle armi: 100%
Nomi e descrizioni delle armature: 100%
Nomi e descrizioni degli oggetti: 100%
Menu: 100%
Titoli di coda: 100%

[GRAFICA]

Schermata iniziale: 100%
Lettere accentate: 100%

[ASM]

Hack per la numerazione delle finestre degli oggetti: 100%
Titolo: Re:[snes] Brain Lord
Inserito da: Jegriva il Febbraio 15, 2006, 14:53:11
Uao, complimenti per la scelta del gioco e peril ritorno alle traduzioni, e auguri per il progetto (e il ripuntamento)!
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Febbraio 26, 2006, 12:49:31
tutto fermo fino a quando nn darò l'ultimo esame del semestre il primo marzo. il 4 viene a roma la mia amica svizzera, a fine marzo ho l'orale del concorso dei vigili del fuoco...

spero in marzo di potermi organizzare il lavoro: ultime cose da fare, alra tbl, eventuali toool, eventuali eccezioni...

cmq mi sta venendo in mente un modo per costruire un ripuntatore a partire dallo script in java... :P vediamo cosa tirerò fuori :D

n.b. da considerare che il gioco è stato tradotto in francese, spagnolo, portoghese e tedesco e IN NESSUNA DI QUESTE PATCH sono stati sfruttati i puntatori.

:brucelee:
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Maggio 25, 2006, 09:03:10
Citazionecmq mi sta venendo in mente un modo per costruire un ripuntatore a partire dallo script in java...

niente java ma c. niente "mi è venuto in mente un modo" ma grazie alla pazienza di geminao culao (e alla mia incapacità galoppante) sto (stiamo) "provando" a riscrivere un repointer valido in modo da rendere agevole al 100% la tradu. Il progetto va avanti...
Titolo: Re:[snes] Brain Lord
Inserito da: yuumeikai il Maggio 25, 2006, 13:47:12
Forza e coraggio! :)
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Giugno 13, 2006, 11:45:55
morpher si è incaricato di creare un ripuntatore (con editor annesso) per brain lord. gli ho fornito table e tutto ciò che ho scoperto (corso accellerato) su brain lord (poca robba). appena morpher produrrà qualcosa testeremo il ripuntatore e SOLO QUANDO SARà funzionante al 100% passerò a tradurre quella miseria di script. galvanizzato da ciò ho un altro progetto in mente... sarà mica un ys???? :D

morpher -> :clomax mode:  
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Febbraio 10, 2007, 21:37:12
morpher credo abbia scoperto l'onanismo stia frequentando tutti i pugnetta-party della sua regione in quanto non mi ha più fatto sapere nulla.

quest'oggi sono andato un pò avanti io con brain lord (dopo mesi) e ho scoperto che... scrivere un ripuntatore decente sarebbe fatica sprecata. brevemente...

- i puntatori sembrano messi alla cazzo di cane (uh yeah)

- sembra che l'unico blocco di testo (eh giòà, il testo non è moltissimo) sia suddiviso in stanze

- all'interno di queste stanze possono esserci sequenze (tipo quelle all'inizio del gioco, dove fanno tutto da soli) con all'interno i puntatori alla frase successiva (e fin qui tutto ok)

- alcuni sottoblocchi hanno il loro gruppetto di puntatori ficcato da qualche parte (ne ho trovato uno con i puntatori distanti byte variabili l'uno dall'altro) e me lo sono verificato (non testato con la rom) uno per uno e li ho trovati tutti.

- altri sottoblocchi contengono testo ma anche testo condizionato. ovvero alcune frasi contengono puntatori a frasi successive condizionate dal verificarsi di un evento o meno. insomma altri puntatori sparsi.

che dire... un bel casino. creare un tool è pura follia. ripuntare tutto a mano (non mi ricordo chi lo fece) sembra la soluzione migliore (anche perchè il testo non è tantissimo). insomma tradurrei via dump trovando le dte italiane adeguate (approposito, queste possono essere aumentate grazie a dello spazio libero puntabile dai puntatori delle dte, la cosa l'ho già testata sulla rom a suo tempo) e reinserirle una ad una switchando la table (eng, ita) via translhexion.

un lavoro che non porterebbe via neanche troppo tempo (il testo è in un blocco solo). poi toccherebbe agli oggetti.

se qualcuno mi volesse dare una mano (geo??????) sarebbe un'ottima cosa. qui parte del documento delle mie scoperte odierne:

Citazione
#################
# text pointers #
#################

-> a pointer end with a D7 byte
-> for the first room they start at 50013 offset with 0100D7 (first pointer)


0100d7 - 0001    - start (with pointers at the next sentence inside the text)
9823d7 - 2398    - room1
       - 23cb
       - 241b - (54c27)
       - 245b
       - 2473
       - 24b0 - (17247c)
       - 2540     - two pointers (surely a condition) inside the text that bagin at 24b0
       - 25b8 - (50019)
       - 2606 - (50091)
       - 2652 - (5008e)
       - 26e4 - (17274b)   - the pointer is located inside the NEXT sentence!!!
       - 2742 - (500b8)
       - 27c9 - (5005b)


#####################
# using blank space #
#####################

17faca end of block
180000 end of rom
the space instead 17faca and 180000 is usable

insomma... un casino colossale.
Titolo: Re:[snes] Brain Lord
Inserito da: |GeO| il Febbraio 13, 2007, 22:52:09
Clo', fino a giovedì (ultimo esame di questo dannato semestre, sono messo maluccio, se però mi fai una mail con tutto l'occorrente (la ahem, uhm, ROM, e un sunto tecnico) vedo cosa posso fare dal 16 al 26 (pausa prima del secondo semsestre). :)
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Febbraio 13, 2007, 23:06:19
guarda, io ho un esame il 19. io propongo un ultimo tentativo dal 19 in poi (anche perchè era quello il giorno in cui avrei iniziato la traduzione ripuntandola a mano). tuttavia ho messo gli occhi anche su un altro giochino: ys3 per snes. dubito che sia così tosto da hackerare come brain lord. se risulta essere molto più abbordabile, visto che di dte ce ne sono una decina appena (tutti nomi) si potrebbe puntare a creare un piccolo tool per quel gioco. appena trovo i puntatori in ys 3 apro la pagina del progetto.

grazie geao.
Titolo: Re:[snes] Brain Lord
Inserito da: |GeO| il Febbraio 14, 2007, 09:27:45
Allora vada per il 19, non ho fretta per nulla. :D

Se riesci/riusciamo a cavare anche le specifiche dall'altro gioco posso farti il programmino pure per quello.
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Febbraio 14, 2007, 09:33:09
ok, sempre il 19 mi metto a cercare i puntatori. se sono in una forma accettabile priorità massima a ys3. XD
Titolo: Re:[snes] Brain Lord
Inserito da: mog_tom il Febbraio 14, 2007, 10:52:20
noooo ys3 noooo è ingiocabilissimoooo aaarghhh
Titolo: Re:[snes] Brain Lord
Inserito da: |GeO| il Febbraio 23, 2007, 13:25:13
E' il 23, ancora nulla? :)
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Febbraio 24, 2007, 20:40:10
le uniche due volte che mi sono collegato eri sconnesso. dimmi quando sei online. domani sera?
Titolo: Re:[snes] Brain Lord
Inserito da: |GeO| il Febbraio 27, 2007, 16:29:20
Sono iniziati i corsi ed esco quasi tutti i pomeriggi alle 6, direi che almeno per ora non se ne fa nulla, ti farò sapere più avanti. :\
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Agosto 26, 2008, 17:45:10
salve, riprendo in mano questa traduzione che necessita di un repointer.
oggi ho fatto nuovamente il punto della situazione ripercorrendo velocemente i passi fatti l'ultima volta.

nei prossimi giorni scriverò un piccolo tool in python per verificare i ragionamenti fatti sui puntatori.

seguono gli appunti presi quest'oggi riguardo la struttura della rom:

Citazione
[brain lord - noheader]


[informazioni utili]

indirizzo inizio blocco di testo - 170000
indirizzo fine   blocco di testo - 17fac9
indirizzo fine della rom - 17ffff
byte inutilizzati ma sfruttabili dalla fine del blocco di testo fino alla fine della rom - 536
indirizzo inizio blocco puntatori - 050013
i puntatori puntano all'indirizzo dopo ogni (da verificare) byte F7 presente nel blocco di testo
i puntatori possono trovarsi:
   sparsi (ma forse hanno una logica) all'interno del blocco di testo
   nel blocco dei puntatori (al momento, per il testo, è stato trovato solo un blocco di puntatori)


[tabella dei puntatori]

indirizzo dopo il byte F7;puntatore;indirizzo del puntatore
170001;0100d7;50013
173b4e;4e3bd7;50187
1743fd;fd43d7;174060
174006;0640d7;173f8f
176c06;066cd7;50169
176d2a;2a6dd7;176c0f
178ce8;e88cd7;50157


[byte speciali]
8b - lo prende dalla ram?
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Agosto 28, 2008, 14:34:22
dopo tanto penare ho deciso come operare. creerò un programmino che cercherà i puntatori. nel caso in cui li trovi TUTTI (cercherò a mano quelli nn trovati) UNIVOCI (ho trovato un caso di puntatore doppio, un caso limite da gestire) allora passerò a pensare ad un algoritmo di ripuntamento.
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Agosto 29, 2008, 03:10:16
E' un bel casino; comunque un'ideuzza che mi venne quando esaminai la rom fu quella di non andare a ricalcolare i puntatori sparsi per il testo ma piazzarci direttamente il testo. Non ci sono problemi di spazio quindi credo che la cosa sia fattibile e il tuo lavoro si ridurrebbe a scrivere un tool che dumpi il testo dinamicamente su txt sequenziale e lo reinserisca direttamente in maniera sequenziale. Non so se sono stato abbastanza chiaro Clomo...  :P  
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Agosto 29, 2008, 19:39:44
si, è come hanno fatto i francesi, i tedeschi e gli spagnoli.
ma la fase di traduzione non mi interessa molto e piano piano sto arrivando a scoprire il funzionamento di molti byte (ad esempio quelli di apertura del menù dei negozi, le varie scelte e compagnia bella).

l'ultima novità riguarda un indetazione particolare quando parlano alcuni personaggi.
per fare un esempio:

gemmo:
  ciao clommo, oggi ho proprio
  voglia di divertirmi con te in un campo
  buio. hai la
  macchina?


ecco, quei tre spazi di indettatura sono dati da una dte (che altri non è che tre spazi) e da un ulteriore spazio. quindi due byte. questa tecnica è usata moltissimo nel gioco (praticamente ogni volta che parlano i tuoi compagni di avventura). avendo trovato i puntatori alle dte e considerando che dall'ultima dte fino alal fine del suo blocchetto c'è dello spazio inutilizzato (ma non per aggiungerci NUOVE dte, purtroppo solo per espanderli) si potrebbe tranquillamente aggiungere uno spazio alla dte da due spazi ed utilizzare quella nel testo risparmiando un pochino di spazio. ho ovviamente verificato che quella dte non viene utilizzata in altri casi particolari...

insomma, si potrebbero fare tante belle cosine... peccato per il wvf... non saprei da che parte cominciare...

io continuo per la strada del ripuntatore XD
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Agosto 30, 2008, 10:07:39
Citazionesi potrebbe tranquillamente aggiungere uno spazio alla dte

Dipende dal codice della dte. Se la Dual-Tile Encoding va a leggere solo 2 byte dalla tabella (cosa che credo sia così e proprio per questo è stato aggiunto un altro spazio nei dialoghi) anche aggiungendo un'altro spazio nella tabella di sicuro il codice non lo leggerà mai.

Citazionepeccato per il wvf... non saprei da che parte cominciare...

Parti da rh.it, dovrebbero esserci esempi di vwf per snes

PS: Ho aperto un paio di cartelle e ho trovato questo

(http://img516.imageshack.us/img516/7369/img1lc7.th.png) (http://img516.imageshack.us/my.php?image=img1lc7.png) (http://img294.imageshack.us/img294/7613/img2db2.th.png) (http://img294.imageshack.us/my.php?image=img2db2.png)

E' una modifica che feci tempo fa per portare la lunghezza dei nomi a 11 caratteri.

Titolo: Re:[snes] Brain Lord
Inserito da: Chester il Agosto 30, 2008, 19:03:27
Curiosità, come hai fatto per aumentare la lunghezza dei nomi? Immagino (spero per te xD) che sia stato meno incasinato del mio assurdo (ma necessario) metodo per Bahamut Lagoon.

Citazionedovrebbero esserci esempi di vwf per snes
C'è la guida di Gemini, che spiega molto bene il meccanismo di funzionamento, ma SOLO quello.
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Agosto 31, 2008, 00:19:45
CitazioneCuriosità, come hai fatto per aumentare la lunghezza dei nomi?

Forse non lo ricordi ma te l'ho già detto :P
Comunque il gioco lo permetteva e mi è bastato fare qualche modifica al codice. Per mia fortuna non ho dovuto implementare nessuna codifica particolare.

CitazioneC'è la guida di Gemini, che spiega molto bene il meccanismo di funzionamento, ma SOLO quello.

Su rh.net invece c'è proprio qualche esempio commentato. Basterebbe qualche ritocco per farlo andare su BL.

Titolo: Re:[snes] Brain Lord
Inserito da: Gemini il Agosto 31, 2008, 00:26:47
CitazioneSu rh.net invece c'è proprio qualche esempio commentato. Basterebbe qualche ritocco per farlo andare su BL.
Lui non parlava di un VWF convenzionale. Comunque direi che stiamo andando fuori argomento.
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 01, 2008, 11:21:18
CitazioneDipende dal codice della dte. Se la Dual-Tile Encoding va a leggere solo 2 byte dalla tabella (cosa che credo sia così e proprio per questo è stato aggiunto un altro spazio nei dialoghi) anche aggiungendo un'altro spazio nella tabella di sicuro il codice non lo leggerà mai.

nono, è ufficiale: si può fare. le DTE, che a questo punto chiemerei MTE sono le seguenti:


C9=  
CA=th
CB=ou
CC=a
CD=ar
CE=an
CF=be
D0=re
D1=n't
D2=de
D3=me
D4=is
D5=er
D6=ll
D7=se
D8=es
D9=Kashi
DA='s
DB=The
DC=it
DD=Rein
DE=to
DF=...
E0=we
E1=Drago
E2=I'm
E3=have
E4=in
E5=nd
E6=oo
E7=st
E8=ed
E9=on
EA=y
EB=d
EC=n
ED=e
EE=
EF=


il C9 è il famoso doppio spazio. hot rovato i puntatori a questo blocchetto e ho modificato i due spazi in tre. beh... lo ha preso. l'unica pecca è che non posso umentarne il numero ma c'è un pò di spazio fatto dfi zeri dopo l'ultimo <white>.
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 01, 2008, 16:00:30
ci sono novità:


indirizzo 6052e:

U8deX8dea8ded8dei8del8deo8der8deu8dex8de8d


questi sono i puntatori alle mte del post precedente. la forma è quella traslata e sono separati dal byte DE).

esempio: MTE all'indirizzo 120834 il suo puntatore sarà 3408de.

basta cambiargli l'indirizzo e si possono allungare le mte a piacimento


th

ou

a

ar

an

be

re

n't

de

me

is

er

ll

se

es

Kashi

's

The

it

Rein

to

...

we

Drago

I'm

have

in

nd

oo

st

ed

on

y

d

n

e





00000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000                                                    


ok, tutti quegli 0 sono sfruttabili. spero di essere stato chiaro. ovviamente sopra le dte c'è il blocco contenente i luoghi e alcuni nomi importanti. i loro puntatori precedono quelli delle mte.


        {END}

Remeer{END}

Rein{END}

Ferris{END}

Barness{END}

Kashian{END}

Ason{END}

Ifrie{END}

Golem{END}

Sarah{END}

Pilulu{END}

Wak{END}

Domul{END}

Kass{END}

Pazun{END}

Jima{END}

Griffin{END}

Priss{END}

Gala{END}

{END}

{END}

Arcs{END}

House{END}

Tower1{END}

Tower2{END}

Tower3{END}

Tower4{END}

Field 2{END}

Ruins1{END}

Ruins2{END}

Ruins3{END}

Ruins4{END}

Field 3{END}

Toronto{END}

Desert{END}

Castle1{END}

Castle2{END}

Castle3{END}

Castle4{END}

Field 5{END}

Droog2{END}

Droog1{END}

Droog3{END}

Droog4{END}

Worm{END}

Platinum1{END}

Platinum2{END}

Platinum3{END}

Platinum4{END}

Fairy{END}

Weapon 1{END}

Arena{END}

Weapon 2{END}

Boss 1{END}

Boss 2{END}

Boss 3{END}

Dragon{END}

Boss 5{END}

Dragon{END}

Restaurant{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

{END}

Morguai{END}

BlustOwk{END}

Bug-Aug{END}

Sabarri{END}

Dk.Hirai{END}

Chocoff{END}

Dragonite{END}

Gr.Lance{END}

Bachoff{END}

Ball Man{END}

Iron Bear{END}

King Bull{END}

Status{END}

Items{END}

Magic{END}

Option{END}

HP{END}

MP{END}

Power{END}

Guard{END}

Equ.{END}

Use{END}

Copy{END}

Dis.{END}

Yes{END}

No{END}

To whom{END}

Free{END}

Continue{END}

Beginning{END}

Copy{END}

Erase{END}

Quit{END}

Is this OK?{END}

{END}

Mode{END}

Config.{END}

1 {END}

2 {END}

3 {END}

Memory1erased{END}

Memory2erased{END}

Memory3erased{END}

Return{END}

Poison{END}

Paralysis{END}

LV{END}

EX{END}

Message{END}

Sound{END}

Fast{END}

Normal{END}

Slow{END}

Stereo{END}

Mono{END}

Buy{END}

Sell{END}

Trade{END}

Quit{END}

Key{END}

Attack...... {END}

Jump........ {END}

Defense..... {END}

Enter Com. {END}

{END}

Cancel Com. {END}

^{END}

A B C D E F G H I J K L{END}

{END}

M N O P Q R S T U V W X{END}

{END}

Y Z a b c d e f g h i j{END}

{END}

k l m n o p q r s t u v{END}

{END}

w x y z {F2}>       The End{END}

Task{END}

Escape{END}

Flag{END}

Items{END}

Level{END}

Slow{END}

Time{END}

Set{END}

Sound{END}

Memory{END}

Up{END}

Down{END}

On{END}

Off{END}

Warp{END}

{END}

{END}

Address{END}

Set{END}

^ {END}

>{END}

Key{END}

Jewel{END}

Weapon{END}

{END}

Shield{END}

Helmet{END}

0{1B}{END}

1{1B}{END}

2
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 01, 2008, 16:46:52
un'altra mte che viene utilizzata sono i tre puntini (...).
una cosa abbastanza inutile considerando che per aggiungere nuovi caratteri di spazio ce n'è a iosa (la cosa mi ha permesso di inserire le lettere accentate senza patemi d'animo) e che, già a suo tempo, avevo aggiunto un nuovo carattere contenente i tre puntini (un pò ravvicinati ma facevano un bell'effetto).

la cosa non aumenterà lo spazio disponibile ma renderà disponibile una nuova mte da utilizzare a piacimento.

aperta con il tile layer pro le lettere sono all'indirizzo: 74000.
Titolo: Re:[snes] Brain Lord
Inserito da: Chester il Settembre 17, 2008, 21:41:05
Qualcuno ha detto VWF? :P


Originale:
(http://img234.imageshack.us/img234/384/originalni1.png)

VWF:
(http://img170.imageshack.us/img170/431/vwfej7.png)
Titolo: Re:[snes] Brain Lord
Inserito da: Sephiroth 1311 il Settembre 18, 2008, 10:55:28
Grandissimo. :)
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 18, 2008, 15:45:38
E io come ti avevo promesso ho inserito una routine perfettamente funzionante per aggiungere altre mte. Precisamente se ne possono aggiungere altre 30 (credo di poter aumentare ancor più il numero; tutto dipende dai byte che sono disponibili) utilizzando i byte che vanno da A0 a BF.

hirom;// hirom

;// Offsets

;// Spazio libero in rom in cui è locato il codice
!CodeOffset = $D7FB30

;// Offsets per il ritorno all'inizio del vecchio codice
!OldCodeOffset = $C2C70D
!OldFFOffset = $C2C67E

;// Offset per il ritorno al codice di caricamento dei byte che
;// compongono il puntatore
!OldLoadCode = $C2CBCE

;// Banco e offset in rom in cui sono locati i nuovi puntatori
!PntBank = #$D7
!PntOffset = #$FAD0

;// Modifica del vecchio codice
org $C2C676
JMP !CodeOffset;// Salto alla nuova routine

;// Nuova routine
org !CodeOffset

;// Vecchio codice di check del byte
CMP #$FF
BNE $04
JMP !OldFFOffset

;// Confronta il byte nel registro A con il valore 0XA0
;// e se è maggiore continua il ciclo altrimenti ritorna
;// alla routine originaria
CMP #$A0
BCS $04
JMP !OldCodeOffset

;// Confonta il byte nel registro A con il valore 0XBF
;// e in questo caso controlla se è minore per continuare
;// la routine modificata
CMP #$BF
BCC $04
JMP !OldCodeOffset

;// Trasferisce l'indice del puntatore da prendere in Y
REP #$20
AND #$00FF
SEP #$20
SEC
SBC #$A0
STA $4202
LDA #$03
STA $4203
LDA $4216
TAY

;// Carica il base offset dei puntatori nel registro A
;// e salva in memoria
REP #$20
LDA !PntOffset
STA $85

;// Carica in A il banco di memoria e lo salva
SEP #$20
LDA !PntBank
STA $87

;// Ritorna al codice di lettura dei puntatori
JMP !OldLoadCode


EDIT: Giusto un paio di bug risolti :P
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 18, 2008, 15:52:09
ok, il ripuntatore (brainrelord_repointer.py) funziona. fa incartare la rom in un punto quindi bisognerà lavorare ancora sull'algoritmo.
ecco la history del repointer:
history:

2008-09-17 (0.32)
 new get_pointers_table function!
 improved repointer algorithm (but at the end of the presentation the rom crash)
 renamed functions: hex2dec (hex_to_int), dec2hex (int_to_hex)
2008-09-16 (0.31)
 TEXT_POINTER2_BLOCK_END fixed
2008-09-16 (0.3)
 partial repointer algorithm (with documentation)
 the addresses of the function get_pointers_table now are stored as an integer
 function deswitched_pointer added!
 function make_a_doc added!
 function hex_to_int added!
2008-09-15 (alpha)
 initial alpha


ecco la logica (parziale e scritta  abestia) dell'algoritmo:
'''
dopo la verifica che entrambi gli array contenenti i puntatori originali e quelli modificati hanno la stessa dimensione
l'algoritmo ciclera sull'array dei puntatori della rom originale
scartando i puntatori per i quali non e stato trovato nessun indirizzo (testo sequenziale)
e ne verifichera la corrispondenza (data dalla sequenza) tra i puntatori originali e quelli spostati
nel caso in cui i puntatori si trovano nel banco di testo viene effettuato una nuova ricerca nella rom modificata
per poi sostituire il vecchio puntatore con quello nuovo
'''
Titolo: Re:[snes] Brain Lord
Inserito da: Chester il Settembre 18, 2008, 16:16:18
Incredibile quante forze si siano concentrate spontaneamente su questo gioco. Se si riuscisse a lavorare così in gruppo per ogni progetto...
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 10:41:09
allora, ho dovuto scrivere AL VOLO una procedura per spostare tutto il blocco di testo di un byte in modo da ripuntarlo col repointer e sperare che tutto funzioni degnamente.


"""
brainlord_dumper
last version: 2008-09-18 (0.1)
changes:
author: roberto fontanarosa (robertofontanarosa@hotmail.com)
"""

import mmap
import os
import pdb

TEXT_BLOCK_START = 0x170000
TEXT_BLOCK_END = 0x17fac9
TEXT_BLOCK_LIMIT = 0x17ffff

def extract(f, start, end):
"""  """
dump = ""
for i in range(start, end):
 f.seek(i)
 dump += f.read(1)
return dump

def replace(f, dump, start, end):
"""  """
i = 0
f.seek(start)
for byte in dump:
 f.write(byte)
 start += 1
return f.tell() == end

file = open("Brain Lord (U) [!].smc", "rb+")
size = os.path.getsize("Brain Lord (U) [!].smc")
f = mmap.mmap(file.fileno(), size)
file.close()

file2 = open("Brain Lord (U) [!] - 2.smc", "ab+")
size = os.path.getsize("Brain Lord (U) [!] - 2.smc")
f2 = mmap.mmap(file2.fileno(), size)
file2.close()

dump = extract(f, TEXT_BLOCK_START, TEXT_BLOCK_END)
print replace(f2, dump, TEXT_BLOCK_START+1, TEXT_BLOCK_END+1)

f2.close()
f.close()


ho ripuntato il testo, la rom non si blocca ma... FA COSE STRANE!!! contatterò coloro che stanno partecipando al progetto per raccontagli le ultime news e... no, niente assembler!  :biribiribu:
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 10:42:20
oddio morpher, nn avevo letto... mi sto masturbando!

...IN UFFICIO!
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 19, 2008, 13:35:31
Aspetta un po'e vedrai che altro ti rifiliamo io e chester B)  
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 14:25:43
già lo so. mi rifilate il repointer in assembler...
e io qui a sbattere il muso. è da stamattina che SMADONNO. ora il ripuntatore RIPUNTA. c'è ancora qualche difetto ma ci siamo quasi.
se mai vi cimenterete nel repointer assembler avvisatemi così mi evito un pò di mal di testa e passo ALL'ALTRO PROGETTO (meno ostico).
Titolo: Re:[snes] Brain Lord
Inserito da: Sephiroth 1311 il Settembre 19, 2008, 14:32:26
Citazioneoddio morpher, nn avevo letto... mi sto masturbando!

...IN UFFICIO!
Questa te la dovresti mettere come sottonick su MSN. :P

:clomax mode:  
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 14:45:56

2008-09-19 (0.34)
  improved the repointer algorithm
  now the function get_pointers accept the text after double f7 bytes as an address to repointer
  found another pointer text block and
  added some statistics and screen error messages


ok, funziona! vi ricordate i doppi f7? andavano contati. ora molti problemi sono sistemati... c'è il venditore di fatine che spara cazzate e testi a casaccio ma credo che per i venditori ci sia da fare qualche piccola valutazione in più.

cmq il lavoro prosegue e ora che non mi ritrovo mille repliche degli stessi omini che mi raccontano la fine del gioco oppure che non parlano per nulla nel primo villaggio... beh, mi sento più rilassato. :P

dagli di costanti (rom senza header!):


TEXT_BLOCK_START = 0x170000
TEXT_BLOCK_END = 0x17fac9
TEXT_BLOCK_LIMIT = 0x17ffff

TEXT_POINTER1_BLOCK_START = 0xf9e
TEXT_POINTER1_BLOCK_END = 0xfef

TEXT_POINTER2_BLOCK_START = 0x50010
TEXT_POINTER2_BLOCK_END = 0x55567

TEXT_POINTER3_BLOCK_START = 0x18ea1
TEXT_POINTER3_BLOCK_END = 0x18f9b
Titolo: Re:[snes] Brain Lord
Inserito da: Chester il Settembre 19, 2008, 16:20:29
Un repointer in assembly? E' un'idea XD
Titolo: Re:[snes] Brain Lord
Inserito da: Phoenix il Settembre 19, 2008, 17:11:33
CitazioneUn repointer in assembly? E' un'idea XD
Sinceramente non vedo quale sia il vantaggio :P
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 18:47:55
bravo, dagliene di santa ragione, fenicio!
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 19, 2008, 19:21:24
ok, sembra che dall'indirizzo 0x170000 all'indirizzo 0x171b40 ci siano solo dialoghi di negozi del venditore di fatine, di albergatori ecc...
insomma il ripuntatore fa il suo dovere ma non gestisce questi casi. praticamente il testo parte bene ma non appena fai una seleziona si incasina. evidentemente hanno una logica da capire. gli dedicherò la prossima mezz'ora. stay tuned.
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 19, 2008, 21:36:04
Citazioneok, funziona! vi ricordate i doppi f7?

E menomale che ti avevo detto che potevano essere i tag di fine lettura del testo jap. :P

Citazioneinsomma il ripuntatore fa il suo dovere ma non gestisce questi casi. praticamente il testo parte bene ma non appena fai una seleziona si incasina. evidentemente hanno una logica da capire.

Per ora ti lasciamo lavorare.... Nel caso in cui non dovessi riuscirci faccelo sapere.

EDIT: Comunque non credere che tutti i byte che trovi tra le frasi dei negozianti siano puntatori... quella roba li genera anche degli eventi che dipendono dalle scelte del giocatore.
Titolo: Re:[snes] Brain Lord
Inserito da: Chester il Settembre 20, 2008, 00:10:17
CitazioneSinceramente non vedo quale sia il vantaggio :P
Infatti non c'è alcun vantaggio, ma è una cosa tra me e Clomax XD
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 20, 2008, 00:43:57
La solita mania di clomax di voler capire tutto :P (scherzo clò, continua così). Comunque ti do un aiutino semplice. Le finestre generate dai negozianti sono particolari per la possibilità di generare eventi ma queste particolarità le trovi anche tra le frasi dei personaggi. Per questo motivo devi tener conto di 3 byte:

$C2/CA10 C9 F3       CMP #$F3
$C2/CA12 D0 04       BNE $04    [$CA18]
$C2/CA18 C9 FA       CMP #$FA
$C2/CA1A D0 04       BNE $04    [$CA20]
$C2/CA20 C9 F6       CMP #$F6
$C2/CA22 D0 04       BNE $04    [$CA28]


F3, FA ed F6 sono i "tag" a cui devi prestare attenzione. Il gioco fa semplicemente così:

Citazione
1: Carica il byte;
2: Confronta il byte letto con F3, FA ed F6;
    3: Se coincide con uno di questi salta alle relative routine;
    4: Se non coincide continua a leggere normalmente i byte.

Ora, questi byte si trovano sempre dopo il byte F9 (che quindi non indica solamente la nuova linea) e il tuo repointer dovrebbe continuare a leggere finchè non incontra il byte F7 (tag fine). Tuttavia, nel leggere deve controllare che non sia presente il byte 00 che indica semplicemente che segue un puntatore. Se non sono stato chiaro fatti beccare su MSN che te lo spiego con qualche esempio....

Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 21, 2008, 01:26:37
si, questo lo avevo capito perchè ogni negozio o agente (venditore di fatine) che sia, dopo aver pronunciato la classica frase di benvenuto rimanda ad un f6xx:

f60d=[shop1]
f61f=[arcs shop]
f620=[shop2]
f615=[weapon1]
f629=[agent1]

quello che manca, ora, è... dove bisogna andare a ripuntare? in pratica se vai da un negoziante, ci parli e questo ti apre il menù di vendita ad ogni scelta di un articolo dovrebbe apparire sotto la sua descrizione. questo testo si trova all'interno del banco di testo ma da chi è puntato? gestisce tutto la routine?

cmq nei dialoghi normali, e questa è una cosa che ho già provato, il ripuntatore funziona. l'ho provato sia nelle locande sia su alcuni dialoghi che necessitano di un yes/no per andare avanti.

quindi direi che è proprio la gestione degli shop ad essere diversa...
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 21, 2008, 01:27:54
ho riletto il tuo messaggio... beh si, sullo 00 c'ero arrivato :P
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 21, 2008, 01:37:48
scusate se utilizzo tre messaggi... :P

allora, all'inizio del blocco di testo c'è il dialogo di benvenuto dello shop che si trova nel primo villaggio.
se gli rispondi BUY lui salta al terzo dialogo presente qui sotto che inizia con un puntatore che punta ad una zona del banco di testo contenente questo:

 I don't have
 very much...

probabilmente è la frase che verrà restituita più avanti nel gioco (quindi al verificarsi di un evento).



Welcome to the Arcs
Tool Shop.
We have everything!
What would you like
today?
[arcs shop]

Welcome to Toronto,
the world's cheapest,
best-stocked Tool Shop.
What can I get you today?
[shop2]

0ndseIt's all cheap, but good.
What would you like?


beh, quindi lui trova f9f6xx, salta nella routine e si serve del byte xx per capire che negozio è. dopodichè si apre il menù di scelta buy, sell e quit. a seconda della scelta del giocatore verrà restituita una risposta e, successivamente, verrà aperta la finestra contenente la merce in vendita o da comprare. ora bisogna capire al momento della selezione (buy, sell, quit) come fa (e dove) la routine e puntare la risposta nel banco di testo. il puntamento alle descrizioni degli oggetti e delle fatine dovrebbe essere analogo.

se domani vi trovo su msn ne parliamo :P
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 21, 2008, 15:19:23
Si, c'è una bella routine ma alla fine ci sono i relativi puntatori alle descrizioni. Basta semplicemente modificare quelli.

Esempio:

Citazione
<white>[0x8B]<white>?
This Fairy is a master
of lightning.

Il suo puntatore è D7193B e si trova all'offset 0x18EE4.
[0x8B] è invece il richiamo all'oggetto.
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 22, 2008, 10:40:14
ok, il ripuntatore attualmente ripunta anche qui puntatori correttamente. quindi non è quello il problema.

ho notato poi che quei puntatori sono nelal forma 01xxxxd7 (01).
cmq se rileggi un pà di post indietro ti renderai conto che le variabili

TEXT_POINTER3_BLOCK_START = 0x18ea1
TEXT_POINTER3_BLOCK_END = 0x18f9b

inlcudono quel range e ripuntano a dovere.

il problema è un'altro: è la scelta!

allora...

0x170000 - il tizio del negozio ti saluta e ti apre il menù di scelta con i byte f9f6(1f).
se si sceglie buy il testo riprende da 0x170092.

ecco, come fa questo salto è un mistero (per me) ed evande dalla logica attuale del repointer.

:P
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 22, 2008, 16:11:44
E' usata una variabile per la scelta che implica l'avvio di una particolare routine per caricare i puntatori e successivamente il testo. A te interessa solo ripuntare; inseriscigli l'offset dei puntatori alle frasi e il repointer dovrebbe fare il resto. Non vedo a che servirebbe modificare gli eventi...
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 22, 2008, 17:01:38
morpher, sono proprio i puntatori che mancano...
prova a cercare il puntatore all'indirizzo 0x170092 (ovvero 9200d7).
non c'è! me ne vorrei sbattere della routine ma CHI DICE ALLA ROUTINE DOVE PUNTARE? un puntatore! where is it? i dunno.

:lol:

Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Settembre 22, 2008, 20:06:51
Se riesci a passarmi un save state quando compare quella frase saprò dirti di più...
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 23, 2008, 09:40:34
ti ho mandato il save state via mail.
sappi che TI ODIO perchè non leggi ATTENTAMENTE i miei post. VI HATO (che foneticamente suona come viados...)!!!

:clomax mode:  
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 24, 2008, 09:59:20
ok, morpher m'ha amndato una mail QUASI chiarificatrice.

in ogni caso, queste sono le statistiche stampate dal repointer:

puntatori totali: 809
indirizzi totali: 4854
indirizzi modificati: 789
puntatori non trovati: 80
indirizzi modificati: 789
puntatori non modificati: 20


ora si tratta di trovare quegli 80 puntatori con la nuova logica del morpho e di cercare di capire perchè venti puntatori al testo rimangono fuori (e quali sono). ah, in quegli 80 ci sono anche i testi consecutivi. :P enjoy.
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Settembre 24, 2008, 23:26:57
ok, grazie a morpher ora anche i testi dei negozi vengono ripuntati a dovere.
sto ottimizzando il ripuntatore poichè, a casa di un grosso bug, oggi ho perso molto tempo per cercare di capire perchè non ripuntasse a dovere alcuni dialoghi.

i prossimi passi sono:
- correzione di un dialogo che, dopo aver scelto yes, non viene ripuntato (analizzerò il caso specifico)
- la rom va a modificare qualche puntatore (per i negozi, quindi nel nuovo modulo) che non deve modificare quindi sputtana graficamente qualcosina (non bloccante). quindi dovrò localizzare un range per circoscrivere la modifica di questi puntatori o sensibilizzarla maggiormente.
- ottimizzazioni

beh, ci siamo quasi... io domani passo i testi a feanor... considerando che è un solo banco di testo, che ci sono dei byte alla fine della rom utilizzabili, che le mte sono ripuntabili e ampliabili, che il vwf è realtà, che il repointer è a buon punto...

... incorciamo le dita! :P
Titolo: Re:[snes] Brain Lord
Inserito da: Morpher il Ottobre 29, 2008, 19:40:47
Clò, il vwf è di chester, io ho incrementato la lunghezza dei nomi :P
Titolo: Re:[snes] Brain Lord
Inserito da: Clomax il Marzo 12, 2021, 07:59:12
Copia del topic originale. Novità in vista!

Autore: Clomax (http://www.romhacking.it/forums/index.php?action=profile;u=3)
Versione: Statunitense
Lingue: Inglese -> Italiano
Stato: In corso
Percentuale: 0%

Cosa è stato fatto (aggiornato al 24/09/2008):
24 settembre 2008
aggiornato lo stato della traduzione.

1° settembre 2008
ritrovati i puntatori alle mte, ai luoghi e ai nomi.

26 agosto 2008
progetto riaperto, scritta documentazione delle scoperte. effettuate altre ricerche sui puntatori. scrittura preliminare di un tool che ricerchi i puntatori sparsi all'intento della rom. ricerca dei puntatori dalle mte).

14 febbraio 2006
Ho ripreso questo vecchio progetto e, grazie a Gemini, Mat e Saffo sono riuscito a:
Tutto questo in una settimana circa. Ora arrivano i dolori. Ho deciso infatti di tradurre e di ripuntare tutto a mano a causa della NON esistenza di un unico blocco di puntatori. Parte di questi, infatti, è sparsa nel blocco di testo. In ogni caso il testo è inferiore (di poco) ai 64kbyte (eccetto descrizione degli oggetti e varie) e lo spazio alla fine del blocco (di zeri) è sfruttabile. Tutto il testo è ripuntabile (ora so dove trovare i puntatori) e quindi, con un'ottimizzazione delle MTE, sarà agevolmente traducibile. Non so quanto tmepo impiegherò ma in questi giorni vorrei prendermela con calma e cercare di scoprire qualche altra cosetta sia sui tool (translhexion) sia sulla rom. Ad esempio SEMBRA si vada a prendere delle parole dalla RAM (???). Possibile?! Mah, volevo analizzare per bene i blocchetti di puntatori alle MTE e agli oggetti... L'uso di queste "paroline" l'ho scoperto dumpando il testo del gioco e sembra che possano essere richiamate solo in determinati momenti. Inoltre c'è mooooolto spazio nella rom per aggiungere altre lettere. Manca, ad esempio, il carattere ')' mentre è presente il carattere '('. Non che serva a nulla ma una volta aggiunto potrei trovare il modo di utilizzarlo.

Mi sono sorpreso di essere riuscito, piano piano, a capire la logica perversa di questo gioco. È stato angosciate ma allo stesso tempo divertente. Spero di non bloccarmi al momento della traduzione.