February 18, 2019, 05:10:03 pm
0 Members and 1 Guest are viewing this topic.
It usually varies based on the situation. I don't know much about the different situations though, but a common freeze in Pokémon Red/Blue/Yellow are the 'rst 38' freezes, in which the game tries to run an FF opcode. As the FF opcode is rst 38 (reset vector 38, which is like 'jp 0038'), and at 0038 there is another rst 38, it confuses the game and the memory is overwritten with a 00 39 pattern. This can affect the VRAM, and can cause bar freeze patterns like https://glitchcity.info/wiki/File:Bar_freeze.pngTheZZAZZGlitch discussed this somewhere else too.
Quote from: Evie Torchic the Glitch Scientist on November 03, 2018, 05:33:32 pmIt usually varies based on the situation. I don't know much about the different situations though, but a common freeze in Pokémon Red/Blue/Yellow are the 'rst 38' freezes, in which the game tries to run an FF opcode. As the FF opcode is rst 38 (reset vector 38, which is like 'jp 0038'), and at 0038 there is another rst 38, it confuses the game and the memory is overwritten with a 00 39 pattern. This can affect the VRAM, and can cause bar freeze patterns like https://glitchcity.info/wiki/File:Bar_freeze.pngTheZZAZZGlitch discussed this somewhere else too.`rst 38h` is `call $0038`, not `jp $0038`. Huge difference there, because this is what causes the memory corruption, since the returns address ($0039) keeps being pushed onto the stack.Additionally, any interrupt handlers can trigger during the freeze, at least until their control registers get overwritten (and by coincidence, all of them will be disabled, except maybe the joypad, but I think this one ALSO causes a rst $38, so no good since it'd globally disable interrupts. kek) Therefore, the behavior of that crash is somewhat timing-dependent.