Besides taking a look at different games and comparing them, from time to time I’d also like to share inside looks at the translation and localization process. Mostly for games, but maybe we’ll occasionally look at other media too.
This time, I want to focus on something known as “control codes”. I use this term a lot in my more in-depth articles, so let’s take a look at what exactly control codes are!
What’s a Control Code?
Well, first off, I guess I should mention that “control codes” can go by a lot of different names, but it’s the term most commonly used among game hackers and fan translators. Other terms I’ve come across are “script codes” or even just sometimes “non-text data”.
Basically, when you’re translating a line in a video game’s script, that line obviously contains text. So you translate it. But sometimes there’s other stuff mixed in with the text that modifies – or “controls” – the text in some way.
For example, some games let you name your character. And when there’s a line of text in the game that references this user-created name, it’s written in the actual script as a “fill-in-the-blanks” type of thing:
Hello, [PLAYER_NAME]! How are you?
When writing or translating a game, this is what a line would look like in the actual script file. But when you’re playing the game, the programming will replace the [PLAYER_NAME] control code with whatever’s supposed to go there. Simple enough, right?
Control Codes in Action
Here’s an example from the start of Bahamut Lagoon:
As you can see in this example, [name00] is replaced in the game with “Byuu”, which was the name the player chose.
If you look closer, you’ll see that there’s not just a name control code in that line, but some text formatting control codes too. In this particular example, the [cr] code is used for line breaks, and the [end] code denotes the end of a line or scene.
Here’s another example of a text-formatting control code in action. The original Star Ocean had text color control codes that were often used for key words or location names:
In this example, [nl] denotes a line break, character names have [Character ##] control codes, text color can be changed with the [colour ##] code, and there’s even a [pause] control code that pauses the text until the player presses a button. Already, we can see that control codes can actually control quite a lot of a game’s text and a game’s flow!
Some games have more control codes than others – it depends primarily on the developer and the type of game in question. Some games have almost no control codes, while others have so many control codes that it’s pretty much a nightmare.
For example, MOTHER 2 and EarthBound have extremely complicated control code systems… They’re so complex, in fact, that I’d call them scripting languages instead. I’d say 90+ percent of the game is done entirely using control codes. It’s insane. Here’s a sample from just a tiny scene!
The game’s complex control code system is a big reason why so few translations into other languages exist. It’s also why my MOTHER 1+2 translation patch doesn’t really do much to the MOTHER 2 side of things.
Anyway, as a translator, it’s important to translate everything properly while avoiding as many typos and such as possible. On top of that, though, you have the added pressure of not screwing up any control codes. The bigger the script, the easier it is to mess up something on accident. And, worst of all, if you do mess something up it won’t be obvious until after your project is long finished!
Control Codes Gone Wild!
It’s not uncommon to see control code mistakes in official game releases. In Final Fantasy IV for the Game Boy Advance, for example, someone on the localization team accidentally used the control code for Kain’s name instead of Cid in one line, which changes things quite a bit when you think about it:
The original translation had a control code goof of its own, again relating to Kain!
In this scene near the end of the game, Kain’s name is accidentally used instead of Cecil. This is especially jarring since Kain not only isn’t in the party at the time, he’s actually on the bad guys’ side!
Good ol’ Breath of Fire 2 is infamous for its wacky translation job. It commits every mistake in the book, including control code problems!
In this instance, I’m guessing the translator simply forgot to put brackets or whatever around Nina’s name control code:
I don’t know what it is about Final Fantasy IV that results in so many control code problems, but here’s another infamous one among Spanish-speaking fans:
In this case, it looks like the translator didn’t include the first bracket and/or parenthesis, which made the game think the stuff inside was normal text rather than a control code.
So, that’s a quick look at control codes, what they do, and the problems translators face when dealing with mountains of text. In future updates I’d like to cover other topics of this nature, like script formats, translation tools, super-tricky typos, constantly-changing source files, deadline woes, and more.
For now, though, if you know of any other control code mistakes in games, share them here! I’d like to create a page showcasing some of the funnier ones someday 😀