Alter Dark is a new project that lets you create your own screensavers out of NES ROMs.
It was put together by Rachel Weil, an NES homebrew expert and glitch enthusiast, and recently shown off at NodeConf EU in Dublin. For Weil, it combines two of her favorite things: messing around with NES software and the dated aesthetics of screensavers. The name is also a play on the After Dark software package release in 1989 which consisted of, among other things, a flying toaster screensaver.
How it works it a bit technical. As Weil writes on her blog, “Alter Dark allows you to patch NES ROMs in the browser via a REST API.” The API, written in 6502 Assembly language, programmatically overwrites the compiled NES ROM based on whatever you plug into the the Alter Dark browser page. It then spits out a file you can boot using any old emulator and voila, you’ve got a late 80s screensaver.
In addition to choosing from a few different patterns, Alter Dark also includes a selection of other NES-specific colors and the ability to add your own text. It’s fun to play around with and a great throwback to the earlier days of computing reflected through the particular technology powering Nintendo’s first home console. It’s like a mini-NES game, but not.
Screensavers used to be common for CRT displays because any image that was left static for too long could burn itself into the screen. At her talk in Dublin, Weil showed an old Ms. Pacman arcade monitor that had the first level burned onto the screen. With new LCD displays, that’s no longer a problem, which is why screensavers are all but extinct. Even Weil, who loves the aesthetic, noted in her talk that the old visual tool has one major downside: it kept your computer running, thus wasting a huge amount of electricity and being bad for the environment. They sure are pretty, though.
The actual API files and code are over at GitHub if you want to check it out in more detail. Weil plans on expanding the project to offer more custom graphics as well as audio.
You can see her discuss the project in more detail below.