aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-20 08:06:17 +0300
committerValentin Popov <valentin@popov.link>2026-10-20 08:06:17 +0300
commit374db10daf5db88a52596edebc6cf5f2d560065f (patch)
treeb77e7bc5a09e4a4496c1ad555336cdac5079f9aa /docs/tomes
parentcaef8f8e6c0ae81b46fcab39cd4f2b74e1b29235 (diff)
downloadfparkan-374db10daf5db88a52596edebc6cf5f2d560065f.tar.xz
fparkan-374db10daf5db88a52596edebc6cf5f2d560065f.zip
fix(runtime): model distributor share normalizationtrunk
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/06-behavior.md30
1 files changed, 20 insertions, 10 deletions
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md
index b30bc7d..c00705b 100644
--- a/docs/tomes/06-behavior.md
+++ b/docs/tomes/06-behavior.md
@@ -207,7 +207,9 @@ SuperAI для записей кланов, затем обновляет Behavi
исполнен на исходной DLL с искусственными объектами. Rust пока не вызывает
регулярный шаг: игровой мир ещё не предоставляет нужные ресурсные интерфейсы.
При полной загрузке Rust уже восстанавливает членство объектов в клановых
-списках Behavior, но сами записи распределителя и их доли пока не моделирует.
+списках Behavior и задаёт их начальные доли. Остальные слова записи хранятся
+сырыми: семантика только первого из пяти слов хвоста установлена для
+нормализации.
Runtime также не подменяет очередь оригинала: вызывающая сторона сама передаёт
время, а локальный генератор Rust пока учитывает только случайные числа
восстановленного стартового шага.
@@ -241,10 +243,17 @@ Rust-тест повторно читает лицензированную миÑ
TMA-записями и проверяет реальные `ObjectHandle`, но помечен `#[ignore]`, чтобы
не требовать оригинальных ресурсов от остальных разработчиков.
-Это пока только перечень участников. Оригинальный `Behavior.dll!Add` создаёт для
-каждого участника запись размером `0x1c` с долей `1 / count`, после чего
-нормирует прежние доли. Rust ещё не хранит эти поля и не исполняет их регулярный
-обмен ресурсами. Поля не выводятся из TMA-соседнего слова или `OwnerId`.
+Список распределителя хранит не только участников, но и долю каждого. При
+добавлении двух объектов оба получают по половине общего веса. Если добавить
+третий, движок оставляет долю новой записи около одной трети, а оставшийся вес
+делит между прежними изменяемыми записями. Помеченная запись сохраняет свой вес,
+как закреплённая часть общего набора. Повторное добавление того же объекта не
+создаёт вторую строку и оставляет остальные слова записи нетронутыми.
+
+Rust хранит этот небольшой начальный список с долями. Он не смешивает selector
+из TMA, владельца мирового объекта и внутренний ключ Behavior: связь в Rust
+опирается на уже созданный `ObjectHandle`. Регулярный обмен ресурсами пока
+остаётся отдельным этапом, потому что для него нужны интерфейсы игровых объектов.
### Регулярная передача ресурсов
@@ -263,11 +272,12 @@ Resource Distributor работает со списком зарегистрир
исходной `Behavior.dll`, но объекты и ответы интерфейсов заданы тестом; это ещё
не воспроизведение реальной миссии.
-Членство списка связано с реальным путём регистрации, но выполнение этой
-миссии не сравнивалось с тем, как исходная DLL заполняет поля записи `0x1c` и
-нормирует доли. Rust пока не хранит эти поля, а игровому миру ещё не хватает
-ресурсных интерфейсов ArealMap для регулярного шага. Открытые вопросы и границы
-проверки приведены в [границах знания](../appendices/knowledge-boundaries.md).
+Для правила долей есть отдельная проверка исходной `Behavior.dll` на синтетических
+записях при игровом x87 control word `0x007f`: проверены добавление, повторный
+ключ, закреплённая запись, нулевая сумма и округление. Это позволяет Rust
+сохранять начальный список, но пока не подтверждает веса реальных объектов в
+живой миссии. Для регулярного шага по-прежнему не хватает интерфейсов ArealMap.
+Остальные ограничения собраны в [границах знания](../appendices/knowledge-boundaries.md).
Первый часто встречающийся table entry с side effect — `Handler(2)` (176
records в corpus). Он берёт active instruction, разрешает семь slots через