4 de dezembro de 2014

BioHazard Battle (Projeto de Tradução / Sistema Mega Drive)

Vocês devem ter reparado que na primeira matéria sobre Bio-Hazard Battle eu estava usando uma ROM traduzida. BEm, ela foi traduzida por mim com a ajuda do meu amigão Soterio Salles, e hoje eu irei mostrar como eu fiz a tradução.

- O que?! Você Yoz traduzindo um jogo?! Como pode se você não conhece bulhufas de língua inglesa?



Bem, ao menos é isso que os meus amigos mais chegados iriam dizer sobre isso. Além do que, existe Google Tradutor pra que?! E eu tenho amigos que sabem traduzir textos pra que?

:-)

Mas mesmo eu sabendo tão pouco de inglês, eu sei um pouco mais do procedimento que permita traduzir um jogo, e como o BioHazard Battle possui só um punhadinho de texto, vou escrever esse procedimento de tradução do ponto de vista de quem não é tradutor...

^_^

- Mas como você aprendeu tudo isso?

Os créditos disso vão para o meu amigo Felix o mandachuva do portal de tradução de jogos (PO.B.R.E.) que há muito tempo havia me fornecido vários documentos que ensinam a fazer isso.

Preciso informar a vocês que o que eu escrever agora não é uma Bíblia da tradução. Na verdade a ideia nasceu dos meus estudos de códigos do Bio-Hazard Battle, onde eu constatei que haviam poucos textos a serem traduzidos e que não há nada disso na internet (Nem projetos em andamento e muito menos concluídos), e resolvi por em prática esses estudos só que irei relatando os acontecimento do processo de tradução conforme os eventos me forem apresentados, ou seja, nem sei se eu realmente irei conseguir traduzir este game.

Bem! Vamos ao procedimento...

Mas antes, cliquem AQUI para baixar um programa denominado SBWin, instale o programa e converta sua ROM para o formato “.bin” caso a mesma esteja no formato “.smd” ou “.gen”, é melhor trabalhar numa ROM com uma extensão binária para que outros softwares a aceitem devido a seu formato.

O primeiro software que usarei para o nosso projetinho de tradução, será o SearchR X (Clique no nome), com ele eu poderei rastrear textos ocultos dentro de um arquivo binário.


Com o SearchR X aberto, eu carrego a ROM do BioHazard Battle (Bio-Hazard Battle (UE) [!].bin) você precisa saber o que vai buscar na ROM, no meu caso, irei rastrear a palavra “Avaron” que aparece no final do game.

Agora eu digito esta palavra na janelinha “Find” do SearchR X e dou um click no Start.


Obs: Atente-se que a referia palavra (“Avaron”) possui o “A” maiúsculo e o restante em minúsculo. Após clicar em Start para rastrear, o SearchR X me retornou uma única entrada da palavra e informou que a letra “A” maiúsculo é equivalente ao Hexadecimal “0A” e o “a” minúsculo é equivalente ao hexadecimal “24”. Note também que ele encontrou até a palavra Planet justamente da parte onde estávamos observando da imagem do game que nos serviu como base para sabermos o que procurar.

Embora seja irrelevante pro nosso projetinho, tudo o que aparecer abaixo de Offsets não terá de serventia para nós, pois essa informação nada mais é do que a posição do texto dentro da ROM. Eu não vou entrar em detalhes na questão de equivalência entre letras e Hexadecimais porque o meu objetivo é ser objetivo, mas ao final desse texto, irei linkar com um documento muito bom que ensina todos os passos e todos os conceitos necessários para se tornar um tradutor (O que não é o meu caso por enquanto), este sim é uma Bíblia de tradução de jogos.

Agora você clica com o botão da direita em cima do texto que o SearchR X encontrou e depois em Create Table para criar a tabela.


Ele gerará um arquivo com a extensão “.tdl” que pode ser aberta usando um programa chamado TaBuLar (Clique na palavra), é bom você ter em mãos esse programa porque qualquer equivalência que você observe na ROM, você pode inserir na sua tabela usando este programa.

A equivalência nada mais é do que a igualdade entre uma letra, número ou caractere em relação ao seu Hexadecimal. Por exemplo a letra “A” é equivalente ao Hexadecimal “0A”, e a letra “a” é equivalente ao Hexadecimal “24”.

Em relação a que nome atribuir ao seu arquivo “.tbl”, a melhor sugestão seria por o nome da ROM a qual você esta trabalhando, por exemplo, se o nome da ROM a ser traduzida é Bio-Hazard Battle (UE) [!].bin então o melhor seria nomear o seu arquivo de tabelas como Bio-Hazard Battle (UE) [!].tbl. Observe como ficou a nossa tabela aberta no TaBuLar:


É agora que nós fazemos a mágica acontecer (Ou se preferir, os textos aparecerem para você traduzir), você precisa agora de um programinha chamado WindHex32 que pode ser baixando clicando no nome do programa que acabei de escrever.

Agora preste a atenção (Vou descrever o que eu faço, mas você pode fazer do seu modo contanto que obedeçam umas regrinhas), coloque tanto a ROM do jogo que você quer traduzir e o sua tabela (Arquivo .tbl) numa mesma pasta (No meu caso, dentro da pasta do próprio WindHex32).


Porque quando o WindHex32 carregar a ROM ele também carregará automaticamente a tabela e o texto irá aparecer (Ainda obedecendo a regra de igualdade entre os nomes da ROM e da Tabela excetuando-se a extensão).

Agora abra o WindHex32, vá em “File” e depois em “Open File for Editing” e...


...carregue a ROM do jogo que você irá traduzir.


Com o programa aberto e a ROM carregada, dê um Ctrl + F e rastreie novamente a palavra “Avaron”:


Daqui por diante você precisará usar um pouco mais de sua capacidade observativa dedutiva, e muito que provavelmente precisará usar o programa TaBuLar para ir melhorando sua tabela de tradução conforme for identificando as equivalências, e tenha sempre ao lado um caderno e uma caneta para você ir fazendo suas anotações (É como eu faço para depois passar a limpo). Por exemplo, cada vez que você move o cursor numa coluna, o cursor de outra também se moverá (Porque são equivalentes), então, mesmo depois de criado a tabela, percebi que estavam faltando caracteres. Após uma pergunta num texto do Bio-Hazard Battle, havia um ponto de interrogação (?) e que este era equivalente ao hexadecimal “41”, o que eu fiz? Abri o TaBuLar e inseri um ponto de interrogação na posição “41” depois um ponto (.) em “3E” e assim eu fui inserindo mais informações na minha tabela.

Vamos a tradução. Como é só um punhadinho de texto, irei transcrever ele aqui:

“Planet Avaron was saved by the Biowarrior.”
“They returned to their cryogenic sleep deep inside the mother ship.”
“A peaceful moment...”
“But who can say that a similar crisis will never occur again?”
Esse texto aparece no final do game, mas existem outros, como por exemplo a frase que diz para pressionarmos Start, as palavras da tela de opção e por aí em diante.

Vamos agora ao poderosíssimo Google Tradutor e iremos inserir o texto nele (Claro que nesse ponto eu recorri a ajuda):




Minha sugestão de tradução inicial é:

“O planeta Avaron foi salvo pelos Bio guerreiros.”
“Eles voltaram para seu sono criogênico profundo no interior da nave mãe (Poderíamos inserir o nome da nave que é “O.P. Odysseus”)”
“Um momento de paz”
“Mas quem pode dizer que uma crise como esta jamais irá acontecer novamente?”
Porque sugestão de tradução inicial? Por uma razão simples que eu vou descrever logo a seguir: Uma coisa muito importante que você precisa saber na hora de inserir os textos é, “não vá fazendo isso a torto e a direita”. Existe um espaço a qual o texto foi inserido originalmente, e este espaço precisa ser obedecido, a não ser, é claro, que você aprenda a mexer com um “pesadelo” chamado “Ponteiros”, que é um endereço que indica desde onde se deve começar a ler o texto de um jogo, não irei falar de ponteiros aqui além do que já foi dito pela razão de ser muito complicado pro meu atual nível. Você só precisa saber que a tradução é possível mesmo sem o ponteiro (Contanto que não haja compressões no texto a serem quebradas), mas na hora de traduzir o texto, não depende somente de ser um bom tradutor, mas precisa fazer uma boa interpretação e adaptação coerente dependendo de cada caso para inserir as palavras dentro do espaço a qual o texto original se encontra.

Vamos as observações visuais e melhorias sutis da nossa tabela.

“Planet Avaron was saved by the Biowarrior.”

Observe que entre “Planet” e “Avaron” assim como “was” e “Saved” e assim por diante (Entre uma palavra e outra) existe um espaço que esta sendo representado por um ponto, este espaço esta identificado na ROM pelo hexadecimal 80 (80=Espaço ou o Hexadecimal “80” é equivalente ao “Espaço entre palavras”):


Vamos abrir a nossa tabela com o TaBuLar.exe e na posição 80 inserir um espaço que ele registrará na hora da tradução:


Coloquei um UnderLine só pra indicar melhor a posição no quadrado amarelo, mas na prática eu inseri um espaço mesmo.

No WindHex vamos em “File” Open Table File e Table #1 para carregar a tabela, rastreie novamente o texto e observe como ficou:


Agora irei escrever alguma coisa (Lembre-se de fazer BackUp de sua ROM), se seu cursor estiver piscando na coluna central (Onde esta um monte de Hexadecimais) pressione TAB pra lançar o cursor pra coluna da direita (Onde esta o texto) para começar a fazer as alterações.


Após fazer as alterações e ir salvando me deparei com um problema um tanto chatinho. Se fizermos qualquer que seja a alteração em determinadas ROM’s ao recarrega-la novamente no emulador pode aparecer uma tela vermelha ou escura, isso significa que houve um problema no Checksum que foi o que aconteceu com o Bio-Hazard Battle!

- Mas o que é isso?

Chechsum, como o próprio nome diz, é uma checagem de soma (Checa a Soma), ou seja, ele é o resultado da soma de todos os bytes da ROM. Isso serve para que, na inicialização do jogo, o console saiba que os dados estão intactos e coibir alterações nos jogos.

Então, o que devemos fazer?

Podemos tentar alterar o código do emulador para que ele "pule" essa checagem da rotina do checksum, o problema é que você ficaria bitolado ao uso de somente este emulador que você alterou.

Outra alternativa seria você mesmo consertar o checksum da ROM, o SEGATool faz isso, mas não me dou bem com ele, no meu caso aqui com o BioHazard Battle, sugiro que você use este aqui: http://www.romhackers.org/modules/PDdownloads2/singlefile.php?cid=7&lid=148 ele funcionou muito bem (Agora que aquele conversor de formato para .bin viria a calhar caso você estivesse usando uma ROM em outro formato).

Agora vamos às imagens da ROM traduzida em comparação com a original:


E agora? Como eu distribuo a minha tradução? Através de uma ROM traduzida ou por meio de um IPS?

Obs: Para ROMs são utilizadas patches no formato IPS, e para as imagens ISO de PSX são utilizados o formato PPF.

Para criar um patch de tradução (.ips), siga os seguintes passos:

Primeiro baixe um excelentíssimo software chamado Lunar IPS da autoria de FuSoYa do grupo FuSoYa's Niche

Agora se certifique de que você possui a ROM original SEM TRADUÇÃO juntamente com a ROM QUE VOCÊ TRADUZIU.

Abra o Lunar IPS e clique em “Create IPS Pach”:


Obs: Se suas ROM’s não aparecerem, clique em “Arquivos do tipo” e selecione “All Files (*.*)”.

Na janela a seguir, repare que esta escrito “Select ORIGINAL UNMODIFIED File to Use”, ou seja, é para você selecionar o arquivo ORIGINAL SEM MODIFICAÇÕES para ser usado como base, no nosso exemplo aqui, é a ROM por nome “Bio-Hazard Battle (UE) [!].bin”. Assim que você clicar em abrir, surgirá outra janela bem parecida, mas com os dizeres diferentes:


“Select NEW MODIFIED File to Use”, ou seja, é para você selecionar agora a ROM que você traduziu, no nosso caso aqui esta nomeada como “Bio-Hazard Battle (Port_Br_Tradução_Yoz_Desconstrutor) [!].bin”. Clique em abrir.

Agora ele vai pedir para você salvar seu IPS que e estará com o mesmo nome do arquivo modificado, mas terá a extensão “.ips”, no nosso exemplo: “Bio-Hazard Battle (Port_Br_Tradução_Yoz_Desconstrutor) [!].ips”


Clicando-se em Salvar, nosso IPS estará prontinho.


A vantagem do Lunar IPS é que os IPS’s que ele gera já são auto aplicáveis, ou seja, não se necessita de programa algum para aplicar o IPS, bastando dar dois cliques no mesmo e dar o caminho da ROM.

Lembre-se! Durante a criação do IPS, os arquivos (Originais e traduzidos) devem ter extensões semelhantes (Ex: se a rom original for “.fig” a modificada deverá ser “.fig” também) Para os jogos de Mega Drive a única extensão a ser utilizada é a “.bin” (a única que pode ser modificada)

Só salientando que o trabalho de tradução de ROM’s é uma coisa que requer bastante estudo, porque existem casos e casos. Este procedimento que estou adotando aqui (Que foi bem simplificado) pode não dar certo com algum outro game, e mesmo este tutorial que estou escrevendo pode se diferir de outros que se encontra na internet. E só lembrando que eu não sou um tradutor, e meu conhecimento na parte de tradução ainda é muito baixo, esse procedimento deu certo com esse e alguns outros games que testei, todavia esta tão simplificado que nem acentuação gráfica eu coloquei porque depende de edição gráfica e essa parte eu ainda não domino, portanto, não me cubram de perguntas, vá e estude o documento que irei passar a seguir e vá estudando muitos outros documentos caso seu interesse por tradução de jogos se intensifique. Lembre-se, estudar essas coisas requer paciência e dedicação (E tempo).

Conforme havia dito anteriormente, irei indicar uma apostila de abrangência geral e de níveis básicos, intermediários e até avançados que podem ser usados para os mais diversificados sistemas. O nome do arquivo é “Fascinante Mundo do ROMHacking”, ele é muito mais do que recomendadíssima e pode ser adquirida através desse link: http://www.romhackers.org/modules/PDdownloads1/singlefile.php?cid=49&lid=17 ela foi escrita por Pablito da cena espanhola de tradução (E traduzida para português brasileiro por RiFF revisada por Fallen_Soul), e além que abordar diferentes aspectos sobre tradução é um excelente tutorial. O Fascinante Mundo do ROMHacking é considerado leitura obrigatória para os futuros tradutores de jogos.

O IPS dessa tradução ainda esta sendo revisado e espero, assim que concluir esta revisão, disponibilizar no site do PO.B.R.E.e logo devo estar aparecendo aqui para anunciar a tradução.

Assim me despeço de vocês com um cordial “até amanhã” desejando vida longa e próspera no melhor costume Vulcano e esperando que você, que esta lendo este tutorial, tenha gostando de lê-lo tanto quando eu gostei de escrever.

11 comentários:

  1. Pronto.... Yoz agora desconstrói e traduz Kkkkkkkkkk

    Muito bom o texto cara. Eu pessoalmente não dou a mínima pra tradução de ROM mas você me conhece então sabe o porque kkkkkkkkkkkkkkkkkk

    ResponderExcluir
    Respostas
    1. Sua ajuda foi importante...
      Mais uma vez, obrigado!
      \o/

      Excluir
    2. Pow cara já falei e digo de novo. Precisando é só falar...

      Excluir
  2. Que post lindo! Uma das coisas que mais curto, principalmente por envolver programação (mesmo sendo básico). Descobri algumas coisas que me ajudaram inclusive agora. Parabéns mais uma vez e vou tentar fazer uma aqui do básico hehehe.

    ResponderExcluir
    Respostas
    1. Obrigado novamente pela presença, Gustavo... Existem jogos que vem com compressões, aê esse método não vai poder ajudar muito...

      Excluir
  3. wow. muito massa o texto. parabens kra

    ResponderExcluir
  4. haha esse manja muito, lembro que já me ajudou em uma tradução que me ajudou bastante hehe =D

    ResponderExcluir
  5. Pô, não sabia que vocês estavam fazendo traduções. Me diga aí, falam que é praticamente impossível traduzir uma ISO de Dreamcast, será que é impossível mesmo? Tem pelo menos um tesouro lá que merece uma tradução.

    ResponderExcluir
    Respostas
    1. Pow! Só tentando pra saber... E qual tesouro seria esse?

      Excluir