Fans of vintage games with Macs, take note. Open Emu makes emulation of classic game systems a “first-class citizen” on the Mac. But if it were just a game emulator, well, it wouldn’t be news. What makes it news is that at its core, Open Emu is an open source platform and modular architecture into which your favorite game systems can be added as plug-ins. And thanks to that architecture, you can treat your favorite game systems as though they’re modules in a grand, 8-bit modular visual synth, crunching their textures into geometry, adding real-time effects, and controlling the whole thing with multiple controllers, audio, and MIDI.
In other words, Open Emu is like having a giant visual performance synth made from the tasty innards of classic games.
The platform has been in feverish development for some time, but today a major new release takes it further. Beta 2 of 1.0 extends the modularity of the platform, adds a finished Quartz Composer interface (allowing integration with other apps, live visuals, and graphical, modular patching using Apple’s development tool), and adds more emulation cores.
Supported game systems for emulation: Sega Master System, Game Gear, SG-1000, Game Boy, Game Boy Color, Game Boy Advance, NES/Famicom, SNES/Super Famicom, Sega Genesis, Sega CD, and Sega 32x. (In the immortal words of Strongbad, ain’t got no Turbografx? Sounds like you just need one more plug-in.)
Game emulation is nothing new, but the programming team has build a friendly Mac front-end for a host of mature, popular emulation engines. They also fully support Mac technologies, even third-party niceties like Sparkle for automatic updates.
But, this being Create Digital Motion, we’re interested in the live visualist-friendly features:
- High-quality OpenGL scaling, multithreaded playback, and other optimizations
- Audio or MIDI actually plays the game (and can also be used to make the game line up with music)
- Play multiple ROMs at the same time
- Real-time 3D effects, image processing – and route game controllers to those effects
In other words, you can jack in your favorite MIDI controller and go nuts with your favorite games, turning them into a live performance medium – then mashing up the resulting textures with real-time, 3D/2D effects. The Nestopia engine supports ROM glitching, cheat codes, and game rewinding — essential so that in-game death doesn’t also kill your set, and so you can play with the aesthetic of glitchy cartridges without blowing on a classic game cart.
Full download and source code, with more documentation coming soon:
Anton Marini, CDM contributor and a member of the development team, sends over some demos of what the Quartz Composer features can do. These are a bit older, but they give you a sense of the functionality inside.
Adding glitches to a texture, live:
Using controller data to choose post-processing effects, processing the game live:
And, finally, putting it all together, exposing the “power patch” for the emulator Nestopia, with cheat codes, game rewinder, and glitches in the character and video.
And in case you were wondering, here’s what happens to Mario and Luigi when they find themselves sucked, Matrix-like, into an alternative universe in which blocks appear at random and get them stuck in physically awkward places. (Via Open Emu’s other live visualist member, Dan Winckler.)
I imagine this sort of work could be applied to mashing up other software, or to emulation on other operating systems – though certainly the graphics architecture of the Mac makes it uncommonly easy.
Of course, because of the modular approach here, this really just scratches the surface of what you might do in a performance. I look forward to seeing what folks come up with. If you do find a way of rigging this up in performance, do share — remember, bragging rights come from finding a way to play all the Mario games at once from one joystick and turn it into a flowing live landscape that reacts to your friend’s Norwegian death metal band.
Congratulations to the development team: Anton and Dan on the Quartz Composer work, Anton on the OpenGL work, and lead programmers Josh Weinberg, Ben Decavel, and Remy Demarest!