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
- Run the build in
x64sc and verify the boot path, controls, and turn flow.
- Confirm the raster-driven loop behaves correctly on a real VICE session.
- Tune board readability if the current dot-grid is too sparse under sprites.
Medium priority
- Add attack and death feedback such as flash or simple SID beeps.
- Add a stronger title/opening screen.
- Add a clearer wait indicator and maybe a per-unit action prompt.
Low priority
- Add obstacles and richer pathing.
- Add ranged attacks or special abilities.
- 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.