Repointing the text table tutorial


#1

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


The Grand Library of FEU [UNDER CONSTRUCTION]
#2

Why does no one use my repointer?


#3

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.


#4

seems like you have to declare a new offset anyway


#5

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.


#6

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.


#7
#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.


#8

it would have to be #define NumberOfTextEntries 0xFFF.


#9

Yeah, it got lost somehow when i added the comment


#10

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.