Glitch City Laboratories Archives

Glitch City Laboratories closed on 1 September 2020 (announcement). This is an archived copy of a thread from Glitch City Laboratories Forums.

You can join Glitch City Research Institute to ask questions or discuss current developments.

You may also download the archive of this forum in .tar.gz, .sql.gz, or .sqlite.gz formats.

Generation I Glitch Discussion

CoolTrainer (and non hex:00 Super Glitch) yields documentation thread - Page 1

CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-07-08 18:23:02
This thread will document locations and screens you can use for your CoolTrainer (hex:00) corruption, and theoretically non CoolTrainer corruption, but since Super Glitch also causes D0E1 corruption (when you open the fight menu) you risk corrupting your number of Pokémon held (at D163) to something bad and your other party Pokémon.

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.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-07-10 13:02:20
No Mew yet (or even any rare Pokémon except for Gengar, the Hitmons, and glitch Pokémon) but I'd like to post what I've gathered so far.

$F4 is apparently possible, but I don't know what Glitch City TheZZAZZGlitch used in his video.

[size=12pt]0E Gengar[/size]

Route 10, level unchanged.

[img]http://i.minus.com/jb0LYyUrk07adV.png[/img]

[size=12pt]11h Cubone[/size]

Route 12, level 60.
Viridian City, requires walk through walls.

[img]http://i.minus.com/jbzQkkIh8n8ue4.png[/img][img]http://i.minus.com/jcwCISj89MHCe.png[/img]

[size=12pt]14h Arcanine[/size]

Cerulean City (no Surf), Vermilion City (requires Surf).

[img]http://i.minus.com/joxf2uf2zGI2u.png[/img][img]http://i.minus.com/jbjOlnEtFMiqWp.png[/img]

[size=12pt]23h Fearow[/size]

Cerulean City, level 57.
Route 2, level 44 (walk through walls).

[img]http://i.minus.com/j4yFRRy2wiGVc.png[/img][img]http://i.minus.com/jWrLm99kKMqFM.png[/img]

[size=12pt]2B Hitmonlee[/size]

Route 1, level 57.

[img]http://i.minus.com/jfvZW9TpLafn5.png[/img]

[size=12pt]2C Hitmonchan[/size]

Route 1, level 57.

[img]http://i.minus.com/jqh8Zxhy1TLlm.png[/img]

[size=12pt]30h Drowzee[/size]

Fuchsia City, level unchanged.

[img]http://i.minus.com/jF4Rck9HkIpdc.png[/img]

[size=12pt]39h Mankey[/size]

Route 1, Level 57.

[img]http://i.minus.com/jwGm89KloOiT4.png[/img]

[size=12pt]41h Venonat[/size]

Pewter City, level unchanged.

[img]http://i.minus.com/jbi7vAaonUl3Kf.png[/img]

[size=12pt]50h Missingno.[/size]
TheZZAZZGlitch's out of bounds Glitch City.

[img]http://i.minus.com/jb1cWBs4LiHb6I.png[/img]

[size=12pt]BFh: A[/size]

Route 1 Glitch City, level 16. If you don't want it to revert to Rhydon, make sure you've seen Krabby in the Pokédex.

[img]http://i.minus.com/jbtLvOLAslZVIf.png[/img]

[size=12pt]F1: 94[/size]

TheZZAZZGlitch's out of bounds Glitch City. There is no 50 tile in this one. Ditto has to be called "R:u" for some reason. Level 58. If you don't want it to revert to Rhydon, make sure you've seen Poliwhirl in the Pokédex.

[img]http://i.minus.com/jb1MBeDMqdUddb.png[/img]

[size=12pt]FF: Charizard 'M[/size]

Route 1 Glitch City. Level 16.

[img]http://i.minus.com/jbia9KQ4whZJpb.png[/img]

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: TheZZAZZGlitch
Date: 2014-07-10 14:11:00
There is no 50 tile in this one. Ditto has to be called "R:u" for some reason. Level 58.


There actually is a 50 tile:
[img]http://i5.minus.com/ib1ZfWspaF0emo.png[/img]

The explanation for 'R:u' as a nickname for the Ditto would be too complicated. For now I will keep it short and simple.
What happens with the out of bounds glitch cities, the game is literally rendering its RAM as map blocks. In out of bounds glitch cities, at Y coordinate 226 (the 29 steps north mentioned in the video), hex identifiers of rendered map blocks will correspond 1:1 to nicknames within player's party. The Ditto's nickname directly determines the blocks of the glitched map.

The name 'R:u' is carefully chosen so the required screen tiles are in their right places ($F1 tile at screen coordinates (6,1) and a 50 tile directly afterwards). Only the ':u' part matters, 'R' is chosen arbitrarily - it could as well be 'A', but I chose 'R' because the map block $91 is just a plain white square, and it lets me know that everything worked.

Example image below:

[img]http://i3.minus.com/ibv2i36cFRgFfR.png[/img]

The most important thing in particular, is that the second letter of the nickname (':') can be changed to get different tiles, and so, different Pokemon.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-09-04 08:50:51
Understood. Thanks TheZZAZZGlitch. (I read your reply before, and played around with out of bounds Glitch Cities, but forgot to make a post)

Though not exactly related to the thread, here's an image for Green.

[img]http://i.minus.com/jS0vEy3T9twjB.png[/img]


And another, showing where the 50 tile must be.

[img]http://i.minus.com/jblCFabmNRaxYF.png[/img]

Regarding Red/Blue, there have been many new yields found that were used in MrWint's TAS, and by SheNanagans, so I think it would be good to list them.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-09-05 19:56:38
Just a note, many of the Cooltrainers used in the Speedrun/TAS warp using Item Underflow, so they would be hard to use for someone who isn't familiar with Item Underflow. I can freely help on Cooltrainers that use overworld map positions, though ;).

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-09-06 09:15:33
Yeah, I'm aware. Thanks though. You change D365 (item 36 quantity) to load a map with an invalid entrance point depending on the exit.

I've also noticed that you may have to change the quantity of item 37 to 3 so that you can Dig away from places you normally can't dig from.

Here's are locations I gathered from SheNanagan's latest run. I think I may have missed one, plus I feel there may be more from the older run/MrWint's run.

Pallet Town (00)'s warp 03 (e.g. Viridian Gym) - gives Eevee

[img]http://i1.minus.com/jbfRGAS8XiTIJo.png[/img]

Diglett's Cave Route 2 entrance (2E)'s warp 08 (e.g. Vermilion fishing guy house) - gives Nidoran

[img]http://i6.minus.com/j1hUHHwk9IZuQ.png[/img]

Pewter Museum - Jynx

[img]http://i4.minus.com/jGHsfntYgpocX.png[/img]

Saffron City (0A)'s warp 0A (e.g. Celadon Coin Case location house) - gives Dratini

[img]http://i5.minus.com/jb0divckqtRC3j.png[/img]

Vermilion City Poké Mart (5B)'s warp 0B (e.g. Rocket house in Celadon) - gives Porygon. D367->03 required.

[img]http://i3.minus.com/jbxLqgGiOlYpup.png[/img]

House with NPCs discussing warden in Fuchsia City (9E)'s warp 03 (e.g. Vermilion Gym) - gives Tauros. D367->03 required.

I did not get the exact same Glitch City, but I got one that was very similar to the one below and gave Tauros.

[img]http://i6.minus.com/jbrLo03RZDoljR.png[/img]

Celadon house with Rocket (8B)'s warp 08 (e.g. Vermilion City fishing guy house) gives Koffing. D367->03 required.

[img]http://i3.minus.com/jbzyD3pyVOXHCe.png[/img]

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-11-08 19:39:18
So Sinstar_ was messing around with Double Distort, and he found this really weird glitch, that puts a trainer battle into a lol glitch state, and forces you on the bike while you're forced to slowly move 1 tile left every few seconds. This glitch also allows you to "walk" through walls, but it doesn't matter because you crash eventually anyways.

I also tried changing west connection data to cycling road and hall of fame, and while I warped to the map, cycling road wouldn't force me down, and hall of fame script didn't activate.

Video: http://www.twitch.tv/sinstar_/b/586720295?t=180m57s

(you also have 14 days to figure out how to reproduce it or else twitch will delete it, unless sinstar highlights it)

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-11-08 20:01:09
Interesting. Guess I'll try and video it. I thought double distort CoolTrainer was weird enough as it is already, ha ha. (you're using a side effect of a CoolTrainer and somehow printing a Pokémon letter on the species tile).

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-12-14 14:12:22
Forgot to post the two outputs for Cooltrainer:

CoolTrainer outputs based on wrong warping

"instaCT" outputs. By changing the top left block pointer, and map width, and aligning yourself to  the correct BlockY/X position, you can create CT distorts for almost all Pokémon

Note that the following Pokémon do not have a possible overworld Distort, so you'd need to find another method to get them.

Most of these, you can get through Double Distort, though I'm not sure how you'd get Hex CE, Cooltrainer or not (without ACE or English Fossil Conversion Glitch, because Pokémon Overflow :P)

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-12-14 14:17:08
Wow, this is gold dust. Thanks for sharing lucky.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-12-14 14:32:16
Thanks Torchickens  ;)
Another Discovery I found a while ago, but I was too busy to post it on the forums.
Using 9F will display the screen buffer, which means you can scroll down near a TMTrainer item which can overflow to the screen.
Example for hex 7A Missingno: [IMG]http://puu.sh/duHDz/297e1a2ffa.png[/img]

This means, if you can overflow the item name to the location of the Species Tile, you can create a Distort, based on the Tiles in the Item Menu.

The only problem is a TMTrainer item won't copy 50 tiles into its name, which means you need to find locations which have a bush tile near the top, yet the overflowed item data would cover the bushes just enough, so the Pokemon would distort, but not too much so the battle won't be a corrupted battle.

You could probably manipulate this to "specify" the DVs of the Cooltrainer Pokémon, but it wouldn't be any easier.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-12-14 19:08:07

Thanks Torchickens  ;)
Another Discovery I found a while ago, but I was too busy to post it on the forums.
Using 9F will display the screen buffer, which means you can scroll down near a TMTrainer item which can overflow to the screen.
Example for hex 7A Missingno: [img]http://puu.sh/duHDz/297e1a2ffa.png[/img]

This means, if you can overflow the item name to the location of the Species Tile, you can create a Distort, based on the Tiles in the Item Menu.

The only problem is a TMTrainer item won't copy 50 tiles into its name, which means you need to find locations which have a bush tile near the top, yet the overflowed item data would cover the bushes just enough, so the Pokemon would distort, but not too much so the battle won't be a corrupted battle.

You could probably manipulate this to "specify" the DVs of the Cooltrainer Pokémon, but it wouldn't be any easier.


So does that mean if a Super Glitch item had a CE tile in a certain part of its name, there may be some hope for a " W G d " LOL glitch?

I think I get your idea, but I'm having trouble getting a menu tile to be written to x=01, y=06. Can you do a video showing you getting to the location you used, please? That would be cool.

Now that you posted that instaCT data, I'm considering doing a 'obtain every glitch Pokémon' run, xD. I was also considering it but less so after doing my English Fossil conversion glitch video.

Edit: Are there any glitch Pokémon with a hex:CE character in their second 'letter'? You could double distort with that to get " W G d".

[img]http://i4.minus.com/ibnYpNU4uUBezn.png[/img]

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-12-14 20:12:40
Well, you could change your rival's name to include Hex CE, but I don't know how you would able to display the rival name on screen. I really have no clue how to get a "Hex CE" cooltrainer, unless you look into ram based CTs.

There are many glitch RAM Based tiles in the outside Pkmn league map, and route 23, so you could start looking there.\

EDIT: Does anyone know where the code that marks the tile composition in each block is in the disasm?

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: Torchickens
Date: 2014-12-14 20:57:23

Well, you could change your rival's name to include Hex CE, but I don't know how you would able to display the rival name on screen.


Have you seen the rival's name appear during CoolTrainer before? This may sound dumb, but I wonder if you mean you've never seen it at all or you've just never seen it cover the species tile.


There are many glitch RAM Based tiles in the outside Pkmn league map, and route 23, so you could start looking there.\


Do you mean this type of Glitch City?, with the 4x4 blocks representing memory addresses, the same kind TheZZAZZGlitch used to get a 94 CoolTrainer using a specific nickname for Ditto before double distort was found?

It's possible that no block contains a hex:CE tile, but I think it's worth looking into it.

By the way, I went through every glitch Pokémon name in Red, and none contained a hex:CE in the second character, unfortunately. There were a few hex:CDs (not surprising maybe, because that's the "call" opcode, which makes me want to execute glitch Pokémon names as code) and even a hex:CC, but no hex:CE.

Edit: It occurred to me you could always use Paco81's remaining HP glitch for hex:CE (remaining HP of 206), if we're going to disallow arbitrary code execution and English fossil conversion glitch. I didn't think of that even though I've used that glitch before. I don't see the problem with party counter overflow if you don't mess up your Pokédex. If we're going for a run with every glitch Pokémon, I feel corrupting the Pokédex may actually be beneficial because you can (theoretically) avoid the Rhydon trap and long glitch Pokédex entries.

Re: CoolTrainer (and non hex:00 Super Glitch) yields documentation thread

Posted by: luckytyphlosion
Date: 2014-12-14 21:39:08
The Out of Bounds City displays the block identifier corresponding to the first party pokemon's nickname, which means that if a CE tile doesn't appear in a location that would work for Cooltrainer, than it would be impossible to make a cooltrainer for that Pokémon.

…and I just realize that the block identifier for the block is changing, and not the actual "tiles" in the block. :facepalm:

I'm pretty sure that the Pokémon listed that don't have valid overworld cooltrainers are because the specific tile for each Pokémon does not work for a Cooltrainer position with any block. I guess the only other way is to use the Remaining HP Glitch, then.