Menu

Mostrar postagens

Esta seção permite que você visualize todas as postagens feitas por este membro. Observe que você só pode ver postagens feitas em áreas às quais tem acesso atualmente.

Menu Mostrar postagens

Mensagens - D!sturbed

#1
Tutoriais e Documentos / Tutoriais de Debugging
Junho 09, 2025, 17:00:51 PM
Esse assunto não tem uma cobertura muito ampla e é uma parte mais avançada da engenharia reversa, mas acho válido compartilhar conhecimento, até porque, é um assunto bem relevante ao romhacking.

Abaixo seguem alguns tutoriais (a maioria em inglês) que encontrei sobre o assunto e que acabaram me ensinando algumas coisas.

[GBA] - Reverse Engineering a GBA Game

Vai um pouco além de debugar uma ROM e ensina inclusive a configurar e usar o Ghidra (Software da NSA para engenharia reversa). Utiliza a Rom Pokémon Mystery Dungeon Red Rescue Team para explicar como encontrar valores e modificá-los através do mGBA.

https://www.starcubelabs.com/reverse-engineering-gba/
[GBA] - GDB Debugging with mGBA

Ensina como configurar o debugger GDB no VSCode para depurar ROMs de Game Boy Advance usando o emulador mGBA.

https://felixjones.co.uk/mgba_gdb/vscode.html
[GBA] - Whirlwind Tour of ARM Assembly

Um bom conteúdo de ASM. Inclusive esse é um tópico de um guia para programação de jogos de GBA (TONC).

https://www.coranac.com/tonc/text/asm.htm
[NDS] - Reverse Engineering a NDS Game

Dos mesmos autores do Reverse Engineering a GBA Game, confesso que não li, pois NDS não é do meu interesse no momento, mas parece tão completo e interessante quanto o de GBA, com a diferença que usa o Desmune como emulador.

https://www.starcubelabs.com/reverse-engineering-ds/
[SNES] - Curso de Assembly com SNES e Mega Drive
[SMD] - Curso de Assembly com SNES e Mega Drive

Uma playlist muito boa que ensina bastante sobre hardware de SNES e SMD, depois ensina a configurar um ambiente e, por fim, debugging e assembly, em português:

https://www.youtube.com/playlist?list=PLLFRf_pkM7b6Vi0ehPPovl1gQ5ubHTy5P
--

Achei relevante criar o tópico, pois os motores de busca hoje em dia estão bem ineficientes devido a práticas abusivas de SEO, entre outras coisas... Se tiverem mais tutoriais/material relacionado podem postar aqui.

Um addemdum: Essas técnicas não se aprendem de um dia para o outro, então, não se sintam frustrados se não captarem o conteúdo logo de cara, é natural.
#2
Liguei meu switch para ver se estava tudo bem com ele e tinha uma atualização para ser feita. Daí lembrei que estava prevista para amanhã a tradução oficial em PT-BR do BotW e fui testar o jogo, baixei uma atualização para ele (manualmente) e descobri que já tá online e disponível a tradução oficial... Bom para quem tem um Switch Bloqueado (meu caso)... Enfim, essa é a notícia, quem estava esperando, não precisa esperar mais.

Como eu não tenho o TotK, não posso afirmar com certeza de que também esteja disponível, mas é provável estar sim.

#3
Sem problemas!

A maior dificuldade de implementar a tool é a tabela mista, tentei contornar isso criando um buffer, mas acaba dando na mesma, quando ele bate em bytes que coincidem com os de 8 bits ele extrai como se fossem 16bits, daí gera uma anomalia na extração e acabo tendo uma saída assim:

414D63
[LEFT_IMG][ATENDENTE_1B]Good afternoon.[NEXTLINE]Did you come by to see[MAIN_CHAR_04]r.[MAIN_CHAR_01]ki again?[END_BOX][RIGHT_IMG][MAIN_CHAR_04]Yup![END_BOX][LEFT_IMG][ATENDENTE_1B]Well, then you should go check his[NEXTLINE]office all the way in the back.[END_BOX][RIGHT_IMG][MAIN_CHAR_01]Okay, thanks [ATENDENTE_1B]lot![ENDBLOCK]

quando a saída correta deveria ser assim:

414D63
[LEFT_IMG][ATENDENTE_1B]Good afternoon.[NEXTLINE]Did you come by to see Dr. Aki again?[END_BOX][RIGHT_IMG][MAIN_CHAR_04]Yup![END_BOX][LEFT_IMG][ATENDENTE_1B]Well, then you should go check his[NEXTLINE]office all the way in the back.[END_BOX][RIGHT_IMG][MAIN_CHAR_01]Okay, thanks a lot![ENDBLOCK]

Dá para modificar um pouco a lógica e extrair de outra maneira e depois passar por outro programa para normalizar o script (por exemplo, eu fingiria que os 4 bytes de instrução formam uma cadeia de 32bits, apenas com o intuito de não quebrar muito a cabeça pensando em como tratar isso, e depois de extrair tudo passaria por outro programa que pegaria esse dump e normalizaria ele, quebrando esses 32bits fake em 1 par de 16bits, fazendo o inserter funcionar corretamente... mas de qualquer forma, eu precisaria da tabela completa para fazer isso...) Se precisar, só falar!
#4
Dei uma olhada aqui agora de tarde e infelizmente minha ferramenta não é compatível, por um detalhe... A ROM em questão utiliza uma tabela mista de 8 e 16 bits, o que acaba extraindo os textos de forma errada com minha ferramenta do jeito que está:



O que acarretaria inserir de forma errada também...

Eu precisaria reprogramar uma parte dela para identificar o início do bloco de instrução, extrair os bytes de instrução em 16bits (posição e avatar), depois trabalhar com a extração dos textos em 8bits, e depois fazer o processo inverso na ferramenta de inserção, para que tudo funcione como deve... Não é exatamente de alta complexidade, mas levaria um tempinho.

Teria problema para você trabalhar com uma tabela com configuração diferente da que você me passou?



Se você concordar, posso fazer os ajustes na tool aqui, daí enquanto isso, você vai terminando a tabela, para que quando a tool estiver pronta, possamos testar.

Edit: Esqueci de anexar a tabela...
#5
Vou dar uma olhada aqui, ver o que preciso adaptar, segunda ou terça te dou um retorno, blz?
#6
Essa ROM parece trabalhar com ponteiros normais de GBA. Talvez a tool que desenvolvi para extrair os scripts do Metroid Fusion que estou traduzindo seja compatível... isso significa que já tenho uma tool para inserir os textos também, trabalhando com os ponteiros... Se tiver a tabela completa do jogo e quiser me enviar, faço os testes aqui e se funcionar, te passo acesso a tool
#7
Hummm... Dificilmente os 3 bytes representam algo desse tipo, é muito byte (24 bits) para esse tipo de informação...

Provavelmente um deles deve representar alguma outra coisa... Dei uma olhada rápida aqui, aparentemente o terceiro byte representa o lado da tela que irá aparecer o avatar... por exemplo, editei aqui em 0x414DA7 de 00 para 01 e o resultado foi que o avatar do personagem passou da direita para a esquerda... depois mudei os 2 endereços logo em seguida para 0004 e troquei o avatar do personagem, ou seja, apenas os bytes 00 04 formam o avatar, sendo o byte antecessor responsável por outra coisa (no caso aqui, a posição do avatar, mas como não conheço o jogo nem me aprofundei na rom, não posso dizer que será assim o tempo todo).


#8
Projetos / Res: [GBA] Metroid Fusion (J)
Maio 30, 2025, 23:37:14 PM
Opa, obrigado pelo comentário e pelas sugestões, Solid_One, e a sua tradução do Metroid Fusion está ótima!!

Não tive problemas com a extração/inserção de textos e cálculo de ponteiros. Para falar a verdade, essa parte foi bem simples até e já tenho tudo preparado aqui, faltando apenas traduzir, revisar, reinserir e testar os textos in-game. A Rom também é bem generosa em questão de espaço e, se faltar, tem pelo menos 4 idiomas inteiros para matar e obter espaço, apesar de eu acreditar que não seja necessário tomar tal medida. Mas vou dar uma olhada no código, sim, de repente consigo aproveitar para alguma coisa que ainda não me veio a cabeça!

Único ponto que eu tenho indefinição mesmo é a questão de lançar com 2 idiomas e a ordem desses idiomas, visto que isso vai acabar impactando na experiência de quem quiser desbloquear a galeria inteira.

Eu dei uma olhada na ROM americana e Europeia para ver as diferenças, elas são todas bem similares, só mudam os ponteiros e blocos de texto de lugar, até os textos em japonês estão presentes nelas, assim como os textos dos lançamentos ocidentais estão presentes na ROM japonesa... O que inclusive me fez pensar porque diabos a Nintendo atrasou em 3 meses o lançamento do jogo no Japão, visto que já estava pronto...
#9
Projetos / [GBA] Metroid Fusion (J)
Maio 30, 2025, 19:56:59 PM
--sobre o jogo--

Nome: Metroid Fusion (J)
Plataforma: Gameboy Advance
Gênero: Metroidvania, Plataforma, Ação.

--sobre a tradução--

Responsável: D!sturbed
Grupo: Freelancer
Andamento:
    -Acentos: 100%
    -Hacking: 100%
    -Textos: ~45%
    -Revisão: Apenas Gramatical.
    -Testes: Não iniciados.

Ferramentas: Alguns scripts em C e Javascript de autoria própria*.

Olá pessoas tradutoras.

Primeiramente, o objetivo da abertura desse tópico não é de divulgação, mas sim de consulta. Metroid Fusion está facilmente entre meus 10 jogos preferidos e, apesar de já possuir uma ótima tradução da versão americana, decidi traduzir a versão japonesa, pois essa tem algumas coisas que não estão disponíveis na versão ocidental, como, por exemplo, seleção de dificuldade (que incluí um modo Hard) e algumas imagens extras para a galeria, que são liberadas dependendo do modo de jogo (adulto [textos com kanji] ou infantil [textos em hiragana]), da sua progressão percentual e tempo de jogo final.

--indefinições removidas--

Já decidi como vou lançar o patch de tradução.

--atualizações--

Esses últimos dias estava meio devagar com a tradução... caí de pegar os scripts de mensagens e localizações para traduzir e essas informações são centralizadas na tela, mas a indentação é manual... Após editar alguns manualmente e ficar com uma preguiça danada de continuar, criei uma ferramenta para calcular a indentação e manter o texto centralizado. Também fiz alguns testes com algumas fontes diferentes, acabei encontrando uma que me agradou.

--imagens--



--nova fonte--



--changelog--

2025-30-05 - Adicionadas imagens da tradução preliminar.
2025-04-06 - Atualização sobre o andamento
2025-07-06 - Atualizado progresso da tradução, adicionadas imagens da nova fonte, removidas as indefinições.