• 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 Conquest 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.

Emerald hack: Pokemon Emerald Rogue

Pokemon Emerald Rogue V2.0.1

Ever wondered what Pokemon might look like as a Roguelike?
Pokemon Emerald Rogue is my take on it!


How does it work?
When you go on an adventure all routes, encounters and items will be procedurally chosen based on your progress into a run
After a certain number of routes you will encounter a random gym leader who will have a procedurally chosen team of their assigned type; as you progress further into a run gym leaders and other trainers will start using more difficult setups for their pokemon.
If you can make it all the way to the champion and defeat them, then you will have completed the run!

Once you complete or wipe out of a run you will go back to a hub area where you can buy permanent items and catch new "starter" Pokemon to use in the next run
As you progress further into the run, you will unlock more buildings/NPCs in this hub area to use for preparing the next run

How long does a run take?
It can vary based on how thorough you are being, but in my testing a complete run usually takes between 3-4 hours of in game time.
The is a quick save options (REST in the menu) which lets you put the game down mid run and return however be warned this does not allow save scumming

📽 Videos
Spoiler:


📷 Photos
Spoiler:


✨ Features
For the latest features/patch-nodes, always refer to the Discord #patch-notes channel!

Spoiler:


💾 Download
Latest: Emerald Rogue v2.0.1a
For info on how to apply patches search on Youtube or follow steps here https://www.pokemoncoders.com/apply-ips-ups-patch-play-rom-hack/
If you have any issue with patching, please check the FAQ channel on the Discord server linked below


Older Version: PokemonEmeraldRogue v1.3.2

📰 Versions
Expanded (EX)
This is the recommended version
This version contains modern improvements e.g. new battle items, abilities, fairy type, physical/special split etc.
(This is based on RH-Hideout's Emerald Expansion *Many thanks to all involved ❤)

Vanilla
Just standard Pokemon Emerald battle mechanics with no changes other than those mentioned in Subtle Changes from base game

💬 Discord
For notifications on new releases as well as a good place to bug report and request features join the Discord!
https://discord.gg/XGyB9gTb8E
Can legendary encounter Pokémon be shiny or are they shiny locked?
 
Pokemon Emerald Rogue V2.0.1

Ever wondered what Pokemon might look like as a Roguelike?
Pokemon Emerald Rogue is my take on it!


How does it work?
When you go on an adventure all routes, encounters and items will be procedurally chosen based on your progress into a run
After a certain number of routes you will encounter a random gym leader who will have a procedurally chosen team of their assigned type; as you progress further into a run gym leaders and other trainers will start using more difficult setups for their pokemon.
If you can make it all the way to the champion and defeat them, then you will have completed the run!

Once you complete or wipe out of a run you will go back to a hub area where you can buy permanent items and catch new "starter" Pokemon to use in the next run
As you progress further into the run, you will unlock more buildings/NPCs in this hub area to use for preparing the next run

How long does a run take?
It can vary based on how thorough you are being, but in my testing a complete run usually takes between 3-4 hours of in game time.
The is a quick save options (REST in the menu) which lets you put the game down mid run and return however be warned this does not allow save scumming

📽 Videos
Spoiler:


📷 Photos
Spoiler:


✨ Features
For the latest features/patch-nodes, always refer to the Discord #patch-notes channel!

Spoiler:


💾 Download
Latest: Emerald Rogue v2.0.1a
For info on how to apply patches search on Youtube or follow steps here https://www.pokemoncoders.com/apply-ips-ups-patch-play-rom-hack/
If you have any issue with patching, please check the FAQ channel on the Discord server linked below


Older Version: PokemonEmeraldRogue v1.3.2

📰 Versions
Expanded (EX)
This is the recommended version
This version contains modern improvements e.g. new battle items, abilities, fairy type, physical/special split etc.
(This is based on RH-Hideout's Emerald Expansion *Many thanks to all involved ❤)

Vanilla
Just standard Pokemon Emerald battle mechanics with no changes other than those mentioned in Subtle Changes from base game

💬 Discord
For notifications on new releases as well as a good place to bug report and request features join the Discord!
https://discord.gg/XGyB9gTb8E
Bonjour je suis un joueur français et j'ai un problème j'ai pu recevoir les récompenses des quêtes « defeat gym leader » de tout les leader et après cette Game je ne peux plus compléter les quêtes du moins elles ne se font pas j'ai capturé 100 Pokémon échanger avec mr randoman et aucune quêtes ne se complète si vous savez à quoi est dû se problème puisque je ne peux pas avancé dans construire mon village je vous remercie
 
Does daycare permanently remove the pokemon I put there when I withdraw it and die or forfeit while on a adventure
 
I love the new version but I have to say that move management is way more frustrating.. limited TMs are frustrating and I can't even see which of my pokemon can use a TM before buying it, it's so frustrating that I've to search on google every time. Plus, with 3 markets instead of 2, you always have to make a choice and often the choice is to not go for TMs because you need extra balls or extra potions or extra items, so you end up with pokemons with incomplete movesets. The thing I liked most on the older version was that you could've use every pokemon and discover its true power. Now it's just a matter of using the best mons because the under-used ones have atrocious movesets and you need too much TMs to make them good. I hope this will change in the next versions..
Sorry for my bad english tho
 
Hello, my English is not very good, so the following content is mostly machine translated. Sorry for the inconvenience.

I have noticed that the current expansion version (Ex v2.0.1a) does not support well on some emulators. On gpsp, players will crash the first time they use the Poké Ball (the tutorial battle). There is also this issue on no$gba.
I debugged this crash issue on no$gba and found that a command that is not allowed in the ARM manual was used in the expansion version: bx r15.
This instruction has no actual effect. If the simulator ignores it and treats it as a nop instruction, it can run correctly; If the simulator thinks it cannot handle it, it will crash directly. gpsp and no$gba are the second type.

I have reviewed the source code on GitHub, but I am unable to determine which specific C code caused the compiler to compile this invalid instruction.
But I have a very simple solution: just replace all bx r15 instructions in the ROM file with nop instructions, and that's it.
Specifically, I changed the content of the ROM file offset addresses 0x30f5b8 and 0x30f704 from the original "1f ff 2f e1" (bx r15) to "00 00 a0 e1" (nop).
After this modification, both gpsp and no $gba can smoothly avoid crashing.
 
Hello, my English is not very good, so the following content is mostly machine translated. Sorry for the inconvenience.

I have noticed that the current expansion version (Ex v2.0.1a) does not support well on some emulators. On gpsp, players will crash the first time they use the Poké Ball (the tutorial battle). There is also this issue on no$gba.
I debugged this crash issue on no$gba and found that a command that is not allowed in the ARM manual was used in the expansion version: bx r15.
This instruction has no actual effect. If the simulator ignores it and treats it as a nop instruction, it can run correctly; If the simulator thinks it cannot handle it, it will crash directly. gpsp and no$gba are the second type.

I have reviewed the source code on GitHub, but I am unable to determine which specific C code caused the compiler to compile this invalid instruction.
But I have a very simple solution: just replace all bx r15 instructions in the ROM file with nop instructions, and that's it.
Specifically, I changed the content of the ROM file offset addresses 0x30f5b8 and 0x30f704 from the original "1f ff 2f e1" (bx r15) to "00 00 a0 e1" (nop).
After this modification, both gpsp and no $gba can smoothly avoid crashing.
This is incorrect. bx r15/bx pc is an explicitly permitted instruction in ARMv4T: its effect is to switch into ARM mode for the following instruction; it would be a nop if the CPU was already in ARM mode. See page A4-20 of the 2005 ARM architecture reference manual, where it explains that the instruction is valid and has that effect, though is discouraged. I know for a fact it works on real GBA hardware. If those emulators do not support that, that is a bug in those emulators.
 
Last edited:
Hi Pokabbie, I love the rom so much! I don't really know where to submit bug reports, or if that is something you are interested in receiving, but I do have a weird interaction that has happened. Apparently, hammer arm is recognized as a sound-based move somewhere in the game code. It is very odd, but getting hit with throat chop led to hammer arm being unusable
 
If anyone having issue running this on My Boy! emulator try changing the CPU Core to Interpreter in the My Boy settings.
[PokeCommunity.com] Pokemon Emerald Rogue
[PokeCommunity.com] Pokemon Emerald Rogue
[PokeCommunity.com] Pokemon Emerald Rogue
 
It is ALREADY in ARM mode.

See the section 4.3.3:
"If R15 is used as an operand, the behaviour is undefined."

I finally found that in devkitARM's libgcc, there is a sentence in the division function:
In thumb mode, the following code will be used:
Used to switch to ARM mode.

But!
This code itself is already compiled in ARM mode.
So it will make this switching meaningless.

Additionally.
The vanilla version does not have this issue because it does not use devkitARM's gcc, but instead uses agbcc as the compiler.
 
Last edited:
Why I can use Items but the opposite trainer cannot? Doesn't sound fair
Not many games have trainers use items, but there's always the Embargo Curse which will ban in use items, which is required for some challenges.
 
I tried to replace the original devkitARM toolchain with the arm-none-eabi toolchain installed through pacman in msys2 (arm-none-eabi-gcc.exe (GCC) 13.3.0).
After compiling the expanded version again, these issues no longer exist.

So this is definitely a compiler issue.
 
I tried to replace the original devkitARM toolchain with the arm-none-eabi toolchain installed through pacman in msys2 (arm-none-eabi-gcc.exe (GCC) 13.3.0).
After compiling the expanded version again, these issues no longer exist.

So this is definitely a compiler issue.
Hello , great to read this . Can you please provide a little more information? Thanks
 
Last edited:
Hello , great to read this . Can you please provide a little more information? Thanks
I have already explained the reason on #306 and #310.

I compiled the project using msys2.
The specific process of changing the toolchain is:

1. Install a new compiler using the following command:
pacman -S mingw-w64-x86_64-arm-none-eabi-gcc

2. Modify the first line of the Makefile for the project:
#TOOLCHAIN := $(DEVKITARM)
TOOLCHAIN := /mingw64/arm-none-eabi/

3. make clean; make

Additionally, the new gcc version I have installed here is 13.3.0.
And in devkitARM, it is 14.2.0.
Actually, the version in devkitARM is higher, and I'm not sure if this issue is with devkitARM or this version of gcc.

But obviously, if I compile a simple integer division code using two different gcc and then disassemble it.
The gcc in devkitARM will compile the code that should be in thumb mode into ARM mode, as I mentioned earlier.
And gcc in msys2 will compile another set of division library function code to handle this issue correctly without introducing any errors.
 
Back
Top