April 30th, 2011 | EarthBound, Hacking, MOTHER 1+2

The question’s come up a lot since I released my MOTHER 1+2 translation the other day, so I should try to explain why it would be a lot of work to fully translate the MOTHER 2 side of the game too.

EarthBound’s Text System

What I hear a lot is, “Can’t you just copy and paste EarthBound’s script into the game?” For many other games, it WOULD be that easy – in fact, RPGOne did that with the MOTHER 1 side of MOTHER 1+2 shortly after the game was released in 2003. It was pretty much a copy-paste job from the EarthBound Zero script. It was possible with MOTHER 1 because the game’s text format is extremely simple.

EarthBound’s text format, on the other hand, is the absolute, 100% opposite. It’s a huge mess. It’s not even appropriate to call it a “text format” – everything in EarthBound is pretty much one gigantic scripting language. I don’t know how to explain that well to non-programmers, so here’s a random snippet from Threed, with some of the control codes parsed for your understanding:

[GOSUB C69082][FLAGON 00B][1F 41 05][1F EB 03 06][1F 15 03 00 0E 01 01][1F 61][1F E7 03 00][1F F3 03 00 03][DELAY 3C][1F F4 03][LINE][OPENWIN 01]@Ah![DELAY 14] Here’s the problem, and it’s not too tough to fix.[PAUSE][LINE]@Hang on for a second or two…[PAUSE][CLOSEALLWIN][DELAY 1E][1F EA 03 00][1F 61][1F 00 00 B3][1F F1 E2 01 10 01][1F 61][1F E6 E2 01][1F 07 02][DELAY 3C][1F 03][OPENWIN 01]@There![PAUSE][LINE]@That should do it![PAUSE][LINE]@Now, if [GOSUB C91FBA] board,[DELAY 0F] the Sky Runner will take [GOSUB C91FDB][PAUSE][LINE]@back to Winters.[PAUSE][LINE]@With Dr. Andonuts’ help,[DELAY 0F] I can modify the machine to fly to Summers.[PAUSE][LINE]@…If Dad, I mean Dr. Andonuts,[PAUSE][LINE]@is not available, I’ll have to figure it out by myself.[PAUSE][LINE]@Anyway, let’s go back to the lab in Winters.[PAUSE][LINE]@…That’s it…[DELAY 14][LINE] Go, machine,[DELAY 0F] go![PAUSE][CLOSEALLWIN][1F 15 6A 00 0F 01 01][DELAY 01][1F EF 6A 00][1F E8 FF][1F 61][1F EB FF 06][FLAGON 28F][GOSUB C7DD7D][1F ED][1F E5 FF][1F E9 E2 01][1F 61][DELAY 0F][1F 1E E0 01 06][DELAY 5A][1F 15 D1 00 A2 00 FF][1F 15 E6 00 A5 00 FF][1F 21 C2][1F EF E6 00][1F E8 FF][DELAY 01][1F 61][1F ED][1F 15 D1 00 96 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 9E 00 FF][1F 15 E6 00 A0 00 FF][1F 21 C0][1F EF E6 00][1F 61][1F ED][1F 15 D1 00 97 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 9A 00 FF][1F 15 E6 00 9C 00 FF][1F 21 BE][1F EF E6 00][1F 61][1F ED][1F 15 D1 00 98 00 FF][1F 21 BB][1F EF D1 00][1F 61][1F ED][1F 15 D1 00 A6 00 FF][1F 21 BA][1F EF D1 00][1F 61][1F ED][FLAGON 26D][1F 21 DA][1F 17 6F 02 A7 00 01][DELAY 64][1F 17 6D 02 A8 00 01][1F 61][FLAGOFF 28F][GOSUB C7DD7D][1F 15 6A 00 A9 00 01][DELAY 01][1F EF 6A 00][1F EC FF 01][1F 61][1F ED][1F E5 FF][1F F1 69 02 8D 00][1F 61][1F E6 67 02][1F E6 69 02][1F E6 6A 02][GOSUB C6CB97][1F F1 6A 02 8E 00][1F 61][1F E6 6A 02][GOSUB C6CC31][1F F1 6A 02 90 00][1F 61][1F F1 69 02 8F 00][1F 61][19 26 06][FLAGOFF 26D][FLAGOFF 2EC][FLAGOFF 030][FLAGOFF 305][FLAGON 276][FLAGOFF 00B][1F 41 06][1F E8 FF][END]

Keep in mind that’s just ONE line in the game.

Everything in the game from text, to events, to cut scenes, to music, to sound effects, to windows, to user input – it’s all just one giant scripting language, and even after all these years we don’t have it fully mapped out. Here’s an older file that lists some of the control codes in the game: control code lexicon. This is mostly why there aren’t many translations of EarthBound into other languages, some 16 years after the game’s release – it’s a huge mess. Seriously, try to edit the game’s text using PK Hack sometime to see for yourself.

The scripting language is advanced – it does all the normal stuff you might expect from a game’s text system, but it also implements its own stack, various registers, a huge number of flags/memory addresses, conditional branching, can handle subroutines many levels deep, it’s very impressive. Fellow computer science nerds are probably thinking, “Whoa, almost sounds like a CPU!” In fact, using a simple hack Rufus made a while back to allow the scripting system to access any memory address, it would theoretically be possible to write an emulator just using EarthBound’s text system. If you were crazy enough, you could get EarthBound to emulate the EarthBound Zero ROM, or even EarthBound itself! It’d be slow as hell, but still

Anyway, because the game’s text uses pointers all over the place – and because we don’t have EarthBound’s script codes fully mapped out – a simple copy-and-paste job into the MOTHER 1+2 ROM is not possible.

Still, even if Giygas himself came down and somehow solved those problems… guess what? MOTHER 2’s text and script codes are in a completely different format! (head explodes)

Now, I’m not saying it’s impossible, in fact a few years back I had started to write a utility that dumped EarthBound’s text to the best of my ability and tried to turn the nonsense control codes into something sensible. I did this for my old EarthBound Zero remake hack and later on to make a utility for people to translate EarthBound into other languages. I got it to a pretty advanced state, yet there were still many issues, so I dropped it.

Hacking MOTHER 2

I think if I were to take a bunch of time off and hole myself up in a room with buckets of coffee, I could probably get EarthBound’s text converted into MOTHER 1+2’s text format after a while. That’s all it takes to translate the game, right?

Nope! Think back to the MOTHER 3 fan translation – remember how much work it was to get the game to look and act properly, even after we had the game’s script in English and inserted into the game? It would be pretty much the same here. It’d be a year-long (probably longer, actually) nightmare. I’m not even necessarily talking about the variable-width font specifically – just the sheer amount of hacking work it overall would take would be immense.

I can see how it’d be nice to have the MOTHER 2 side fully translated – I’d love to have all three GBA games in the series fan-translated, but the MOTHER 2 GBA port isn’t that great to begin with – the sound effects and music take a serious hit, a number of glitches and bugs were added, while some beloved things like the Rock Candy trick were taken out (if I remember right).

Also, I should briefly mention that not all the text in the game is in the same format. The file select screen itself uses three different text formats, entirely different from the main text format. One of them isn’t even really a “format” – it’s actually just tilemap data bundled with surrounding window tilemap data, all LZZ compressed for no understandable reason.

Basically, I have to ask myself if it’s worth a couple years of my life so people can play an inferior version of EarthBound. I don’t think it is. If I had no worries and had lots of free time and extra money, I’d love to work on it, I love the series and especially like to translate ROMs. If I were a zillionaire with no worries at all, I could probably even get it done in a few months.

Anyway, that’s why the MOTHER 2 part of the patch isn’t a full translation. I do think (and hope) that someone with a lot more energy and free time will show up and be able to pull off a full conversion of the MOTHER 2 part, even down to the little new control codes added just for EarthBound that tell the game when to use “The” or when to use “him” or “her”. It’ll be a tough job, but knowing EarthBound fans, someone will do it

tl;dr

EarthBound text is very complicated, the MOTHER 2 text format is equally complicated AND in a different format. Would take me years to fully accomplish for very little gain. MOTHER 2 GBA port isn’t very good to begin with. Haven’t given up the idea of working on it, but would rather work on other, more productive stuff.