Open Emu

Update: June 22, 2009

Open Emu version 1.0.0b2 is now available, featuring a massively refactored architecture and several new emulator cores. Go get it!

the Open Emu logo

Open Emu, an application I helped develop, is now available for download at SourceForge.net. Here’s my part of the story.

image: a screenshot from my visuals

At the first Blip Festival in 2006, I generated some of the visuals with jit.atari2600, a plugin for Max/MSP/Jitter (my platform at the time) that encapsulated an open source Atari emulator. Jit.atari2600 was buggy so I quit using it in performance, but the idea of encapsulating an emulator and ‘bending’ it in software — as my friends noTendo and No Carrier do with hardware — stuck with me. Early last year, I began looking for an open source Nintendo emulator and learning Objective-C/Cocoa in order to try making an emulator plugin myself. I found Open Nestopia, an open source, Cocoa-based port of the fearsomely thorough and accurate Nestopia emulator by Martin Freij, and started work on the plugin during my residency at the Experimental Television Center. I contacted Open Nestopia’s developer Josh Weinberg who generously, patiently and kindly helped me get the app to build and get a sense of his code and what to do with it. Then I got really, really busy with other things and shelved the project until August when, with the help of Josh and Anton, I got the plugin to build and run in QC.

Anton joined the project — which in the meantime Josh had transformed into Open Emu, a framework for multiple emulators (NES, Atari, Sega, Gameboy) — and development really took off. Now, five months later, our first beta release of Open Emu is live on SourceForge and the Quartz Composer plugins are in private beta and soon will be public. I couldn’t have learned this much and brought the plugin this far this quickly without the overwhelmingly generous help of Josh and Anton especially, as well as all the other friends and developers who’ve patiently answered my noob questions these many months. Thank you Josh, Anton, Eric, Ben and everyone else.

Gamers! If you’d like to play your favorite old school games on Mac OS X, download the beta and give it a whirl. It’s still got some bugs so we’d very much appreciate your feedback.

Visualists and hackers! Stay tuned to the Open Emu site for our Quartz Composer plugins, coming soon.

**Oh, and if you’d like to see me use Open Emu in a show, come out to 8static in Philly next month.

p.s. We’re having a private beta on the plugins right now. If you’d like to try them, let me know. Note: you must have the Leopard Developer Tools (and thus Quartz Composer) installed for these to be useful.

7 Responses to “Open Emu”

  1. vade » Blog Archive » OpenEmu QC Demo videos Says:

    […] to be out soon. Very soon. These 3 videos give some overview of what is possible with OpenEmuQC. Dan Winckler has some info about the history of OpenEmu development. We worked together on the OpenEmu QC port, […]

  2. Derrick Belcham Says:

    Hey Dan,

    I’d love to check out the QC beta. Checked out your vimeos and would love to start experimenting. Running VDMX and would love to get this in the mix.

    Let me know!

    thx man,

    db

  3. lukasz Says:

    hi dan!

    this looks like some amazing work… very keen to join the beta testing team if you guys still need poeple. i realise its been a few months since this post… but let me know either way.

    have ideas of making a audio contolled street fighter patch… so controlling a two player game through audio, one player responding to treble and the other to bass… recon that would rad!

    anyhoo, let me knwo.

    L.

  4. dan Says:

    ha! you have good timing — we just released the 2nd public version of Open Emu today. 😀 you can grab it at http://openemu.sourceforge.net/. let me know how it goes — video, screenshots, and detailed bug reports would be much appreciated! 🙂

  5. Wileywiggins@gmail.com Says:

    The app works great, but I can’t seem to get the QC patch to load an NES ROM in any of the included compositions. I’m sure I put the path in correctly because I pasted it from the terminal. Is there something else I need to do?

  6. Wiley Says:

    Working great now. Let me know if anyone has any example vdmx sets that use it. I don’t know how to get the OpenEmu inputs published correctly in quartz composer so that the game is still playable in VDMX… also it would just be cool to see novel uses of OpenEmu in VDMX sets other than just heaping effects on it. (weird controllers, multiple displays, etc)

  7. Wiley Says:

    Are there currently any problems with the open Emu quartz plugins and Kineme Core or OS 10.6? I just installed the most recent versions of Kineme and OpenEmu (and Vade’s Rutt Etra plugin) and now quartz composer is very unhappy. When I open the OpenEmuNES example I get:

    (null) : Patch with name "QCPlugInPatch:OpenEmuQCFiltersPlugin" is missing

    Macro Patch Cannot create node of class "QCPlugInPatch" and identifier "OpenEmuQCFiltersPlugin"

    (null) : Patch with name "QCPlugInPatch:OpenEmuQCNES" is missing

    Macro Patch Cannot create node of class "QCPlugInPatch" and identifier "OpenEmuQCNES"

    Macro Patch Cannot create connection from ["outputValue" @ "LFO_3"] to ["inputNmtRamOffset" @ "PlugInPatch_OpenEmuQCNES_1"]

    Macro Patch Cannot create connection from ["outputValue" @ "LFO_4"] to ["inputNmtRamValue" @ "PlugInPatch_OpenEmuQCNES_1"]

    Macro Patch Cannot create connection from ["outputImage" @ "PlugInPatch_OpenEmuQCNES_1"] to ["inputImage" @ "PlugInPatch_OpenEmuQCFiltersPlugin_1"]

    Macro Patch Cannot create connection from ["Controller_Data_Structure" @ "Patch_3"] to ["inputControllerData" @ "PlugInPatch_OpenEmuQCNES_1"]

    Macro Patch Cannot create connection from ["outputImage" @ "PlugInPatch_OpenEmuQCFiltersPlugin_1"] to ["inputImage" @ "Billboard_1"]

    Macro Patch Cannot create connection from ["outputValue" @ "LFO_1"] to ["inputChrRamOffset" @ "PlugInPatch_OpenEmuQCNES_1"]

    Macro Patch Cannot create connection from ["outputValue" @ "LFO_2"] to ["inputChrRamValue" @ "PlugInPatch_OpenEmuQCNES_1"]

    (null) State restoration failed on