Sunday, March 25, 2007

I found a use for my Mac Mini -- running 1980s technology!

I have a PowerPC Mac Mini that I bought in the summer of 2005. The best way to describe it is sloooooooowwwwwww. It lags far behind the T42 that I bought the year before, so when Apple made the switch to Intel and all the Macheads were rejoicing about what a brilliant move it was, I was trying to figure out why no one else was angry that Apple had been selling unnecessarily slow computers to its users for years. Oh, right.

So now that I've moved on to faster machines, what am I supposed to do with my Mini? One thought was to use it as a DVD player, but we already have an Xbox 360 that does that, so that's not very exciting. (Also, my Mac Mini predates Apple Front Row, so I built my own makeshift version which required running Apache as root so it could execute CGI scripts to run AppleScript to control the Mac's DVD player so I could have a webapp that I could access from my laptop to use as a remote, but that's a whole other story...)

As I mentioned previously, I wished it were possible to use one of the web-based NES emulators on Wii Opera so it would be possible to play old games using a Wiimote. And then it dawned on me – what if I could just get a Wiimote working with my computer and use the emulator there instead? On sites like Engadget, I saw that some people had already built libraries for handling Wiimote input, so I did some searching and found the leading Wiimote library for Mac: DarwiinRemote.

Though there were loads of blogs pointing to DarwiinRemote, none of them actually explained how to use it (neither does the DawiinRemote SourceForge project page), but eventually I found a nice writeup on using DarwiinRemote that got me started. Though Darwiin's "Mouse Mode" was a little wonky, it was clear that my Mac was receiving Wiimote button presses perfectly.

The next step was to find a good NES emulator. I started out with NESCafe, which I had previously enjoyed using on Windows, but on the Mac it (1) ran too slow, (2) couldn't fill the screen, and (3) could not support sound emulation. I decided that a Mac-specific emulator was probably the way to go, so I did a brief survey of emulators available for Mac, settling on Nestopia.

Then it was time to put the two pieces of software together. I was reading the release notes for DarwiinRemote 0.5 which said that support had been added for the Classic Controller. Excellent -- that would be even more fun than using a Wiimote! Unfortunately, from my testing, it appeared that only partial support was available: for example, the "up" and "left" buttons on the D-pad registered, but not "right" and "down" (if you know any game where you only need to move northwest, pleast let me know!) Though the release notes for DarwiinRemote 0.5 list claim that PowerPC bugs were fixed, the release notes for WiiRemoteFramework 0.5 admit "#1623337 PPC bugs might be fixed." I have checked out the code to see if I can fix this myself, though I imagine if I am patient, the developers will have this fixed in the next release.

In the interim, I decided to try using the emulator by turning my Wiimote sideways. Here is a screenshot of how I configured both DarwiinRemote and Nestopia:

Configuring DarwiinRemote and Nestopia

Like I said, I hold the Wiimote horizontally when I use it to play with the emulator, so that's why the D-pad mapping in DarwiinRemote may appear odd. Also, DarwiinRemote currently only has a fixed set of keys that you can map Wiimote buttons to, which is why I'm using F1 and F2 for B and A, respectively.

Now that I have everything working, I must say that the experience is fantastic! The emulator and the Wiimote have been working beautifully together: everything seems to be responding as it should. There are only a few open issues:


  • As mentioned above, I would prefer to use the Classic Controller over the Wiimote. It looks like a lot of great progress has been made on DarwiinRemote in recent history, so I'm optimistic about that.
  • I would like to make a more Wiimote-friendly File->Open dialog for Nestopia. Ideally, one that could be navigated quickly with the D-pad, shows the covers of the games, etc. Ultimately, I want to connect the Mac Mini directly into my TV such that everything can be done easily with the Wiimote so I don't have to leave a keyboard or mouse hooked up to it.
  • I need to get support for two-player mode. Honeslty, I tried playing Contra by myself yesterday and it wasn't that much fun (the 30 life code worked just fine, though!). It looks like Nestopia supports input from two players, but DarwiinRemote only seems to take input from one Wiimote at a time right now. I fear that adding that feature to DarwiinRemote may take awhile, though I suppose if the Classic Controller were working, you could have one player use the Wiimote horizontally and the other use the Classic while tethered to it since together they compose one bluetooth device to Darwiin.


Nevertheless, I hope these issues don't deter you from trying out this setup because it's really a lot of fun! Seriously, if you have a bluetooth-enabled Mac, for the cost of a Wiimote ($40), you can have your own complete Virtual Console!

PS If you're looking for ROMs, I recommend checking out http://everyvideogame.com/. They use NESCafe as a Java applet to play the games on the site and it looks like each ROM lies in a zip file identified in the <PARAM> tag for the applet, so they are pretty easy to find. Though I obviously often promote Chickenfoot for this sort of task, I admit that Perl and wget will likely do the job just fine in this case.

8 comments:

  1. Unsurprisingly, I am apparently not the first to do this:

    http://youtube.com/watch?v=xbuDlDgJjII

    It must be tough without the X and Y buttons, though!

    Also, looking through the comments on the YouTube video, it looks like I need to get snes9x as well...

    ReplyDelete
  2. [...] (Also, my Mac Mini predates Apple Front Row, so I built my own makeshift version which required running Apache as root so it could execute CGI scripts to run AppleScript to control the Mac s DVD player so I could have a webapp that I … – More – [...]

    ReplyDelete
  3. [...] Apache as root so it could execute CGI scripts to run AppleScript to control the Mac s DVD player so I could have a webapp that I … – More – [...]

    ReplyDelete
  4. [...] Do you have a Mac mini, a Wiimote, and NES emulators? Here’s how to make them all work together. [...]

    ReplyDelete
  5. The mac mini is a pretty cool gadget to have imho. I used to run an old Commodore as a router, that was pretty funny as well!

    ReplyDelete
  6. Any idea if updates have been made to make two player games possible? That would be perfect! Please advise if anyone has ideas about how to make this work.

    ReplyDelete
  7. Wow, its really cool idea to use Mac in such way. Definitely try to do it. Also I wanna suggest you to try one amazing thing that has name playstation isos https://romsmania.com/roms/playstation and works just perfectly.

    ReplyDelete