diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-29 18:43:09 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-29 18:43:09 +0300 |
| commit | 1d20509b052c0b3e2db2a8bd86756f007041ab21 (patch) | |
| tree | 109f42cb4f8fef5aeeba52969ec847fdab82dc59 /docs/tomes/06-behavior.md | |
| parent | d3a0f8c7ffafc9ae2d8f9efe5d7a730c1fa0173d (diff) | |
| download | fparkan-1d20509b052c0b3e2db2a8bd86756f007041ab21.tar.xz fparkan-1d20509b052c0b3e2db2a8bd86756f007041ab21.zip | |
feat(runtime): support class-9 and default Control budgets
Diffstat (limited to 'docs/tomes/06-behavior.md')
| -rw-r--r-- | docs/tomes/06-behavior.md | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/docs/tomes/06-behavior.md b/docs/tomes/06-behavior.md index 6406307..4e71ed9 100644 --- a/docs/tomes/06-behavior.md +++ b/docs/tomes/06-behavior.md @@ -725,6 +725,14 @@ component ID и multiplier `2.5` при копировании новых коэ и дополнительная строка `fx` возвращают cursor `record + 0xbf`. Слово CTLD `+0x18 == -1` сохраняет фабричное `+0x50` и при INTO-замене. +Ветвь фабрики `0x2d4b0` направляет factory tags без отдельного случая в +конструктор `0x20800`; его vtable использует общий reader `0x21d50` в slot +`+0x1c`. Поэтому common-field override применяется и к этой default-семье, +включая tag `6`; Rust-тест проверяет его вместе с тегами `12` и `13`. Tags +`1`, `17`, `26` и `30` остаются явными границами: фабрика выбирает для них +отдельные классы, а проверки текущей реализации ещё не покрывают их полное +setter-поведение. + У tag `2` slot `+0x1c` указывает на обёртку `0x29650`. Она вызывает тот же reader, затем сохраняет selector `1` в `+0x120`, округляет selector `0` через x87 `FISTP` в `+0x124` и заново обнуляет массив `+0x12c` по накопленному числу @@ -1061,15 +1069,25 @@ Rust переносит этот порядок, сохраняет native наÐ в массиве, его обновление перечитывает уже изменённую долю после обслуживания категории tag 15. Этот явный вызов хранит также две выходные ставки `+0x5dc` и `+0x5e0`, но сам по себе ещё не запускается игровыми часами. -Поддержаны factory callbacks `15/19` и текущие descriptor tags `15/19` -(категории `0/1`); неизвестное устройство, -недоступные данные provider или нулевой знаменатель останавливают весь шаг без -частичных изменений. -Другие категории и полный миссионный цикл пока не подтверждены. В лицензированном -`min_l_n1.dat` рядом с тегами `19` и `15` есть также factory tags `9`, `12`, -`13`, `21`, `25` и `26`; поэтому его полный проход пока явно отклоняется на -первой неподдержанной категории `9`. Проверка сохраняет всю таблицу без -изменений и не доказывает успешный бюджетный шаг на реальной миссии. +Помимо класса `15` и генератора `19` поддержан класс `9`: он считает ставку +через шесть собственных значений и при распределении обновляет их вместе с +накопленными изменениями. Например, для доли provider `0.4`, интервала `0.5`, +`B = 0.2`, коэффициентов `C0 = 0.75`, `C1 = 0.6`, `C2 = 2` и масштаба +`1.25` исходная ставка имеет биты `0xbeae147b`; после полного выделения +обновлённые шесть значений совпадают с native побитно. + +Несколько фабричных классов используют общий callback: ставка равна +`-(dt * B)`, а обновление записывает долю выделения в множитель. К этому +семейству относятся фабричные теги `12`, `13`, `25` и `21`, а также другие +классы, которые исходный диспетчер направляет в фабрику по умолчанию. Текущая +категория читается из descriptor: её native map подтверждён только для тегов +`0..=34`. Неподдержанный специализированный callback, недоступный provider или +неподдержанное число останавливают шаг без частичных изменений. В +лицензированном `min_l_n1.dat` предварительная проверка распознаёт текущие +категории и выявляет неподдержанный factory tag `26`; она отклоняет бюджетный +вызов до расчёта ставок и обновлений, сохраняя таблицу целиком. Полный +бюджетный проход на реальной миссии и подключение к игровым часам пока не +подтверждены. Отдельный путь объекта класса `4` умножает интервал на контактный коэффициент и передаёт изменение строке. В проверенном примере коэффициент `1`, интервал `2`, |
