Около двух лет назад я купил на онлайн-барахолке очень занимательный телефон игровой направленности под именем Kechaoda K110. На первый взгляд ничего необычного, в телефоне была предустановлена многоигровка на 80 игр, но мне захотелось чего-то большего и я сдампил прошивку устройства, начав ковырять её в hex-редакторе на манер наличия обычного рома... Но то, что я обнаружил, разобрав устройство, повергло меня в шок и восторженные возгласы в сторону китайских инженеров. Интересно узнать о том, как китайцы сделали уникальный двухпроцессорный телефон всего за 2 000 рублей? Тогда жду вас под катом!

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

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

Мобильный гейминг уже довольно давно и прочно вошёл в нашу повседневную жизнь. Игры на телефонах начали появляться ещё в самом начале нулевых, когда их ресурсов стало хватать не только на обработку GSM-сети, но и на запуск различных прикладных программ. За место под солнцем боролось сразу три программные платформы:

  • Первой платформой была Java, а конкретно J2ME, предоставляющая относительно унифицированный способ разработки приложений под самые разные телефоны и коммуникаторы. J2ME отличалась довольно низким порогом вхождения и довольно высокой производительностью, в частности благодаря тому, что большинство коммерческих Java-машин поддерживали JIT, а ARM даже ввели набор инструкций для ускорения JVM-байткода! Пользователи же полюбители Java в первую очередь за расширяемость и наличие крутейших фич: например программного растеризатора 3D-графики, который позволял выдавать очень неплохую графику на кнопочных телефонах с процессорами всего 100-200МГц:

    Одна из легендарных Java-игр: Galaxy on Fire 2. На телефоне помещалась полноценная RPG в космосе с своим сюжетом и торговлей!
    Одна из легендарных Java-игр: Galaxy on Fire 2. На телефоне помещалась полноценная RPG в космосе с своим сюжетом и торговлей!
  • Вторая платформа называлась 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... и эти телефоны действительно выходили на рынок! Ну не гении ли?

Эти телефоны объединяет наличие эмулятора денди на борту и иногда Java-машины, а значит их вполне можно считать игровыми.
Эти телефоны объединяет наличие эмулятора денди на борту и иногда Java-машины, а значит их вполне можно считать игровыми.

Сейчас всё те же китайские производители экспериментируют и выводят на рынок как эмуляторные консоли с 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. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:

Перейти ↩

Комментарии (25)


  1. bodyawm Автор
    04.01.2025 14:09

    Поздравляю Хабровчан с наступившим новым годом! Буду стараться вас радовать инересными статьями о необычных гаджетах и в 2025 году! А ещё несмотря на блокировку YouTube, я продолжаю развивать канал - и что очень приятно, аудитория видео растет, как и качество самих роликов :)

    Так что если кто-то хочет не только читать, но и смотреть - подписывайтесь :)


    А на следующей неделе нас ждёт статья о крайне редком и необычном ARM ноутбуке-трансформерре с процессором... DSP от TI! Эту диковинку из Кореи я купил из "утиля" за 400 рублей, отдриставрировал отреставрировал и хочу рассказать о ней подробнее в следующую субботу!

    Скрытый текст


    1. bodyawm Автор
      04.01.2025 14:09

      Также в январе расскажу об УНИКАЛЬНЕЙШЕМ смартфоне, очень редком устройстве эксклюзивно для японского рынка... и тоже с двумя процессорами. @dreams_killerосуществил мечту и подарил мне Fujitsu F-07C. Я все искал-искал док-станцию, дабы накатить чистую семерку вместо установленной десятки... но пока что тщетно. Но обзору - быть!

      Скрытый текст


      1. bodyawm Автор
        04.01.2025 14:09

        А еще я прикупил за недорого несколько интересных и очень дешевых девкитов Samsung'овских процессоров 2008-2010 года. Посмотрим, что они умеют на практике в 2024, учитывая копеечную цену!

        Не постесняюсь спросить: может кто-то из Хабровчан продаёт планшет SmartQ V7 (2010 года, который умел грузиться в 3 ОС) или 1din магнитолу с выдвижным дисплеем на Windows CE или Android (можно очень старом)?

        Насчет магнитолы - я хочу поставить её в свою ВАЗ 2110 и ради фана (и статьи с видео) портировать туда свою 3D игрушку-демку про гонки на жигулях, при этом используя исключительно программный рендерер. Чтобы можно было ездить на тазе пока сидишь в тазе.

        Скрытый текст


        1. NickDoom
          04.01.2025 14:09

          Шикарно :) Не, есть только кенвудовский сидичейнджер, а мне нечем реверсить его сериальный протокол управления — головного устройства нет. Так что я тоже не постесняюсь намекнуть тут :-D


          1. bodyawm Автор
            04.01.2025 14:09

            Такое я и сам не очень умею


            1. NickDoom
              04.01.2025 14:09

              Ну да, скорее клич к возможным обладателям головняков от кенвуда %)


  1. KadansRuslan
    04.01.2025 14:09

    ps.bin он вроде как Bootloader RTOS основного телефона, который по идее загружает раздел Kernel RTOS


    1. bodyawm Автор
      04.01.2025 14:09

      Судя по упоминаниям MMI, его функции несколько шире чем загрузчика) И раздел слишком большой


      1. 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 памяти телефона.


  1. Disamas
    04.01.2025 14:09

    Сейчас бы видео на ютуб заливать. Считаю это как минимум неуважением к аудитории.


    1. bodyawm Автор
      04.01.2025 14:09

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


    1. ilyamodder
      04.01.2025 14:09

      Имхо, считать, что аудитория хабра не сможет обходить блокировки и заливать видосы куда-то еще (или просить об этом в комментах) - куда большее неуважение.


  1. MrZorg
    04.01.2025 14:09

    Уважаемый автор, png картинки по 5+ мб очень затрудняют чтение статьи. По какой-то причине хабр стал еле еле отдавать картинки.


    1. bodyawm Автор
      04.01.2025 14:09

      Странно... пнгшки я загружаю только в виде скриншотов.


      1. vladkorotnev
        04.01.2025 14:09

        Если статью переоформляют в таймвебе в старый редактор, то они часто переносят картинки на хабрастор через буфер обмена — а таким образом все фотографии превращаются в PNG. У меня тоже пара статей, пострадавших таким образом, есть.


        1. bodyawm Автор
          04.01.2025 14:09

          Не переоформляют, я все делаю сам


    1. vvzvlad
      04.01.2025 14:09

      Да, у меня уже неделю проблемы с картинками, грузятся как на диалапе. Думал у меня проблема с моей связью, но видимо нет.
      @Boomburumвы знаете о проблеме?


  1. NickDoom
    04.01.2025 14:09

    Щикардосный девайс ^_^ Такое же бы про 8086-е с метром памяти и… и пусть даже EGA %) Всё равно 8086 в его натуральном виде будет VGA несколько секунд только перерисовывать, не говоря уже о :) А телефон легко сэмулирует дисководы. 1.2 и 1.44 :) Нереальный шик для 8086-го, круче только FM-винт %) или даже MFM %)

    Попробую примазаться со своими идеями к чужой славе, кек: а какое примерно нужно железо, чтобы сделать смартфон чисто под мессенджеры? Судя по требованиям для AndroidX86, нужно устройство процессорсодержащее, идентичное натуральному, и рамы хотя бы гиг, если очень тщательно везде ужиматься. Естественно, оно должно хотя бы для виду поддерживать апи свежих «вёдер» — чтобы мессенджер согласился ставиться и не отплёвывался от «устаревшего» телефона. Ну, и экран такой, чтобы хотя бы можно было текст разглядеть.

    Но железа «звонилки», пожалуй, не хватит… или?..


    1. StjarnornasFred
      04.01.2025 14:09

      какое примерно нужно железо, чтобы сделать смартфон чисто под мессенджеры

      Ну, легендарный МТ6580 в 2024 году ещё попадался в новых смартфонах, так что...


      1. NickDoom
        04.01.2025 14:09

        Хорошо, но как-то явно жирно КМК для «минимальной мощности, чисто под мессенджеры» :-D

        К нему все programming guides под NDA, что ли? Ничего не нашёл. Если да, то вообще на фиг он тогда честному айтишнику :)


  1. whocoulditbe
    04.01.2025 14:09

    Раз уж такая пляска пошла...

    Я занимаюсь разработкой homebrew для плееров Walkman на линуксах, NW-A50/40/30. Мне нужны девайсы для тестирования, желательно в физической доступности (СПб). Есть ли какие-нибудь российские технические сообщества, куда можно кинуть зов помощи? У меня есть только A50, на котором всё ок, а вот на A40 возникли непреодолимые (тестером из Австралии) трудности.


    1. Areso
      04.01.2025 14:09

      можно попробовать кинуть клич на overclockers ... и на 4pda


  1. LTVA
    04.01.2025 14:09

    Железка интересная! Вот только печально, что не могу найти даташиты на СнК VRTech. Кто-то может поделиться? Особенно интересует реализация синтеза звука, поскольку дендевский звук знаю вдоль и поперёк (включая все чипы расширения)


  1. itBestRay
    04.01.2025 14:09

    Прикольная инженерная находка: фактически отдельная железная Dendy-консоль внутри телефона! Любопытно, не заморачивались ли китайцы с полноценной эмуляцией NES на Spreadtrum (видимо, тормозило), что привело к такому двойному процессору?


    1. bodyawm Автор
      04.01.2025 14:09

      Может и заморачивались, но опять же, это тормоза.

      На ранних телефонах с Spreadtrum на борту была нативная платформа Mythroad. Под нее были порты эмулей NES, как они бегали на спредтрумах я не знаю, но на мтк подтормаживали.