Fórum Unificado de Romhacking e Tradução

Romhacking e Tradução de Jogos => Tutoriais e Documentos => Tópico iniciado por: Gutembergh online Março 07, 2021, 15:23:40 PM

Título: DUMP/INSERT texto usando CARTOGRAPHER + ATLAS (Parte 2)
Enviado por: Gutembergh online Março 07, 2021, 15:23:40 PM
DUMP/INSERT texto usando CARTOGRAPHER + ATLAS (Parte 2)

Guia uso Atlas junto com o Cartographer

Dando continuidade, após extraído todos os scripts com o Cartographer, vamos inserir usando o ATLAS.

Vou usar o jogo DemiKids - Light Version, do GBA, como exemplo. É jogo que estou traduzido no momento.

(Inserindo o texto)

PASSO #1

Baixe o ATLAS e crie na mesma pasta um arquivo .bat com qualquer nome. Aqui vou usar "Altas.bat".
Dentro dele cole os comandos a seguir:

Atlas ../Rom/JOGO.gba ../Scripts/BR/DemiKids_script_000.txt

pause


"../Rom/JOGO.gba Comandos.txt"
Aqui estou especificando o caminho da ROM.

"../Scripts/BR/DemiKids_script_000.txt"
Aqui estou especificando o caminho do arquivo de texto para inserir.

Agora, salve e feche o arquivo.

PASSO #2

Abra o arquivo de texto que vai inserir na ROM e coloque os comandos a seguir no cabeçalho.

#VAR(Table, TABLE)
#ADDTBL("..\Tabela\INSERT.tbl", Table)
#ACTIVETBL(Table)
#HDR($F8000000)
#JMP($220050, $222BDA)


Explicando.

#VAR(Table, TABLE)
#ADDTBL("..\Tabela\INSERT.tbl", Table)
#ACTIVETBL(Table)

Aqui eu estou especificando a tabela para usar na inserção do texto.

#HDR($F8000000)
Da mesma forma que precisou de um valor base para extrair, também vai precisar para inserir. Muitas vezes o mesmo valor base usado para dumpar não dar certo aqui, então uma dica que dou para saber o valor base de inserir é:
O primeiro ponteiro nunca vai ser alterado, ele sempre vai permanecer igual, mesmo após a modificação. Caso tenha inserido e ele tenha sido alterado, seu valor base está errado. (Isso a menos que mude o local onde vai inserir os textos na ROM)
Dessa forma, salve o valor base do primeiro ponteiro sem modificação. Use como valor base $0, agora execute o arquivo .bat. Veja se ele foi modificado. Agora só precisa saber a diferença de um pro outro, esse vai ser o teu valor base.

#JMP($220050, $222BDA)
Aqui eu estou dizendo onde inserir o texto. Ele vai ser inserido do offset $220050 até o offset $222BDA. Só será inserido o que couber dentro desse intervalo, por isso se atente na tela do CMD, pois lá irá dar várias informações, inclusive se foi possível inserir tudo e quantos bytes não coube.

Meu arquivo para inserir ficou assim:

//GAME NAME:

//BLOCK #000 NAME: História - 000(POINTER_RELATIVE)

#VAR(Table, TABLE)
#ADDTBL("..\Tabela\INSERT.tbl", Table)
#ACTIVETBL(Table)
#HDR($F8000000)
#JMP($220050, $222BDA)

//POINTER #0 @ $24B674 - STRING #0 @ $220050

#W32($24B674)
Sombras e Luz[TEMPO]*
marcam a passagem do tempo.[TEMPO]@
Um se esconde no outro,[TEMPO]*
formando um círculo...[TEMPO]@
Um círculo da vida.[TEMPO][END-FF]


//POINTER #1 @ $24B678 - STRING #1 @ $220142

#W32($24B678)
Dentro da Torre do Tempo[TEMPO][END-FF]


Pronto, salve e feche o arquivo.

PASSO #3

Execute o arquivo .bat e veja o resultado.


E é isso.
Título: Re:DUMP/INSERT texto usando CARTOGRAPHER + ATLAS (Parte 2)
Enviado por: jdomingos online Agosto 16, 2021, 11:57:05 AM
Parabéns pelo tutorial, muitos me perguntam como fazer tradução, mas primeiro tem que estudar os tutoriais primeiro.
Título: Re:DUMP/INSERT texto usando CARTOGRAPHER + ATLAS (Parte 2)
Enviado por: PSGM online Novembro 08, 2022, 22:27:12 PM
Esse tutorial me ajudou muito. Gostaria de deixar minha contribuição.

No meu projeto tem ponteiros incorporados ao texto.
Ainda não entendo todos os pormenores.

Primeiro é necessário adicionar esta instrução:

#EMBTYPE("LINEAR", 24, $0)

- 24 porque o ponteiro que estou trabalhando é de 24bits)
- $0 seria o deslocamento, na rom que estou trabalhando é zero.

Meu cabeçalho ficou assim:
#VAR(Principal, TABLE)
#ADDTBL("tabelas\principal.tbl", Principal)
#ACTIVETBL(Principal)
#EMBTYPE("LINEAR", 24, $0)
#HDR($00C00000)
#JMP($00360C00, $003FFFFF)


Texto original:

#W24($8EC42)
[FB][F4]Soldier:[F8][EF][14][00][8B][31][F0][E0][14][00]
We've orders not/to let anyone pass.[E7]
Huh...? [EA]
Is that/you, Falco?![E7]
Lord Caios is waiting for/you at the pub.[FF]
Go on! Head over/to the pub![FF]


[8B][31][F0] é um ponteiro e aponta pro texto: Go on! Head over/to the pub![FF]

Para deixar o Atlas calcular automaticamente o código é necessário adicionar duas intruções:
#EMBSET(X) (o ponteiro)

#EMBWRITE(X) (onde o ponteiro aponta)
sendo X um identificador numérico único.

No final fica assim:

#W24($8EC42)
[FB][F4]Soldier:[F8][EF][14][00]
#EMBSET(005)
[E0][14][00]
We've orders not/to let anyone pass.[E7]
Huh...? [EA]
Is that/you, Falco?![E7]
Lord Caios is waiting for/you at the pub.[FF]
#EMBWRITE(005)
Go on! Head over/to the pub![FF]