diff options
| author | Valentin Popov <valentin@popov.link> | 2026-07-18 18:53:36 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-07-18 18:53:36 +0300 |
| commit | 369e2ead3c5eee67212c496eab6007d5a078b9a4 (patch) | |
| tree | f9ed58890e410f53929b6ad953d7516329e907d4 /docs | |
| parent | 5e940f92bad9d806cfc0645ce2b80aa4be386eb9 (diff) | |
| download | fparkan-369e2ead3c5eee67212c496eab6007d5a078b9a4.tar.xz fparkan-369e2ead3c5eee67212c496eab6007d5a078b9a4.zip | |
docs(control): record loader ABI boundaries
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/tomes/06-behavior.md | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index b13aa70..7dcab67 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -206,6 +206,32 @@ CreateCollObject тригонометрию и `g_FastProc`. Это подтверждает его положение между gameplay 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 `LoadControlSystem` загружает настройки controller-а: ограничения скорости, |
