Black curtains glitch
The black curtains glitch occurs in Pokémon Emerald. This glitch causes the windows at Rustboro City's Pokémon Trainer School to become corrupted and show a glitched black region. A corruption which shows what appear to be curtains can occur, hence the name.
The exact way to trigger the curtains was found by Metarkai. In English Emerald, the curtains are influenced by the data of Pokémon at slots 4-6 of box 8 of the PC. Earlier slots represent pixels higher up, later ones represent pixels lower down.
In Japanese Emerald, box 7 slots 26-28 affect the curtains instead, in the same way.
Slots 4 and 6 seem to only affect a little bit of the curtain data and the majority of the data is controlled by slot 5.
If all Pokémon are removed from box 8 slots 4-6, the curtains will disappear entirely. If there are 1-2 empty spots, then part of the curtains will disappear; and having Pokémon in slots 4 and 6 but not 5 can create an effect where there are only just lines are on all four corners of the window, with the nature of the lines depending on the Pokémon.
According to TheZZAZZGlitch the left and east most sides of the windows in the school are overlaid with tiles 791-793, in this way ;
Tiles 791-793 are unused, and for reasons unknown, the stored Pokémon data from box 8 control the pixels that appear on the sides.
It is apparent that since each tile is used twice, this is responsible for any data you add being added to the opposite side.
Pokémon Emerald has a mechanism known as "DMA". The locations of certain memory addresses are randomized a specific number of bytes forward or back, but they can be made to stay at one location with the anti-DMA code; B2809E31 3CEF5320 1C7B3231 B494738C.
With anti-DMA enabled, memory addresses 0202DAE4-0202DB43 always represent curtain pixel data. One byte controls pixels on both side; seemingly(?) up to 2 each side (a total of four).
A value of 80 adds one pixel to each side. A value of FF adds two pixels to each side.
Creating specific art:
By editing the values at 0202DAE4-0202DB43 with memory viewer, you can create "symmetrical" art. Theoretically as well, one can achieve this with arbitrary code execution.
Examples of glitch art are detailed in the second video below.
Updated demonstration, including 'curtain art':
- Chaos Rush (2008): Documentation
- VaePomegGlitch: Reporting the glitch again
- Metarkrai, TheZZAZZGlitch: Research into cause
- ChickasaurusGL: YouTube video, article text (with permission)