[FE9] Character Editor and Randomizer [v1.2]


The pointers count from the start of each file proper. The dispos.cmp is a package of 4 files: The common .c, and one for each difficulty. The package starts with laying out the name, starting offset and length of each of them.


How would it be possible to find the classes in the dispos and change the enemy classes?


Find the JID in the dispos file
take the offset the JID starts on minus the starting offset of the file within the package file to get the pointer
Ctrl+F where that pointer is used
Repoint to end of file
append new class JID to end of package file

As long as you clean up old edits it will never get so big as to cause problems.


Where would the starting offset of the file be?


I forgot to ask first, do you have the dispos file decompressed?

When decompressed, the package file starts with “pack” in plaintext, then a short of how many files are packed (00 04) a null short (00 00) and then that many entires for the packed files. Here is the first one of the final map (bmap31): null pointer (00 00 00 00), pointer to name (00 00 00 48), pointer to start of file (00 00 00 80) length of file (00 00 18 91)

It is that start of file pointer for whatever file you are editing you need

Edit: hmm something is a bit off though. That value should be 0xA0 and not 0x80. There may be a header header of 0x20 or something to add.


Yeah, it’s decompressed.


Yeah, I still can’t get it to work. I’ve tried subtracting 0xA0 from the pointers. It doesn’t work for any of the classes. Every time I’ve searched for them I couldn’t find anything.


Which dispos file are you looking at?


What are you asking about?


which dispos file, and what class


I’m looking at chapter 18. I’ve tried with many different classes, about 10 of them.


Each file has its own little 0x20 header, that was throwing me off.

in bmap19 (chapter 18), the first file in the pack is the dispos_c.bin, which is mainly for player stuff.
the second file is dispos_h.bin, the hard mode. It starts at 0x10A0 with a 0x20 header meaning the number to add to pointers to get offsets/subtract from offsets to get pointers is 0x10C0

for maniac (easy i think?) it is 0x3B80 (0x3BA0) and for normal 0x62E0 (0x6300)


Okay, I finally got it working. Thank you.


This may be a stupid question, but is there future chance for a recruitment randomizer? Like you start w/ 4 random units, one of them being your lord/Ike, and recruit units randomly throughout the game. (like reverse recruitment, but random)

'Cause I would play the heck out of that.


Though the randomizer is working, enemy stat growths doesn’t seem to for me. I got around to Chapter 17 before noticing that even though enemies’ levels were increasing, their stats were pretty much stuck in stasis. A Level 18 myrmidon would still have Level 1 stats. Something I’m doing wrong?


I’ve randomized and done everything I needed, and when the intro cutscene (the one that is shown when you open the game) starts, the emulator says: “Invalid read from 0x0001bc2b, PC = 0x8023d008”.
Do you know what the error could be?


That is one of the big ones, could you tell me the size of system.cmp? And maybe send it to me so i can take a look at it.


I fixed the enemy growth issue, and hopefully Illyana too. See my edit to the post.


I cannot figure out how to send you the file (I’m not used with this site, since I just created an account) but I can tell you that the size of the file is 741 KB.
If you’re wondering, just in case, I’m randomizing an European version of the game.


Followed the instructions with the new 1.1 version, but the enemies’ stats are still bugged.

However, if I load my save with a vanilla ROM, the enemies’ stats return to normal.