Около двух лет назад я купил на онлайн-барахолке очень занимательный телефон игровой направленности под именем Kechaoda K110. На первый взгляд ничего необычного, в телефоне была предустановлена многоигровка на 80 игр, но мне захотелось чего-то большего и я сдампил прошивку устройства, начав ковырять её в hex-редакторе на манер наличия обычного рома... Но то, что я обнаружил, разобрав устройство, повергло меня в шок и восторженные возгласы в сторону китайских инженеров. Интересно узнать о том, как китайцы сделали уникальный двухпроцессорный телефон всего за 2 000 рублей? Тогда жду вас под катом!
❯ Предисловие
Поскольку сегодняшняя статья у нас о весьма редком представителе телефона-игровой консоли, перед фактическим обзором устройства предлагаю вспомнить предысторию появления мобильного гейминга в целом.
Мобильный гейминг уже довольно давно и прочно вошёл в нашу повседневную жизнь. Игры на телефонах начали появляться ещё в самом начале нулевых, когда их ресурсов стало хватать не только на обработку GSM-сети, но и на запуск различных прикладных программ. За место под солнцем боролось сразу три программные платформы:
-
Первой платформой была Java, а конкретно J2ME, предоставляющая относительно унифицированный способ разработки приложений под самые разные телефоны и коммуникаторы. J2ME отличалась довольно низким порогом вхождения и довольно высокой производительностью, в частности благодаря тому, что большинство коммерческих Java-машин поддерживали JIT, а ARM даже ввели набор инструкций для ускорения JVM-байткода! Пользователи же полюбители Java в первую очередь за расширяемость и наличие крутейших фич: например программного растеризатора 3D-графики, который позволял выдавать очень неплохую графику на кнопочных телефонах с процессорами всего 100-200МГц:
-
Вторая платформа называлась Mophun и была менее распространенной, но считалась прямым конкурентом J2ME. Игры для Mophun писались на диалекте C, который как и J2ME интерпретировался, однако JIT (насколько мне известно) в нём не было. В основном, Mophun-приложения поддерживались на телефонах Sony Ericsson и позже на смартфонах с Symbian на борту, да и в отличии от J2ME был предназначен скорее для игр, чем для прикладных прлиожений.
-
Третья платформа называлась Qualcomm Brew. Её нечасто можно было встретить в СНГ, поскольку приложения распространялись через сети оператора и стоили денег, пиратить программы можно было только на джейлбрейкнутых устройствах, коих было мало. Основное отличие Brew от других платформ — приложения пишутся на обычном C и соответственно являются обычными нативными бинарниками, совместимыми только с устройствами на чипсетах Qualcomm.
В 2002 году, главными портативными консолями были GameBoy Color и GameBoy Advance. Nokia, недавно выпустившая свой первый Symbian-смартфон Nokia 7650, смекнула что на базе смартфонной платформы можно сделать свою собственную игровую консоль — да ещё и гораздо мощнее чем консоли от Nintendo! Изначально был представлен концепт N-Gage, а уже в марте 2003 года вышел первый телефон в подобном форм-факторе — 3300. И хотя 3300 был S40-телефоном и был больше ориентирован на мультимейные возможности, тем не менее его вполне можно назвать одним из первых игровых телефонов в целом.
В октябре того же года, на рынке появился N-Gage — легендарный смартфон, который из-за некоторых инженерных особенностей, не получил широкого распространения среди пользователей на релизе, но со временем стал цениться среди любителей поиграть в дороге благодаря портам таких шедевров, как Sonic N, Tomb Raider с PS1 и самостоятельным тайтлам как например Asphalt 2.
N-Gage экономически был не очень успешен, поэтому многие производители (кроме локальных рынков азиатских стран) отложили идею разработки игрового телефона в долгий ящик... кроме китайцев! Уж они чего только не делали: клоны N-Gage, причудливые игровые телефоны, игровые айфоны, телефоны-PSP... и эти телефоны действительно выходили на рынок! Ну не гении ли?
Сейчас всё те же китайские производители экспериментируют и выводят на рынок как эмуляторные консоли с Linux на борту, так и очень редко игровые телефоны с настоящими, физическими кнопками. Два года назад изучая онлайн-барахолку, я наткнулся на объявление о продаже занимательного игрового телефона — Kechaoda K110, который явно был похож на игровую консоль и более того, смахивал на более широкую версию Nokia N-Gage! Само собой я сразу же его заказал, а как только телефон приехал ко мне, то принялся дампить прошивку и искать возможность добавить ещё игр!
❯ Что внутри?
Включив телефон, я не обнаружил в меню никаких игр и эмуляторов, кроме стандартного сокобана. Оказалось что переход в игровой режим производится нажатием соответствующей кнопки с геймпадом... что вызвало у меня достаточно смешанные чувства. Сначала я подумал, что инженеры каким-то образом ставят на паузу задачи с MMI (интерфейсом устройства) и освобождают ресурсы, дабы освободить процессорное время для эмулятора.
Поэтому я сразу же решил снять дамп прошивки с устройства, дабы изучить его в hex-редакторе. Дампить устройства на процессорах Spreadtrum несложно: нужно лишь найти Boot key (кнопку, которая переведет телефон в режим прошивки) и подключить телефон с зажатым буткеем к ПК, а затем «слить» прошивку с помощью сервисного софта типа Miracle Thunder. Однако этого будет мало, ведь из-за использования очень маленьких SPI-флэшек всего на 4Мб в качестве основного накопителя, код и все ресурсы сжимаются на этапе сборки прошивки и распаковываются на лету. Вот уж необычное решение!
Данные в прошивке запакованы алгоритмом сжатия LZMA. В сети уже есть готовый распаковщик который помог мне расковырять дамп и перейти к изучению разделов флэшки в hex-редакторе. Всего эти раздела 4: kern с ядром RTOS, res с ресурсами по типу строк и значков, а также usr с пользовательскими настройками, строками и вероятно mmi-программами и ps, где тоже есть какая-то часть модулей, связанная с RTOS. Однако вот незадача, никаких дебаг-строк от опен-сорсных эмуляторов NES, ни самих ромов (которые имеют несколько форматов, но самый распространенный из них — iNES) я не обнаружил.
После этого я решил разобрать устройство, дабы понять где же хранятся ромы для NES. Телефон состоит из двух частей. Слева у нас плата с телефонной частью устройства, которая состоит из процессора Spreadtrum SC6531E, 4Мб SPI-флэшка и 4Мб ОЗУ. Стандартная телефонная платформа для бюджетных кнопочных устройств. Справа же была некая плата, к которой идёт шлейф на целых 39 пинов и на которой расположена часть кнопок. Многовато для матричной клавиатуры, согласитесь?
С обратной стороны правой платы я обнаружил ни что иное как... соплю! Вернее, более корректно сказать бескорпусной чип, т. е. кристалл, приаянный к плате и покрытый сверху специальным компаундом. И тут паззл начал собираться: рядом стояла SPI-флэшка формата 64x8, некий чип вообще без какой либо маркировки (возможно усилитель) и во главе некий процессор без корпуса!
Я сразу же выпаял SPI-флэшку и установил её в программатор, дабы поскорее её прочитать и попробовать понять, можно ли заменить список игр на ней. Микросхемы с подобных плат необходимо выпаивать только паяльником! При работе с феном есть риск повредить компаунд и соответственно крайне хрупкую структуру кристалла, а заменить такой чип в домашних условиях нереально.
Вычитав дамп, я обнаружил текстовые строки с описанием игр в меню многоигровки и попытался понять структуру картрирджа. Я начал гуглить что-то в духе «Sup game console 8Mb SPI flash» и наткнулся на информацию, что иногда в современных ультрабюджетных консолях с Dendy-многоигровками используются SPI-флэшки с процессорами производства компании VRTech. Как я узнал позже, VRTech не просто делают современные аппаратные клоны «денди» в виде системы на кристалле, но и дорабатывают её архитектуру: добавляют поддержку ЖК-матриц, новые команды и регистры и иные прикольные штуки. Есть даже компилятор C и SDK под их 6502-совместимые ядра!
Дампы флэшек для процессоров VRTech содержат в начале код для инициализации ЖК-дисплея и возможно какой-то периферии (об этом сможет рассказать гуру NES — @ClusterM, в связи с чем приглашаю его в комментарии) и дамп картриджей с OneBus-маппером. То есть технически, мы можем не просто заменить многоигровку, адаптировав дамп с другой консоли, но и расширить список игр небольшим аппаратным хаком: необходимо припаять параллельно вторую SPI-флэшку, однако выводы ChipSelect у каждой вывести на какой-нибудь миниатюрный тумблер в корпусе, который коммутировал бы массу на нужный нам чип памяти! Помимо SDK, на сайте VRTech лежал и эмулятор, который смог загрузить мой дамп, пусть и с косяками (картинка появилась лишь на пару кадров и затем пропала). Зато я точно смог установить, что за процессор используется в игровой части телефона — VRTech VT09!
По итогу функциональная схема телефона простая как табуретка и одновременно гениальная: когда мы переходим в игровой режим, телефонная часть отключает свои линии для управления дисплеем, выход с ЦАП'а на усилитель и GPIO для прослушивания состояния матричной клавиатуры, а затем подаёт питание на процессор игровой части устройства. Затем, когда пользователь зажимает кнопку «назад», телефонная часть снимает питание с NES-процессора и берёт обратно контроль периферии. Ну гениально же, разве нет? :)
Таким образом, разработчики устройства почти полностью решили проблему нормальной эмуляции ретро-консоли на слабом телефоне. Нет необходимости оптимизации эмулятора, поскольку он все равно не сможет дать нормальный опыт игры на относительно слабом процессоре. Постоянно будет пропуск кадров, попытки детекта пустых циклов и артефакты эмуляции ради ускорения скорости работы. В аппаратном клоне все игры всегда работают в 50/60 FPS, без какого либо инпут-лага и без тормозящего звука. И всё это за каких-то дополнительных 5-10 рублей за каждый чип (не думаю что он стоит дороже учитывая отсутствие корпуса и цену консолей по типу Sup). Фактически, Kechaoda K110 — условный брат-близнец игровой консоли Sup!
❯ Обзор
Давайте же посмотрим, как телефон себя проявляет на практике. В целом, телефонная часть здесь стандартная, две симки, MicroSD, стандартная прошивка как почти во всех свежих кнопочных телефонах. Нет поддержки ни Java, ни MRP, а всё из-за лицензий и экономии на памяти, поэтому нет возможности поставить никакие сторонние приложения!
Однако как телефон, K110 меня разок выручил. Мало того что такси вызвал, так ещё и поиграть в дороге успел - максимальный кайф! Однако есть и минусы — например, нет возможности синхронизации контактов к компьютеров окромя VCF через Bluetooth, а память для контактов относительно мала, что не очень удобно.
На фотографиях можно было заметить огромную планку с 8-светодиодами. Здесь она выполняет роль фонарика... и очень яркого. Настолько, что я не стал светить в камеру смартфона пока снимал ролик, дабы не навредить зрителям с эпилепсией! В целом видно что китайцы стараются сделать звонилки не только дешевыми, но и практичными! Во время игры, телефонная часть не отключается: если поступает звонок, то телефон начинает ярко моргать светодиодами.
А ещё у этого телефона просто невероятно громкий динамик. Телефон в одиночку может выполнять функции колонки с FM-радио и восроизведением музыки с MicroSD, хотя качество конечно не идеальное. Но вполне достойное!
Ну и конечно-же пришло время поиграть в игры! В телефоне предустановлена многоигровка на 84 игр. Среди них есть платина NES - и Contra, и Super Mario Bros (причем и с хаками!), и TMNT, так что поиграть есть во что.
Все игры идут в железные 60 кадров в секунду и в них нет артефактов от эмуляции. Однако звук у процессоров VRTech не идеально повторяет оригиальный. В целом, вполне играбельно. Также минус в том, что в играх нельзя сохраняться от слова совсем, поскольку NES то аппаратный :)
Ниже видос с таймкодом из моего ролика об этом телефоне, для большей наглядности:
❯ Заключение
Вот такой интересный телефончик сделали китайские инженеры. Ведь это действительно гениально: зачем заморачиваться с оптимизацией эмулятора, фреймскипом, попытками эмулировать нормально звук, когда можно просто поставить чип за 5-10 рублей на плату и передавать ему управление, когда пользователь хочет поиграть игры...
Конечно такой подход не лишен минусов, однако я лично оценил предприимчивость инженеров этого безусловно интересного аппарата. Надеюсь и вам было интересно, жду ваше мнение в комментариях! Если вам интересна тематика ремонта, моддинга и программирования под гаджеты прошлых лет, подписывайтесь на мой Telegram-канал "Клуб фанатов балдежа", куда я выкладываю бэкстейджи, ссылки на новые статьи и видео и немножечко щитпоста.
Очень важно! Разыскиваются девайсы для будущих статей!
Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию 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. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:
Комментарии (27)
KadansRuslan
04.01.2025 14:09ps.bin он вроде как Bootloader RTOS основного телефона, который по идее загружает раздел Kernel RTOS
bodyawm Автор
04.01.2025 14:09Судя по упоминаниям MMI, его функции несколько шире чем загрузчика) И раздел слишком большой
KadansRuslan
04.01.2025 14:09Разделы: usr.bin это System RTOS (хранится только код самой rtos), res.bin это System Resource RTOS (хранятся все ресурсы rtos ). usr.bin и res.bin они связаны друг с другом (ты можешь собрать ps-stone.bin без usr.bin и res.bin, но не можешь собрать ps-stone.bin: с res.bin но без usr.bin, или с usr.bin но без res.bin). Я так думаю в ps.bin может хранится помимо кода загрузчика, главное лого (картинка при включении телефона пока идет загрузка всей ос), код который отвечает за работу радиомодуля BaseBand (в самом SoC SC6531E есть 3 основных модулей это: MicroControllerUnit, BaseBandUnit, MultiMediaUnit), код отвечающий за роботу NVRAM памяти телефона.
Disamas
04.01.2025 14:09Сейчас бы видео на ютуб заливать. Считаю это как минимум неуважением к аудитории.
bodyawm Автор
04.01.2025 14:09Я это предусмотрел, видосы я заливаю и в ВК Видео, но по причине не очень лояльного к ВК отношения на Хабре, прикреплять не стал.
irnis
04.01.2025 14:09кстати, а как к Хабру относится "Платформа" (plvideo.ru)? И как Хабр относится к нему :)?
На мой взгляд - самый удобный плеер... да, цельнотянутый с ютуба... ну... копировать - так лучшее, а не творить неведомые аналоговнет...bodyawm Автор
04.01.2025 14:09Не знаю. Мало пока аудитории чтобы был смысл активно перезаливать туда видосики.
На рутуб смысла нет т.к рекомендации просто нет, видосы за несколько месяцев менее 100 просмотров набрали
ilyamodder
04.01.2025 14:09Имхо, считать, что аудитория хабра не сможет обходить блокировки и заливать видосы куда-то еще (или просить об этом в комментах) - куда большее неуважение.
MrZorg
04.01.2025 14:09Уважаемый автор, png картинки по 5+ мб очень затрудняют чтение статьи. По какой-то причине хабр стал еле еле отдавать картинки.
bodyawm Автор
04.01.2025 14:09Странно... пнгшки я загружаю только в виде скриншотов.
vladkorotnev
04.01.2025 14:09Если статью переоформляют в таймвебе в старый редактор, то они часто переносят картинки на хабрастор через буфер обмена — а таким образом все фотографии превращаются в PNG. У меня тоже пара статей, пострадавших таким образом, есть.
vvzvlad
04.01.2025 14:09Да, у меня уже неделю проблемы с картинками, грузятся как на диалапе. Думал у меня проблема с моей связью, но видимо нет.
@Boomburumвы знаете о проблеме?
NickDoom
04.01.2025 14:09Щикардосный девайс ^_^ Такое же бы про 8086-е с метром памяти и… и пусть даже EGA %) Всё равно 8086 в его натуральном виде будет VGA несколько секунд только перерисовывать, не говоря уже о :) А телефон легко сэмулирует дисководы. 1.2 и 1.44 :) Нереальный шик для 8086-го, круче только FM-винт %) или даже MFM %)
Попробую примазаться со своими идеями к чужой славе, кек: а какое примерно нужно железо, чтобы сделать смартфон чисто под мессенджеры? Судя по требованиям для AndroidX86, нужно устройство процессорсодержащее, идентичное натуральному, и рамы хотя бы гиг, если очень тщательно везде ужиматься. Естественно, оно должно хотя бы для виду поддерживать апи свежих «вёдер» — чтобы мессенджер согласился ставиться и не отплёвывался от «устаревшего» телефона. Ну, и экран такой, чтобы хотя бы можно было текст разглядеть.
Но железа «звонилки», пожалуй, не хватит… или?..
StjarnornasFred
04.01.2025 14:09какое примерно нужно железо, чтобы сделать смартфон чисто под мессенджеры
Ну, легендарный МТ6580 в 2024 году ещё попадался в новых смартфонах, так что...
NickDoom
04.01.2025 14:09Хорошо, но как-то явно жирно КМК для «минимальной мощности, чисто под мессенджеры» :-D
К нему все programming guides под NDA, что ли? Ничего не нашёл. Если да, то вообще на фиг он тогда честному айтишнику :)
whocoulditbe
04.01.2025 14:09Раз уж такая пляска пошла...
Я занимаюсь разработкой homebrew для плееров Walkman на линуксах, NW-A50/40/30. Мне нужны девайсы для тестирования, желательно в физической доступности (СПб). Есть ли какие-нибудь российские технические сообщества, куда можно кинуть зов помощи? У меня есть только A50, на котором всё ок, а вот на A40 возникли непреодолимые (тестером из Австралии) трудности.
LTVA
04.01.2025 14:09Железка интересная! Вот только печально, что не могу найти даташиты на СнК VRTech. Кто-то может поделиться? Особенно интересует реализация синтеза звука, поскольку дендевский звук знаю вдоль и поперёк (включая все чипы расширения)
itBestRay
04.01.2025 14:09Прикольная инженерная находка: фактически отдельная железная Dendy-консоль внутри телефона! Любопытно, не заморачивались ли китайцы с полноценной эмуляцией NES на Spreadtrum (видимо, тормозило), что привело к такому двойному процессору?
bodyawm Автор
04.01.2025 14:09Может и заморачивались, но опять же, это тормоза.
На ранних телефонах с Spreadtrum на борту была нативная платформа Mythroad. Под нее были порты эмулей NES, как они бегали на спредтрумах я не знаю, но на мтк подтормаживали.
bodyawm Автор
Поздравляю Хабровчан с наступившим новым годом! Буду стараться вас радовать инересными статьями о необычных гаджетах и в 2025 году! А ещё несмотря на блокировку YouTube, я продолжаю развивать канал - и что очень приятно, аудитория видео растет, как и качество самих роликов :)
Так что если кто-то хочет не только читать, но и смотреть - подписывайтесь :)
А на следующей неделе нас ждёт статья о крайне редком и необычном ARM ноутбуке-трансформерре с процессором... DSP от TI! Эту диковинку из Кореи я купил из "утиля" за 400 рублей,
отдриставрировалотреставрировал и хочу рассказать о ней подробнее в следующую субботу!Скрытый текст
bodyawm Автор
Также в январе расскажу об УНИКАЛЬНЕЙШЕМ смартфоне, очень редком устройстве эксклюзивно для японского рынка... и тоже с двумя процессорами. @dreams_killerосуществил мечту и подарил мне Fujitsu F-07C. Я все искал-искал док-станцию, дабы накатить чистую семерку вместо установленной десятки... но пока что тщетно. Но обзору - быть!
Скрытый текст
bodyawm Автор
А еще я прикупил за недорого несколько интересных и очень дешевых девкитов Samsung'овских процессоров 2008-2010 года. Посмотрим, что они умеют на практике в 2024, учитывая копеечную цену!
Не постесняюсь спросить: может кто-то из Хабровчан продаёт планшет SmartQ V7 (2010 года, который умел грузиться в 3 ОС) или 1din магнитолу с выдвижным дисплеем на Windows CE или Android (можно очень старом)?
Насчет магнитолы - я хочу поставить её в свою ВАЗ 2110 и ради фана (и статьи с видео) портировать туда свою 3D игрушку-демку про гонки на жигулях, при этом используя исключительно программный рендерер. Чтобы можно было ездить на тазе пока сидишь в тазе.
Скрытый текст
NickDoom
Шикарно :) Не, есть только кенвудовский сидичейнджер, а мне нечем реверсить его сериальный протокол управления — головного устройства нет. Так что я тоже не постесняюсь намекнуть тут :-D
bodyawm Автор
Такое я и сам не очень умею
NickDoom
Ну да, скорее клич к возможным обладателям головняков от кенвуда %)