Atari Book-5 Arcade Skeletons → KN-86 Experience-Tier Candidates
Derives from: synthesis-atari-graphics.md §2 (book 5) + §5 (“ready arcade skeletons”). The two systems in book 5 (pursuit-AI, ELIZA) shipped as prototypes in GWP-658 (see Companion prototypes); this note enumerates the remaining arcade skeletons as experience-tier candidates.
Anchors: ADR-0047 (the experience tier — tactical vs experience kinds; invoke → play → typed-outcome → pop; one-blit render; chrome rows persist; 20 fps), ADR-0045 (the hunt keeps ticking under a surface), ADR-0036 (the renderer), [GWP-654] (render/half-block-line — the keystone vector primitive these lean on), [ADR-0011]/economy (the gamble’s credit hooks).
0. How to read this
Section titled “0. How to read this”ADR-0047 governs the foreground pixel tiers and splits them on the interaction axis:
- tactical — pixel-addressed, event/command, discrete-state (turn-based). The ICE board charters this kind.
- experience — pixel-addressed, active-loop/control, real-time (keys + trackpoint as controls). The drone pilot.
Every skeleton below is tagged with its kind, because the kind decides the router contract (event-redraw vs per-frame tick) and the input contract (commands vs controls). All of them:
- draw inside Rows 1–73 (Row 0 / Row 74 chrome stay live — Spec Hygiene Rule 5);
- are invoke-only — a cart/phase pushes the surface and supplies content + logic; the runtime owns the pixels (ADR-0047 Decision 2). No raw pixel access from cart Lisp;
- resolve to a typed outcome the cart declares into UDS (ADR-0047 Decision 6), feeding the phase chain / objective model;
- are bounded by the 20 fps shared single-threaded ceiling and painter’s-order redraw (no retained-layer compositor). Fast action must be designed to that ceiling;
- monochrome → dither, not colour; animate the lookup, not the pixels (synthesis §4).
This is an enumeration, not a build queue. Each entry states the mechanic, the KN-86 framing, the render/FFI surface it needs, its dependency on the keystone line primitive, and the honest perf risk. Build order is a separate decision; the line-dependent ones (paddle, projectile) presuppose [GWP-654] (shipped).
1. The five skeletons
Section titled “1. The five skeletons”1.1 Cell-scroll dodge — “ICE CORRIDOR”
Section titled “1.1 Cell-scroll dodge — “ICE CORRIDOR””- Book-5 mechanic: a fixed avatar, a scrolling field of obstacles; collision = test the next cell’s occupancy before the step. (Book 5’s clearest type-in pattern.)
- KN-86 framing: the operator’s intrusion icon threads a collapsing ICE corridor — walls scroll toward you; a mis-stepped cell trips the ICE.
- Kind: tactical (cell-addressed dodge is naturally discrete-step) or experience if driven on a continuous scroll. Default tactical — it’s the cheapest honest fit and reuses the cell grid directly (no pixel sprites required at all; this one can live almost entirely on the
cell-*tier). - Render / FFI: cell glyphs + a scroll offset (the “fine scroll” idea from synthesis §2 book 1 — sub-cell pixel offset on a region); collision is a pure occupancy test (no new primitive). Soft-glyph plane (ADR-0052) for the scrolling wall texture.
- Line primitive: not required.
- Outcome:
:cleared/:tripped(+ depth reached) → phase gate. - Perf: trivial — the lowest-risk skeleton, and the natural first experience-tier build. Composes with the ADR-0045 hunt (the corridor tightens as background heat rises).
1.2 Wave defense — “FIREWALL”
Section titled “1.2 Wave defense — “FIREWALL””- Book-5 mechanic: successive waves of advancing attackers; the player holds a line, fire/again, escalating cadence.
- KN-86 framing: the operator is a firewall — daemons advance across the grid in waves; you spend actions (or a cooldown’d “purge”) to hold the line. Reframes “defense” as ICE you operate, not fight.
- Kind: experience (real-time waves) — but a tactical turn-based variant (“hold N turns, allocate purges”) is the safer first cut and pairs with the
tracepursuit core (§Companion) for attacker steering. - Render / FFI: multi-cell sprites by handle (ADR-0047
draw-sprite), painter’s order (background → daemons → HUD), a cooldown meter on the CIPHER-LINE (aux-*). Glyph-cycle animation for the advancing front. - Line primitive: optional (targeting reticle).
- Outcome:
:held N waves/:breached→ reputation/credit delta. - Perf: medium — many moving entities at 20 fps; cap concurrent sprites, drive motion off a tick budget, prefer glyph-cycle over per-pixel.
1.3 Reel + payout gamble — “CASINO / THE FLOAT” (economy-tied)
Section titled “1.3 Reel + payout gamble — “CASINO / THE FLOAT” (economy-tied)”- Book-5 mechanic: spin reels (or draw), score a combination against a payout table, settle a wager.
- KN-86 framing: a back-alley credit float — wager deck credits, spin an amber reel of glyphs, settle against a payout table. The one skeleton that touches the economy directly.
- Kind: tactical (discrete spin/settle; command-driven). Cleanly event-redrawn.
- Render / FFI: rotating glyph reels (soft-glyph or glyph-cycle — “animate the lookup”); the wager/settle UI on the cell tier. Economy: the wager and payout MUST go through the sanctioned
deck_set_*()mutators / NoshAPI credit primitives (integrity cores + bus publish, per ADR-0045 §Constraints + the economy core) — the minigame proposes a delta, the runtime settles it. Outcome schema in UDS. - Line primitive: not required.
- RNG: deterministic, seeded, auditable (the deck’s LFSR / a carried LCG) — never host entropy; the payout odds are data, the “random within form” principle (synthesis §4) with a fixed house edge.
- Outcome:
:won <delta>/:lost <delta>→ economy mutation (sanctioned). - Perf: trivial. Risk is design, not perf: an economy-affecting surface needs the credit path locked to the integrity core and the odds tunable as data — treat as a small economy ADR touch, not just a render.
1.4 Paddle-ball — “DEFLECT”
Section titled “1.4 Paddle-ball — “DEFLECT””- Book-5 mechanic: a paddle, a bouncing ball, angle-of-incidence reflection, brick/▒ field.
- KN-86 framing: DEFLECT — bounce an intrusion packet past an ICE wall / chip away a data block. The canonical real-time control test.
- Kind: experience (continuous paddle control; trackpoint or keys).
- Render / FFI: the ball is a sub-cell pixel sprite (smooth position via sub-cell offset, even at 20 fps frame rate — ADR-0047 reconciliation); the field is cells. Reflection math (vector reflect) is pure-logic, lifts cleanly to the C/system helper layer (ADR-0047 Decision 7: collision/easing/vector-math live in C, exposed as verbs).
- Line primitive: yes —
render/half-block-line(GWP-654) for the ball trail / aim guide on the 128×150 half-block canvas. - Outcome:
:cleared/:missed(+ score) → phase gate. - Perf: medium-high — a real-time bouncing object at a 20 fps ceiling reads as “chunky”; tune ball speed to the cadence, keep one ball, design the feel to 20 fps rather than fighting it.
1.5 Aim + power projectile — “LOB”
Section titled “1.5 Aim + power projectile — “LOB””- Book-5 mechanic: set angle + power, fire a ballistic arc, hit a target; iterate (the artillery/“gorilla” pattern).
- KN-86 framing: LOB — arc a payload over an ICE wall onto a target node; wind/interference as a modifier. Turn-based aim-and-fire.
- Kind: tactical (discrete aim → fire → observe → adjust; command-driven). A clean fit — no real-time loop needed.
- Render / FFI: the trajectory is drawn with the line primitive (a sampled parabola = many short
render/half-block-linesegments — exactly the vector family GWP-654 unlocks); target + wall as cells. Arc integration is pure-logic (C helper or Lisp). - Line primitive: yes — central. This is the most direct consumer of GWP-654 in the arcade set.
- Outcome:
:hit(+ shots taken) /:out-of-shots→ phase gate. - Perf: low — turn-based; the only cost is redrawing the arc per shot. The best showcase of the line primitive as gameplay (vs linelab’s attract use).
2. Summary table
Section titled “2. Summary table”| Skeleton | Cart name | ADR-0047 kind | Line primitive (GWP-654) | Economy | Perf risk | First-build rank |
|---|---|---|---|---|---|---|
| Cell-scroll dodge | ICE CORRIDOR | tactical | — | — | trivial | 1 (recommended first) |
| Reel + payout gamble | THE FLOAT | tactical | — | yes (sanctioned) | trivial (design risk) | 2 |
| Aim + power projectile | LOB | tactical | central | — | low | 3 |
| Wave defense | FIREWALL | experience (tactical variant first) | optional | reputation/credit | medium | 4 |
| Paddle-ball | DEFLECT | experience | yes (trail/aim) | — | med-high | 5 |
Recommended sequencing: the tactical, line-free, perf-trivial ones first (ICE CORRIDOR, THE FLOAT), then the line-dependent tactical LOB (proves GWP-654 as gameplay), then the real-time FIREWALL / DEFLECT last (they pay the 20 fps tax). This mirrors the synthesis recommended order (cheap-substrate-first; the heavy real-time thing last) and ADR-0047’s “build one tactical (ICE board) + one experience (drone), extract a kit.”
3. Companion prototypes (shipped in GWP-658)
Section titled “3. Companion prototypes (shipped in GWP-658)”The two book-5 systems (not arcade skeletons) were prototyped as Fe-Lisp mechanics-lab programs in this thread, and feed the skeletons above:
trace(runtime/programs/trace/trace.lsp) — the grid pursuit/evasion mini-AI (“Capture the Quark”). Its symmetric goal-bias + seeded-jitter + wall-avoidance step is reusable as the attacker/steering AI for FIREWALL (1.2) and any cell-grid hunt; it ties to [ADR-0045] (the background hunt that closes in). 10 tests.echo(runtime/programs/echo/echo.lsp) — the CIPHER voice as a reactive ELIZA/Doctor engine (adapted from GNU Emacsdoctor.el): equivalence classes + the$rotating lists + positional dispatch + reflection. Routes through CIPHER on the OLED (ADR-0015). NPC/contact dialogue + interrogation for any surface. 9 tests.
4. What does NOT change here
Section titled “4. What does NOT change here”No new resolution profile, grid, glyph dimension, or economy rule is introduced (Spec Hygiene). Every value referenced (1024×600 / 128×75, 128×150 half-block, 20 fps, the cell-*/render/* tiers, the credit mutators) is the canonical one. These are candidate carts — each becomes real only with its own per-surface design (kind, controls, layout, UDS return schema) under ADR-0047, and the economy-touching one (THE FLOAT) needs the credit path signed off against the integrity core before it ships.
Assigned to carts
Section titled “Assigned to carts”Josh’s calls, made in the kn86-inspo workbench. Full map: cart-inspiration-map.md.
| Game | Destination |
|---|---|
| CASINO / the float skeleton (Atari) | TRADECON |
| DEFLECT skeleton (Atari) | ICE Breaker |
| ELIZA engine (Atari, shipped as echo) | runtime / engineering |
| FIREWALL skeleton (Atari) | ICE Breaker, Sysop Mode |
| ICE CORRIDOR skeleton (Atari) | Nodespace |
| LOB skeleton (Atari) | Shellfire |
| Pursuit AI (Atari, shipped as trace) | ICE Breaker |
| Soft-glyph plane (Atari, shipped ADR-0052) | attract / boot |