Port the introduction's naming and clock screens
Checks / web (push) Canceled after 0s

A new game now runs NewGame's InitGender and OakSpeech natively before
the bedroom: Boy or Girl, InitClock's hour and minute steppers with
their YES/NO confirmations, Oak's speech with Wooper, and NamePlayer's
preset names or naming field (a blank name takes CHRIS or KRIS). Texts,
menus and time strings come from a new INTRO profile table verified by
check:reference; Oak's and the player's pictures decode from
TrainerPicPointers, ChrisPic/KrisPic and TrainerPalettes.

The chosen time is kept as a minute offset from the device clock, which
time of day, the weekday, NPC hours and the daily reset now read. The
intro runs only when nothing is saved; a save made during it starts it
again. Saves gain intro and clock.minuteOffset, migrated by absence. The
shell's name and character fields are gone. Intentional change: the
steppers start at the device time rather than 10:00.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sébastien QUEROLandClaude Opus 5.5 committed 2026-09-30 09:53:52 +02:00
1 parent 5a0fe1e313
commit b13fd20be4
28 files changed
+975 -101

No files matched your search

+37 -1
View File
@@ -1,6 +1,6 @@
# Recovered Claude session
Latest continuation: see **The PC and boxes: 2026-09-25** at the end of
Latest continuation: see **The introduction's naming and clock: 2026-09-25** at the end of
this file. Earlier sections are historical snapshots.
Recovered on 2026-09-23 from the local Claude Code transcript
@@ -475,3 +475,39 @@ Not committed.
Next (PLAN section 2): the introduction's naming and clock screens; player
switching and non-ball items in battle; MOVE PKMN W/O MAIL and the stats
screen with the party menu; a continuous opening playthrough.
## The introduction's naming and clock: 2026-09-25
The PC increment above was committed as `3bdca00`. This increment finishes
the next open item of PLAN section 2.
- `scripts/intro.ts` (`IntroRun`): `InitGender`, `OakSpeech` with
`InitClock` and `NamePlayer`, as a native generator the world runs like a
script (`GameWorld.beginIntro`). Texts, menus, preset names and time
strings come from the ROM through a new `INTRO` profile table verified by
`check:reference`.
- New effects: `portrait` (Oak's trainer picture or the player's, decoded
by `PokemonData.trainerPic`, `playerPic` and `trainerPalette`) and a
`clock` stepper choice.
- Game clock: `clock.minuteOffset` is added to the device time for time of
day, weekday, NPC hours and the daily reset. The host's `deviceWeekday`
became `clockDay`.
- `GameSession.load` calls the runtime's optional `newGame()` when nothing
is saved. Saves gained `intro` (true while pending; a save made then
restarts the introduction). The shell's name/character fields are gone.
- Browser fixture specs strip `this.world?.beginIntro();` from the served
runtime, since their worlds stand in for saved sessions. Fresh-load tests
play the intro with `tests/intro-driver.ts`.
Not presented: palette fades, Wooper's cry, the picture slide while
naming, `ShrinkPlayer` and music. Intentional change: the steppers start at
the device time instead of 10:00.
Checks: 298 unit tests with the local ROM; native and reference builds;
reference, vendor and release checks; `git diff --check`; 87
Chromium/WebKit browser tests passed, 19 skipped intentionally (including
the new intro flow and a reload during it, in both browsers). Not committed.
Next (PLAN section 2): player switching and non-ball items in battle; MOVE
PKMN W/O MAIL and the stats screen with the party menu; a continuous opening
playthrough.