The title screen now cycles every 7s like a real cabinet:
0 SELECT — logo + portrait class cards (playable page, maze visible behind)
1 STORY — the closing-down shop painting + the last-night premise
2 BESTIARY — 8 grunts with names ("they are not here for the music")
3 BOSSES — the 5 unkillables ("the airhorn does not work on everything")
4 ARCHIVE — the descending-staircase painting + the White Label
5 SCORES — hall of fame, or "NO NAMES ON THE WALL YET"
Any key or tap snaps back to page 0; keys 1-4 start the game from any page, so
the attract loop never costs you a coin. Info pages get a dimmed backdrop and
label backgrounds so art reads instead of fighting the maze behind it.
Wires up attract_shop + attract_archive (generated in batch 3, never used).
Bug caught while verifying: the backdrop was pushed into 5 page arrays, but the
per-page visibility loop sets each object true for its page then false again for
every later page — last write wins, so it never appeared. Shared objects can't
live in the page arrays; it's toggled explicitly in showAttract now.
Verified: full 0-1-2-3-4-5-0 cycle runs unattended, any-key returns to select,
1-4 starts from any page with the right class sprite, no console errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Texture audit found the real weakness: one wall texture repeated up to 316x per
maze, so levels read as wallpaper. Generated 26 more images on MODELBEAST (free,
local) and wired what was already sitting unused.
- 4 wall variants per theme (24 total), picked by a stable hash of tile position:
neighbours differ, but a given tile keeps its texture across rebuilds
- 8 floor decals scattered on open tiles (5% density, seeded per level, tinted
back to 0.45 alpha so litter never competes with sprites)
- Classes now have distinct SPRITES instead of colour tints (the 3 player
variants were generated in batch 3 and never wired)
- Scalper (hunts gold only, flees with it) joins club/festival spawn tables;
Fire Marshal (2nd wall-phasing stalker) appears in procgen from level 7
- Readability fix: CLUB NIGHT's fine checker floor read as noise under sprites.
Regenerated a coarse one + per-theme floorTint so busy floors get knocked back.
- process_sprites skips not-yet-generated files instead of crashing the batch
39 -> 73 game textures. All verified in-browser: 316-wall maze splits evenly
across 4 variants, deterministic across rebuilds, per-class sprites, scalper
ignores espresso for gold, 71/71 assets load clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Title: FLUX marquee logo + 4 portrait class-select cards (keys 1-4 or tap)
- Themes 4-5: WAREHOUSE RAVE (shazam zombie turrets firing slow requests,
gatekeeper tanks) and FESTIVAL GROUNDS (wobbling warped records); tune pools
extracted for both (acid/tech-house/minimal, trance/big-beat/prog) -> 1008 tunes
- Spectral Conductor boss (level 8 of each 12-cycle): 20 HP, teleports to a
corner every 5 hits, doubles generator rate + 1.5x enemy speed while alive
- The Monstrous 78 RPM (level 12): 30 HP, bounces Pong-style, spits warped
shards, only vulnerable while "changing sides" (dimmed); killing it reveals
THE WHITE LABEL (??? - ???) in the notebook and starts NG+ density
- Boss arenas have no exit until the boss falls - the booth appears where it died
- Fix: makeGlow crashes on scene restart (createCanvas returns null if key exists)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Digging: hold E (or DIG touch button) by a crate wall, 2s rooted channel, once
per tile. Loot: 70% +200 vibe, 25% gold record, 4% grail (full vibe), 1%
bootleg (every bin on the level erupts).
- Treasure rooms: every 3rd level, 20s bonus room strewn with gold, no enemies,
booth exits instantly, "CLOSING TIME" when the timer dies.
- THE ARCHIVE (4th theme): FLUX-generated dark tileset, real darkness via
RenderTexture with radial glow holes at player + lamps, dust mites spawn in
packs of 3, Mite Queen miniboss (12 HP, broods mites every 5s, airhorn-immune,
drops 3 gold + 1000 pts). Archive tune pool: 195 dnb/hardcore/breakbeat/
electro 12"s (718 total tunes now).
- Infinite: levels past the 4 authored maps are deterministic seeded mazes
(recursive backtracker + loops + rooms), difficulty scales with depth.
All verified in-browser via engine stepping.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
assets/extract_tunes.py pulls 523 canon tunes (repress-count ranked, club pool
12"-only) into public/tunes.json across shop/fair/club genre pools; top ~8% of
each chunk flagged grail ("CERTIFIED CLASSIC", gold flash, 2000 pts). Level
clear reveals a real record (artist — title, label, year), the announcer speaks
it, and first IDs land in a persistent localStorage notebook (+1000). Title
screen shows notebook progress. Also: overlay/sub text got backgrounds for
readability, and prompt() is guarded for webviews that lack it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerate textures at 48px (chars/walls), 96px floor, with an UnsharpMask to
counter the LANCZOS softening. Bump TILE to 48 so the whole world scales up and
sprites render bigger/crisper; scale movement + range constants x1.5 to keep the
same tiles-per-second feel, and collision bodies to 34px. Mechanics reverified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>