docs(script): describe native condition evaluation
Docs Deploy / Build and Deploy MkDocs (push) Successful in 38s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 38s
This commit is contained in:
3 files changed
+142
-24
No files matched your search
@@ -31,9 +31,25 @@ primitives, sound events и reads в `Effect.dll`.
|
||||
checks. Полная instruction grammar `.scr`, semantics opcodes и serialization
|
||||
state ещё не восстановлены.
|
||||
|
||||
Для GOG `ai.dll` статически восстановлены пять ветвей evaluator-а 16-byte
|
||||
записей условий по RVA `0x5180`, включая проверки типов, поиск объектов,
|
||||
короткие выходы из обхода списков и запись байта завершения. Однако не найден
|
||||
код-производитель этого массива и контракт его владельца с runtime. Reader
|
||||
`FUN_10011b20` хранит описатели событий и вложенных записей `.scr` во внутренних
|
||||
контейнерах с шагом `0x14` и `0x20`; сами дисковые структуры имеют переменную
|
||||
длину из-за length-prefixed имён и списков ссылок. Связь этих контейнеров с
|
||||
массивом evaluator-а не доказана. Виртуальные методы,
|
||||
через которые проходят проверки, остаются внешней границей, а сам evaluator
|
||||
не сравнивался с работающим оригиналом. Описание этих ветвей — статический
|
||||
вывод по одному известному `ai.dll`, а не утверждение о совпадении во время
|
||||
исполнения.
|
||||
|
||||
Закрывающий эксперимент: найти dispatcher loop в `ai.dll`, сопоставить jump
|
||||
table с instruction sizes, построить disassembler и сравнить выполнение
|
||||
коротких scripts с оригиналом.
|
||||
коротких scripts с оригиналом. Для evaluator-а условий отдельно проследить
|
||||
создание записей `this + 0x34`, выполнить те же входные данные в оригинале и
|
||||
сверить байт завершения, порядок поиска, ранние выходы и граничный случай
|
||||
`payload == count`.
|
||||
|
||||
## Saves and campaign state
|
||||
|
||||
|
||||
Reference in new issue
Block a user