docs(control): record loader ABI boundaries
This commit is contained in:
@@ -206,6 +206,32 @@ CreateCollObject
|
|||||||
тригонометрию и `g_FastProc`. Это подтверждает его положение между gameplay
|
тригонометрию и `g_FastProc`. Это подтверждает его положение между gameplay
|
||||||
object и геометрией мира.
|
object и геометрией мира.
|
||||||
|
|
||||||
|
Статическая сверка GOG `Control.dll` уточняет границу, но пока не раскрывает
|
||||||
|
per-tick solver. PE32 image base — `0x10000000`; exports имеют следующие RVA:
|
||||||
|
|
||||||
|
```text
|
||||||
|
InitializeSettings 0x32260
|
||||||
|
LoadControlSystem 0x32280
|
||||||
|
LoadPhysicalModel 0x32580
|
||||||
|
CreateCollManager 0x325d0
|
||||||
|
CreateCollObject 0x32600
|
||||||
|
```
|
||||||
|
|
||||||
|
`LoadControlSystem` возвращается `ret 0x20`, следовательно ABI снимает со
|
||||||
|
стека восемь 32-bit аргументов. Оно выбирает allocation размером `0x668` при
|
||||||
|
mode `9` и `0x670` для другого mode, создаёт внутренний reader через virtual
|
||||||
|
dispatch с selector `10`, переносит несколько caller strings в локальные
|
||||||
|
buffers и передаёт собранную settings-структуру дальше через virtual slot
|
||||||
|
`+0x08` с key `0x80000020`. Это доказывает loader/configuration boundary и
|
||||||
|
два layout variants, но не даёт права назвать поля скоростью или acceleration.
|
||||||
|
`LoadPhysicalModel` аналогично создаёт `0xa0`-byte reader и возвращается
|
||||||
|
`ret 0x0c`; `CreateCollManager` и `CreateCollObject` возвращают interface
|
||||||
|
pointer с поправкой `+4` после внутренней инициализации.
|
||||||
|
|
||||||
|
Именно update methods этих private objects, а не пять exports, остаются
|
||||||
|
следующим объектом динамической трассировки. Поэтому reference movement в
|
||||||
|
новом runtime намеренно не использует неподтверждённые параметры Control.
|
||||||
|
|
||||||
### Control system и physical model
|
### Control system и physical model
|
||||||
|
|
||||||
`LoadControlSystem` загружает настройки controller-а: ограничения скорости,
|
`LoadControlSystem` загружает настройки controller-а: ограничения скорости,
|
||||||
|
|||||||
Reference in New Issue
Block a user