Silph Co. PC glitch
|PRAMA Initiative a également une page sur Silph Co. PC glitch.|
This Glitch City is not fully applied. While its collisions work with no text box open, a text box/PC menu must be open to see the modified tile blocks. The collision usually makes it difficult or impossible for the player to move. If the player does move, tiles from the Glitch City will scroll onto the screen.
- Cause the Hall of Fame to become glitched by viewing the stats of a Glitch Pokémon with an excessively large picture, such as 'M (hex:00).
- Go to the last floor of the Silph Co., and check the PC.
- Check the Hall of Fame, exit, and Log Out.
The surrounding area will now become a mass of glitchy tiles. Note that, since the glitch involves leftover values in a text buffer and expansions of control characters (mainly the names of the player's and the opponent's last active Pokémon), this method may not always succeed.
This glitch happens because "Pokémon" in a corrupted Hall of Fame usually have unterminated names. The name is copied to $CD6D and causes corruption from there, similar to Super Glitch. However, unlike with Super Glitch moves and items, the name is not copied to another text buffer, but directly printed to the screen through the text engine, which causes a unique form of corruption.
Whenever the Pokémon League PC displays a Pokémon in the Hall of Fame, its name (11 bytes) is first copied to $CD6D, then directly printed to the screen from there. If the name itself does not have any control characters that interrupts the text engine (including the terminators 0x50, 0x57, 0x58, and 0x5F; the error trap 0x00; and 0x55 which enables the text command processor), which is likely for a random name from a corrupted Hall of Fame, then the remaining 9 bytes of the buffer at $CD6D are printed next. Those bytes are usually left over from something earlier that uses all 20 bytes of the $CD6D buffer, and may or may not contain a terminator. A common example with no terminator is "TRANSFORM", which is actually the last 9 bytes of the 20-byte string "SKY [email protected]", copied to $CD6D when displaying the last starting move of MissingNo. or 'M (hex:00), Sky Attack.
Assuming that there is still no terminator encountered, the text engine will continue to try to print text from $CD81 (wTileMapBackup2). This is the same "stored screen data" as for Super Glitch corruptions, but since it is processed by the text engine instead of simply copied to another buffer, control characters are expanded. This is why this glitch only works at the Silph Co. PC: If the player checks the Hall of Fame at a Pokémon Center, the stored screen data will contain an early 0x00 subtile, which will stop the text engine and prevent further corruption. On the other hand, when the player is at the Silph Co. PC, the first byte in screen data that interrupts the text engine is a 0x57 terminator, but it appears very late; furthermore, there are many control characters 0x59 and 0x5A, which are expanded to the names of the player's and the opponent's last active Pokémon ("GCL" and "Enemy MISSINGNO." respectively in the video demonstration), with the order depending on the value of $FFF3 (H_WHOSETURN). If the total length of those strings is long enough, then the corruption will reach $C6E8 (wOverworldMap), overwriting the player's surroundings with a Glitch City.