diff --git a/packages/studio/data/projects/codex-tetris/DESIGN.md b/packages/studio/data/projects/codex-tetris/DESIGN.md new file mode 100644 index 000000000..d4b6a410e --- /dev/null +++ b/packages/studio/data/projects/codex-tetris/DESIGN.md @@ -0,0 +1,29 @@ +## Style Prompt + +Retro gaming CRT aesthetic. Phosphor green terminal glow on deep space-dark backgrounds. +Pixel-perfect grid layouts with scanline overlays. Neon accents for alerts and scores. +The feeling of a 1989 Game Boy boot sequence crossed with cyberpunk data visualization. +Everything snaps, nothing floats. Digital precision with analog warmth from CRT glow. + +## Colors + +- Background: `#0B0E17` (deep space dark) +- Foreground: `#E8E6E3` (warm white) +- Accent 1: `#00FF41` (phosphor green — primary game UI, grid, cursor trail) +- Accent 2: `#FF2E63` (hot magenta — alerts, score highlights, game over) +- Accent 3: `#08F7FE` (electric cyan — Penrose cursor, UI chrome) +- Grid: `#1a1f2e` (subtle grid lines on tetris board) +- Piece colors: cyan `#08F7FE`, yellow `#FFD670`, purple `#B5179E`, green `#0EAD69`, red `#FF2E63`, orange `#FF9770`, blue `#4E71FF` + +## Typography + +- Display: `"Press Start 2P"` (pixel font for game headers, score, GAME OVER) +- UI/labels: `"JetBrains Mono"` (monospaced for stats, debug text, timestamps) + +## What NOT to Do + +- No gradient text or background-clip effects +- No rounded, soft, or friendly shapes — everything sharp, grid-locked, rectangular +- No warm ambient tones — only brief flashes of warm color on line-clear SFX +- No slow luxury-style motion — everything snappy, digital, precise +- No centered-and-floating web layouts — anchor to CRT frame and grid structure diff --git a/packages/studio/data/projects/codex-tetris/bake-audio.ts b/packages/studio/data/projects/codex-tetris/bake-audio.ts new file mode 100644 index 000000000..9b9142f51 --- /dev/null +++ b/packages/studio/data/projects/codex-tetris/bake-audio.ts @@ -0,0 +1,319 @@ +/** + * Offline audio baking for Codex Tetris composition. + * + * WebAudio synth (oscillators, noise) can't be captured by HyperFrames' + * headless renderer — it only picks up file-based