feat(saves): kokiri-start, a save right after the opening #610

Merged
HumanBean merged 1 commit from HumanBean/Longshot:feat/save-kokiri-start into main 2026-11-15 04:33:36 +00:00
Owner

Type: feat · Risk: low · Tested on: Linux, RX 580 (RADV) · Needs: none

Why

#543 made room for saves in the repository, but there are none yet, so the Test Farm, the tests and anyone else still have to play through the opening to get a run started in the game. This adds the first one: a new game right after the opening, Link in his house in Kokiri Forest with control just given, the earliest point a run can start playing from.

What changed

The repository's first save, kokiri-start, made fresh from an empty profile and scrubbed with longshot_saves.py scrub, plus its line in the saves' README.

  • assets/saves/kokiri-start/slot_00/: progress.sav (the game's save, unchanged) and caption.sav (its picture mid-grey, its date 2026-01-01 00:00). No account.sav or option.sav.
  • assets/saves/kokiri-start/README.md: where the save stands (its first line, which longshot_ctl.py saves --repo shows) and how it was made.
  • assets/saves/README.md: a table of the saves in place of "There are no saves here yet".

How it was made, on the AMD lab PC (Linux, RX 580, RADV; Longshot v3.0.0-rc.2-1-g839e85ff): longshot_ctl.py launch <game> --data <empty folder> --headless (Skip opening off), New Game on the title, the opening played through with no input, and the game's own autosave, written the moment Link is given control in his house (scene KokiriForest, map KokiriForest/KokiriForest_Child, 3 hearts). Nothing else was done in the game. That slot was scrubbed on the lab PC, so the original Load-screen picture never left it:

caption.sav: the save date (month at 280): 11 -> 1
caption.sav: the save date (day at 312): 14 -> 1
caption.sav: the save date (hour at 328): 18 -> 0
caption.sav: the save date (minute at 304): 43 -> 0
caption.sav: the save date (second at 288): 14 -> 0
caption.sav: the picture at 1396 (JPEG 543x306, 34396 bytes) replaced by a mid-grey JPEG 543x306 of 3345 bytes
caption.sav: 35792 -> 4741 bytes; the rest of its header kept as it was (scene KokiriForest, map KokiriForest/KokiriForest_Child)
progress.sav: copied unchanged

The save holds no game data (no romfs or exefs content): check-repo-saves passes, and the files' readable strings are only the game's own names (KokiriForest/KokiriForest_Child, Meet_DekuTree, Item_Wallet_Small and the like), with no paths, user names or anything from the PC.

Measurements

Nothing to measure: this adds a save and a README line, no code; it is checked by check-repo-saves, the saves' tests and a load in the game (Testing).

Flags and settings

None

Testing

Tested:

  • python -I scripts/longshot_saves.py check-repo-saves: assets/saves passes: 1 repo save(s).
  • tests/test_longshot_saves.py (63 tests, OK, 1 skipped: Windows only) and tests/test_longshot_ctl.py (44 tests, OK, test_repo_save_launch included), on Linux.
  • python -I -B tests/run_all.py on the lab PC (Linux, from a copy of the tree): 502 passed, 13 failed, 63 skipped; the same 13 fail on main in the same copy (they need the git checkout or tools that copy hasn't): test_lift_cleanup_error, test_make_game_cache, byte-compile every tracked .py, test_cpm_discovery, test_crash_dialog, test_dev_packs, test_env_on, test_appimage_player_build, test_linux_preflight, test_readback_late, test_vk_pgo, test_vram_budget_row, test_walk_key.
  • In the game, on the lab PC (Linux, RX 580, RADV, headless): longshot_ctl.py launch <game> --data <empty folder> --headless --repo-save kokiri-start copied only slot_00/ in. The title offered Continue; the Load screen showed the slot with a plain grey picture, "1/1/2026 12:00 a.m.", Kokiri Forest, 3 hearts, Autosave; loading it put Link in his house in Kokiri Forest (state play, map KokiriForest_Child, no event playing, the Move prompt up).

Not tested: Windows (the save is the game's own files, the same on both; launch --repo-save is covered by #543's tests).

Must be tested: None

Risks

What could break: Nothing in the game or the build: two save files and README text, read only by launch --repo-save and check-repo-saves.

Turning it off: revert the commit.

Compatibility: Nothing changes for a player.

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main.
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Docs updated.
**Type:** feat · **Risk:** low · **Tested on:** Linux, RX 580 (RADV) · **Needs:** none ## Why #543 made room for saves in the repository, but there are none yet, so the Test Farm, the tests and anyone else still have to play through the opening to get a run started in the game. This adds the first one: a new game right after the opening, Link in his house in Kokiri Forest with control just given, the earliest point a run can start playing from. ## What changed The repository's first save, `kokiri-start`, made fresh from an empty profile and scrubbed with `longshot_saves.py scrub`, plus its line in the saves' README. - `assets/saves/kokiri-start/slot_00/`: `progress.sav` (the game's save, unchanged) and `caption.sav` (its picture mid-grey, its date 2026-01-01 00:00). No `account.sav` or `option.sav`. - `assets/saves/kokiri-start/README.md`: where the save stands (its first line, which `longshot_ctl.py saves --repo` shows) and how it was made. - `assets/saves/README.md`: a table of the saves in place of "There are no saves here yet". How it was made, on the AMD lab PC (Linux, RX 580, RADV; Longshot v3.0.0-rc.2-1-g839e85ff): `longshot_ctl.py launch <game> --data <empty folder> --headless` (Skip opening off), New Game on the title, the opening played through with no input, and the game's own autosave, written the moment Link is given control in his house (scene KokiriForest, map KokiriForest/KokiriForest_Child, 3 hearts). Nothing else was done in the game. That slot was scrubbed on the lab PC, so the original Load-screen picture never left it: ``` caption.sav: the save date (month at 280): 11 -> 1 caption.sav: the save date (day at 312): 14 -> 1 caption.sav: the save date (hour at 328): 18 -> 0 caption.sav: the save date (minute at 304): 43 -> 0 caption.sav: the save date (second at 288): 14 -> 0 caption.sav: the picture at 1396 (JPEG 543x306, 34396 bytes) replaced by a mid-grey JPEG 543x306 of 3345 bytes caption.sav: 35792 -> 4741 bytes; the rest of its header kept as it was (scene KokiriForest, map KokiriForest/KokiriForest_Child) progress.sav: copied unchanged ``` The save holds no game data (no romfs or exefs content): `check-repo-saves` passes, and the files' readable strings are only the game's own names (`KokiriForest/KokiriForest_Child`, `Meet_DekuTree`, `Item_Wallet_Small` and the like), with no paths, user names or anything from the PC. ## Measurements Nothing to measure: this adds a save and a README line, no code; it is checked by `check-repo-saves`, the saves' tests and a load in the game (Testing). ### Flags and settings None ## Testing **Tested:** - `python -I scripts/longshot_saves.py check-repo-saves`: `assets/saves passes: 1 repo save(s)`. - `tests/test_longshot_saves.py` (63 tests, OK, 1 skipped: Windows only) and `tests/test_longshot_ctl.py` (44 tests, OK, `test_repo_save_launch` included), on Linux. - `python -I -B tests/run_all.py` on the lab PC (Linux, from a copy of the tree): 502 passed, 13 failed, 63 skipped; the same 13 fail on `main` in the same copy (they need the git checkout or tools that copy hasn't): `test_lift_cleanup_error`, `test_make_game_cache`, byte-compile every tracked .py, `test_cpm_discovery`, `test_crash_dialog`, `test_dev_packs`, `test_env_on`, `test_appimage_player_build`, `test_linux_preflight`, `test_readback_late`, `test_vk_pgo`, `test_vram_budget_row`, `test_walk_key`. - In the game, on the lab PC (Linux, RX 580, RADV, headless): `longshot_ctl.py launch <game> --data <empty folder> --headless --repo-save kokiri-start` copied only `slot_00/` in. The title offered Continue; the Load screen showed the slot with a plain grey picture, "1/1/2026 12:00 a.m.", Kokiri Forest, 3 hearts, Autosave; loading it put Link in his house in Kokiri Forest (state play, map KokiriForest_Child, no event playing, the Move prompt up). **Not tested:** Windows (the save is the game's own files, the same on both; `launch --repo-save` is covered by #543's tests). **Must be tested:** None ## Risks **What could break:** Nothing in the game or the build: two save files and README text, read only by `launch --repo-save` and `check-repo-saves`. **Turning it off:** revert the commit. **Compatibility:** Nothing changes for a player. ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Docs updated.
feat(saves): kokiri-start, a save right after the opening
All checks were successful
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 5s
CI / Workflow lint (actionlint) (pull_request) Successful in 7s
Third-party parts / As their notes say (pull_request) Successful in 10s
PR description / Description follows the template (pull_request_target) Successful in 6s
143bfacc53
The repository's first save: Kokiri Forest, Link's house, right after the
new-game opening, the moment the player is given control. Made from an
empty data folder on the AMD lab PC (the opening played through, the
game's own autosave at that moment), scrubbed with longshot_saves.py
scrub; check-repo-saves passes. Listed in assets/saves/README.md.

Assisted-by: Claude Code
Co-Authored-By: Claude Opus 5.5 <[email protected]>
HumanBean changed title from WIP: feat(saves): kokiri-start, a save right after the opening to feat(saves): kokiri-start, a save right after the opening 2026-11-14 23:53:44 +00:00
HumanBean deleted branch feat/save-kokiri-start 2026-11-15 04:33:36 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!610
No description provided.