• 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

Change EXP gauge sound in:
FireRed
To Emerald, 0x6B5BF1: 48
Emerald
To FireRed, 0x8FC6AD: 0D
 
Last edited:
Adjust delay frame on holding D-pad key.
FireRed
0x5C8: Delay when press and hold a D-pad key at first time, default is 28.
0x5C2: Delay Per Second, default is 05.
Unfortunately it doesn't work on any CFRU hack.
Emerald
0x5BE and 0x5C4
Unfortunately the two are different on any Decomp Emerald hack because they revamped ROM address.
 
For Emerald to Increase Max Money Amount to match BW version:
Spoiler:


Credits:
JPAN for the original research
Turtl3skulll for writing the Fire Red's dummies tutorial
jiangzhengwenjzw for helping me to fix the 7 digit display problem

how about increasing the quantity per item in the bag sir?...ex Potionx999 instead of 99,,, thanks in advance,,
 
[EMERALD]
I couldn't find the answer to this on here, so I figured it out myself. If anyone's trying to get running shoes working inside and before Mum gives them to you at the start of the game...
Change 0x8AF84 from 14 D0 to 00 00
and Change 0x11A1E8 from 08 to 00

hope that helps someone!

Also, I can't get the National Dex fix that is in this thread working on Emerald, if anyone can help me out, I would appreciate it
 
[PokeCommunity.com] Quick Research & Development Thread


Change Shop Price Display (FireRed)​
9B430: Number of digits to display
9B440: Number of digits to display
9B47A: X position of price
Found using pokefirered and HMA
 
Last edited:
Hello I am asking this here since it seems too complex to ask anywhere else and also because I have not found any posts covering the subject, I wanted to know if it is possible to add the sound check(might be an asm routine) from the japanese version of pokemon emerald which was removed from the localized release of pokemon emerald. (https://tcrf.net/Pokémon_Emerald#Sound_Check)
 
Apologies if this has already been found/documented/fixed, but for those who are using Doesntknowhowtoplay's Physical/Special Split Patch, I found a small bug.

The feature where if a Pokemon hits a Frozen target with a Fire Type Move, the target will thaw out/defrost will not work if hit with a Physical Fire Type Move. This is because the routine which does this, activated in Battle Script Command 49 (what I call RunMoveEndRoutines), only checks for Special damage specifically.

To fix this, go to 0x080234DC in FireRed or 0804BE98 in Emerald and put 04 30 there instead of 0C 30. This will replace the line "add r0, r0, #0xC" with "add r0, r0, #0x4". This will cause the game to check for total damage (both Physical and Special) instead of just for Special Damage.

Likely the game assumed that since all Fire Type Moves were Special, only checking for Special Damage was sufficient.
 
HM Flash Lightens Entire Screen [EM]

I may be several years late to this, but there is a much more simpler way of achieving this effect without interfering with Brawly's Gym which is pretty dependent on the values being changed here. As it turns out, it's handled directly by a script that is called when using Flash, and I just changed the script to how it is in FRLG.

Put 00 at 0x2926F9 and 0x2926FB
 
PCM volume, channel, and quality controller.
FireRed: 0x1DD0C8
Emerald: 0x2E0104
Vanilla value is 00 C5 94 00, what does they mean?
C5 can take two parts. C is PCM volume, 5 is PCM channels. Some hack increased channel to 12, so it would be CC.
94 can take two parts too. 9 is DAC bit (9 is 8-bit), on emulator it won't be noticed difference except E or F, PSG audio will quieter, especially Noise channel, some music use it as drum, just don't modify it. 4 is PCM quality, 1 is worst, C is best, E and F are laggy thus can't listen.
For those four value, 0 is not lowest, but somehow default. Volume is F, channel is 8, bit is 9, quality is 4.

Is it possible to improve PCM quality so music would listen better? Partially, unforunately.
For vanilla FR/EM soundfont, plus any hack uses vanilla one, increase PCM quality will make drum speed and pitch up.
For BW soundfont, just a few hack can take advantage of high PCM quality. Unbound OK, it even give an option to adjust quality (2 4 8). GS Chronicles OK. Though not suitable for playing game, because high PCM quality will cost more CPU cycle thus game will more laggy, it extremely suitable for GSF ripping. One more weird thing, 9~C & E~F will stuck at white screen. Other hack can't increase beyond 4, such as Saiph, Sors, Saiph 2, etc., really shame.
For custom soundfont, like Clover and SOTS, if increase quality won't distort drum, then it can be improved.

For Decomp Emerald hack, try searching 00 CC 94 00 to find this address.
 
Last edited:
Hi all,

I'm making a Binary Fakemon hack, everything is nearly done, but I just realized Shedinja's HP is hardcoded to always be at 1, even if i change its value... so my Fakemon will always have 1HP.

I found answers on how to fix it in Hex but only for Fire Red and Ruby Version. Maybe somebody here knows where the script is located?
Any help would be greatly appreciated.

EDIT : Found it!

Input 00 00 at 0x068DF4, then 00 00 at 0x068FCC
 
Last edited:
Speed up battle text delay.
FireRed:
0x5D5E, 0x1FE0C, 0x22C22
Emerald:
0x4864C, 0x4B5BA

Default value is 01, recommended value: 02, 04, 08.
FireRed's 0x5D5E is counting down, it must be subtracted to exactly 0, and default delay length is 40 (dec 64).
The last address is usually shorter than former, so modify it to lower value.
My prefer: Former use 04, last use 02.
 
This doesn't fix ones for when you use the PC, but i found the offsets to fix them. Just put 00 on those offsets.

[FR]
Code:
0x08093DE8
0x08093DEC

Also Emerald equivalents if you want to get rid of them there also. Same thing, put 00 on those offsets.

[Em]
Code:
0x081B2C1C
0x081B2C20
0x0807422E
0x08074232
0x081C27E4
0x081C27E8
0x08093DE8
0x08093DEC


Offsets for [LeafGreen 1.0] are the following:

0x136210 and change to 00
0x136214 and change to 00
0x1218BC and change to 00
0x1218C0 and change to 00
0x049718 and change to 00
0x04971C and change to 00
0x093DBC and change to 00
0x093DC0 and change to 00

For completion sake for the Nidoran gender symbol shenanigans fix:

FireRed 1.1
0x1362B0 and change to 00
0x1362B4 and change to 00
0x12195C and change to 00
0x121960 and change to 00
0x04972C and change to 00
0x049730 and change to 00
0x093DFC and change to 00
0x093E00 and change to 00

LeafGreen 1.1
0x136288 and change to 00
0x13628C and change to 00
0x121938 and change to 00
0x121934 and change to 00
0x04972C and change to 00
0x049730 and change to 00
0x093DD0 and change to 00
0x093DD4 and change to 00

-------------------------


That being said; here's some more LeafGreen 1.0 offsets, because Wynaut? I was bored and curious.

Running Indoors:
0x0BD468: change 08 to 00

Safari Zone Pokémon don't flee:
0x0169D4: change 06 to 00

Safari Zone Steps are now infinite:
0x0A0EEE: change 01 to 00
 
Last edited:
Out of boredom, I dug through every single script and OW in a clean FireRed BPRE ROM and wrote down every single flag and variable I could find. My findings are below, and include OW-visibility flags, item ownership flags, and more. (Not trainer or world map flags, though.)

Summarized flag findings:
Flags 0x000 - 0x006, at minimum, are temporary flags and are directly manipulated by the game engine.

Flags 0x011 - 0x01F are used to control the visibility of destructible OWs, i.e. Rock Smash boulders. They are probably cleared by the game engine every time a map is loaded, as no level scripts clear them. Do not use them on standard OWs.

Flag 0x266 appears to be directly manipulated by the game engine. If set, there is an EGG waiting for you in the Four Island Daycare Center. It is unset manually by scripts if you choose to discard the egg.

The game does not use checkitem to see if you have an item; instead, Game Freak scripts will always check for flags that were set as part of the event sequence that gave you the item (or it may even check for the OW-visibility flags if it was a pickup). E.x. the game uses "checkflag 0x271" after manually setting it, not "checkitem ITEM_BICYCLE 0x1".

A similar thing is done with badges. The "champ-in-making" guy that always chills next to a Gym statue doesn't check badge flags directly; there are eight flags (4B0-4B7) that are set along with those flags, which he checks. Redundant...

Not all of the listed OW-visibility flags are set/cleared directly. Most of them correspond to Person IDs in AMap, and are indirectly altered when one uses "hidesprite" on the Persons (referring to them by Person event number rather than ID).

Notable flags:
Flags 0x011 - 0x01F are used to control the visibility of destructible OWs.

Flag 0x266 is set by the game engine if an Egg is in the Daycare.

Flags 0x4B0 - 0x4B7 affect the "champ-in-making" guy's dialogue in Gyms.

Flags 0x4B8 - 0x4BC are set if the player has beaten {whoever} in the Elite Four during their current attempt at it. They're cleared upon entering the Hall of Fame registration room.

Flags 0x500 - 0x700 are trainer flags.

Flags 0x820 - 0x827 are read directly by the game engine and determine Badge acquisition. But we already knew this.

Flag 0x82D is set if you customize your profile by talking to some woman in some PokeCenter. Apparently directly set by the game engine.

If Flag 0x834 is set, then the player knows the name of Bill's PC (as opposed to "Someone's" PC). Don't know if this affects the PC menu, but it affects dialogue shown when receiving a Pokemon and having it sent to the PC.

Flag 0x842 may have something to do with wireless functionality or some minigame. It's checked after healing at a PokeCenter.

Flag 0x844 is set when Celio connects to Lanette -- IOW when you can trade with R/S/E. Don't mistake it for the E4 completion flag like I almost did.

Flag 0x849 is set when you solve the Tanoby Key.

If Flags 0x84A and 0x84B are cleared, the Vermilion City dockworker won't even bother checking for the MysticTicket and AuroraTicket, respectively. You won't be able to use them. I don't know what sets or clears these flags.

Flags 0x890 - 0x8FD are world map flags.

Flags 0x900 and up overlap the RAM used for script variables and hence ARE NOT SAFE TO USE.

Summarized variable findings:
0x4020 - 0x4024 are all pedometers, the first of them controlling REPEL expiration.

0x4036 is used for Selphy's Pokemon-fetching game. (She's the woman at Resort Gorgeous). I don't know what modifies this var -- possibly the game engine itself?

0x403A is used in elevator scripts and is directly modified when special 0xD8 is called. Don't store anything that you want to be permanent in this variable.

Vars 0x4064 through 0x4066 are used as part of the boulder puzzles in Victory Road. They're also cleared upon entering Route 23, along with 0x4067.

0x4069 sets which fossil is being revived in Cinnabar Island, and 0x406A sets the progress (1 = active, 2 = complete).

Full findings:
Spoiler:

EDIT: Updated with information from JPAN's special list as well as some hidden scripts I found (that are executed directly by the game engine, and are not referenced in maps).
Can you please tell what flag 13A does please?
 
Remove Incense Breeding [FR]
If you're unaware, Gen IX retconned incense breeding out of existence. All the baby Pokémon that required incenses no longer do - for example, Marill and Azumarill always spawn Azurill eggs, and a Marill egg is impossible. Previously, of course, you'd get Marill eggs unless one of the parents held a Sea Incense, which would give Azurill eggs.

If you want that in FR, you can just do:

Code:
0x08045FA0: 70 47
 
Back
Top