Как я превратил старый смартфон в игровую консоль с возможностью звонить

Обратите внимание: этот пост будет очень интересным, поскольку мы будем моделировать, проектировать и программировать наше видение N-Gage 2! Я постарался сделать статью интересной даже для читателей, не знакомых с темами 3D-печати и программирования микроконтроллеров :)

Я очень люблю ретро-игры и консоли. Иногда мне нравится играть в классические игры для NES, Sega Mega Drive или PSP. Однако особое место в моем сердце занимает игровой телефон Nokia N-Gage, который, к сожалению, не получил продолжения, как его старший брат Sony Ericsson Xperia Play. Недавно я разбирал свою коллекцию устройств и нашел на полке Galaxy S4 Mini. И тут я подумал: а что, если...

❯ Предисловие

Думаю, многие из моих давних читателей заметили, что около четверти постов в моем блоге так или иначе затрагивают тему игр и портативных игровых приставок. За почти три года существования этого блога мы не только вспоминали и исследовали игровое оборудование, но и ремонтировали некоторые из них, узнавали о разработке и «внутреннем» устройстве игр и даже пробовали свои силы в проектировании собственной консоли!

Идея сделать «портативное» устройство из полуфункционального гаджета пришла мне в голову примерно два года назад. В то время я хотел рассказать читателям, что многие старые устройства можно использовать в качестве одноплатных компьютеров и панелей HMI, поскольку на плате имеются контактные площадки шины UART, с которыми можно легко взаимодействовать в приложении Android! В качестве примера реального использования я взял планшет с неработающим сенсорным экраном, подключил к нему геймпад на базе RP2040 через UART и написал программу, которая считывает UART и передает состояния кнопок непосредственно в драйвер ввода:

Именно для этого проекта я приобрел Ender3 V2

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

Недавно я разбирал свою коллекцию гаджетов и среди полок со смартфонами Samsung нашел легендарный Galaxy S4 Mini, который когда-то подарил мне один из моих читателей. У смартфона нет задней крышки, а корпус имеет небольшую трещину посередине, но несмотря на то, что ему 12 лет, он до сих пор отлично работает и даже матрица AMOLED не выгорела!

И тут меня осенило: я вспомнил, что S4 Mini — это смартфон с довольно приличным аппаратным эмулятором и довольно крутым AMOLED-дисплеем, даже по современным меркам. Насколько я помню, никогда не было серийного игрового телефона с цельным корпусом и OLED-матрицей, а здесь передо мной оригинальный N-Gage, который я недавно купил на свалке и восстановил после попадания воды. Я взвесил все «за» и «против», набросал схемы и чертежи будущих устройств и начал возиться...

Все началось с куба...

Прежде чем приступить к работе, нам нужно решить, что потребуется для реализации такого гаджета на практике:

  • Для начала нам нужно подумать о том, как геймпад будет взаимодействовать с нашим устройством. Помимо моего хака UART, у нас есть два варианта: первый заключается в том, что микроконтроллер действует как устройство USB-HID (притворяясь клавиатурой) и подключается к OTG-хосту гаджета. Такой подход имеет ряд преимуществ, включая низкую задержку, но также имеет и множество других недостатков. Например, не все старые устройства поддерживают OTG, а одновременная работа USB-хоста и зарядка могут быть проблематичны (в зависимости от реализации OTG в каждом конкретном устройстве). Второй вариант — Bluetooth HID, который должен работать практически со всеми устройствами Android, но потребляет немного больше энергии и может иметь небольшую задержку ввода.

    После некоторых исследований я обнаружил, что у S4 Mini нет OTG, а это значит, что остается только один вариант — Bluetooth. Среди недорогих микроконтроллеров с BT выделяется только ESP32, цена которого практически эквивалентна трем упаковкам лапши быстрого приготовления. Мы выберем вместе.

  • Далее нам необходимо разработать внешний вид устройства. Изначально я ожидал, что устройство по форм-фактору и эргономике будет похоже на оригинальный N-Gage. Но поскольку я не хотел делать слишком длинную «колбаску», а бюджет доступного пространства в коробке был весьма ограничен, мне пришлось прибегнуть к некоторым хитростям — например, расположить блоки кнопок вертикально.

  • Теперь самое сложное — сформировать более или менее подходящее тело и подогнать детали так, чтобы их можно было соединить и закрепить каким-то образом. Я новичок в 3D-печати и полный новичок в проектировании корпусов, поэтому мне пришлось всего лишь смоделировать выпуклую сетку в Blender, импортировать ее в TinkerCad, а затем вырезать в ней отверстия с помощью CSG.

  • И самое простое, что можно сделать, это просто написать прошивку для микроконтроллера и спаять все вместе, чтобы наши кнопки не только приятно было нажимать, но и реально работали в системе!

Звучит как пятиминутное приключение. Но как это работает на практике? Давайте посмотрим!

❯ Моделируем корпус

Сначала я сел за моделирование корпуса устройства и оценил его размеры. Создание оболочки с использованием CSG на основе референса в TinkerCad оказалось проблематичным (по крайней мере, для меня), поэтому я решил смоделировать основание в Blender. Я снимал рендеринг N-Gage спереди, настроил камеру на ортогональную проекцию и начал снимать вдоль контура оригинального корпуса телефона. После этого я создаю ребра на одной половине тела, дублирую все вершины и зеркально отображаю их на другой стороне. Поэтому обе стороны фюзеляжа кажутся идентичными (изогнутыми.

Затем я удалил лишние края в середине и с помощью инструмента «Выдавливание» вытянул тело вдоль оси Z. Теперь это выглядит как нечто, что семиклассник мог бы сделать на уроке, используя самолеты:

Внимательные читатели, возможно, заметили недостаток, который я не заметил до первой печати из-за штриховки

Затем я использовал инструмент «Вставить грань», чтобы создать новую грань на плоскости, и нарисовал от нее переднюю часть тела. Таким образом, у нас получаются гладкие и мягкие стенки, которые мы затем можем сделать еще мягче с помощью модификатора Bevel:

Однако сейчас геометрия нашего тела полая, внутри ничего нет. Чтобы добавить внутреннюю стенку, мы воспользуемся модификатором Boolean (CSG) в Blender: продублируйте геометрию корпуса, немного уменьшите ее по осям X и Y (чем меньше копия, тем толще стенка), затем немного переместите ее вниз, затем добавьте модификатор Boolean к основному объекту корпуса, установите Mode на Difference, установите Copy на Second Object и нажмите Apply. Теперь наши тела больше не пусты!

Затем мы экспортировали модель в формате STL, импортировали ее в TinkerCad и измерили ее зубчатой ​​линейкой. Теперь пришло время измерить габариты нашего устройства и размер дисплея.

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

На этом подготовка заготовки корпуса завершена, и теперь приступим к реализации игрового контроллера.

❯ Геймпад

Изначально я решил спаять все кнопки геймпада на двух макетных платах — первую со «стрелками» разместить слева, а вторую с кнопками действий — справа. Так как места в коробке было очень мало, я решила распилить текстиль: для этого сделала надрезы канцелярским ножом, а затем вручную отломила ненужные части.

Я решил использовать в качестве кнопок обычные DIP-микропереключатели, так как в моем городе нет плоских SMD-кнопок, не говоря уже о кнопках с мягкой мембраной. И они тоже издают классный щелкающий звук. Как пользователь механической клавиатуры, я это гарантирую!

Остатки текстильного камня можно удалить напильником или просто обрезать канцелярским ножом

Существует несколько способов реализации обработки кнопок:

  • «Oncoming»: Самый простой и лучший для игровых контроллеров. Один из входных GPIO микроконтроллера оснащен подтягивающим резистором и кнопкой переключения линии заземления. Главное преимущество этого метода — возможность удерживать столько кнопок одновременно, сколько вам нужно, а если у вас недостаточно контактов на микроконтроллере, вы всегда можете использовать сдвиговый регистр!

  • На резисторе: Требуется наличие АЦП в микроконтроллере. Принцип его работы заключается в установке резистора определенного номинала на выходном конце каждой кнопки. Диапазон значений АЦП, соответствующих нажатиям кнопок, задается опытным путем в прошивке микроконтроллера. В планшетах этот подход иногда используется для таких кнопок, как питание, громкость и т д.

  • Матрица: используется для клавиатур, в том числе телефонов. Позволяет реализовать 16-клавишную клавиатуру, используя всего 8 сигнальных линий, но при использовании этого метода невозможно одновременно нажать несколько кнопок на одной «линии». Это проблема некоторых китайских консолей: вы не можете удерживать клавиши «вверх» и «влево» или одновременно нажимать клавиши A и B!

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

После этого я наконец распечатала первую заготовку на пробу, и все в ней идеально подошло! Время от размышления до первой пустоты — около 5–6 часов:

❯ Стыкуем корпус

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

Сначала я решил сделать толкатели кнопок. Для клавиш со стрелками я решил сделать классическую крестовину в стиле GBA, а кнопки действий — цилиндрическими. Тут ничего сложного: подгоняем размеры под размер кнопки, делаем небольшую выемку внизу, которая будет «крышечкой» для самой кнопки, а по бокам добавляем «юбку» в качестве ограничителя, чтобы они не выпадали из корпуса:

Это ей идеально подходит!

С крестовиной все стало немного сложнее: изначально я сделал монолитную крестовину в стиле GameBoy, но поскольку расстояние между кнопками было сравнительно небольшим, при нажатии стрелки иногда нажималась и вторая кнопка. Вот почему я решил разделить его на несколько частей, оставив рельеф в середине для лучшего восприятия. Я распечатал несколько разных вариантов: отрегулировал зазор, чтобы уменьшить люфт, и добавил тактильные выемки, но в конечном итоге остановился на классическом варианте. Следующим вопросом было, как закрепить плату с геймпадом на задней стенке корпуса. Я долго думал над вариантами: думал вбить винты и расплавить гайки, но потом понял, что лучшим и самым надежным решением будет склеить затвор дихлорэтаном, чтобы при необходимости его можно было снять, не разрушая корпус, но при этом он мог выдержать постоянное усилие игрока!

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

После того, как зазор был отрегулирован, я приступил к моделированию задней крышки. Чтобы убедиться, что это не выбивается из общего стиля, я начал с передней части корпуса: продублировал ее, отменил все операции CSG, типичные для основного корпуса, и вырезал стенки с помощью большого куба.

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

Вот так, наконец, завершается ход дела!

❯ Пишем прошивку

Теперь, когда корпус нашего устройства готов и элементы внутри него более-менее подключены, можно приступать к написанию прошивки. Как я уже говорил, я решил выбрать ESP32 в качестве микроконтроллера, потому что он дешевый и имеет хороший стек BT:

За основу я взял официальный пример устройства BT HID с гитхаба Espressif. Собрав прошивку и убедившись, что все работает нормально, я приступил к ее адаптации под свои задачи. Сначала я написал код для опроса кнопок: я установил GPIO в режим ввода с подтяжкой к высокому уровню, а затем, по запросу, я использовал GPIO для цикла по массиву и записи состояния кнопок в отдельный массив:

uint8_t input_gpio_map = {
INPUT_GPIO_LEFT,
INPUT_GPIO_RIGHT,
Входной GPIO повышается,
INPUT_GPIO_OFF,
Вход
Вход
Вход
Вход
Вход
INPUT_GPIO_F
};

uint8_t статус входного ключа [количество входных ключей];

недействительный input_init_hw()
{
для (int i = 0; i < INPUT_KEYS_COUNT; i++)
{
gpio_reset_pin(input_gpio_mapping[i]);
gpio_set_direction(input_gpio_mapping[i], GPIO_MODE_INPUT);
gpio_set_pull_mode(input_gpio_mapping[i], GPIO_PULLUP_ONLY);
}
}

void input_update_key_state()
{
для (int i = 0; i < INPUT_KEYS_COUNT; i++)
input_key_status[i] = !gpio_get_level(input_key_map[i]); // TODO: Реализовать устранение дребезга на основе временных меток
}

Любая механическая кнопка имеет свойство, называемое дребезгом. Это происходит в тот момент, когда мы отпускаем кнопку, но переключатель еще не успел полностью подняться в крайнее верхнее положение. Существуют разные способы решения этой проблемы, самый простой из них — программный, когда мы обновляем состояние кнопки только по прошествии определенного времени (в миллисекундах) с момента последнего обновления.

Все HID-устройства описываются специальным дескриптором, но формат пакетов, сообщающих о состоянии устройства, сильно отличается: мыши передают ускорение по осям X и Y и состояние кнопок, клавиатуры передают до 8 нажатых клавиш одновременно (наследие PS/2), геймпады имеют целый ряд стандартов (DirectInput, XInput.. и так далее. Кстати, именно поэтому внешние геймпады обычно имеют несколько режимов).

Обратите внимание: 12 лучших смартфонов Xiaomi.

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

// Сопоставить внутренние коды клавиш ввода с HID
int hid_key_mapping = {
HID_KEY_СТРЕЛКА ВНИЗ,
HID_KEY_СТРЕЛКА ВЛЕВО,
HID_KEY_СТРЕЛКА ВВЕРХ,
HID_KEY_СТРЕЛКА ВПРАВО,
HID_KEY_Z,
HID_KEY_LEFT_GUI,
HID_KEY_V,
HID_KEY_ENTER,
HID_KEY_C,
Пара ключей
};
uint8_t hid_report[8];

vTaskDelay(1000/portTICK_PERIOD_MS);

в то время как(1) {
inputUpdateKeyState();

vTaskDelay((1000/60)/portTICK_PERIOD_MS);
если (сек_конн) {
int hid_report_offs = 0;
memset(&hid_report, 0, sizeof(hid_report));

// Одновременно можно нажать максимум 8 клавиш
для (int i = 0; i < INPUT_KEYS_COUNT; i++)
{
если (hid_report_offs == 8)
отдых;

если (inputKeyState[i])
{
hid_report[hid_report_offs] = hid_key_mapping[i];
СкрытьОтчетЗакрыть++;
}
}

esp_hidd_send_keyboard_value(hid_conn_id, 0, &hid_report, hid_report_offs);
}
}

Смотреть! Все идеально!

❯ Доводим ПО смартфона

мы почти на финальной стадии и осталось только немного модифицировать прошивку смартфона! Для этого вам сначала нужно получить root-права: установите CWM через Odin и установите SuperSU!

поскольку у меня в чехле не было кнопки питания, я решил сделать так, чтобы устройство автоматически включалось во время зарядки — прямо как на iPhone! Когда большинство смартфонов отображают анимацию зарядки, на самом деле они загружают ядро ​​Linux и запускают специальную программу. Если заменить эту процедуру на перезагрузку в обычный режим, то получим автоматическую загрузку устройства!

на смартфонах Samsung за это отвечает двоичный файл /system/bin/lpm или /system/bin/playlpm. Сначала я думал сделать жесткую ссылку на ребут, но это не сработало, пока не были запущены некоторые службы Samsung. Затем я узнал, что можно отправить запрос непосредственно ядру на перезагрузку устройства с помощью sysrq.

Далее я написал простой скрипт:

/система/bin/sh
эхо 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

но это не работает. Я понял, что lpm нужно заменить другой домашней программой. Итак, эта маленькая утилита была написана и собрана с использованием NDK, и все уже работает отлично:

int main(int argc, char** argv)
{
system("echo 1 > /proc/sys/kernel/sysrq");
system("echo b > /proc/sysrq-trigger");
}

Далее нам предстоит решить проблему виртуальных кнопок: поскольку кнопки «Домой» нет, а на корпусе консоли виден только дисплей смартфона, нам нужен способ каким-то образом управлять системой. Для этого достаточно пропатчить build.prop и добавить qemu.hw.mainkeys=0. В S4 Mini программные кнопки работают немного криво (только в портретной ориентации — т.е в режиме смартфона в нашем случае), но в целом нормально. Ради интереса я немного поигрался с build.prop и добавил несколько ссылок на N-Gage :)

❯ Аппаратные доработки

Далее нам нужно решить проблему зарядки. Как я уже сказал выше, решил выбрать Type-C. Я заказал разъем на плате, разобрал смартфон и перекинул перемычки от цепи питания и сигнальных проводов к разъему.

В то время все разъемы Samsung были нестандартными и имели много пластика, что затрудняло их аккуратную пайку к VBus

Теперь нам нужно решить проблему питания микроконтроллера. В режиме активной передачи данных потребление тока ESP32 в режиме BLE составляет до 130 мА (что является большим числом, учитывая параллельный тракт GSM, мобильные телефоны 2000-х годов потребляли меньше!). Поскольку сама плата ESP32 использует LDO-стабилизатор AMS1117 с высоким падением напряжения 1,2 В, при использовании с обычной литий-ионной батареей необходимо использовать ULDO с падением напряжения около 0,3 В...

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

  • 0,8 В–1,2 В — VCore, это шина питания ядра процессора. Вся или почти вся внутренняя логика системы на кристалле работает на нем.

  • 1,2–1,8 В VRef — обычно это опорное напряжение, при котором работает процессор вместе с внешней логикой. Однако некоторые модули (например, камеры) также могут иметь такое напряжение на одной из своих шин питания, в зависимости от платформы.

  • 3,3 В — Ну, тут все довольно очевидно. Напряжение 3,3 В является одним из наиболее распространенных в области микроэлектроники и может широко использоваться в различных модулях. Например, его можно использовать для питания модулей камер, различных датчиков, контроллеров сенсорных экранов, усилителей и т д. Это именно та силовая шина, которая нам нужна.

однако уровень 3х3 может быть более разумным. Я настоятельно рекомендую не подключать нагрузку более 130 мАч к любой цифровой линии, иначе можно сжечь процессор или контроллер питания. Лучше всего запитать эту шину питания от исправных развязывающих конденсаторов, но помните, что на шину могут быть поданы нагрузки и другие устройства, и вы можете перевести CP в режим защиты при нагрузке в сотни мА!

Для S4 Mini у меня было руководство по обслуживанию со схемой, с помощью которой я определил необходимое напряжение. Изначально у меня была возможность получить 3,3 В от блока питания eMMC, но при изучении схемы я заметил еще одну подходящую шину питания - 3P0 (то есть как раз 3 В), которая питает Wi-Fi, ИК-порт и сенсорный экран.

Я решил посмотреть техническое описание микроконтроллера и убедился, что он будет работать даже при входном напряжении 3 В, но это пороговое напряжение, при котором чип может работать. Если питание нестабильно и падает, МК зависнет или перезагрузится. Однако я уверен, что выход DC-DC блока управления смартфона работает нормально. Я быстро снял перемычку и включил МК буквально «в эфире», чтобы проверить, что все работает стабильно, затем припаял несколько проводов от кабеля LVDS и закрепил их УФ-маской.

Хорошо, теперь пришло время собрать все воедино! С помощью EDC был смонтирован скейтборд, вставлена ​​плата геймпада, припаяны все блоки питания и нарезана резьба в задней крышке.

На МК ничего не прилипло - просто я не смыл флюс, когда делал фотографию)

Теперь мое творение наконец-то собрано! Давайте посмотрим, что я собрал!

❯ Тестируем

Конечно, одним из главных критериев для будущих игровых смартфонов является возможность сохранения функциональности телефона. Другими словами, я очень надеюсь, что устройство сможет повторить концепцию N-Gage и по-настоящему совместить функции совершения звонков и удобного игрового процесса!

В целом, я считаю, что я проделал хорошую работу. Помимо самого номеронабирателя, Android 4.4 по-прежнему предоставляет пользователям базовые возможности веб-браузинга (большинство веб-сайтов не открываются.. ну, OpenNet нам вполне подходит!), а также мессенджеры Telegram и VK by Kate Mobile. Однако есть некоторые тонкие различия... Я выбрал GT-I9190, версию S4 Mini с одной SIM-картой и поддержкой 3G. А как вы знаете, 3G в России уже практически не используется, так что кроме Wi-Fi можно использовать только EDGE :)

Вчера я опубликовал статью на Pikabu, и некоторые читатели задали резонный вопрос: на самом деле это смартфон 2013 года, и на первый взгляд он ничего не может сделать в современных реалиях. Однако спешу вас заверить, что суть дела не так уж и плоха! Snapdragon 400 был более чем достаточен для большинства мобильных игр того времени, не говоря уже об эмуляторах. Кроме того, в отличие от старых Snaps 600 (800 еще не вышел), он не выделяет так много тепла и более терпим к и без того небольшим батареям!

Однако я уже писал где-то об опыте использования смартфона за последние несколько лет в современных реалиях, поэтому рекомендую продолжить тестирование игры. Начнем с эмулятора NES.

Когда вы запустите свою любимую игру Super Mario Bros на потрясающей матрице AMOLED, вы сразу поймете, что весь проект определенно был не напрасен. Отключив линейный фильтр и растянув изображение на весь экран, вы будете поражены тем, насколько насыщенными стали цвета — не совсем как на ЭЛТ-телевизоре, но все равно очень хорошо! Симулятор работает очень быстро!

Напомню еще раз, что с правой стороны рамки нет, только неисправная софт-кнопка. Давайте наконец поаплодируем вместе :)

Давайте перейдем к чему-то более красочному и живому, а именно к Sega Mega Drive с оригинальным Соником! Здесь игра идет так же гладко, звук захватывает дух, а графика выглядит максимально приятной. Некоторое время матрицу Samsung AMOLED критиковали за PenTile и слегка неестественные цветовые схемы.. но в симуляторе это, похоже, добавляет шарма.

Далее я рекомендую попробовать классику DOS - Wolfenstein 3D. Помимо Wolf я хотел добавить в тест Quake.. но порт имел проблемы и не запускался. Судя по всему, даже игры, работавшие на 286, будут отлично работать на S4 Mini:

Что ж, местные игрушки здесь тоже хорошо подходят. Вы можете насладиться такими аркадными играми, как Angry Birds, Fruit Ninja или Asphalt!

❯ Заключение

Это простое, но функциональное устройство, которое мы имеем сегодня. Вы можете построить ее самостоятельно, я разместил схемы, код прошивки и исходные файлы модели на своем Github. В TinkerCad вы можете «потрогать» свое тело.

Сама разработка заняла всего семь дней, большую часть времени ушло на доработку деталей. Да, на этой неделе я мало спал и в какой-то момент у меня даже случилась паническая атака. Однако я получил массу удовольствия от процесса разработки. Так что же нужно 23-летнему парню, кроме написания кода, исследования оборудования и ВАЗа!?

Жду вашего мнения о моих самоделках в комментариях! Если вам интересна тема ремонта, моддинга и программирования гаджетов прошлых лет, подписывайтесь на мой Telegram-канал «Happiness Fan Club», где я публикую статьи о закулисье, иногда полезные посты и немного шилдпоста! Если вам интересны мои видео на эту же тему, рекомендую подписаться на мой канал на YouTube.

Всего голосов:
Всего голосов:

Важный

Друзья! В рамках подготовки статьи о разработке самодельных игрушек из необычных устройств объявляется поиск телефонов и приставок! В 21 веке китайцы часто выпускают недорогие телефоны с игровой направленностью — обычно у них есть какой-нибудь геймпад (джойстик) или как минимум две кнопки, выполняющие функции A/B на верхней панели устройства, а также предустановлен эмулятор NES/Sega. Фишка в том, что на таких телефонах можно запускать нативный код и портировать на них новые эмуляторы, что я и хочу сделать, написать подробную статью и записать видео об этом! Если у вас есть телефон с таким форматом и вы готовы его подарить или продать, напишите мне, пожалуйста, в Telegram (@monobogdan) или в комментариях. Меня также интересуют Android-приставки для смартфонов (Func Much-01 точно есть на российском рынке), формат контента будет немного отличаться :)

Я также ищу старые (2010-2014) копии смартфонов таких брендов, как Samsung, Apple и т д. Они обычно оснащены очень интересными чипсетами и хорошо поддаются моддингу, несколько статей уже опубликованы, но у меня все еще есть несколько идей по их моддингу! Также, возможно, у кого-то все еще есть один из самых ранних смартфонов Xiaomi (серия Mi), Meizu (все еще использующий Exynos) или телефоны Motorola на базе Linux (такие как EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т д. Я хотел бы подготовить специальную статью и видео о них, потому что на самом деле они использовали очень мощные процессоры того времени, допускали серьезный моддинг и даже могли запускать Quake!). Большое спасибо за ваше пожертвование!

Статья написана при поддержке TimeWeb Cloud. Подпишитесь на меня и @Timeweb.Cloud, чтобы получать новые статьи каждую неделю!

[Мои] Опросы Поделки Поделки Гаджеты для смартфонов Телефон Игровая консоль Программирование своими руками Esp32 Микроконтроллер Samsung Android Arduino Длинный пост 207

Больше интересных статей здесь: Гаджеты.

Источник статьи: Как я превратил старый смартфон в игровую консоль с возможностью звонить.