I’ve got the ISO file for FE9, and I have tools to rip the data from the game and a hex editor. My question is, what file do I edit to change the game’s data for Path of Radiance? I thought it was maybe the FE8 Data bin file since it had numbers that lined up with character bases and growths, but when I changed those numbers, it didn’t change anything in the game. Am I looking in the wrong place?
The actual data is located in system.cmp. you first need to decompress that file with something like BatchLZ77, then character data starts at $250. here are my notes on the file:
NotesFE8Data.bin isn't the actual data file, it's probably more of a reference file, as you need to decompress(LZ77) system.cmp to get the actual data you need to change. I'll be referencing offset in both files, First offset being offset in FE8Data.bin, second offset being system.cmp. difference between the two: $220
Pointers are big endian, and reference the offset - $20
$30/$250 = Character table: size per entry $54
1st pointer = PID
2nd pointer = MPID
3rd pointer = Always 0
4th pointer = FID
5th pointer = JID(Class)
6th Pointer = Affiliation
7th pointer = Weapon level(Weapon levels are ascii so you cant start with D almost leveled for example)
8th pointer = SID(special properties, i think)
9th pointer = SID(special properties, i think)
10th pointer = SID(special properties, i think)
11th pointer = AID
12th pointer = AID2
Then A bunch of char data:
First Byte = ??
Second Byte = ??
Third Byte = ??
Fourth Byte = ??
Fifth Byte = ??
Sixth byte = ??
7th byte = Starting level
8th byte = Starting exp
9th byte = ??
then Bases and growths, 8 bytes each.
then, from +$49 to +$54, even more data i have no idea about. they certainly arent pointer.
$6FC4/$71E4 = Class table: size per entry $64
1st pointer: JID
2nd pointer: MJID
3rd pointer: MH_J(No ideas what this means)
4th pointer: JID_PROMOTION(PROMOTION being the class he promotes into)
5th pointer: ??
6th pointer: Base weapon rank, reference for enemies i guess
7th pointer: SID
8th pointer: ??
9th pointer: ??
10th pointer: ??
11th pointer: ??
12th pointer: Race?(ranger points to human)
13th pointer: Promotion?(ranger points to hero)
14th pointer: ??
15th pointer: AID
then 8 bytes of fuck if i know data, shoutouts to +$3F for being mov tho
After that Class Bases, caps and growths.
then 8 more bytes of nothingness, at least for ranger, and the end.
I have more notes on the header of system.cmp and how it’s really just a compiation of a bunch of files somewhere, but i cant find it right now.
EDIT: alright didn’t find them but wrote this up:
Notes On the system.cmp(and more generally, the overall file header structs for pack files) struct:
+$0: First word: 70 61 63 6B(pack in ascii)
+$4: Maybe a short: number of entries in the header, it would seem
then starting from +$8, the file table:
First word: Unknown, always zero
Second word: Pointer, Points to filename string(for example, FE8Data.bin)
Third word: Pointer, Points to beggining of file in pack file
Fourth word: Size of file.
For example, The first entry in the system.cmp table:
$00000000 = ?
$00000108 = “FE8Data.bin”
$00000220 = Start of file(the first four bytes at $220 in system.cmp and at the beggining of FE8Data.bin are both 00 02 3D 2C.)
$00023D2C = Size of file, same as the size of FE8Data.bin.
Thanks a ton for the help
Sorry, but I have another question. The current gc tool I’m using (GC-Tool v1.2) won’t let me replace the system.cmp with my edited version because the file size is bigger than the original. I’m wondering if there’s a way to get around this issue. I’ve tried using 2 different compressor tools (NL compressor and Batch-lz77) but both make the file too big when recompressing, and I haven’t been able to find a different gc tool.
Am I too late? Never!
Try exporting the files from the ISO with GC-Tool, replace the system.cmp file with the edited one(Compressed), and then rebuild the ISO TRIMMED(VERY IMPORTANT!!!).
That should work out for you.