feat(runtime): run tag-15 and tag-19 Control budgets
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s
This commit is contained in:
5 files changed
+1143
-30
No files matched your search
@@ -1051,6 +1051,26 @@ Rust переносит этот порядок, сохраняет native на
|
||||
реализованные FX или lifecycle-вызовы, таблица остаётся без изменений. Эти
|
||||
операции обновляют только CPU-снимок и пока не подключены к игровым часам Control.
|
||||
|
||||
Распределение по бюджету тоже доступно как отдельный CPU-вызов
|
||||
`advance_loaded_mission_control_budget`. Он сначала собирает положительные
|
||||
ставки, затем обслуживает категории в исходном порядке и передаёт каждому
|
||||
устройству его долю. Например, при запасе `40/100`, доле `0.4` и интервале
|
||||
`0.5` секунды tag 19 может принести `0.1`, а tag 15 запросить `0.2`.
|
||||
Потребитель получает половину запроса: запас становится `40.1`, доля — `0.401`,
|
||||
а множитель генератора уменьшается до `0.75`. Хотя генератор может стоять раньше
|
||||
в массиве, его обновление перечитывает уже изменённую долю после обслуживания
|
||||
категории 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`. Проверка сохраняет всю таблицу без
|
||||
изменений и не доказывает успешный бюджетный шаг на реальной миссии.
|
||||
|
||||
Отдельный путь объекта класса `4` умножает интервал на контактный коэффициент и
|
||||
передаёт изменение строке. В проверенном примере коэффициент `1`, интервал `2`,
|
||||
и значение строки уменьшается на `2`; этот коэффициент не является ставкой
|
||||
@@ -1064,10 +1084,10 @@ Control заново разыгрывает срок обновления, да
|
||||
исходная DLL пропустила времена `500` и `501`, затем выполнила ресурсный шаг
|
||||
на `502`. Выбрать случайный срок один раз и ждать его было бы неверно.
|
||||
Принудительный шаг тоже расходует RNG; неактивный объект синхронизирует часы
|
||||
без такого расхода. Это локальные native проверки, а не работающий Rust
|
||||
Control: запросы Rust `0xe00` и `0x1002` читают текущее состояние строк,
|
||||
которое меняют явные API одной строки и распределения, а `0x1005` — загруженную
|
||||
ставку профиля.
|
||||
без такого расхода. Это локальные native проверки, а не автоматический Rust
|
||||
Control tick: запросы Rust `0xe00` и `0x1002` читают текущее состояние строк,
|
||||
которое меняют явные API одной строки, распределения и бюджетного шага, а
|
||||
`0x1005` — загруженную ставку профиля.
|
||||
Точные нативные векторы и открытые границы описаны в [приложении](../appendices/script-vm.md#изменение-provider-состояния-control).
|
||||
|
||||
На x87 control word `0x007f` каждое умножение округляет мантиссу до 24 бит,
|
||||
|
||||
Reference in new issue
Block a user