Repointing the text table tutorial

This tutorial is for FE8 and the buildfile method

You can do the same on fe7, but the pointers are not the same and since the game has almost double the slot fe8 has why would you repoint anyway.

Introduction

So, since the skill system uses a ton of text IDs the default table runs short, and if you expand it where it is you break the valni tower, to avoid this you need to repoint it, it isn’t really hard but since the best tutorial i found is a conversation between circles and markyjoe on the feu discord, i figured out i’d make a tutorial.
My english is kinda broken, so if you see anything that makes your eyes hurt just pm me or @Laikar#0235 on the discord and i’ll fix it

##Things you need
A hex editor, i used HxD.
Anti-Huffman Patch on your rom, it is included with the FE8 essential fixes

Actual Tutorial

First we need to copy the original text table to a new location, and to do that we open our clean rom in a hex editor (HxD, EM has one to) then we go to 15D48C and copy everything from there up to 1609B8 for a total length of 352D.
Then we create a new file call it whatever you want and give it the extension .bin, i’ll call it OGTextTable.bin
Then we paste what we copied earlier, the editor might tell you that it will change the file size, say yes then save.
Now, on the buildfile we include this, you can do it on the main buildfile but i prefer to do it on a separate text installer.

#define TextTable 0xEF3000 //This is where you want the new table to be located at
PUSH 
ORG TextTable
#incbin "OGTextTable.bin" //The file we made earlier
ORG $a2a0 //This is where the pointer to the text table is
POIN TextTable //The new pointer
POP
MESSAGE Text table located at TextTable

You can replace 0xEF3000 by where you want your text table to be located at, at 0xEF3000 there about 5000 bytes free.
You can use
#inctext PFinder "FE8_clean.gba" 0x15D48C TextTable
Instead of
ORG $a2a0 //This is where the text table pointer is
POIN TextTable //The new pointer
POP
But it doesn’t seem to always work and its a little big buggy atm of writing this.

Things that might go wrong

The game doesn’t go past title screen.
The new text table is either missing or wrong, make sure you copyed everything Fom 15D48C to 1609B8 and that its length is 352D.

Any text changes i make don’t get aplied
The pointer isn’t getting changed, make sure
ORG $a2a0 //This is where the pointer to the text table is
POIN TextTable //The new pointer
POP
Isn’t comented and if you are using
#inctext PFinder "FE8_clean.gba" 0x15D48C TextTable
don’t use it, as i said its kinda buggy

1 Like

Why does no one use my repointer?

It seems that your repointer requires an offset to put the table at, whereas this is supposed to let EA place the table for you.

seems like you have to declare a new offset anyway

True, but you don’t have to declare that offset.
Consider this:

TextTable:
#incbin "OGTextTable.bin"

ORG TextTable+(however much room you're allocating for text pointers)
(everything else goes here)

There’s almost certainly a more elegant way of expressing this, but I can’t think of it.

Because it is easier to do with EA, for almost all the tables you just need to replace the pointer on the csv with where you want it or even you can make the program just place it in free space, and this is just a special case cause there is no nmm for the text table that i know of.

#define NumberOfTextEntries 0xFFF //The number of entries, more than 0xD4D cause that is the length of the default table
ALIGN 4
TextTable:
    #incbin "OriginalTextTable.bin"
    ORG (TextTable + 4*NumberOfTextEntries)

PUSH
ORG $a2a0 //This is where the pointer to the text table is
POIN TextTable //The new pointer
POP
MESSAGE Text table located at TextTable

With this the table should be placed in free space, but since i don’t exactly know how it works i didn’t want to include it on the tutorial.

it would have to be #define NumberOfTextEntries 0xFFF.

Yeah, it got lost somehow when i added the comment

It’s fairly trivial to make a nmm, especially one like that since you only have one variable namely the 4 byte pointer, but if you can automatically allocate free space that’s cool.

sry to bother but there is something wrong when I want to copy those 0x352D long TextTable:

when I copied it to a .txt file, rename it “.bin”(or “.dmp”), then I cannot go past title screen just as you said.
what is interesting is that,the code I copied before, now appears in the “corresponding text” column on the right side, not the left side……
have you ever been encountered this problem? Or……anyway to solve this problem? thanks a lot for your excellent totural and hope for any reply!

This tutorial is 3 years old, and i kinda gave up on romhacking, you should check more up to date tutorials/ ask on the discord how are people doing this nowdays.

If understand things correctl, you are doing:

Copy the original text table on HxD,
Paste it on a txt file (i guess with notepad/notepad++/another text editor)
And then following the tutorial.

But what you should be doing is pasting the original text table in a file opened with HxD, not creating a text file and changing the extension to .bin.

sry to reply so late, I made it and thx a lot!