Fire Emblem Fates: ROM Hacking General Thread

Discussion in '3DS - ROM Hacking, Translations and Utilities' started by DeathChaos25, Jul 15, 2016.

  1. DeathChaos25
    OP

    DeathChaos25 Unmei wo kaeru!

    Member
    1,306
    668
    Oct 21, 2015
    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
    ROM Hacking info

    EXAMPLES AND/OR DEMONSTRATIONS:
    Warning: Spoilers inside!

    TUTORIALS/OTHER MISC STUFF (ROM HACKING ONLY)

    FATES ROMHACKS
    Warning: Spoilers inside!

    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 DeathChaos25, Nov 7, 2017
  2. DeathChaos25
    OP

    DeathChaos25 Unmei wo kaeru!

    Member
    1,306
    668
    Oct 21, 2015
    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.
     
  3. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    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, Jul 16, 2016
    Arubaro and Koko-Kun like this.
  4. DeathChaos25
    OP

    DeathChaos25 Unmei wo kaeru!

    Member
    1,306
    668
    Oct 21, 2015
    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.
     
  5. DeathChaos25
    OP

    DeathChaos25 Unmei wo kaeru!

    Member
    1,306
    668
    Oct 21, 2015
    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.
     
  6. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    United States
    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.
     
  7. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!

    Member
    1,043
    288
    Mar 10, 2016
    United States
    Ice Tribe Village
    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, Jul 16, 2016
  8. DeathChaos25
    OP

    DeathChaos25 Unmei wo kaeru!

    Member
    1,306
    668
    Oct 21, 2015
    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.
     
  9. wakabayashy

    wakabayashy GBAtemp Fan

    Member
    356
    66
    Dec 25, 2014
    France
    France
    very good post, thanks to all who worked on them !
     
  10. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    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.
     
  11. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!

    Member
    1,043
    288
    Mar 10, 2016
    United States
    Ice Tribe Village
    Any way to add support for adding tables for custom characters?
     
  12. Grima

    Grima GBAtemp Regular

    Member
    118
    12
    Jul 2, 2016
    United States
    Or characters that don't normally have supports?
     
  13. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    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.
     
    Last edited by thane98, Jul 16, 2016
    Grima likes this.
  14. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!

    Member
    1,043
    288
    Mar 10, 2016
    United States
    Ice Tribe Village
    Cool thanks. Your program looks great so far.
     
  15. GermanTacos

    GermanTacos Advanced Member

    Newcomer
    91
    30
    Dec 21, 2015
    United States
    West Virginia
    You're my hero.
     
  16. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    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.
     
  17. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!

    Member
    1,043
    288
    Mar 10, 2016
    United States
    Ice Tribe Village
    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?
     
  18. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    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.
     
  19. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!

    Member
    1,043
    288
    Mar 10, 2016
    United States
    Ice Tribe Village
    At least the Gamedata.bin in the Gay Fates hack has tons of extra space in it.
     
  20. thane98

    thane98 GBAtemp Advanced Fan

    Member
    564
    267
    Apr 23, 2016
    United States
    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.