• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Legends: Z-A protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Other] Help choosing a base ROM - Emerald, Vanilla FR, or CFRU

Misu

Fairy liker
  • 12
    Posts
    13
    Years
    (I'm sure this has been asked in so many ways before, but couldn't really get a grasp on it from searching around or reading pinned topics.)

    The tl;dr of my question is: which Gen III ROM (or patch/base) and tools do I start with, as a newbie?

    Just recently getting my feet wet with the goal of creating my own region, so I only have a loose idea of the few essentials I'd want in a base gen III ROM. I don't want to go too off the rails with that many complex additions, but I do want some later gen QoL and mechanics, and the freedom to add more if it comes to mind - namely, phys/spec split, expanded dex through (ideally) gen 8, and as a stretch, things like mega evolutions.

    I'm somewhat familiar with coding and what GBA romhacking entails, so I'm willing to do the research in getting whatever features I want in myself or by searching around here, but would a better starting point be vanilla (or patched) fire red, emerald, or something more full like CFRU?

    As I understand it after reading around, Fire Red is the most supported/documented ROM to work off of, and the CFRU engine itself does seem to have most of what I want already built in, but what would I be missing in the long run by not working with Emerald, or even just vanilla Fire Red? What can't I do (easily) if I commit to using CFRU?

    I'm mostly afraid that if I use CFRU, other helpful patches the community here worked on wouldn't be compatible, or I wouldn't be able to edit/script in quite the same way without conflicts later into development.
     
    (I'm sure this has been asked in so many ways before, but couldn't really get a grasp on it from searching around or reading pinned topics.)

    The tl;dr of my question is: which Gen III ROM (or patch/base) and tools do I start with, as a newbie?


    You need AdvanceMap, for mapping, XSE for scripting, and HMA for editing everything else.

    Emerald has somewhat better features and battle frontier compared to firered.

    But firered has more space, and also works better with most tools.

    You'll have a much more difficult time hacking with emerald than firered using advancemap & XSE, (or any other tool)
    because emerald doesn't work well with them.



    CFRU has a lot of stuff, added, but it can be difficult to work with/edit both because its a C-injector (middle ground between binary & decomp) and because its not really
    made for beginners.


    Also unless you know what you're doing, when using cfru, it just makes your project seem the same as any other that uses cfru.


    All that is why for binary Fire red, is the most popular choice.
     
    You need AdvanceMap, for mapping, XSE for scripting, and HMA for editing everything else.

    ...

    All that is why for binary Fire red, is the most popular choice.
    Since making this post, I've been familiarizing myself with those three listed tools, using Leon's pre-DPE/CFRU base and a couple other confirmed compatible patches to make a couple basic maps, events, and edits. Think I'll definitely stick with Fire Red here and just worry about anything CFRU can add to the project later down the line, since it seems I can always just repoint things like wild pokemon, graphics, and trainer rosters with little impact compared to maps and scripting elements.

    Thank you for confirming though. I had started to notice the caveats to working with Emerald while reading around more (quite a few FRLG-only functions apparently), and it looks like the only thing I really lose is Contest and Battle Frontier related (which is honestly a shame but it's not my focus anyway).
     
    Since making this post, I've been familiarizing myself with those three listed tools, using Leon's pre-DPE/CFRU base and a couple other confirmed compatible patches to make a couple basic maps, events, and edits. Think I'll definitely stick with Fire Red here and just worry about anything CFRU can add to the project later down the line, since it seems I can always just repoint things like wild pokemon, graphics, and trainer rosters with little impact compared to maps and scripting elements.

    Thank you for confirming though. I had started to notice the caveats to working with Emerald while reading around more (quite a few FRLG-only functions apparently), and it looks like the only thing I really lose is Contest and Battle Frontier related (which is honestly a shame but it's not my focus anyway).

    yeah you're on the right track.
    far as the emerald stuff there's ways around the issues it has if you're willing to put in a bit of work.

    The bugs I mentioned with the tools is an issue where it thinks 00 bytes are free space.
    which causes corruption, but that only happens when the programs look for space dynamically.

    So the "fix" is to just look for all your offsets/set everything manually,
    time-consuming and annoying but doable.

    The space thing can be solved by expanding the emerald rom.

    Which I've heard is something that can be done with XSE, rom expander tool?
     
    ...

    So the "fix" is to just look for all your offsets/set everything manually,
    time-consuming and annoying but doable.

    The space thing can be solved by expanding the emerald rom.

    ...
    I think the biggest space concern I'd have is patching in mechanics and pokemon up to gen 8, maybe some extra music, and other than that my needs are pretty vanilla. If those things have already been done for Emerald as well, I might take a look into it anyway after I make some headway from where I've started in FR, since what's otherwise available and unavailable does go both ways.

    On a side note, given Fire Red does have a lot more space, I do feel like I'm being a little overly careful about space consumption since I do use XSE's dynamic offsets/space finder - always afraid to recompile directly since it might repoint and ultimately leave some dead space behind, so I actually have an "unpointed" ROM with nothing inserted/assigned to events that I then bulk compile everything into, but that's probably not feasible the more I code in... I could probably just leave it all up to dynamic allocating so long as I have it searching/pointing to a block of FF bytes, right?
     
    I think the biggest space concern I'd have is patching in mechanics and pokemon up to gen 8, maybe some extra music, and other than that my needs are pretty vanilla. If those things have already been done for Emerald as well, I might take a look into it anyway after I make some headway from where I've started in FR, since what's otherwise available and unavailable does go both ways.

    On a side note, given Fire Red does have a lot more space, I do feel like I'm being a little overly careful about space consumption since I do use XSE's dynamic offsets/space finder - always afraid to recompile directly since it might repoint and ultimately leave some dead space behind, so I actually have an "unpointed" ROM with nothing inserted/assigned to events that I then bulk compile everything into, but that's probably not feasible the more I code in... I could probably just leave it all up to dynamic allocating so long as I have it searching/pointing to a block of FF bytes, right?

    well its tiny amounts of space, and as long as something can fit there, it can be filled in later.

    As long as its fire red, dynamic scripting makes things much easier, most just select there starting point, #dynamic 0x800000 etc. or whatever, and have it fill things in wherever.

    If you're using HMA backing up, and keeping track of and moving changes is much easier.


    But depending on what you want to do, especially if its mostly a gen 8 mon hack, then what the other person said about using the decomp,
    may be more in line with your wants, since there's already a decomp of pokemerald that has all gen 8 stuff added.

    But that would require learning an entirely new method of hacking to edit/work with it.
     
    Emerald has about 50% of free space, compared to FireRed, and there are way fewer available features Emerald offers than FireRed. The only times you would hack Emerald are:
    − If you want a lot of music tracks
    − If you want Synchronize to work in wild battles
    − If your hack is based on Hoenn
    − If you want to include Battle Frontier mechanics
    − If you want to use a decomp, which is hard to learn
    − If you want Pokémon to move when sent out
     
    Emerald has about 50% of free space, compared to FireRed, and there are way fewer available features Emerald offers than FireRed. The only times you would hack Emerald are:
    − If you want a lot of music tracks
    − If you want Synchronize to work in wild battles
    − If your hack is based on Hoenn
    − If you want to include Battle Frontier mechanics
    − If you want to use a decomp, which is hard to learn
    − If you want Pokémon to move when sent out
    Some of these points aren't entirely correct, but I do agree that binary hacking with Fire Red is a better choice than binary hacking with Emerald.
    • Once expanded to 32MB (which is something you can do with zero downsides) Fire Red has about 24MB of free space, and Emerald has almost 18MB. All of Fire Red is only about 8MB so free space is not an issue, and Emerald certainly doesn't have 50% less space - Fire Red has 33% more free space than Emerald.
    • Feature wise base Emerald has more than Fire Red, though Fire Red has things that are clearly better (e.g. the vs seeker is way better than Emerald's rematch system), but if we're counting binary hacking tools/resources as features then Fire Red wins hands down. The CFRU is far better than anything Emerald has.

    I'm somewhat familiar with coding and what GBA romhacking entails, so I'm willing to do the research in getting whatever features I want in myself or by searching around here, but would a better starting point be vanilla (or patched) fire red, emerald, or something more full like CFRU?
    As you're familiar with coding I'd suggest at least trying the pokeemerald decomp and playing around with porymap and making some simple code changes. You can get gen 8 mons and new mechanics (including megas) from the RHH expansion branches, which should eventually catch up to the CFRU. There's a bit of an entry barrier to using the decomp, but once you get past that it's much, much better binary hacking. You don't need to worry about space as the compiler handles all of that for you, you've got well documented source code to work with, and you get access to version control so you never need to worry about breaking the ROM.

    You could take a look at the decomp's simple modifications thread to get an idea of what you can do with it- it's full of little things that would be very difficult to do in binary, but are trivial with source code.
     
    Some of these points aren't entirely correct, but I do agree that binary hacking with Fire Red is a better choice than binary hacking with Emerald.
    • Once expanded to 32MB (which is something you can do with zero downsides) Fire Red has about 24MB of free space, and Emerald has almost 18MB. All of Fire Red is only about 8MB so free space is not an issue, and Emerald certainly doesn't have 50% less space - Fire Red has 33% more free space than Emerald.
    • Feature wise base Emerald has more than Fire Red, though Fire Red has things that are clearly better (e.g. the vs seeker is way better than Emerald's rematch system), but if we're counting binary hacking tools/resources as features then Fire Red wins hands down. The CFRU is far better than anything Emerald has.
    • My numbers were based on if the ROM was not expanded: FireRed has 7352A0 bytes of free space, while Emerald has 3C29A0 bytes of free space (and that includes paddings of 00 bytes after 0x9C0B20). I did the math, and FireRed has 1.92x more free space than Emerald. When the ROMs are expanded, FireRed only has 1.17x the amount of Free Space; such a small difference already made the difference: Pokémon Unbound, by Skeli, has almost no free space left, and it's a FireRed ROM. This means that not everything would fit if it was created in Pokémon Emerald.
    • If you look through https://www.pokecommunity.com/threads/339153 and https://www.pokecommunity.com/threads/205158 there are way more features you can add to FireRed than in Emerald. And the CFRU/DPE is, indeed, a better equivalent than Emerald's decomp.
     
    • My numbers were based on if the ROM was not expanded: FireRed has 7352A0 bytes of free space, while Emerald has 3C29A0 bytes of free space (and that includes paddings of 00 bytes after 0x9C0B20). I did the math, and FireRed has 1.92x more free space than Emerald. When the ROMs are expanded, FireRed only has 1.17x the amount of Free Space; such a small difference already made the difference: Pokémon Unbound, by Skeli, has almost no free space left, and it's a FireRed ROM. This means that not everything would fit if it was created in Pokémon Emerald.
    • If you look through https://www.pokecommunity.com/threads/339153 and https://www.pokecommunity.com/threads/205158 there are way more features you can add to FireRed than in Emerald. And the CFRU/DPE is, indeed, a better equivalent than Emerald's decomp.
    Oh I see, my mistake - I didn't realise the 00 padding blocks were that big. I'm pretty sure Unbound would fit into Emerald if it was made using the decomp, as there's no wasted space when working with the source code (except for all the junk Game Freak left in there), and you can remove any unwanted content to make space, which isn't as easy to do in binary. Binary hacking tends to waste quite a bit of space because expanding things requires making a second, bigger copy of said thing somewhere else in the ROM, which leaves either wasted space or free space that is difficult to fully utilize.

    I didn't phrase that last point very well - the CFRU is amazing, and absolutely better than the resources available for binary Emerald, but it's not better than the decomp. While it's true that the CFRU battle engine is better than the RHH battle engine, that's mostly because the RHH engine is unfinished (though the CFRU has things like its AI that will likely stay unsurpassed for a long time). Almost everything else is just as good or better in the decomps. There's a better map editor, a better script editor, and working with source code instead of binary gives you a lot more freedom. The old ASM resource threads were great at the time, and gave Fire Red a clear advantage, but pokeemerald's simple mods thread is already miles ahead of them, and the decomp itself is a far bigger resource than everything that's available for binary Fire Red.

    That said, the CFRU is a very valid reason to stick with binary hacking over using decomps (personally I'd say its the only reason), and there's no reason I can think of to use Emerald as the base for a new binary hack.
     
    I appreciate the insight! I think I'll definitely look into decomps when I have time, the idea of it does sound a lot more appealing from a general coding perspective. As a casual entrant to this in general, the barrier of entry just made me think otherwise at first. But the flexibility seems to overcome the fact it's "younger" than direct binary hacking, in terms of available toolsets and existing hacks.

    As mentioned I do have pretty simple ambitions at the moment so basic binary hacking and then transitioning to CFRU still seems like the path of least resistance, at least while I'm learning, but I'll look into decomps sooner than later and it might just be easier to go that route in the long run. No need to reinvent the wheel, etc. The more I look around, the more I do see the answer to most problems is that decomps are much easier than the various workarounds.
     
    I have a problem making a rom hack for emerald. While my computer doesn't have enough space, it also forbids me from using decomps. I tried to patch the Emerald Dynamic Attack Rombase to my game and I already added Fairy Types, but after four battles, the game kinda stopped working but the background music continued. I think that rombase was the reason. Repointing all the movesets made it worse by causing a white screen. Maybe I should make a rom hack without any fairy type or expanded moves. Its unfair, but I ran out of ways to fix this.
     
    You need AdvanceMap, for mapping, XSE for scripting, and HMA for editing everything else.

    Emerald has somewhat better features and battle frontier compared to firered.

    But firered has more space, and also works better with most tools.

    You'll have a much more difficult time hacking with emerald than firered using advancemap & XSE, (or any other tool)
    because emerald doesn't work well with them.



    CFRU has a lot of stuff, added, but it can be difficult to work with/edit both because its a C-injector (middle ground between binary & decomp) and because its not really
    made for beginners.


    Also unless you know what you're doing, when using cfru, it just makes your project seem the same as any other that uses cfru.


    All that is why for binary Fire red, is the most popular choice.
    HMA has been updated to have a map now :)
     
    Back
    Top