6.5 KiB
Branch | Status |
---|---|
master |
|
master |
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:
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.
- Put a MOTHER 1+2 ROM in
bin/m12fresh.gba
- 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
- .NET Core 2.1 or later
- PowerShell Core 6.0 or later
- GNU Arm Embedded Toolchain
- armips
- Unmodified MOTHER 1+2 ROM (SHA-1
F27336B9...
) - Unmodified, unheadered EarthBound ROM (SHA-1
D67A8EF3...
) - (Optional) For building the GUI script tool: .NET Core 3.0 or later
- One-time setup
- Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's
bin
folder is in yourPATH
. - Create a
bin
folder in the root of the repo. - Copy MOTHER 1+2 ROM to
bin/m12fresh.gba
. - Copy EarthBound ROM to
bin/eb.smc
. - Run
build-tools.ps1
.- Windows:
.\build-tools.ps1
in a PowerShell prompt - Linux and MacOS:
pwsh build-tools.ps1
- Windows:
- Copy/build
armips
tobin
.
- Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's
- Building the ROM
- Run
build.ps1
. - The default compiled ROM is copied to
bin/m12.gba
.
- Run
- (Optional) Build the GUI script tool:
dotnet build tools/ScriptTool
(don't set the output directory)dotnet build tools/ScriptToolGui -o bin/ScriptToolGui
- 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.
- Put a MOTHER 1+2 ROM in
bin/m12fresh.gba
- While in the root of the project, run:
docker run --rm -it -v ${PWD}:/home/m2gba/src lorenzooone/m2gba_translation:tester
Manually Testing
Dependencies
- One-time setup
- Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's
bin
folder is in yourPATH
. - Create a
bin
folder in the root of the repo. - Copy MOTHER 1+2 ROM to
bin/m12fresh.gba
. - Copy EarthBound ROM to
bin/eb.smc
. - Run
build-tools.ps1
.- Windows:
.\build-tools.ps1
in a PowerShell prompt - Linux and MacOS:
pwsh build-tools.ps1
- Windows:
- Copy/build
armips
tobin
. - Copy/build
mgba-sdl
tobin
.- 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
.
- You can also use mgba-QT (which is normally named mgba), but you will need to change the name of the executed program in
- Install .NET Core 2.1, PowerShell Core, and GNU Arm Embedded Toolchain. Make sure the Arm toolchain's
- Running the tests
- Run
test.ps1
. - The default compiled ROM is copied to
bin/m12test.gba
. - The tests' log will be in
bin/test.log
. - The output will also be visible in the console.
- Run