Favorite games from the 8-bit era and beyond, now with slick, Mac-friendly functionality wrapped around them. Here’s how it might look actually playing those games.

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


Where that modularity gets really interesting is in the Quartz Composer form of Open Emu. Here, you can apply textures to a cube, modify them with effects, cheat and rewind your way around the game, glitch out the cartridge — eventually make a live visual performance out of game textures with live gameplay and control input.

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:

Glitch, baby

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:

OpenEmu QC Demo 3 from vade on Vimeo.

Using controller data to choose post-processing effects, processing the game live:

OpenEmu QC Demo 2 from vade on Vimeo.

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.

OpenEmu QC Demo 3 from vade on Vimeo.

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.)

Open Emu: video-glitching with unintended consequences from Dan Winckler on Vimeo.

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!

  • Cool!, version 2 of our software ships with a ZxSpectrum emulator which you can use as a source. It's really fun to mix it with other material and it's extremly easy to key the image because everything is just 8 bit and 9 out of 10 the background is black.

  • ex-fanboy

    if this kind of stuff continues, i will be forced to change my nick; jeez!

  • Will

    So… no way to do this with PC?

  • As a VJ I love it. Vade, thanks again for another great QC development that will be perfect in VDMX.

    But there's also the side of things… I can't wait to try to play my favorite games with video feedback or motion distortion. Should be fun!

  • You should really thank the other OE coders. Dan had the idea for an Emulator in QC, and the Open Emu team made it really amazingly easy to port, I just brought some familiarity with the QC APIs. 🙂

  • Pingback: RetroBytes: Soviet Arcade Games, Wooden Music Players And More | Technology & Lifestyle Tech News()

  • Bert

    One more request: inclusion of Mame. And then 2 instances of Mame. So I can finally use that 24 inch wide screen to play Pac-Man on the left, and 1942 on the right.

  • Woah! I still can't get over how this is controllable through Quartz. Wicked sick!

  • @vade: Yeah, looks like the whole team did some amazing work. (I did thank the leads!)

  • @vade: Sorry I didn't give credit where credit is due. I meant no disrespect. Many, Many thanks to all the developers for the really cool emulator! Open Emu is currently the buzz where I work for both visual artists and non-visual artists who are just Mac users.

  • Will

    I need to be doing this. I will buy a Mac if I have to.

  • Peter sorry that was not directed towards you 🙂

  • Thanks, everyone! We're all very happy with the attention Open Emu has received. I didn't really Have The Idea — I just had the idea — and others had had it before me, including the gentleman who made the jit.atari2600 patch for Jitter, which I used and liked. Without vade and the other Open Emu devs I would not have been able to get nearly this far, this fast. 🙂

    @Will, no, we don't have a Windows version. However, since there are far more emulators on Windows, you can still have some fun (and maybe even make your own Open Emu Windows port) — check out http://fceux.com/.

  • @Bert, file a feature request. 😉


  • It's surely an amazing thing to have be able to control emulators inside Quartz Composer!

    But as a seasoned ROM hacker, there are two important features that I'd like to see in a future release, and that would probably be easy to add:

    1- Inputs that use an integer to set arbitrary RAM addresses to an 8-bit integer decimal value. The current "fractional" (0.0 to 1.0) inputs are nice for trippy corruption effects, but are in no way precise enough to have real interactive fun. For example I'd like to be able to set byte 1278 to 255.

    2- Outputs that do the same as #1 in the opposite direction, but enabling the reading of a RAM byte at some precise offset, with the resulting value being the output.

    Essentially, in "BASIC" terms, I'd like to see POKE and PEEK added to Open Emu QC.

    The inner workings of games like Super Mario Bros. are highly documented on the net: RAM offsets for the X and Y coordinates of Mario and enemies, scrolling, power ups and many other game parameters are known and documented since a long time.

    Imagine being able to directly control these values using QC or have graphical effects react to different live parameters of the game?

    I guess I should make an official feature request, but I wanted to share this idea here with you guys.

  • I just wanted to reiterate what Dan said about the appreciation we have for the attention ya'll are giving our project.

    @VL_Tone – That is an awesome idea and something that I will definitely have to look into, please do file a formal feature request so it doesn't get lost in the shuffle.

  • Eli

    Wow, exceedingly impressive! Thank you to the OE team for this awesome application and its cores. Hopefully I can kick start my learning of Mac OS X development while playing my favorite ROMs.

  • Pingback: Link love for June 29th, pt. 2 — Sympathy for the Robots()

  • this site is the werst

  • Whooa! I'm just getting to learn quartz, and this is super inspiring, since I love glitchez so much! Even my cat's name is Glitch! Thank you for your highly appreciated developing, respect!

  • brian

    i wonder if you could have mario running constantly or someone controlling him then at a gig having certain sounds trigger level/scene objects like a kick introduces a gap in the level or a pipe and a snare a turtle shell might look cool

  • So… no way to do this with PC?

  • Jessica Rabbit still looks more like a painting, a good image but not very photo-realistic. The others are good, although you can see some Photoshop artifacts around the corner of the mouth on Homer.

  • Jessica Rabbit still looks more like a painting, a good image but not very photo-realistic. The others are good, although you can see some Photoshop artifacts around the corner of the mouth on Homer.