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

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

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

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

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

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

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

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

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

Кстати, о тюнинге. Пожалуй, главной «ложкой дегтя» в случае с 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++ или другого редактора;

  • вызвать терминал 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 таковые составляют:

  • arm_freq=2200 (по умолчанию 1500/1800 МГц);

  • gpu_freq=750 (по умолчанию 500 МГц);

  • over_voltage=6.

Разгонный потенциал предыдущих модификаций «малинки» несколько скромнее, однако дополнительные 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 рублей.

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

  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

0x1

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

1

0x2

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

2

0x4

Троттлинг

3

0x8

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

16

0x10000

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

17

0x20000

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

18

0x40000

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

19

0x80000

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

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

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

Еще одним преимуществом карт 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

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

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

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

SUPERPi J/U

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

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

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

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

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

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

MEGAPi

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

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

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

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

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

GPi

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

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

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

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

Напоследок мы хотели бы обратить ваше внимание на один небольшой, но чрезвычайно важный нюанс, связанный с корпусами 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