# Implementation Progress — Skirmish (C64) ## Status: BUILDABLE MVP BASELINE Last updated: 2026-05-28 --- ## What Exists Now ### Project structure ``` skirmish-game/ ├── src/ │ ├── skirmish.asm # Entry point, raster sync, shared state │ ├── input.asm # Keyboard + joystick polling │ ├── game-logic.asm # Turn flow, movement, combat, occupancy │ ├── enemy-ai.asm # Closest-target AI and movement │ ├── render.asm # Sprites, HUD, board markers │ ├── data.asm # Tables, text, sprite bitmaps │ ├── skirmish.inc # Shared constants │ └── c64.cfg # ld65 memory layout ├── docs/ │ ├── GDD.md │ ├── TECHNICAL-PLAN.md │ └── C64-CHEATSHEET.md ├── build.bat ├── run-vice.bat ├── debug-vice.bat ├── Makefile ├── README.md └── skirmish.prg ``` ### Core gameplay implemented - 8x8 tactical board with coordinate markers - 3 player units and 3 enemy units - Single-step turn flow: - player selects a unit - player moves or attacks - enemy team takes its turn - win/lose is checked - Adjacent melee combat for both teams - Unit HP tracking and death removal - Greedy enemy AI using Manhattan distance - Selected-unit highlight via sprite color - Restart flow after win or loss ### Controls implemented - `Q` or joystick fire: cycle selected player unit - `W`, `A`, `S`, `D` or joystick directions: move or attack - `E` or space: end turn - `R`: restart after game over ### Engine and rendering implemented - BASIC stub starts game with `RUN` -> `SYS 2061` - Raster-driven frame sync installed through IRQ vector - Main loop updates once per IRQ tick - 6 hardware sprites used for units - HUD shows current phase, turn count, selected unit, and all unit HP - Sprite bitmaps and lookup tables are linked into C64-visible RAM - Occupancy grid rebuilt from unit state to avoid stale collision state --- ## Build Verification ### Confirmed - `build.bat` assembles and links successfully with local `ca65` and `ld65` - Output artifact currently builds as `skirmish.prg` ### Current artifact - `skirmish.prg` size: 2617 bytes - Most recent successful local build: 2026-05-28 ### Not yet verified - Full gameplay smoke test inside VICE - Sprite alignment and board readability in the live emulator - Joystick port 2 behavior in VICE input mapping - End-to-end win/lose flow by playtesting --- ## Known Gaps ### High priority 1. Run the build in `x64sc` and verify the boot path, controls, and turn flow. 2. Confirm the raster-driven loop behaves correctly on a real VICE session. 3. Tune board readability if the current dot-grid is too sparse under sprites. ### Medium priority 1. Add attack and death feedback such as flash or simple SID beeps. 2. Add a stronger title/opening screen. 3. Add a clearer wait indicator and maybe a per-unit action prompt. ### Low priority 1. Add obstacles and richer pathing. 2. Add ranged attacks or special abilities. 3. Add difficulty scaling or multiple waves. --- ## Notes - The previous tracker text described files that did not actually exist yet. - The source tree and build scripts now exist and match this document. - The PRG boot path was corrected so the BASIC stub jumps to the real contiguous load address. - The next milestone should be emulator validation and gameplay polish, not project scaffolding.