Пачка ностальгии оборачивается дискомфортом: курсор в 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. Подавляющее большинство раритетных игр оказались покорены: курсор перестал жить своей жизнью, стрельба приобрела предсказуемость, а психоделическая синусоида, ранее украшавшая экран, осталась лишь забавным воспоминанием.

От noret