Raspberry Pi — эмулятор ретро игр

8bit-marioСейчас, когда игры стали невероятно реалистичны, а компьютеры в разы мощнее, интерес к старым добрым игровым приставкам, типа Dendy и Sega не утихает у многих молодых людей, чьё детство проходило в 90-ые. Те времена, давно уже в истории, однако 8-битные и 16-битные игры воскресли и стали цениться даже больше, чем раньше.

Со временем, раритетные игровые кассеты были магическим образом превращены в rom-файлы, которые можно скачать в Интернете. А приставки теперь и вовсе не нужны, вместо них можно использовать программы-эмуляторы, которые так же в разнообразии есть в Интернете, для разных платформ.

В рамках этой статьи, мы воспользуемся нашей любимой Raspberry Pi, для эмуляции ретро приставок. Ценителям ретро игр посвящается…

RetroArchLogoДля реализации мультиплатформенного эмулятора мы воспользуемся популярным пакетом — RetroArch. Который, кстати, существует для нескольких платформ, например для Windows, Linux, в том числе и для Android.

Установить всё и сразу, через репозиторий deb-пакетом увы не получиться, но мир не без добрых людей. Мы воспользуемся специальным скриптом и соберём эмулятор прямо на месте.

Сперва установим дополнительные компоненты для разрешения зависимостей:

pi@raspberry:~$ sudo su
pi@raspberry:~# apt-get install git dialog

После этого подготавливаем место и скачиваем скрипт с git хаба:

pi@raspberrypi:~# mkdir /usr/src/git
pi@raspberrypi:~# cd /usr/src/git
pi@raspberrypi:~# git clone github.com/petrockblog/RetroPie-Setup.git

Запускаем:

pi@raspberrypi:~# ./retropie_setup.sh

После запуска вы увидите незамысловатое меню, в нём несколько пунктов.

retropie_setup_menu

  1. Установка бинарных (скомпилированных) файлов — быстро но, бестолково.
  2. Загрузка и сборка из исходных кодов — очень долго, но свежие версии.
  3. Установка повторная, если были ошибки при первой установке.
  4. Обновить скрипт установки
  5. Перезагрузка.

Рекомендую даже не задумываться о бинарной установке, причин несколько. Как вариант, могут не работать некоторые эмуляторы или настройки. Я выбирал установку из исходных кодов, так как после первой установки у меня не заработал эмулятор сеги и я не смог настроить геймпады. После второй установки, уже из исходников, дело продвинулось, но по прежнему не работал эмуль сеги, однако я нашёл причину и исправил (об этом чуть позже).

И так, выбираем второй пункт и в новом меню проверяем всё ли нам нужно? Например я не стал ставить «MAME», «ZX Spectrum» и «Apple II».

retropie_setup_submenu

После запуска, можете спокойно заниматься своими делами ещё часов 6. У меня весь процесс занял около 10 часов.

И когда наконец-то процесс загрузки, компиляции и установки закончиться, зайдём в домашний каталог /root/pi и увидим там новую папку «RetroPie». В неё находиться:

  • configs — настройки эмуляторов. В «All» общие, в остальных соответствующие.
  • emulatorcores — компоненты эмуляторов
  • emulators — сами эмуляторы в т.ч. оболочка
  • roms — каталог для игр, точнее rom-файлов
  • supplementary — дополнительные компоненты. (Например «SNESDev-Rpi» — утилита для подключения джойстика от SNES)

Теперь нужно поместить несколько rom-файлов игр, разных платформ, в соответствующие каталоги. Обратите внимание на расширение файлов, они должны совпадать с конфигурацией: /home/pi/.emulationstation/es_systems.cfg. В том же каталоге после первого запуска оболочки, появиться файл es_input.cfg с настройками клавиш управления, его можно удалять для сброса.

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

pi@raspberrypi:~# cd /home/pi/RetroPie/emulators/RetroArch/tools
pi@raspberrypi:~# ls

Там должна находиться утилита retroarch-joyconfig — она изменяет конфигурационный файл retroarch.cfg.

Для общего удобства, я написал скрипт для работы с этой утилитой. Откроем редактор

pi@raspberrypi:~# nano

и вставим скрипт:

#!/bin/bash

echo "Configure script of game controllers."
echo "1. Please connect now your device!.."

echo -e "2. Please enter the number of the player (1 or 2):"
read GAMERNUMB

echo -e "3. Please enter the number of the gamepad (0 - ...):"
read JOYPADNUMB

echo "Ok! Thanks! You are the $GAMERNUMB player. The number of the device used - $JOYPADNUMB."
echo "During the configuration, you can wait 5 seconds to cancel the keys."

retroarch-joyconfig -p $GAMERNUMB -j $JOYPADNUMB -t 5 -i retroarch.cfg -o retroarch.cfg

echo "Done. If you need, repeat for other players... Thanks, good-bye!"

Сохраняем его в /home/pi/RetroPie/configs/all/joyconfig-shell.sh, копируем туда же, утилиту retroarch-joyconfig, устанавливаем права на выполнение и запускаем.

pi@raspberrypi:~# cp /home/pi/RetroPie/emulators/RetroArch/tools/retroarch-joyconfig /home/pi/RetroPie/configs/all/
pi@raspberrypi:~# cd /home/pi/RetroPie/configs/all/
pi@raspberrypi:~# chmod +x joyconfig-shell.sh
pi@raspberrypi:~# ./joyconfig-shell.sh

Настроить джойстики (вернее геймпады) получится наверно не сразу, не отчаивайтесь!

Ну теперь, наконец-то, можно запустить оболочку:

pi@raspberrypi:~$ emulationstation

Если всё в порядке, то вы увидите примерно такую картину:

Меню игр Nintendo
Меню игр Nintendo
Меню игр genesis
Меню игр genesis
Великий и ужасный DOOM
Великий и ужасный DOOM
Легендарный DUKE NUKEM
Легендарный DUKE NUKEM

Если при попытке запустить игры в эмуляторе Genesis (Sega) появляется ошибка, то вы столкнулись с такой же проблемой как у меня. Она лечиться довольно просто. Вернитесь в консоль, зайдите в каталог с исходными кодами gden:

pi@raspberry:~# cd /home/pi/RetroPie/emulators/dgen-sdl

И выполните последовательно, следующие команды:

pi@raspberrypi:~# ./configure --disable-opengl
pi@raspberrypi:~# make

Дело в том, что по каким-то причинам этот эмулятор вылетает с ошибкой при работе с OpenGL. После этого, снова запустите emulationstation, всё должно работать.

Всё, да не всё. Например Duke Nukem будет работать, а вот для Doom нужно добавить некоторые файлы.

P.S.: Да, можно купить рабочие приставки и даже кассеты найти. Или играть на компьютере… Но ничто вам не заменит оригинальности! Мы с друзьями испробовали и оценили на себе…

Я с другом шпилим в танчики
Я с другом шпилим в танчики
Я с другом шпилим в бомбермена
Я с другом шпилим в бомбермена
Друзья вспоминают детство с батлтоадс
Друзья вспоминают детство с батлтоадс

P.P.S: Ну мааам, ещё пять минуточек!?… 🙂