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.
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.
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.
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.
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.
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.
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
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
The game receives this input on the controller port. Which normally it wouldn't understand...
... but the game was changed to know how to convert these bits coming from the controller port back into an angle value.
It then tells the shooter to position itself based on this angle
This happens sixty times per second, resulting in smooth rotary controls