Ripuntatore Bof Gba

Aperto da |GeO|, Marzo 21, 2004, 15:04:37

Discussione precedente - Discussione successiva

|GeO|

Usando il ripuntatore di mentz col mio script ho trovato un problemone, mi si sputtana di nuovo la rom... La rom passa da 4mb a 5,45mb: buona parte viene sovrascritta e ne viene aggiunto un pezzo. Viene ripetuto sempre il punatore 4F661108 che corrisponde ad un byte di fine stringa nello script... Con lo script originale funzionava tutto, quindi abbiamo ipotizzato (su #traduzione, parlando con gemini e psyco) un errore nello script. Ho anche provato a cambiare quel byte ma non è successo nulla...

Mentz: se vuoi ti faccio una patch della rom sputtanata e una di quella col mio script ma non ancora ripuntata... Se ti serve anche lo script (txt) fammi sapere.

Ciao  :)

Ps:  :clomax mode:

mentz

Il mio programma calcola i puntatori della ROM...
L'unica eccezione sta nel fatto che aggiungere "byte puntatori" allo script
provoca casini, visto che non possono essere aggiunti puntatori nella rom...

IL mio sistema è lineare nel senso che io già sò l'ordine dei puntatori

es: prima frase ->non puntata
     seconda frase -> puntata -> offset di dove va puntata...
(tutto basato sui "byte puntatori")

Controlla che nello script non ci siamo "byte puntatori" in più rispetto a quelli che ci sono nel gioco

Per fare questo apri la rom col testo reinserito con hex workshop
e fai una sostituzione del byte che cerchi con il suo stesso valore...
Il programma ti dirà quante volte l'ha sostituito e quindi il numero delle volte che si presenta solo nella parte dei dialoghi della rom.

Per isolare gli script reiseriti fai copia e incolla su un file nuovo...
Così avrai due file su cui cercare tutti i byte puntatori...

Se c'è qualche casino dimmelo...
Sono nella merda fino al collo, però cercherò di pensare a qualcosa....

|GeO|

Mentz, per byte puntatori intendi anche i byte di fine stringa e a capo (mi avevi detto che puntava anche su alcuni di questi) o solo quelli di fine stringa (0x00 in bof tanto per capirci)? Ho anche controllato 2 volte tutto lo script per vedere se avevo infilato qualche byte di fine stringa ripetuto ma non ho trovato nulla...

Ti ho anche mandato uno zip con della roba, se ce fai magari dacci un'occhiata...

Citazione
Mentz

Se c'è qualche casino dimmelo...
Sono nella merda fino al collo, però cercherò di pensare a qualcosa....

Stai tranquillo, se dovessi avere problemi di qualsiasi sorta e non mi potessi aiutare, mi ripunterò il tutto a mano, non è mai morto nessuno.  :D

Grazie di tutto!

mentz

I "byte puntatori" di BOF sono $00, $09, $07...
Controlla questi, comunque...

|GeO|

Mi vuoi dire che non posso aggiungere nessuna nuova schermata o quello che hai detto prima vale solo per alcuni 0x09?

mentz

In teoria potresti farlo, però visto che ho dovuto indicizzare i puntatori perché sono tanti e non sono ordinati (cosa + difficile per ripuntare...)

Quindi puoi espandere il testo come ti pare, ma non puoi aggiungere nuove schermate altrimenti come faccio a sapere rispetto all'originale se quel byte va puntato o no ?

Una soluzione ci sarebbe...
Dovrei sapere esattamente quel "byte puntatore" aggiunto "che numero è...

basta contare i byte puntatori nuovi (tutti e 3, e tutti quanti...).
quelli vecchi sono 2602 tra 00, 09 07....

Mi dispiace che il mio programma abbia questi limiti, ma è l'unico modo per avere una mappatura dei puntatori completa...


PS: Non ci crederai, ma lo scipt  di BOF2 in italiano occupa meno spazio dell'originale in inglese... :)

PS2: non mi hai mandato l'allegato (non c'era)

|GeO|

CitazioneUna soluzione ci sarebbe...
Dovrei sapere esattamente quel "byte puntatore" aggiunto "che numero è...

basta contare i byte puntatori nuovi (tutti e 3, e tutti quanti...).
quelli vecchi sono 2602 tra 00, 09 07....
Mi sembra fattibile come cosa, dovrei farcela... In pratica quidni dovrei fare il lavoro che hai fatto tu all'inizio "mappando" tutti i byte puntatore.

CitazioneMi dispiace che il mio programma abbia questi limiti, ma è l'unico modo per avere una mappatura dei puntatori completa...

Ci mancherebbe altro! Già tanto che me l'hai fatto!  :)

CitazionePS: Non ci crederai, ma lo scipt di BOF2 in italiano occupa meno spazio dell'originale in inglese...
A me sfora di 5/6 kb...  :P  beh dai, poco male, la roba che avanza la schiaffo in fondo, tanto ho quasi due mega liberi...  :D

CitazionePS2: non mi hai mandato l'allegato (non c'era)

Lo so, ma ti ho mandato 2 e-mail e nella seconda c'era... Se non ti è arrivato te lo rimando.

Ps: Provvederò al + presto a fare il txt con tutti i nuovi byte puntatori! Se hai problemi di tempo per il prog. non ti preoccupare, tanto non ho fretta!  :lol:

Ciao Ciao!

mentz

Se riesco a fare una cosa in automatico ci provo...
Anche perché per mappare i puntatori ho creato altri 3 programmi che mi fanno tutto in automatico...

E comunque per i "falsi puntatori" che puoi aver aggiunto dovrebbe essere solamente roba da "non ripuntare" quindi più facile...

Ovviamente sarà un programma valido solo per quello script...

mentz

Ho avuto un'idea geniale!!!!

Allora se riesci a rintracciare dove hai messo i "byte puntatori" in più, dovresti sostituirli con un byte che non sia nessuno dei tre che il mio programma calcola, aggiungendoli anche nella table...

falsi puntatori: [F00], [F07] [F09]  (simbolo che sostituisce quei valori)

nella table metti un valore alfanumerico che sei sicuro di rintracciare facilmente e che non darà rogne se fai un "trova e sostituisci" dopo aver ripuntato il tutto (puoi usare degli inusati)...

tipo:
FD = [F00]
FE = [F07]
FF = [F09]

quindi:

- sostituisci i falsi byte puntatori con altro...
- crei table che ti sostituisca quei valori con esad. non usati...
- ripunti col programma...
- fai un "trova e sostituisci" e rimetti a posto i byte...

Se il blocco di testo va oltre lo spazio di quello originale  e quindi va spostato alla fine, saranno casini per capire dove andare a scrivere e in che posto scrivere i puntatori (perché possono essere ripetuti e non allineati)...

Quindi opterei per un conteggio dei byte puntatori, prima che fdai la sostituzione col "trova e sostituisci" col metodo che ti ho detto prima con workshop...Sommi i valori ottenuti dalla ricerca dei tre byte solo nello script del testo...così posso farti un programma che inserendo quel numero ti ricomincia a puntare il dialogo principale da dove era rimasto, ma l'offsset di dove sta il nuovo testo glielo dai tu...

Che te ne pare ?


|GeO|

Mentz, ti ringrazio molto per la tua disponibilità! La tua idea è veramente geniale anche se ritengo che il fake byte sia necessario solo per 0x09 in quanto gli altri due non li ho toccati. Ho fatto la table e il conto totale dei byte ma alla fine mi sa che dovrò ripuntare tutto a mano lo stesso e ora ti spiego perchè:

1) Credevo, dopo aver controllato lo script tradotto 2 volte, di aver incassellato alla perfezione tutte le scritte, ma in realtà non è così, anzi...
Come ben sai aggiungere una nuova schermata con 0x09 fa slittare tutto il testo di 1 posto e dovendo modificare il ripuntatore in base ai byte puntatori diverrebbe un lavoro estenuante. A questo fatto si aggiunge anche il problema dei nomi jappo che risultano essere decisamente + lunghi di quelli in inglese, e mi costringono ad aggiungere spesso e volentieri degli 0x09...

2) Per ovviare al problema esposto al punto uno volevo anche dividere lo script dei dialoghi in tanti mini script di non più di una decina di puntatori ognuno e divisi fra loro all'interno della rom da una trentina di caratteri vuoti... Agendo così mi troverei con tanti mini script indipendendti l'uno dall'altro e in caso di una qualsiasi necessità di modifica, dovrei aggiornare al massimo 10 puntatori e non tutti quelli dei dialoghi. Logicamente, se già di per se lo script tradotto è più grande di quello originale, dovrò mettere della roba al fondo della rom, ma come avevo già detto, non è un problema dato che lì c'è un sacco di spazio vuoto...

Ti ringrazio ancora per tutto il lavoro che hai dovuto fare per il ripuntatore, ma ora come ora credo che la cosa migliore da fare sia dividere lo script e ripuntare a mano. Cmq il tuo lavoro non è andato perduto, perchè tutti gli oggetti, le città, i nomi etc li posso ripuntare con la seconda parte del prog. Mi dispiace solo di averti fatto sprecare del tempo.

Ciao!!

mentz

Non c'è problema...

Ma credo che sia impossibile ripuntare a mano perché i puntatori non sono in sequenza (ce n'è uno che sta in culonia) e perché alcuni sono ripetuti...

Come fai a capire quali 00,09,07 vanno ripuntati e quali no ?
Come fai a capire in che parte della table dei puntatori vanno scritti ?

Bella Rogna...

|GeO|

Beh, nn c'ho ancora provato, ma non credo sia impossibile, per capire quali byte siano da ripuntare e quali no mi basta vederlo nella rom originale e così anche per la loro posizione all'interno della table dei puntatori...

Correggimi se sbaglio.

mentz

Sì, però se avessi 100 caselle di dialogo in ITA e 100 nella versione originale sarebbe più facile ( per modo di dire... ).

In bocca al lupo per quest'impresa !!!

|GeO|


Dark`Dragoon

Bella frate pensi quando uscira la pacth? di BoF per GBa che bello avvertici quando esce ok  :rolleyes:  :rolleyes:  :rolleyes:  :rolleyes: