Delucidazioni sui puntatori e altre amenità su Pokèmon Trading Card Game 2

Aperto da RyuH88, Ottobre 04, 2014, 14:32:21

Discussione precedente - Discussione successiva

Phoenix

Scusa, sono stato un po' impegnato. Comunque, ti basta rimuovere l'header con un qualunque tool per farlo.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

RyuH88

No Phoenix tranquillo, ho atteso con pazienza, capisco che non si può esser sempre attaccati qui =) anzi grazie per esserci ancora!

Si?che tool ad esempio?



Può darti qualche informazione in piu?(con questo programma non mi permette di rimuovere l'header e manco di aggiungerlo)

Phoenix

Se vuoi, puoi anche non toglierlo l'header, ma semplicemente, dovrai sottrarre la dimensione dell'header agli offset ,prima di convertirli in puntatori.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

RyuH88

Si ma il problema è che non ho idea di quanto sia grande l'header(ho trovato guide in merito ma non mi hanno aiutato). L'ideale invece sarebbe levarlo cosi vado sul sicuro =/ non esiste una soluzione?un link a un tool, o qualcosa?

Phoenix

Io comunque noto che il tool dice esplicitamente che non è stato trovato alcun header nella rom.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

RyuH88

Non capisco se è perchè non esiste gia alcun header(nel qual caso non so piu dove sbattere la testa)o se il programma ha sbagliato.

Hamon

Citazione di: RyuH88 il Ottobre 14, 2014, 12:26:19
Non capisco se è perchè non esiste gia alcun header(nel qual caso non so piu dove sbattere la testa)o se il programma ha sbagliato.

Ciao, ho dato un occhiata alla rom, il problema non è l'header, ma il metodo del calcolo dei puntatori che è diverso da quello consueto.
In pratica come hai già notato il valore "06" indica l'inizio di un periodo di testo e il valore "00" ne indica la fine, per trovare un puntatore devi sottrarre l'offset iniziale dell'indice dei puntatori con quello del blocco di testo che inizia con 06. Per farti un esempio nella rom alla locazione "200456" inizia un blocco di testo a cui dovrai sottrarre la locazione da dove iniziano i puntatori "DC000" ed ottieni "124456" che invertendo diventa "564412" che è il puntatore da cercare e modificare.
L'indice dei puntatori nella rom jap è più facile da trovare, poichè si trova vicino ai blocchi di testo.

RyuH88

Citazione di: Hamon il Ottobre 17, 2014, 14:08:57
Ciao, ho dato un occhiata alla rom, il problema non è l'header, ma il metodo del calcolo dei puntatori che è diverso da quello consueto.
In pratica come hai già notato il valore "06" indica l'inizio di un periodo di testo e il valore "00" ne indica la fine, per trovare un puntatore devi sottrarre l'offset iniziale dell'indice dei puntatori con quello del blocco di testo che inizia con 06. Per farti un esempio nella rom alla locazione "200456" inizia un blocco di testo a cui dovrai sottrarre la locazione da dove iniziano i puntatori "DC000" ed ottieni "124456" che invertendo diventa "564412" che è il puntatore da cercare e modificare.
L'indice dei puntatori nella rom jap è più facile da trovare, poichè si trova vicino ai blocchi di testo.

ciao grazie per la risposta. =) comunque non ho ben capito che intendi per "offset iniziale dell'indice dei puntatori". Scusami ma sono ancora poco ferrato con il "lessico". Secondo: mmm...come faccio a capire dove cominciano i puntatori?o meglio, se quello che hai segnato è giusto(e quindi dovrò SEMPRE utilizzarlo), come l'hai capito?=) terzo e ultimo quesito: quindi ci sono dei puntatori a 6 byte invece di 4?=/

Hamon

Per offset iniziale dell'indice dei puntatori intendo l'indirizzo a cui corrisponde il primo puntatore. Se ti posizioni all'offset "DC000" della rom vedi una lunga serie di puntatori separati dal byte 00. In questo caso vengono usati dei puntatori assoluti, per questo sono lunghi 3 byte.
Come già ti ha spiegato Phoenix per trovarli devi cercare queste sequenze di valori crescenti e vedere se trovi nella lista le ultime 2 cifre dell'indirizzo della stringa, nel caso di prima con l'indirizzo "124456" le ultime 2 cifre sono "56", quindi ho verificato se comparivano nella tabella dei puntatori situata a "DC000" e una volta trovate ho verificato se anche la successiva corrispondeva.
Le tabelle sono messe in ordine e quella situata a "DC000" non penso ricopra tutta la storia, ce ne sono altre, normalmente sono predisposte nell'ordine "tabella - testo legato alla tabella", "altra tabella - testo legato alla nuova tabella", ma qui trattandosi di una traduzione con hack troverai prima le tabelle e poi il testo.

RyuH88

Ok, quindi a quanto ho capito, trattandosi di una hack(per giunta già espansa, il che mi semplifica il lavoro), dovrei trovare l'intera tabella dei puntatori prima del testo. Ora mi metto a fare qualche esperimento =) poi se incontro difficoltà riscrivo qui. Mi interessa molto portare a termine questo piccolo progetto e imparare queste basi quindi..grazie dell'aiuto.

RyuH88

Mi scuso per il doppio reply. Mmmm..ok..non mi ci trovo XD allora spiego il mio esperimento:

Ho ricavato l'offset della primissima "frase" del gioco e, se non sbaglio, dovrebbe essere FF151F.
1 step-ho cercato l'offset completo:nada
2 step-ho cercato 151F:nada
3 step-ho cercato 1F: lo trovo(normale direi) ma le cifre che lo "attorniano" sono dei bei 00 =/ e non vedo traccia degli altri valori. Quindi...mmm..penso di non esser riuscito a capire qualcosa. O forse nella hack è stato modificato qualcosa troppo in profondità, quindi non quadra piu la tabella dei puntatori(se non sbaglio agendo in ASM è possibile).

Hamon

Sulla rom che ho il testo è disposto un poco diversamente dalla tua e cambiano anche gli indirizzi, se su 1F15FF compare il byte 06 ti basta sottrarci il valore DC000 che diventa 1155FF e poi invertire in FF5511 per cercare il puntatore.
Controlla se all'indirizzo DC000 trovi una linea preceduta da FF come nel mio caso, altrimenti la tabella dei puntatori può essere spostata nella tua rom.

000dbff0   ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000dc000  00 00 00 00 ff 49 12 00 d1 3f 12 00 05 4a 12 00  ....ÿI..Ñ?...J..
000dc010  0d 4a 12 00 19 4a 12 00 ca 64 00 00 8d 38 12 00  .J...J..Êd...8..
000dc020  96 38 12 00 a0 38 12 00 d8 64 00 00 dd 64 00 00  .8.. 8..Ød..Ýd..

RyuH88

Citazione di: Hamon il Ottobre 17, 2014, 21:06:53
Sulla rom che ho il testo è disposto un poco diversamente dalla tua e cambiano anche gli indirizzi, se su 1F15FF compare il byte 06 ti basta sottrarci il valore DC000 che diventa 1155FF e poi invertire in FF5511 per cercare il puntatore.
Controlla se all'indirizzo DC000 trovi una linea preceduta da FF come nel mio caso, altrimenti la tabella dei puntatori può essere spostata nella tua rom.

000dbff0   ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
000dc000  00 00 00 00 ff 49 12 00 d1 3f 12 00 05 4a 12 00  ....ÿI..Ñ?...J..
000dc010  0d 4a 12 00 19 4a 12 00 ca 64 00 00 8d 38 12 00  .J...J..Êd...8..
000dc020  96 38 12 00 a0 38 12 00 d8 64 00 00 dd 64 00 00  .8.. 8..Ød..Ýd..

giudica tu


Hamon

Si quella è la tabella dei puntatori, hai provato a cercare il valore hex "FF5511"?
Io lo trovo all'indirizzo DDD88.

RyuH88

Citazione di: Hamon il Ottobre 18, 2014, 11:30:48
Si quella è la tabella dei puntatori, hai provato a cercare il valore hex "FF5511"?
Io lo trovo all'indirizzo DDD88.



Si, lo trova, ma ad un indirizzo diverso =/