rotary bobble title

Puzzle Bobble, but with rotary controls

Rotary Bobble is a ROM hack for the Neo Geo game Puzzle Bobble. It replaces the joystick controls with a rotary dial. A custom controller is used to send angle values to the game as the dial turns.

I always felt this is how the game should have been made. The rotary controls are much more accurate and more fun to use.

Build the ROM

The ROM can easily be built at my Neo Geo ROM hack website.

From here you can load the ROM into a flashcart like the TerraOnion NeoSD or Darksoft's Multi Cartridge, or onto something like the MiSTer. You can play the ROM in an emulator like MAME, but getting a proper controller to work in that environment is more difficult.

Build the Controller

The game needs a custom controller built with an Arduino, a potentiometer and some transistors

More to come on the controller, I'm still experimenting in this area. Here is a schematic that uses an Arduino Nano. If you are good with electronics and microcontrollers and want to help out, let me know on GitHub.

high score entry screen

Playing Tips

Difficulty select, number of player select and high score name entry are all done with rotary controls. It might take a little bit to get used to this. The high score screen's timer was increased to 99 to help a bit.

high score entry screen

You can switch to joystick controls by holding start for 1.5 seconds. It will show what you just switched to for a moment on the side of the screen. Each player can do this. Useful if you want to play a two player game but only have one rotary controller.

Indicating whether joystick or rotary is the current control scheme

At the title screen, the version of the hack is shown. Please include this version if reporting a bug. To see this on MVS, don't insert a coin during the eyecatcher and wait for the title screen.

title screen with version displayed

How it Works

The controller has a potentiometer that sends a varying voltage to the Arduino based on its position. The Arduino converts that voltage into an angle value

Potentiometer sending an angle to the Arduino

It then sends that value to the Neo Geo using the controller port. Directions left, right, up and down, plus the buttons B, C and D are used as seven bits to send the number on

Arduino sending value to Neo Geo through controller port

The game receives this input on the controller port. Which normally it wouldn't understand...

The game normally can't understand the angle value

... but the game was changed to know how to convert these bits coming from the controller port back into an angle value.

The game was changed to understand the angle value

It then tells the shooter to position itself based on this angle

Shooter positions itself based on the angle

This happens sixty times per second, resulting in smooth rotary controls

Game ready for a new angle value
Hack created by Matt Greer
Original game by Taito