ROM Hack Fire Emblem Fates: ROM Hacking General Thread

  • Thread starter Thread starter DeathChaos
  • Start date Start date
  • Views Views 339,507
  • Replies Replies 1,084
  • Likes Likes 18
So this is something I actually started working on fairly early last year and showed to UnassumingVenusaur, but... A lot of unfortunate things ended up happening and I ended up having no time for any kind of side projects until last week. I've picked it up again, and it's coming along very nicely -- I think I'll probably be able to toss out a release at some point in the next week or two.

So what is it? I'll let the screenshots be my opener:

omGN5WZ.png

FioTjZW.png

It's a full text editor for Fire Emblem, both Awakening and Fates. It can load .bin.lz files, .bin files, or .txt files, and save to any of those three formats. It can also display the conversation, much like FEITS (in fact, much of that side of things is a Java port of FEITS), though it goes further by having the ability to actually play the music and voice files (albeit imperfectly, as some names are directives stored in a way that I haven't had time to fully explore yet).

There are two text modes: regular mode and script mode.

The first screenshot is taken in Awakening mode and demonstrates the "script" mode for writing text. It's human-readable and, in my humble opinion, quite a bit nicer than trying to edit normal FE text!

There are two kinds of scripts: [SCRIPT] and [FORMATTED SCRIPT].

[SCRIPT] will automatically wrap and paginate text to ensure that it fits, taking into account use of $G and the maximum possible length of a player name. With [SCRIPT], every newline is treated as a directive to start a new page.

[FORMATTED SCRIPT] will assume that you know what you're doing and will not perform any kind of automatic wrapping. Every newline will be treated as a call for a newline, and every second newline will paginate. You will need to accommodate for $G and player name length yourself.

The second screenshot is taken in Fates mode and was the result of directly opening the セツナ_ヒノカ.bin.lz file with automatic script conversion turned off. That's right -- existing text can be converted into a script automatically!

So... Yeah, hopefully people will find this useful. It works for both support conversations and other text -- with support conversations you get the little C, B, A, and S tabs to move between things, but for other text you'll get tabs corresponding to their own text keys.

Edit: Oh, right, that thing at the bottom. It's a palette! It's in Audio mode in the screenshots -- pressing the buttons will play the audio corresponding to the button and put it into your clipboard (in script or raw mode, depending on your current settings) for pasting into a conversation.

It also has a graphical mode, which will let you click on portraits rather than audio buttons for similar copy/paste stuff.

Edit edit: One of the things currently in the works is a form of syntax highlighting for the script mode, so if that pans out it'll be a little prettier on release.
 
Last edited by SecretiveCactus,
Wow. I started working on my own text editor a little while back, but this blows it out of the water. Between integration with FEITS, audio support, and support for existing files, you've implemented just about every feature someone could want from a Fates/Awakening text editor. I'm excited to start using it - keep up the great work!
 
  • Like
Reactions: SecretiveCactus
Wow. I started working on my own text editor a little while back, but this blows it out of the water. Between integration with FEITS, audio support, and support for existing files, you've implemented just about every feature someone could want from a Fates/Awakening text editor. I'm excited to start using it - keep up the great work!

Thanks -- it's been a fun project, and I'm excited to finally be in the concluding stages!

One thing that I realized that I forgot to mention in my earlier post is the way that it handles avatars and the hair colors for children. Rather than the FEITS way, with the little set of boxes, there's an avatar customization dialog that allows you to store and load as many avatars as you'd like with the click of a button! Hair colors for children can be chosen individually and tied to a specific avatar.

Edit: Oh, and thank you for your awesome set of tools! I've been poking at them, and they're very useful. Your support creator and script editor in particular go very nicely with the text editor -- they provide easy ways to add new supports and battle conversations!
 
Thanks -- it's been a fun project, and I'm excited to finally be in the concluding stages!

One thing that I realized that I forgot to mention in my earlier post is the way that it handles avatars and the hair colors for children. Rather than the FEITS way, with the little set of boxes, there's an avatar customization dialog that allows you to store and load as many avatars as you'd like with the click of a button! Hair colors for children can be chosen individually and tied to a specific avatar.

Edit: Oh, and thank you for your awesome set of tools! I've been poking at them, and they're very useful. Your support creator and script editor in particular go very nicely with the text editor -- they provide easy ways to add new supports and battle conversations!

If you wouldn't mind, could you post some kind of visual guide on how the tool works? I'd love to start using it but I'd hate to screw it up or something.
 
  • Like
Reactions: SecretiveCactus
If you wouldn't mind, could you post some kind of visual guide on how the tool works? I'd love to start using it but I'd hate to screw it up or something.

It will have detailed documentation when it's released, don't worry! It's not hard to use at all, but I'm being extremely thorough in describing its various usages.
 
So this is something I actually started working on fairly early last year and showed to UnassumingVenusaur, but... A lot of unfortunate things ended up happening and I ended up having no time for any kind of side projects until last week. I've picked it up again, and it's coming along very nicely -- I think I'll probably be able to toss out a release at some point in the next week or two.

So what is it? I'll let the screenshots be my opener:

omGN5WZ.png

FioTjZW.png

It's a full text editor for Fire Emblem, both Awakening and Fates. It can load .bin.lz files, .bin files, or .txt files, and save to any of those three formats. It can also display the conversation, much like FEITS (in fact, much of that side of things is a Java port of FEITS), though it goes further by having the ability to actually play the music and voice files (albeit imperfectly, as some names are directives stored in a way that I haven't had time to fully explore yet).

There are two text modes: regular mode and script mode.

The first screenshot is taken in Awakening mode and demonstrates the "script" mode for writing text. It's human-readable and, in my humble opinion, quite a bit nicer than trying to edit normal FE text!

There are two kinds of scripts: [SCRIPT] and [FORMATTED SCRIPT].

[SCRIPT] will automatically wrap and paginate text to ensure that it fits, taking into account use of $G and the maximum possible length of a player name. With [SCRIPT], every newline is treated as a directive to start a new page.

[FORMATTED SCRIPT] will assume that you know what you're doing and will not perform any kind of automatic wrapping. Every newline will be treated as a call for a newline, and every second newline will paginate. You will need to accommodate for $G and player name length yourself.

The second screenshot is taken in Fates mode and was the result of directly opening the セツナ_ヒノカ.bin.lz file with automatic script conversion turned off. That's right -- existing text can be converted into a script automatically!

So... Yeah, hopefully people will find this useful. It works for both support conversations and other text -- with support conversations you get the little C, B, A, and S tabs to move between things, but for other text you'll get tabs corresponding to their own text keys.

Edit: Oh, right, that thing at the bottom. It's a palette! It's in Audio mode in the screenshots -- pressing the buttons will play the audio corresponding to the button and put it into your clipboard (in script or raw mode, depending on your current settings) for pasting into a conversation.

It also has a graphical mode, which will let you click on portraits rather than audio buttons for similar copy/paste stuff.

Edit edit: One of the things currently in the works is a form of syntax highlighting for the script mode, so if that pans out it'll be a little prettier on release.

Oh my god this is going to be the most useful thing for fixing my dialogue errors that pop up in @Omegablu's custom DLC. The main reason I havent been writing is because I worry that even if I get the text, I'll probably have to change it anyway due to line spacing or whatever.
 
Bit of a status update: syntax highlighting is coming along very well, as shown below.

Brq1Jkz.png

Each script command can recognize valid and invalid values, and will highlight accordingly. This is actually not a screenshot of the current state -- script mode lexing is almost finished, while this just shows off ENTER and BGM. My next step is going to be lexing for normal mode, so that it's somewhat easier to recognize control codes and so on.

Lexing can of course be disabled for those who prefer simple text!
 
@thane98 You mentioned development tools earlier for model editing? I'm afraid I don't know what those are. Is it something that can't be said here?
 
Me again! All of the core features are more-or-less fully implemented, so I'm down to running tests, cleaning up the code, and making a nice user guide. I think a release by the end of the weekend (or perhaps Monday) should be entirely possible!

Here are some screenshots of the My Unit creator/child hair color selector (which works on a per-MU basis):

Awakening Mode:
u29idEB.png

IWqVBdd.png

Fates Mode:
Yi7Zvs7.png

GA2nZMq.png

And one of the first page of the user documentation:
esK2TDn.png

Edit: Oh hey, posting this made me notice a typo in the documentation. Yay!
 
Last edited by SecretiveCactus,
Me again! All of the core features are more-or-less fully implemented, so I'm down to running tests, cleaning up the code, and making a nice user guide. I think a release by the end of the weekend (or perhaps Monday) should be entirely possible!
Edit: Oh hey, posting this made me notice a typo in the documentation. Yay!

Awesome tool, looking forward to it. When SoV comes around, I'll probably modify it instead of FEITS...one thing I hated about FEITS was that I didn't have the skills required to make a good GUI.

I'm sure you're aware, too, but friendly reminder that FEITS is licensed under the GPLv3, so this'll need to be GPL licensed too :)
 
  • Like
Reactions: SecretiveCactus
Awesome tool, looking forward to it. When SoV comes around, I'll probably modify it instead of FEITS...one thing I hated about FEITS was that I didn't have the skills required to make a good GUI.

I'm sure you're aware, too, but friendly reminder that FEITS is licensed under the GPLv3, so this'll need to be GPL licensed too :)

Oh, awesome! I'd love to see people hack at my little tool to extend it as new games come along. I'm perfectly willing to do so myself, of course, but one of the great benefits of open source software is that everyone can chip in.

And I'm aware, yep! It's under GPLv3 as well, no worries. Licenses are something that I'm extremely careful about.
 
  • Like
Reactions: SciresM
Oh, awesome! I'd love to see people hack at my little tool to extend it as new games come along. I'm perfectly willing to do so myself, of course, but one of the great benefits of open source software is that everyone can chip in.

And I'm aware, yep! It's under GPLv3 as well, no worries. Licenses are something that I'm extremely careful about.

Awesome.

SoV looks like it'll use the exact same format as If/Fates for scripting, by the way -- I dumped some Heroes messages, see anything familiar? ;)

MID_SCENARIO_OPENING_BGM: BGM_EVENT_SERIOUS_02
MID_SCENARIO_OPENING_IMAGE: 001_Brave
MID_SCENARIO_OPENING: $WmMEID_ヴェロニカ,ch00_04_Veronica_F_Normal,Face|$w0|Scurry, scurry, little Heroes... Steal\nfor me. Spread destruction. Kill all\nthose who stand in your way.$k$p$EFace_Anger|This kingdom must fall. Once it's\ngone, no one will oppose me.$k$pEvery Hero, in every world—they'll\nall be mine. Every last one.$k$p$WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Anger|$w0|We won't allow it, Princess Veronica.\nAnd I will personally never forget\nthis violation of my kingdom!$k$p$WmMEID_ヴェロニカ,ch00_04_Veronica_F_Normal,Face|$w0|Oh, it's you. And after I went\nthrough all that trouble to arrange\nyour playdate.$k$p$EFace_Pain|Now, who are YOU, stranger? You\nhave that silly relic. Then you must\nbe the legendary summoner.$k$p$EFace_Anger|No matter. It simply means that\nyou must be the first to die.\nOh...Xander!$k$p$WmMPID_マークス,ch05_21_Marks_M_Normal,Face|$w0|You wish this one slain, Princess\nVeronica? As you wish.$k$p$WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Pain|$w0|No! She has Xander, one of the\nmost powerful Heroes from\nthe World of Conquest.$k$p$WmMPID_シャロン,ch00_02_Sharon_F_Normal,Face_Anger|$w0|Don't worry. We'll protect you,\n$Nu.$k$p$WmMPID_アンナ,ch00_03_Anna_F_Normal,Face_Cool|$w0|Get ready, everyone. Let's show this\nrotten princess what the Order of\nHeroes can really do!$k$Sbs150|
MID_TUTORIAL_2: $WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Smile|$w0|$SspVOICE_TUTORIAL_D|To use a unit's Assist Skill, move\nthe unit onto another one.$k

My plan is to, over the next month or so, re-write FEAT completely -- every time I use the tool I cringe a little at how poorly written it is.

Was also planning on extending FEITS when the time came....but this looks like a much better thing to hack away at :)
 
Awesome.

SoV looks like it'll use the exact same format as If/Fates for scripting, by the way -- I dumped some Heroes messages, see anything familiar? ;)

MID_SCENARIO_OPENING_BGM: BGM_EVENT_SERIOUS_02
MID_SCENARIO_OPENING_IMAGE: 001_Brave
MID_SCENARIO_OPENING: $WmMEID_ヴェロニカ,ch00_04_Veronica_F_Normal,Face|$w0|Scurry, scurry, little Heroes... Steal\nfor me. Spread destruction. Kill all\nthose who stand in your way.$k$p$EFace_Anger|This kingdom must fall. Once it's\ngone, no one will oppose me.$k$pEvery Hero, in every world—they'll\nall be mine. Every last one.$k$p$WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Anger|$w0|We won't allow it, Princess Veronica.\nAnd I will personally never forget\nthis violation of my kingdom!$k$p$WmMEID_ヴェロニカ,ch00_04_Veronica_F_Normal,Face|$w0|Oh, it's you. And after I went\nthrough all that trouble to arrange\nyour playdate.$k$p$EFace_Pain|Now, who are YOU, stranger? You\nhave that silly relic. Then you must\nbe the legendary summoner.$k$p$EFace_Anger|No matter. It simply means that\nyou must be the first to die.\nOh...Xander!$k$p$WmMPID_マークス,ch05_21_Marks_M_Normal,Face|$w0|You wish this one slain, Princess\nVeronica? As you wish.$k$p$WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Pain|$w0|No! She has Xander, one of the\nmost powerful Heroes from\nthe World of Conquest.$k$p$WmMPID_シャロン,ch00_02_Sharon_F_Normal,Face_Anger|$w0|Don't worry. We'll protect you,\n$Nu.$k$p$WmMPID_アンナ,ch00_03_Anna_F_Normal,Face_Cool|$w0|Get ready, everyone. Let's show this\nrotten princess what the Order of\nHeroes can really do!$k$Sbs150|
MID_TUTORIAL_2: $WmMPID_アルフォンス,ch00_01_Alfons_M_Normal,Face_Smile|$w0|$SspVOICE_TUTORIAL_D|To use a unit's Assist Skill, move\nthe unit onto another one.$k

My plan is to, over the next month or so, re-write FEAT completely -- every time I use the tool I cringe a little at how poorly written it is.

Was also planning on extending FEITS when the time came....but this looks like a much better thing to hack away at :)

They really like that format, don't they? That looks very slightly different in the way it handles the emotions (they're in English, and is that thing in the middle a reference to the image or something?) and doesn't appear to specify a side for character portraits, but otherwise very much in line with what we've seen thus far. It shouldn't be a problem at all to extend the editor to accommodate that, hahaha.
 
They really like that format, don't they? That looks very slightly different in the way it handles the emotions (they're in English, and is that thing in the middle a reference to the image or something?) and doesn't appear to specify a side for character portraits, but otherwise very much in line with what we've seen thus far. It shouldn't be a problem at all to extend the editor to accommodate that, hahaha.
That format is probably easy for them to understand. Did Awakening have that same format too or did it start at Fates?
 
  • Like
Reactions: SecretiveCactus

Site & Scene News

Popular threads in this forum