Version 3.2.2: in-memory replacements fill their slots exactly (padded ones played as silence)
This commit is contained in:
@@ -111,10 +111,16 @@ and the game ties the recordings together itself:
|
||||
- Catalog archive `BANK` (one row per media ID) + `data/catalog/BANK_locations.csv.gz` (every copy, and the
|
||||
heads and whole copies of WAD speech recordings); built by `tools/build_catalog.py`, checked by `ackit verify
|
||||
--catalog`.
|
||||
- A replacement is written **in place into every copy** (no larger than the smallest copy, zero-padded), so
|
||||
DIDX/HIRC offsets and sizes and the package layout never change. Loose banks are patched directly; in
|
||||
packages only the touched blocks are re-encoded (`upk.md`). A sound left in one package only would let the
|
||||
game load the original from another one.
|
||||
- Replacing a speech line that has prefetch heads or whole copies rewrites them (the first bytes of the new,
|
||||
zero-padded line; for a whole copy, all of it).
|
||||
- A replacement is written **in place into every copy** (no larger than the smallest copy), so DIDX/HIRC
|
||||
offsets and sizes and the package layout never change. Loose banks are patched directly; in packages only
|
||||
the touched blocks are re-encoded (`upk.md`). A sound left in one package only would let the game load the
|
||||
original from another one.
|
||||
- **Each copy is filled exactly**, never zero-padded: every in-memory WEM the game ships ends exactly at its
|
||||
slot's end, and the game plays a replacement followed by zero padding there as **silence** (findings 24:
|
||||
footsteps replaced that way were silent in game; filled, they play). A smaller replacement is grown to the
|
||||
slot size with a label list chunk before `data` (`LIST{adtl, labl}`, the form the game's own WEMs use for
|
||||
markers; `ackit/wem.py: fill`), so the encoder leaves at least 26 spare bytes, an even number.
|
||||
- Replacing a speech line that has prefetch heads or whole copies rewrites them: a head gets the first bytes
|
||||
of the new, zero-padded line (the start of the streamed WEM as the WAD stores it); a whole copy is filled
|
||||
like an in-memory sound.
|
||||
- Design and revert rules: `docs/decisions.md` (4b). The same WEM rules apply (`wem.md`).
|
||||
|
||||
Reference in New Issue
Block a user