terça-feira, 19 de agosto de 2008

Ondinha VS The Legend of Kyrandia: Book Two: Hands of Fate

Como informei na postagem passada, a pedido do SCUMMBR, estou criando uma ferramenta para a tradução do jogo citado no título, o Kyrandia 2, o trabalho é quase uma reversão do Engine utilizado no jogo, em três dias, reverti as partes principais, pelo menos para uma tradução, no caso, consegui quebrar os arquivos *.PAK e os arquivos *.DL*.

Os arquivos do tipo *.PAK são os principais, são packages, ou seja, pacotes que trazem dentro de si, outros arquivos, estão no seguinte formato:
Formato do arquivo *.PAK: (Kyrandia 2 *.PAK File format specification)
  1. uint32 fileOffset
  2. string filename
  3. uint8 endCode(sempre 0x00)
O último fileOffset é igual ao tamanho do arquivo inteiro, acompanhado de mais uma pequena sequência de 0x00 que não me lembro a quantidade exata.

Após criar as rotinas que desempacotavam e reempacotavam os arquivos *.PAK, a diversão apenas começava, meu caro, era hora de bagunçar o resto da festa! Parti para cima dos arquivos *.DL*, arquivos de Diálogo, o script principal do jogo, no caso da versão em CD do Kyrandia 2, os arquivos *.DL* vem em três versões:
  1. DLE: DiaLogues English
  2. DLF: DiaLogues French
  3. DLG: DiaLogues Germany
No momento, não recordo de cabeça a especificação dos arquivos *.DL*, mas pelas imagens, não há dúvidas que eles foram ownados, não é? Pois, para que essas imagens, que vocês vêem agora no blog, sejam possíveis, é necessário reestruturar os arquivos *.DL* corretamente após a tradução, para isso foi criado uma ferramenta capaz de extrair o texto desses arquivos em um arquivo de texto e depois reinserí-los corretamente.


No momento, já decifrei todo o formato de arquivo *.EMC, que também possui textos, relacionados, pelo que pude entender, a animações e cenários, mas daí a criar a rotina, dá-lhe preguiça... Se alguém aí se acha foda o suficiente para tentar... Passo a especificação e você cria o módulo em Python, pode ser? Hauhahuahua


Por fim, a farra ainda não acabou... O jogo não tem suporte para charset Latin-1 (já deu pra notar nas fotos não é? uhauhahuahua), é preciso reverter a engenharia dos arquivos do tipo *.FNT, eu também já sei um pouco da especificação dos mesmos, a idéia é convertê-lo para BMP, adicionar o suporte e reencodá-lo em um novo *.FNT, é trabalho não é? E aí? Vamos construir logo uma máquina virtual do Engine Kyra? LoL!!!

2 comentários:

Unknown disse...

Parabéns Ondinha, o tempo passa e você continua mantendo o belo exemplo de Makako Romhacker, fascinado pelos desafios em poder ter traduções de qualidade!

hansbonini disse...

Odin POWA's...
Muito bom o trabalho de reverse engineering ondinha...

Pelo que me lembre, muitos jogos da mesma época trabalhavam com esses arquivos PAK, algo que se tornou padrão (não sei se ainda é usado). QUAKE tinha!

Manda bala!!!
Ondinha Kyra`s Engine xD!

Ai aproveita seu tempo ocioso e implementa uma VWF (/me die)