Marble Love

This stage runs the game. Load your own legally dumped MAME ROM ZIPs — marble.zip and atarisy1.zip, selected together — to play the real Marble Madness. Everything stays in your browser; nothing is uploaded.

Scroll down for what this project is and the Slapstic finding.

What is this?

Marble Love is a reimplementation of Atari's Marble Madness (1984) in TypeScript. It is not an emulator: each routine of the 68010 game program is ported function by function from the disassembly into readable code, then checked byte for byte against MAME as the behavioral oracle. The result is gameplay logic you can read and verify — every parity claim comes with a command that reproduces it.

The Slapstic finding

A 126-byte playfield mismatch at exactly one frame traced to the cartridge's Slapstic security chip (137412-103) observing the 68010's instruction prefetch outside its protected ROM window — a hardware side channel not described in the MAME source or any public datasheet we could find. Modeling the prefetch into the chip's state machine closed the byte diff to zero, and a regression test pins it.

Read the full write-up →

Real gameplay

Real gameplay, captured locally with legally owned ROMs. No game assets ship with this site or the repository; load your own ROMs in the stage above to play, and they stay in your browser.

Play with your own ROMs

The repository ships no copyrighted game data. If you legally own MAME ROM ZIPs for marble (and the Atari System 1 BIOS, atarisy1.zip), load them with the button in the stage at the top of this page — select both ZIPs together (Cmd/Ctrl-click). Files are validated by name, size, and CRC32, then the game starts right there. Everything is read locally in your browser; nothing is uploaded.

Controls: 5/C insert coin, Enter/Space start; mouse, WASD, arrow keys, or gamepad move the marble. The first coin/start/click also unlocks Web Audio. Known gameplay and audio gaps are documented in the README, not hidden.