From 37db376dd3b259cfefdb7081770ca82bdc7542dd Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Tue, 20 Oct 2026 01:45:58 +0400 Subject: docs(script): describe native condition evaluation --- docs/appendices/knowledge-boundaries.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'docs/appendices/knowledge-boundaries.md') diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md index 661069a..ad7bc13 100644 --- a/docs/appendices/knowledge-boundaries.md +++ b/docs/appendices/knowledge-boundaries.md @@ -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 -- cgit v1.2.3