Skip to content

jeffman/Mother2GbaTranslation

Repository files navigation

Branch Status
master Build
master Test

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!

Screenshots

Building

Building with Docker

Docker allows easily building without having to install the dependencies.

  1. Put a MOTHER 1+2 ROM in bin/m12fresh.gba
  2. While in the root of the project, run: docker run --rm -it -v ${PWD}:/home/m2gba/src lorenzooone/m2gba_translation:builder

The output will be inside the newly created out folder.

Manually Building

Dependencies

  1. One-time setup
    1. Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's bin folder is in your PATH.
    2. Create a bin folder in the root of the repo.
    3. Copy MOTHER 1+2 ROM to bin/m12fresh.gba.
    4. Copy EarthBound ROM to bin/eb.smc.
    5. Run build-tools.ps1.
      • Windows: .\build-tools.ps1 in a PowerShell prompt
      • Linux and MacOS: pwsh build-tools.ps1
    6. Copy/build armips to bin.
      • Windows: grab the latest release here and copy the executable to bin/armips.exe.
      • Linux: follow the README to build armips and copy the executable to bin/armips.
      • MacOS: grab the latest release here and copy the executable to bin/armips.
  2. Building the ROM
    1. Run build.ps1.
    2. The default compiled ROM is copied to bin/m12.gba.
  3. (Optional) Build the GUI script tool:
    1. dotnet build tools/ScriptTool (don't set the output directory)
    2. dotnet build tools/ScriptToolGui -o bin/ScriptToolGui
    3. Run with dotnet bin/ScriptToolGui/ScriptToolGui.dll (or just run the EXE file directly).

Testing

Testing with Docker

Docker allows easily testing without having to install the dependencies.

  1. Put a MOTHER 1+2 ROM in bin/m12fresh.gba
  2. While in the root of the project, run: docker run --rm -it -v ${PWD}:/home/m2gba/src lorenzooone/m2gba_translation:tester

Manually Testing

Dependencies

  1. One-time setup
    1. Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's bin folder is in your PATH.
    2. Create a bin folder in the root of the repo.
    3. Copy MOTHER 1+2 ROM to bin/m12fresh.gba.
    4. Copy EarthBound ROM to bin/eb.smc.
    5. Run build-tools.ps1.
      • Windows: .\build-tools.ps1 in a PowerShell prompt
      • Linux and MacOS: pwsh build-tools.ps1
    6. Copy/build armips to bin.
      • Windows: grab the latest release here and copy the executable to bin/armips.exe.
      • Linux: follow the README to build armips and copy the executable to bin/armips.
      • MacOS: grab the latest release here and copy the executable to bin/armips.
    7. Copy/build mgba-sdl to bin.
      • You can also use mgba-QT (which is normally named mgba), but you will need to change the name of the executed program in test.ps1.
  2. Running the tests
    1. Run test.ps1.
    2. The default compiled ROM is copied to bin/m12test.gba.
    3. The tests' log will be in bin/test.log.
    4. The output will also be visible in the console.