feat(runtime): project load-time Control profile values
Docs Deploy / Build and Deploy MkDocs (push) Successful in 41s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 41s
This commit is contained in:
5 files changed
+1435
-17
No files matched your search
@@ -717,6 +717,34 @@ Rust full-loader теста на оригинальных ресурсах. Ве
|
||||
`None`, без дочернего fallback или синтетических нулей. Точные native writes и
|
||||
открытые вопросы о смысле полей приведены в [техническом разборе загрузки CTLD](../appendices/script-vm.md#профиль-владельца-control-при-загрузке-ctld).
|
||||
|
||||
Изолированный x86-вектор подтвердил общий проход `Control.dll!FUN_1000fca0`
|
||||
(RVA `0x0fac0`): расчёт начинает с исходного profile word 26, а затем пишет
|
||||
производное значение в изменяемую копию и заполняет три поля-накопителя
|
||||
владельца, а также `+0x20` каждой строки provider. Для этого выбираются два
|
||||
сырых слова `Slot68` через `Node38` state 0 / LOD 0, учитываются cache tag 27 и
|
||||
устройства таблицы.
|
||||
Смысл слов `Slot68` и итоговых чисел не установлен; мы не называем их массой
|
||||
или площадью.
|
||||
|
||||
Rust повторяет эту формулу изолированным helper-ом, и его тест совпадает с
|
||||
оригинальным кодом на синтетических векторах при x87 control word `0x007f`.
|
||||
В обычной цепочке загрузки AniMesh начинает с масштабов `[1, 1, 1]`, а вызванные
|
||||
до FAC0 обработчики привязки модели, FX и collision-компонентов эти поля не
|
||||
меняют. Поэтому загрузчик использует подтверждённые значения конструктора, а
|
||||
не scale из TMA. Теперь `build_control_device_projection` выполняет FAC0 после
|
||||
сборки provider rows и списка устройств и публикует результат вместе с копией
|
||||
профиля владельца.
|
||||
|
||||
Игнорируемый corpus-тест полного загрузчика на оригинальном
|
||||
`UNITS/BUILDS/MINE/min_l_n1.dat` подтверждает сопоставление всех 25 provider
|
||||
rows с начальными узлами и проекцию 11 устройств. Для профиля mine получены
|
||||
агрегаты `+0x530 = 0x470833fc`, `+0x534 = 0x4897e712` и
|
||||
`+0x538 = 0x4d9452cb`; тест сверяет также все 25 значений строк. Это результат
|
||||
Rust loader-а на лицензированных данных, а не сравнение с полным native load
|
||||
оригинала. Смысл слов `Slot68` и итоговых чисел по-прежнему неизвестен. Точные
|
||||
входы, вектор и границы приведены в
|
||||
[техническом разборе загрузки CTLD](../appendices/script-vm.md#изолированный-проход-fac0).
|
||||
|
||||
Для tag `19` фабрика создаёт объект с его исходными классом и vtable. Базовый
|
||||
конструктор `FUN_100218b0` задаёт multiplier `+0x4c = 1.0`. Override через
|
||||
`FUN_1002d890` вызывает у выбранного объекта vtable slot `+0x1c`, то есть
|
||||
|
||||
Reference in new issue
Block a user