1. DeathChaos25

    OP DeathChaos25 Unmei wo kaeru!
    Member

    Joined:
    Oct 21, 2015
    Messages:
    1,331
    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;
    [​IMG]
    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);
    [​IMG]

    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™

    [​IMG]

    The E6 7F value was found to be bitflags detailing when the SEID pointer skills would be available, they are as follows;
    [​IMG]
    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
    [​IMG]

    MAYBE SOMEDAY THIS'LL BE EASY TO EXPLAIN

    For now have these images that try to explain the barebones of how it works.
    [​IMG]

    [​IMG]

    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;
    [​IMG]

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

    OP DeathChaos25 Unmei wo kaeru!
    Member

    Joined:
    Oct 21, 2015
    Messages:
    1,331
    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.
     
  3. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    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, Jul 16, 2016
    Fates-Blade-900, Arubaro and Koko-Kun like this.
  4. DeathChaos25

    OP DeathChaos25 Unmei wo kaeru!
    Member

    Joined:
    Oct 21, 2015
    Messages:
    1,331
    Country:
    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

    Joined:
    Oct 21, 2015
    Messages:
    1,331
    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.
     
    Fates-Blade-900 likes this.
  6. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    Country:
    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.
     
    Fates-Blade-900 likes this.
  7. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!
    Member

    Joined:
    Mar 10, 2016
    Messages:
    1,138
    Country:
    United States
    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
    Fates-Blade-900 likes this.
  8. DeathChaos25

    OP DeathChaos25 Unmei wo kaeru!
    Member

    Joined:
    Oct 21, 2015
    Messages:
    1,331
    Country:
    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 Advanced Fan
    Member

    Joined:
    Dec 25, 2014
    Messages:
    635
    Country:
    France
    very good post, thanks to all who worked on them !
     
    Fates-Blade-900 likes this.
  10. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    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.
     
  11. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!
    Member

    Joined:
    Mar 10, 2016
    Messages:
    1,138
    Country:
    United States
    Any way to add support for adding tables for custom characters?
     
    Fates-Blade-900 likes this.
  12. Grima

    Grima GBAtemp Regular
    Member

    Joined:
    Jul 2, 2016
    Messages:
    118
    Country:
    United States
    Or characters that don't normally have supports?
     
    Fates-Blade-900 likes this.
  13. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    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.
     
    Last edited by thane98, Jul 16, 2016
    Fates-Blade-900 and Grima like this.
  14. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!
    Member

    Joined:
    Mar 10, 2016
    Messages:
    1,138
    Country:
    United States
    Cool thanks. Your program looks great so far.
     
    Fates-Blade-900 likes this.
  15. GermanTacos

    GermanTacos Advanced Member
    Newcomer

    Joined:
    Dec 21, 2015
    Messages:
    92
    Country:
    United States
    You're my hero.
     
    Fates-Blade-900 likes this.
  16. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    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.
     
    Fates-Blade-900 likes this.
  17. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!
    Member

    Joined:
    Mar 10, 2016
    Messages:
    1,138
    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?
     
  18. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    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.
     
  19. Omegablu

    Omegablu We shall not yield to the Kingdom of Nohr!
    Member

    Joined:
    Mar 10, 2016
    Messages:
    1,138
    Country:
    United States
    At least the Gamedata.bin in the Gay Fates hack has tons of extra space in it.
     
  20. thane98

    thane98 GBAtemp Advanced Fan
    Member

    Joined:
    Apr 23, 2016
    Messages:
    578
    Country:
    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.
     
Loading...

Hide similar threads Similar threads with keywords - Hacking, General, Emblem