воскресенье, 23 февраля 2020 г.

"RealPad" DualShock(1,2) gamepad plugin for PCSX2 PS2 emulator

  Написал за несколько вечеров код работы (чтение/конфигурация) с игровыми контроллерами Sega, PlayStation1, PlayStation2 под микроконтроллер STM32F7, высунул данные через USB (HID устройство), можно пользоваться как обычным компьютерным геймпадом.

  Я использовал борд с микроконтроллером серии STM32F7  с сайта одного знакомого "электронщика": https://evaluationboard.ru .  В борде нет ни чего лишнего и имеется всё необходимое. Например, в нём распаян полностью рабочий программатор ST-Link V2 и установлена микросхема FTDI (USB to COM адаптер), оба они припаяны к хабу, от которого идёт наружу "принтерный" USB разъем. Получаем  отладку SWD, UART через 1 кабель и ни каких лишних девайсов/проводов. Остальные плюшки борда можно рассмотреть на сайте, при желании.

  Но этого оказалось недостаточно...

  Когда всё заработало, я подумал: а что если реализовать мечту "детства" и написать немного кода для некогда часто мной используемого эмулятора PlayStation2 "PCSX2"?

  Сделал fork pcsx2 проекта на github, разобравшись (со скрипом, т.к. API очень не интуитивно сделан и не документирован) в API эмулятора, накидал быстро код общения с моим хардварным интерфейсом к геймпадам и назвал проект "RealPad" по аналогии с другими плагинам. "Real" - тут важная часть названия, т.к. подключается настоящий геймпад и по-настоящему читается виртуальной PS2 без дополнительных алгоритмов обработки ввода.

  Это самая простая и самая нативная интеграция геймпада, что может быть ) Любая игра может как угодно пользоваться геймпадом - это и чтение данных ввода (любых, включая силу нажатия кнопок) и конфигурация геймпада и т.п.

  Вот что получилось:


  Ссылка на репозиторий: https://github.com/L-proger/pcsx2/tree/develop/RealPad

  Disclaimer: код пока что сырой, написан в скоростном режиме как proof of concept.  Предстоит его почистить, реализовать правильную выгрузку, поддержку нескольких геймпадов, починить косяк, когда игры не видят контроллер после загрузки быстрого сохранения (F3).  А ещё ввод с клавиатуры не работает, когда используется мой плагин, например, не могу использовать "быстрое сохранение" (F1), придётся разобраться что ещё от меня хочет эмулятор.

  В дальнейшем выложу и прошивку под STM32, как только её в порядок приведу )


Комментариев нет:

Отправить комментарий