Pull to refresh

Ретро-игровой центр на Raspberry Pi

Development for Raspberry Pi *
Ну вот и наступили майские праздники, в которые можно расслабиться и отвлечься от дел.
Кто-то поехал на природу, жарить шашлыки, кто-то — копать картошку, а кто-то, как я, решил остаться дома и релаксировать. Но как сделать это с пользой? Не прибегая к загрузке мозга очередными мануалами? И тут мне на глаза попалась моя неприкаянная Raspberry Pi. А вкупе с ностальгическим и тёплым ламповым настроением у меня родилась идея: а можно ли из RPI сделать игровую систему? Вбив в Google, нашлось простое и очень доступное решение, с которым я и хочу с вами поделиться. Кому интересно – прошу под кат.



Как оказалось, это тема не новая, и уже промелькивала на Хабре. Тем не менее за время её публикации прогресс шагнул вперёд, и следует чуть поподробнее рассказать об этом.

Вся система базируется на порте RetroArch, основанной на библиотеке libretro, позволяющей использовать эмуляторы различных приставок (NES, SNES, Sega Genesis, PlayStation, а так же SCUMMVM, zxspectrum) через общий API. За интерфейс и удобство пользования отвечает GUI — EmulationStation. Сегодня, чтобы получить полностью работающую систему достаточно использовать готовый образ RetroPie.

  1. Скачиваем RetroPie Project SD card Image
  2. Записываем на SD-карту с помощью dd для Linux, Wind32DiskImager для Windows или RPi SD card builder для MacOS.
  3. Подключаем видео, аудио кабели, сетевой кабель, клавиатуру и контроллеры (геймпады), вставляем SD-карту и включаем (вставляем mini-usb штекер питания).



    Обратите внимание на совместимость джойстиков – некоторые из них требуют дополнительного питания, и тогда необходимо будет использовать USB-хаб с питанием. Так же, вполне вероятно, что-то придётся допиливать ручками. В моём случае я использовал фирменные джойстики от Microsoft Xbox 360, которые завелись без проблем.


  4. Дожидаемся загрузки системы, и после того, как она загрузится, выходим в консоль (F4)
  5. Заходим в утилиту конфигурации:
    sudo raspi-config
  6. Выбираем “Expand Filesystem”, нажимаем OK



  7. Идём в Advanced -> memory split, выставляем для модели “B” 256
  8. Возвращаемся, идём в Internationalization Options, там выбираем локаль, раскладку клавиатуры и временную зону (в моём случае это пара US и RU в UTF8).



  9. После настройки нажимаем "Finish", перезагружаемся.
  10. После загрузки системы снова идём в консоль (F4) настраивать джойстики.
  11. Устанавливаем драйверы:
    sudo apt-get install xboxdrv
  12. Правим настройки:
    sudo nano /etc/rc.local
  13. Добавляем в конце (перед fi) строчку:
    xboxdrv --trigger-as-button --id 0 --led 2 --deadzone 4000 --silent & sleep 1
    В случае, если у нас джойстиков больше одного, то увеличиваем на единицу id и led (для второго – 1 и 3 соответственно). Если джойстик беспроводной, то вместо id будет wid.
    Не забываем сохранить (нас спросят о сохранении при выходе: ctrl+x, отвечаем Y).
  14. Перегружаем систему:
    sudo reboot




  15. После загрузки соглашаемся настроить джойстики, нажимая, что просит система. После завершения настройки опять идём в консоль (F4).
  16. Переходим:
    cd RetroPie/emulators/RetroArch/installdir/bin
  17. Настраиваем джойстики:
    ./retroarch-joyconfig -o p1.cfg -p 1 -j 0
    Убеждаемся, что под j 0 у нас действительно xbox джойстик, в противном случае обрываем (ctrl+c) и увеличиваем цифру на единицу. Если это наш джойстик, то нажимаем те кнопки, что спрашивает конфигуратор. Для второго и последующих джойстиков увеличиваем цифры в вызове на 1 до того момента, пока всё не будет введено.
  18. Копируем наши настройки в систему:
    	sudo cat p*.cfg >> ~/RetroPie/configs/all/retroarch.cfg
    В том случае, если где-то накосячили при настройке джойстиков, то удалите конфиги:
    rm /home/pi/.emulationstation/es_input.cfg
    rm ~/RetroPie/configs/all/retroarch.cfg




  19. Чтобы не поломать SD-карту при перезагрузке из-за зависания эмулятора, и чтобы это сделать с джойстика нужно сделать следующее:
    sudo nano ~/RetroPie/configs/all/retroarch.cfg
    Добавить строки:
    input_enable_hotkey_btn = «X»
    input_exit_emulator_btn = «Y»
    Где X и Y – соответствующие кнопки (это обычно кнопки в центре геймпада).
  20. Теперь, чтобы скопировать ROMы на Raspberry лучше использовать передачу через сетку.
    Cмотрим ifconfig’ом IP-адрес нашей RPI. Подключаемся через сетку с компьютера (например через winscp для Windows) используя логин pi и пароль raspberry.Копируем файлы на Raspberry в соответствующие папки /home/pi/RetroPie/roms.
  21. Чтобы всё работало и выглядело красиво, доставляем и запускаем:
    cd RetroPie/supplementary
    git clone https://github.com/elpendor/ES-scraper

    cd
    cd RetroPie-Setup
    sudo ./retropie_setup.sh
    Выбираем: SETUP -> Run ‘ES-scraper ->(Re-)scape of the ROMs directory
    В результате это действие просканирует наши ромы и скачает картинки и описание игр.
    Однако это при добавлении новых ROMов нужно будет каждый раз.
  22. Перезагружаем Raspberry Pi (можно заодно выключить клавиатуру и, если надо, сетку) (sudo reboot / sudo shutdown –h now) и после загрузки наш RPI полностью будет готов к работе.




Что можно сделать ещё?

  • Достать оригинальные джойстики и подключить их через GPIO
  • Добавить hardware-ные кнопки, так и сделать игровой автомат на raspberry
  • Сделать консоль портативной.


Но я не фанат такого хардкора, как тот же Pixel_Devil (который, кстати и вдохновил меня на этот эксперимент), поэтому остановился на достигнутом результате. Теперь буду и сам предаваться ностальгии и с друзьями играть :)
Tags:
Hubs:
Total votes 59: ↑44 and ↓15 +29
Views 90K
Comments Comments 11