Each piece of text in GBAFE is tied to a text ID up to 0xFFFF. This text contains a number of control codes that determine extra data such as loading and moving faces.
Text editing requires the Anti-Huffman Patch to be installed. This is included with the FE8 Essential Fixes, or as part of the FEditor Autopatches for EA if you are using FE7.
We will be using the parser included with Event Assembler, but we will make the process much simpler by using textprocess.exe to do all the hard work for us.
Here is a very simple example of a text file called
# 0x212 RubyNameRuby[X]
There are three parts to each text entry. First,
# 0x212 is a text ID. It happens to be the text ID that refers to Eirika's name.
The second part is an optional definition. In other words, when I need to refer to this text ID later on, I can use
RubyName and Event Assembler will understand that to mean this text ID. If you leave out the definition, you can still refer to it by the number
The final part is the actual text. You can see that we are changing Eirika's name to Ruby. Finally we end the text with the control code
[X]. This is a special code that tells the game where the text stops.
Now, let's look at something a little more complicated.
# 0x903[OpenFarLeft][LoadFace][0x02][0x01]Hello, how are you?[A]As for me, I'm talking[NL]words at you![A][X]
[LoadFace][0x02][0x01] is used to load up portrait number 0x02. If you have more than 0xFF portraits, the higher digit carries over to the [0x01], e.g. portrait 0x17F would be
[LoadFace][0x7F][0x02]. You only need
[LoadFace] if a portrait is actually being loaded. Otherwise, you can simply use [Open(position)] to make the face at that position active.
Textprocess.exe works by dragging a text file onto the exe. It then converts this text file for EA insertion and generates an installer file that you can
#include in your buildfile.
This textfile contains all of the text changes you want to make. For example, we can take the two previous text changes and put them in a single document, which I've called
# 0x212 RubyNameRuby[X]# 0x903[OpenFarLeft][LoadFace][0x02][0x01]Hello, how are you?[A]As for me, I'm talking[NL]words at you![A][X]
You guessed it, you can
#include other text files! Let's take a look at one of the text buildfiles I used for a simple one chapter hack:
#include "DQText.txt"#include "PrologueText.txt"#include "MiscText.txt"
You'll notice there aren't any actual text entries here, those are all split into separate text files for organization. Peeking at PrologueText.txt, we can see things like:
#0x664 BrownBoxPrologue1 year ago[X]#0x665 BrownBoxPrologue2Present day[X]# 0x1a2 Prologue_Objective_LongSurvive[X]#0x19d Prologue_Goal_WindowSurvive[X]
Now you may have noticed something else this has in common with an event buildfile - whenever we process the text, it's always the same file.
Know what that means? We can add it to MAKEHACK.cmd!
Here's an example from my own:
cd %~dp0copy FE8_clean.gba FE_Hack.gbacd "%~dp0Tables"c2ea "%~dp0FE8_clean.gba"cd "%~dp0Text"textprocess_v2 text_buildfile.txtcd "%~dp0Event Assembler"Core A FE8 "-output:%~dp0FE_Hack.gba" "-input:%~dp0ROM Buildfile.event"pause