0xe1f/Arkanoid

Arkanoid (MSX) disassembly

★ 1Forks 0AssemblyGitHub ↗Compare

README

Arkanoid (MSX) — disassembly

verify in source named op comments sub comments

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.

What's here

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.

Building

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 WAVs

make alone produces Arkanoid.rom in the repo root (gitignored).

How it works

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.

License

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.

Contributors

0xe1f

Issues