NESolume
Retro console hardware for Resolume

What it does
A retro games console between your content and your output, for Resolume Arena and Avenue. The picture's averaged down onto a real machine's raster, forced through that machine's colour system with its attribute cells enforced, and scaled back up as fat pixels. There are nine machines in the table, from the Game Boy's four greens to the PlayStation's 15-bit RGB, and each one comes down to three facts: how many lines it drew, which colours it could physically make, and how big an area had to share them.
The artefacts you'd recognise come from those limits rather than being drawn on. Chunky dithered gradients are the palette running out of levels. Attribute clash is a cell only being allowed one set of colours when two objects cross it, and the NES's 16×16 attribute areas make its clash the chunkiest, just as they did at the time.
The glitches play by the same rules. Corruption happens to the indices, before any colour's chosen, because a real glitch scrambled CRAM and tile pointers rather than the DAC, so a corrupted Game Boy can only show you the wrong greens. Displacement is scroll-register damage: whole raster pixels and whole tiles, wrapping round the edge the way a scroll register wraps. At Glitch Rate zero the corruption freezes, which is what a crashed machine actually does.
v1.1.0 adds a tenth machine, the Commodore Amiga, as its display limits. Every colour is a 12-bit register picked for the picture: 32 of them, or Extra Half-Brite's 32 plus their exact half-bright twins, or HAM6 (hold-and-modify), where a pixel is either one of 16 registers or the pixel to its left with one gun changed, so colour smears in off every hard edge. HAM6 is encoded exactly, line by line, on the CPU. The screen is the Amiga's own, 320 or 640 pixels by 256 or 200 lines. Interlace shows its doubled lines as two fields, 50 or 60 a second, with the twitter and 25 Hz flicker that came with them, and there's a flicker fixer to weave them back together. It was added on the end, so every existing console renders byte for byte as it did in v1.0.7.
There's also an OpenFX plugin for DaVinci Resolve, Vegas Pro, Nuke and Natron. The console table is the same code in both builds, and the glitch clock runs off the timeline frame, so any frame renders the same however the host gets to it.
- Ten machines: Custom, Game Boy, NES, ZX Spectrum, Commodore 64, Master System, Mega Drive, SNES, PlayStation and, new in v1.1.0, the Amiga — real master palettes, real DAC depths and real colour registers
- The Amiga: OCS 32 colours, Extra Half-Brite and HAM6 over 12-bit registers chosen per frame or fixed; PAL and NTSC, low and high res; interlace and a flicker fixer
- Pixel Size from quarter-size to four-times-chunky around each console's native raster; width follows your composition so pixels stay square
- Ordered Bayer dither scaled to the quantisation step, and a 1–8 bit per channel DAC on the Custom console
- Attribute Clash — your own brightness, the cell's hue, from off to full Spectrum strictness
- Wave, Shake, Block Glitch, Line Glitch, Palette Glitch and Garbage, all palette-legal, on a glitch clock from still to 18 Hz
- An LCD pixel grid that fades itself out when pixels get too small to have one, and a wet/dry Mix
- Eight factory presets from Handheld to Kill Screen, driving both builds from one table
- Universal macOS bundle, a Windows DLL, and an OpenFX bundle for macOS, Windows and Linux
Where it stands
Released as v1.1.1, which only fixed the OpenFX build on Resolve's Fusion page, where every render used to fail. v1.1.0 was the Amiga, and it only adds things: 71 setups of the nine existing consoles render byte for byte the same through v1.0.7's own harness and this one, and v1.0.7's 20 parameters keep their index, name, type, default and option values. The Amiga is checked by measurement like the rest: the HAM6 encoder's error matches an exhaustive search of every six-bit code on 242 short lines, a HAM edge never arrives in fewer than three pixels, every pixel stays 12-bit in every mode with every glitch on, Extra Half-Brite only ever shows registers and their exact twins, and interlace changes alternate lines on alternate fields. Four models broken on purpose each fail. The older checks still stand: every fixed-palette console's output stays inside its master palette with every corruption on, all twenty controls move pixels, and presets render byte for byte the same as their hand-set values. On Windows it passed the fleet's Arena check in Resolume Arena 7.27.1 with all 21 controls live. It hasn't been loaded into Resolume on macOS, in Resolve the OpenFX build has only been a Fusion tool (Resolve Studio 21.1), never on the Edit or Color pages, and Vegas, Nuke and Natron have never seen it, and the Amiga is only in the FFGL plugin. The macOS build is signed and notarised.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead