ROM Hack [WIP] Paragon (Fire Emblem Fates)

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
2020 Update: At this point, I've created new tools that supersede everything from the original post. This includes FEFEditor. So, I've remade this post to feature the new tools instead. If you need the original FEFEditor, you can find the original post in the spoiler marked "Original Post".

I've created three tools for 3DSFE rom hacking: Paragon, Exalt, and BCSAR View. You can find details on each tool and download links below.

Paragon: The next iteration of FEFEditor and FEFNightmare. Unlike its predecessors, Paragon operates on an entire ROM instead of individual files so that it can see common data between files, tables, etc. This leads to a more streamlined editing process. You can edit most data in FE13, FE14, and FE15 using Paragon, though FE14 (Fates) has the most features currently. While Paragon is still in an alpha state, it's already more stable than FEFEditor. I'd highly recommend upgrading to Paragon if you are still using FEFEditor.

Paragon Downloads: https://github.com/thane98/paragon/releases
Paragon Source and README: https://github.com/thane98/paragon

You can find an excellent series of tutorials on how to use Paragon here.


Exalt: A successor to Fates Script. Compared to Fates Script, Exalt produces higher quality scripts that are closer to what you'd expect from a normal programming (or scripting) language. If you had trouble editing scripts in the past due to Fates Scripts's bizarre syntax, I would recommend giving Exalt a try.

Exalt Downloads: https://github.com/thane98/Exalt/releases
Exalt Source and Tutorial: https://github.com/thane98/Exalt


BCSAR View: An editor for 3DS sound archives. It supports dumping and inserting new wave sounds, sound sets, and archives. You can also dump sequences, banks, and groups.

BCSAR View Downloads: https://github.com/thane98/BCSAR-View/releases
BCSAR View Source and README: https://github.com/thane98/BCSAR-View


FEFEditor is a general purpose ROM hacking tool for Fire Emblem Fates. With it, you can edit or create new characters, chapters, or items with ease. You can edit the vast majority of files that a hacker would want to change in Fire Emblem Fates without ever needing to touch a hex editor. As of update 5, FEFEditor also comes with a small set of tools for editing Fire Emblem Awakening.

Additionally, FEFEditor comes packaged with FEFNightmare and Fates Script. FEFNightmare is a powerful tool for editing the .bin format used in the 3DS Fire Emblem games. It provides a simple, text-based format for mapping out file tables and creating both standing editors and injectors. Fates Script, as its name suggests, allows you to edit script (.cmb) files.

To get started, simply download the FEFEditor package from the link below and ensure that your version of Java is up to date.

Download: http://www.mediafire.com/file/mug1w138vzafujh/FEFEditor_Update_5-4.zip/file
Source: https://github.com/thane98/FEFEditor
Updated Nightmare Modules: https://github.com/VelouriasMoon/FEFNightmare-Modules


Credits:
  • SecretiveCactus, SciresM, and Einstein95 - Both FEFEditor and FEFNightmare make use of code for handling lz11 compressed files. The code used for this is derived from Einstein95's DSDecmp and SciresM's FEAT. That code was ported over to Java by SecretiveCactus.
  • Hextator - The developer of Nightmare 2.0, which FEFNightmare uses as a base.
  • RainThunder - Developed the original scripts for injecting data into Fates' bin files and created Fates' Nightmare modules. A huge portion of this program was created using his resources as a reference.
  • DeathChaos25, TildeHat - For their general contributions to the 3DS Fire Emblem hacking scene.
  • Moonling - Provided additional Nightmare modules and made improvements to existing ones.
Updates
FEFEditor:
  • Merged all editors into a single window.
  • The GUI is now styled using a modified version of JMetro8, not JFoenix.
  • Most textfields that require Japanese labels now have an autocomplete function. You can enter in the prefix and the english name to get the correct, Japanese version. Ex. Selecting the autocomplete function for IID_Thunder will fill the field with IID_サンダー.
  • Added an editor for text files with lots of entries like GameData and GMap.
  • The IndirectSound Editor is now a part of FEFEditor itself.
  • The map config editor has been replaced with a module that performs the same function.
  • Added a "Make Chapter" option to the main menu for copying all of the files needed to create a new chapter.
  • Removed the game selection menu. Replaced it with a mode menu for Awakening, Fates Base Game, and Fates DLC.
  • Rewrote the code for the dispo, person, and join editors to make exporting files as accurate as possible.
  • Fixed a critical bug with the dialogue editor that caused the first message line in every text file to get cut off when exporting.
IndirectSound Editor:
  • Added a field for editing a sound's tag bytes.
  • Added an option for batch configuring tag bytes.
  • Adjusted the "Add Character" function to properly assign damage lines.
  • Fixed a bug which caused the "Add Character" function to fail if a cured line was in the voice set.
Support Editor:
  • Supports.xml is no longer needed. The editor will now connect support tables to character blocks by using support IDs.
  • Characters are now added through the "Add Character" option. You no longer need to know the support ID and character ID beforehand - just select a character from a list of characters without support tables and the editor will take care of the rest.
Dispo Editor:
  • Fields are now categorized to make finding the field you want easier.
  • Changes made to fields are now immediately written to the block. No saving required.
  • The dispo grid now scales to fill its pane.
  • Added fields for changing spawn coordinates.
  • Replaced all of the bitflag fields with proper HexFields from FEFNightmare.
  • Revised the colors used in the dispo grid.
Castle Join Editor and Person Editor:
  • Changes made to the fields are now immediately written to the block.
FEFNightmare:
  • Condensed everything into a single window.
  • The GUI is now styled using a modified version of JMetro8, not JFoenix.
  • Spinners and textfields now automatically write to the block when their values change. No hitting enter required.
  • Added a function for copying data from one block to another. By default, the function will only copy non-text data.
  • Added modules for map config, museum, and GameData's field files.
  • Added an AID injector for unique class models and a normal injector for person files.
  • Modules can now be categorized.
  • Rewrote the module parsing code. Removed lots of unused Nightmare 2 code from the project.
Fates Script 3:
  • Tweaked the menubar and tab pane to match FEFEditor/FEFNightmare.
  • Events are properly numbered like they were in the original Fates Script.
  • Fixed a bug which prevented .fscript files from appearing in the open file dialog.
  • Added a new editor for IndirectSound.bin
  • Added FaceData modules and injectors for both Awakening and Fates.
  • Added a new AID injector based off of Azama's AID.
  • Added a new module for editing castle_building.bin
  • Added a new control to FEFNightmare for viewing labels in place of pointer values. Here's a demonstration.
  • Added a new rendition of Fates Script with a tweaked script format and support for scripts from both Awakening and Echoes.
  • Added placeholder menus for Awakening and Echoes editors.
  • Added a "Duplicate Block" option to the dispos editor.
  • Added hotkeys for various menu options in the dispos editor.
  • Fixed a bug which would cause blocks to always use their X1/Y1 coordinate on the dispos grid when editing X2/Y2.
  • Reworked FEFNightmare and added in a way to create module-based injectors. Character, Chapter, Item, and AID injection is now handled through this new version of FEFNightmare instead of the old tools.
  • Added a support editor for DLC files.
  • Redid every remaining editor's UI to match the new look.
  • Added injectors for custom classes and skills.
  • Lots of additional changes related to FEFNightmare specifically. There are too many to spend time listing them all out.
Download: http://www.mediafire.com/file/db10flocaae4796/FEFEditor_Update_1.zip
  • Added a dialogue editor for DLC files.
  • Updated the GUI for the config editor and dialogue editor to use material design libraries. The other editors will receive similar overhauls in the next update.
  • Made some small tweaks to the default window sizes for the main window and dialogue editor.
 
Last edited by thane98, , Reason: FEFEditor -> Paragon

DeathChaos

Unmei wo kaeru!
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
27
XP
1,660
Country
I needed this Nightmare replacement so badly, I'd literally just use HxD 80% of the time just to not deal with Nightmare 2.

Also, this event editor looks really really nice, might actually be using it a lot, so expect some feedback ;)
 

uchiho

New Member
Newbie
Joined
Jan 18, 2017
Messages
2
Trophies
0
Age
28
XP
33
Country
Cote d'Ivoire
Wow, pretty cool. Thank you a lot! I'm sure I'll use this xd

I'm also trying to change some stuff on the Decrypted CIA files from the .cia game (I'm using "Decrypt9WIP" and "HackingToolkit3DS" from @Asia81's Tutorial) but when I try to extract the models files, they
have some ".ctpk.lz" extension, imposible to extract nor open, at least with the tools I have.

models.JPG

I wonder if you know a way to open/extract and edit thoose models files (I know there's a way to launch both the .moc and .png files with Live2D viewer editor)

I was hoping to get something like this:
Live2d.JPG

About the attached files:
First image: What I have on the Decrypted model files
Second image: What I though I would get (this is a sample from Live2D viewer)
 

king_frost93

Member
Newcomer
Joined
Jan 18, 2017
Messages
13
Trophies
0
Age
26
XP
48
Country
United States
Hi, I have a question regarding the Expand GameData feature in your updated Nightmare.

I want to add a new class, so I typed in its name as the label (CHIEF) and set its ID to 129 (81H, as the Outrealm class is 80H). I saved the changes and I saw the GameData.bin file got five bytes added to the end of the file. Unfortunately when I tried to edit the class, it didn't show up in class module at all, and I have no idea why. Was I supposed to edit something in the pointer region first? I'm at a loss here.
 
  • Like
Reactions: Fates-Blade-900

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
Hi, I have a question regarding the Expand GameData feature in your updated Nightmare.

I want to add a new class, so I typed in its name as the label (CHIEF) and set its ID to 129 (81H, as the Outrealm class is 80H). I saved the changes and I saw the GameData.bin file got five bytes added to the end of the file. Unfortunately when I tried to edit the class, it didn't show up in class module at all, and I have no idea why. Was I supposed to edit something in the pointer region first? I'm at a loss here.
Confirm that you can run the GameData script from command prompt without receiving errors - the tool I provide really just runs that script using the information you give it, so if nothing shows up its likely due to an error when running the python script.
 
  • Like
Reactions: Fates-Blade-900

DeathChaos

Unmei wo kaeru!
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
27
XP
1,660
Country
Confirm that you can run the GameData script from command prompt without receiving errors - the tool I provide really just runs that script using the information you give it, so if nothing shows up its likely due to an error when running the python script.
Yup, the python script needs to be updated, I let RainThunder know of some output errors that were fixed, which would most likely be the culprit.
 
  • Like
Reactions: Fates-Blade-900

cercity

Well-Known Member
Newcomer
Joined
Jan 16, 2016
Messages
69
Trophies
0
XP
77
Country
You shouldn't need to - the script adjusts every pointer within GameData to match with the new file size.

I figured that would be the case so it must be an error on my end. When adding a new character (Entry ID 255) the character is successfully added and I can edit the pointers of this entry. But everything after that entry (classes, forge, ect) has misplaced data (for example, Nohr Noble has 0 in all bases and 132 in speed growths).
 
  • Like
Reactions: Fates-Blade-900

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
I figured that would be the case so it must be an error on my end. When adding a new character (Entry ID 255) the character is successfully added and I can edit the pointers of this entry. But everything after that entry (classes, forge, ect) has misplaced data (for example, Nohr Noble has 0 in all bases and 132 in speed growths).
It sounds like the modules you're using were not updated to reflect the new locations. If that's the case, the file is set up correctly, but the module thinks that the tables are in a different location.

That shouldn't happen though - the script also updates modules to look for tables in their new locations. I actually just tested it to be sure. Are your module folders and script in the same location?
 
  • Like
Reactions: Fates-Blade-900

DeathChaos

Unmei wo kaeru!
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
27
XP
1,660
Country
It sounds like the modules you're using were not updated to reflect the new locations. If that's the case, the file is set up correctly, but the module thinks that the tables are in a different location.

That shouldn't happen though - the script also updates modules to look for tables in their new locations. I actually just tested it to be sure. Are your module folders and script in the same location?
Maybe they need to update the modules? Or rather, they updated them?

The Skill module used to be named "skll.nmm" which would give errors with gamedata_module.py because it was looking for "skill.nmm" and wasn't finding it, so RainThunder updated it to fix this, that might be the possible culprit maybe?
 

cercity

Well-Known Member
Newcomer
Joined
Jan 16, 2016
Messages
69
Trophies
0
XP
77
Country
It sounds like the modules you're using were not updated to reflect the new locations. If that's the case, the file is set up correctly, but the module thinks that the tables are in a different location.

That shouldn't happen though - the script also updates modules to look for tables in their new locations. I actually just tested it to be sure. Are your module folders and script in the same location?

I think the folder is set up correctly, the folder is as downloaded (with the newest update, featuring the fixed module) with the only file added is the new Nightmare tool.
 

king_frost93

Member
Newcomer
Joined
Jan 18, 2017
Messages
13
Trophies
0
Age
26
XP
48
Country
United States
Confirm that you can run the GameData script from command prompt without receiving errors - the tool I provide really just runs that script using the information you give it, so if nothing shows up its likely due to an error when running the python script.

I figured that would likely be the case, so I redownloaded everything, including the updated gamedata and gamedata_module scripts, but I'm still getting the same problem. I tested it out with the new updated python scripts but it didn't seem to work, as no new data seems to be added. Actually, one thing I noticed is that oftentimes, I do get new files like the ones like in the screenshot I'm attaching (all the ones with the configuration setting data type) but they don't seem to be usable or do anything.
2017-01-23.png

I wonder if the modules themselves have to be in the exact same folder as the Nightmare or gamedata tool itself or what.
 

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
I figured that would likely be the case, so I redownloaded everything, including the updated gamedata and gamedata_module scripts, but I'm still getting the same problem. I tested it out with the new updated python scripts but it didn't seem to work, as no new data seems to be added. Actually, one thing I noticed is that oftentimes, I do get new files like the ones like in the screenshot I'm attaching (all the ones with the configuration setting data type) but they don't seem to be usable or do anything.

I wonder if the modules themselves have to be in the exact same folder as the Nightmare or gamedata tool itself or what.
As I said, try opening up a command window inside the same directory as the python script and running it using something like "python --item 400 ABC" to test (back up your GameData.bin beforehand to avoid adding any junk entries to the table). If there's no issues with the script, it should simply run and give you a message saying that the item was added successfully. Otherwise it will print out an error to the console.
 

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
Updated the main post with a new resources section. I've included a pack of Awakening models I've ported over to Fates as well as a modified BCSAR which adds some slots for custom music.

The model pack will probably grow a bit over time - I'm still working through some issues with the majority of Awakening's models. The 9 I've included in the release are the only ones I've been able to port over with my current procedure.
 

Dylos

Well-Known Member
Member
Joined
May 13, 2016
Messages
285
Trophies
0
Age
35
XP
200
Country
United States
Thanks for the awakening ports, though it's a little confusing as to which models they are. Have you tried importing Manakete yet, that's the one I'm looking forward to (mostly since I already have a mostly working manakete class)
 

thane98

Well-Known Member
OP
Member
Joined
Apr 23, 2016
Messages
616
Trophies
0
XP
1,229
Country
United States
Thanks for the awakening ports, though it's a little confusing as to which models they are. Have you tried importing Manakete yet, that's the one I'm looking forward to (mostly since I already have a mostly working manakete class)
Yeah, I kept the original naming conventions just to make sure the models worked - I ended up with crashes when I tried something different. The screenshots folder includes a picture of every model along with its name, so you can use that to help match models with names.

The human form for the manakete model is one of the models I'm having problems with, unfortunately. I haven't tried the dragon model yet, so that one might work.
 
General chit-chat
Help Users
    KenniesNewName @ KenniesNewName: Excited about adding a 4tb drive into my og Xbox for a beastly aio classic machine