diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-31 04:40:52 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-31 04:40:52 +0300 |
| commit | 11dccef6ac6238668bb7eb775614092392e34a14 (patch) | |
| tree | a0b08bf903487df29f653491d0979b74bcb135d6 /docs/tomes/03-resources.md | |
| parent | 4bcbf570558b027ae8065e2383f84ecf2d436715 (diff) | |
| download | fparkan-11dccef6ac6238668bb7eb775614092392e34a14.tar.xz fparkan-11dccef6ac6238668bb7eb775614092392e34a14.zip | |
feat(assets): restore ordered research candidate selection
Diffstat (limited to 'docs/tomes/03-resources.md')
| -rw-r--r-- | docs/tomes/03-resources.md | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/docs/tomes/03-resources.md b/docs/tomes/03-resources.md index a349a79..6668e95 100644 --- a/docs/tomes/03-resources.md +++ b/docs/tomes/03-resources.md @@ -471,6 +471,15 @@ struct UnitDatRecord112 { Требование обязательного terminator применяется только к полям, где оно доказано форматом. +У AI есть отдельный потребитель Unit DAT: исследовательский chooser читает +заголовок с magic `F0F1`, сохраняет второй DWORD как непрозрачный и завершает +разбор на границе первого полного корневого дерева. `immediate_child_count` +закрывает это дерево по preorder; байты после него, включая неполную запись или +orphan-record, chooser уже не читает. Поэтому Rust для этого пути находит +bounded 112-byte prefix и передаёт его существующим `decode_unit_dat` и +`unit_component_tree`. Общий декодер остаётся строгим к размеру всего файла +`8 + 112 * N`; частный framing AI не меняет этот контракт. + Проверено 425 файлов / 5 219 records Части 1 и 676 файлов / 8 145 records Части 2. Все соответствуют формуле размера, `kind == 1` и `archive_name == "objects.rlb"`. |
