From 565ba98852ad1f9351ac88f9cde58fb314fa562c Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Thu, 30 Jul 2026 09:58:40 +0300 Subject: [PATCH] =?UTF-8?q?PoP=20docs:=20=D0=B1=D1=8D=D0=BA=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=20=D0=B8=D0=B4=D0=B5=D0=B9=20=E2=80=94=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B0=D1=82=20=D1=81=20=C2=AB=D0=BE=D1=82=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B0=D1=82=D1=8C=20=D0=BC=D1=8B=D1=88=D1=8C=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20=D0=B8=D0=B3?= =?UTF-8?q?=D1=80=D1=8B=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Мышь игре не нужна (управление — raw-клавиатура, которую мы и так забираем у DSS), а её прерывания воруют такты из бюджета, занятого на 86 %. Эффект измерен побочно: при движении мыши на хосте кадры выбивались до 1.5 кадрового периода, при неподвижной — 225 кадров без превышений. Записано с тем, что проверить (есть ли в RST 30h выключение, сколько стоит одно прерывание, восстановление состояния на выходе) и почему не сейчас: выигрыш только когда игрок двигает мышью, риск оставить систему без мыши после выхода — заметный. Co-Authored-By: Claude Opus 5 --- applications/PoP/docs/ideas_backlog.md | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 applications/PoP/docs/ideas_backlog.md 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`).