Files
mazegame/projects/kissaten_yugure/docs/CONVERSATION.md
T
jurjen.ladeniusandClaude Opus 5 45749775fa Scaffold Kissaten Yugure; add M2 day spine, plan and script
Stage 1 (shop scene, customer, siphon brew minigame, serve loop) and the
M2 day spine: day counter, three-phase day, event-driven clock, journal
line, and a SaveState with magic/version/checksum.

Saving to disk is NOT working yet. A cartridge ROM can reach the Disk ROM
only from RAM (both PHYDIO and CALSLT switch page 1 out from under the
caller), and ROMDelayBoot is required so the Disk ROM's INIT runs at all.
With both in place the disk is detected, but sector I/O returns carry-clear
without transferring — proven with a sentinel. Probe now verifies the
buffer actually changed, so a non-working disk degrades to "no save"
rather than corrupting anything. Full findings in the project CLAUDE.md.

Also documented: keyboard reads need interrupt protection (the BIOS ISR
scans the matrix too), and BankedCall must stay off until banked data
exists.

Docs: PLAN.md (ten milestones, per-stage requirements, decision queue),
SCRIPT.md (all four character arcs, 60 beats, checked against the
26-character box), and amendment notes in DESIGN.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 21:58:22 +02:00

116 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Design conversation record — Kissaten Yūgure
A record of the original brainstorm and design discussion (Claude ↔ Jurjen,
July 2026) that led to this project. Kept for rationale and context; the
distilled result lives in `DESIGN.md`.
---
## 1. The brief
Jurjen wanted a new MSX2 game idea: **a cozy game targeted mainly at male
adults who love Japanese art and retro games**, built with MSXgl.
Claude's read on the audience: nostalgia for late-80s Japan, quiet melancholy,
craftsmanship, and pixel art in the style of MSX magazine covers / Konami and
Compile titles. The MSX2 itself is a Japanese cultural artifact, so the
platform is part of the appeal. Reference vibe: *A Short Hike* energy,
rendered like an MSX2 classic.
## 2. Four concepts pitched
1. **Showa-era shopkeeper sim** — run a tiny kissaten, sento, or ramen stall
in a sleepy 1980s town. Regulars with small stories, seasons change the
palette (SCREEN 5 palette swaps per season = big atmosphere, low cost).
Simple state machines + dialogue, MSXgl-friendly; PSG/NDP pipeline fits
gentle city-pop-adjacent loops. Hits the demographic dead center.
2. **Bonsai / garden tending game** — shape a tree or karesansui garden over
in-game years via a simple L-system-ish growth model. Minimal input,
maximal zen, sumi-e visuals, persistent growth via save. Smallest and most
distinctive option; nobody has made it on MSX.
3. **Rural train journey game** — conductor/passenger on a one-car local
line; each station is a vignette. Landscapes are the star, but horizontal
scrolling is work on MSX2 (vertical scroll register is free), so it would
need screen-by-screen scenes or parallax-lite. Densha + inaka nostalgia.
4. **Yokai postman / errand game** — cozy-spooky letter delivery between
friendly yokai at dusk. Iconic character material, light fetch-quest
structure, Ghibli / Mizuki Shigeru vibe.
**Recommendation:** #1 or #2, because scope kills hobby projects. #1 had the
strongest emotional hook and marketing appeal ("run a coffee shop on real
MSX2 hardware"); #2 was the most achievable and distinctive.
**Cross-cutting principles:** lean into palette work (MSX2's superpower),
keep text minimal or bilingual-friendly for the Japanese retro community,
and let the MML → NDP music pipeline carry the mood.
## 3. Decision
Jurjen picked **#1, the kissaten sim**. Working title: **Kissaten Yūgure**
("Twilight Coffee Shop") — you inherit a small kissaten in a fictional
provincial town, 1987.
## 4. Design deep-dive (summary — full detail in DESIGN.md)
- **Core loop:** one day ≈ 510 real minutes. Morning prep (menu focus,
radio weather, stock) → open hours (serve + siphon-brew timing minigame +
dialogue with regulars) → evening close (till, journal, save).
- **Cozy contract:** no fail states, no bankruptcy; money gates cosmetic and
menu upgrades (grinder, jazz records, a cat). Progression = story + seasons.
- **Regulars:** 68 characters (retired stationmaster, exam student, manga
artist, widow...), each with 1220 short scenes triggered by day count,
season, weather, or what you serve. Right order at the right moment
advances arcs.
- **Screen layout (SCREEN 5, 256×212):** 16 px status bar (day/season,
clock, ¥) · 132 px shop scene (door, counter with customer sprites,
siphon rig) · 64 px dialogue window (48×48 portrait, 3 lines × 26 chars,
typewriter reveal). Static-heavy on purpose: only sprites move — no
scrolling — the biggest scope-saver in the design.
- **Hardware mapping:** VRAM page 0 = scene bitmap, page 1 = asset warehouse
blitted via HMMM/HMMV. Seasonal palette trick: one background authored
around palette slots (sky in 811, wood tones in 47); each season/time of
day is a 32-byte palette table, optionally lerped across the day. Sprite
mode 2, two layered 16×16 sprites per customer. Portraits 48×48 × 3
expressions — where the pixel-art budget goes.
- **Data model:** tiny `SaveState` (~40 bytes) with day, season, weather,
money, unlock bitmask, and 8 `Regular` structs (arc_stage, affinity,
last_visit_day). Dialogue as data: YAML/JSON compiled by a Node.js tool to
C arrays / binary banks. ASCII16 MegaROM layout from day one.
- **Visitor logic:** weighted table per tick, filtered by season / weather /
time / days-since-last-visit — tunable in a spreadsheet, produces
noticeable patterns ("the stationmaster always comes when it rains").
- **Music:** 68 short cozy PSG loops via the existing MML → NDP →
`ndp_player` pipeline (`generate_mml.js` for AI-assisted MML). Diegetic
jukebox upgrade lets the player pick the shop's track.
- **Scope ladder:** (1) scene + one customer + brew + serve → (2) day cycle
+ save + money → (3) dialogue engine + two regulars ← real milestone →
(4) seasons/weather/palettes → (5) full cast, upgrades, endings. Every
stage playable.
## 5. Moving to Claude Desktop / Claude Code
Jurjen asked about continuing the project in Claude Desktop with context
files. Plan:
- Put a lean **CLAUDE.md** in the project root — Claude Code reads it at the
start of every session. It holds build commands, toolchain quirks (SDCC,
MSXgl paths, openMSX), conventions, and design pillars; kept under ~200
lines, referencing deeper docs instead of duplicating them.
- Full design lives in **docs/DESIGN.md**; this file (**CONVERSATION.md**)
preserves the original discussion and rationale.
- Claude Code's auto memory will additionally accumulate learned corrections
(e.g. bank layout details) over time.
- The dialogue compiler (`compile_dialogue.js`) will live in `tools/` next to
the existing `generate_mml.js`.
## 6. Open threads (not yet designed)
- Dialogue script format spec + compiler implementation
- Brew minigame detailed design
- Palette / day-cycle system implementation details
- Character roster finalization and story arcs
- Bank layout plan for the ASCII16 MegaROM