Files

54 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TestLevel (world 9)
The game has a hidden ninth world, **TestLevel**, with 49 chapter slots – but the retail CD ships
no data for it. It is the natural home for custom levels: originals stay untouched, and the world
map can reach it once a save game unlocks it. Every LlamaMod level mod, the Test World and the
Alligator Arena are installed as `wads/T1L9M0nn.wad` with a loading picture `T19n.COR`.
Code: [`save/TestLevelChapters.java`](../../src/main/java/com/eliasmueller/llamamod/save/TestLevelChapters.java),
lab notes: [notes/testlevel-chapters.md](../../notes/testlevel-chapters.md).
## Use chapters 1 and 32–49
The game keeps per-chapter coin counters and flag bytes in arrays that only have rows for worlds
0–8 (index `world · 6 + chapter`). For world 9, chapters 2–31 land on **other game variables**:
| Chapter | What its coin counter / flag byte overwrites |
|---|---|
| 1 | nothing (free) |
| 5–8 | the last played tribe/world/chapter/map |
| 6–9 (flags) | the **language index** |
| 9 | the **furthest progress** – the world map breaks |
| 10–31 | options, HUD state and tables used by the original levels |
| **32–49** | tables of tribes 2 and 3, which the game never uses – free |
So custom levels use **chapter 1 or 32–49**. The editor only offers these, new projects take the
first free chapter from 32, and old projects on other chapters are moved automatically.
LlamaMod additionally relocates both arrays to a 128-entry buffer in unused space of `groove.exe`
(base exe patch, revision 2), so even picking an empty chapter on the world map is harmless with
LlamaMod's executable. Mods still keep to 1 and 32–49 so they also work with an unpatched exe.
Save games are unaffected: a save after finishing a normal or TestLevel chapter is byte-identical
with and without the relocation, and only the 54 entries of worlds 0–8 are saved.
## Making world 9 reachable
* **Empty chapters must exist.** Finishing chapter *n* unlocks chapter *n* + 1, and the world map
crashes ("Couldnt load wad") when a selectable chapter has no file. LlamaMod links every missing
`T1L9M002…049.wad` to an installed world-9 WAD and `T192…T1949.COR` to `T191.COR`.
* **Never exit to (7, 7, 7).** "World finished" in world 9 unlocks a world 10 that has no name;
the game crashes after saving. Exits in TestLevel point to (1, 9, chapter).
* **Get there:** set a save game's map cursor to world 9 (`llamamod --unlock <slot> 9 <chapter>
--cursor`, the launcher's *Save games* tab), or use the *Boot to level* mod / the editor's
play-test, which start the game directly in the level.
## Tally totals
The tally screen after the exit shows "coins collected *x* / *total*". *Total* is not counted by
the game – it is the **LNFO** chunk (`u32 coins, u32 secrets`). A new level built on the village
would show the village's 55. LlamaMod recounts it for new levels (Coin = 1, Coin5 = 5, Secret
objects; the arena adds its dynamic coins).
Cosmetic leftovers: the world map shows no background for world 9 and a garbage coin target, and
the loading screen says "TestLevel Kapitel *n*".