diff --git a/applications/PoP/docs/ideas_backlog.md b/applications/PoP/docs/ideas_backlog.md new file mode 100644 index 0000000..359924a --- /dev/null +++ b/applications/PoP/docs/ideas_backlog.md @@ -0,0 +1,34 @@ +# Идеи и вопросы «на подумать» (PoP) + +Не план работ, а список того, что осознанно отложено: каждая запись — +гипотеза с причиной, по которой её стоит проверить, и с тем, что мешает +сделать это прямо сейчас. + +## Отключать мышь на время игры + +**Гипотеза.** Мышь на Sprinter — источник прерываний (обёртки RST 30h, +см. memory `mouse_api`). Игре она не нужна вообще: управление — +raw-клавиатура (``), которую мы и так забираем у 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`).