An Analogue Pocket port of Tapper (Bally Midway, 1983), built on the openFPGA framework. One core, every edition — selectable from the Pocket library:
- Tapper — Budweiser, 1/27/84 (the classic)
- Tapper (Root Beer) — the soda re-theme
- Tapper (Suntory) — the Japanese release
- Tapper (Alternate Graphics) and the 1/12/84 and 12/9/83 revisions
- Timber — Bally Midway's lumberjack game on the same board
Tapper and Timber are the same MCR hardware; a variant byte in each ROM image tells the core which input layout to use (Timber adds a second action button).
Last call, and the bar is packed. Work four counters at once, sliding frosty mugs down the line to a never-ending crowd of thirsty patrons — then catch the empties they slide back before they smash. Scoop up tips, keep every customer from reaching the end of the bar, and survive the rush across saloon, sports bar, punk bar and space bar. A frantic, beloved test of timing and nerve.
All editions are the same MCR hardware — they differ only in ROMs, so one bitstream runs them all.
Tapper runs on Bally Midway's MCR3 board:
| Part | Role |
|---|---|
| Zilog Z80 | Main CPU |
| Zilog Z80 (SSIO board) | Sound, driving dual AY-3-8910 PSGs |
| Display | Horizontal CRT, 15 kHz, RGB |
Built on the MiSTer Arcade-MCR3 core:
- MiSTer port: Sorgelig (2019)
- FPGA arcade hardware implementation: Dar — darfpga (darfpga@aol.fr)
This Analogue Pocket build adapts that RTL to the openFPGA / APF framework. Many thanks to Sorgelig and Dar.
| Tapper | Timber | |
|---|---|---|
| D-Pad | Move between / along the bars | Move the lumberjack (4-way) |
| A | Pour / serve & collect mugs | Chop |
| B | — | Chop (other side) |
| Start | 1P Start | 1P Start |
| Select | Insert coin | Insert coin |
Copy Cores/, Assets/ and Platforms/ to your Pocket's SD card. Each edition
is a small instance JSON in Assets/tapper/HarpMudd.Tapper/; launch the core and
you drop straight into that folder to pick one, or browse to it from the Pocket
library. The selected edition is loaded by its .json.
ROMs are not included — nothing in this repo contains copyrighted data.
Supply your own MAME romsets (tapper, rbtapper, sutapper, tapperg,
tappera, tapperb, timber) and build the per-game .rom images into
Assets/tapper/common/ by either:
.mrarecipe (one per game inAssets/tapper/common/): run it through the standardmratool — e.g.mra timber.mra. These list the required files by CRC32 with no copyrighted data.pack_rom.py: drop the romset zips next topack_rom.pyand runpython pack_rom.py all(matches the dumps by CRC32).
Both produce byte-identical images.
- Original arcade game: Bally Midway (1983)
- MiSTer Arcade-MCR3 port: Sorgelig
- FPGA arcade core: Dar (darfpga)
- Analogue Pocket port: HarpMudd
- Z80 CPU core (T80):
- Daniel Wallner — original author (2001–2002, OpenCores)
- Mike Johnson / MikeJ (FPGAArcade) — DJNZ M1_n fix, clock enable, IM 2 fix and interrupt-ack fix (v0232–0240); project tidy-up, March 2005 (Ver 300)
- Sean Riddle — parity flag for 8080 vs Z80 (Ver 301)
- TobiFlex — undocumented DDCB / FDCB opcodes (Ver 303, 20 April 2010)
- Alexey Melnikov (Sorgelig) — timing accuracy and ZEXDOC / ZEXALL /
Z80Full / Z80memptr verification (Ver 350, 2018), and the
T80papseudo-asynchronous top level
- YM2149 (AY-3-8910) sound core: Mike Johnson / MikeJ (FPGAArcade), Jan 2005
- SDRAM controller, data loader, I2S audio, sync FIFO: Adam Gastineau (agg23)
- openFPGA framework (APF), bridge command handler, reference
core_top: Analogue - PLL and other megafunctions: Intel/Altera (Quartus-generated)
I'm into retro games and the Analogue Pocket, always cooking up something new. I love being part of a community built on sharing and the love of games — so if any of my projects bring you joy, chip in below; it fuels the next thing.