Jump to content

FE: Awakening Hacking Topic


VincentASM
 Share

Recommended Posts

  • Replies 877
  • Created
  • Last Reply

Top Posters In This Topic

So, thanks to my good friend TildeHat from GBATemp and countless hours of frustration, we've learned how to add/edit units in a map.

We've added a completely new playable character to static.bin, however we are still trying to work out some weird details/glitches.

Here's what's been modified in Chapter 1, this new unit will join your party once the chapter ends.

CYVJiqx.png6Hzc5aW.png

9LMGxzv.pngUZgEeum.png

The following data is located in the data/dispos folder, I edited 01.bin.lz.

I have mostly mapped out the character block for this file, character blocks are 0x74 in size, see below;

u2dH5vV.png

For the Coordinates, X1 Y1 is the character's starting position, then, if the script file in romfs/scripts says the unit will move, they move to X2 Y2 when the player will first gain control of the unit.

In these files, 0x0 is the filesize, 0x4 a pointer to the pointers table, and at 0x8 how many pointers are in the previous pointer table.

At 0x20, starting from there, 0xC bytes, these blocks indicate what "team" the characters are for, 0x20 is a pointer to a name label, for example, in 01.bin it points to "Player" as in, playable units, in 0x24, is a pointer to where the character blocks for this team start, and in 0x28 is how many character blocks it will read in this team, then at 0x2C you get the label for team 2, 0x30 pointer to the start of the block, 0x34 number of character blocks, etc, until the first character block is finally reached.

The same rules that apply to static.bin apply to these files, example, values are reversed and have 0x20 subtracted, etc.

Edit: Fixed, for anyone interested, download is here.

To anyone who has any experience with save data editing, what is Phila's character value?

From what I understand, it should be 39 since 38 was the last value normally.

Sorry, I was trying my best to understand this (I'm a bit new to modifying the 3DS), but I'm not sure how to get this to work? I guess my first thought was I need to dump my FE: Awakening and decrypt this in order to get the main files drag and drop those and replace them and then repack them to whatever format .cia for instance to get this to work?

In the Phila folder, I see:

1. 00040000000a0500 folder

2. plugin folder

3. FE_Fates_USA_NameChangePatch.7z

4. Patch.7z

Not sure what to do with those.

Link to comment
Share on other sites

Oh hey, it's you again, except on serenes instead of gbatemp XD

Still attempting to work on that code... No luck so far.

Oh, hi xD

I kinda expected it would be hard to do lol but thanks for your effort :3

Link to comment
Share on other sites

Oh, hi xD

I kinda expected it would be hard to do lol but thanks for your effort :3

no kidding. Without my cartridge fates (which my cousin currently has) it's been terrible trying to get that to work, combined with my barely sub-par knowledge of how to use NTR (with my copy I made for my emunand). So yeah, I decided to put that on hold until:

A. I figure out NTR more

B. My cousin gives me my cart back

So yeah, that's my status on things.

Link to comment
Share on other sites

no kidding. Without my cartridge fates (which my cousin currently has) it's been terrible trying to get that to work, combined with my barely sub-par knowledge of how to use NTR (with my copy I made for my emunand). So yeah, I decided to put that on hold until:

A. I figure out NTR more

B. My cousin gives me my cart back

So yeah, that's my status on things.

I wonder, which would be more complicated, porting the Fates code to Awakening, or just starting fron scratch in Awakening? Maybe the way/location the random numbers are generated is different enough :/ but I dunno xD

Anyway, should we talk here or in 'Temp? Lol xD

Link to comment
Share on other sites

I wonder, which would be more complicated, porting the Fates code to Awakening, or just starting fron scratch in Awakening? Maybe the way/location the random numbers are generated is different enough :/ but I dunno xD

Anyway, should we talk here or in 'Temp? Lol xD

OH DAMN THAT'S RIGHT THE CODE WAS FOR AWAKENING

god damnit

um

i think i can figure it out once i finally figure out how to get ntr ram dumping down

Link to comment
Share on other sites

OH DAMN THAT'S RIGHT THE CODE WAS FOR AWAKENING

god damnit

um

i think i can figure it out once i finally figure out how to get ntr ram dumping down

Oh. My. God xD

Very phail much embarrassing lmao xD

Link to comment
Share on other sites

  • 2 weeks later...

Has anyone figured out how to extract the romfs from the dlc? They're all contained in .cia and some people have bundled them together into single .cia. I've been able to unpack the romfs.bin, but all the romfs extractor tools (RomFS Extract, 3dstool) I've tried don't recognize them. Ctrtool might work but we all know it doesn't recognize Japanese characters so it would probably just give invisible text.

Link to comment
Share on other sites

Has anyone figured out how to extract the romfs from the dlc? They're all contained in .cia and some people have bundled them together into single .cia. I've been able to unpack the romfs.bin, but all the romfs extractor tools (RomFS Extract, 3dstool) I've tried don't recognize them. Ctrtool might work but we all know it doesn't recognize Japanese characters so it would probably just give invisible text.

You probably need to decrpyt the CIA? Run it through decrypt9 and choose a deep decryption and that should help.

Link to comment
Share on other sites

Good afternoon everyone. Relatively new to Fire Emblem, and I'm nearing the end of my first play-through of Awakening. Only two things have really irked me thus far. The first is that I can't have a male child if I choose a male Avatar. The second is the ugly sprite the Avatar has when in the sage class. In the first case, is it possible to change female Morgan into male Morgan both functionally and visually? In the second case, is it possible to swap the Avatar's sage sprite with his grand master one? I read about 15 pages of this thread before deciding it was probably more efficient to just make an account then ask.

Link to comment
Share on other sites

Good afternoon everyone. Relatively new to Fire Emblem, and I'm nearing the end of my first play-through of Awakening. Only two things have really irked me thus far. The first is that I can't have a male child if I choose a male Avatar. The second is the ugly sprite the Avatar has when in the sage class. In the first case, is it possible to change female Morgan into male Morgan both functionally and visually? In the second case, is it possible to swap the Avatar's sage sprite with his grand master one? I read about 15 pages of this thread before deciding it was probably more efficient to just make an account then ask.

Look up Nightmare for Fire Emblem Awakening. Or you can hex edit yourself (which is probably easier but I'm better at ROM editing) That should fix your Morgan problem. As for the sage model, you're going to have to swap the texture files of them. Of course you can't do any of this without homebrew...

Edited by GCNMatt
Link to comment
Share on other sites

OH DAMN THAT'S RIGHT THE CODE WAS FOR AWAKENING

god damnit

um

i think i can figure it out once i finally figure out how to get ntr ram dumping down

Oh, have you had any progress there? :P

Link to comment
Share on other sites

  • 2 weeks later...

I've been reading this thread and the ones by UnassumingVenusaur both here and over at GBAtemp looking for a way to add a Character to the roster.
The only description I found for that was this one by DeathChaos25. To clarify, I'm not looking to actually add a completly new character as was done in this post, but instead add an existing character earlier.
Specifically, I want to add the dancer earlier, to circumvent the skipping of support dialoge between her and chrom. So ideally, she would join at the end of the chapter she is first mentioned, instead of at the beginning of the next one.

Looking at the files provided by DeathChaos25, the file i would have to edit is data\dispos\10.bin.lz. since the dancer is first mentioned in the corresponding chapter. Is this indeed the correct file? I noticed there is also a 010E.bin.lz file, what does that one do?

However, there may be an easier way to accomplish what I seek to do. At the end of Chapter 4, a unit joins without beeing encountered on the battle-field. So in hopes of replicating this behavior, I looked at scripts\004.cmb and scripts\010.cmb but I don't quite know what to look for...
Does anyone know how cmb files function?

I looked at the modified P001.cmb in hopes of gaining some insight but only one character is different when compared to my version of that file.

Are the script\.cmb files the right place to look? Or do they only affect things happening on the battle-map?

Link to comment
Share on other sites

I've been reading this thread and the ones by UnassumingVenusaur both here and over at GBAtemp looking for a way to add a Character to the roster.

The only description I found for that was this one by DeathChaos25. To clarify, I'm not looking to actually add a completly new character as was done in this post, but instead add an existing character earlier.

Specifically, I want to add the dancer earlier, to circumvent the skipping of support dialoge between her and chrom. So ideally, she would join at the end of the chapter she is first mentioned, instead of at the beginning of the next one.

Looking at the files provided by DeathChaos25, the file i would have to edit is data\dispos\10.bin.lz. since the dancer is first mentioned in the corresponding chapter. Is this indeed the correct file? I noticed there is also a 010E.bin.lz file, what does that one do?

However, there may be an easier way to accomplish what I seek to do. At the end of Chapter 4, a unit joins without beeing encountered on the battle-field. So in hopes of replicating this behavior, I looked at scripts\004.cmb and scripts\010.cmb but I don't quite know what to look for...

Does anyone know how cmb files function?

I looked at the modified P001.cmb in hopes of gaining some insight but only one character is different when compared to my version of that file.

Are the script\.cmb files the right place to look? Or do they only affect things happening on the battle-map?

The .cmb files are the script files that handle any and all events that happen within the current chapter/map, Dispos is simply the unit spawn data for the current map.

For Olivia, I think what you want is to make a new character block for her in whatever chapter you want for her to join, the problem would be the spawn flags depending on how you want her to join, I really don't remember how spawn flags work on Awakening but I'm pretty sure you can just copy them off of someone else and it should work, for example, if you want her to join after you clear the map like Lon'qu does after you beat the Feroxi arena, you could just copy his spawn flags and make a new block for Olivia in whatever chapter you want her and just give her the same spawn flags as Lon'qu.

Link to comment
Share on other sites

The .cmb files are the script files that handle any and all events that happen within the current chapter/map, Dispos is simply the unit spawn data for the current map.

For Olivia, I think what you want is to make a new character block for her in whatever chapter you want for her to join, the problem would be the spawn flags depending on how you want her to join, I really don't remember how spawn flags work on Awakening but I'm pretty sure you can just copy them off of someone else and it should work, for example, if you want her to join after you clear the map like Lon'qu does after you beat the Feroxi arena, you could just copy his spawn flags and make a new block for Olivia in whatever chapter you want her and just give her the same spawn flags as Lon'qu.

Thank you for the help.

I took a look at the dispos\004.bin and I think I'm finally starting to get how theese files work:

The label at the end of the file are what PID and IID refer to on the mapping you showed in that post(no idea why it took me that long to realize...).

So I searched for his(Lon'qu) katakana(thanks for your github) and found this label: PID_ロンクー at 0x0B91; that becomes 0x71B0 which i found at the beginning of the last character block, so I know I got the right one.

Looking at that block, I noticed a few things:

He is in the Support team(which is team 3 in this case and has it's own label at the end of the file)

His position(X1,Y1,X2,Y2) is all 0s(i think I read somewhere that fates uses Fs for what i'm trying to do?)

The unmapped value below the enemy AI Type Pointer in the picture is different(for most characters it seems to be 69, but he has 79), so that could be the flag I want for the after-chapter joining.

Then I looked at my target-file, 010.bin:

No Support team here, so I will have to add it; That means I need a new entry to the team-list, which will break all pointers after it.

Specifically, the things I would need to modify/add:

  • at 0x0 the filesize; I took at look at your post here where you mention that the value for the file size is fliped like the pointers are. The filesize is the offset of the last character(or maybe last character +1)?
  • at 0x4 the pointer to the pointers table; That table is towards the end of the file, before the labels, right? If I add anything before it, that pointer will change.
  • at 0x8 how many pointers there are in the pointer table; This will change, since I need a new entry for the new character. Each pointer is 0x4 long, right?
  • at 0x20 and following, the existing teams; The pointers to the first character in the teams need to be updated(since they shift from adding in the new team). Update the pointers to the team-labels
  • after the current teams at 0x20, add an entry for the support team; With a pointer to the label for the team, a pointer to the first character of the team and the number of characters in that team(just 1 in this case)
  • at the end of the currect character list, add a new character block(size:0x74); update all PID and IID label pointers and the AI-pointers
  • at the target of the 0x4 pointer(so after the character list), update all pointers to point to the new position of the character blocks; add a new pointer for the new character
  • at the end of the file with all the labels, add a label for the support team and a label for Olivia(should be PID_オリヴィエ); Maybe also add an IID label for a weapon for her?

So looks like a whole lot of pointer updating. Did I miss something?

Thanks again for your help

Edited by IG88
Link to comment
Share on other sites

-snip-

You're on the right track but considering that an NPC Olivia appears on the map at the end of the chapter what you could do is take that Olivia, change her to an Ally and then update her PID to PID_オリヴィエ(Right now it's PID_010オリヴィエEV).

Something has to be done to chapter 11 though, since she spawns at the beginning of the map I don't know what'll happen if she's already fielded(two Olivias?).

Link to comment
Share on other sites

You're on the right track but considering that an NPC Olivia appears on the map at the end of the chapter what you could do is take that Olivia, change her to an Ally and then update her PID to PID_オリヴィエ(Right now it's PID_010オリヴィエEV).

Something has to be done to chapter 11 though, since she spawns at the beginning of the map I don't know what'll happen if she's already fielded(two Olivias?).

Huh, it somehow didn't occur to me that she might actually appear in the level already...

I wonder what the 79 flag i saw would change if that where the only thing I modified(well, that and the PID).

I agree that chapter 11 will need editing as well. Ideally, she could be a forced deploy like chrom is. The problem here is that she might have died/retreated in the gap between chapters 10 and 11.

Link to comment
Share on other sites

Huh, it somehow didn't occur to me that she might actually appear in the level already...

I wonder what the 79 flag i saw would change if that where the only thing I modified(well, that and the PID).

I agree that chapter 11 will need editing as well. Ideally, she could be a forced deploy like chrom is. The problem here is that she might have died/retreated in the gap between chapters 10 and 11.

That's wrong actually, changing her PID will only change who pops up on the event, and since you're changing from NPC Olivia to Player Olivia, it's a pointless change pretty much.

However, if you want the change to not be pointless and want her to actually join, you need to change the team from whatever it is, to 0 (Player team), then change the spawn location to 00 00 00 00, and change the spawn bitflags, of course this would break the event because it uses her, so again, not the change you want.

I really don't know which bitflags you want since I never bothered extensively testing Awakening and moved onto Fates rather quickly, but whatever spawn bitflags Lon'qu has is probably what you want.

Link to comment
Share on other sites

-snip-

Character Join is entirely dependent on the spawn bitflags, and yes, Fates uses FF FF FF FF as location for characters who join at the end of chapters like Lon'qu does in Awakening.

Link to comment
Share on other sites

That's wrong actually, changing her PID will only change who pops up on the event, and since you're changing from NPC Olivia to Player Olivia, it's a pointless change pretty much.

However, if you want the change to not be pointless and want her to actually join, you need to change the team from whatever it is, to 0 (Player team), then change the spawn location to 00 00 00 00, and change the spawn bitflags, of course this would break the event because it uses her, so again, not the change you want.

I really don't know which bitflags you want since I never bothered extensively testing Awakening and moved onto Fates rather quickly, but whatever spawn bitflags Lon'qu has is probably what you want.

I switched all/most of her flags to match the ones Lon'qu has set in capter 4, but without success. Lon'qu is definitely not in the player team in that capter(his team is a seperate one labeled Support01) so I shouldn't need to switch the team to the player team.

The team-pointer is the only thing I didn't quite manage to recreate. Where does that one point to actually? If I try to follow it as per usual, I end up somewhere with 00 values...Phila in your post has a team-pointer seperate from every other character, while most other characters seem to share that pointer for everyone on their team. You didn't add a new team or team-label for Phila though...

So where does that pointer actually point to?

I noticed that the 69 => 79 difference is also present for the forced-deployed chrom, so thoose flags might have nothing to do with joining after all and are more like another team flag. You set that one to 79 for Phila as well.

Which leaves me with only one difference, that team pointer in the character data. Some of the values seem to be the same across different files here(i've seen C0 01 and C2 01 in both 004.bin and 010.bin) and shared over multiple characters, but then there are also unique ones(you gave Phila C2 05 and Lon'qu has something starting with E). So that would make it likely that they point to something in a different file, maybe a static.bin?

Anyway, I'm not so sure the charater-flags are actually responsible for a character joining, at least not on their own. It would make sense that adding a character to the playable team would also add them to the rooster but something else seems to be at work for Lon'qu. Maybe something in the script\004.cmb after all? So far all character-additions I've seen have been in capters that already add characters, so maybe that has something to do with it?

I think I'll try to switch the forced-deployed chrom to have the character label for olivia. That way, she should definitely join, since she is in the right team and the labels are mostly identical to Lon'qu's, right?

Character Join is entirely dependent on the spawn bitflags, and yes, Fates uses FF FF FF FF as location for characters who join at the end of chapters like Lon'qu does in Awakening.

What about characters that join only after beeing talked to? I take it they need some kind of event-function to switch teams. Maybe the same is done to Lon'qu in the .cmb and he doesn't actually stay in his starting team(Support01), but switches to the player team?

Edited by IG88
Link to comment
Share on other sites

Ok, I see where your confusion is, my brain has been working on Full Fates mode so I wasn't noticing this.

In the image, where it says "Team pointer?", those are actually the spawn bitflags I've been mentioning, it's not a pointer, they're bitflags, I updated it and I think this should be more accurate.

2F6NWBC.png?1

The team label is irrelevant completely, it's only there so that the game can decide when to spawn the unit based on events and handle them from within the .cmb, you can have enemy units inside the Player block, players inside the Enemy block, it doesn't matter, as long as the team flag and the spawn bitflags are correct it will work, which is why I said to look for Lon'qu's spawn bitflags, because there should be a "new on map recruit" flag and another for "joins outside of the map" flag.

For a new block, you only need to add 5 pointers to the pointers table, 6 or more depending on how many weapons you add.

1 pointer at the beginning of the block (which should be a pointer to the PID label as that's what the block starts with), and one pointer to each of the AI Label pointers, and 1 pointer per every weapon IID label you wish to add.

Lon'qu's Spawn flags are E0 05, so that's probably what you'll want.

Edited by DeathChaos25
Link to comment
Share on other sites

Ok, I see where your confusion is, my brain has been working on Full Fates mode so I wasn't noticing this.

In the image, where it says "Team pointer?", those are actually the spawn bitflags I've been mentioning, it's not a pointer, they're bitflags, I updated it and I think this should be more accurate.

2F6NWBC.png?1

The team label is irrelevant completely, it's only there so that the game can decide when to spawn the unit based on events and handle them from within the .cmb, you can have enemy units inside the Player block, players inside the Enemy block, it doesn't matter, as long as the team flag and the spawn bitflags are correct it will work, which is why I said to look for Lon'qu's spawn bitflags, because there should be a "new on map recruit" flag and another for "joins outside of the map" flag.

For a new block, you only need to add 5 pointers to the pointers table, 6 or more depending on how many weapons you add.

1 pointer at the beginning of the block (which should be a pointer to the PID label as that's what the block starts with), and one pointer to each of the AI Label pointers, and 1 pointer per every weapon IID label you wish to add.

So the former team pointer? is actually the spaw bitflags. That explains a lot. And now I also see why oliva had an 02 for her team flag(which i didn't know about at the time).

And the teams at 0x20 and following are just for the labels the .cmb uses to direct them then? Which mean I have no need for the Support01 label, since that is only relevant for the .cmb anyway?

Back to the spawn flags: In chapter 1, both Sully and Virion join. With your modifications, so does Phila. However, the three of them don't have identical bitflags. Which would mean that whatever causes them to actually join is something they have in common.

Lon'qu's bitflags have more differences though, so I'll give them another try.

One more thing: You circled the value 69 in the picture above, yet there is no label for it. Is the siginificance of that value unknown? I only noticed that this seems to be 69 in most cases but both Lon'qu and force-deploy crom have 79 here. Could this be more flags?

Thank you very much for your time and the updated image DeathChaos25.

Edit:

So I gave Lon'qu's bitflags another try. I also reverted Olivias team label back to what it originally was(Event01 again, instead of Support01) and I set X1/X2 and Y1/Y2 back to their original values(in hopes that the event might work as it should).

Result: The Event is broken(she doesn't show up, but the dialoge still works, so not a big deal).

AND: Olivia was in the Rooster afterwards. So the bitflags did the trick!

But it seems the character needs to be in a team that gets actually loaded(which is likely why it didn't work when I tried the right flags with the wrong label[support01]). Maybe because the added level never gets used by the script or something?

And it seems that the X/Y values don't interact with the bit-flags(all 0 might be nessesary for the character not to appear, but non 0 doesn't interfere with joining at the end of the chapter).

Now to see what happens in chapter 11(Dual-Olivias?). And what happens if I let her die/retreat between 10 and 11.

Edit2:

I wanted to see what would happen if Olivia dies first, so I had her get hit with a beautiful thunder-crit by a risen mage. But as it turned out, I was on casual, so she survived. Oh well....

Then I went and tried chapter 11, deployed Olivia and started the battle. And who shows up late? Another Olivia.

So now we have two of them...

Finished 11 to see if they both persist: They do. Saved and Reloaded to see if they still persit: They do.

Easiest way to fix this would probably be to set the 11-Olivia to team 2 and make her never enter the battle-field. Then it would just look like the already present Olivia is doing a speech.

Or maybe I could fiddle with the event directly?

Edited by IG88
Link to comment
Share on other sites

So after the Olivia change worked well enough for my purpose, I went on and tried to achieve what DeathChaos25 and TildeHat where attempting to do back here.
For the most part it worked great(Phila joined in the first chapter, the labels all worked etc.).
However, when the game was saved and reloaded, Phila turned into an Unknown unit(as was discovered by Favna over at GBAtemp).

History of my struggle with this:


When I tested it myself I experienced the same, and also made a few more observations:
After loading, the Unknown could support with my female Robin. Support was available until rank S and after viewing one support-level, the next became immideately available.
When rank S was reached, both Unknown and FRobin where married to Robin, which showed up as the husband for both units.

So I took another look at the files in the Phila archive. A good part of them seemed to be related to the dual-morgan experiment, which isn't really related to Phila. I identified 2 relevant files: data\dispos\001.bin(the file responsible for Phila joining) and data\person\static.bin(the file that adds, or should add Phila as an available unit).

I noticed a discrepancy here: in 001.bin the label for the unit to be added was PID_WORKT. While this label does exist in static.bin, it appears unused(I couldn't find a pointer pointing there). Instead, the label for Phila was PID_フィレインEV , which happens to be the same label associated with Phila in 009.bin , the file for the chapter where she meets her untimely end.

Anyway, since many of the parts of the new Phila unit in static bin where added at the end of the file, I decided to try a different way.
I thought that perhaps all the units need to be together, so I took a file where UnassumingVenusaur had already moved and repointed all the mystery pointer data to the end of the file.

I added an entry to the end of the current unit list(0x238 in size), edited the mystery pointer to point where the empty mystery pointer data was moved by UV, added labels for the new unit to the end of the file(PID,FID,JID,MPID and MPID_H) and added pointers(1 for the character block, one for each label and one for the mystery pointer, 7 total) to the front of the pointer list(so before where 0x4 points to).

Lastly I updated file-size(for the added labels at the end), the 0x4 pointer(to point to the new first pointer in the list), the pointer count at 0x8(from 03 07 to 0A 07) and 0xC which I assume is a count of the characters in the file(39 to 3A).

When I tried it, it seems I somehow messed up the pointer table, characters where missing their sprites(they turned to a blue priest-like glob) and trying to enter the support screen or the next chapter resulted in infinite hang.

I know I didn't add any pointers for the reclass-options and the parent pointer but that should just make reclassing unavailable and the parent pointer is not set (all 00) anyway.

So, anybody got an idea what I might have done wrong?
Just reverting the 0x4, 0x8 and 0xC values to what they had before my edits fixed the problems with sprites etc, but ofc no Phila.

Edit: Just noticed that the flip-subtract 0x20 order was wrong for my new 0x4 pointer...
Trying now with the right one

Edit2: Looks like that fixed some of it. Character sprites seem to be working ok for every friendly units. Philia shows up as a very Unknown unit now, her sprite is still that blue priest and her status screen is non-existent. It just shows the border and the map behind it. Her unit can not move and also messes up all units that are loaded after her in 001.bin. So both Sully and Virion are the same as her. And it looks like my edits broke the support menu still, everyone shows up as a blue priest there with ??? and unable to support. But at least it loads the menu now, so thats something I guess.

Looks like some pointers are still wrong somewhere...

Edit3: Are there maybe 2 pointer lists? Because I noticed that when I take the pointer list pointer from 0x4, convert that to an offset and add the ammount of pointers from 0x8 times 4(since each pointer has that length), I don't get to the end of the list of pointers.
It's like that even for the original(unmodified) static.bin. A bit after where I end up is an all 00 points though, which seems to be unique among the list;
Is this some kind of delimiter, and does the list go on for maybe 0xC values?

But it seems like some of the values in this second list are not pointers at all...

Edit4:So it looks like that second list is exactly 0xC times 8 long. At least for some of the later values, the first 4 seem to be a pointer to a character block(which would mean my pointer to the character block I added has no business beeing in the first block..). The other 4 don't seem to be a pointer tough.

So, seeing as there are 2 parts to the pointer table and I'm not entirely sure what belongs where, I'm not quite sure what to try next...

The first part seems to hold pointers to all the labels, support conversations and some other attributes of the characters blocks.
The second part hold pointers to the character blocks themselves, along with some unkown values(maybe a counter of something?).

It seems in the static.bin modified for phila, an entry has been added to the end of the second list.
But for that to work, the whole pointer table had to be moved...didn't that require a lot of repointing?
Apparently not, since I just managed to replicate that without issue. But Phila still doesn't want to remove her blue priest cloak...
At least she stopped bothering others with it and is now the sole victim of this affliction..

Yet another edit:

I tried a few things and have now replicated every thing the Phila files had, with 2 exceptions:

The PID labels:

In static.bin, we have 2 new labels:
PID_009_ フィレインEV this is the label used for Phila during her appearance in chapter 9. It is also used by her new character block in the file.
PID_WORKT this label is a mystery to me. It was after the 009 label it seems, but it's never used in the file from what I've seen. Nothing points to it...
But it appears again in 001.bin, and the character block for Phila there points to it...

So when it adds the character in Capter001, how is the correlation being made between the static-character and the dispos character?

The other problem is the second part of the values in in the second part of the pointer list:

After the amount of pointers specified in 0x8, a second set of values begins.
Their amount is like specified in 0xC and each of them has a length of 0x8.
Their format is: 0x4 that point to the beginning of a character block, and
another value that is 0x4 long. But I have no idea what the significance of that value is.
I noticed that the values there seem to be getting bigger the further down the file their character block is.
But there is no pattern I could notice by how much these values increase....

So I'm stuck. DeathChaos25, TildeHat or anyone else:
Any pointers you can give me?


Thanks to DeathChaos25, I now understand how the second value in the second pointer list works.

It is a pointer after all, but it's relative to the begin of the label list.
And the begin of the label list is at the end of the second pointer list. The second pointer list begins at the end of the first, so the offset that pointer needs to be relative to is:

0x4-offset + 0x8-value * 4 + 0xC-value * 8

So I'm back to trying to make Phila actually persist. But with what I know about static.bin now, I might just be able to make it work. Maybe.

Edit: I played arround with the PID-labels, now that I know how they are used with the second pointer list.
Conclusion: PID seem to only be matching between dispo and static bin and has no bearing on character appearance.

I was wondering how the 3D model and sound files are determined. They seem unrelated to the PID, maybe they are in some kind of bundle with the FID? Would it be possible to give a character the face of someone else while retaining the 3D-model, just by editing the static.bin?

On the matter of correctly saving Phila: Since everything looks correctly before saving(but i couldn't test some things since barracks and other things unlock in later capters) I assume that some data only relevant for saving is missing.
Since the MUs start out with some of their data missing and have a variable appearance, that must somehow be added when the MU is spawned for the first time in P002(P001 uses a different MU but also has their data auto-filled in).
Maybe it would be possible to make Phila a custom MU-like unit?
That might already work with save-editing(I think I'm gonna try that) but maybe it can be done with a special script in the .cmb file for the chapter she joins in?

Edited by IG88
Link to comment
Share on other sites

  • 1 month later...

Hello.

So, I unlocked all children Paralogues and unmarried the mothers, however, now I have a problem. The children don't inherit anything from the mothers, cannot support them and have no stat cap modifiers, is there something I can do to fix this?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...