The final readme of Enchanted Glitch lists eleven changes since the party, and the last of them is addressed to anyone who means to watch it without the real machine: FS-UAE doesn't correctly emulate the box part on OCS/ECS, run as A1200 to use the AGA code path. FS-UAE is one of the emulators people use for the Amiga, and a part it cannot get right on the original chipset tells you rather a lot about the part. The demo was written for the Amiga 500, a machine first sold in the Netherlands in April 1987, and on that machine the box turns and falls apart exactly as intended.
See it running: Enchanted Glitch on the Cosmic Orbs channel, the final version, or the capture by rtiainen, recorded on a genuine Amiga 500. The disk image is on scene.org for anyone with the hardware, and an emulator set to an A1200 shows the rest.
Five names and one floppy
Five people made it. Jobbo wrote the code for the effects, and afterwards a long write-up that explains them one by one. Paradroid wrote the transitions between the effects, from a codebase of his own that meets Jobbo's only where one part hands over to the next, and Jobbo's remark on that arrangement is our codebases are almost entirely independent, yet the handoff is seamless. Facet drew the logos and the artwork, Prowler added graphics, and Magnar wrote the music in Protracker.
Some of it goes back a good way. The demo opens with a feedback rotozoomer that Jobbo first used in his intro for The Gathering in 1995, rewritten so that it now runs smoothly at 50Hz on an A500, and the small character on one of the later textures, Pootle Flump, came along from the same intro of 1995. Bantam, the first Cosmic Orbs release, was shown at Revision 2023.
All of it arrives as one disk image of 901,120 bytes, which is exactly a double-density Amiga floppy. Read sector by sector, the data stops at sector 1,094 of 1,760: 560,640 bytes in use, and 340,480 bytes of blank disk after them, so a little over a third of the floppy went out empty. (The loader introduces itself in its own text as LDOS v1.50 by Leonard of Oxygene, the trackloading system Leonard wrote for Amiga demos.)
Half a megabyte and another half
The readme puts the requirement in one short line: Amiga OCS 512/512. That is the original chipset, half a megabyte of chip memory that the graphics and sound hardware can reach, and a second half megabyte that only the processor can, which is what the standard trapdoor expansion of the Amiga 500 added. The processor is a Motorola 68000 at a little over seven megahertz on a European machine, and the demo asks for nothing beyond it.
The rotozooming scroller is a line of text that scrolls while it rotates and zooms, built from skew-based transforms. It is, by Jobbo's account, my first side-scrolling text in a demo, and he believes it is still the only rotozooming scroller of its kind on the platform. Getting it to fifty frames a second took what he calls extensive optimisation, and when the text zooms in close, the plotting switches to pairs of pixels so that the frame is finished in time.
The morphing solids were started during Covid, when Jobbo came back to Amiga coding. They are drawn in HAM, the display mode that changes a single colour component from one pixel to the next and borrows the rest from its neighbour, which lets a filled object grow larger than the ordinary palette allows and smears colour along every edge it touches. He wrote his own edge sorting to keep the smear out and rates the outcome about 99% perfect for the shapes I'm working with. Blue is the channel he left fixed, so the free colours of the picture come from the other two, and the first half of the part hands all its line drawing to the copper, the display chip's small co-processor, so that the 68000 can spend every cycle on the vector maths.
Then the box, a tribute to effects Jobbo first saw in Sanity demos and in Desert Dream by Laxity, turning on screen with full perspective-correct texture mapping, which is something the originals didn't do. The write-up states the difficulty in one sentence: If you know the A500, you'll know there's no way to scale lines like this at 50Hz using just the CPU or blitter. So the copper pinches each line through hardware scrolling, which is fiddly work, since if you get it wrong, whole chunks of the line vanish, eight prescaled bitmaps stand by for the larger steps, and the arrangement takes nearly 300k of chip RAM. The remainder had a prior claim on it, mind: that was already promised to Magnar for the music.
The Glitch in the title
When the box is cut into slices, the cutting is done by the chip. On the original chipset, a playfield given an invalid sprite priority simply disappears, and Jobbo switches between two playfields line by line through exactly that behaviour. The later AGA machines do not share it, so the A1200 path draws the same slices with large sprites instead. As it happens, this is the part the emulator gets wrong: a quirk of a display chip from the eighties that nobody designed, written into the effect as deliberately as any table of sines.
Magnar had limits of his own. The count-up in the soundtrack uses spoken numbers, and Jobbo asked whether it could go all the way to twelve, by which point we'd already maxed out Protracker's instrument limit. If you listen closely, he adds, some of the numbers are not quite what they should be.
Revision
Revision is the Easter party in Saarbrücken, held in the E-Werk, and in 2025 it ran from the eighteenth to the twenty-first of April. Fifteen productions entered the Amiga demo competition, and the top of the results reads like this:
A hundred and fifty points cover the first five places, in a competition whose winner finished thirty-one ahead of second. Enchanted Glitch came fifth, twenty behind Fire Geisha, and on Pouët it stands at seventy-one thumbs up and none down. The final version followed on the first of May with a loader for hard disks, separate code paths for the AGA machines, fixes for crashes on newer Kickstarts and Magnar's own comments in the end scroller.
Thirty-nine years after it went on sale, the Amiga 500 is still being read for the first time.