Ретроконсоль своими руками Часть 3. Финальные штрихи

d2da221744ab332ab006faf54e22458b.jpeg

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

Все включено: чем так хорош Raspberry Pi 400?

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

image-loader.svg

Raspberry Pi 400 доступен в единственной модификации — с 4 ГБ оперативной памяти на борту, однако для эмуляции ретроконсолей этого более чем достаточно. Дизайн устройства заставляет вспомнить классические компьютеры ZX Spectrum: по факту при покупке 400-й модели вы получаете в свое распоряжение 79-кнопочную мембранную клавиатуру со встроенным SBC и набором разъемов для подключения периферии, расположенных на задней панели.

image-loader.svg

В отличие от оригинала, Raspberry Pi 400 лишился одного порта USB 2.0, что, впрочем, не является критичным для нашего проекта. Зато не самый удобный microSD-слот типа «push-pull» уступил место более современному «push-push», так что о проблемах с застреванием флеш-карт отныне можно забыть. А вот что действительно удручает, так это отсутствие 3,5-миллиметрового мини-джека. Впрочем, данный недостаток с лихвой перекрывается начинкой «малинового пирога».

Первое, что бросается в глаза после разборки корпуса, — массивная металлическая пластина, играющая роль не только опорного каркаса для всей конструкции, но и теплоотвода, соединенного с SoC микрокомпьютера посредством термопрокладки. Надо сказать, что, несмотря на отсутствие активного охлаждения, импровизированный радиатор превосходно справляется с возложенной на него задачей за счет площади: при температуре воздуха 25 °C чип разогревается максимум до 46 °C в стресс-тестах в стоке, тогда как критический порог, при котором наступает троттлинг, составляет 85 °C.

image-loader.svg

Под радиатором скрывается сам SBC, и здесь приятные сюрпризы продолжаются. В отличие от эталонной четверки, выполненной на базе SoC BCM2711B0, Raspberry Pi 400 обзавелся более совершенным чипом BCM2711С0. Да, здесь мы видим все те же Cortex-A72 ARMv8, однако частота каждого ядра возросла на 300 МГц и достигает уже 1,8 ГГц против 1,5 ГГц у оригинала.

image-loader.svg

При работе с эмуляторами такая разница оказывается весьма существенной, особенно когда речь заходит о консолях уровня Dreamcast, Nintendo 64 и более поздних: увеличенная частота положительно сказывается на фреймрейте, а значит, и игровой процесс получается более плавным.

При всем при этом новый чип оказался куда холоднее своего предшественника: он без особых проблем разгоняется до 2,2 ГГц, сохраняя температуру под максимальной нагрузкой не выше 57 °C, и это — с дефолтным охлаждением без какого-либо тюнинга.

image-loader.svg

Кстати, о тюнинге. Пожалуй, главной «ложкой дегтя» в случае с Raspberry Pi 400 оказывается нестандартный форм-фактор печатной платы: если со временем вы все же захотите прокачать свою ретроконсоль, то попросту не сможете найти готовый кастомный корпус, так что без 3D-печати уже никак не обойтись. Но это единственный серьезный недостаток данной модели.

Что же касается ценника, то здесь все выглядит достаточно привлекательно. Комплект, включающий в себя сам Raspberry Pi 400, адаптер питания, кабель-переходник micro-HDMI–HDMI, фирменную мышь и руководство пользователя, обойдется вам примерно в 11,5 тысячи рублей, если заказывать на AliExpress. Почти столько же вам придется отдать за Raspberry Pi 4B с 4 ГБ RAM на борту, клавиатуру с тачпадом и более-менее приличный корпус с хорошим охлаждением. Так что если размеры SBC (286 × 122 × 23 мм) или отсутствие возможности кастомизации для вас не являются критичными, приобретение четырехсотой «малинки» будет даже более выгодным решением, нежели самостоятельная сборка ретроконсоли с нуля.

Нужно больше FPS: разгон Raspberry Pi

При всех многочисленных достоинствах, у любой модификации «малинки» (даже самой мощной) не хватает производительности для стабильной эмуляции консолей уровня PlayStation 2, Dreamcast или Nintendo 64, хотя в отдельных проектах данный SBC показывает весьма достойные результаты. Частично исправить этот недостаток помогает увеличение частот CPU и GPU, при этом сам процесс разгона оказывается даже проще, чем оверклокинг полноценного ПК.

Как и в случае с оригинальной Raspberry Pi OS, для изменения рабочих параметров RetroPie достаточно отредактировать файл config.txt, расположенный в корне системного накопителя (в нашем случае — microSD-карты). Сделать это можно двумя путями.

  • выключить Raspberry Pi, извлечь флеш-карту, подключить к ПК или ноутбуку с помощью карт-ридера (например, SanDisk MobileMate USB 3.0), открыть ее как обычный съемный накопитель и внести необходимые правки с помощью Notepad++ или другого редактора;

image-loader.svg

  • вызвать терминал RetroPie (по умолчанию — F4), открыть конфигурационный файл с помощью команды sudo nano /boot/config.txt, внести необходимые изменения и сохранить их сочетанием клавиш Ctrl+X, после чего перезагрузить систему (sudo shutdown -r now), чтобы настройки вступили в силу.

Для разгона Raspberry Pi используется множество параметров, однако ключевых — всего 4, и это:

  1. arm_freq — задает максимальную частоту процессора в мегагерцах;

  2. gpu_freq — переопределяет частоту графического ядра (core_freq), блока обработки 3D-графики (v3d_freq), блока аппаратной обработки H.264-видео (h264_freq), блока аппаратной обработки H.265-видео (hevc_freq) и блока обработки изображения с камеры (isp_freq) в мегагерцах;

  3. over_voltage — позволяет регулировать питание CPU/GPU, может принимать значения от -16 (что соответствует 0,95 В) до 8 (1,55 В);

  4. force_turbo — при включении данного режима процессор будет постоянно работать на максимальной частоте, заданной параметром arm_freq; может принимать значения 0 (выключен) или 1 (включен); его активация также требуется в случае, если вы хотите поднять напряжение на процессоре до 1,55.

Особого смысла трогать force_turbo нет, если только вы не отмечаете проблемы с производительностью в играх вследствие сброса частот до минимальных значений, или не хотите поднять вольтаж на процессоре на максимум, иначе CPU будет молотить впустую и перегреваться. Кроме того, сочетание опций force_turbo=1 и over_voltage=8 приводит к потере гарантии.

Что же касается оптимальных значений перечисленных параметров, при которых система остается стабильной, то для Raspberry Pi 4B/400 таковые составляют:

Разгонный потенциал предыдущих модификаций «малинки» несколько скромнее, однако дополнительные FPS можно выжать даже из них. Ниже приводим параметры разгона для Raspberry Pi третьего поколения и Zero/Zero W (эти малышки все еще актуальны, ведь с их помощью можно собрать портативную консоль для игр в поездках).

Модель

Raspberry Pi 3

Raspberry Pi 3 A+ / B+

Raspberry Pi Zero / Zero W

arm_freq

1300

1500

1100

gpu_freq

500

500

450

over_voltage

4

4

6

Разумеется, многое зависит от конкретного экземпляра устройства и возможностей системы охлаждения. Сразу предупредим: если вы планируете разгонять свою «малинку», то о красивых корпусах, выполненных в стиле классических игровых консолей, придется забыть, так как они совершенно не предназначены для подобных экспериментов. Хорошим выбором в данной ситуации станет нечто вроде ICE Tower от 52Pi для Raspberry Pi 4B — низкопрофильного кулера с двумя медными тепловыми трубками. В комплекте с фирменным корпусом из алюминиевого сплава подобный девайс обойдется вам примерно в 2000 рублей.

image-loader.svg

Что же касается самой методики разгона, то алгоритм здесь таков:

  1. выставляем максимально возможные параметры для вашей модели Raspberry Pi;

  2. запускаем устройство с новыми настройками;

  3. если SBC не стартует или сразу перезагружается, снижаем arm_freq на 100 МГц (или core_freq на 50 МГц), подключив карту памяти к ПК и отредактировав config.txt;

  4. запускаем повторно, и, если операционная система корректно загрузилась, проводим нагрузочные тесты и проверяем, насколько хорошо кулер справляется с охлаждением разогнанного SoC.

Проще всего протестировать разогнанную «малинку» с помощью утилиты sysbench. Для ее установки необходимо войти в терминал RetroPie (вызывается на F4) и ввести:

sudo apt install sysbench

Для проведения же самих тестов рекомендуем воспользоваться следующим скриптом:

/!bin/bash

#Получаем значения температуры, текущей частоты вычислительных ядер и информацию о троттлинге с помощью утилиты vcgencmd

function get_info() {

    vcgencmd measure_temp

    vcgencmd measure_clock arm

    vcgencmd get_throttled

    echo

}

get_info

#Запускаем 10 прогонов sysbench в четырехпоточном режиме (по потоку на каждое ядро, для Zero/Zero W достаточно 1) и перенаправляем вывод бенчмарка в /dev/null

for ((i=1;i<=10;i++))

do

   sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 run > /dev/null # 2>&1

    get_info

done

Сохраните скрипт под любым удобным именем (например, benchmark.sh) и затем запустите командой:

./benchmark.sh

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

Данные будут выглядеть примерно следующим образом:

temp=56’C

frequency(48)=2000284679

throttled=0x0

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

Бит

Значение параметра throttled

Обозначает

0

0×1

Обнаружено пониженное напряжение

1

0×2

Ограничение частоты процессора

2

0×4

Троттлинг

3

0×8

Мягкое ограничение температуры

16

0×10000

Произошло понижение напряжения

17

0×20000

Произошло ограничение частоты процессора

18

0×40000

Произошел троттлинг

19

0×80000

Произошло мягкое ограничение температуры

Разгон можно считать удачным в том случае, если под нагрузкой температура чипа не превышает 60°C при полном отсутствии троттлинга (throttled=0x0).

Дополнительно повысить быстродействие ретроконсоли поможет использование высокоскоростных карт памяти SanDisk Extreme microSDXC. Производительность флеш-карт семейства достигает впечатляющих 100 МБ/с в операциях чтения и 90 МБ/с при записи файлов. Проще говоря, с такой карточкой на закачку каждых 4 ГБ образов игр у вас будет уходить не более 1 минуты.

image-loader.svg

Еще одним преимуществом карт SanDisk Extreme microSDXC является соответствие скоростному классу A2 согласно классификации Application Performance Class. На практике это означает, что даже в самых неблагоприятных условиях скорость передачи данных между флеш-картой и одноплатным компьютером не будет опускаться ниже 10 МБ/с, а минимальное устойчивое количество операций ввода-вывода будет держаться на уровне 4000 IOPS в операциях случайного чтения и 2000 IOPS при записи файлов. Это позволяет существенно сократить время загрузки операционной системы (не более 25 секунд) по сравнению с обычными флеш-картами и добиться устойчивых показателей производительности при работе с тяжелыми приложениями, будь это графический редактор или эмулятор игровой системы шестого поколения.

Как и другие продукты SanDisk, карты памяти линейки Extreme соответствуют высочайшим стандартам надежности и способны сохранять работоспособность даже спустя 72 часа пребывания в пресной или соленой воде на глубине вплоть до 1 метра или выдержать падение с высоты до 5 метров на бетонный пол, а также хорошо защищены от воздействия рентгеновского излучения и статических магнитных полей с силой индукции до 5000 Гс, что исключает вероятность повреждения сохраненных данных при прохождении досмотра с применением металлоискателя или интроскопа, а значит, вы сможете без опаски брать ретроконсоль с собой в поездки. На каждую карту памяти распространяется ограниченная пожизненная гарантия.

Максимум ностальгии: собираем копии ретроконсолей

Поскольку наши материалы ориентированы прежде всего на новичков, ранее не имевших дела с SBC, в первой статье мы рекомендовали читателям корпус Retroflag NESPi 4 и геймпад 8BitDo SN30 Pro+. Наш выбор был отнюдь не случаен, ведь данные девайсы являются наиболее универсальными среди всех представленных на рынке.

NESPi 4 можно без преувеличения назвать лучшим корпусом для Raspberry Pi 4, стилизованным под ретроконсоль, и речь здесь идет отнюдь не только об общем качестве исполнения. Киллер-фичей NESPi 4 является наличие встроенного адаптера SATA–USB, который обеспечивает возможность подключения к Raspberry Pi 2,5-дюймовых винчестеров или SSD и, более того, позволяет менять их так же легко, как игровые картриджи для оригинальной консоли, без необходимости разборки корпуса. Это не просто решает проблему хранения вашей игротеки, но и позволяет с легкостью превратить ретроконсоль в портативный мультимедийный центр на базе того же KODI. В свою очередь, 8BitDo SN30 Pro+ совместим не только с Raspberry Pi, но и с компьютерами под управлением Windows и macOS, андроид-гаджетами и даже с Nintendo Switch.

Благодаря всему перечисленному, даже если вы со временем разочаруетесь в самой идее иметь отдельное устройство для ретрогейминга, ваши деньги и усилия не пропадут даром, ведь импровизированную консоль можно будет с легкостью превратить в медиасервер или NAS, а геймпад — использовать практически с любой другой техникой. Но если вы, напротив, полны решимости обзавестись миниатюрной репликой любимой консоли своего детства, то и здесь Retroflag и 8BitDo найдут, что вам предложить.

NESPi PLUS

image-loader.svg

Визуально корпус практически идентичен NESPi 4, однако, в отличие от старшего брата, NESPi PLUS рассчитан на установку Raspberry Pi 2B/3B/3B+. Кроме того, у данной модели отсутствует SATA-адаптер, а под крышкой для отсека картриджей скрываются гнездо для Ethernet-кабеля и пара USB-портов для подключения геймпадов.

image-loader.svg

К сожалению, в каталоге Retroflag вы не найдете подходящих к данному корпусу контроллеров, однако здесь нас выручат 8BitDo N30.

image-loader.svg

Как и другие геймпады компании, беспроводные N30 являются универсальными и могут работать не только с Raspberry Pi, но и с ПК, мобильными устройствами и даже с Nintendo Switch.

SUPERPi J/U

image-loader.svg

Не забыли в Retroflag и о другой знаковой приставке Nintendo, причем производитель предлагает сразу два варианта корпуса на выбор: в стиле японской (с индексом J) и американской (индекс U) версий консолей. Для обеих модификаций выпускаются совместимые USB-геймпады характерной расцветки, получившие официальные названия Classic USB Controller J и U соответственно. Прекрасной альтернативой последним способны стать беспроводные контроллеры SN30 от 8BitDo.

624dd2eceda4f8a0edf961a4746fefaf.jpg

В основе конструкции перечисленных корпусов лежат одни и те же принципы:

  • пара USB-портов выведена на переднюю панель консоли для подключения контроллеров;

  • два других порта USB и LAN-разъем спрятаны под декоративной панелью левого борта, играющей роль защитной крышки;

image-loader.svg

  • в комплекте с каждым корпусом поставляется фальшкартридж, который на самом деле является кейсом для microSD-карт.

image-loader.svg

Подобно NESPi Case PLUS, корпуса семейства SUPERPi совместимы с Raspberry Pi 2B/3B/3B+, однако не поддерживают SBC четвертой версии из-за особенностей топологии печатной платы.

MEGAPi

image-loader.svg

Данный корпус совместим с Raspberry Pi 2B/3B/3B+ и представляет собой реплику знаменитой 16-битной приставки Sega Mega Drive. Помимо «портретного сходства», среди интересных особенностей модели стоит выделить откидывающуюся верхнюю фальшпанель, под которой притаился отсек для хранения флеш-карт, и боковую защитную крышку для microSD-слота, надежно защищающую последний от загрязнения.

image-loader.svg

Специально под данную модель корпуса Retroflag выпускает и аутентичные геймпады Classic USB Controller M, облик которых практически в точности повторяет дизайн оригинальных контроллеров для Sega Mega Drive, если не считать наличия кнопки «Select» и пары бамперов вместо кнопки «Mode».

image-loader.svg

Кроме того, в отличие от оригинальных геймпадов, Classic USB Controller M не позволяют установить стик на крестовину: центральное отверстие лишено металлической втулки с резьбой и носит декоративный характер.

Если же вы недолюбливаете проводные контроллеры, то можете приобрести 8BitDo M30.

6f9c055967c5e4118fbafcb7b710cebf.jpg

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

GPi

image-loader.svg

Уникальный в своем роде корпус, позволяющий собрать на базе одноплатного компьютера Raspberry Pi Zero/Zero W почти точную реплику Nintendo Game Boy. Хотя GPi получился немного компактнее, в остальном данная модель практически дословно цитирует легендарную портативную приставку.

image-loader.svg

Как и оригинал, GPi имеет внешний динамик с регулятором громкости, 3,5-миллиметровый мини-джек для подключения стереонаушников и может работать от сети или же автономно, получая питание от трех пальчиковых батареек. Однако, в отличие от Game Boy, необычный девайс от Retroflag обзавелся парой бамперов, практически не выделяющихся на рифленой поверхности задней панели.

image-loader.svg

В сочетании с качественным цветным IPS-дисплеем с разрешением 320 × 240 пикселей их наличие делает консоль более универсальной, и позволяет без особых проблем играть в проекты, разработанные не только для портативной консоли, но и для 8- и 16-битных домашних игровых систем, благо Raspberry Pi Zero, несмотря на существенно меньшую производительность (модель получила одноядерный процессор ARM1176JZF-S, работающий на частоте 1 ГГц и лишь 512 МБ оперативной памяти), вполне достойно справляется с эмуляцией тех же Sega или SNES.

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

image-loader.svg

Напоследок мы хотели бы обратить ваше внимание на один небольшой, но чрезвычайно важный нюанс, связанный с корпусами Retroflag, который многие новички упускают из виду. Как вы могли заметить, каждый из корпусов имеет функциональные кнопки «Power» и «Reset», однако, для того чтобы они корректно работали, сперва следует установить в систему необходимые скрипты, предоставляемые самим производителем.

Процедура установки для операционной системы RetroPie и любого полноразмерного корпуса (NESPi PLUS, SUPERPi, MEGAPi, NESPi 4) выполняется в два шага:

  1. после загрузки ОС войдите в терминал, нажав на F4;

  2. введите команду

wget -O -"https://raw.githubusercontent.com/RetroFlag/retroflag-picase/master/install.sh" | sudo bash

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

wget -O -"https://raw.githubusercontent.com/RetroFlag/retroflag-picase/master/install_gpi.sh" | sudo bash

После отработки скрипта и перезагрузки ваша ретроконсоль станет поддерживать безопасное выключение. С этого момента каждый раз после нажатия кнопки «Power» операционная система будет дожидаться полного завершения всех активных процессов записи на microSD-карту и лишь затем отключать питание одноплатного компьютера, что позволит нивелировать вероятность повреждения данных и файловой системы.

Оглавление

Ретроконсоль своими руками Часть 1. Выбираем «железо»

Ретроконсоль своими руками Часть 2. Установка и настройка RetroPie

© Habrahabr.ru