Bundled inputs that travel with the repo so the iteminfo export pipeline runs out of the box on any machine that has a Crimson Desert install.
| File | What it is | Source | Size |
|---|---|---|---|
keys.txt |
Current-version Crimson Desert itemKey list (one decimal key per line, in in-game order). Tracks the latest game patch — currently 1.12 with 6,483 keys (1.12 added 150 net items vs 1.11). | Dumped from CrimsonDesert.exe process memory via Cheat Engine (see Generation below) |
~55 KB |
keys-1.12.txt |
Snapshot dumped against the live 1.12 install. Byte-identical to keys.txt — kept so a future patch that does reorder keys can still be diffed back against the 1.12 baseline. |
Frozen from the live 1.12 dump | ~55 KB |
keys-1.11.txt |
Snapshot dumped against the live 1.11 install. +8 items vs 1.10; the frozen 1.11 baseline (was byte-identical to keys.txt through the 1.11 series, now superseded by the 1.12 refresh). |
Frozen from the live 1.11 dump | ~54 KB |
keys-1.10.txt |
Snapshot dumped against the live 1.10 install. +11 items vs 1.09; the frozen 1.10 baseline (was byte-identical to keys.txt through the 1.10 series, now superseded by the 1.11 refresh). |
Frozen from the live 1.10 dump | ~54 KB |
keys-1.09.txt |
Snapshot of the 1.09 keys file. Byte-identical to keys-1.08.txt (1.09 was a content-only patch, no item add/remove). |
Frozen from the live 1.09 dump | ~54 KB |
keys-1.08.txt |
Snapshot dumped against the live 1.08 install. +61 items vs 1.07. | Frozen from the live 1.08 dump | ~54 KB |
keys-1.07.txt |
Snapshot of the 1.07 keys file. Byte-identical to keys-1.06.txt (1.07 didn't reorder the key list). |
Frozen from the live 1.07 dump | ~53 KB |
keys-1.06.txt |
Snapshot of the 1.06 keys file kept for cross-version reference / saved-CE-table compatibility. | Frozen alongside the 1.07 snapshot | ~53 KB |
keys-1.05.01.txt |
Snapshot of the 1.05 keys file kept for cross-version reference / saved-CE-table compatibility. Do not regenerate. | Frozen from keys.txt before the 1.06 refresh |
~53 KB |
gamedata-keys-1.08/ … gamedata-keys-1.12/ |
Per-table key snapshots for the 30 non-iteminfo gamedata tables the c_abi bridges read (skill, mission, quest, stage, gimmick, character, faction triple, store, mercenary, dye triple, niche bridges, etc.). One decimal uint32 per line, in PABGH appearance order. Plays the same cross-version-diff role as keys.txt does for iteminfo — diff the directory trees (diff -r data\gamedata-keys-1.10 data\gamedata-keys-1.11) to see exactly which keys were added/removed per table. |
Generated by ../scripts/dump_gamedata_keys.py |
~750 KB each |
scripts/export_for_ce.py reads keys.txt and uses each key as an anchor in the live iteminfo.pabgb binary — it scans for the u32 key + valid string_key prefix, locates every item exactly, then parses each item chunk independently. This decouples the user-facing pipeline (items.jsonl + CE dropdown) from parser completeness, so the output is 100% covering even when the Rust parser doesn't yet understand the full layout.
Order matters: the index of a key in keys.txt is the in-game item index used by the Cheat Engine dropdown. The output.txt line 123:Some Name/1004899 means index 123 = key 1004899 = "Some Name".
The game ships an updated iteminfo.pabgb with each patch and may add/remove/reorder itemKeys. When that happens:
- Launch the game (any save / main menu is fine).
- Open Cheat Engine and attach to
CrimsonDesert.exe. - Load the Dump Item Keys entry from the CE table at
D:\Github\Mydev-Cheat-Engine-Tables\Crimson Desert\(source:dump_item_keys.CEA). - Toggle
[ENABLE]— the script AOBScans for the loaded itemKey array, then walks it slot-by-slot. The in-game array is[u32 itemKey][u32 offset]where the second field is the byte offset of the item insideiteminfo.pabgb. The Lua auto-terminates on the first slot whose offset is non-monotonic (= one past the real array end), so what lands inkeys.txtis exactly the live array — no manual trimming required. It also stops onkey == 0xFFFFFFFF/key == 0/ page fault as defensive backstops. - Replace this file with that fresh
keys.txt(or pass--keys path\to\new\keys.txtto the exporter without copying). Before overwriting, consider snapshotting the outgoing version askeys-<previous-patch>.txtnext to the new one (the bundledkeys-1.05.01.txtis an example of this pattern).
The format is plain text, one decimal uint32 per line. A clean dump has exactly N lines for N in-game items (e.g. 6,253 in 1.06 and 1.07). If the file contains trailing 4294967295 sentinels or other garbage past the real array end, export_for_ce.py's anchor scanner will emit no_anchor fallback records for those — visible in the parser-status line — but the pipeline still produces aligned output. Cleaner is better; if you see no_anchor > 0, re-run the Lua or hand-trim.
keys.txt is a list of integer ids, not asset data — it carries no copyrighted strings, art, or text content. It's also the smallest, most stable input the pipeline needs (~54 KB and rarely changes). The same applies to the per-table dumps under gamedata-keys-1.08/: each file is one decimal uint32 per line, nothing more.
By contrast everything in out/ (iteminfo.pabgb, items.jsonl, paloc_*.json, output*.txt) IS extracted Pearl Abyss content and is gitignored — out/ is generated each run.
python scripts\dump_gamedata_keys.py --version 1.09Writes data\gamedata-keys-1.09\<table>.txt for each of the 30 PABGH-indexed tables (auto-detects four PABGH shapes: u32cnt+(u32,u32)*, u16cnt+(u32,u32)*, u16cnt+(u16,u32)*, u16cnt+(u8,u32)*). For most patches this is a near-no-op — diff the new directory against the previous one (diff -r data\gamedata-keys-1.08 data\gamedata-keys-1.09) to see exactly which keys Pearl Abyss added or removed per table. Useful for spotting "the patch notes said X new factions" without spinning up the bridges or reading binary.