Anonymous user
Game freeze: Difference between revisions
→Technical details
>Torchickens No edit summary |
|||
(13 intermediate revisions by 5 users not shown) | |||
Line 1:
[[File:Bar freeze.png|frame|right|A bar freeze in Pokémon Red/Blue, caused by stepping into the 'grass' right of Pallet Town.]]
A '''game freeze''' refers to the instance of where a game's controls lock up disallowing the player to play the game normally. Through different [[glitch|glitches]], different varieties of game freezes have been found. Sometimes music may be frozen on the current note but sometimes the music will stop completely. On rare
==Types of game freezes==
===Softlock (Lock-up)===
A softlock, or lock-up, simply refers to when the player is stuck in a loop, either with the controls not responding or, for example, being infinitely forced to do an action. Music may still be playing.
Examples:
* When the player triggers a [[glitch battle system]] in {{RBY}} and has a non-usable item in their first slot.
===Bar freeze===
▲Example: When a [[óË e Ái]] or similar Pokémon in Generation III is sent out.
Example: In Generation I, a bar freeze is often encountered when using a [[walk through walls]] glitch to [[Freeze tile|step out of the bounds of the map]], e.g. when stepping into the first column of "grass" tiles east of Pallet Town.
▲This is a kind of game freeze often encountered when using the [[Cooltrainer move]]{{fact}} or a [[walk through walls]] glitch. It fills the screen up with mostly full vertical bars, some interrupted with seemingly random letters and numbers.
==== Technical details ====
A bar freeze happens when the game tries executes a 0xFF byte, which is interpreted as a <code>rst $38</code> instruction (a shorter and faster equivalent of <code>call $0038</code>), but the content of the ROM address $0038 is also a 0xFF byte (which is the case for all Generation I and II games). This will cause the game to repeatedly call $0038, i.e. jump to $0038 and push $0039 onto the stack as the return address. This results in a stack overflow quickly, and the pattern "00 39" ends up being written to other accessible regions of the memory, causing memory corruption.<ref>[https://archives.glitchcity.info/forums/board-107/thread-6855/page-0.html#msg194169 Re: PokéWTrainer freeze] by TheZZAZZGlitch, the Glitch City Laboratories forum</ref>
In most games, the stack begins at the top of the WRAM ($DFFF) and grows downwards (i.e. the address decreases), so the entire WRAM is corrupted first, followed by the SRAM (which may be locked, and is also subject to banking) and the VRAM (which is subject to [[VRAM inaccessibility]]). To complicate matters, the VBlank interrupt works normally in this process, which may copy some of the corrupted WRAM data to the VRAM, or otherwise use the corrupted WRAM data (e.g. try to play sound from a [[glitch sound bank]]). Sometimes, the screen will show a bar freeze pattern for a split second before turning blank<ref>For an example, see the video [https://www.youtube.com/watch?v=xuEsiyyYwVk&t=522s Pokémon R/B/Y: What's "out of bounds"? (at 8:42)] by TheZZAZZGlitch.</ref>.
In {{RGBY}} (Japanese), the <code>rst $38</code> instead points to a <code>jp F080</code> (Echo RAM for D080), and [https://www.youtube.com/watch?v=uqXU3MMAhOc arbitrary code execution has been verified]. This was changed to point to another <code>rst $38</code> like in the English versions from Rev 1 of Japanese Pokémon Yellow and up. In every other known Japanese revision of Red/Green/Blue it is <code>jp F080</code>.
===Black screen freeze===
When the game freezes this way, it will switch to a black screen. Music often freezes on the note it was playing when this freeze happens.
Example: Can appear when the player uses returns to the overworld after using the Explorer Kit in an invalid area through accessing a '[[
===White screen freeze===
Line 25 ⟶ 31:
Example: When the player uses the [[dokokashira door glitch]] in Pokémon Red/Green to enter a location which does not exist.
== References ==
<references />
[[Category:Terminology]]
|