Jump to content

Professor Oak's lab music glitch: Difference between revisions

Explanations. I'd like it if someone with more knowledge in musics could describe the music change more accurately. (Last commit was actually me accidentally clicking "save" instead of "preview".)
>Bbbbbbbbba
No edit summary
>Bbbbbbbbba
(Explanations. I'd like it if someone with more knowledge in musics could describe the music change more accurately. (Last commit was actually me accidentally clicking "save" instead of "preview".))
Line 8:
* If Ch2 is glitched out, then the music also becomes simpler, but it's a less noticeable effect than the two previous cases.
 
==Triggering mechanism==
 
The glitch is triggered when the V-Blank interrupt occurs in the middle of loading a channel. The loading of a piece of music is handled in the game code as follows:
* All relevant memory addresses are set to 0x00, 0x01, or 0xff, as appropriate. (This includes the aforementioned default tempo, 0x0100.)
* For each channel:
** The sound ID for that channel (wChannelSoundIDs, 8 bytes, $C026~$C02D) is set to the ID of the music.
** The command pointer for that channel (wChannelCommandPointers, 8 pointers of 2 byte each, $C006~$C015) is set to the beginning of the audio commands for that channel.
If the V-Blank interrupt occurs between setting the sound ID and setting the command pointer, it will try to play the music (because the sound ID is nonzero), but will execute the command from $0000 instead of the correct command pointer. That address is at the beginning of the ROM and contains the value 0xFF, which is interpreted as an "end channel" command. This sets the sound ID for the channel back to zero.
 
When the control flow goes back to the music loading routine, it will set the correct command pointer, but the sound ID remains zero. Therefore the channel will not be played in any subsequent frames, essentially ended before it begins.
 
==YouTube videos==
{{Youtube|pjS8gt_5Urg|ChickasaurusGL}}
(@1:34; Ch0 glitched out)
{{Youtube|dmq5_y343Js|gifvex}}
(@1:16; Ch1 glitched out; notice that some notednotes are masked out by the text box jingles, which also play in Ch0)
 
[[Category:Generation I glitches]]
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.