leomontenegro6 / megaman-zx-traducao-ptbr

[NDS] Megaman ZX - Tradução PT-BR
MIT License
8 stars 6 forks source link

Reaver legendas dos vídeos das versões ocidentais do jogo #22

Closed leomontenegro6 closed 6 years ago

leomontenegro6 commented 7 years ago

A versão japonesa do jogo conta com alguns vídeos com áudios em japonês, porém sem legendas. Já nas versões americana e européia, os vídeos foram legendados durante o processo de localização. Na americana, as legendas estão embutidas no vídeo (hardsub), enquanto que na européia, estão definidas como legendas externas que podem ser trocadas dependendo do idioma selecionado (softsub).

Um dos contras do processo de undub desta tradução, iniciado em 07/01/2016, é o seguinte: como nós movemos a tradução da rom americana para a européia, perdemos as legendas dos vídeos no processo. E isso é algo que eu gostaria de tentar reaver, se possível.

A imagem abaixo ilustra a legenda de um dos vídeos, na versão americana:

legenda

leomontenegro6 commented 7 years ago

Atualizações de 01/11/2016.

Para tentarmos reaver as legendas, inicialmente isso se provou impossível na versão americana, graças ao fato das legendas estarem embutidas, e de que até o momento não existe nenhum encoder / decoder de vídeos ActImage de jogos de DS.

No entanto, ao analisarmos a rom européia ao invés da americana, descobrimos que as legendas estão externas aos vídeos, situadas nos arquivos mmXX_YY.bin, onde XX = número do vídeo, e YY = idioma. Cada um dos 5 idiomas presentes nessa versão conta com legendas individuais.

Além disso, também descobrimos que as legendas são gráficos comprimidos em LZSS 0x10, e que é possível enxergá-los a partir de programas como CrystalTile ou LaZyNDS. Desse modo, se estivéssemos traduzindo em cima da versão européia, teoricamente seríamos capazes de editar as legendas dos vídeos sem mais problemas. Mas como estamos usando a rom japonesa, nada feito.

Considerando o que foi dito, provavelmente a solução menos trabalhosa seria a seguinte: da mesma forma que foram feitas alterações no arm9.bin para poder comportar os scripts maiores da versão americana na rom japonesa, extrairmos do arm9.bin europeu as rotinas que incluem os arquivos da legenda na rom, bem como as reproduzem na tela junto com os vídeos. E isso certamente requererá alterações em ASM.

leomontenegro6 commented 7 years ago

Atualizações de 11/11/2016

Após a análise anterior, e muito esforço e suor, DiegoHH conseguiu fazer as alterações no arm9.bin para comportar as legendas. Não apenas isso, como ele escreveu uma tool em python capaz de extrair e reinserir as legendas automaticamente, que não apenas recomprime os gráficos em LZSS 0x10, como também reescreve os tilemaps de cada bloco de legenda.

Graças a estas novas tools, conseguimos chegar a este resultado:

gpebba2

leomontenegro6 commented 7 years ago

Atualizações de 30/03/2017

Depois de um tempo ocupado, consegui um tempinho para traduzir as legendas dos gráficos do Mega Man ZX, dumpados pela tool do DiegoHH. Segue as imagens editadas no GIMP:

legenda5 legenda9 legenda11

Os arquivos já foram commitados ao repositório e estão na pasta asm/subtitles/out-ptbr.

leomontenegro6 commented 7 years ago

Atualizações de 28/05/2017

Um tempo depois, DiegoHH pegou os arquivos editados por mim, e baseado neles, gerou um arm9.bin atualizado, com as seguintes mudanças:

Os arquivos já foram commitados ao repositório e estão na pasta asm/subtitles/. Para utilizá-los, siga as instruções:

  1. Desmonte a rom japonesa com ndstool;
  2. Troque o arm9.bin original pelo da pasta acima;
  3. Insira, dentro da pasta data, os arquivos de legendas. As legendas em PT-BR estão na pasta asm/subtitles/ptbr, deste repositório;
  4. Remonte a rom pelo ndstool e rode-a num emulador para ver se está funcionando.

No entanto, ainda é cedo para dar por certo o pleno funcionamento dessas novidades. É recomendado um teste ingame rigoroso, para averiguar que tudo está funcionando corretamente.

geoku commented 7 years ago

I've been testing the insertion of European subtitles into the Japanese ROM.

I placed the mmXX_usa.bin (renamed mmXX_br.bin) files from the European ROM into the Japanese ROM with arm9.bin modified for this exact purpose.

When testing the ingame videos, here's what I found out:

What I did next was swapping the filenames of the last two subtitles files like this: mm05_br.bin -> mm06_br.bin mm06_br.bin -> mm05_br.bin

Doing this fixed the first of the final battle videos. It began showing the correct subtitles. But, although I expected the second (and the last) video to be also fixed by this, it still crashes the game when it starts playing all the same.

leomontenegro6 commented 7 years ago

Confirmed it's affecting multiple users. I've done some tests and it's crashing on the last video.

Here's some images:

First video during final battle: 1

Second video during final battle (the one that crashes): 2 3

willkof2 commented 7 years ago

Olá! Parabéns pelo projeto! Eu não sei quase nada de romhacking, mas mesmo assim gostaria de tentar mudar a "skin" do model "A" do megaman ZXA pela do Model "X" do megaman ZX. Isso é possivel? Pois ao extrair a rom encontro vários arquivos .bin e não sei como descompacta-los. Desculpe se estou sendo inconveniente jogando minha duvida em um local que trata de outro assunto, mas não encontrei uma forma de extrair os arquivos.bin. Grato.

leomontenegro6 commented 7 years ago

@willkof2 Chapa, tua pergunta não tem nada a ver com a discussão dessa issue atual (referente às legendas dos vídeos do jogo). Favor não fazer topic hijacking. Crie outras issue própria para a sua pergunta, para evitar bagunça nas discussões.

geoku commented 7 years ago

After I finally gained access to the subtitle unpacker/repacker tool, I discovered that it repacks subtitles partially incorrectly. While unpack script does its job fine, the repack one puts garbage in some of the files. If you unpack again what you just have repacked using the tool, and check the files with Tile Molester, you will find garbage in some of them (but some will be fine, so it mishandles only some subtitles for some reason): image

The garbage shown above looks exactly like the one from previous post by @leomontenegro6. Here's his image for reference: image

Therefore, this is not a case of a game displaying graphics incorrectly due to modifications in arm9.bin. This garbage is actually in the resource files, and it is being displayed correctly. It's a bug in the repacker script.

Also, this issue seems to be completely unrelated to the crash on the final video, which happens even when untouched and unedited European subtitle files are inserted in the rom.

So the conclusion is like this:

geoku commented 6 years ago

After the fix in the repacker script, it seems that the issue is finally gone. I tested it in the first two videos in Mega Man ZXA, and the corruption isn't present anymore. Thanks for the fix!

hansenhahn commented 6 years ago

Apenas deixando registrado que haviam 2 bugs na parte da legenda: na tool e no assembly.

Subtitles_PtrTable:
.dw Subtitle_00 , Subtitle_01 , Subtitle_02 , Subtitle_03 , Subtitle_05 , Subtitle_06 

Contudo, apesar de não haver legenda para o quarto vídeo, a tabela de ponteiros deve esperar pelo ponteiro do quarto vídeo. Com a correção, a tabela ficou da seguinte forma:

Subtitles_PtrTable:
.dw Subtitle_00 , Subtitle_01 , Subtitle_02 , Subtitle_03 , NULL , Subtitle_05 , Subtitle_06 

Com isso, todos os problemas relacionados a legenda foram resolvidos.

leomontenegro6 commented 6 years ago

Eu e o Geo confirmamos que o último arm9.bin enviado pelo DiegoHH de fato resolve todos os problemas de travamento, tanto na minha tradução como no undub e tradução para russo que Geo está fazendo.

Assim sendo, estou fechando essa issue e dando por resolvida a questão.