’Cause all games were better on the GBC

You are not logged in.

#1 2017-10-12 01:13:32

Sapphire Dragon
New member
From: Johto
Registered: 2017-10-05
Post 1/2

Expanding the ROM size, or any tips for a new hacker?

Hi all! I have been lurking here for a while, and during studying for Computer Science and some leisure playing Silver on 3DS, I started considering making a rom hack. My intention would be to get all 800+ Pokemon in one game, as well as every main game's region. Would this be possible? There is no timeframe, so I'd be working on it as a side project to be completed later in life.

I understand this requires in-depth knowledge of GB assembly, of which I am somewhat familiar due to having taken a college course that included some assembly. I also saw the thread about adding multiple maps ( which I would also like to learn more about, if possible.

However, the one thing I haven't seen much discussion on is potential mapping issues due to the sheer amount of Pokemon. I'd work from Silver, so it wouldn't have animated sprites, though I understand Silver is a less popular choice than Gold. Would I need to figure out how to increase the number of things that can be mapped within the game's structure, and if so, how might I go about doing that?

I have some hacking experience already, though not really that much. When I was younger I hacked Emerald through a few easy tools, I added grass and Pokemon to the area outside of the League, and also made my trainer a shiny Mew. There were a few other things I did, but I've forgotten since it's been a while.

Let me know what you think. Also, if you have any tips for someone new to hacking, let me know! I plan to watch the tutorials here on the forum before I get started. Thank you again!


#2 2017-10-12 01:52:24

Registered: 2016-05-09
Post 817/984

Re: Expanding the ROM size, or any tips for a new hacker?

Gold and Silver do not have complete disassemblies. For a Gen 2 hack you would want to use pokecrystal; for Gen 1, pokered. pokered already has the expand-dex project underway, which changes Pokémon IDs from 1 byte to 2, thus allowing as many Pokémon as will fit in the ROM. Nobody has done this for pokecrystal yet, so you're limited to 256 (actually 253, since Egg, end-of-list, and empty space each take up a slot.)

If you want a large game your best bet is probably to use Emerald. pokeemerald and pokeruby are not yet finished, but they'll eventually let you edit the whole game using the C language. However, what you can do is take a base Emerald ROM, expand it to 32 MB, stabilize it, and apply some patches to add new Pokémon, items, moves, abilities, etc:

DizzyEgg's Battle Engine Upgrade:

• All moves (up to Gen VI)
• All abilities (up to Gen VI)
• Physical/Special Split
• Fairy type
• New battle items
• Mega Evolution/Primal Reversion
• Gain Exp from capturing Pokémon

DizzyEgg's Pokemon Expansion:

• 802+ Pokémon

DizzyEgg's Items, TMs, Tutor Moves Expansion:

• 100+ TMs
• Reusable TMs
• Item Pocket extension

DizzyEgg's Hacked Engine:

• NPCs with EVs
• New evolution methods
• Decapitalization
• etc

Pokemon Overworld Form(e) change:

• Forme changes

There are various other useful Gen 3 patches too:

Running indoors
Level 1 Eggs
Deletable HMs
No Battle Frontier limits
Enable Nintendo Ticket events
Fix the Pomeg Berry glitch
Fix the manipulable PRNG
Quick R&D has lots more

Even after those patches, 32 MB is still plenty of space for extra regions. This isn't a good forum for getting Gen 3 support, but Pokécommunity has active Emerald and FireRed hackers who might help.

Also, knowing assembly and/or C will definitely help you when hacking Emerald. People use the IDA disassembler to help edit Emerald's code, and pokeemerald+pokeruby can also be useful, since they do have complete asm code for the games (just not complete C code, which is much easier to read since that's how it was originally written).

As for tools, I use Hex Workshop; it's the most "featureful" hex editor I've found, with good find+replace support, identifying data types (even complex structs), etc. XSE is used to edit scripts. Advance Map is a popular map editor, but 1.92 can't edit 32 MB expanded ROMs, and 1.95 may corrupt the ROM. There's also AME and MEH, don't know how finished they are. PGE, YAPE, G3HS, and G3T are all tools to edit some kinds of game data. (PGE is popular, but I think it has issues with DizzyEgg's patches; try G3T.)

(I can't personally vouch for or support any of these tools or patches, I'm a Gen 2 hacker; but PokéCommunity will probably be more helpful.)

For what it's worth, I don't recommend including more than two regions (maybe three small ones). Designing a plot and level curve that long would be difficult, and you're unlikely to ever finish it. As far as I know no ROM hack has gone beyond three regions, even if there's technically space for that much content. On the other hand, there are some 802 hacks which manage to fit all the Pokémon in one region. This probably ends up being crowded, but two should suffice, especially with different ones available at times of day, in Headbutt and Honey trees, via Sweet Scent, fishing, Rock Smashing, Diving...

Good luck with your hack!

Last edited by Rangi (2017-10-12 02:23:28)


#3 2017-10-12 03:25:14

Sapphire Dragon
New member
From: Johto
Registered: 2017-10-05
Post 2/2

Re: Expanding the ROM size, or any tips for a new hacker?

Ahhh, I see! I didn't realize GSC wasn't fully disassembled yet. I just remember reading about Pokemon Prism's 6 regions, even if they were not all finished.

I may look into using Emerald again, but I really love the simpler graphics and nostalgia I have for GSC. I'd love for it to have more resources like there are for Gen 1 Red and Emerald. I may work with ShantyTown and look into figuring out what needs to be done to complete an expand-dex project for GSC, or even manage to disassemble it, so that others could complete larger Gen 2 hacks.

I suppose the other option could be working with a stabilized, expanded Emerald like you said, and just porting all GSC graphics into it, but I'm not sure how well that would work, considering there are large amounts of scripts and events to port as well.

As for a plot and level curve in my hack, they would be identical to the original games, other than the player initially reaching the regions differently. All that would change is the graphics, and the only new content I would add is areas and/or Pokemon that were version or event exclusives, so that all Pokemon and events located in a generation's region are catchable. I would likely only add other things listed in TCRF/The Cutting Room Floor, with the exception of Johto, where I may expand Ilex Forest and Lake of Rage. My main goal would be to stay faithful to the original stories, and only expand where there are canon lore clues or leftover/dummied maps for me to reinstate. I would also ultimately like for it to allow the player to choose which region to start in, but I'm not sure how stable that would turn out to be. Since these are all ideas at this point, there's nothing set in stone quite yet other than GSC style graphics, and ideally a Silver base. This would also initially be a private hack until I could locate enough sprite and coding resources to make something someone would want to play.

Being able to disassemble GS fully would be a great goal though, it's something I can hope to achieve. I don't mind tedious work, and I also don't mind if it takes years. I imagine expanding the dex would be something more feasible in the short term, though (about a year or so I think?)

Thank you so much for all your resources! If it's possible sometime, I'd love to work with you as well!


#4 2017-10-12 04:21:55

Registered: 2016-05-09
Post 818/984

Re: Expanding the ROM size, or any tips for a new hacker?

Crystal is fully disassembled. Gold and Silver are not. There's no real point, since Crystal has everything they do and more, with a few exceptions like G/S's unique title screens. (And SGB support...)

If you end up helping with a pokecrystal expand-dex project, that would be great. It's the main limitation on Gen 2 projects right now. As you say, Prism has six regions, because "region count" is fairly artificial: you can divide your maps into a dozen regions, as long as they all fit in a 2 MB ROM. (And you can even have a 4 MB ROM, but you have to sacrifice real-time clock support. Which is not so bad because you can have a fast in-game clock running at, say, 4 game hours per real hour.) More than enough space for three full regions, if you have the time and patience and inspiration to create them.

I'm not sure what you mean by plot "identical to the original games". The original games occur at different times and with different people, some simultaneously, others years apart. And if you handwave away the timeline issues and just glue the RBY+GSC+RSE+DPPT+BW plots all together, one after another, you're still left with five disconnected games with their own characters and themes, not one cohesive story. Plus you'd be level 100 by the end of the third region, and battling would feel kind of pointless anywhere after that.

On the other hand, expanding just the GSC plot to include beta and unused content sounds like a great idea. I've seen it suggested before, but never followed through. I guess you want to expand Lake of Rage to a full city, like the beta design?

Even if you're set on a multi-region hack, that could be a good practice project to get familiar with pokecrystal's internals. crowdmap and Polished Map are map editors, and almost everything else is either .asm code (use Notepad++ or Notepad2-mod), .png graphics (use your preferred graphics editor; I like, or the occasional binary file which you'll need to hex edit.

The old-style hacking with dedicated tools for trainers, Pokémon, scripts, etc was easier in some ways, but more limited. With assembly you're only limited by the hardware. But if you've played Prism, you already know what's possible with it. Proportional-width text, physical/special split, abilities, a whole separate mining+crafting system... But all that is easier once you get used to the features that already exist and how they work.


Board footer

Powered by FluxBB