Вновь нашлось время посидеть поразбираться.
1) Холодный рестарт переделал как указано выше. Замапил его на SHIFT + PrnScr. По обычному PrnScr просто выдаём RESET и выполняем тёплый рестарт.
2)Проблема с геймпадом - не работают XYZ, LDU при нажатии одновременно в ZX передают как будто нажаты 2 кнопки. Причём эта кнопка-призрак всегда 1 или 2 или 3. Временно решено отключением опроса кнопок XYZ в файле INTERRUPTS. Сразу прекрасно заработал опрос UDLRABC, START. Работает переключение раскладок для геймпада. Может у меня геймпад не исправен, но проверить его не на чем.Заработало.
3) Механический джойстик тоже работает (чего бы ему не работать, ведь опрос UDLRBC идёт не зависимо от сигнала SEL).
4) Самая главная проблема. Так как кнопки обоих геймпадов кидаются в буфер клавиатуры, который ограничен 4 кнопками, то поиграть вдвоём получится только если один назначен как KEMPSTON. Ведь одновременное нажатие 2 направлений + огонь на обоих геймпадах дадут 6 кнопок! Так что получается второй порт этого контроллера можно захардкодить на KEMPSTON, а переключаемым сделать только первый порт. Либо надо увеличивать буфер клавиатуры.
5) Кстати, ограничение буфера клавиатуры не даёт вводить всякие чит-коды в играх одновременным нажатием. Но тут ещё ограничение от самого контроллера в PS/2-клавиатуре.
6) Интересен функционал назначения раскладок джойстиков на курсорные кнопки клавиатуры. Буду думать как это настроить.
7) Надо подумать как оживить индикаторы на клавиатуре.




ZX-Evo Rev. C4 (Double-config) / VDAC2 / NeoGS / ZX-Multisound / NemoIDE / ZiFi
Ответить с цитированием