A ROM hack, and matching controller, to add rotary controls to the Neo Geo game Puzzle Bobble
https://github.com/city41/rotary-bobble/assets/141159/24a6326e-b90c-4391-a242-a1e90e2c0111
The ROM hack is complete. It...
The complete patch is at src/patches/rotary-bobble.json
I have built a rough, but working, prototype using an Arduino Nano.
It uses transistors to control RLDU, B, C and D. It has normal push buttons for A, Select, Start.
I also had a prototype using a Raspberry Pi Pico, but always had a little bit of noise in the Pico's analog readings, causing a bit of jitter during gameplay. The Nano has no jitter and provides perfect controls.
For more info, check the src/pico
and src/arduino
folders.
IPS patches are available in releases
d96-02.c5
with pbobblen.d96-02.c5.ips
using an IPS patcherd96-03.c6
with pbobblen.d96-03.c6.ips
using an IPS patcherd96-07.ep1
with pbobblen.d96-07.ep1.ips
using an IPS patcherNOTE: MAME will notice the ROM is different and not launch it from the UI. You must launch it from the command line if using MAME
Controller
ROM Hack
The 68k assember, clownassembler, was copied into clownassembler/
from https://github.com/Clownacy/clownassembler,
it needs to be built with cd clownassembler && make
. This is needed for creating patches.
only tested on x64 Ubuntu 22. You will need a recent version of Node, I am using 18.18.2
Set the env variable MAME_ROM_DIR
to where you store your roms for MAME.
yarn install
pbobblen.zip
, that is intended for MAME, into the root directory of the repo
ts-node src/patchRom/main.ts src/patches/rotary-bobble.json
rotary-bobble.json
is the main patch, and applies all changes. The patches in patches/individual
can be applied instead to just do parts. They should be self explanatory from the file name and the description at the top of each patch.
Once patched, it will run in MAME if you start it on the command line. You can also run yarn to-neosd
to create a .neo file. This requires neosdconv. I would prefer to use TerraOnion's NeoBuilder, but I've not gotten it to work properly.