fix(runtime): model distributor share normalization
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
5 files changed
+516
-42
No files matched your search
@@ -157,13 +157,17 @@ Behavior (`Behavior.dll`, RVA `0x3600`) вызывает `World3D!stdGetGameMode
|
||||
подтверждает только состав списков, не точную эквивалентность всей загрузки или
|
||||
регулярного шага Behavior.
|
||||
|
||||
Нативный `Behavior.dll!Add` (RVA `0x1aac0`) создаёт для каждого участника запись
|
||||
размером `0x1c` с начальной долей `1 / count`, а `normalize` (RVA `0x1ac90`)
|
||||
перенормирует прежние доли после добавления. Rust пока хранит только членство:
|
||||
поля записи, доли и их изменение ещё не исполняются. Не восстановлено и
|
||||
соединение с реальными интерфейсами ArealMap, необходимыми для регулярного
|
||||
вызова `FUN_10019e80`; остальной Behavior tick flow и общий dispatcher событий
|
||||
также остаются открытыми.
|
||||
Нативный `Behavior.dll!Add` (RVA `0x1aac0`) и `normalize` (RVA `0x1ac90`)
|
||||
проверены прямыми x86-вызовами на синтетических записях при x87 control word
|
||||
`0x007f`, измеренном также у игры на входах обоих методов. Rust повторяет
|
||||
начальные доли и нормализацию отдельными операциями `f32`, а повторную запись
|
||||
сопоставляет по `ObjectHandle`, меняя только долю существующего участника.
|
||||
Пять DWORD после доли хранятся сырыми; ненулевое первое слово закрепляет вес,
|
||||
смысл четырёх следующих не установлен. Лицензированный AutoDemo-тест проверяет
|
||||
список TMA-объектов и получившиеся начальные доли по кланам, но это не сравнение
|
||||
живых весов миссии с полями исходных runtime-записей. Не восстановлено соединение
|
||||
с реальными интерфейсами ArealMap, нужными `FUN_10019e80`; полный Behavior tick
|
||||
flow и общий dispatcher событий также остаются открытыми.
|
||||
|
||||
Для `Handler(30)` отдельно подтверждены обратный вызов `iron3d.dll` RVA
|
||||
`0x611d0` (SHA-256 `d1dc4ea8535e2069b0a05c9e8be2724dd438ba44cca7a83007d8b2e50f9e35fa`),
|
||||
|
||||
Reference in new issue
Block a user