[PSX] Guardian's Crusade-Ponteiros

Iniciado por douglaskraft, Fevereiro 15, 2023, 22:17:09 PM

tópico anterior - próximo tópico

0 Membros e 2 Visitantes estão vendo este tópico.

douglaskraft

Modifiquei a fonte do jogo para aceitar os caracteres latinos, tive que colocar no lugar de "()<>" e alguns outros que aparentemente não são usados no jogo(espero).

Porem está sendo um trampo mudar os ponteiros. Quando o não é código python que não trabalha direito, é o jogo que coloca uns ponteiros fora de padrão.

Acho que vou fazer a parte da tradução e inserir os textos de volta, e no fim, vejo como fazer essa troca de ponteiros mais eficiente.

douglaskraft

Finalmente consegui criar uns códigos em phyton que modifica os ponteiros, porem encontrei um problema.
Não sei muito bem aonde começa e aonde termina esses ponteiros, sendo assim, o código que criei acaba mudando alguma parte do arquivo que não está relacionado aos textos, limitei a área de substituição, porem sem sucesso, fazendo com que o jogo bug em algumas partes.

douglaskraft

#17
Citação de: denim online Março 05, 2023, 10:06:17 AMSobre os ponteiros em si, a melhor forma de encontrar é pelo debugger. Mas pode tentar fazer a busca pela força bruta mesmo.

Um exemplo, o arquivo npc-07 possui a primeira frase do jogo, "[05][03]Good morning! Wake up, wake up!", no arquivo, essa está em 1dd0. Subtraia este valor de 0204, resultando em 1bcc. Este é o valor do "ponteiro relativo" que deverá buscar no arquivo. Pela busca vai ver que no offset 2249 há um 1bcc, basta modificá-lo como for conveniente. Para os demais, use o mesmo método. No caso deste jogo, os ponteiros estão dentro de um script de eventos e não sequenciais, então vai ter que buscar de um em um.

E sobre o 0204, você vai perguntar de onde tirei isso, ele é o valor encontrado no offset 4 do arquivo.

Fiz uma atualização no patch que enviei, removendo um arquivo duplicado além de corrigir a ordem de uns arquivos para que fiquem em ordem crescente de lba.
Citação de: denim online Março 05, 2023, 10:06:17 AMSobre os ponteiros em si, a melhor forma de encontrar é pelo debugger. Mas pode tentar fazer a busca pela força bruta mesmo.

Um exemplo, o arquivo npc-07 possui a primeira frase do jogo, "[05][03]Good morning! Wake up, wake up!", no arquivo, essa está em 1dd0. Subtraia este valor de 0204, resultando em 1bcc. Este é o valor do "ponteiro relativo" que deverá buscar no arquivo. Pela busca vai ver que no offset 2249 há um 1bcc, basta modificá-lo como for conveniente. Para os demais, use o mesmo método. No caso deste jogo, os ponteiros estão dentro de um script de eventos e não sequenciais, então vai ter que buscar de um em um.

E sobre o 0204, você vai perguntar de onde tirei isso, ele é o valor encontrado no offset 4 do arquivo.

Fiz uma atualização no patch que enviei, removendo um arquivo duplicado além de corrigir a ordem de uns arquivos para que fiquem em ordem crescente de lba.



Vc tem um manual de como fazer esse tipo de modificação (mostrar os arquivos na iso)? Eu encontrei uma versão em alemão que possibilita fazer a tradução sem muitos problemas de fonte para PT-BR, se for algo extremamente complicada eu vejo outros caminhos.

kuroi

Citação de: douglaskraft online Março 20, 2023, 18:56:42 PMFinalmente consegui criar uns códigos em phyton que modifica os ponteiros, porem encontrei um problema.
Não sei muito bem aonde começa e aonde termina esses ponteiros, sendo assim, o código que criei acaba mudando alguma parte do arquivo que não está relacionado aos textos, limitei a área de substituição, porem sem sucesso, fazendo com que o jogo bug em algumas partes.
Normalmente, quando faço as minhas ferramentas para substituir os ponteiros originais pelos ponteiros dos textos traduzidos, eu costumo gravar no arquivo de Dump os endereços originais dos ponteiros, para que, na hora de reinserir os textos, o meu código só leia esse endereço e grave os novos ponteiros nessa posição.
Ficaria mais ou menos assim:

{0123456789}
Bla bla bla bla {br}
Bla bla bla bla {end}

Onde o {123456789} é o endereço do ponteiro original que foi "capturado" no momento em que o texto original foi Dumpado.
君の夢が叶うのは誰かの影じゃないぜ。
風の強い日を選んで走ってきた。