This project is a human-guided, largely AI-executed workflow.
A work-in-progress, byte-exact and reassemblable disassembly of Taito's Arkanoid (アルカノイド, 1986) for the MSX — a 32 KiB unmapped cartridge (product MSX-10).
The goal is a readable, commented, buildable source that reproduces the original ROM exactly, so the game can be understood and modified.
You can find random interesting facts from the disassembly at @msxti.me on Bluesky.
Arkanoid.asm master file: one PHASE over the linear 32 KiB window
Arkanoid.sha1 SHA-1 of the original 32 KiB ROM (`make verify`)
banks/banks_0123.asm banks 0-3 @ 4000-BFFF (always mapped; not a Konami triplet)
banks_0123.blocks z80dasm code/data map for the window
data/psg_hdr.asm Taito PSG index + 5-byte records
data/psg.asm Taito PSG streams (`silence`..)
data/pat_*.asm SCREEN 2 play / Doh / title tiles
data/wall.asm playfield filigree tiles (ids 70–7F)
data/filigree.asm nametable rows of those ids
data/col_*.asm packed colour (`col_unpack`)
data/spr.asm 8×8 sprite generator (ids 00–8F)
data/spr16.asm 16×16 SAT figures from id 90 + unused tail
data/sprcol.asm fodder overlay planes (ids C0–DF)
data/fodder.asm door-enemy SAT / motion seeds
data/title_table.asm title nametable + credit strings
data/rounds.asm 32 playfield layouts (nibble-RLE, bt_* collision)
data/round_obj.asm per-round bo_* types + 11×12 occupancy masks
data/story.asm attract-mode crawl
data/ending.asm post-Doh crawl
data/space_key.asm unused arcade PUSH SPACE KEY leftover
music/ BGM WAV previews (`make music`)
sfx/ SFX WAV previews (`make sfx`)
gfx/ PNG sheets (`make gfx`): tilesets, sprites, metatiles,
and per-round SCREEN 2 composites (`gfx/round_NN`)
tools/workbench/ MSXDAW submodule (regen, romscan, gfx, taitoplay)
docs/ reverse-engineering notes (`game-notes.md`, `progress.md`,
`capsules.md`)
Makefile build / verify / coverage / gfx / music / sfx
A clean checkout can assemble and verify with no leftover INCBIN bins.
You need sjasmplus, built from source
(z00m128/sjasmplus v1.24.0) and placed at
tools/sjasmplus (tools/workbench/bin/install-sjasmplus). No original ROM is
required to assemble or verify once banks are source. (make banks, coverage,
and bank regen use the tools/workbench submodule.)
make skills # tools/workbench/bin/install-skills -> .cursor/skills/
make verify # assemble, then SHA-1 check against Arkanoid.sha1
make coverage # local Shields JSON under generated/badges/
make gfx # PNG tile / sprite sheets
make music # BGM WAVs from the rebuilt ROM
make sfx # SFX WAVsmake alone produces Arkanoid.rom in the repo root (gitignored).
32 KiB = 4 × 8 KiB banks at CPU 4000 / 6000 / 8000 / A000, assembled
as one window (banks_0123). There is no mapper. After every change the ROM
is rebuilt and SHA-1 checked so it stays byte-for-byte identical.
See docs/game-notes.md, docs/progress.md, and docs/capsules.md.
Original work in this repository (tools, comments, documentation, labels,
and project structure) is licensed under the Apache License, Version 2.0.
See LICENSE and NOTICE.
Arkanoid is © 1986 Taito. This project does not relicense the original game, ROM, graphics, or music.