Cartridge authoring
Patterns, conventions, and tools for writing a cartridge that the nOSh runtime can host.
Before designing gameplay: the cartridge specs under ../modules/ are under revision. cartridge-premise-audit-2026-07.md records how they drifted and which premise outranks each one. A spec asserting its own identity is a prior draft; the premise wins. Roughly 20,000 lines of drifted and duplicated design were removed on 2026-07-29 (pruning-2026-07-29.md).
Start here
Section titled “Start here”| Doc | Scope |
|---|---|
ascii-design-system.md | The authority for any visual surface. The slot model (frame, divider, fill, accent per house style), deck chrome, house kits, data displays (list, table, kv, meter, spark), network-map conventions. Screens compose from named slots; hand-drawn borders and per-screen furniture are out. |
screen-design-rules.md | The row contract. Row 0 and Row 74 are firmware-owned; carts draw Rows 1 through 73. Grid, margins, hierarchy, density, truncation, scroll. |
animation.md | The two sanctioned styles (soft-glyph, glyph-cycle) and the named motion library. A motion the library lacks lands as a named style before a screen selects it. ADR-0052 is the authority. |
lisp-paradigm.md | Key semantics across the module library; per-module key bindings. |
Shapes a cartridge can take
Section titled “Shapes a cartridge can take”| Doc | Scope |
|---|---|
capability-shapes.md | A capability is a grammar or a mini-game. Both are (load-capability …) targets returning the same result struct; the cart chooses and missions mix. |
verb-partition.md | How a cart’s Tier-2 action verbs split into CORE primitives, COMPOSITE, and VOCAB-only, by state-mutation footprint. |
maps.md | Tile maps: terrain glyphs on a grid larger than the screen, panned by a fine-scroll viewport, with a .map format and legend. Monochrome resolves to dither, never colour. |
roguelike-design.md | The Berlin Interpretation factored into knobs, the First Law, line of sight as the core grid primitive, the constrained-glyph bestiary, keyboard-first aids. Carries the Tunnel Rat candidate concept. |
cart-label-taxonomy.md | Physical cartridge labelling. |
Sound and canned content
Section titled “Sound and canned content”| Doc | Scope |
|---|---|
music.md | PSG-only ambient music: tracker format, Lisp playback primitives, coexistence with SFX. |
knamp-stations.md | The WavAmpster station package format (playlist manifest plus raw-PCM track layout), shared by the sdk tool, the built-in stations, and carts. Real PCM rather than PSG. |
clip-system.md | Pre-rendered terminal animation: cutscenes, loaders, faked compute, attract. |
Design workbenches
Section titled “Design workbenches”Single-purpose local web tools, one SQLite file each, under ~/.claude/workbenches/. Each starts from its own directory and serves on a fixed port. They hold design work that feeds the documents above; the kn86-ascii capture is where ascii-design-system.md came from.
| Bench | Port | What it produces |
|---|---|---|
kn86-ascii | 7797 | Pattern library: 610 captured ASCII patterns plus the animation shelf. Source of the design system. |
kn86-composer | 7756 | Screen-spec records previewed live through the real C renderer. Edits go through its API, since SQL alone does not re-render. |
kn86-aux | 7752 | CIPHER-LINE mockups: the design system carried to the 256×64 panel. |
kn86-ambercalc | 7781 | Slot-by-slot element selection against a real screen, one change per candidate. |
kn86-board-design | 7743 | Mission Board layout direction. |
kn86-screens | 7740 | Screens built character by character and wired into flows. Superseded by kn86-composer. |
kn86-tracker | 7769 | .knm PSG compositions, edited or generated, auditioned through a kn86psg binary. Thirteen tunes exported to runtime/tools/kn86psg/tunes/. |
kn86-sfx | 7747 | One-shot game SFX synthesized on the real PSG through a millisecond-timed register scheduler. |
kn86-barks | 7799 | Computed voice barks from formant synthesis, with no recordings. |
kn86-inspo | 7735 | The inspiration corpus: categorize by mechanism, assign sources to destinations. Source of cart-inspiration-map.md. |
kn86-verbs | 7700 | The Tier-2 verb-taxonomy map. |
kn86-devdoc | 7751 | development-document.md reviewed at paragraph scale. |
kn86-prfaq | 7772 | The working-backwards launch doc, section by section. |
kn86-program-specs | 7745 | Markup over the first-party program specs. |
kn86-arch | 7779 | Architecture-decision co-authoring. |
kn86-site-markup | 7759 | Click-to-annotate the marketing site against its live dev server. |
Two things these benches imply have no home in this tree: a cartridge art and animation editor (durdraw is the reference model, and the clip system is the playback half it would feed), and a settled answer on whether cartridge authoring tools run in a browser or on the device.
Related
Section titled “Related”../modules/: per-module gameplay specs, under revision.../design-bibles/: the verb-taxonomy map and the mission-type catalog.../../runtime/orchestration.md: the capability model.../../runtime/economy-model.md: the economy authority, covering element classes, faucet and sink pairs, and feel targets.../../runtime/aethernet.md: the world model, covering visibility, the ICE classes, and each cartridge’s narrative contribution.../../runtime/world-engine.md: the one generated world that carts are lenses over.../../api-reference/nosh-api/: the NoshAPI FFI primitives carts call.../../api-reference/grammars/: the.kn86container format.- KEC Lisp: the language reference.
../../../adr/ADR-0001-embedded-lisp-scripting-layer.md: the Lisp authoring decision.../../../adr/ADR-0007-scripted-mission-ffi.md: scripted mission FFI.../../../influences/inspiration/playdate-sdk-pulp.md: the closest peer product’s two authoring tracks, an SDK and a click-and-place editor, meeting at one file format.