ROM Hack Fire Emblem Fates: ROM Hacking General Thread

DeathChaos

Unmei wo kaeru!
OP
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
26
XP
1,589
Country
For a long time, people have been asking for a condensed post or somewhere were every piece of ROM hacking knowledge can be easily accessed, so I'll be using the main post of this thread and update it as I make new discoveries (or someone else really), this should hopefully motivate people to poke around some more and hopefully get the ROM hacking scene off to a good start (This will not cover Custom DLC injection, that's an entirely different thing altogether).

So first off, before trying anything, it's a good idea to read this wiki, it contains Vital information of the general file structure and important file location, I ask that you PLEASE read this before asking questions such as "Where do I find X thing", or asking about the file headers, this is explained in the wiki and all headers are the same for all lz compressed files.

Second, this will NOT cover basic questions such as "how do I get homebrew on my 3DS?" or "how do I run romhacks?", you should probably cover the basics before trying more advanced stuff.

So with that said, here's some of the info I have so far, this post is not final and I'll be editing it over the course of time as I have really not made any "tutorials" for most of this stuff, so for now it's mostly images as I write guides and explanations for this.

GameData contains so much vital info that it's usually best to avoid editing altogether since any small mistake will break the file and in turn make the game crash on load, the simplest thing is editing supports as that only requires very minimal repointing.

General structure here.

This is what support tables look like;
UUEtA0Y.png
WIP:
AIDs are found in ROM2 and ROM3, AIDs have a general structure:
0x00 starts the header of the AID, headers can vary wildly in size, from 4 bytes, to 8 bytes, to 12 or even 16 bytes in size, the header tells the game a few things, such as unique animations (Forrest using Female Animations instead of Male animations), the character's Head/Face model/textures, any unique models/textures in certain classes, or in some cases, the AID will force a certain static model and animations on the character (such as Mikoto, Sumeragi, Lilith, Garon, to name a few)
The hair color (THIS ONLY APPLIES TO THE 3D MODEL) is the final 4 bytes of the AID.

Do note that the AID also controls the head sprite for the character, which goes in unit/Head/(AIDLABELHERE)/(Spriteshere)

Example of a file with a single character block (DLC blocks for playables are also made like this);
SyOnJEp.png


IMAGE IS NOT UP TO DATE WITH ALL FINDINGS

Basically the same as above, however, there is one key value being used here, basically there are a few bytes to tell the game that this is actually a dynamic block for a character from GameData, the block structure is the same as above, but the written more up to date version can be found here.

Actual detailed explanation coming soon™

TyHIoKJ.png


The E6 7F value was found to be bitflags detailing when the SEID pointer skills would be available, they are as follows;
CZ1YWOb.png

Note that this value also applies to Character blocks, usually listed as FF 7F for playables, meaning all skills available on all difficulties.

WIP Block Mapping
z1VrXMF.png

MAYBE SOMEDAY THIS'LL BE EASY TO EXPLAIN

For now have these images that try to explain the barebones of how it works.
fAcNvpJ.png


Vwo5Q4A.png


You can also find notes about this from TildeHat here.

EXAMPLES AND/OR DEMONSTRATIONS:
This is an Awakening Example, but since the structure is the same, it would apply to Fates.

Another example;
tumblr_inline_o75fd6um4H1u0fe1d_540.png


Moar examples;
http://imgur.com/a/8pmCg




TUTORIALS/OTHER MISC STUFF (ROM HACKING ONLY)

FATES ROMHACKS
@UnassumingVenusaur 's Expanded Same Sex marriage Hack
As the name suggests, this adds a lot of same sex options, it also adds some hetero marriages such as RyomaxScarlet, or JakobxFlora, while also giving CorrinSexuals extra options.

@Ningyoplug 's Polyamory patch
Based off of the Expanded Same Sex marriage patch, this patch aims to make it possible to marry multiple people at once.

@MsMidnight 's Corrin unlocks all paralogues and hero battles patch

@DeathChaos25 's Revelation Unit Buff patch
This patch aims to buff the lesser units in Revelation story path so that they are just as usable as the stronger ones.

None released as of this post.

Unlock Hero battles without amiibo.
First started by @DeathChaos25 as a castle join hack, this was later revamped by @RainThunder , is a hack that will allow you to obtain all 4 Amiibo units without actually owning any of the amiibos.

@DeathChaos25 's Conquest Recruitment Swap
This hack is a simple recruit swap, swap all playable units from Conquest with their Birthright counterparts!

@thane98 's Custom paralogues.
This hack adds a custom recruitment paralogue to Fire Emblem Fates, which gives the ability to recruit the boss character, Nichol, from Paralogue 5.

TOOLS/UTILITIES:
A few tools made by @thane98 including and not limited to, support table editing, script file editing (cmb), etc:
https://gbatemp.net/threads/release-fire-emblem-fates-hacking-tools.457799

A Dispos editing tool made by @TildeHat that allows to easily create and edit Spawn Data (Dispos) files:
https://gbatemp.net/threads/release-fe14-dispos-tools.455805/

A collection of Nightmare modules and other useful scripts and utilities for Fates by @RainThunder which amongst other things, allow to easily add in new chapters, characters, items, etc.
https://github.com/RainThunder/fefates-tools

A Fates randomizer made by @thane98 :
https://gbatemp.net/threads/wip-fire-emblem-fates-randomizer.452268/

An Awakening/Fates Conversation Editor made by @SecretiveCactus
https://gbatemp.net/threads/fire-emblem-conversation-editor-awakening-fates.460908/

We now have a Discord Server!
https://discord.gg/ePGj3BX
 
Last edited by DeathChaos,

DeathChaos

Unmei wo kaeru!
OP
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
26
XP
1,589
Country
Reserved.

Also I'm going out for a bit so I'll post the current WIP main post to open discussion, I'll keep working on it when I come back.
 

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
This is definitely something that the Fates hacking community needs, I'm excited to see where this goes. If you need help with setting things up or creating tutorials, I can probably pitch in a little.

Do you plan on using this thread to keep track of existing projects and hacks as well, or just hacking tutorials and notes?
 
Last edited by thane98,

DeathChaos

Unmei wo kaeru!
OP
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
26
XP
1,589
Country
This is definitely something that the Fates hacking community needs, I'm excited to see where this goes. If you need help with setting things up or creating tutorials, I can probably pitch in a little.

Do you plan on using this thread to keep track of existing projects and hacks as well, or just hacking tutorials and notes?

I may need some help with tutorials, I'm not really the best at explaining stuff since sometimes I skip over details that newbies would not know, which often leads to confusion.

As for projects, it might be a little bit hard to keep track of, but I think I can make a section for ROM hacking projects by category.
 

DeathChaos

Unmei wo kaeru!
OP
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
26
XP
1,589
Country
Ok, added a section for ROM hacks with short descriptions, the creator of the hack, and links.

If anyone wants their ROM hack listed let me know, also if any link is broken/links to wrong stuff also let me know.
 
  • Like
Reactions: Fates-Blade-900

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
I may need some help with tutorials, I'm not really the best at explaining stuff since sometimes I skip over details that newbies would not know, which often leads to confusion.

As for projects, it might be a little bit hard to keep track of, but I think I can make a section for ROM hacking projects by category.

That's fine - just shoot me a message if you need help a tutorial, and I'll see what I can do.

Also @UnassumingVenusaur has a nice tutorial on adding in new support options here that might be worth mentioning in the main post.
 
  • Like
Reactions: Fates-Blade-900

Omegablu

We shall not yield to the Kingdom of Nohr!
Member
Joined
Mar 10, 2016
Messages
1,140
Trophies
0
Location
Ice Tribe Village
XP
995
Country
United States
Ok, added a section for ROM hacks with short descriptions, the creator of the hack, and links.

If anyone wants their ROM hack listed let me know, also if any link is broken/links to wrong stuff also let me know.
No mention of your custom dlc or mine? Don't those qualify as romhacks?

Edit: Nvm. I just read the first post in more detail.
 
Last edited by Omegablu,
  • Like
Reactions: Fates-Blade-900

DeathChaos

Unmei wo kaeru!
OP
Member
Joined
Oct 21, 2015
Messages
1,359
Trophies
0
Age
26
XP
1,589
Country
No mention of your custom dlc or mine? Don't those qualify as romhacks?

Edit: Nvm. I just read the first post in more detail.
Yeah, Custom DLC is an entirely different thing simply because of the availability, ROM hacks are available more people in general, and can be done even on the most recent firmware.
 

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
Well, I thought I'd get some discussion going in this thread by showing off a little program that I've been working on.

So, I've started putting together a program for editing support tables and adding in new support options. With it, adding in new supports is as simple as choosing the characters and hitting a button. At the moment, basic functionality is done, but the program itself lacks polish. It'll be awhile before the program's completely ready to go, but hopefully it can save some headaches when it's finished!

Here's some screenshots of what the program looks like at the moment.
 

Omegablu

We shall not yield to the Kingdom of Nohr!
Member
Joined
Mar 10, 2016
Messages
1,140
Trophies
0
Location
Ice Tribe Village
XP
995
Country
United States
Well, I thought I'd get some discussion going in this thread by showing off a little program that I've been working on.

So, I've started putting together a program for editing support tables and adding in new support options. With it, adding in new supports is as simple as choosing the characters and hitting a button. At the moment, basic functionality is done, but the program itself lacks polish. It'll be awhile before the program's completely ready to go, but hopefully it can save some headaches when it's finished!

Here's some screenshots of what the program looks like at the moment.
Any way to add support for adding tables for custom characters?
 
  • Like
Reactions: Fates-Blade-900

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
Any way to add support for adding tables for custom characters?

Yeah, that's what I plan on adding in next. I've already got stuff set up for adding in new pointers to the pointer regions, so new support tables shouldn't be that difficult.

It'll also work for characters that don't normally have supports, @Grima. The only thing you'll have to do beforehand is edit the character's block to give them a support ID. But that's very easy to do using the nightmare modules on the wiki.
 
Last edited by thane98,

Omegablu

We shall not yield to the Kingdom of Nohr!
Member
Joined
Mar 10, 2016
Messages
1,140
Trophies
0
Location
Ice Tribe Village
XP
995
Country
United States
Yeah, that's what I plan on adding in next. I've already got stuff set up for adding in new pointers to the pointer regions, so new support tables shouldn't be that difficult.

It'll also work for characters that don't normally have supports, @Grima. The only thing you'll have to do beforehand is edit the character's block to give them a support ID. But that's very easy to do using the nightmare modules on the wiki.
Cool thanks. Your program looks great so far.
 
  • Like
Reactions: Fates-Blade-900

GermanTacos

Well-Known Member
Newcomer
Joined
Dec 21, 2015
Messages
92
Trophies
0
Location
West Virginia
XP
169
Country
United States
Well, I thought I'd get some discussion going in this thread by showing off a little program that I've been working on.

So, I've started putting together a program for editing support tables and adding in new support options. With it, adding in new supports is as simple as choosing the characters and hitting a button. At the moment, basic functionality is done, but the program itself lacks polish. It'll be awhile before the program's completely ready to go, but hopefully it can save some headaches when it's finished!

Here's some screenshots of what the program looks like at the moment.
You're my hero.
 
  • Like
Reactions: Fates-Blade-900

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
Well, setting up the program to add new support tables was actually pretty simple. The only downside is that it takes a bit more effort from the user. In order to add in a new support table, you first need to modify the block of the character you want supports for. In the block, you need to give the character a support ID and set them to have supports on all routes. Once you've done that part, you need to find the character ID and an offset in GameData.bin to use for the support table. It sounds like a lot, but in reality it's not a very difficult process. You can use the nightmare modules that @RainThunder put together for all of the character block editing.

Here's what adding in a new support table looks like. I used Haitaka as an example here, but you could add a support for anybody with a block in GameData.bin this way. I think that it could work with custom DLC characters as well, but I don't know enough about how the game handles those character blocks to say for sure.

I'll release the program in a little while, but at the moment the program is really only built for the "happy path" - it has no way to handle user error. I need to get some form of stability in place and some checks to avoid making bad edits to GameData.bin before releasing.
 
  • Like
Reactions: Fates-Blade-900

Omegablu

We shall not yield to the Kingdom of Nohr!
Member
Joined
Mar 10, 2016
Messages
1,140
Trophies
0
Location
Ice Tribe Village
XP
995
Country
United States
Well, setting up the program to add new support tables was actually pretty simple. The only downside is that it takes a bit more effort from the user. In order to add in a new support table, you first need to modify the block of the character you want supports for. In the block, you need to give the character a support ID and set them to have supports on all routes. Once you've done that part, you need to find the character ID and an offset in GameData.bin to use for the support table. It sounds like a lot, but in reality it's not a very difficult process. You can use the nightmare modules that @RainThunder put together for all of the character block editing.

Here's what adding in a new support table looks like. I used Haitaka as an example here, but you could add a support for anybody with a block in GameData.bin this way. I think that it could work with custom DLC characters as well, but I don't know enough about how the game handles those character blocks to say for sure.

I'll release the program in a little while, but at the moment the program is really only built for the "happy path" - it has no way to handle user error. I need to get some form of stability in place and some checks to avoid making bad edits to GameData.bin before releasing.
Good job! Custom dlc characters aren't too different than actual characters, so it will work with them. Also, does this expand Game data.bin appropriately after you give it an offset to work with, or does it require you to free up some space at the provided offset?
 

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
Good job! Custom dlc characters aren't too different than actual characters, so it will work with them. Also, does this expand Game data.bin appropriately after you give it an offset to work with, or does it require you to free up some space at the provided offset?
It expands the pointer region to add in the pointer to the table, but the table itself will only overwrite bytes. If it inserted the bytes, it would break the pointers to everything past the inserted bytes.
 

Omegablu

We shall not yield to the Kingdom of Nohr!
Member
Joined
Mar 10, 2016
Messages
1,140
Trophies
0
Location
Ice Tribe Village
XP
995
Country
United States
It expands the pointer region to add in the pointer to the table, but the table itself will only overwrite bytes. If it inserted the bytes, it would break the pointers to everything past the inserted bytes.
At least the Gamedata.bin in the Gay Fates hack has tons of extra space in it.
 

thane98

Well-Known Member
Member
Joined
Apr 23, 2016
Messages
607
Trophies
0
XP
1,099
Country
United States
At least the Gamedata.bin in the Gay Fates hack has tons of extra space in it.
Yeah, there's plenty of space to work with. If you run out, you can insert bytes at the end of the data region as long as you change where the first pointer region starts in the header - everything past the data region is handled relative to that first offset, so you can move the other regions around pretty easily.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
    Julie_Pilgrim @ Julie_Pilgrim: i use it when i want to post multiple images to reddit