CoolTrainer (and non hex:00 Super Glitch) yields documentation thread
Posted by: Torchickens
Date: 2014-07-08 18:23:02
You may be able to work with that though with the right screen data and names preceding the non hex:00 Super Glitch move, but it makes choosing a suitable location more complicated.
So I'm going to invest my time in the CoolTrainer move, but an advantage of Super Glitch over CoolTrainer is that it seems more likely to cause corruption (at least LM4's hex:BE Super Glitch).
Variables you need to work with - Screen data:
The Pokémon species you get depends on the screen tile at x=1 and y=11, once the screen data is saved, by doing things including opening the Pokémon menu, opening the Pokédex or items menu.
On BGB, the value in y starts from 0 at the top of the screen and ends at 17 (hex:11) at the bottom of the screen, so it's x=01, y=06 on BGB's VRAM viewer.
(Other) helpful coordinates in y-x order (according to BGB):
Species (6-1)
Current HP (6-F, 6-10)
Status (6-12)
Type 1 (6-13)
Type 2 (7-0)
Attack/Defense DV (7-6)
Speed/Special DV (7-7)
Level (7-8)
Max HP bytes 1/2 (7-9, 7-A)
Attack bytes 1/2 (7-B, 7-C)
Defense bytes 1/2 (7-D, 7-E)
Speed bytes 1/2 (7-F, 7-10)
Special bytes 1/2 (7-11, 7-12)
Here is an image to make things clearer:
[img]http://i.minus.com/jrMP7e6C2eSdG.png[/img]
How to get a custom Pokémon:
See TheZZAZZGlitch's video for a walkthrough.
Below will be a written version with extra notes:
First, get a Ditto, encounter a wild Pokémon with more than one move, then swap one of the moves with the first to get the CoolTrainer move. You'll also want Fly and access to Vermilion City.
Open the Pokédex, Pokémon, Item or Trainer Card menu/screen in a place of your choice to save the screen data. There will be a list of yields below, but if you want to make your own (this is probably very hard if you're not using BGB) then looking up the helpful tile IDs in game in the coordinates above is essential. You can do this with BGB's VRAM viewer.
You may need to have the bottom-left corner of a bush tile on the screen (hex:50) after BGB coordinates: x=01, y=06 to ensure that the game does not copy too much data and cause a freeze.
Fly to Vermilion City, then walk to Diglett's Cave (because here the game typically doesn't freeze after the Super Glitch effect). Go into battle, then go in the fight menu and either repeatedly try to 'scroll' or open/close it. Aim for an effect like the type of the CoolTrainer move changing, and/or the music stopping and/or the enemy's sprite palette changing. The opponent's name should change for sure.
Throw a Master Ball or something to catch the altered enemy Pokémon. The Pokémon species will depend on the tile at x=1 and y=06 (BGB coordinates), the level will depend on the tile at x=8, y=07 (BGB coordinates). See the list of coordinates above for other attributes. Make sure that you open the start menu after capturing your Pokémon before exiting Diglett's cave or the game may freeze.
It may take a few times, or it may be seemingly impossible. Unfortunately I don't know what to suggest other than using a save that is relatively incomplete.
TheZZAZZGlitch suggests using a box with less Pokémon (I imagine releasing them doesn't count though because data stays) but contrary to what he said the Cooltrainer move's name data may not originate from there. I've observed it taking data from the fifth Pokémon in the party's name (on my save with filled box Pokémon), and other addresses that I can't identify, like names being 'ULTRA BA' and 'JACRED'.
The name data may originate from a location nearby to other possible locations (e.g. I've observed D29E, D29F, D2A3, D2A4, D2A5, D2A6, D2A7, D2A8, D2A9, D2AA) though.
When you get the glitch to work, it means the internal name of the Cooltrainer move was too long. The screen data will be copied into data past the limit of CF4B, and you may know from memory that CFD8 is an address for the enemy Pokémon in battle, because it's used in the wild encounter code 01xxD8CF. We're basically changing that address in the middle of battle, and other addresses including the enemy Pokémon's level and status condition.
So, below this line will be a list of locations and yields.
Within battle:
1) Basic yield (TMTRAINER effect):
[img]http://i.minus.com/j0yFFYoCaTK60.png[/img]
Species: Missingno. (hex: 32)
Current HP: Depends on enemy sprite.
Status: $30 (frozen solid/burned)
Type 1: $7F
Type 2: $7F
Attack & Defense DVs: $5, $6
Speed & Special DVs: $5, $D (dec: 13)
Level: 127 ($7F)
Max HP: 32512 + (ID of first letter of user's name)
Attack: Depends on second and third values of user's name
Defense: Depends on fourth and fifth values of user's name (fifth digit is 7F for 'DITTO')
Speed: Depends on sixth and seventh values of user's name (both are 7F for 'DITTO')
Special: Depends on eighth and ninth values of user's name (both are 7F for 'DITTO')
2) Flipped sprites yield:
[img]http://i.minus.com/jJ018oNu3uUx8.png[/img]
Species: Horsea (hex: 5C)
Current HP: Depends on enemy sprite.
Status: 06 (Sleep)
Type 1: $7F
Type 2: $7F
Attack & Defense DVs: 3, A (dec: 10)
Speed & Special DVs: 3, 3
Level: 127
Max HP: 32512 + (ID of first letter of user's name)
Attack: Depends on second and third values of user's name
Defense: Depends on fourth and fifth values of user's name (fifth digit is 7F for 'DITTO')
Speed: Depends on sixth and seventh values of user's name (both are 7F for 'DITTO')
Special: Depends on eighth and ninth values of user's name (both are 7F for 'DITTO')
I won't be as detailed for other yields. I plan on listing just species, level, status, types, DVs.