Edit subtitles and menu text

This commit is contained in:
2026-10-09 22:36:46 +02:00
parent 5d6c2447f7
commit ef68edbe45
40 changed files with 105877 additions and 1291 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,8 @@
|------|---------|
| `<ARCHIVE>.csv` | every sound of one audio archive: `ITA`, `INT`, `FRA`, `DEU`, `ESN` (speech WADs, one per language), `SFX` (music, ambience and effects streamed from the SFX WAD) and `BANK` (in-memory sounds stored inside soundbanks: footsteps, foley, combat, weapons, UI, efforts; `docs/formats/banks.md`) |
| `BANK_locations.csv.gz` | every stored copy of the `BANK` sounds, and the prefetch heads of speech lines (below) |
| `SUB_<LANG>.csv` | subtitles of the speech lines, one file per language (11 languages; `docs/formats/subtitles.md`) |
| `SUB_locations.csv.gz` | every stored copy of each subtitle string (dialogue objects in the packages) |
| `characters.csv` | `name,character`: verified speaker per sound name (language independent) |
| `index.json` | per archive: fingerprint of the game files the CSV was built from (`ackit/game.py: wad_fingerprint`, `ackit/banks.py: game_fingerprint`) and counts |
| `source/<lang>/*.txt` | **the curated original lists** (one file per character, one wemscan-style file name per line, e.g. `Speech_TAPE_JOKER_1_4.wem`). `Files.txt` = all files, `Stats.txt` = counts, `Checkpoint.txt` = progress marker. Never edited by tools. |
@@ -40,6 +42,19 @@ All CSVs are UTF-8 with a header row. They contain only names and metadata (no g
A replacement is written into every `m` copy of a BANK sound; replacing a speech line also rewrites its `p`
heads (`docs/formats/banks.md`).
## `SUB_<LANG>.csv` columns
| column | meaning |
|--------|---------|
| `speech` | the speech event of the line (e.g. `Speech_CHURCH_B1_Ch2_POST_Explosion_BM_Cash_04`) |
| `line` | 0-based line of a multi-line subtitle |
| `text` | original subtitle text |
| `room` | maximum length of a replacement in characters (it is written in place) |
| `enc` | `a` = cp1252 string, `w` = UTF-16 string |
| `sound` | key of the linked speech sound (this language's WAD, or `INT:` for languages without speech WADs); empty when no event reaches a sound |
`SUB_locations.csv.gz`: `lang, speech, line, file, pos` (hex, uncompressed offset of the FString), `size`, `enc`.
Menu text has no catalog: the localization files are read directly (`docs/formats/text.md`).
The editor uses these files directly when the installed game matches `index.json`; for another game build it
scans the game itself and applies the same rules (no checksums then; the bank scan takes a few minutes).
`ackit verify --catalog` cross-checks the catalog in use against the game files (`--quick` samples packages).

9639
data/catalog/SUB_DEU.csv Normal file

File diff suppressed because it is too large Load Diff

9477
data/catalog/SUB_ESM.csv Normal file

File diff suppressed because it is too large Load Diff

9469
data/catalog/SUB_ESN.csv Normal file

File diff suppressed because it is too large Load Diff

9541
data/catalog/SUB_FRA.csv Normal file

File diff suppressed because it is too large Load Diff

9380
data/catalog/SUB_INT.csv Normal file

File diff suppressed because it is too large Load Diff

9353
data/catalog/SUB_ITA.csv Normal file

File diff suppressed because it is too large Load Diff

9017
data/catalog/SUB_JPN.csv Normal file

File diff suppressed because it is too large Load Diff

9230
data/catalog/SUB_KOR.csv Normal file

File diff suppressed because it is too large Load Diff

9353
data/catalog/SUB_POL.csv Normal file

File diff suppressed because it is too large Load Diff

9451
data/catalog/SUB_POR.csv Normal file

File diff suppressed because it is too large Load Diff

9470
data/catalog/SUB_RUS.csv Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -73,7 +73,7 @@
},
"copies": 93910,
"files": 1499,
"named_by_event": 6416,
"named_by_event": 6456,
"prefetch_heads": {
"lines": 396,
"copies": 2101,
@@ -81,5 +81,37 @@
},
"issues": []
},
"SUB": {
"fingerprint": "3f9766af425b8eef",
"lines": {
"DEU": 9638,
"ESM": 9476,
"ESN": 9468,
"FRA": 9540,
"INT": 9379,
"ITA": 9352,
"JPN": 9016,
"KOR": 9229,
"POL": 9352,
"POR": 9450,
"RUS": 9469
},
"speech_lines": 9016,
"linked": {
"DEU": 8884,
"ESM": 8712,
"ESN": 8741,
"FRA": 8790,
"INT": 8637,
"ITA": 8623,
"JPN": 8318,
"KOR": 8510,
"POL": 8613,
"POR": 8700,
"RUS": 8724
},
"copies": 168122,
"issues": []
},
"_info": "unmodified game files"
}