From b9a4d1b478d9ff6dff457617f7296c54db70532e Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 22 Oct 2026 14:19:25 +0400 Subject: feat(runtime): query and update loaded Control resources --- docs/appendices/knowledge-boundaries.md | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'docs/appendices') diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md index 27cf74a..f389b03 100644 --- a/docs/appendices/knowledge-boundaries.md +++ b/docs/appendices/knowledge-boundaries.md @@ -282,15 +282,26 @@ Control различает добавление устройства и прим подготовленного CTL должно оставаться явным unavailable result, а не трактоваться как пустой список. -Глобальные Control selectors `1/2` и setter selector `1` по tag `19` описаны -там же только по статическому разбору `Control.dll`; их вызовы отдельно не -исполнялись. Проекция полного mission load недоступна для неполного списка -typed records, Control resource у non-geometric prototype и некоторых -неразрешённых EXTO node mappings; preview и объекты без Unit DAT root её не -строят. Её соответствие полной загрузке игры для всех типов компонентов и -factory paths ещё не установлено. Не восстановлен и жизненный цикл множителя -`+0x4c` после конструктора и переопределения; также неизвестно, когда эти -объекты создаются при отложенной загрузке. +Global Control getters `1/2` и setter `1` проверены в native x86 oracle для +искусственных factory/descriptor pairs `9`, `15` и `19`, а в Rust реализованы +для текущего descriptor tag `19` с factory tags `9`, `15`, `19` и `25`. Для tag +`25` общий getter slot `+0x10` подтверждён чтением vtable, но агрегатный вызов +этого класса native oracle не запускал. Rust API обращается к строкам проекции +конкретного живого `ObjectHandle`; это запрос к уже загруженной таблице, а не +исполнение Control или Behavior tick. Setter `17`, остальные factory tags и +внешние эффекты их методов не включены. Для tag `9` selector `0` использует +отдельный scale `+0x11c`; остальные поддержанные классы используют коэффициент +напрямую. Пустой набор и нулевой знаменатель остаются native no-result, а +неподдержанный factory tag и расчётный диапазон произведения/отношения за +нормальным диапазоном `f32` становятся явной ошибкой Rust. + +Проекция полного mission load недоступна для неполного списка typed records, +Control resource у non-geometric prototype и некоторых неразрешённых EXTO node +mappings; preview и объекты без Unit DAT root её не строят. Её соответствие +полной загрузке игры для всех типов компонентов и factory paths ещё не +установлено. Setter `1` меняет multiplier `+0x4c` выбранных строк, но расписание +и lifetime этих объектов после конструктора и в отложенной загрузке остаются +непроверенными. Для `Control.dll` (SHA-256 `bcb86318089028548a178b03a21accdce15df0cc85ddd91674cf3c2f55012c6e`) tag-26 -- cgit v1.2.3