• Welcome to Final Fantasy Hacktics. Please login or sign up.
October 23, 2020, 04:49:22 am


Please use .png instead of .bmp when uploading unfinished sprites to the forum!

Editing Brave Story Bio Entries Tutorial

Started by DarthFutuza, November 26, 2019, 02:14:44 pm


November 26, 2019, 02:14:44 pm Last Edit: March 02, 2020, 02:31:28 pm by DarthFutuza
Editing Brave Story Bio Entries
Version: 1.0.02
Updated: 03/02/2020

Tools You'll Need:
  • FFTactext
  • ATTACK.OUT Editor Special Awesome 2.0
  • CDMage
These tools can all be found here.

Preface: This tutorial assumes you've already got a little event editing experience (prerequisite) and that your mod is being built on the vanilla psx game with no other expected conflicts.  The tutorial assumes that you want to leave the vanilla game as intact as possible.  It assumes your art assets are already ready to go (such as your portraits).

1) Plan out which brave story slot to use.  Refer to the wiki's variable list and find a slot that is unused.  As an example, we'll be using id: $3C (Flag1020) at address 0x03FC.  It isn't currently in use and is right next to Daravon making it nice and easy to find, since it is only offset by 1.  Keep in mind that each entry is 16 bits (and uses one of those bits as a null separator), this will come in use later on.

2) Plan out your bio entry text.  Open up FFTactext and navigate to character bios4.  But first an explanation, bios1-4 refers to which chapter the bios gets updated.  Technically this can be done in a different chapter as long as you use the right variables (eg: You can update someone in chapter 1 even though you stored their data in bios4), that said its poorly organized and I wouldn't recommend you do that unless you're really squeezing the game for every last bit and have absolutely no memory left anywhere else.  No one can help you if you do that.  For the purposes of this tutorial, we'll be using one from bios4, because it has the most empty space and gives us room to play around.  Okay let's jump down to entry #193.  Why 193?  It is offset from the entry for Daravon by 16 and thus easier to find for a tutorial, remember in step 1 I said it'd come in use later?  This is it.  So we'd take a look at the previous entry (Daravon is at 209), and subtract (16*our offset) from that position.  In this situation, we're only offset by 1, so that comes out to 209-(16*1) == 193.  Easy right? 

Another note.  If you want to have multiple brave entry edits throughout the course of your mod/story, you need to reserve room for that to happen and its probably going to make it easiest on you if each separate entry is right next to the other.  This way, when it comes time to edit the variables in the game, you just have to increase the value of that brave story entry by 1 to change the entry to the next version of it.  An example: Say that you want to update Meliadoul's entry after fighting her dad and she confirms the truth that he's turned into a monster.  You would then just have to add one more entry within that reserved 16 spaces (again actually 15, since we can't use position 0 as it serves as a null separator) after the current ones.  There may be a good reason for not having brave story entries right next to each other, such as in the case of adding conditional brave story entries which depend on a player's choice as to which one appears, but in most cases you'll want to just make it easy on yourself and do them right next to each other.

One more thing Jackie! So you're probably thinking, "Cool, I can have 15 stages in a character's brave story".  Not exactly...there's an issue with how the base game set things up.  See the picture below:
We're going with Mel's brave entry again as an example.  Her entry starts at 209 (again technically 208, but that's the null separator I'm talking about).  You can see it explains how she doesn't like Ramza at first cause she thought he killed her brother, blah blah blah.  The next entry (210), is basically the same thing, but is updated for what happens in the story - Mel see's a giant demon mosquito and decides Ramza isn't completely crazy.  Just like what I explained earlier. So if you wanted to have another update for her after facing her father, you'd stick the new update to her brave story right there at 211.  But what if you're sad that Ramza doesn't get anybody to love him and you notice that Mel's of marriageable age and now comfortable around Ramza without wearing perfume?  Ah okay, well after making a bunch of extra events and telling the great love ballad of RamzaXMeliadoul, you've managed to update her brave story entry 9 more times.  Huh.  We're about to run into problem, slot 220 is already occupied, by...wait what?  Meliadoul defects due to circumstances?  Alas, the game has elected to sink your ship for being way too long.  Basically the next 4 entries are reserved for what happens when a unit leaves, such as if you dismiss them, make them go to church too much, or let them turn into a crystal, etc.  Thus you can only update brave story profile entries 11 times.  It'll still let you use those extra slots technically...but that's usually going to break the game or result in nonsensical entries.  And seriously your shipping story is too long.  Brevity is the soul of wit.  Speaking of which...

3) Edit your bio entry text.  We're ready to finally add in a character bio.  For your brand new character let's take a look at Meliadoul's entry as an example:
{0xEC14}         Meliadoul Tingel (Age:{0xE4}){Newline}
          Temple Knight of the Murond Glabados Church.{Newline}
          Daughter of Temple Knight, Vormav.{Newline}
 Her brother, {SP}Izlude, is {SP}thought to {SP}have been {SP}killed by{Newline}
Vormav. To avenge for the death of Izlude, she is after{Newline}
you though.

So that first code bit is the wldface.bin entry (Meliadoul's entry is #14 and you can check it by opening up the wldface.bin file using FFTEVGRP).  So if we're making a new character, just pick an unused slot such as #8 or #9, etc.) and replace it with {0xEC$$} where the $$ is the portrait number in the wldface.bin entry, then you can upload the appropriate portrait later to overwrite that slot. {0xE4} is a stand in for a variable representing that character's age.  You might notice there's a bunch of blank space, this helps separate the text from the image.  The first two lines also have separator space between the image and the text (its 10 spaces), so you should probably copy that pattern (if you want it to look like everyone else's Brave Story entry and not have stupidly different formatting).  You can fit about 55 characters on a normal line, but make sure to only do at most 45 on the first two lines (since otherwise it'll run into the profile image).  I don't know what {SP} is yet, but I'll update this once I do.  I have a theory its just a space, (so you can use double spacing) but I'm not sure since it seems sort of arbitrary.

Anyway go ahead and make an entry.  Also, if you want the unit to have bravestory person entries that reflect when they're fired/killed/etc, be sure to add entries for the last 4 slots.

4) Add the name to the Bio Entry.  Alright, in TacText switch to "Person".  We now need to add the name of the person that shows up in the menu of names under person in the game.  So remember how we're just ahead of Daravon, find him in the list and go up 16.  That should put you on 961 (Daravon's on 977) for the first text entry, go ahead and copy and paste the name of your new character into the 16 fields.  Be sure to leave the null separators between your character and Daravon's, and any previous entries.  961-975 in this example should all have been modified.  I'm not sure if you actually need all 15 of those fields, but the base game does this for all of its characters, so we probably should too.

5) Save as a .ftttext and then go ahead and patch your iso.  Remember to always keep a backup of your original iso/work before you apply changes just in case something goes wrong..

6) Setup the event..  Open up EasyVent Editor Super Perfect 2.0 and load up one of the game's default events that would appropriate to stick your character in.  As an example, instead of using just a new character, I'm going to both edit Mel's brave entry and add a new one for the new character.  So, I'll be picking #448 (Hall of St. Murond Temple Vormav and Meliadoul talk) as my event to edit.  Make whatever changes to the event you need to (see other tutorials for help with that), and then at the end before the dialogue part starts, and just before the last EventEnd() cmd happens, I'll add the following.
//increase Mel's bravestory entry by 1

//set our bravestory entry for our new character to 1
This will first, increase Mel's bravestory one more time, so that she can stop having daddy issues in her bravestory bio.  Then it will first set the variable for our new character to 0 (we do this just in case it wasn't already 0, because it hasn't ever been initialized there's no guarantee it isn't some random number) using the ZERO cmd, then we add 1 to it, to set it to 1.  This will activate our brave story entry for the new character.  (Just a reminder, we used x03FC because that was what slot picked in step 1 for our new character, and Mel's is 03ED).

7) Apply the patch.  Alright that's pretty much it, you made it through.  Go ahead and compile and save your event, then apply it like you would any other event and patch your iso with the new event.  Then go ahead and load up the game and test it to see if it works.  Good luck!

Let me know if I've gotten anything wrong, or need to make any corrections and I'll be happy to update the tutorial.  Hope it helps someone.
  • Modding version: PSX


Just figured I'd put my two cents in here and clarify that the {SP} is a half-space. It's used to even out the extra spacing since the font used in FFT isn't monospaced (meaning not all characters take up the same amount of space). Most take up two half-spaces, but i and l take up only one, and m and w, as well as all capital letters, take up three. If you're going for a completely justified look in your Brave Story entries, you have to count out exactly 110 half-spaces (or 55 normal characters, as you said) per line. Also, double spacing is capable without the use of {SP}. (Some vanilla entries use two spaces AND a half space between two words!)

As an aside, I strongly suggest using Xif's FFTText editor spritesheet to edit with instead of TacText if you have access to Excel, you can change everything you can in TacText (and more) and import it the same way once you're done. Character Bios are in the blue section, under WLDMES.BIN Persons descriptions 1-4, and are organized neatly so you can see exactly how many blank entries you have to work with. If you do make the switch, the spreadsheet uses the character ` to represent the half-space instead of the {SP}.

Overall a great tutorial DarthFutuza!
  • Modding version: PSX