32 lines
2.0 KiB
Markdown
32 lines
2.0 KiB
Markdown
# Boot to level (`boot-to-level`, GAMEPLAY)
|
||
|
||
`mods/boottolevel/BootToLevelMod` – starts the game directly in one level: no logos, no menus,
|
||
no world map. Used by the level editor's Play button (details, offsets and tests:
|
||
`editor-playtest.md`).
|
||
|
||
| Option | Default | |
|
||
|---|---|---|
|
||
| `world` / `chapter` | 1 / 1 | level to load (world 9 = TestLevel, chapters 1–49) |
|
||
| `slot` | 3 | save slot the game plays with (new game if empty) |
|
||
| `logos` | on | skip logo movies and title screen (skipped if intro-skip already patched them) |
|
||
| `quitOnEscape` | off | Escape (pause) ends the game at once through the normal exit path |
|
||
| `start` | empty | "x, y, z[, yaw][ @ world/chapter]" in cells: moves the level's player start (WAD rebuild) |
|
||
|
||
**Start bound to a level** (2026-11-07): a start with "@ world/chapter"
|
||
(`BootToLevelMod.formatStart(world, chapter, …)`) is used only while `world`/`chapter` name that
|
||
level; for any other level it is ignored with a progress note ("Player start ignored: it was set
|
||
for world W chapter C") instead of failing with "no collision floor" (a play-test whose restore
|
||
never ran left its start in config.json, and every later apply for another level failed). A start
|
||
without "@" applies to whatever level is chosen (old configs, hand-typed values) and is still
|
||
checked strictly. Tests: `BootToLevelModTest.startOfAnotherLevelIsIgnored`, `parsesStartLevel`.
|
||
The editor's play-test (`PlaytestRunner.install`) should write the bound form – see the report.
|
||
|
||
Patches: `jmp` at 0x549C50 (main-menu frame handler) → once: read slots (FUN_0041c0e0), load
|
||
slot (FUN_0041cc70), set tribe/world/chapter/map 0x584EB4…, music shutdown, state 0x5846E4 = 3,
|
||
return 1. `quitOnEscape`: `jmp` at 0x549F40 (in-game frame handler): pause bit 0x8 of 0x5FCF08 →
|
||
state 0x11 (the main menu's "Beenden"), return 1. Data: one 4-byte `allocateData` flag.
|
||
Registered via ServiceLoader (`META-INF/services/com.eliasmueller.llamamod.mods.Mod`).
|
||
|
||
Verified on display :9: Village 2 and TestLevel 2 load within seconds of the window; Escape
|
||
ends groove.exe in ~1.3 s without errors.
|