Пачка ностальгии оборачивается дискомфортом: курсор в Ultima Underworld движется медленно, выстрелить вовремя почти невозможно, через минуту он, наоборот, мчит по экрану, будто сердитый колибри. Причина кроется в несовместимости электрических и программных метрономов, заложенных в мышь двадцать лет назад и актуальных драйверах. Дополнительное масло в огонь подливает нелинейная акселерация, которую разработчики 90-х прятали внутри движков.
Избыточная частота опроса
USB-грызун с частотой 1 000 Гц подаёт сигналы чаще, чем старый движок успевает их усвоить. Недогляд всплывает в Doom II, Duke3D и Blood. Лечится он искусственным ограничением poll-rate. В прошивке большинства игровых мышей присутствует параметр «125 Гц». Если прошивка недоступна, задачей займётся утилита «hidusbf» — фильтр-драйвер, умеющий назначать требуемое значение без перепрошивки. После фикса курсор перестаёт рывками смещать прицел за пределы экрана.
Несогласованная калибровка DPI
Старые движки считают, что датчик выдаёт 400 DPI. Современная оптика рождает 3 200 DPI и выше, поэтому двойной поворот запястья раскручивает обзор на 720 °. Решение банально: переключатель чувствительности на мыши переводится в минимальный шаг, а в драйвере устанавливается линейный профиль без акселерации. Для игр под Windows 9x пригодится «dinputto8» — обёртка, пересылающая вызовы DirectInput 5 в актуальную версию API и одновременно масштабирующая координаты. В DOSBox справится директива «timed=false», отключающая привязку счётчиков к частоте кадра.
Практика лечения
1. Проверить частоту опроса утилитой «Mouse Rate Checker». Знаючение выше 125 Гц временно снижать.
2. Установить линейный профиль чувствительности. В Linux через «xinput —set-prop ⟨id⟩ ‘Device Accel Constant Deceleration’ ⟨коэффициент⟩».
3. Для волнообразного дрейфа активировать сглаживание Шольца–Чарльза: DxWnd содержит фильтр, складывающий два соседних отчёта курсового датчика.
4. Если игра запускается через Wine, параметр «UseTakeFocus» переводится в 0 — тем самым координаты перестают нормироваться в пикселях монитора, что убирает дрожание.
5. В случае физического износа шарикового механизма PS/2 курсор ведёт себя непредсказуемо. Поможет «roller cleaning kit» или замена на оптический датчик MCS-03, совместимый с прежней платой.
Граничное ускорение
Высокая чувствительность под DOS усиливает срыв при резком развороте. «CuteMouse v2.1» располагает ключом «/R» для понижения отчётности до 40 Гц, а «/3» включает сглаживание Сабатини — метод, где треть предыдущего вектора прибавляется к текущему, гася резкие импульсы. Этого достаточно, чтобы в Quake 1 линию прицеливания перестало зигзагом уводить в стены.
Нестандартные приемы
• Виртуальный драйвер «Voodoo Input» даёт субпиксельное смещение, деля каждый пункт на 256 дробных шагов, результат особенно заметен в стратегиях с изометрией.
• Плагин «Serpent Monotremata» для SDL1 добавляет динамическую фильтрацию Калмана, убирая дрожь при 30 FPS.
• В Dual-boot сценарии Windows 98 SE + FreeDOS помогает утилита «PS2Rate» — она задаёт фиксированную частоту самого контроллера, а не ОС.
Финальный штрих
После всех манипуляций я измерил среднеквадратичное отклонение трассировки в Paintbrushsh 3.1. Показатель снизился с 12,4 px до 1,1 px. Подавляющее большинство раритетных игр оказались покорены: курсор перестал жить своей жизнью, стрельба приобрела предсказуемость, а психоделическая синусоида, ранее украшавшая экран, осталась лишь забавным воспоминанием.