Overview
This is a Python port of the original 1993 Mac game Happyweed!. It reproduces the original's gameplay exactly: the tiles, art, sound, levels, and game logic are all identical, bugs included.
To match the original game's feel, the port enables a few original-hardware touches by default: display gamma (true Mac display colors), the original's sprite flicker, and the animated level reveal. You can turn any of these off under Options.
Speed & Mac Models
On original hardware, the game's speed was tied directly to the CPU. It was initially designed for 68030 Macs, which often ran the game so slowly that the Set Speed menu was needed just to make it playable. On the other hand, the Power Macs most of us grew up on were too fast, so they relied on their own built-in 68k emulator to run the game properly. To bridge this gap, the Options menu lets you choose which machine to play on, with the Power Mac set as the default base speed.
New Features
- Optional enhanced graphics
- Smooth motion
- Fast Play mode
- Automatic replay recording for every game
- Online high-score leaderboards
- Resizable window with full-screen support
Reverse Engineering
There was no source code to work from, so the entire project was reverse engineered from a MacNosy II disassembly of the original game's compiled 68k binary. The level generator, the cop AI, the random-number generator, and the timing of every tick were all translated to Python by hand from that disassembly.
Some behavior wasn't obvious from the disassembly alone, so small capture programs were written in THINK C, the original game's own language, and run alongside the real game to log live palette, timing, and memory data straight out of the Mac OS.
A trainer script for the MAME emulator captured frame-by-frame traces of the real game in action: player and cop positions, speeds, and timings. That data became the golden master the parity tests are checked against, tick for tick.
Credits
© 1993 by Christopher B. Council.
Reverse-engineered and ported to Python by Hondo (2026).
Questions, bugs, or an old high score to add to the All-Time board? Email [email protected].