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

Quick Research & Development Thread

In FireRed, LeafGreen, and Emerald there's the altering cave which only has zubat in, however if you went to an event (whether these events happened varies by sources) it would change them to other pokemon.

However making them change in the game is actually really easy.

For FireRed/LeafGreen:
Code:
setvar 0x4024 0xYY
For Emerald
Code:
setvar 0x403E 0xYY
Replace YY with the following:
Code:
00 (for zubat)
01 (for mareep)
02 (for pineco)
03 (for houndour)
04 (for teddiursa)
05 (for aipom) 
06 (for shuckle)
07 (for stantler)
08 (for smeargle)
(Anything above this will result in zubat)
This is worked out from the scripts already in the rom of FRLG and Emerald

FireRed
Spoiler:

Emerald
Spoiler:
 
Last edited:
Another bit of scripting stuff, not sure if this has been documented before. But you're able to give pokemon custom moves without asm.
Code:
setpkmnpp 0xAA 0xBB 0xCC
Where AA is the pokemon's party slot -1
Where BB is the move slot -1
Where CC is the move (in hex)

This is worked out from from the surfing pikachu egg scipt which is already in the ROM (at least in emerald)
Spoiler:
 
Another bit of scripting stuff, not sure if this has been documented before. But you're able to give pokemon custom moves without asm.
Code:
setpkmnpp 0xAA 0xBB 0xCC
Where AA is the pokemon's party slot -1
Where BB is the move slot -1
Where CC is the move (in hex)

This is worked out from from the surfing pikachu egg scipt which is already in the ROM (at least in emerald)
Spoiler:

This has been documented and only works this way for Emerald.
 
This has been documented and only works this way for Emerald.

well as i said, i wasn't sure if it was documented :)
regardless i wonder why this only works in emerald, since the pichu can transfer to all main gen iii games (assuming this is the pokemon box pichu) surely this means that there must be a way that RSFRLG do it no?
 
Anybody interested in finding out the table offset that special 0x158 uses in FireRed? Special 0x158 = opens several different multichoice boxes depending on 0x8004 *key: 0x0 = badge talk; 0x1 = silph-co elevator; 0x2 = rocket elevator; 0x3 = celadon department store elevator; 0x4 = link options; 0x5 = pharmacy options?; 0x6 other elevator; 0x7 and up - return 0x7f to lastresult* (quoted from JPAN's special/special2 research thread)
 
Whilst HERE tells us where the swarm table is in Emerald, the swarm table in Ruby is at 0x3D13F8, and the table in Sapphire is at 0x3D1450 using their formula the swarms are:

Surskit Lv3, Route 102: Bubble, Quick Attack
Surskit Lv15, Route 114: Bubble, Quick Attack
Surskit Lv15, Route 117: Bubble, Quick Attack
Surskit Lv28, Route 120: Bubble, Quick Attack
Skitty Lv15, Route 116: Growl, Tackle

Something to note, some are using lower level movesets than they should, surskit learns sweetscent at level 13, whilst skitty should know tail whip (lv3), attract (lv7), sing (lv13), and double slap (lv15), maybe the movepools were updated after swarms were coded, or the swarm levels were changed but the table not updated to match the new levels

Also as a note the previous table for emerald is a bit wrong, here's the new one:

Seedot Lv3, Route 102: Bide, Harden, Leech Seed
Nuzleaf Lv15, Route 114: Harden, Growth, Nature Power, Leech Seed
Seedot Lv13, Route 117: Harden, Growth, Nature Power, Leech Seed
Seedot Lv25, Route 120: Giga Drain, Frustration, Solarbeam, Leech Seed
Skitty Lv8, Route 116: Growl, Tackle, Tail Whip, Attract
 
Last edited:
FIRERED v1.0: Special 0x158 (shows multichoice based on values 0x0-0x6 stored in var 0x8004) uses a table at 0x3F5BCC that is 0x12C bytes long. There are six entries in the table and each starting entry is 0x30 bytes away from each other. Now one can easily extend this table by repointing, but there is probably the question of where the offset for the multichoice box properties table is and/or the limiting byte location.

edit: FBI's scrolling multichoice routine seems to have the offset for the multichoice box properties but I have no idea how to read or understand it. The offset seems to be at 0x0CBA7C.
 
Last edited:
What I've noticed is that when you insert a map, you are not able to ride the bicycle on that map even if you edit all of the header settings for the map. The solution to this lies in the string of bytes for the map header.

1. In Advance Map, go to the map header and enter the professional map header settings with CTRL+H.
2. In the string of bytes for the map header under "Map options:," find the first of the last four bytes (byte #25 if that confuses you).
3. Change that byte (byte #25) to 01.
4. You can now ride the bicycle on that map!

To build on to this, this is for FR only.

For Emerald, it is very close in similarity. Follow the below image in order to get bike to work or not work on your inserted maps or maps already created. The byte is the same on all maps. It is the second to last one every time.

[PokeCommunity.com] Quick Research & Development Thread


Also if anyone is curious, yes you can also do this by changing the Show name on entering drop down for that map. 01 is the "Show name [01]" option. This allows you to bike on that map but doesn't show the map's name. If you want to bike AND show the map's name on entering the map, the byte is 0D or you can choose "Show city names [0D]". If you want to show the city name but NOT allow biking, the byte is 0C or just choose ??? [0C]
 
Last edited:
Is it possible to have items with multiple effects? Ex. an item that increases the damage of both fire and water type moves.
 
Hello. I hope I'm on the right thread.

I just wanna ask if there's a way to decrease the pages of Pokedex.

Like for example; The National Pokedex would be up to Celebi only.
 
I know it's nothing hard, nothing WOOOOW, but that's something and my first alone-research-area collaboration. This is for Fire Red:

INFINITE SAFARI TIME

Simply go to 0xA0F1A and replace the 01 38 there, for 00 38.

The game will still give you 600 steps, but it won't decrease, so you will be there until you retire or run out of Safari Balls.
When I figure out how to hide the step count in the start menu, I'll edit this post.

The equivalent "Infinite Safari Steps" for Emerald appears to be at 0xFC15E. Again, just replace 01 38 with 00 38.
Emerald doesn't have a visible step counter in the menu to hide either, which is nice I guess.

If you ever feel the urge to stone a Pokemon to death, setting the byte at 080169D4 from 0x6 to 0x0 will make it so Pokemon don't flee after throwing 20 rocks at them in the safari zone in Fire Red. Not sure if anyone will ever actually use this but whatever. :P

If you'd like to "stone Pokemon to death" in Emerald, change the byte at 0x3EF94 from 0x06 to 0x00 as well.
 
Last edited:
How To Give ?? Pokemon Separate Cries
In between Celebi and Treecko in \FR{FireRed} and \EM{Emerald}, there are 25 empty Pokemon slots. These slots appear to have originally been used for the 25 Unown forms before Game Freak decided to go a different route. These slots are all hard-coded to have the cry of Unown, and there is no way to change this with a regular cry editor (it will just change the cry of all of them at once, and will also change the cry of Unown itself).

So, in order to give these Pokemon separate cries, you must do the following.

Insert 00 00 00 00 00 00 00 00 00 00 at:

FireRed: 0x4330C
Emerald: 0x6D518
Ruby: 0x3F90C

Insert 00 00 00 00 at:

FireRed: 0x43318
Emerald: 0x6D524
Ruby: 0x3F918

Repoint the table at:

FireRed: 0x2539D4
Emerald: 0x31F61C
Ruby: 0x1FDE6A

To make repointing the table easier, here is a table you can copy-paste to free space. The 00 00 entries are the 25 ?? slots. You can replace the 00 00's with whatever index number you need to.

Spoiler:


Offsets for FireRed were found by DoesntKnowHowToPlay and ThomasWinwood. Details are in this post.

All I did was find the Emerald and Ruby offsets. (I put the FireRed offsets here too for convenience).
 
Last edited:
To allow the 25 ?? Pokemon (the ones between Celebi and Treecko) to have separate cries:

Insert 00 00 00 00 00 00 00 00 00 00 at:

FireRed: 0x4330C
Emerald: 0x6D518
Ruby: 0x3F90C

Insert 00 00 00 00 at:

FireRed: 0x43318
Emerald: 0x6D524
Ruby: 0x3F918

Repoint the table at:

FireRed: 0x2539D4
Emerald: 0x31F61C
Ruby: 0x1FDE6A

Offsets for FireRed were found by DoesntKnowHowToPlay and ThomasWinwood. Details are in this post.

All I did was find the Emerald and Ruby offsets. (I put the FireRed offsets here too for convenience).

hey so this isn't actually fully complete as I found out when I first did it and ported to emerald, what I worked out is you actually have to manually write the cry table for the gen one and two mons in hex -1 followed by a 00 then followed by 50 00's (the limbo slots) eg bulbasaur is 00 00, ivysaur is 01 00 venusaur is 02 00 as stated in my post HERE. so you have to make sure the pointer of the table is to the start of the gen one mons
 

DPPt Save/Summary Pokedex Seen Count Display into Emerald


For those who want the DPPt Amount Display of Pokedex which displays the seen amount in while saving and in the continue-new game menu into Emerald:

08031F96: 00 20
08031FA4: 00 20
0819A3B0: 00 20
0819A3B8: 00 20

Again, it is really that simple. :)

Credits to Jambo51 for his original routine for FireRed.

Only error though: the Trainer's ID. While these changes, it doesn't show the seen amount. Does it supposedly to happen or not? I'll look into that later.

To fix the Trainer Card to show the "Seen" amount too:
080C3776: 00 20
080C377E: 00 20
 
Back
Top