Приветствую Пикабу, и в частности любителей ретро-гейминга, эмуляции и всяческих извращений с паяльником. Как-то гуляя на просторах интернета и читая гиктаймс, я наткнулся на статью о игровой консоли на Raspberry Pi. Прочитав ее, я понял, что сей девайс может быть полезен за свои деньги. А еще в последнее время мне сильно хотелось сделать что-нибудь своими руками.
Игровая приставка своими руками.
Итак, почему именно RPi3? Разумеется, эмулировать ретро игры можно и на пк - качаем эмуляторы, выводим картинку через HDMI на большой экран и подключаем пад. Я и сам так делал, но от таких манипуляций не ощущается никакой эстетики и удобства, как от работы с аналоговой приставкой. Хочется, чтоб не было никаких клавиатур и мышек, простой старт от нажатия кнопки, высокая скорость загрузки и эмуляции, возможность полного контроля с помощью геймпада, и, по возможности, корпус от какой-либо оригинальной консоли.

Низкое энергопотребление, бесшумность и, начиная с Raspberry Pi 3, мощность - позволяют это воплотить в реальность. Мощности хватит для эмуляции всех систем вплоть до 5-го поколения. Со всем остальным нам поможет проект RetroArch и его графическая надстройка Emulation Station. Или говоря проще - Retro Pie.
Игровая приставка своими руками.
Игровая приставка своими руками.
Выбор геймпада.

Со всем этим фаршем можно использовать любой USB геймпад. У меня уже есть проводной XBOX 360. Но я делаю ретро консоль, поэтому важно, чтобы у пада была удобная крестовина, достаточное количество кнопок (помимо действий в игре так же нужны горячие клавиши для сейвов, сброса игры и тп) и удобная классическая форма. XBOX пад сразу пролетает из-за своей крестовины (кто пробовал играть на нем в старые файтинги - поймет меня), поэтому мой выбор пал Dualshock или его копию. Вопрос в выборе корпуса сразу отпадает. Прочесав местные барахолки я отыскал мертвую Sony Playstation FAT и пару геймпадов за сущие гроши.
Игровая приставка своими руками.
Проанализировав тз, получаем список:

Raspberry Pi 3 Model B + радиаторы охлаждения и простенький корпус (для удобства крепления) - 2700 р на небезызвестном сайте.
Блок питания с выходом 5V 2.5A - около 300 р (можно использовать и обычную USB зарядку 1-2 ампер, но лучше обеспечить рекомендованное питание)
HDMI кабель 1 метр - 90 р
Короткие HDMI и USB удлинители - 200 р
Сетевой кабель AC IN - уже был в наличии.
RGB светодиоды с медленным переливанием (для красивой индикации) - 60 р
Аэрозольная матовая краска для пластика (всегда считал, что модель Net Yaroze красивее серийных фаток) - 400 р
SD карта 6-10 класса - уже есть на 8 gb
Переходник USB-2x Dualshock - 160 р
Игровая приставка своими руками.
Разворачиваем систему на флешку.

Тут все просто - скачиваем образ и заливаем его на флешку при помощи Win 32 Disk Imager для винды, на линуксе и маке это можно сделать из под терминала.

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

Настройка.

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

При первом же включении у меня обнаружились черные отступы по всем краям экрана, а так-же при каждом старте на долю секунды загорался радужный квадрат, за которым несколько секунд шли строки кода (boot text). Чтобы привести это все в человеческий вид и спрятать подальше от глаз, открываем консоль по F4 и вводим: sudo nano /boot/config.txt, в открывшемся документе вводим разрешение нашего монитора/телевизора и находим 4 строки начинающиеся с overscan - в каждой строке изменяем значение с 16 до 1, затем под ними вводим новую строку: disable_overscan=1. А за ней еще одну: disable_splash=1. Должно получиться так:

А вот краткий видео гайд, как спрятать boot text.

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

Следующий этап - установка SFTP связи между малиной и компьютером для передачи образов игр и удобного редактирования конфигов и тп. Для этого малина и пк должны находиться в одной wi fi сети. Качаем WinSCP и Putty (удаленный терминал), и подключаемся к малине через SFTP. Имя хоста - IP адрес малины. юзернейм - pi, пароль - raspberry.
Игровая приставка своими руками.
Далее определяемся, что мы будем эмулировать. Мне интересны лишь nes, snes, gba, genesis и psx. Для gba и psx нужно предварительно скачать Bios образы и скинуть в соответствующую папку.

Чтобы удалить стоковые системы, эмуляторы и порты - достаточно удалить соответствующие ромы в каталоге roms. Следующим шагом нужно обновить ядра и прочую программную начинку. Это можно сделать из GUI, но необходимо подключение к интернету. Долго ждем, пока это все устанавливается и перезагружаемся.

После трансфера ромов и всех настроек можно играть. Но я решил зайти немного дальше и установить свой собственный экран заставки (splashscreen), ведь по дефолту там пара статичных картинок. На его место можно поставить либо картинку, либо видео (mp4 h264 подходит идеально). Для этого картинку или видео нужно скопировать в /home/pi/RetroPie/splashscreens. Я решил сделать видеозаставку, взяв за основу оригинальную заставку от самой Sony Playstation, лишь заменив пару деталей и адаптировав ее под широкий экран. Получилось как-то так.
Последний, завершающий штрих, - загрузка информаций и обложек к вашим играм. Для этого жмем start на паде и выбираем scrapper - там все интуитивно понятно.

Подготовка корпуса и сборка.

От оригинальной приставки остался только пластик, лазерная головка (решил ее оставить, дабы под крышкой дисковода не зияла дыра с потрашками) и кусок текстолита с кнопкой питания. Корпус разбираем по частям и отправляем в подъезд на покраску. Сразу скажку, это мой первый опыт как покраски, так и пайки, и всего этого рукоблудия.
Игровая приставка своими руками.
Игровая приставка своими руками.
Игровая приставка своими руками.
Покраска вышла удачно, хватило ровно на все. Но я допустил ошибку, не покрыв это все матовым лаком - краску легко содрать и она люто собирает пыль и грязь. Для логотипа и обозначения кнопок я решил использовать простые стикеры, которые мне распечатала на струйнике и нарезала плоттером подруга. Логотип вписался отлично, а вот остальное уже не очень - на первое время сгодится.

Я пока просто не представляю, как это сделать бюджетно и красиво. Если у кого есть идеи, как это провернуть в бытовых условиях, буду признателен за любые советы.
Игровая приставка своими руками.
Далее при помощи старого советского паяльника и трясущихся рук паяем проводки от USB переходника к блоку для подключения геймпадов. Конструкторы приставки молодцы, этот блок легко отсоединяется, что очень удобно при монтаже - ведь паять я вообще не умею. Но спустя час и нескольких шотов коньяка все встает на свои места и работает.
Игровая приставка своими руками.
Игровая приставка своими руками.
После пропайки пытаемся все это добро уложить так, чтобы сидело надежно и больше не мешало.

Следующий шаг - установка питания. Прождав заветный блок питания около 3х месяцев и наконец получив его (привет почте россии), сразу избавляем его от корпуса. Затем берем кусок текстолита от родного блока питания приставки, выпаиваем все лишнее, зашлифовываем все дорожки, укорачиваем ее до нужных размеров и впаиваем кнопку питания, светодиод и резистор (они подключаются отдельно к интерфейсу GPIO). После этого подпаиваем проводки от нового блока к кнопке. И на этом как-бы все, приставка готова.
Игровая приставка своими руками.
Игровая приставка своими руками.
Вот примитивная схема, что и куда подключается.
Игровая приставка своими руками.
Конечный результат:
Игровая приставка своими руками.
Игровая приставка своими руками.
А также небольшое видео без слов, как это все работает.
В будущем я планирую прицепить к ней беспроводные дуалшоки, исправить косметические косяки и наконец покрыть прозрачной эмалью для защиты извне, но это уже другая история...

Спасибо всем, кто дочитал. Не знаю как закончить, поэтому вот вам мой кабанчик.
Игровая приставка своими руками.