Some people just want to watch the world burn. Others want to spread peace, joy and mustaches. [Joe Grand] falls into the latter group this time around. His latest creation is Mustache Mayhem, a hack, video game, and art project all rolled into one. This is a bit of a change from deconstructing circuit boards or designing electronic badges, but not completely new for [Joe], who wrote SCSIcide and Ultra SCSIcide for the Atari 2600 back in the early 2000’s.
Mustache Mayhem is built into a Nintendo Virtual Boy housing. The Virtual Boy itself was broken, and unfortunately was beyond repair. [Joe] removed most of the stock electronics and added a BeagleBone Black, Logitech C920 webcam, an LCD screen and some custom electronics. He kept the original audio amplifier, speakers, and controller connector. Angstrom Linux boots into [Joe’s] software, which uses OpenCV to detect faces and overlay mustaches. Gameplay is simple: Point the console at one or more faces. If you see a mustache, press the A button on the controller! The more faces and mustaches on-screen at once, the more points, or “mojo” the player gets. The code is up on Github, and can be built with Xcode targeted to the Mac, or directly on the BeagleBone Black.
[Joe’s] goal for the project was to make a ridiculous game that looks like it could have come out in the 90’s. He also used Mustache Mayhem as a fun way to learn some new skills which will come in handy for more serious projects in the future.
We caught up with [Joe] for a quick interview about his new creation.
How did you come up with the idea for Mustache Mayhem?
I was selling a bunch of my video game collection at PRGE (Portland Retro Gaming Expo) a few years ago and had a broken Virtual Boy that no one bought. A friend of mine was at the table and said I had to do something with it. I thought “People wear cosplay and walk around at conventions, so what if I could do something with the Virtual Boy that you could walk around with?” That was the seed.
A few months later, Texas Instruments sent me the original production release of the BeagleBone Black (rev. A5A). Eighteen months after that I actually started the project. The catalyst was to do something for an upcoming Portland, OR art show (Byte Me 4.0), which is an annual event that shows off interactive technology-based artwork. I wrote up a little description and got accepted. I had less than 2 months to actually get things working and it ended up taking about a month of full-time work. It was much more work than I expected for such a silly project. I originally was going to do something along the lines of walking around in a Doom-like perspective and shooting people when their faces were detected.
That would be pretty darn cool. How did you get from Doom to Mustaches?
I saw a TI BeagleBoard demo called “boothstache” which drew mustaches on faces and tweeted the pictures. I thought that doing something non-violent with mustaches would be more suitable (and funny) to actually show my kids. I also secretly wanted to use this project as a way to experiment with Linux, write some code, and learn about face detection and image processing with OpenCV, which I plan to use for some actual computer security research in the future. Mustache Mayhem turned out to be a super cool project and I’m really happy with it. I sort of feel guilty spending so much time on it, since it’s basically just a one-off prototype, but I just got so obsessed with making it exactly as I wanted.
You mentioned on your website that Mustache was “designed to challenge the paradigms of personal privacy and entertainment.” What exactly did you mean there?
Many people post images (and all sort of other personally identifiable information) of themselves online without thinking about the ramifications. I noticed that players willingly put their faces in front of the camera to see what they’d look like with a “virtual mustache.” I can’t really blame them, because mustaches are pretty cool, but if I can use a single-board Linux machine to detect faces, think about what cities, states, and nation-states can do/are doing on a much larger scale. The statement is sort of an underlying theme for people to think more carefully about their personal privacy and how it is or isn’t okay to sacrifice it in the name of having fun.
What was your favorite part of the project?
I loved the freedom of being able to create whatever I wanted to just for the hell of it. I have a real affinity for retro/classic gaming, so it was fun to try to make the game look like it could have belonged in the 90s (when the Virtual Boy was originally released). Being able to use the stock Virtual Boy controller was another highlight, since it made the game look more complete and less of hack (from outside appearance).
Did you have to figure the protocol out from scratch?
Nope, and that saved me a lot of time. I found a document online about the Virtual Boy controller pinout and interface, so I used that as a starting point. It didn’t take long to write the code to communicate with the controller (which uses a synchronous serial interface and basically just shifts out a bunch of bits with each one corresponding to a button on the controller).
Did your run into any unexpected challenges?
This was my first time really working in-depth with Linux. I ran into all sorts of trouble with configuring the system, compiling various packages, and generally just forcing it to do what I wanted it to do. This was purely a limitation of my own skills. Without the huge amount of open source tools and resources for both Linux and the BeagleBone Black, I would have been completely screwed. I’m a hardware guy, so this was truly a trial by fire.
A more significant unexpected challenge was realizing that the batteries I selected (Energizer L91 Lithium AA primary cells) couldn’t handle the power requirements (~7W) of the system. This was a major oversight on my part and I didn’t notice the problem until opening night of the art show when I started getting seemingly random shutdowns of the unit. I couldn’t believe my eyes. It was like a bad dream and reminded me of the stress while filming Prototype This when the cameras were rolling and everyone was looking at you.
How did you get around it for the show?
I thought that the batteries were just running low (and, technically, they were), so I switched over to using the stock Virtual Boy wall wart. Unbeknownst to me, that was also underpowered for my design. The system shutdown twice that night, but luckily attendees still got to experience the wonder of Mustache Mayhem.
After the show, I figured out the root cause of the problem: When running on batteries (the Virtual Boy controller uses six AAs in series), the system voltage was already sagging down to 7V (from a nominal 10.2V) before the game even started. As soon I started the game (which enabled the webcam), the voltage dropped below the 7V minimum limit of my DC/DC converter, causing the system to shutdown. With the wall wart (10V, 850mA), its output under load was actually a triangle (!) wave. On occasion, this would also cause the DC/DC converter to shutdown. It’s amazing nothing got damaged in the process. For most of my development, I had the USB connection plugged in (for network access to the BeagleBone Black from my computer), which supplements the main power, so I never noticed the poor performance of both the wall wart and batteries.
I ultimately hacked the Virtual Boy AC adapter pack (that connects to the back of the Virtual Boy controller) to fit a standard 2.1mm barrel jack and used a high-quality CUI 12V, 2.5A supply. The output under load is totally clean and stable with no noise whatsoever. I wasn’t able to find any battery chemistry in a AA package (or a pack that can fit into the space of the Virtual Boy battery holder) that will handle the high-current drain of the system while staying above 7V and don’t want to change my DC/DC converter to one with a lower minimum input voltage. So, for now, I’m stuck with wall power. I’m OK with that, though.
We want to thank [Joe] for taking the time to talk with us. We don’t know what he’ll be working on next, but we’re sure it will be a [Grand] Idea!