Найти в Дзене
WeLovePixel 🕹

Создание игрового ретро-комбайна из старого компьютера

Всем привет! Ранее я уже писал про различные операционные системы, по типу Recalbox, Batocera и Lakka, созданные исключительно для того, чтобы эмулировать старые игровые системы. Сегодня мы тоже поговорим про эмуляцию, но создадим свою систему на базе операционной системы Debian и RetroArch. Итак, поехали. Так уж вышло, что завалялось у меня некоторое количество старого железа, выкинуть которое жалко, а использовать в современных реалиях даже для интернет-сёрфинга его уже тяжело. Но есть одно дело, которое как нельзя лучше подойдет для такого старого оборудования - эмуляция другого, еще более старого оборудования :) Посему, я решил вдохнуть новую жизнь в одного такого старичка и создать из него ультимативную игровую систему, способную запускать любые игры с наших любимых старых консолей. Пойдем же по порядку. В моем случае это будет компактный ПК Shuttle X27D, у которого на борту: Процессор: 32-разрядный Intel Atom CPU 330 (2 ядра, 1.6 ГГц) Оперативная память: DDR2 - 1 ГБ Накопитель: S
Оглавление

Всем привет!

Ранее я уже писал про различные операционные системы, по типу Recalbox, Batocera и Lakka, созданные исключительно для того, чтобы эмулировать старые игровые системы. Сегодня мы тоже поговорим про эмуляцию, но создадим свою систему на базе операционной системы Debian и RetroArch. Итак, поехали.

Введение

Так уж вышло, что завалялось у меня некоторое количество старого железа, выкинуть которое жалко, а использовать в современных реалиях даже для интернет-сёрфинга его уже тяжело. Но есть одно дело, которое как нельзя лучше подойдет для такого старого оборудования - эмуляция другого, еще более старого оборудования :)

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

Пойдем же по порядку.

Железо

В моем случае это будет компактный ПК Shuttle X27D, у которого на борту:

Процессор: 32-разрядный Intel Atom CPU 330 (2 ядра, 1.6 ГГц)

Оперативная память: DDR2 - 1 ГБ

Накопитель: SSD на 120 ГБ

Видеокарта: интегрированная Intel GMA 950.

Да, по нынешним меркам машинка очень скромная, но этого железа, в теории, должно хватить для эмуляции всех классических консолей, вплоть до Sony PlayStation и Sega Saturn. Самое слабое место в данном ПК это конечно же интегрированная видеокарта. Так как у неё нет своей видеопамяти - она "откусывает" её из оперативной. Да, по-хорошему в данную конфигурацию добавить еще хотя бы 1 ГБ оперативной памяти, но пока такой возможности у меня нет.

Мини ПК Shuttle X27D
Мини ПК Shuttle X27D

Программное обеспечение

Крутиться всё будет на операционной системе типа Linux, а именно Debian 12.

Может возникнуть закономерный вопрос, почему именно Linux?

Ответ очень прост. Linux требует значительно меньше ресурсов по сравнению с Windows. А так как мы используем очень старое оборудование с низкой производительностью, для нас будет непозволительной роскошью использовать современную операционную систему наподобие Windows 7 или даже Windows 10, так как сама операционная система будет потреблять большую часть ресурсов, а мы вообще то еще и поиграть планировали.

Вместе с тем, ставить старую ОС типа Windows XP или даже Windows 98 смысла нет никакого, так как современные приложения на них просто не запустятся.

Плюс при использовании Linux мы сможем управлять нашей системой из локальной сети и запускать игры напрямую из сетевого хранилища.

Единственный нюанс, на момент установки как ОС, так и всех необходимых программ, потребуется подключение к Интернет.

Основным инструментом у нас будет RetroArch.

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

Установка

Установка Debian

Про установку Debian 12 у меня было полное пошаговое руководство, для наших целей оно вполне валидно и повторяться я смысла не вижу. Производим обычную установку Debian.

Установка и настройка RetroArch

В репозиториях Debian RetroArch есть по умолчанию, поэтому для установки не потребуется никаких дополнительных операций. Просто в эмуляторе терминала вводим команду

~$ sudo apt install retroarch

После установки его можно запустить либо с помощью значка в панели программ, либо командой retroarch в терминале.

Запуск RetroArch
Запуск RetroArch

После установки RetroArch у меня отказался запускаться, окно программы появлялось и тут же исчезало. Из логов я понял, что ему не понравился видеодрайвер который RetroArch использует по умолчанию.

Пара слов про видеодрайверы.

RetroArch может использовать разные графические API, такие как: gl (OpenGL), vulkan, gl1 (OpenGL 1.x) и sdl2 (Simple DirectMedia Layer). Первые два это современные API для 2D/3D графики, которые требуют относительно новое железо. gl1 - это старая, простая версия OpenGL которая работает практически на любом железе, а sdl2 это самая простая библиотека ввода/вывода использующая базовые возможности ОС для отрисовки графики.

Что бы сменить используемую библиотеку, нужно отредактировать конфигурационный файл

~$ sudo nano ~/.config/retroarch/retroarch.cfg

найти строчку, а если её нет то дописать

video_driver = "gl"

и изменить её на один из вариантов:

video_driver = "vulkan"
video_driver = "gl1"

или

video_driver = "sdl2"

В моем случае подошел драйвер gl1

Меняем параметр video_driver
Меняем параметр video_driver

После исправления параметра видеодрайвера RetoArch запустился

-5

Как я уже писал в статье про RetroArch, сразу же после установки он у нас абсолютно пустой, нам потребуется скачать все необходимые ядра вручную и если потребуется, положить файлы BIOS'ов в соответствующую директорию.

Что бы иметь возможность скачивать ядра из интерфейса программы, нужно сделать несколько шагов:

1. Включить опцию в меню Настройки > Интерфейс пользователя > Видимые элементы меню > Показывать 'Скачать ядра'

Включаем параметр 'Скачать ядра'
Включаем параметр 'Скачать ядра'

2. В меню Настройки > Каталоги найти строчку Ядра, и запомнить каталог хранения ядер. По умолчанию это каталог /usr/lib/i386-linux-gnu/libretro/ (если у вас Debian для архитектуры i386, как у меня) либо /usr/lib/x86_64-linux-gnu/libretro/ (если Debian для архитектуры amd64)

Запоминаем каталог для ядер
Запоминаем каталог для ядер

Что бы у нас была возможность скачивать ядра через интерфейс RetroArch, нам необходимо выставить данному каталогу права на запись, чтение и выполнение для всех пользователей, так как RetroArch запускается из под пользователя, а соответственно, имеет такие же права, а по умолчанию права на запись в данный каталог есть только у пользователя root.

Что бы выдать права на каталог необходимо выполнить следующую команду в терминале:

sudo chmod 777 /usr/lib/i386-linux-gnu/libretro/

если у вас архитектура i386, либо:

sudo chmod 777 /usr/lib/x86_64-linux-gnu/libretro/

если архитектура amd64.

После этих шагов мы можем приступать к скачиванию ядер.

В меню Главное меню > Онлайн-обновления > Скачать ядра нам будут доступны все ядра которые находятся на серверах libretro. Для тестов я установлю ядра Nintendo - NES / Famicom (QuickNES), Sega - MS/GG/MD/CD (PicoDrive), Sega - Saturn (Yabuse), Sony - PlayStation (SwanStation) и The 3DO Company - 3DO (Opera). Ядра я выбирал по принципу - лучшая производительность на слабом железе.

Установленные ядра
Установленные ядра

Если в какой-то момент мы захотим скачать новые ядра - мы всегда это сможем сделать через данное меню.

Для ряда систем, помимо ядер еще необходимо иметь файлы BIOS'ов.

Путь для этих файлов можно так же посмотреть в меню Настройки > Каталоги

Запоминаем директорию для системных файлов/BIOS
Запоминаем директорию для системных файлов/BIOS

Всё что нам нужно сделать - просто положить необходимые файлы в данный каталог. У меня это BIOS'ы таких систем как Sega Saturn, 3DO и Sony PlayStation

Все файлы в один каталог
Все файлы в один каталог

На данном этапе мы уже можем проверить производительность нашей системы и попробовать запустить какие-нибудь игры. Я скопировал по паре игр с каждой игровой системы в домашний каталог и попробовал запустить их через Главное меню > Загрузить контент.

Итак, тесты показали, что игры NES, Megadrive и Sega 32X запускаются и работают безупречно, в 3DO немного проседает ФПС, Sega Saturn запускается, но практически неиграбельны из-за чрезмерно низкого фреймрейта, а Sony PlayStation запускаться отказался вовсе. Ну что ж, жаль что придётся отказаться от PlayStation и Saturn но и на других платформах достаточного хороших игр.

Удаление лишних ядер

Так как PlayStation и Saturn у нас либо не запускаются, либо неиграбельны, то и хранить это ядра в системе большого смысла нет. Но к сожалению в интерфейсе RetroArch не предусмотрена функция удаления загруженных ядер. Соответственно удалять их придется вручную.

Вспоминаем каталог на который мы немного ранее выдавали права, что бы иметь возможность скачивать ядра, переходим в него и удаляем файлы ядер. В моем случае это swanstation_libretro.so и yabuse_libretro.so.

Создание плейлистов и кастомизация интерфейса

Итак, теперь когда мы определились с системами которые мы будем эмулировать, пришла пора скинуть ROM'ы интересующих нас игр и создать плейлисты.

Помимо описанных выше игровых систем (NES, Sega MegaDrive и Sega 32X), я решил добавить еще несколько, таких как Atari 2600, Atari 7200, Sega Master System, GameBoy и SNES. Подборки игр выбранных систем я скинул в каталог ~/games.

Что бы RetroArch мог создавать плейлисты ему необходимо обновить базы данных. Для этого нужно пройти в Главное меню > Онлайн-обновления > Обновить базы данных.

Обновление базы данных
Обновление базы данных

После обновления баз данных мы можем создавать плейлисты. Есть два способа создания плейлистов: Сканирование каталогов в автоматическом режиме и Ручное сканирование

Ручное сканирование

Ручное сканирование
Ручное сканирование

В меню Импорт контента > Ручное сканирование нам доступно множество настроек нашего будущего плейлиста, рассмотрим основные.

Настройки ручного сканирования
Настройки ручного сканирования

Каталог контента - каталог который мы хотим просканировать на предмет ROM'ов. Можно выбрать родительскую директорию для всех платформ, тогда у нас получится общий плейлист для всех игровых платформ. Я рекомендую указывать по одному каталогу под каждую отдельную платформу, так навигация по играм будет гораздо удобнее.

Название системы - здесь мы можем выбрать систему из списка который предлагает RetroArch, либо назвать плейлист по названию сканируемого каталога, либо использовать пользовательское название плейлиста.

Пользовательское название системы - если в предыдущем пункте мы выбрали <ручной ввод>, то в данном пункте вводим название плейлиста. В ином случае данный пункт ни на что влиять не будет.

Ядро по умолчанию - задаем ядро с которым будет запускаться контент из данного плейлиста.

Расширения файлов - если выхотите добавить в плейлист только определенный тип файлов, то в данном пункте необходимо указать какие это будут файлы. Если оставить строчку пустой, то RetroArch добавит все известные ему типы файлов.

Рекурсивное сканирование - выбранного каталога и всех его подкаталогов.

Начать сканирование - запустить процесс сканирования.

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

Автоматическое сканирование каталога

Сканирование каталога в автоматическом режиме
Сканирование каталога в автоматическом режиме

Гораздо более быстрый и удобный способ создания плейлистов.

Всё что нам здесь потребуется это выбрать родительский каталог со всеми подкаталогами всех систем и выбрать пункт <Сканировать данный каталог>, после этого RetroArch в автоматическом режиме просканирует все каталоги и создаст плейлисты на все известные ему системы.

Выбор каталога для сканирования
Выбор каталога для сканирования

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

Плейлисты для игровых систем
Плейлисты для игровых систем

Обновление эскизов плейлистов

Так же в RetroArch есть встроенная функция обновления эскизов плейлистов. Эта функция добавляет к играм в плейлистах официальные обложки.

Важный момент состоит в том, что чтение файлов ROM'ов идет по их хэш-суммам, и если у вас загружены неофициальные ROM-хаки или, предположим, неофициальные русские версии, путь даже они будут с оригинальными названиями в именах файлов, обложки к ним не прикрепятся.

Что бы данной функцией воспользоваться необходимо пройти в Главное меню > Онлайн-обновления > Обновления эскизов плейлистов и выбрать все плейлисты где надо обновить эскизы.

Обновление эскизов плейлистов
Обновление эскизов плейлистов

В результате около названий игр появятся еще и обложки.

Пример обложки для Resident Evil Gaiden с GameBoy Color
Пример обложки для Resident Evil Gaiden с GameBoy Color

Изменение интерфейса RetroArch

Вишенкой на торте можно немного изменить внешний вид нашей программы. В RetroArch не так много возможностей для кастомизации интерфейса, как в том же Emulation Station Desktop Edition, но не рассказать о них было бы неправильно.

В меню Настройки > Интерфейс пользователя > Оформление можно отредактировать внешний вид программы. Рассмотрим некоторые пункты данного меню.

-20

Видимые элементы меню - включение и отключение строк меню, например таких как 'Загрузить ядро', 'Загрузить контент', 'Скачать ядра' и прочее. Отключение тех или иных пунктов может быть полезно если вы уже полностью настроили ваш компьютер и не хотите что бы лишние строки загромождали главное меню программы.

Оформление - настройка внешнего вида меню, а именно таких моментов как Масштаб меню, Цветовая тема меню, настройка эскизов и пр. Один из самых нужных пунктов меню в плане настройки внешнего вида.

Меню - выбор драйвера меню, а именно темы оформления. На просторах интернета, если сильно поискать, можно найти кастомные темы оформления для RetroArch, но как правило это вариации на тему уже существующих стандартных тем.

Режим киоска - режим где все настройки становятся недоступны из графического интерфейса программы. Может быть полезно если вы не хотите чтобы кто-либо сбил ваши настройки.

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

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

Результат настроекч
Результат настроекч

Итог

Итак, наш эксперимент подошел к кону. Давайте оглянемся на проделанный путь. Мы взяли старенький Shuttle X27D, который пылился на полке, и подарили ему новую жизнь. Теперь это — мощный ретро-комбайн, способный запускать тысячи классических игр с таких легендарных платформ, как NES, Sega Mega Drive, Game Boy и многих других.

Конечно, наш комбайн не всесилен. Мечты о комфортной игре в Saturn и PlayStation так и остались мечтами — для них нужно железо помощнее. Но ведь в этом и был вызов! Главный итог: даже на таком скромном аппарате можно собрать фантастическую ретро-консоль, которая подарит сотни часов ностальгии.

А что дальше? Эту систему можно улучшать: найти и добавить оперативной памяти, подключить к большому телевизору в гостиной, настроить автозагрузку прямо в игру для консольного ощущения или даже встроить этот ПК в корпус старого магнитофона для полного погружения в ретро-атмосферу.

Что у вас пылится на антресолях? Старый ноутбук? Неттоп? Достаньте его, установите Debian и RetroArch — и вы обретете не просто эмулятор, а целый портал в свое детство. Спасибо, что были со мной на протяжении этого руководства! Удачи в сборке вашего собственного ретро-комбайна!