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

сегодня в 18:41

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

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

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

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

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

33af3121c703a2e0f919e76ebbb6154b.jpg

Дожидаемся загрузки системы, и после того, как она загрузится, выходим в консоль (F4) Заходим в утилиту конфигурации: sudo raspi-config

Выбираем «Expand Filesystem», нажимаем OK512a463d72c9e2f406ca3ae8332b02b9.png

Идём в Advanced → memory split, выставляем для модели «B» 256 Возвращаемся, идём в Internationalization Options, там выбираем локаль, раскладку клавиатуры и временную зону (в моём случае это пара US и RU в UTF8).0c92bdafae753df0401197f25f83ad8a.png

После настройки нажимаем «Finish», перезагружаемся. После загрузки системы снова идём в консоль (F4) настраивать джойстики. Устанавливаем драйверы: sudo apt-get install xboxdrv

Правим настройки: sudo nano /etc/rc.local

Добавляем в конце (перед fi) строчку: xboxdrv --trigger-as-button --id 0 --led 2 --deadzone 4000 --silent & sleep 1

В случае, если у нас джойстиков больше одного, то увеличиваем на единицу id и led (для второго — 1 и 3 соответственно). Если джойстик беспроводной, то вместо id будет wid.Не забываем сохранить (нас спросят о сохранении при выходе: ctrl+x, отвечаем Y). Перегружаем систему: sudo reboot

c2986838ca6e1322e833e66c0fecd65f.png

После загрузки соглашаемся настроить джойстики, нажимая, что просит система. После завершения настройки опять идём в консоль (F4). Переходим: cd RetroPie/emulators/RetroArch/installdir/bin

Настраиваем джойстики: ./retroarch-joyconfig -o p1.cfg -p 1 -j 0

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

5669fb2a12bc4f472b39060ecd86ddff.jpg

Чтобы не поломать SD-карту при перезагрузке из-за зависания эмулятора, и чтобы это сделать с джойстика нужно сделать следующее: sudo nano rm ~/RetroPie/configs/all/retroarch.cfg

Добавить строки: input_enable_hotkey_btn = «X«input_exit_emulator_btn = «Y»

Где X и Y — соответствующие кнопки (это обычно кнопки в центре геймпада). Теперь, чтобы скопировать ROMы на Raspberry лучше использовать передачу через сетку.Cмотрим ifconfig«ом IP-адрес нашей RPI. Подключаемся через сетку с компьютера (например через winscp для Windows) используя логин pi и пароль raspberry.Копируем файлы на Raspberry в соответствующие папки /home/pi/RetroPie/roms. Чтобы всё работало и выглядело красиво, доставляем и запускаем: cd RetroPie/supplementarygit clone github.com/elpendor/ES-scrapercdcd RetroPie-Setupsudo ./retropie_setup.sh

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

Что можно сделать ещё? Достать оригинальные джойстики и подключить их через GPIO () Добавить hardware-ные кнопки, так и сделать игровой автомат на raspberry Сделать консоль портативной. Но я не фанат такого хардкора, как тот же Pixel_Devil (который, кстати и вдохновил меня на этот эксперимент), поэтому остановился на достигнутом результатом. Теперь буду и сам предаваться ностальгии и с друзьями играть :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

© Habrahabr.ru