Skip to content

Instantly share code, notes, and snippets.

@Mixone-FinallyHere
Created October 6, 2022 15:01
Show Gist options
  • Save Mixone-FinallyHere/d6e4450ea15169b37a277b2756f26887 to your computer and use it in GitHub Desktop.
Save Mixone-FinallyHere/d6e4450ea15169b37a277b2756f26887 to your computer and use it in GitHub Desktop.
Gen6 Exp Share All Tutorial

Exp. All via remodel of Exp. Share

FireRed USA Version 1.0

This tutorial shows how to add Gen. 6 Exp. All system to Fire Red and attach it to a key item that enables or disables it. It is based on existing tutorials with the few errors or bugs patched and puts together various pieces of info to have it grouped in one single tutorial. For the purpose of this tutorial the item will be the Exp. Share.

This tutorial is aimed for users with little to no knowledge of AM or HexEditing.

The first thing you need to do is find around 420 bytes of free space. Not all is needed but it is better to be safe than sorry.

In your favorite Hex Editor go to the first address of the free space, in my case F6 88 40, and copy paste the following: 28 68 01 1C 53 31 08 78 07 B4 11 48 11 4A 0E B4 00 F0 1D F8 0E BC 01 28 15 D1 07 BC 78 B4 0E 4E 33 78 0E 4C 64 25 5D 43 64 5D 06 2C 01 D0 01 22 00 E0 00 22 01 33 06 2B 00 D1 00 23 33 80 78 BC 04 B4 07 4A 10 47 07 BC 01 22 02 40 F8 E7 10 47 00 02 00 00 D1 E6 06 08 B8 F0 02 02 97 42 02 02 D1 1C 02 08

This a compiled ASM routine that is actually doing the Exp All.

This was compiled using the flag 0x200 and variable 0x4000, if you wish to use different ones please follow the links in credits to see more in depth how it works.

Now take that address, F6 88 40, and save it in notepad, we are going to use it in the following instructions:

Go to 0x08021C3A and overwrite with 01 21 Go to 0x08021D70 and write 01 20 Go to 0x08021CC6 and write the following: C0 46 00 4A 10 47 [XX+1 XX XX 08] 04 BC Where XX XX XX is the reversed address + 1 so in my case: F6 88 40 + 1 -> F6 88 41 -> 41 88 F6 -> C0 46 00 4A 10 47 41 88 F6 08 04 BC

Ok great so now the game HAS the Exp All system and it is activated by setting the flag 0x200. If at this point you feel confident enough to go and create an NPC or menu option that sets and clears this flag please go ahead, it is the best way of learning.

Now how to make it so Exp Share does this?

First we will use a script that handles clearing and setting the flag with a Yes/No box, find the next empty address after the previous code, I used F6 88 C0, and insert the following: 6A 5A 0F 00 F5 88 F6 08 09 05 21 0D 80 01 00 06 01 DD 88 F6 08 06 00 E9 88 F6 08 6C 02 29 00 02 0F 00 06 89 F6 08 09 06 02 2A 00 02 0F 00 18 89 F6 08 09 06 02 BF E2 D5 D6 E0 D9 00 BF EC E4 AD 00 BB E0 E0 AC FF BF EC E4 AD 00 BB E0 E0 00 BF E2 D5 D6 E0 D9 D8 AD FF BF EC E4 AD 00 BB E0 E0 00 BE DD E7 D5 D6 E0 D9 D8 AD

Now we will make it so this function can be called by an item thanks to Lunos research, we first reverse the address we got before, so F6 88 C0 becomes C0 88 F6, and then we replace XX XX XX in the following with it: 10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 E5 9A 06 08 98 99 03 02 3D 10 0A 08 09 75 07 08 XX XX XX 08 In my case it became: 10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 E5 9A 06 08 98 99 03 02 3D 10 0A 08 09 75 07 08 C0 88 F6 08

Now we grab the next empty space area, for me it was F6 89 90, and we insert the above there. [I]Please note, I left some empty space between each of these insertions in case mistakes were made or in case in the future i wanted to edit the scripts, you don't have to do the same.[/I]

And now for the last touch we can use a basic HexEditor, or the Item Manager tool, or HexManiacAvance.

  • Basic HexEditor With a basic HexEditor we need to manually edit each byte that defines Exp Share. The following changes are needed: First we set the Exp Share item type to key item by changing 0x083DCF8A from 01 to 02 Then we make it be a usable item by setting 0x083DCF8B from 04 to 02 And finally we edit the bytes at 0x083DCF8C to XX XX XX 08 where XX XX XX is the previous reverse address PLUS 1, in my case it became 91 89 F6 08 .
  • Item Manager Probably the simplest, we will perform the same steps as for a HexEditor but with a tool. Open the Item Manager, go to Exp Share, change Pocket to 02 Key Items, click on the triple arrow button, change Type to 02 Use-of-SELECT, change Field Usage to 08XXXXXX where XXXXXX is the NON reversed address PLUS 1, in my case it bacame 08F68991. Make sure to save the edits by pressing Save and THEN saving the ROM.
  • HexManiacAdvance As simple as with item Manager. Select Edit -> Goto, then select Items. Go down to Exp Share. Change pocket to key, change type to 2, change fieldeffect to 08XXXXXX where XXXXXX is the NON reversed address PLUS 1, in my case it bacame 08F68991.

After this everything should be working fine. I recommend giving the Exp Share via Oak or some other way, personally I just leave it in PC at start of game.

If you have any questions feel free to post them here but please note that:

  • This was made simply to recompile info that was spread about, the original creators of these scripts are probably better sources of info in their respective threads.
  • This was made for FIRE RED not leaf green or emerald or anything else AND for the US version, I sadly do not have time to review all info for those and will not be able to offer much help for those.

Credits to most of the work of this tutorial go to Samu, Lunos and BluRose as well as users in their respective threads:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment