973e63c669
This works around an issue with invalid characters in the teleport destination table, since the flag/coordinate data is mixed in with the text |
||
---|---|---|
ScriptTool | ||
SymbolTableBuilder | ||
compiled | ||
maps | ||
notes | ||
screenshots | ||
working | ||
.gitattributes | ||
.gitignore | ||
CONTRIBUTORS.txt | ||
LICENSE | ||
README.md | ||
TODO.md | ||
insert.bat | ||
m2-bits-to-nybbles.bin | ||
m2-coord-table.bin | ||
m2-customcodes.asm | ||
m2-enemy-attributes.bin | ||
m2-font-battle.bin | ||
m2-font-big.bin | ||
m2-font-main.bin | ||
m2-font-relocate.bin | ||
m2-font-saturn.bin | ||
m2-font-tiny.bin | ||
m2-formatting.asm | ||
m2-goods.asm | ||
m2-hack.asm | ||
m2-header-bg.bin | ||
m2-mainfont1-empty.bin | ||
m2-mainfont2-empty.bin | ||
m2-mainfont3-empty.bin | ||
m2-nybbles-to-bits.bin | ||
m2-shifted-cursor.bin | ||
m2-status-initial.asm | ||
m2-status-switch.asm | ||
m2-vwf-entries.asm | ||
m2-vwf.asm | ||
m2-widths-battle.bin | ||
m2-widths-big.bin | ||
m2-widths-main.bin | ||
m2-widths-saturn.bin | ||
m2-widths-tiny.bin | ||
syscalls.asm |
README.md
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!
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:
- One-time setup
- 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 hashF27336B9C96CA2D06C34E07A61A78538DEAC32B3
. - Only if you need to decompile stuff from EarthBound: repeat the above step for the EarthBound SNES ROM, named
eb.smc
, SHA-1 hashD67A8EF36EF616BC39306AA1B486E1BD3047815A
. You can probably get away with any EB ROM that's unheadered. - Build
ScriptTool
: openScriptTool/ScriptTool.sln
in Visual Studio and build the solution in Debug mode. This is a tool that compiles all of the JSON files fromworking/
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' before building. - Repeat the above step for
SymbolTableBuilder
andcompiled/Amalgamator
. - Grab the latest release of armips and copy
armips.exe
to the repository root. - 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).
- Find a MOTHER 1+2 GBA ROM, name it
- Building the ROM
- Run
insert.bat
. This will generatem12.gba
in the repository root, which has everything compiled and inserted.
- Run