Tabella dei puntatori

Aperto da Rob, Dicembre 29, 2008, 22:13:58

Discussione precedente - Discussione successiva

Rob

Ehi, mi date qualche dritta su come trovare la tabella dei puntatori??? Sto impazzendo per trovarla :P  

Phoenix

Dovresti dare qualche informazione in più...

Che gioco stai traducendo?
Per quale piattaforma?
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Rob

Ah, menomale che hai risposto tu a questo post, Phoenix. Sul forum dei sadnes sono registrato come Cloud_93 e ieri mi hai postato una mini-guida su come cambiare i puntatori. Ricordi?
Cmq, quando ho cercato di fare cio che avevo appreso da te, non sono riuscito a trovare la tabella dei puntatori. :(  Volevo postare un messaggio nel topic dove avevamo parlato ieri, ma questo cavolo di pc ogni tanto fa i capricci (credo abbia qualche virus) e apriva tutti i siti tranne quello dei Sadnes. Cosi ho dovuto chiedere aiuto qui.
Per favore, aiutami ancora una volta...anke se ormai ho una reputazione da vero rompi... :D  

Rob

Grazie per la risposta... <_<  

Phoenix

In un forum nessuno è tenuto a rispondere ad una domanda.
Se non l'ho fatto, avrò avuto i miei motivi. Uno tra i tanti è lo studio, visto che il 14 ho da consegnare due progetti.

E cmq, nel frattempo avresti potuto cercare qualche altra info, come ho imparato da solo io, può farlo chiunque altro.

P.S. Qui avrai tutte le risposte alle tue domande puntatori

Buona lettura
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Gemini


leotato008

Salve a tutti ragazzi! Colgo l'occasione per presentarmi dato che sono nuovo!
Mi chiamo Damiano, e sto cominciando solo ora a lavorare sulle ROM.
Ho preso Snake's Revenge, per il semplice fatto che è uno dei giochi per NES che preferisco.
Veniamo al dunque: nonostante mi sia letto e riletto più volte le guide sui puntatori (forse l'ora non mi aiuta), non capisco come modificare il puntatore in modo da fargli leggere correttamente il testo (che ho controllato, non supera la lunghezza originale prevista).
Non mi è proprio chiara la parte di aggiornamento del vecchio e del nuovo puntatore.
Spero la domanda sia chiara, e soprattutto non vinca il premio per 'la domanda più stupida del millennio' :-)
Grazie a tutti intanto!!

Cid89

Ciao :)
La tua domanda non mi sembra molto chiara.
A prima impressione, sembra che tu non abbia capito bene che cosa siano i puntatori. Per farla breve, un puntatore è un numero (credo che in questo caso particolare si tratti di una coppia di byte) che indica dove comincia una certa stringa all'interno della ROM.
Se il testo "non supera la lunghezza originale prevista", allora immagino avrai modificato il testo senza spostarlo... In tal caso non dovresti modificare alcun puntatore :O

Ma è probabile che io abbia capito male, magari prova a dare qualche maggiore dettaglio mostrando direttamente quale stringa e quale puntatore ti danno problemi.

PS: non ho mai messo mani su un gioco NES in vita mia, quindi chiedo scusa se sto prendendo una cantonata!

leotato008

Ciao Cid (quello di final fantasy magari??) :-)
Ti rispondo così:
Quelle poche cose che so fare, le so fare in c++. Per me, un puntatore è una variabile che punta ad un'altra variabile tramite referenziazione, o tramite la quale puoi assegnare al variabile puntata un valore.
Ora, quello che non ho capito è:
nelle guide normalmente si cita come soluzione la possibilità di individuare il puntatore in questo modo (per il nes almeno):
prendi l'offset del punto in cui comincia il testo (es. 23456), togli l'header, 100 bytes (23446) lasci soli gli ultimi 2 byte (3446) e giri il loro valore (4634). Questo dovrebbe essere il mio puntatore.
Ciò che non capisco è: questo valore ottenuto, lo devo cercare come offset (cioè come indirizzo), o come valore da qualche parte nella rom?
La seconda domanda è: nel caso in cui la risposta fosse la seconda, non è possibile che vi siano più coppie di byte identiche all'interno della rom?
Se invece si tratta invece di un offset, come applico la modifica al testo in modo tale da correggere eventuali errori di ritorno a capo o sovrascrittura del testo?
Spero sia stata esaustiva la spiegazione.
Se non lo fosse, dimmi pure che posto il problema vero e proprio.
Grazie ancora e scusa per il ritardo nel risponderti.
Damiano.  ;D

Nerox92

La risposta giusta è la seconda. È vero che nella rom si possono trovare più valori uguali ma i puntatori si trovano o subito prima del testo o subito dopo, quindi è li che devi cercare :)

Clomax

aggiusto il tiro: "solitamente" subito prima o subito dopo. ma anche da qualche parte nella rom. certo è che QUASI SEMPRE si trovano in BLOCCHI. trovane uno facendo dei tentativi (sostituiscine i valori e verificane gli effetti) e ne avrai trovati un bel pò :P

seconda domanda: certo che possono esserci.

leotato008

Ok, ora che mi avete confermato che non si tratta di un offset, bensì di una coppia di byte il cui valore è l'offset del nostro testo, modificato secondo le regole che ho descritto prima (nel mio esempio 4634, giusto?), pongo il quesito successivo.
Supponendo di trovare il puntatore giusto (leggo nelle Vostre guide che spesso ci si accorge che sono un blocco di puntatori non solo perchè si trovano prima del testo, ma anche perchè uno dei 2 byte ricorre spesso), come modifico il valore, in modo da dire al testo puntato "comincia li e non la")???
Cioè, quei 2 byte (4634), come li devo modificare? Se io li modificassi in 4633 per esempio, cosa accadrebbe? (Probabilmente questa domanda è stupida, ma non conoscendo se c'è una risposta precisa oppure se cambia in funzione delle diverse rom ve la pongo ugualmente).
Grazie mille intanto per le rapide risposte!! :-)
Damiano.

Nerox92

Per modificare il puntatore per adattarlo al testo basta che traduci la parte che ti interessa e dopo ti posizini sulla prima lettera della frase ti calcoli il puntatore e dopo lo sostituisci all'originale. Ti faccio un esempio:
Allora diciamo di avere un blocco di testo con due frasi e di conseguenza due puntatori

4364 4388

Hi my name is Gianni. Nice to meet you.

Ora il risultato finale sarà

Ciao il mio nome è Gianni. Piacere di conoscerti.

E di conseguenza i puntatori saranno:

4364 4392

Cioè il primo puntatore rimane invariato mentre il secondo viene modificato visto che ora la frase inizia in un altra posizione.

Spero di essere stato chiaro e di non averti confuso...

leotato008

Quindi se non ho capito male:
- 1 byte = 1 posizione; (4388 + 4 = 4392) quindi 4 posizioni in avanti.
- 1 frase = 1 puntatore;
- Il puntatore punta al primo carattere della stringa.
- E' possibile che modificando 4388 in 4392 io vada a rompere le balls a qualche altra frase, il cui puntatore dovrà a sua volta essere sistemato.

L'ultima domanda e poi la smetto, giuro!  ;D
Per citare il tuo esempio, può essere che la parola successiva a 'conoscerti', sia "puntata" da un puntatore che si trova da tutt'altra parte sulla rom, invece che successivamente ai 2 puntatori menzionati?

Stasera faccio un po' di prove, e se ci riesco poi vi faccio le domande più complicate (tipo come mai alcuni testi dei menù o del trcvr di snake's revenge per esempio) non si trovano con la ricerca relativa..
ma ogni cosa a suo tempo..
Grazie infinite intanto, sei stato molto chiaro!
;)

Nerox92

Se hai trovato 2 puntatori vicino vuol dire che molto probabilmente il terzo sia a fianco visto che di solito sono sequenziali. Ovviamente quello che hai detto è giusto però sul fatto il puntatore è sempre sulla prima lettera va aperta una parentesi:
Spesso viene puntata la prima lettera ma non è detto può darsi che venga puntato un byte prima o più ma tutto questo dipende da come è stato programmato il gioco.
Altra cosa importante sono i byte a capo, su questa c'è una guida qui su RH ti consiglio di leggerla per capirne bene il funzionamento.
Ora ti rispondo anche all'altra domanda, se non riesci a trovare nel testo le voci del menu ci sono tre possibili alternative:
Il testo per i menu può usare una tabella diversa da quella del testo normale, quindi prova a cercare con Monkey Moore le parole che ci sono nel menù. Se la ricerca va male c'è l'alternativa che sia grafica, quindi munito di Tile Molester dovrai trovare e modificarle. Nel caso più sporadico è testo compresso.