PoP docs: бэклог идей — начат с «отключать мышь на время игры»
Мышь игре не нужна (управление — raw-клавиатура, которую мы и так забираем у DSS), а её прерывания воруют такты из бюджета, занятого на 86 %. Эффект измерен побочно: при движении мыши на хосте кадры выбивались до 1.5 кадрового периода, при неподвижной — 225 кадров без превышений. Записано с тем, что проверить (есть ли в RST 30h выключение, сколько стоит одно прерывание, восстановление состояния на выходе) и почему не сейчас: выигрыш только когда игрок двигает мышью, риск оставить систему без мыши после выхода — заметный. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Идеи и вопросы «на подумать» (PoP)
|
||||
|
||||
Не план работ, а список того, что осознанно отложено: каждая запись —
|
||||
гипотеза с причиной, по которой её стоит проверить, и с тем, что мешает
|
||||
сделать это прямо сейчас.
|
||||
|
||||
## Отключать мышь на время игры
|
||||
|
||||
**Гипотеза.** Мышь на Sprinter — источник прерываний (обёртки RST 30h,
|
||||
см. memory `mouse_api`). Игре она не нужна вообще: управление —
|
||||
raw-клавиатура (`<kbd_raw.h>`), которую мы и так забираем у DSS целиком.
|
||||
Значит каждое мышиное прерывание за кадр — украденные такты в бюджете,
|
||||
который у нас и без того занят на 86 %.
|
||||
|
||||
**Откуда взялось (2026-07-30).** При замере бюджета по 100 кадрам три
|
||||
кадра выбились до 552–647 К тактов (1.28–1.51 кадра) при типичных 371 К.
|
||||
Причиной оказалось движение мыши на ХОСТЕ: при неподвижной мыши 225
|
||||
кадров подряд прошли без единого превышения. То есть эффект реальный и
|
||||
измеримый, просто в тесте он был наведён извне.
|
||||
|
||||
**Что проверить.**
|
||||
1. Есть ли у драйвера мыши (RST 30h) функция «выключить/включить» —
|
||||
разобрать список из 14 обёрток; если нет явной, посмотреть, что делает
|
||||
«hide cursor» и снимает ли она обработчик.
|
||||
2. Сколько тактов реально стоит одно мышиное прерывание на нашем железе
|
||||
(замер: breakpoint на входе ISR + totalcycles, при движении мыши).
|
||||
3. Не ломает ли отключение выход в DSS: состояние обязано
|
||||
восстанавливаться при `exit`, включая аварийный (atexit).
|
||||
|
||||
**Почему не сейчас.** Выигрыш проявляется только когда игрок реально
|
||||
двигает мышью, то есть в норме его нет; а риск оставить систему без мыши
|
||||
после выхода — заметный. Делать после того, как закроем стражей и
|
||||
займёмся бюджетом всерьёз (там же, где батчинг кроссбанковых вызовов и
|
||||
возможный возврат `pop_bg` в резидент `--w3`).
|
||||
Reference in New Issue
Block a user