Repository navigation
Research Brief Texdbkey
Worker w-texdbkey-a1; task texdbkey; research (read-only RE). Read .agent-cache/WORKER.md. Bus: python "%USERPROFILE%/.claude/skills/agent-cache-orchestrator/scripts/acbus.py" Parallel: w-cvartable-a1 reads the same image read-only. Astra workers on another host are idle pending a runtime test. Stay in your lane.
Find the TexDB lookup key. This is now the LAST unsolved format blocker for custom textures in Wolfenstein II - everything around it fell today.
Answer with code evidence:
- How does the engine turn an
imageresource into a TexDB lookup? Which function, which key, which input? - Can a renamed or newly added image be given a key that resolves? If yes, the derivation. If no, exactly what stops it.
-
re_probes/agent_reports/texdb_rewrite.md: the .texdb is a flat key/offset database with NO asset names in it. Header, table and payload are gapless. chunk_24.texdb is ~1 GB, 8586 entries. Names cannot be rewritten there. -
REFUTED today, do not build on it: the rule "texdb key = hash_0x60 << 4 |
level" from an earlier worker. w-datahash-a1 measured it over ALL 24
base/*.texdb (24713 distinct
key>>4): chunk_8 4/138, gameresources 650/12194, chunk_1 38/732, chunk_16 20/357 - about 5 %, not 100 %. Control:+0x50matches in 0 cases. Evidence in re_probes/datahash/hash60_survey.txt. - The 1:1 mapping does exist (chunk_8.texdb: 106 ids for 107
$streamedimages), so there IS a rule - the old one just is not it. -
entry+0x60forimageentries is a value assigned by the build tool. No reader recomputes it (all 13 read sites compare against another stored field, see re_probes/agent_reports/datahash.md). It may still be an INPUT to the key. - The level/mip part of the old rule may well be right; it is the other half that fails. Test the halves separately.
- re_probes/runtime_87400/module.bin - read-only capture of the RUNNING, SteamStub-unpacked NewColossus_x64vk.exe. Virtual RVA layout: file offset == RVA. Sections and image base in manifest.json. .pdata gives function bounds.
-
Follow the method that worked five times today: go through the code, not
through hash sweeps over data. Read re_probes/agent_reports/idclhash.md and
datahash.md first - they hand you the container parser
(
idResourceStorage::OpenContainer0xACB780-0xACC441), the payload reader (ReadResourceData0xACD7C0-0xACDCFD), FarmHash64 at 0x1363B80 and MurmurHash64B at 0x12BB970. The texture path very likely branches off near ReadResourceData or the streaming path at 0xACD8DB. - Error/usage strings in .rdata mentioning texdb / texture / streamed, and their xrefs, are a second way in.
- tools/probe_texdb.py (read-only) can already parse header, offsets and
streams. tools/probe_datahash.py has a working
murmur64band the hash60 survey code. Reuse rather than rewrite. - capstone 5.0.7 vendored: PYTHONPATH=re_probes/python_deps python ...
- Corpus, READ ONLY: /steamapps/common/Wolfenstein.II.The.New.Colossus
tools/probe_texdbkey.py (new), re_probes/texdbkey/ (new dir), re_probes/agent_reports/texdbkey.md (new).
No game launch, no process attach, no writes under the Steam install or "%USERPROFILE%/Saved Games". Do not touch other workers' files: tools/probe_idclhash.py, tools/probe_datahash.py, tools/probe_cmdtable.py, tools/probe_saveverify.py, tools/probe_cvartable.py, tools/probe_texdb.py, tools/tnc_.py, tools/vtpixel.py, re_probes/{idclhash,datahash,cmdtable,saveverify,cvartable,vtrest,map_alias_v3}/, docs/, wolfsdk/*, config.json. No pip install.
Python 3.11, stdlib plus vendored capstone. Reproducible from the command line, no running game required.
- Positive control at today's bar: reproduce the stored key for a large sample of real image entries across at least three different .texdb, and state the count as n/n. 5 % is a coincidence, 100 % is a rule.
- Negative controls: the derivation must fail on a wrong mip level, a wrong input field, and a deliberately altered name or hash.
- If the key turns out to be assigned by the build tool with no derivable rule, say so - and then answer the practical question instead: can a custom entry simply REUSE an existing retail key, and what breaks if two entries share one? That answer is worth as much as the derivation.
Every important assurance needs a check designed to fail if it is false. A rule that matches 5 % is not a rule; the refuted hypothesis above is exactly what that looks like, so calibrate against it. Keep "key found in the table" and "key computed from the resource" strictly apart.
A clean negative with the exact obstacle is a good result. Report failed hypotheses with their hit rates, the way hash60_survey.txt does.
Checkpoint at milestones. Publish a bus fact when the verdict is known - textures are the last format blocker, so both masters want this. Concise German report in re_probes/agent_reports/texdbkey.md. Finish the bus task when done.
English Wiki generated from the measured research notes in docs/. Evidence grades and uncertainty are preserved intentionally.
- WolfSDK Loader · DE
- WolfSDK Studio · DE
- FAQ · DE
- Mod format · DE
- Modding Guide
- Modding Surface
- CVar Catalog
- CVar Validation (old scrape)
- Texture Database
- Developer Mode
- Dev Menu
- Custom-Map Status