Como criar tabela de 16 bits?

Iniciado por gansopro, Junho 17, 2018, 23:29:29 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

gansopro

Na tradução do Harvest Moon de Snes o tradutor (o Hexagon) fala no documento "SobreHarvestBR" que este jogo possui tabela de caracteres de 16 bits. Então eu resolvi traduzir o Harvest Moon A Wonderful Life de PS2 e ele provavelmente também usa tabela de 16 bits (ou então está comprimido, o que eu duvido muito), já que não é possível encontrar na busca relativa a palavra "weather" que aparece na primeira fala do jogo.

Também creio que a dificuldade não seja DTes e MTes e nem ponteiros porque fiz a busca por essa palavra no editor hexadecimal e também não teve resultado. Então tenho forte certeza de que este jogo tenha tabela de caracteres de 16 bits porque se foi assim no primeiro título por que não seria nos demais?

Não entendi nada de criação de tabelas de 16 bits, li um tutorial do "Bocafig Translations" e não entendi bulhufas. Quais os programas devo usar para criar uma tabela de 16 bits? Como vou fazer para procurar pelos valores no editor hexadecimal se eles vão apenas de 00 a FF e não de 0000 a FFFF? E como vou criar uma tabela no Table Manager pelo mesmo motivo do editor hexadecimal?

Peço que por favor, me ajudem. Se não for pedir demais, peço que envie um tutorial pra mim no meu Email que é "gansoprofessional@outlook.com".

Desde já agradeço.

Anime_World

#1
Hexagon não é um autor e sim um antigo grupo de tradução, bem como Bocafig.
São tutoriais antigos e que não lhe darão uma base necessária.

Recomendo que leia: O Fascinante Mundo do ROMHacking
Pode ser encontrado neste link:
http://romhackers.org/modules/PDdownloads1/singlefile.php?cid=49&lid=17

Quanto ao restante recomendo que comece por um jogo de um sistema mais simples do que o Playstation 2. Pra entender como funciona.

Boa sorte e abraços.
nonononono

Lobim

"Quais os programas devo usar para criar uma tabela de 16 bits?" -> Eu uso os mesmos para tabelas 8 e 16 bits, no caso, o Table Manager (última edição, que pode ser encontrada no Po.B.R.E.) e o bloco de notas.

"Como vou fazer para procurar pelos valores no editor hexadecimal se eles vão apenas de 00 a FF e não de 0000 a FFFF?" -> Para descobrir os valores, você usa a busca relativa do mesmo jeito. Em geral (pode haver variações), jogos que usam tabelas 16 bits tem o primeiro par de bytes "fixo" entre os caracteres do alfabeto, ou, ao menos, entre alguns deles. Por exemplo:

0046=a
0047=b
0048=c
0049=d
004a=e
004b=f
004c=g
004d=h
004e=i
004f=j


Considerando o exemplo acima, a palavra "jibe" aparecia com os seguintes bytes hexadecimais:

$00 $4f $00 $4e $00 $47 $00 $4a

Então não tem segredo. A diferença é que no caso os caracteres das tabelas 16 bits representam dois pares de hexadecimais ao invés de um só (8 bits).

Vale frisar que eu mesmo já encontrei casos que o primeiro par hexadecimal não era "fixo" (lembro de casos que variava em caracteres especiais) ou que o par "fixo" era o segundo. Então isso não é regra! Cada caso é um caso.

Ao efetuar a busca em editores hexadecimais, caso desconfie ser o caso de tabelas 16 bits, recomendo que utilize um caractere fixo entre as letras (eu costumo usar o *). No caso de "jibe" que mencionei anteriormente, eu pesquisaria "j*i*b*e" (embora preferisse, no caso de um jogo, procurar por uma palavra com mais caracteres.

Como tutorial, recomendo a leitura do Manual de utilização do Monkey-Moore .
Itinerante

gansopro

Para tentar entender segui um tutorial chamado "Tutorial de tabelas de 16 bits". Nele fala para pegar de preferência uma rom RPG que tenha como dar um nome ao personagem. Escolhi Harvest Moon, então fiz o que fala no tutorial, dei para o personagem o nome luca, salvei, peguei o arquivo .srm, renomeei para luca e guardei em uma pasta. Depois o tutorial fala para fazer a mesma coisa novamente, só que desta vez dar para o personagem o nome escrito ao contrário, no meu caso acul e depois guardei na mesma pasta do primeiro.

Então depois disso deve-se comparar os dois arquivos .srm com um editor hexadecimal, escolhi o Windhex e achei a diferença correta (4 bytes o tamanho da diferença). Então, o valor hexa do "a" no editor estava "00", do c "02", do "u" "14" e do l "0B". Então abri o Table Manager e criei a tabela só de letras minúsculas de acordo com esses valores e procurei a primeira primeira palavra que aparece no jogo, a palavra "Hello" (sem o "H", já que criei a tabela só de letras minúsculas) e não obteve resultado.

A minha pergunta é: o que eu fiz errado? Como assim os caracteres têm 2 bytes? Então no caso da "a", ao invés invés de "00" seria o quê? O que eu deveria ter colocado no Table Manager que eu não coloquei?

Lobim

Citação de: gansopro online Junho 19, 2018, 18:46:43 PM
Para tentar entender segui um tutorial chamado "Tutorial de tabelas de 16 bits". Nele fala para pegar de preferência uma rom RPG que tenha como dar um nome ao personagem. Escolhi Harvest Moon, então fiz o que fala no tutorial, dei para o personagem o nome luca, salvei, peguei o arquivo .srm, renomeei para luca e guardei em uma pasta. Depois o tutorial fala para fazer a mesma coisa novamente, só que desta vez dar para o personagem o nome escrito ao contrário, no meu caso acul e depois guardei na mesma pasta do primeiro.

Então depois disso deve-se comparar os dois arquivos .srm com um editor hexadecimal, escolhi o Windhex e achei a diferença correta (4 bytes o tamanho da diferença). Então, o valor hexa do "a" no editor estava "00", do c "02", do "u" "14" e do l "0B". Então abri o Table Manager e criei a tabela só de letras minúsculas de acordo com esses valores e procurei a primeira primeira palavra que aparece no jogo, a palavra "Hello" (sem o "H", já que criei a tabela só de letras minúsculas) e não obteve resultado.

Particularmente, nunca utilizei um arquivo que não seja o próprio jogo (a ROM) para identificar os caracteres. Não sei se está errado, porque não entendo sobre processamento dos dados. Eu só costumo montar tabelas com bytes que encontro fazendo busca relativa. Se os textos não estiverem comprimidos e seguirem um formato habitual de exibição, em algumas buscas relativas devo encontrar com facilidade os valores (tentando buscas em 8 ou 16 bits).

Citação de: gansopro online Junho 19, 2018, 18:46:43 PM
A minha pergunta é: o que eu fiz errado? Como assim os caracteres têm 2 bytes? Então no caso da "a", ao invés invés de "00" seria o quê? O que eu deveria ter colocado no Table Manager que eu não coloquei?

Recomendo novamente a leitura do tutorial que indiquei (que é justamente o manual de utilização de uma das principais ferramentas para fazer buscas relativas: Monkey-moore). Eu tentaria encontrar os valores através da função de busca relativa.

"Então no caso da "a", ao invés invés de "00" seria o quê?" -> Poderia ser "00 62" por exemplo.

"O que eu deveria ter colocado no Table Manager que eu não coloquei?" -> Se você pretende fazer tabelas 16 bits, além de selecionar a opção correspondente no programa no canto inferior esquerdo, é necessário colocar HEX "fixo" (que mencionei no post anterior) nas configurações localizadas no canto superior direito. Caso o byte fixo seja o primeiro, é só colocar o valor; caso seja o último, é necessário selecionar a opção "LSB".

Caso não esteja achando os valores por busca relativa simples e nem usando coringas entre as letras, eu recomendaria que ao menos para tentar entender o que é de fato uma tabela 16 bits (que parece que você não entendeu muito bem) você tentasse mexer em outros jogos.
Itinerante

Anime_World

#5
Valores de 0... até F = Valores Hexadecimais (Base Hexadecimal).
1 byte possui valores hexadecimais de $00 a $FF (0, 255) para representação. E é formado por 8 bits.

Os valores que você vê no editor hexadecimal são os bytes da ROM ou ISO. Portanto:

00 = 1 byte
00 00 = 2 bytes
00 00 00 = 3 bytes
00 00 00 00 = 4 bytes


Caracteres representados por 16-bits são caracteres representados por 2 bytes ao invés de 1.

Uma tabela 8 bits ou 1 byte:

40 = <space>
41 = A
42 = B
43 = C


uma Tabela de 16-bits ou 2 bytes:

FF40 = <space>
FF41 = A
FF42 = B
FF43 = C


Recomendo que leia o material que indiquei, e o que o Lobim indicou.
Não adianta querer se aventurar em outras coisas mais adiante ou pegar atalhos.
Você vai ter que aprender tudo! E pelo visto está precisando muito, sua base sobre o conteúdo básico está bem enfraquecida.

A explicação vale pro senhor Lobim também! Não ecziste "2 pares de hexadecimais", são 2 pares de bytes. A representação desses 2 pares de bytes pode ser hexadecimal, decimal, octal ou binária. Tanto faz.



nonononono

gansopro

Lobim, não vejo essas opções que você falou no canto superior direito do Table Manager. Vejo apenas "Converte para OEM (DOS)" e "Converte para ANSI (WIN)".

Lobim

Citação de: Anime_World online Junho 20, 2018, 08:52:52 AM
A explicação vale pro senhor Lobim também! Não ecziste "2 pares de hexadecimais", são 2 pares de bytes. A representação desses 2 pares de bytes pode ser hexadecimal, decimal, octal ou binária. Tanto faz.

De fato. Achei que colocando dessa forma ficaria mais didático (considerando apenas a representação hexadecimal para exemplificar), mas conceitualmente está errado.

Citação de: gansopro online Junho 20, 2018, 17:23:02 PM
Lobim, não vejo essas opções que você falou no canto superior direito do Table Manager. Vejo apenas "Converte para OEM (DOS)" e "Converte para ANSI (WIN)".

Então provavelmente você não está utilizando a última versão do Programa. Recomendo que baixe a versão hospedada no site do Po.B.R.E.
Itinerante

gansopro

Estou usando a versão lançada em 17/09/1999. Dê-me então o link da nova versão.

Anime_World

Citação de: gansopro online Junho 20, 2018, 23:15:25 PM
Estou usando a versão lançada em 17/09/1999. Dê-me então o link da nova versão.

Pesquise. :ahem:
nonononono