Fórum Unificado de Romhacking e Tradução

Romhacking e Tradução de Jogos => Projetos => Tópico iniciado por: Lansk online Junho 24, 2022, 16:18:44 PM

Título: [SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Junho 24, 2022, 16:18:44 PM
Informações sobre o jogo
                                                                                                                         
Nome: SimAnt - The Electronic Ant Colony
Plataforma: Super Nintendo
Gênero: Simulação
Desenvolvedora: Maxis
Publicadora: Maxis
Ano de lançamento: 1993
Descrição: SimAnt é um jogo de simulação de formigas criado pela Maxis. No jogo, você é uma formiga que gerencia uma colônia de formigas pretas. Seu objetivo é derrotar as formigas vermelhas, suas rivais, e colonizar vários lugares.
O jogo possui 2 modos: Completo e Fases. No Completo, você deve conquistar todos os territórios de uma casa e destruir todas as colônias das formigas vermelhas. No modo Fases, você deve destruir as colônias vermelhas em 8 situações diferentes.



Tradução

Essa é uma tradução do jogo para o português brasileiro. Ela ainda não está completa, pois é um projeto inicial. Além disso, esse é o meu primeiro projeto, portanto eu ainda tenho muitas dificuldades e dúvidas em relação a certos aspectos do romhacking, o que pode travar o andamento dessa tradução.
Essa tradução deve ser usada na seguinte rom: SimAnt - The Electronic Ant Colony (USA).sfc



Progresso

Menus: 90%
Diálogos: 80%
Gráficos: 0%
Acentuação: 70%


Dificuldades e desafios

1: Eu percebi que em algumas partes os textos não mudaram para a forma acentuada depois da edição. Elas permanecem com a forma original, como se eu não tivesse alterado os tiles das fontes. Como eu sou iniciante e não entendi o porquê disso ocorrer, essas partes ficaram sem acentuação.
2: Eu ainda não sei editar ponteiros. Mesmo que eu tenha conseguido traduzir o jogo sem editá-los, eu sei que vou precisar fazer isso alguma hora.
3: Eu não sei editar gráficos. O jogo possui poucos textos em forma de gráfico, mas eu ainda desejo poder editá-los futuramente depois de obter mais experiência.


Imagens

(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6p1ObMttJrjHA_e4nEopK5oSD_PmM_lknzAEy-Uiuk4SK1J4oMSsm-yK7s2IsiO0Yx7UQYLFK9Y7VTX1sU4TMMQuszgQgwLh4ZeElmC9IpRP3vIgAUNLRmtBpJ17xLz2mZEFyPs1A89UgFDAID3y4yBXOWHcGzE8-vEtzqIsbEjwsIQeKWj6oC_q_/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00002.png) (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_3MosbblVIiF_ssyLRbS03shBssV8_KbBP7-PRk3b8DqT5XrnI-XJSpjCNRh6ZIIu721GcfBxuWpkYBHWARaShpsryVoc6_DBUDzec8LUPf9unMOLTIKJZGsL5VYcu_l1yK9GLNo4FsZN5z3Ykgq6oQrbpTb5Fsv35RgC192Ay6JvkoNc4yXNDrrJ/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00001.png) (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXJePGF7RU68g3L-KTx2dyoCXzOLueEvRfaalNOx2T42ipPGma_vCUOpUEB0BeMKks9tovopCenJhl6zgxqMMSsFmzqGZOa1A5x0JkOIOZuAerJacYekNsrEOWr9acnSdLbUxJ6ONVm1dwhQm_Q97xjhRsAEuEcZrOV73riDLq6rZh_-BK2TOEMj2C/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00000.png) (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitVlovkqZkIVmSQMIMRzcmV4J4RMS2pHRlpmaDGm9ALtmPH2mi8XGgTKww1GI27VqDpldMLbAX_U4Th3rbCj8QT7qnuPw35TVOU3gztuvK-IzreQtU-7Kk5lUiitGU6otTf2Pw7f3_ilQzgSBYaMzsQ8u_-58PWvteYT75oSUdQEZIaT4Tgng-4NUx/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00003.png) (https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizWqQWBACAjJrLjVuwAG2xP182XrL03noi37D0DYRmidNiOiyNbKMf46GzW5kaEvOfS1vIkKHIbcqski0quEd-LZISkxsw6t5DCVCr2ZUshuebVYdCjRrfJg1L21YMLl2lsDZfexn3wk8vvq3IIPmXzcCjpp_I1v1VuD1WTfgPommxAv4sWB-lTpbh/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00004.png)
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lobim online Junho 25, 2022, 11:06:30 AM
Meus parabéns pelo projeto! É ótimo ver gente engajada em traduzir sistemas antigos como o SNES. :danca1:

Citação de: Lansk online Junho 24, 2022, 16:18:44 PM
(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizWqQWBACAjJrLjVuwAG2xP182XrL03noi37D0DYRmidNiOiyNbKMf46GzW5kaEvOfS1vIkKHIbcqski0quEd-LZISkxsw6t5DCVCr2ZUshuebVYdCjRrfJg1L21YMLl2lsDZfexn3wk8vvq3IIPmXzcCjpp_I1v1VuD1WTfgPommxAv4sWB-lTpbh/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00004.png)

Essa disposição do texto corresponde à original do jogo? Houve algo que o impossibilitou de mudar essas quebras de linha? Pergunto porque esteticamente seria melhor se o texto ficasse disposto de maneira mais uniforme, ou seja, com a quantidade mais ou menos próxima de caracteres entre as linhas, excetuando casos em que há um título ou nas últimas linhas. O que quero dizer é se nessa tela, por exemplo, você poderia dispor o texto da seguinte forma:


SimAnt é baseado em formi-
gas. Conhecê-las vai
melhorar sua jogatina.
Formigas vivem em sociedade


De qualquer forma, veja isso como uma dica. Falo isso porque não é esteticamente agradável uma linha com tão poucos caracteres, como "em formi-" e "For-".

Desejo boa sorte e um bom trabalho no seu projeto!
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Junho 30, 2022, 20:53:24 PM
Citação de: Lobim online Junho 25, 2022, 11:06:30 AM
Meus parabéns pelo projeto! É ótimo ver gente engajada em traduzir sistemas antigos como o SNES. :danca1:

Citação de: Lansk online Junho 24, 2022, 16:18:44 PM
(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizWqQWBACAjJrLjVuwAG2xP182XrL03noi37D0DYRmidNiOiyNbKMf46GzW5kaEvOfS1vIkKHIbcqski0quEd-LZISkxsw6t5DCVCr2ZUshuebVYdCjRrfJg1L21YMLl2lsDZfexn3wk8vvq3IIPmXzcCjpp_I1v1VuD1WTfgPommxAv4sWB-lTpbh/s1600/SimAnt%20-%20The%20Electronic%20Ant%20Colony%20(USA)_00004.png)

Essa disposição do texto corresponde à original do jogo? Houve algo que o impossibilitou de mudar essas quebras de linha? Pergunto porque esteticamente seria melhor se o texto ficasse disposto de maneira mais uniforme, ou seja, com a quantidade mais ou menos próxima de caracteres entre as linhas, excetuando casos em que há um título ou nas últimas linhas. O que quero dizer é se nessa tela, por exemplo, você poderia dispor o texto da seguinte forma:


SimAnt é baseado em formi-
gas. Conhecê-las vai
melhorar sua jogatina.
Formigas vivem em sociedade


De qualquer forma, veja isso como uma dica. Falo isso porque não é esteticamente agradável uma linha com tão poucos caracteres, como "em formi-" e "For-".

Desejo boa sorte e um bom trabalho no seu projeto!

Olá. Sim, eu percebi que posso fazer isso. Eu não fiz isso antes porque eu fiquei com medo de alterar as quebras de linha originais e dar algum problema, mas agora eu sei que posso alterá-las.
Obrigado pelo apoio.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: huskie online Julho 01, 2022, 05:17:57 AM
O arquivo Zip possui apenas 8,9Kb de tamanho. Cabe perfeitamente como anexo. Favor seguir as regras e anexar o patch de tradução na primeira mensagem deste tópico.

OBS: Aproveite e renomeie o teu .zip colocando a tag do sistema (SNES) na frente pra fins de identificação.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: ajkmetiuk online Julho 03, 2022, 10:49:54 AM
Desconhecia totalmente esse jogo. Parece bem interessante um sim city de formigas kk tem até uma enciclopédia (pokedex) das bixanas. Sugiro vc pegar outra rom sem edição e ir testando essas supostas limitações nos textos e menus para ver se o jogo não dá problemas. Acredito que nos menuzinhos tenha como adaptar outras palavras ou ser mais direto. Mas sempre quando for testar algo, não tenha medo não, faça um backup da sua já existente e modifique a fundo, assim vc já sabe as limitações e tem como fazer uma listinha para ir se adaptando. Boa sorte no seu projeto.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: badnest online Julho 29, 2022, 11:02:34 AM
Legal, já joguei um pouco antes, é bem aberto e divertido. Na vida real n tenho medo de aranha, mas nesse jogo bate um desespero jkkkkk

Citação de: Lansk online Junho 24, 2022, 16:18:44 PM
1: Eu percebi que em algumas partes os textos não mudaram para a forma acentuada depois da edição. Elas permanecem com a forma original, como se eu não tivesse alterado os tiles das fontes. Como eu sou iniciante e não entendi o porquê disso ocorrer, essas partes ficaram sem acentuação.

Faz um tempo que eu não jogo mas acho que o jogo tem duas fontes.

Se precisar de ajuda ou quiser tirar alguma dúvida sobre os ponteiros/extração do texto pode mandar mp ou postar aqui mesmo, boa sorte no projeto!
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Julho 31, 2022, 16:20:24 PM
Citação de: badnest online Julho 29, 2022, 11:02:34 AM
Legal, já joguei um pouco antes, é bem aberto e divertido. Na vida real n tenho medo de aranha, mas nesse jogo bate um desespero jkkkkk

Citação de: Lansk online Junho 24, 2022, 16:18:44 PM
1: Eu percebi que em algumas partes os textos não mudaram para a forma acentuada depois da edição. Elas permanecem com a forma original, como se eu não tivesse alterado os tiles das fontes. Como eu sou iniciante e não entendi o porquê disso ocorrer, essas partes ficaram sem acentuação.

Faz um tempo que eu não jogo mas acho que o jogo tem duas fontes.

Se precisar de ajuda ou quiser tirar alguma dúvida sobre os ponteiros/extração do texto pode mandar mp ou postar aqui mesmo, boa sorte no projeto!

Eu pensei que fosse isso, mas eu ainda estou na dúvida se é isso mesmo, já que eu só achei um tipo de fonte no tile molester.
Nas imagens 2, 3 e 4 que eu postei, a cor dos caracteres é cinza. Eu já sei que quando a cor dos caracteres é essa, não vai ter como eu acentuar, porque ele só usa o desenho original. Nos lugares onde havia letras japonesas, eu editei no tile molester e coloquei os caracteres acentuados. Mas depois de editar os textos no windhex e rodar o jogo, ao invés de aparecer o caractere acentuado, aparece o caractere japonês original. Nas partes onde a fonte está na cor branca ou preta, como nas imagens 1 e 5, os caracteres acentuados aparecem normalmente.
Eu não tenho ideia do porquê isso acontece.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: badnest online Agosto 01, 2022, 14:04:59 PM
Fala, Lansk. Fiz uns testes e descobri que de fato é uma outra fonte. Risquei a fonte toda e os caracteres cinza de fato nunca mudam, nenhum deles. A outra hipótese seria o jogo carregar os caracteres de katakana ao invés de hiragana nesses casos por algum motivo, mas sendo que nenhum dos caracteres muda de jeito nenhum acho que podemos descartar ela.

Aqui estou visualizando a segunda fonte no debugger do bsnes-plus:

(https://i.imgur.com/kpRZ7J3.png)

O motivo mais provável pra ti não conseguir ver ela no tile molester é que ela esteja comprimida. Mas não deixe isso te desanimar. O mais fácil acho que seria colocar essa fonte, descomprimida, no final da rom, com os acentos, e adicionar um "desvio" em ASM pro jogo ler a fonte descomprimida injetada. Algum hacker mais experiente pode te ajudar com isso.

Isso, claro, se a fonte de fato estiver comprimida; essa fonte está em 2bpp ao invés de 1bpp como a outra, então pode ser também que fuçando mais a rom no tile molester em algum modo 2bpp ache ela.

Pra traduzir os gráficos comprimidos também seria um procedimento parecido com o que falei:
Injetar os gráficos descomprimidos e já traduzidos no final da rom e fazer o jogo ler eles ao invés dos comprimidos em inglês. Ou pelo menos até onde eu sei esse é o jeito mais usado.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: angel333119 online Agosto 02, 2022, 16:11:02 PM
Lansk, talvez a ferramenta Lunar Compress descomprima os gráficos... Tenta usar ela...

https://www.romhacking.net/utilities/330/
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 03, 2022, 13:04:54 PM
Olá a todos. Eu já tinha pensado na possibilidade de precisar fazer descompressão. O problema é que eu ainda não sei como fazer isso.
Eu fiz umas pesquisas sobre o assunto, mas eu não encontrei muita coisa e também achei meio complicado.
Mesmo assim, se vocês souberem de algum tutorial detalhado sobre isso, eu adoraria dar uma olhada.
Obrigado a todos pela ajuda.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Anime_World online Agosto 04, 2022, 22:26:20 PM
Os gráficos estão comprimidos com algoritmo LZ. Aqui está um exemplo comprimido em 0xCA9CE
(https://cdn.imgpaste.net/2022/08/05/KFWliT.png)

Decompressor escrito em GO e compilado para Windows: Baixar (https://mega.nz/file/8Z9BDSAZ#vHUh-Y35BGgIayXn0FrSUNG2GoJYxOGKePKV3NfxJBY)
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 10, 2022, 11:15:48 AM
Citação de: Anime_World online Agosto 04, 2022, 22:26:20 PM
Os gráficos estão comprimidos com algoritmo LZ. Aqui está um exemplo comprimido em 0xCA9CE
(https://cdn.imgpaste.net/2022/08/05/KFWliT.png)

Decompressor escrito em GO e compilado para Windows: Baixar (https://mega.nz/file/8Z9BDSAZ#vHUh-Y35BGgIayXn0FrSUNG2GoJYxOGKePKV3NfxJBY)

Olá. Desculpe a ignorância, mas eu não sei o que eu tenho que fazer com o executável. Eu abri ele, mas ele simplesmente fecha. Se puder me ajudar, eu agradeço muito.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: kuroi online Agosto 11, 2022, 21:00:54 PM
Para rodar a ferramenta:

1-Baixe o arquivo simant.exe passado
2-Coloque a rom e o arquivo simant.exe na mesma pasta (eu aconselho colocar um nome curto na rom, como por exemplo: "rom.sfc")
3-Abra um terminal no seu Windows digitando "Janelinha do Windows + R" e depois digitando cmd
4-Navegue até a pasta que você colocou os arquivos simant.exe e rom.sfc (Exemplo: C:\simant) usando o comando cd
5-Estando dentro da pasta no terminal, digite o comando com a seguinte sintaxe: simant.exe <<nome_da_rom>> <<offset_comprimido>> e pressione ENTER

Com os nomes e exemplos que eu mostrei aí, você teria que rodar o seguinte comando:

simant.exe rom.sfc 0xCA9CE

Ele vai rodar o programa e vai descomprimir um arquivo com o mesmo nome da rom que pode ser aberto pelo Tile Molester ou qualquer outro editor de Tiles que você quiser...
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Luke online Agosto 12, 2022, 01:01:58 AM
ou simplesmente crie um txt na mesma pasta do programa e coloque simant.exe rom.sfc 0xCA9CE salve o arquivo de texto, renomei ele para .bat, e execute pronto.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 14, 2022, 17:05:13 PM
Obrigado. Eu li as dicas e consegui visualizar os gráficos no Tile Molester. Agora eu só tenho mais 2 dúvidas:

1 - Como eu consigo localizar os offsets dos gráficos que eu quero editar? Existe algum método?

2 - Como eu recomprimo os gráficos que eu editei e coloco de volta na rom?
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Anime_World online Agosto 15, 2022, 13:58:43 PM
Vamos por etapas, ok?

Primeiro você tem que aprender a usar o debugger pra localizar os graficos comprimidos, pra decomprimir e posteriormente edita-los. O denim fez um ótimo tutorial sobre isso tempos atrás, procure que você encontra.

Quanto a reinserir o gráfico, você precisa aperfeiçoar seus conhecimentos para fazer isso. Pois se o grafico comprimido ficar maior que o original, não adianta apenas substitui-lo no offset. É preciso remaneja-lo para algum espaço vazio ou expandir a rom. Então, recomendo que se concentre no momento agora apenas em aprender a localiza-los usando o debugger.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 15, 2022, 23:16:19 PM
Citação de: Anime_World online Agosto 15, 2022, 13:58:43 PM
Vamos por etapas, ok?

Primeiro você tem que aprender a usar o debugger pra localizar os graficos comprimidos, pra decomprimir e posteriormente edita-los. O denim fez um ótimo tutorial sobre isso tempos atrás, procure que você encontra.

Quanto a reinserir o gráfico, você precisa aperfeiçoar seus conhecimentos para fazer isso. Pois se o grafico comprimido ficar maior que o original, não adianta apenas substitui-lo no offset. É preciso remaneja-lo para algum espaço vazio ou expandir a rom. Então, recomendo que se concentre no momento agora apenas em aprender a localiza-los usando o debugger.

Eu baixei o bsnes plus e usei o debugger dele. Consegui localizar alguns gráficos no Tile Viewer do debugger. O que devo fazer agora?
Eu procurei aqui no site o tutorial que você indicou, mas não achei. Vou dar mais uma olhada depois.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Anime_World online Agosto 16, 2022, 10:50:37 AM
Os gráficos são decompridos na WorkRAM e posteriormente copiados pra VRAM.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 17, 2022, 12:11:18 PM
Eu não sei se estou fazendo certo. Eu achei gráficos no debugger, mas não entendo direito se está certo ou o que eu tenho que fazer depois.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Anime_World online Agosto 17, 2022, 14:30:45 PM
Citação de: Lansk online Agosto 17, 2022, 12:11:18 PM
Eu não sei se estou fazendo certo. Eu achei gráficos no debugger, mas não entendo direito se está certo ou o que eu tenho que fazer depois.

Ai você está olhando na VRAM.
Você tem q olhar na WRAM que é aonde é decomprimido o grafico, depois de decomprimido ele é copiado pra VRAM para ser exibido na tela.
Assim que encontrar o endereço aonde ele é decomprimido na WRAM voce insere um breakpoint de escrita nesse endereço pra saber qual rotina que decomprime o gráfico e de onde ele vem.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: badnest online Agosto 17, 2022, 15:08:05 PM
Olha a VRAM em hexadecimal e coloca um breakpoint pra quando eles forem escritos na VRAM. Quando esse breakpoint ativar, pode olhar na WRAM que eles vão ta lá, aí pega o endereço e faz outro breakpoint como o Anime_World falou. Eles ficam na WRAM por um intervalo de tempo bem curto.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 22, 2022, 19:49:23 PM
Oi, gente. Infelizmente eu não sei fazer nada disso. Eu acho que eu deveria ter começado pelo NES ao invés do SNES, já que a maioria dos gráficos é descomprimida.
Desculpa ter tomado muito o tempo de vocês, mas eu não sei se eu vou conseguir aprender essas partes mais complicadas.
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: kuroi online Agosto 22, 2022, 21:30:14 PM
O "Breakpoint" que o pessoal está mencionando aí é um recurso de emuladores com Debuggers que permite que você dê uma "pausa" (Break) em determinado local do código de execução do jogo para que você possa obter algum dado ou informação que esteja no jogo. Os Breakpoints podem ser usados para obter um texto, um ponteiro, um gráfico (comprimido ou não), uma fonte e etc.
Como os códigos em Assembly são basicamente atribuições e movimentações de Bytes entre os registradores do processador do console, os Breakpoints são categorizados em três tipos:
1- Exec (Execução)
2- Read (Leitura)
3- Write (Escrita)

Mas aqui no Romhacking usamos mais os de Leitura e Escrita.

Para criar um Breakpoint usando o Emulador Debugger "Geiger's Snes9x" baixado no romhacking.net:

1- Abra o jogo normalmente no emulador
2- Assim que o jogo abrir, a seguinte tela vai ser exibida:
(https://i.imgur.com/D3UBTm2.png)
3- Escolha "Breakpoints"
4- Uma nova tela será exibida mostrando que tipo de Breakpoint você quer fazer e qual é o endereço que você quer fazer o Break. Imagem:
(https://i.imgur.com/tAau27u.png)
5- Escolha o tipo de Breakpoint que você quer fazer entre: Exec, Read ou Write
6- Preencha o endereço que você quer fazer o Break, mas ATENÇÃO A UM PASSO IMPORTANTE!! Este endereço não é da ROM, e sim do código do jogo em tempo de execução! E para que você obtenha esse valor, existe uma ferramenta que também pode ser baixada pelo romhacking.net chamada de "SNEStuff".

No SNEStuff é possível "converter" o endereço da ROM que você tiver (obtido por um Editor Hexadecimal) para o endereço do código de execução do jogo, por meio do tipo da ROM usada no jogo.
Exemplo:

Para obter um endereço que possa ser feito um Breakpoint no jogo do SimAnt:

1- Abra o jogo em um Editor Hexadecimal qualquer
2- Encontre algum conteúdo que você queira fazer um Break. No meu exemplo vou usar o endereço: 0xA550, onde tem o texto: "You can only enter areas..."
3- Agora, de acordo com a documentação da ROM do jogo SimAnt, o mesmo é categorizado como "LoROM", ou seja, a configuração do SNEStuff deve ser esta:
(https://i.imgur.com/IXfEKZZ.png)
4- Com isso, o endereço agora é: 0x01A550
5- Com o endereço em mãos, vamos inserí-lo na tela de Breakpoint do Degugger e marcar o tipo de Break como Read (leitura), como a imagem abaixo:
(https://i.imgur.com/iVjX3OO.png)
6- Clique em OK e clique em Run, para que o jogo comece a rodar
7- Faça o jogo chegar até o ponto de Break e aguarde o jogo pausar a emulação. Pronto! Breakpoint feito!
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: badnest online Agosto 23, 2022, 12:03:25 PM
Citação de: Lansk online Agosto 22, 2022, 19:49:23 PM
Oi, gente. Infelizmente eu não sei fazer nada disso. Eu acho que eu deveria ter começado pelo NES ao invés do SNES, já que a maioria dos gráficos é descomprimida.
Desculpa ter tomado muito o tempo de vocês, mas eu não sei se eu vou conseguir aprender essas partes mais complicadas.

Cara, pra ser sincero realmente essa parte é meio complicada. Na minha opinião, o melhor caminho é começar aprendendo a lógica dos ponteiros, encontrar eles e usar para extrair o texto. Isso é algo que vai te dar mais habilidade e confiança pra mais depois trabalhar com os gráficos. E também é mais importante do que os gráficos, pq vai te permitir mudar o tamanho das frases, por exemplo "botar ovo" ao invés de "bota ovo".
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Agosto 28, 2022, 11:11:09 AM
Citação de: badnest online Agosto 23, 2022, 12:03:25 PM
Citação de: Lansk online Agosto 22, 2022, 19:49:23 PM
Oi, gente. Infelizmente eu não sei fazer nada disso. Eu acho que eu deveria ter começado pelo NES ao invés do SNES, já que a maioria dos gráficos é descomprimida.
Desculpa ter tomado muito o tempo de vocês, mas eu não sei se eu vou conseguir aprender essas partes mais complicadas.

Cara, pra ser sincero realmente essa parte é meio complicada. Na minha opinião, o melhor caminho é começar aprendendo a lógica dos ponteiros, encontrar eles e usar para extrair o texto. Isso é algo que vai te dar mais habilidade e confiança pra mais depois trabalhar com os gráficos. E também é mais importante do que os gráficos, pq vai te permitir mudar o tamanho das frases, por exemplo "botar ovo" ao invés de "bota ovo".

Eu aprendi a fazer breakpoint graças ao turorial do kuroi. Eu gostaria de editar os gráficos, mas posso tentar entender os ponteiros primeiro mesmo. Por onde eu começo?
Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: badnest online Setembro 01, 2022, 21:19:13 PM
Ponteiros nada mais são que bytes que o jogo lê pra saber onde começam as strings. Por exemplo, um jogo tem duas strings, cada uma referente a um item:

(https://i.imgur.com/YajOZLx.png)

Na ROM terá dois ponteiros, como o snes é little endian, ou seja, lê os bytes do menor para o maior, serão D118, que aponta para 0x18D1, e D718, que aponta para 0x18D7, organizados em uma tabela, junto com so próximos ponteiros, por exemplo:

D1 18 D7 18 DC 18 E0 18 (..) FE 18 02 19 06 19
(ponteiros de 2 bytes (16-bits))

ou talvez:

D1 18 00 D7 18 00 DC 18 00 E0 18 00 (...) FE 18 00 02 19 00 06 19 00
(ponteiros de 3 bytes (24-bits))

Depende muito do jogo, mas muitas vezes da pra encontrar a tabela só procurando D118 e achando algo que se pareça com essa estrutura.

Ao traduzir o jogo, o texto talvez fique assim:

(https://i.imgur.com/tGR8JBA.png)

A primeira string vai aparecer normalmente, pois o jogo vai começar a ler em 18D1 e só vai parar no endbyte no final da palavra, que no exemplo é 00.

A segunda string vai aparecer assim:

RA

Pois o ponteiro de ARMA ainda aponta pra 18D7, que agora é o final da palavra ARMADURA. É preciso achar esse ponteiro e mudar ele pra que aponte pra 18DA, e mudar o próximo também e assim sucessivamente até o final do bloco de texto.  Mas isso geralmente não é feito a mão, normalmente da pra usar tools que recalculam os ponteiros automaticamente de acordo com o novo texto.

Que bom que aprendeu breakpoints, pois a gente vai usar eles pra achar os ponteiros do simant, já que é um método mais certeiro do que pesquisando.

Vamos começar com o exemplo do "bota ovo". Primeira coisa a entender é que o processador não acessa o endereço na ROM diretamente, os bancos da ROM são mapeados a endereços no barramento do processador, no debugger chamado de "S-CPU BUS". Em ROMs LoROM, como é o caso do simant, cada banco vai de 8000 até FFFF, então dados que estão em 0xYY1100 por exemplo na ROM vão aparecer no barramento em 0xZZ9100 no S-CPU BUS. Não vou entrar em mais detalhes sobre isso pq é muita informação e vai alongar muito o tutorial mas se QUISER saber mais sobre o assunto pesquise  sobre o mapeamento da memória do SNES.

Sabemos que na ROM, a string "Bota ovo" está localizada em 0x8741. Abrindo o editor de memória do debugger do bsnes-plus, no modo S-CPU BUS, clicando no binóculos pra fazer uma pesquisa e digitando "Bota ovo"(entre aspas, pra especificar que é texto ascii ao invés de hexadecimal), podemos ver que ele está localizado em 0x18741, mas se clicar em localizar próximo, vai ver que o ele também está espelhado em 0x218741, 0x418741, 0x618741 e assim por diante. Isso se deve ao modo que a ROM é mapeada ao barramento. Pra saber de qual desse endereços o processador lê o texto, vamos fazer exatamente isso mas depois que o texto já apareceu na tela pelo menos uma vez. O texto que foi lido pelo processador vai ficar azul:

(https://i.imgur.com/ssywXLq.png)

Nesse jogo o endereço é o primeiro e não um dos espelhados, mas em outros pode ser diferente!
Colocamos um breakpoint de leitura em 18741 no S-CPU BUS. Ele ativará ao abrir a caixa de ação da formiga.

00c4e4 lda [$79],y   [018741] A:6a01 X:0002 Y:0000 S:04eb D:0100 DB:00 nvMxdIZc V: 29 H: 75 F:32

Essa instrução está carregando o texto do endereço que está guardado em 0x179 (D=0100 + Y=0000 + 79 = 0179), 0x179 faz parte da memória RAM. Se olhar em 0x179 no S-CPU bus, vai ver nosso ponteiro, 41 87. Precisamos descobrir como esse ponteiro foi parar na memória RAM.

Vamos desativar o ponteiro anterior e criar um novo em 0x179, de ESCRITA, e em data vamos colocar 41.

Abrindo a caixa de ação da formiga de novo, o novo breakpoint vai disparar:

00c4db sty $79       [000179] A:6a79 X:0002 Y:8741 S:04eb D:0100 DB:00 nvMxdIzc V: 29 H: 46 F: 4

Esse comando guarda y, que é nosso ponteiro, em 0x179. Beleza, mas como Y virou 8741? Pra descobrir vamos ter que fazer um trace log, que é um arquivo com todas as instruções que o processador executou num intervalo de tempo, quanto maior o intervalo de tempo mais gigantesco o arquivo, então vamos tentar deixar esse intervalo o menor possível.

Com o breakpoint ainda ativo, a caixa de texto ação e o cursor em cima da formiga, clique em break, ative a opção trace s-cpu opcodes, clique em run, rapidamente abra a caixa de ação (o fps pode baixar bastante, pode ser preciso apertar o botão pra abrir a caixa varias vezes). O breakpoint vai disparar, desative trace s-cpu opcodes. Um arquivo será criado com o nome "nomedarom-trace.log". Se estiver num sistema unix use o less pra abrir, se for windows pode ser que alguns programas travem por ser muito longo o arquivo, mas enfim, pode pular direto pro final do arquivo:

[spoiler]009334 lda [$1c],y   [018732] A:0003 X:0b0a Y:0003 S:04ed D:0100 DB:00 nvMxdIzc V: 84 H:323 F:37
009336 iny                    A:0041 X:0b0a Y:0003 S:04ed D:0100 DB:00 nvMxdIzc V: 84 H:334 F:37
009337 xba                    A:0041 X:0b0a Y:0004 S:04ed D:0100 DB:00 nvMxdIzc V: 84 H:337 F:37
009338 lda [$1c],y   [018733] A:4100 X:0b0a Y:0004 S:04ed D:0100 DB:00 nvMxdIZc V: 85 H:  2 F:37
00933a xba                    A:4187 X:0b0a Y:0004 S:04ed D:0100 DB:00 NvMxdIzc V: 85 H: 14 F:37
00933b tay                    A:8741 X:0b0a Y:0004 S:04ed D:0100 DB:00 nvMxdIzc V: 85 H: 19 F:37
00933c jsr $c4d8     [00c4d8] A:8741 X:0b0a Y:8741 S:04ed D:0100 DB:00 NvMxdIzc V: 85 H: 23 F:37
00c4d8 jsr $c4bb     [00c4bb] A:8741 X:0b0a Y:8741 S:04eb D:0100 DB:00 NvMxdIzc V: 85 H: 34 F:37
00c4bb rep #$20               A:8741 X:0b0a Y:8741 S:04e9 D:0100 DB:00 NvMxdIzc V: 85 H: 46 F:37
00c4bd txa                    A:8741 X:0b0a Y:8741 S:04e9 D:0100 DB:00 NvmxdIzc V: 85 H: 51 F:37
00c4be sep #$20               A:0b0a X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvmxdIzc V: 85 H: 55 F:37
00c4c0 asl a                  A:0b0a X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H: 60 F:37
00c4c1 asl a                  A:0b14 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H: 64 F:37
00c4c2 asl a                  A:0b28 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H: 67 F:37
00c4c3 rep #$20               A:0b50 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H: 71 F:37
00c4c5 lsr a                  A:0b50 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvmxdIzc V: 85 H: 76 F:37
00c4c6 lsr a                  A:05a8 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvmxdIzc V: 85 H: 80 F:37
00c4c7 lsr a                  A:02d4 X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvmxdIzc V: 85 H: 83 F:37
00c4c8 sep #$20               A:016a X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvmxdIzc V: 85 H: 87 F:37
00c4ca ldx $2c       [00012c] A:016a X:0b0a Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H: 92 F:37
00c4cc sta $0c00,x   [000c00] A:016a X:0000 Y:8741 S:04e9 D:0100 DB:00 nvMxdIZc V: 85 H:100 F:37
00c4cf inx                    A:016a X:0000 Y:8741 S:04e9 D:0100 DB:00 nvMxdIZc V: 85 H:110 F:37
00c4d0 xba                    A:016a X:0001 Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H:113 F:37
00c4d1 ora $89       [000189] A:6a01 X:0001 Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H:118 F:37
00c4d3 sta $0c00,x   [000c01] A:6a79 X:0001 Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H:124 F:37
00c4d6 inx                    A:6a79 X:0001 Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H:144 F:37
00c4d7 rts                    A:6a79 X:0002 Y:8741 S:04e9 D:0100 DB:00 nvMxdIzc V: 85 H:147 F:37
00c4db sty $79       [000179] A:6a79 X:0002 Y:8741 S:04eb D:0100 DB:00 nvMxdIzc V: 85 H:158 F:37
[/spoiler]

O Y vira 8741 após o comando tay, que nada mais faz do que colocar o valor de A em Y. O A vira 8741 após os comandos lda, não precisa fazer os cálculos pq o debugger já nos diz de cara que o 8741 veio de 0x18732 (entre colchetes). 0x18732 no barramento do processador corresponde ao endereço 0x8732 na ROM, que é logo antes do texto em questão! Em 0x8732 temos 41 87, que é nosso ponteiro, logo antes temos 34 87, que é o ponteiro de "Cava ninho", mais adiante temos os ponteiros 63 87 até b7 87, que são os ponteiros do próximo bloco, e assim por diante.

Sim, nesse caso de os ponteiros serem misturados no texto complica um pouco as coisas, mas a coisa toda segue o seguinte formato:

número de ponteiros que seguem, ponteiros, strings, números de ponteiros que seguem, ponteiros, strings ...

Por exemplo, em 0x8755 temos o segundo "Bota ovo", seguido do endbyte FF, seguido do byte 06, que diz que o que segue são seis ponteiros, seguido dos seis ponteiros, seguido das seis strings que correspondem aos seis ponteiros. Da pra editar tudo a mão respeitando esse padrão, mas não recomendo muito não.

Pra ser sincero não sei como extrair esse texto com o cartographer, com o abcde deve ter algum jeito simples mas nunca usei, vale olhar a documentação dele com atenção e procurar tutoriais. Recomendo também use esse tutorial pra encontrar o restante dos ponteiros do jogo.

Algum hacker que tem experiência com o abcde pode te ajudar melhor daqui pra frente, ou algum certo hacker bom das tool pode fazer uma pra extração e reinserção específica pra esse jogo.

Na tabela da pra mapear todos os caracteres acentuados pros mesmos não acentuados, traduzir o script extraído e inserir normalmente na rom sem os acentos, aí depois da fonte acentuada da pra só mudar a tabela e reinserir sem ter que mexer no texto de novo.

Título: Re:[SNES] SimAnt - The Electronic Ant Colony
Enviado por: Lansk online Setembro 11, 2022, 17:09:04 PM
Eu acho que entendi como ver os ponteiros, só não sei ainda como editá-los. Como eu edito esses ponteiros agora? Preciso usar alguma tool específica para fazer essa edição ou posso usar o editor hexadecimal?