Before you read this page, it is paramount that users has read and understands the Standard Version of Custom Modifications.
Effectively, this page will allow users to learn how to make codes that once activated, would remain activated until the game is shut down or SR'd.
Such codes allows for changing of wild encounters, encounter shinies, walk through walls etc.
This is done via redirecting the ram of the game to constantly read the certain stats of a Pokemon in party, to constantly read the Pokemon's data itself as cheat codes.
This is also known as cheats from stats.
Anyhow, you gotta make sure the Pokemon with Cheats in Stats is ready, before you perform Cheats from Stats.
Data Structure of Redirecting to Party Slot (Cheats from Stats)
To activate Cheats from Stats, players need to perform 3 Box 1 Names activations (via TM17, of course).
Note that, the underscore (_) below represents a space on the box naming screen.Use Slot 5 (as seen here?
Box 1 - Name 1: _A?e09
Box 1 - Name 2: _A?f!/
Box 1 - Name 3: _A?d's♂
The 3 addresses above, (0xFF8A -> _A?e ) (0xFF8B -> _A?f) (0xFF89 -> _A?d) are areas in the RAM, and the 3 values (0xF5 -> 09) (0xDA -> !/) (0xC3 -> 's♂),
Where 0xDAF5 is actually the address of Slot 5's HP EV.
This means the cheats from stats will load from Slot 5's HP EV.
In this scenario, I want to load the cheats from my Slot 3's HP EV instead,
and according to the ram_map, the Slot 3's HP EV is at 0xDA95.
Because of this thing called "endianness", where some data structures flip the front and back of data addresses, it'll be represent as 0xBack then 0xFront, as seen below.
So
0xFF8A and 0x95 -> _A?e?p
0xFF8B and 0xDA -> _A?f!/
0xFF89 and 0xC3 - > _A?d's♂ (unchanged)
Using EVs and IVs are preferred, because most of the time the Pokemon's data stays legal, meaning it can be boxed,
and the Pokemon can be reused another day, without having to retype the whole thing.
Data Structure of custom cheat in stats (Pokemon with Cheats in Stats)
First, we got to understand how the game will read the data.
The code typically ends up being:
"Write" "Value" "to" "Address (with endianness)" "Terminate (if necessary)"
For example, let's look at the "Catch Any Pokemon" code on psypokes:
First, the 01 in 01xxEDD0 can be abandoned/ignored. (this holds true for most GB era gameshark codes)
Next, if we wanted to meet Celebi with this gameshark code, it would have been 01FBEDD0 (0xFB being hexadecimal for 251).
What you probably didn't know, is that 0xD0ED (endianness resolved) is actually the address for Wild Pokemon Species ID! (if you don't believe me, check the ram_map)
Now, if we wanted to write our own cheat code for stats, this is how is it normally expressed as:
"Write" "251" "to" "0xD0ED" "terminate"
So how would that look like? Using the Pokemon's structure as reference:
So once you've did the 6 Box 1 names + TM17 activations, your Pokemon in the third slot will have those EVs!
As long as your Pokemon doesn't gain EVs, when you use Slot 3 Cheat from stats (previous section), Celebi will continue to be every wild encounter, until you shut off your game. Don't believe me? watch this clip:
ezgif.com-resize(1).mp4
You may have noticed, that I didn't use TM17 on my 3rd line of activation, until I entered the grass. The cheat activated upon all 3 lines being activated, and the Celebis appeared! (also, I think the Lv 40 was a Raikou I've yet to catch, lol)
Another Example
Here's another example, which would instead require the cheat to be read starting from Slot 3's Pokemon Species ID.
It's called Illegally Expanded, as the stats will likely become illegal, and may be changed when stored into the PC.Cheats from Stats (Slot 3) Illegally Expanded
0xFF8A and 0x8A -> _A?e?e
0xFF8B and 0xDA -> _A?f!/
0xFF89 and 0xC3 - > _A?d's♂
Encounter Wild Lv 100 Shiny Celebi
If you understood the previous table with the data structure, you'll likely understand what I just pasted above.
Basically, the full Pokemon stats will be a cheat code, that changes various things until the game is reset.
Additionally, you'll notice that the Item on the Third Pokemon, also would control the Wild Encounter's species.
The video below will show how the encounters change, when activated.
ezgif.com-resize(2).mp4
The most notable thing in the video above (besides the horrible rendering; trying to keep the video small in size), is that Item swapping changes the species encountered, as mentioned earlier.
Also, I made it so that when the code is active, your character's clothes turn blue.
To revert back to original red, reset the game (code inactive) and fly away.
If you want to know what items can trigger what species encounter, refer to the table on this page.
If the item can't be held (example, key items), you can simply use the box name 1 to change the held item.
So at this point, you've learnt how to read from EVs or Pokemon ID,
and how to edit to EVs or Pokemon ID.
Here's also an excel file, that can be used as a template for creating Pokemon with Cheat Stats (as seen above)GS ACE conversion table.xlsx