ColecoVision ROM Hacking

abandoned

ColecoVision ROM hacking and reverse engineering experiments

Tech Stack

Z80 AssemblyPythonROM Hacking

TL;DR

Reverse engineering a 1983 game console to give Donkey Kong anatomical enhancements

Original ROM

0x2953: F0 FF F0 C0

0x2957: C0 C0 C0 00

0x295B: 07 FF 0F 03

...

Modified ROM

0x2953: F0 FF F3 C3

0x2957: C7 C0 C0 00

0x295B: 07 FF CF C3

...

Result

🦍

now anatomically

enhanced

The patched ROM booting in Gearcoleco — note the title screen

What We Built — for science, obviously

Phase 1

ROM Archaeology

The ColecoVision runs on a Z80 CPU with a TMS9918A video chip — the same setup as the MSX and SG-1000. Donkey Kong's 16KB ROM needed to be disassembled to understand where the sprite data lives.

Graphics are stored as 8x8 pixel patterns in the "pattern generator table" at specific memory addresses. Each pattern is 8 bytes — one byte per row, each bit representing a pixel. Finding DK's sprites meant hunting through hex dumps for recognizable pixel patterns.

The discovery: DK uses multiple sprite patterns composited together. Front-facing and side-profile poses are stored separately.

Phase 2

The Dong Mod

Once the sprite addresses were mapped, modifying them was straightforward hex editing. The challenge was working within the 8x8 grid constraint — you only get 64 pixels per pattern to work with.

Finding the tiles meant pausing on the pose in Gearcoleco's VDP viewer, clicking the sprite in the name table to read its VRAM address, then searching an xxd dump of the ROM for those exact bytes to locate them on disk. A short Python script applied the patches. The final mod touches patterns for both the front-facing and side-profile poses.

The result: Donkey Kong, now anatomically correct. The ROM runs on real hardware and emulators alike.

🎮

Why ROM Hacking?

Retro game modding is a gateway to understanding low-level computing. No operating system, no frameworks — just raw memory addresses and bit manipulation. The ColecoVision's architecture is simple enough to fully comprehend, yet complex enough to be interesting. Plus, sometimes you just want to see what happens when you give a gorilla proper anatomy.

Tech Stack

Z80 AssemblyPythonxxdGearcolecoTMS9918A VDP

No modern toolchain required — just xxd, an emulator for testing, and Python for visualization scripts. The ROM itself is smaller than most favicons.