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

Official 1st Gen (Red/Blue and Yellow) Glitch Discussion - Page 34

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Torchickens
Date: 2019-06-26 11:02:30

I found something interesting about Missingno. in Spanish Pokemon Blue. While its sprite was consistent for a while, more recently I found that Missingno. had a different sprite from before. It seems like in Spanish versions of Pokemon, Missingno. has a variable sprite. As to where it takes its sprite data from, I realized that every previous time I encountered Missingno., I always had my Mew sent out. This time, I had forgot to switch Mew to the front and I had my Hex FD glitch pokemon in front instead, suggesting that Missingno. takes its sprite from something related to the player's active Pokemon. To test this, I tried switching my Eevee to the front to see if I got a different result, but I got the same sprite as I had got from Mew. i then tested my hex FF glitch pokemon and sure enough, I got the same sprite, so it seems that there is something about hex FD that messes with Missingno.'s sprite.

This is unrelated, but I also learned on accident that if a glitch Pokemon leans glitch move 0x00 by level up, it will only try to learn it if it already knows four moves.


Nice find. ^^

Do you remember which hex it was? If Fossil/Ghost MissingNo. this is known in English versions too, but obscure. https://www.youtube.com/watch?v=0whEt-4yVwM

Despite B6-B8 taking the back-sprite data of another Pokémon, it often does not look the same and will appear glitched.

This is because all Pokémon have sprites belonging to one of 7 banks (0x01, 0x0B, 0x09, 0x0A, 0x0B, 0x0C, 0x0D) as documented here.

https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_base_stats_data_structure_in_Generation_I#Sprites


id bank
0x15 0x01
0xB6 0x0B
0x00 to 0x1E 0x09
0x1F to 0x49 0x0A
0x4A to 0x73 0x0B
0x74 to 0x98 0x0C
0x99 to 0xFF 0x0D

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: bwill11
Date: 2019-06-29 14:20:15
The Missingno I encountered was hex 50.

Also, another interesting property I found- if a glitch Pokemon evolves multiple times, and in the middle it learns a move or tries to learn a move, then each subsequent evolution until returning to the overworld will look like the Pokemon that it is evolving into is evolving into itself. If that sounds confusing, here's an example (this was where I noticed it):
Hex FC in Spanish Red/Blue evolves 5 times (and counting): first into Slowpoke, then into a glitch Pokemon I don't recognize, then Nidoran male, then Arcanine, then Cubone. Once, when it evolved into the glitch Pokemon, it tried to learn Horn Drill. After that, it looked like Nidoran was evolving into Nidoran, then Arcanine into Arcanine, then Cubone into Cubone.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Torchickens
Date: 2019-06-29 15:10:51

The Missingno I encountered was hex 50.

Also, another interesting property I found- if a glitch Pokemon evolves multiple times, and in the middle it learns a move or tries to learn a move, then each subsequent evolution until returning to the overworld will look like the Pokemon that it is evolving into is evolving into itself. If that sounds confusing, here's an example (this was where I noticed it):
Hex FC in Spanish Red/Blue evolves 5 times (and counting): first into Slowpoke, then into a glitch Pokemon I don't recognize, then Nidoran male, then Arcanine, then Cubone. Once, when it evolved into the glitch Pokemon, it tried to learn Horn Drill. After that, it looked like Nidoran was evolving into Nidoran, then Arcanine into Arcanine, then Cubone into Cubone.


Will find 0x50's sprite pointers for you. <3

RE: evolutions, this is known but not sure if technical details were confirned.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: voltfire128
Date: 2019-06-29 17:19:37
Something odd happened while I was doing the old man glitch, I did it mostly normally, did accidentally view the demonstration twice, but when I started surfing on the cinnabar island coast, I encountered a level 43 ditto, which afaik isn't supposed to happen, I did encounter a missingno after that, so that still worked, I had prior to viewing the old man come from route 23, where such a thing can be encountered, and in fact I had done so a while before. I was on the virtual console version of blue, English version. Is this normal

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Parzival
Date: 2019-06-29 19:54:36

Something odd happened while I was doing the old man glitch, I did it mostly normally, did accidentally view the demonstration twice, but when I started surfing on the cinnabar island coast, I encountered a level 43 ditto, which afaik isn't supposed to happen, I did encounter a missingno after that, so that still worked, I had prior to viewing the old man come from route 23, where such a thing can be encountered, and in fact I had done so a while before. I was on the virtual console version of blue, English version. Is this normal
what was your ingame name
(your ingame name determines what you'll get)

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: voltfire128
Date: 2019-06-29 22:57:36
I'm gonna be honest with you, I don't feel comfortable giving that out as it's my real name…. probably should have seen that coming, but I didn't. Also: As far as I could tell, ditto isn't in the list of things that can show up with that glitch at all, seeing as both the wiki here and the list on bulbapedia don't mention it, I also could not replicate it after the first encounter, which was the very first encounter.. sorry for rambling, but I kind of do that sometimes

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Torchickens
Date: 2019-06-30 10:10:49


The Missingno I encountered was hex 50.

Also, another interesting property I found- if a glitch Pokemon evolves multiple times, and in the middle it learns a move or tries to learn a move, then each subsequent evolution until returning to the overworld will look like the Pokemon that it is evolving into is evolving into itself. If that sounds confusing, here's an example (this was where I noticed it):
Hex FC in Spanish Red/Blue evolves 5 times (and counting): first into Slowpoke, then into a glitch Pokemon I don't recognize, then Nidoran male, then Arcanine, then Cubone. Once, when it evolved into the glitch Pokemon, it tried to learn Horn Drill. After that, it looked like Nidoran was evolving into Nidoran, then Arcanine into Arcanine, then Cubone into Cubone.


Will find 0x50's sprite pointers for you. <3

RE: evolutions, this is known but not sure if technical details were confirned.



MissingNo. 0x50 front sprite is 8F37. Backsprite: 2100. (ES Blue). You can find the pointers by checking D0C3 (front) and D0C5 (back) after viewing the Pokémon's summary (both addresses are +5 for non-English EU versions). Note: This doesn't change sprite bank, so you the sprite banks may be based on that Bulbapedia link above (possibly with differences for non-English EU versions); but in this case the banks do not matter as the pointers are below 4000 or in RAM.

$8000-$97FF Character RAM
http://gameboy.mongenel.com/dmg/asmmemmap.html


8F37 is part of the tile data. This changes depending on where you are (e.g. "/" in battle, people sprites out of battle). The variation in the front sprite however may be due to VRAM inaccessibility. When the character RAM is read; a lot of the data may be 0xFF as the game cannot read it at the time it was read. Hence, the sprite data is hard to predict.


The problem here is something called VRAM inaccessibility.

When the LCD is on, VRAM can only be read (and written to) during short, specific periods of time.
The underlying reason for this is that most of the time during a frame, the graphics hardware is busy drawing graphics to the screen, and it doesn't allow anything to modify or access its data when it's working on it. There are only small periods each frame that the graphics controller takes a break and allows graphics data to be modified.

Being more exact, the time periods are called vBlank (short for 'vertical blanking interval') and hBlank ('horizontal blanking interval'). The first one occurs when the hardware finishes drawing the current frame, but hasn't yet started drawing the next frame. The second one happens if the hardware finishes drawing a single line of pixels on screen and goes to the next line. If graphics are actively displayed on the screen, these are the only periods when VRAM can ever be touched. Otherwise, the VRAM data sits there locked out from access.

Any write on "locked" VRAM won't do anything.
Any read on "locked" VRAM will return 0xFF, regardless of what the address really contains.

We really don't know when the code responsible for checking evolution data is going to run. It might, or might not run during vBlank. Or it might even run partially during an hBlank, and partially after hBlank has ended. It's impossible to predict - it comes down to microsecond-precise timing, which for a human player is essentially random.

So this bit of data:

[tt]10 10 10 10 10 10 08 00 00 00 10 10 10 15 12 1F 12 00 00 00[/tt]

Will usually end up looking something like this when read by the game:

[tt]10 FF FF FF FF FF FF FF 00 00 10 FF FF FF FF FF FF FF 00 00[/tt]

The 0xFF bytes are there because the subroutine tries to read VRAM data outside of vBlank/hBlank, and it ends up just reading 0xFF bytes.

The result of course comes down to timing, so it could be possible for this pattern to be shifted to a different position:

[tt]FF FF FF FF FF 10 08 00 FF FF FF FF FF FF FF 1F 12 00 FF FF[/tt]

I haven't tested this in more detail, but it should be possible to have this pattern shifted in such a way that the Mew evolution data could still be read. It might just take a lot of time.

I think it would be more practical to not bother trying to put the appropriate data into VRAM, and focus on making the VRAM data slide through to SRAM and try to get the appropriate data into SRAM instead (maybe there's a Pokemon that has a "01 01 15" sequence in its decompressed sprite, and if not, we can just corrupt that with 'M/Missingno. until we get it).

Edit: Was too late :(



Something odd happened while I was doing the old man glitch, I did it mostly normally, did accidentally view the demonstration twice, but when I started surfing on the cinnabar island coast, I encountered a level 43 ditto, which afaik isn't supposed to happen, I did encounter a missingno after that, so that still worked, I had prior to viewing the old man come from route 23, where such a thing can be encountered, and in fact I had done so a while before. I was on the virtual console version of blue, English version. Is this normal


Yes. The old man glitch (usually) brings up Pokémon from the previous location's grass encounters as well basically. Level 43 Ditto is found in Route 23, so maybe Route 23 was your previous location with grass encounters. That is also why you can find things like low level Pidgey if you were in Route 1.



I'm gonna be honest with you, I don't feel comfortable giving that out as it's my real name…. probably should have seen that coming, but I didn't. Also: As far as I could tell, ditto isn't in the list of things that can show up with that glitch at all, seeing as both the wiki here and the list on bulbapedia don't mention it, I also could not replicate it after the first encounter, which was the very first encounter.. sorry for rambling, but I kind of do that sometimes


That's understandable. Don't worry about it. You don't need to share anything! :) Yeah, there is a simple rule re: old man glitch, 2nd character: level, 3rd character: Pokémon 4th character level, 5th character: Pokémon etc. Despite this, Ditto's ID is 0x4C, which isn't available with any name, so the name (unless you glitched it) is irrelevant anyway.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: bwill11
Date: 2019-07-03 13:37:31
I accidentaly found an weird property of unterminated name glitch items.
If you use an unterminated name glitch item in the entrance to the underground tunnel (celadon side, the exact spot is the left tile of the entrance mat), it results in the hooked metaphor effect, but before the battle menu appears the message  "wait" appears in the middle of the screen and the rest of the screen is blank.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Sherkel
Date: 2019-07-03 13:45:26
the hooked metaphor effect

Yeah, it's like you went underneath the surface of Kanto and found something hidden. ;)

Nice new tidbit, anyhow! :)

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: bwill11
Date: 2019-07-11 10:26:47
When a pokemon has negative exp, it shows up as a very large amount of exp, so how do you tell how much exp it actually is?

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Sherkel
Date: 2019-07-11 13:20:05
It's a 3-byte integer, so 0 exp is 16777216 (256^3), -54 is 16777162, and so on. The highest digit becomes a glitched tile only if it's over 10 million.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: bwill11
Date: 2019-07-24 14:02:16
I'm just gonna dump some miscellaneous observations I've accumulated-
- Glitch Pokemon 0xEA in Blue ES has a backsprite that crashes the game, but what's more interesting is that the crash is not consistent. The first time it crashed, the tileset glitched out and the game was frozen. The second time, I got sent back to the emulator menu. The third time, I got a crash with stripes and after a second the entire emulator crashed.
- The super glitch item I've been using for Rival LOL seems to change between being a regular item and being a key item. When it's a regular item, tossing it turns it into a key item.
-The Rhydon I caught from the Rhydon trap cannot be withdrawn from the PC. I was able to deposit it just fine, and it showed up in the move menu, but when I selected withdraw it told me that the box was empty. I don't know if this has been documented, nor do I know whether this was caused by the rhydon trap ofr the fact that it's level 101 and has more HP than it's supposed to be able to have.
- Using 9F in a trainer battle causes the battle to restart. I think this is probably documented somewhere, but I don't know where.
- Cooltrainer once disguised itself as "Ter ballabra". Upon consulting Google Translate because I've never seen these words before, it translated to "bitelace". I don't know that that refers to either, nor does spellcheck apparently. It could be that it is a corrupted string of text that through some freak coincidence reads as something legible, or this could be a string of text that appears somewhere in the game and is very poorly translated. Strings of text that appear elsewhere sometimes do appear as Cooltrainer's name (It once took the name Take Down), so it's possible.
-This isn't a glitch, but Softboiled in Spanish is translated into "Amortiguador", which directly translates to shock absorber or muffler. Given that softboiled refers to an egg and shock absorber refers to a car part, I don't see the connection. I was only able to deduce that it was softboiled from the fact that it is a field move.
-Some glitch pokemon look like a block of q's when on the evolution screen after something evolves into it.
-This also isn't a glitch but Hex F1's movepool is so damn big, in my notes it's a brick of text that takes up half a page in google docs
Also, many glitch Pokemon change the color of the textboxes when their sprites are on the screen, I know this has probably been documented as it's relatively common, but what is this effect called?

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Sherkel
Date: 2019-07-24 14:38:13

I'm just gonna dump some miscellaneous observations I've accumulated-
- Glitch Pokemon 0xEA in Blue ES has a backsprite that crashes the game, but what's more interesting is that the crash is not consistent. The first time it crashed, the tileset glitched out and the game was frozen. The second time, I got sent back to the emulator menu. The third time, I got a crash with stripes and after a second the entire emulator crashed.
- The super glitch item I've been using for Rival LOL seems to change between being a regular item and being a key item. When it's a regular item, tossing it turns it into a key item.
-The Rhydon I caught from the Rhydon trap cannot be withdrawn from the PC. I was able to deposit it just fine, and it showed up in the move menu, but when I selected withdraw it told me that the box was empty. I don't know if this has been documented, nor do I know whether this was caused by the rhydon trap ofr the fact that it's level 101 and has more HP than it's supposed to be able to have.
- Using 9F in a trainer battle causes the battle to restart. I think this is probably documented somewhere, but I don't know where.
- Cooltrainer once disguised itself as "Ter ballabra". Upon consulting Google Translate because I've never seen these words before, it translated to "bitelace". I don't know that that refers to either, nor does spellcheck apparently. It could be that it is a corrupted string of text that through some freak coincidence reads as something legible, or this could be a string of text that appears somewhere in the game and is very poorly translated. Strings of text that appear elsewhere sometimes do appear as Cooltrainer's name (It once took the name Take Down), so it's possible.
-This isn't a glitch, but Softboiled in Spanish is translated into "Amortiguador", which directly translates to shock absorber or muffler. Given that softboiled refers to an egg and shock absorber refers to a car part, I don't see the connection. I was only able to deduce that it was softboiled from the fact that it is a field move.
-Some glitch pokemon look like a block of q's when on the evolution screen after something evolves into it.
-This also isn't a glitch but Hex F1's movepool is so damn big, in my notes it's a brick of text that takes up half a page in google docs
Also, many glitch Pokemon change the color of the textboxes when their sprites are on the screen, I know this has probably been documented as it's relatively common, but what is this effect called?
Thank you for all your contributions and interest! My opinions on empirical glitching aside, I really like your use of proper techniques to locate data and effects. There's no disassembly for non-English Red and Blue as far as I know, so maybe that fork could be on your horizon someday.

A few questions: what do you mean by "the emulator menu", which glitch item have you been using for Rival LOL (a good idea for an ItemDexES page with name bytes, possibly), and was the Rhydon a hybrid of?

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: bwill11
Date: 2019-07-24 15:10:59
For rival LOL I've been using glitch item 0x7E because it semi-conveniently prints the fifth letter of the last Pokemon name to appear in a textbox in battle at the spot on the screen that determines the level of the Pokemon caught (I think that's how it works, I was able to get my Pokemon's nickname to appear there by attacking last and then escaping using P8, thus allowing me to manipulate the tile and by extension the level). The Rhydon was not a hybrid of anything. By "the emulator menu" I mean that I've been using a mobile emulator (I don't own a computer that's not shitty, the emulator is John GBC lite because I didn't want to spend 4 bucks in order to get access to multi-line cheat codes, which I need to change my pokemon's nickname), and when you open the app it searches for all ROMs on the device and it has a menu that you select the ROM from. When the game crashed it sent me back to this menu.

Re: Official 1st Gen (Red/Blue and Yellow) Glitch Discussion

Posted by: Sherkel
Date: 2019-07-24 15:39:51
Ah, I thought you were using a debugger or VRAM viewer considering your use of the LOL glitch and other items…I don't know exactly what your computer's problem is, but BGB isn't very resource intensive and is considered sufficiently accurate unlike most other emulators. The move tables wouldn't be misread under any reasonable circumstance, so your submissions thus far can stay up, but just keep it in mind.

The Rhydon would be a hybrid of whatever was originally encountered. I was thinking if its donor byte was FF it might have been read as a "Cancel", but that's conjecture until I try it.