ROM Hack Fire Emblem Conversation Editor (Awakening/Fates)

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
That's it.

That's fucking it. You've done it. You've killed FEITS, and with it, you've killed me with happiness and sheer glee. Are you happy now, you *bastard?!!*

Depends. Do I get some kind of award for killing you? Maybe at least some strawberries?


This is the best goddamn thing I have ever seen in my life. Holy fuck this is one comprehensive, well-thought out program. Sound, a nice GUI, Fates and Awakening support, easy editing, great documentation....

Are you TRYING to make me need a new pair of pants?!!!

Well I wasn't before, but now that you mention it...


Seriously, as the guy who localized FEITS, this is the best fucking thing I have ever seen in my life.

Wow. What do I say to that? Thank you very mu-


The only qualms I have about it are:

Uh-oh.


A. It uses not-Github. Github is kinda the defacto standard for a reason.

I understand that, I really do -- see my reply here for why that wasn't an option in this case. I wasn't going to use my normal GitHub account for a ROM-hacking project, obviously, and since I appear to have mysteriously lost an e-mail (which is odd, because all three that I actually use are accounted for) there's not much I can do about it without making another one with another name... And I like cacti, and GitLab is nice. It doesn't lose out to GitHub, in my mind!


B. It uses mp3s, instead of grabbing the sounds and streams from the BSCARs and .bcstm files respectively. (i.e. no looping and lower quality.)

This is an extremely valid point, but I'm afraid that implementing the entire codec in such a way that JavaFX could work with it is rather beyond the scope of a little project like this, at least for now! Maybe someday, but... I'm afraid that isn't my specialty, so it'd be a long time coming.


C. It's difficult and unclear to set-up. All the files should be downloaded at once. None of this a la carte business. (Or, at the least, if you do a la carte, have the download packs more obviously linked, in with the "how-to" guide.

Another very valid point. The reason I split it up was because of how large the download would have been if it had all come together -- especially with the Fates BGM. That's huge! One thing that I definitely will do soon, though, is add them to the guide. Not doing that was a ridiculous oversight on my part.


But complaining about those is like complaining that the beautiful, gold-plated horse you just found has a small fly hovering around his nose. Seriously this program is amazing. Holy shit. I love this program and I love YOU. And if you ever need the Awakening or Fates PNGs from the DLC, I've uploaded them here.

Well that's a flattering ending! I'm sincerely glad you like the program, and I certainly hope to improve it further over time. There's already some backend work that I want to get done -- nothing visible to end users, for the most part, but things related to performance and extensibility. Maybe add in some kind of test to make sure that a conversion successfully produced something that could be run... That would be extremely simple...

Uh, anyway, thanks for the love and all that. Seeing someone so excited about my little tool definitely brought a smile to my face.
 

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,292
Country
United States
That's fucking it. You've done it. You've killed FEITS

I, too, am happy FEITS is dead. I tried to maintain it and gave up because it was terrible and I designed it all wrong from the start.

By the way,
And if you ever need the Awakening or Fates PNGs from the DLC, I've uploaded them here.

Any reason you never just added em to FEITS? FEITS just stores the concatenated data partitions of facedata.bin for base_game + all DLCs it knows about, and uses the character list .txt resource to know what index a character's at.
 

ValiantChan

Well-Known Member
Member
Joined
May 24, 2016
Messages
105
Trophies
0
XP
735
Country
Hong Kong
That would be great, thank you! It would be a great starting point. I can handle quick testing to make sure they work the same way in both games if I know what to be testing for, haha.
  • $Wc$Sbv40|1000|$Fo1000|$Sbv100|1000|$Fi1000| = Fade to black/Scene change/Whatever you want to call it, I'm sure you get the point
Awakening sound effects:
  • $SlpSE_EVT_BEE1|1000| = Bees (from Gaius/Sumia)
  • $Wc$Wsシンシア|$Wd$w500|$SspSE_EVT_DOWN1|$w500| = Person falling (シンシア is Cynthia - replace that with the katakana of whoever's falling)
Fates sound effects:
  • $Wc$w200|$SspSE_EVT_SWORD_MISS|$w800| = Attack miss
  • $Wc$w200|$SspSE_EVT_DAMAGE2|$w800| = Critical hit
  • $Wc$w200|$SspSE_EVT_DAMAGE1|$w800| = Hit
  • $Wc$w200|$SspSE_EVT_BOW_SHOT_DAMAGE|$w800| = Bow shot
  • $Wc$w200|$SspSE_EVT_MISS1|$w800| = Bow shot miss
  • $Wc$w500|$SspSE_EVT_ICE|$w500|$SlpSE_EVT_WIND1|1000| = Blizzard (from Flora/M!Corrin S)
  • $Wc$w200|$SspSE_EVT_DRAGON_VOICE1| = Wyvern noise
  • $Wc$w200|$SspSE_EVT_DISH_BREAK|$w800| = Dish breaking
  • $Wc$w200|$SspSE_EVT_BODYFALL|$w800| = Person falling
That's all I have at the moment.
 

robotortoise

Well-Known Member
Member
Joined
Jan 12, 2012
Messages
100
Trophies
0
Location
Arizona
XP
190
Country
United States
I, too, am happy FEITS is dead. I tried to maintain it and gave up because it was terrible and I designed it all wrong from the start.

By the way,


Any reason you never just added em to FEITS? FEITS just stores the concatenated data partitions of facedata.bin for base_game + all DLCs it knows about, and uses the character list .txt resource to know what index a character's at.

I actually added the PNGs and named them properly, but never bothered implementing them. DeathChaos looked into it yesterday... right before this program was released.

¯\_(ツ)_/¯

--------------------- MERGED ---------------------------

The reason I split it up was because of how large the download would have been if it had all come together -- especially with the Fates BGM. That's huge!

Well, I was thinking you could have Fates and Awakening each as their own game archives. Maybe have the music separately archived for both games.

As for the SFX, maybe just using 128kbps mp3s would work, quite honestly. That's high enough quality for most people not to notice the difference.

Do you think you could get the bcstm files working, though? Vgmstream has an implementation.
If not, I guess you could do the same for them. 128kbps mp3s would be good enough.


I do have a kind of crazy idea, though. The biggest thing making the install take a while is all the small files. I wonder...is there any way you could merge them into one large file?

Maybe make a ".resource" file for each asset pack - in actuality, a renamed zip/7z file. The renamed extend would tell people that it's not meant to be extracted. :P
 
  • Like
Reactions: SecretiveCactus

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Before I give responses, check the OP for a new release -- it's a small fix for a bug that caused the final lines in some conversations to lose its $k, meaning it would just swoosh by. It was a remnant from an earlier version of the editor that had some management related to line endings that got stripped out before the final release... But I missed a spot, apparently. If you were working with just scripts, this has absolutely no effect on you.

  • $Wc$Sbv40|1000|$Fo1000|$Sbv100|1000|$Fi1000| = Fade to black/Scene change/Whatever you want to call it, I'm sure you get the point
Awakening sound effects:
  • $SlpSE_EVT_BEE1|1000| = Bees (from Gaius/Sumia)
  • $Wc$Wsシンシア|$Wd$w500|$SspSE_EVT_DOWN1|$w500| = Person falling (シンシア is Cynthia - replace that with the katakana of whoever's falling)
Fates sound effects:
  • $Wc$w200|$SspSE_EVT_SWORD_MISS|$w800| = Attack miss
  • $Wc$w200|$SspSE_EVT_DAMAGE2|$w800| = Critical hit
  • $Wc$w200|$SspSE_EVT_DAMAGE1|$w800| = Hit
  • $Wc$w200|$SspSE_EVT_BOW_SHOT_DAMAGE|$w800| = Bow shot
  • $Wc$w200|$SspSE_EVT_MISS1|$w800| = Bow shot miss
  • $Wc$w500|$SspSE_EVT_ICE|$w500|$SlpSE_EVT_WIND1|1000| = Blizzard (from Flora/M!Corrin S)
  • $Wc$w200|$SspSE_EVT_DRAGON_VOICE1| = Wyvern noise
  • $Wc$w200|$SspSE_EVT_DISH_BREAK|$w800| = Dish breaking
  • $Wc$w200|$SspSE_EVT_BODYFALL|$w800| = Person falling
That's all I have at the moment.

Ah, yes, that chain. My problem is that I'm not entirely certain of what each part of it is doing and haven't had time to poke at them to see, but having it on the page is definitely going to help me focus my attention!

Well, I was thinking you could have Fates and Awakening each as their own game archives. Maybe have the music separately archived for both games.

Maybe I'm missing something, but I'm not quite sure how that's different from what I have -- unless you mean adding the actual sound effects to the core archives, which is certainly a possibility!

As for the SFX, maybe just using 128kbps mp3s would work, quite honestly. That's high enough quality for most people not to notice the difference.

The ones included in the sound packs should be 128kbps -- did something explode there?

Do you think you could get the bcstm files working, though? Vgmstream has an implementation.
If not, I guess you could do the same for them. 128kbps mp3s would be good enough.

It's certainly not impossible, though if I recall correctly Vgmstream is written in C and uses a number of external DLLs, which gives it a different kind of base. Further, making it work with JavaFX is another layer to it. Can I do it? I'm sure I could, but the question is whether or not the amount of time it would take would be worth it, and I'm not sure that it is.

I do have a kind of crazy idea, though. The biggest thing making the install take a while is all the small files. I wonder...is there any way you could merge them into one large file?

Maybe make a ".resource" file for each asset pack - in actuality, a renamed zip/7z file. The renamed extend would tell people that it's not meant to be extracted. :P

This seems possible, though JavaFX Media objects require a filepath rather than a stream of bytes, and the temporary extraction could be a notable slowdown... Though hm, perhaps I could...

I'll get back to you on this one.
 
Last edited by SecretiveCactus,
  • Like
Reactions: robotortoise

king_frost93

Member
Newcomer
Joined
Jan 18, 2017
Messages
13
Trophies
0
Age
28
XP
68
Country
United States
There's one thing I'm wondering about the program.

It's possible to add new units to the GameData.bin file and give them support IDs. I guess my main question is if the program is built to handle that (not likely) and if not, if it's possible for me to edit the program to get around it.
 

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
It is, actually! All you need to do is edit the PID.xml, FID.txt, and faces.bin. FID.txt is the trickiest of them, because it's sequential -- if you replace something or put it earlier in the list, you'll need to adjust accordingly. If you just added a new character at the end of the faces section, it's fine to just append the new one to the end.

For faces.bin, just add the new data related to the character's portrait offsets for blushing, etc like you did to the game's files -- the whole block. Done.

You'll want to add an entry to PID.xml as well. PID.xml is found in the directory for your active language within the game mode that you're editing. PID.xml just takes the Japanese name -- that, what you would use when writing text normally -- and ties it to an English/insert other language here name for use in scripts and the simulator.
 
  • Like
Reactions: king_frost93

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Ah, so the FEITs implementation?

This should make importing the DLC portraits easy.

Yeah, I stuck with that one! I'm considering migrating it all to XML, but this was easy to do as a first draft kind of thing. Mining the values out and storing them wouldn't be hard either, of course...
 

ValiantChan

Well-Known Member
Member
Joined
May 24, 2016
Messages
105
Trophies
0
XP
735
Country
Hong Kong
Another small issue: In script mode, Smiling 2 just gets read as Smiling, and thus the character uses the standard Smiling sprite. Clicking on Convert to Game, the code shows $E笑,| instead of $E笑2,|.
 
  • Like
Reactions: SecretiveCactus

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Another small issue: In script mode, Smiling 2 just gets read as Smiling, and thus the character uses the standard Smiling sprite. Clicking on Convert to Game, the code shows $E笑,| instead of $E笑2,|.

Ah, really? Must have messed something up with spaces. I'll dig in and take a look, thanks!

Edit: Yep, that's exactly what happened. I just pushed a fix and I'll be putting up an updated release in the next few minutes.

Edit edit: It's up.
 
Last edited by SecretiveCactus,

DeathChaos

Unmei wo koeru!
Member
Joined
Oct 21, 2015
Messages
1,364
Trophies
0
Age
28
XP
1,724
Country
Puerto Rico
4f9e446a9e9b41158b63293859454547.png


Well, this was easy enough.
 

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Awesome! Looks like there's some stuff going on with the text codes present in that file that's messing with script conversion and thus highlighting, though... Would you mind sending it over to me so I could poke at it?
 
  • Like
Reactions: robotortoise

DeathChaos

Unmei wo koeru!
Member
Joined
Oct 21, 2015
Messages
1,364
Trophies
0
Age
28
XP
1,724
Country
Puerto Rico
Awesome! Looks like there's some stuff going on with the text codes present in that file that's messing with script conversion and thus highlighting, though... Would you mind sending it over to me so I could poke at it?
Ryoma's portrait actually looks like that when highlighted, so it's working correctly.
7397fd2256aa4b8eb7a644f86d43604b.png


There IS however a small problem that prevents the program from opening DLC text files without some renaming.

E000 is the global name for any and all DLC text files, the problem is, while the file itself will always be named E000, and open with MESS_ARCHIVE_E000, he text lines themselves will never be prefaced with E000, for example, Heirs of Fates 6 uses E040 instead of E000, thus preventing the program from opening the file correctly.

Of course, renaming both instances of E000 to E040 fixes this, but maybe you might want to put a note somewhere for it, I attached said file as an example.

That said, I DID find a small intricacy with how the game handles battle conversations that makes the editor slightly confused and makes it display some stuff wrong, this only happens when converting to script however, the Shiro Ryoma ones and the Caeldori Subaki ones are good examples, it has to do with how the game handles the $p usage mid convos in "weird" spots.
 

Attachments

  • E000.txt
    85 KB · Views: 362
  • Like
Reactions: SecretiveCactus

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Oh, now that is interesting... And yeah, the $p thing that was visible in the actual text is what I was referring to, not the fact that the portrait wasn't highlighted! I meant the syntax highlighting, haha.

Are those MPID name definitions in the file alongside everything? I'm going to need to come up with an approach for handling those, since I don't think the editor will play nicely with them as-is... Hadn't expected to see that kind of thing outside of the GameData text file.

Definitely thanks a lot for sending that over -- it's shown me a number of things that I need to look at!
 
Last edited by SecretiveCactus,
  • Like
Reactions: robotortoise

DeathChaos

Unmei wo koeru!
Member
Joined
Oct 21, 2015
Messages
1,364
Trophies
0
Age
28
XP
1,724
Country
Puerto Rico
Yeah, the MPIDs are indeed in the file, I've attached my edited resources to this post if you don't want to add them manually.

Portraits can be found here.

A good suggestion for names could be, I could rename this from "HoF" to "DLC", so for example, "DLCRyoma" and "DLCShiro", you could just add a check to prevent the "DLC" string from appearing in the character portrait String, or something.
 

Attachments

  • HoF6Resources.7z
    12.2 KB · Views: 229

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Yeah, the MPIDs are indeed in the file, I've attached my edited resources to this post if you don't want to add them manually.

Portraits can be found here.

A good suggestion for names could be, I could rename this from "HoF" to "DLC", so for example, "DLCRyoma" and "DLCShiro", you could just add a check to prevent the "DLC" string from appearing in the character portrait String, or something.

Oh awesome, thanks! That'll save me some time. And yeah, making things display correctly will be easy -- what I actually meant was setting it up so that the editor could load files that include those and not have them vanish off into the ether when saved, since it won't be correctly recognizing non-MID lines.

Oh well, keeps me on my toes!
 

SecretiveCactus

Active Member
OP
Newcomer
Joined
May 6, 2016
Messages
40
Trophies
0
XP
232
Country
United States
Words in $G seem to be getting replaced, so for example $Ghis,her| will for some reason become $He,She|.

Now that's a bizarre one. I'd seen some form of most of these and ironed them out (only for them to apparently slip back in later), but that one? Not so much. In fact, I just loaded a text file using $G and didn't have that happen at all... When is it occurring? Could you send me the file in question so I can look at it?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: https://gbatemp.net/profile-posts/163064/