Então, como vocês sabem, eu estou trabalhando num projeto de tradução pt-br do jogo Banjo-Tooie já algum tempo. Eu havia parado por uns meses, mas retomei há uns dias.
A questão é que eu tô batendo cabeça com os ponteiros do jogo, a ROM que eu uso agora é a USA mesmo. Os ponteiros estão localizados entre os offsets 5188 e 12B23. Os ponteiros têm 4 bytes de comprimento, sendo o último quarto byte (alterna entre 16, 13, 17, 04 e outros) o tipo do arquivo comprimido para o qual o ponteiro está apontando (texto, música, etc).
Exemplo: No endereço 84F0 temos o ponteiro para o primeiro texto do jogo: 30 8B B6 13
O último byte (13) é o tipo do arquivo: texto, no caso. Já o 308BB6 é a distância entre o offset de início do bloco onde está localizado o texto comprimido (C359FC) menos o offset do primeiro bloco (12B24); tudo isso divido por 4. A fórmula fica assim:
ponteiro = (offset início do texto - 12B24) / 4
Entretanto mesmo utilizando a fórmula, movendo pro final da ROM, eu não consigo alterar nenhum ponteiro, qualquer valor que eu altere dentro do bloco de ponteiros deixa a ROM em loop infinito, então eu retomo o valor original. Se alguém puder me dar uma luz aqui eu vou ser muito agradecido.
A questão é que eu tô batendo cabeça com os ponteiros do jogo, a ROM que eu uso agora é a USA mesmo. Os ponteiros estão localizados entre os offsets 5188 e 12B23. Os ponteiros têm 4 bytes de comprimento, sendo o último quarto byte (alterna entre 16, 13, 17, 04 e outros) o tipo do arquivo comprimido para o qual o ponteiro está apontando (texto, música, etc).
Exemplo: No endereço 84F0 temos o ponteiro para o primeiro texto do jogo: 30 8B B6 13
O último byte (13) é o tipo do arquivo: texto, no caso. Já o 308BB6 é a distância entre o offset de início do bloco onde está localizado o texto comprimido (C359FC) menos o offset do primeiro bloco (12B24); tudo isso divido por 4. A fórmula fica assim:
ponteiro = (offset início do texto - 12B24) / 4
Entretanto mesmo utilizando a fórmula, movendo pro final da ROM, eu não consigo alterar nenhum ponteiro, qualquer valor que eu altere dentro do bloco de ponteiros deixa a ROM em loop infinito, então eu retomo o valor original. Se alguém puder me dar uma luz aqui eu vou ser muito agradecido.