List and edit in-memory sounds in soundbanks
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
|
||||
Most short sound effects (footsteps, foley, combat, weapons, objects, UI, grunts) are **not in the WADs**: they
|
||||
are WEMs stored inside Wwise soundbanks, either loose in `SFX\*.bnk` or embedded in the UE3 packages (`.upk`).
|
||||
The catalog and the editor only cover the WADs (`wad.md`), so none of these sounds are listed or editable yet.
|
||||
Survey of the installed game (buildid 3718300) on 2026-10-09, read-only.
|
||||
ackit lists them as the catalog archive `BANK` and writes them (see the end of this page).
|
||||
Survey of the installed game (buildid 3718300), 2026-10-09.
|
||||
|
||||
## Inventory
|
||||
|
||||
@@ -60,11 +60,12 @@ WAD sounds have such heads (2,101 copies); replacing one of them must rewrite th
|
||||
- Largest: `CHR_RobinFoleyCape` 300 WEMs, `CHR_BatmanFoleyCape` 282, `CHR_Clayface` 263,
|
||||
`CHR_NightwingFoley` 242, `CHR_CatwomanFoleySuit` 225, `CHR_MrFreeze` 176, `CHR_Combat` 166.
|
||||
|
||||
## Consequences for editing (not implemented)
|
||||
- **Loose banks**: a replacement means rebuilding `DATA`/`DIDX` and the in-memory offsets/sizes in the HIRC
|
||||
Sound objects of that bank (and in any other bank whose sources use its media). Whether the game accepts a
|
||||
bank that changed size is untested.
|
||||
- **Embedded banks**: the package must be rewritten (decompress, patch every blob of the bank, recompress
|
||||
LZO, fix the package's chunk table and export offsets/sizes). A sound must be replaced in **every** package
|
||||
that carries a copy, otherwise the game may load the original from another package.
|
||||
- Either way: unverified in game so far; the same WEM rules apply (`wem.md`).
|
||||
## How ackit edits them
|
||||
- Catalog archive `BANK` (one row per media ID) + `data/catalog/BANK_locations.csv.gz` (every copy, and the
|
||||
prefetch heads of speech lines); 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 rewrites the heads (first bytes of the new, zero-padded line).
|
||||
- Design and revert rules: `docs/decisions.md` (4b). The same WEM rules apply (`wem.md`).
|
||||
|
||||
Reference in New Issue
Block a user