Mother2GbaTranslation/README.md

4.3 KiB

MOTHER 2 Translation for the GBA

This is a work-in-progress translation patch for MOTHER 2 on the GBA.

Discord

Our Discord server is pretty active: https://discord.gg/ADXS5Ub

Hasn't it been done?

There are at least two other projects that translate the MOTHER 2 side of the game:

  • Mato's menu text translation: here
  • TheZunar123's full translation (in progress): here and here

Why start another project?

Neither of the above projects use a true variable-width-font (VWF) to render text. A VWF would look much better and would make the game more enjoyable.

Adding a VWF is hard, however. Mato explains here why it's generally a very difficult task to fully translate the game, let alone to insert a VWF.

A long time ago (before the release of the MOTHER 3 Fan Translation), I started working on a proof-of-concept VWF for MOTHER 2 on the GBA. It worked, but it quickly became apparent that the amount of hacking required would be huge; window-rendering functions contain a ton of repeated code and some of it is downright non-sensical.

A few years after that, I tried it again from scratch with the intent of having a more organized codebase. It went much better, but I was soon limited by not having any translated dialogue, rather than not having a VWF; I couldn't test much of my VWF code without any English text inserted into the ROM.

Now what?

This project aims to both complete the VWF codebase and to provide a tool for translating the game's dialogue. My new intent is to bring the hack to a state where I can just sit down and translate text efficiently in my spare time with a graphical tool. Not only that, but having such a tool means that other people can contribute!

Status

The core of the VWF is complete. But it needs to be implemented in dozens of different places in the game's code. I've finished many of them, but there are probably still many more. Pretty much all of the game's text still needs to be translated too.

Some screenshots:

Dependencies

If you want to just use the graphical tool to help with the translation, you just need .NET 4.5.1. If you want to actually compile the hack code and test it out, you will need armips. The game also crashes horribly 99% of the time in its current state, so there's no point in trying it.

Compiling

That said, if you do want to try compiling this thing:

  1. One-time setup
    1. Find a MOTHER 1+2 GBA ROM, name it m12fresh.gba, and copy it to the root of the repository. Mine has a SHA-1 hash F27336B9C96CA2D06C34E07A61A78538DEAC32B3.
    2. Only if you need to decompile stuff from EarthBound: repeat the above step for the EarthBound SNES ROM, named eb.smc, SHA-1 hash D67A8EF36EF616BC39306AA1B486E1BD3047815A. You can probably get away with any EB ROM that's unheadered.
    3. Build ScriptTool: open ScriptTool/ScriptTool.sln in Visual Studio and build the solution in Debug mode. This is a tool that compiles all of the JSON files from working/ into ASM and BIN files. There's also a GUI tool to help with editing the main script file. You might have to right-click the solution in Visual Studio and 'Restore NuGet Packages'.
      • Important: re-build ScriptTool if you change between master and compiled-vwf!
    4. Repeat the above step for SymbolTableBuilder.
    5. If you're on the compiled-vwf branch:
      1. Build compiled/Amalgamator/Amalgamator.sln.
      2. Grab the latest release of armips and copy armips.exe to the repository root.
      3. Download and install GNU Arm Embedded Toolchain (anything newer than 6-2017-q1-update should work). Make sure it ends up in your PATH environment variable (the installer should take care of this).
  2. Building the ROM
    1. Run insert.bat. This will generate m12.gba in the repository root, which has everything compiled and inserted.