Godzilla multiplied by Arcade Games plus McDonalds divided by Pepsi Max plus StepMania equals Tom Tilley
Thomas Tilley
Godzilla arcade games McDonalds Pepsi MAX StepMania Tom Tilley

[ Home ] [ Publications ] [ Resume ] [ Family ] [ Projects ] [ The Others ] [ Sitemap ]

Home
Publications
Resume
Family
Projects
The Others
Sitemap

Hipster Game Controller

2016


Front  view of the hipster game controller

Back in 2010, I built some really fun controllers to play Puzzle Bobble (also known as "Bust-a-Move" in North America) for a university open day. The controllers were like the coffee-grinder winches used on racing yachts so I called the project "Coffee Grinder Puzzle Bobble". This project could share the same name because it uses my parent's old wooden coffee grinder as a Puzzle Bobble controller!

This was an idea I'd had since building the PVC controllers back in 2010 but I finally got around to implementing it for Maker Faire Adelaide in 2016 (see the first picture below and if you look carefully you can see people playing Multiplayer Guitar Hero in the background). When you rotate the handle on the grinder, a little monster in the game turns a crank to move an aiming mechanism that allows you to shoot coloured balls/bubbles. When you press a button mounted in the base of an upturned plastic mug, another monster blows into a funnel to shoot the bubble onto the screen. If you connect more than three bubbles of the same colour they disappear and the aim of the game (if you'll excuse the pun) is to try rid the screen of bubbles.

Hipster game controller at Maker Faire Adelaide 2016 Bubblun turning the aiming mechanism in Puzzle Bobble Puzzle Bobble / Bust-a-Move

You can see the controller in action in the video below but note that I didn't actually grind beans while playing the game. It is a real grinder and it also works as a controller but doing both at the same time would be hard work!


Apparently the Norway Spruce (Picae abies) is a real fast-growing tree but calling it "Norwegian Spruce" sounded more Python-esque. I'm not sure if it is actually gluten free but you can read on below for more details about how I made the controller.




I have very fond childhood memories of this grinder. If we had people over for dinner then after the meal my parents would fill the grinder with beans and my Dad would hold it firmly in place on the kitchen table while we kids all took turns with the handle. The ground beans would then go into a percolator that sat atop the wood stove in the kitchen. I can still remember the smell of the coffee and the sounds as it bubbled away beneath the glass dome of the percolator.

Rotation Sensing

While the original project used optical mice to detect controller rotation, this project uses the scroll wheel and encoder from an old mouse that is mounted on a piece of plywood (sorry - this was just artistic license in the video) and held in place against the shaft with a cable tie (see the first two pictures below). When the grinder handle rotates, the scroll wheel turns and the wheel's encoder is connected to a hacked wireless mouse that plugs into a laptop running the game. I use a scripting program called GlovePIE to convert the scroll wheel rotation into input that the game expects.

Scroll wheel mounted on the grinder shaft Scroll wheel, encoder, and mount Rear view of the hipster game controller

I modified the wireless mouse by carefully making room for some female header socket connected to the front of the mouse that exposed two pins for the left mouse button (which are connected to the button mounted in the mug) and three pins so I could connect the recycled scroll wheel instead of the wireless mouse's own scroll wheel.

Modified mouse PCB Modified mouse with the cover removed Modfied mouse

Scroll Wheel to Game Input

I actually captured the in-game footage for the video using MAME running on an old Windows 7 laptop and not a Mac (sorry - more artistic license!). This meant that I could still use GlovePIE to convert the scroll wheel input into the key strokes that the game expected (although I had to use the -keyboardprovider dinput command line switch for this to work with MAME). When I did something similar for the original controllers back in 2010 things were somehwat more complicated and I had to use a virtual joystick as well.

Below is the script I used and it is based on the "MouseParty.PIE" script distributed with GlovePIE. The laptop's touchpad is "mouse1" and the wireless mouse from the coffee grinder is "mouse2". When you move the mouse's scroll wheel one tick up or down then it adds +/-120 mickeys to the mouse's Z-axis. The "Delta" function in GlovePIE is used to watch for positive or negative changes in the value of the Z-axis and then holds down either the left or right arrow keys for a short duration to move the aimer in the game. The key hold duration can be changed by altering the value of the 'var.hold' variable which is currently set to 0.09 seconds (90 milliseconds). Longer values require less cranking but the aimer tends to overshoot the position you want while lower values give greater accuracy but require a lot more cranking!



You're welcome to modify it and you can download the script I used here: HipsterController.PIE

Someone I work with pointed out that you could use this kind of controller in any game where you had a single fire button and a single joystick axis, e.g. Space Invaders, Arkanoid, Tempest, Gyruss, Time Pilot, or even the original Pong. This controller is fun to play with and using an actual coffee grinder is novel but it doesn't have the same responsiveness as the older PVC controllers for a number of reasons. Firstly, an optical mouse has a much greater resolution than a scroll wheel and doesn't 'tick' in 120 mickey jumps. Secondly, the arrangement of a larger scroll wheel against the smaller shaft of the grinder means that you have to complete about 2.5 turns of the grinder handle for a single rotation of the scroll wheel.

Other Projects

You may also be interested in my original coffee grinder Puzzle Bobble controller or some of my other (usually game related) projects: