Что за игра?
Кто-нибудь может подсказать, что это за игра?
Заранее спасибо.
Кто-нибудь может подсказать, что это за игра?
Заранее спасибо.
Это меняет абсолютно всю суть мироздания игры. Ведь придется заново проверять все стены.
А может разработчик просто забыл поменять строчку кода для этой конкретной стены.
Около двух лет назад я купил на онлайн-барахолке занимательный телефон игровой направленности под именем Kechaoda K110. На первый взгляд ничего необычного, в телефоне была предустановлена многоигровка на 80 с лишним игр, однако мне захотелось чего-то большего и я начал ковырять ковырять прошивку устройства в hex-редакторе на манер наличия обычного рома... Но то, что я обнаружил, разобрав устройство, повергло меня в шок и восторженные возгласы в сторону китайских инженеров. Интересно узнать о том, как китайцы сделали уникальный двухпроцессорный телефон всего за 2 000 рублей? Тогда жду вас под катом!
Поскольку сегодняшняя статья у нас о весьма редком представителе телефона-игровой консоли, перед фактическим обзором устройства предлагаю вспомнить предысторию появления мобильного гейминга в целом.
Мобильный гейминг уже довольно давно и прочно вошёл в нашу повседневную жизнь. Игры на телефонах начали появляться ещё в самом начале нулевых, когда их ресурсов стало хватать не только на обработку GSM-сети, но и на запуск различных прикладных программ. За место под солнцем боролось сразу три программные платформы:
Первой платформой была Java, а конкретно J2ME, предоставляющая относительно унифицированный способ разработки приложений под самые разные телефоны и коммуникаторы. J2ME отличалась довольно низким порогом вхождения и довольно высокой производительностью, в частности благодаря тому, что большинство коммерческих Java-машин поддерживали JIT, а ARM даже ввели набор инструкций для ускорения JVM-байткода! Пользователи же полюбители Java в первую очередь за расширяемость и наличие крутейших фич: например программного растеризатора 3D-графики, который позволял выдавать очень неплохую графику на кнопочных телефонах с процессорами всего 100-200МГц:
Одна из легендарных 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-машины, а значит их вполне можно считать игровыми.
Сейчас всё те же китайские производители экспериментируют и выводят на рынок как эмуляторные консоли с 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. Потому нагло рекомендую то, чем пользуюсь сам — вэлкам:
Перейти ↩
От автора поста: Текст ниже был взят из официальной группы сообщества проекта HotA
______________________
Друзья,
Поздравляем вас с наступающим Новым Годом! В качестве подарка от нас — обновление HotA 1.8.0. Эта версия порадует вас сразу двумя крупными нововведениями.
Первое — это, конечно же, новый город, уже третий в Horn of the Abyss: Кронверк. Долгий путь от задумки до релиза, занявший почти два десятилетия, завершён, и теперь вы сможете сыграть за фракцию, которая была частью нашего проекта на протяжении всей его истории. Место, которое представляет Кронверк, также было и частью мира Might & Magic, но игрокам в "Героев 3" мы предлагаем посетить его только теперь. Кронверк населяют народы, обитающие на закованном в лёд острове Вори — снежные эльфы, морозные великаны-ётуны, йети и кобольды. Есть у них и верные союзники — архары и мамонты. Об этих могучих созданиях слагают легенды и песни, прославляя их смелость и необычные способности, которым они обязаны таинственным силам, витающим среди вечных снегов.
Работа над кампанией, где будет рассказано об истории Вори с давних времён до современности Энрота, ещё продолжается, но на сей раз мы решили не откладывать по этой причине релиз города. Через несколько месяцев вы сможете открыть эту историю для себя, уже будучи хорошо знакомы с тем, как играть за Кронверк.
Второе — это расширенная система событий, которая призвана помочь картостроителям реализовывать ещё более интересные сценарии. Теперь вы сможете создавать в Хижинах Провидцев события и задания, ход исполнения которых зависит от сложных условий и может иметь большое количество разнообразных эффектов. Благодаря использованию переменных события могут влиять друг на друга, позволяя выбору игрока изменить всё дальнейшее поведение карты. Для создания таких событий разработан удобный графический интерфейс. Разработка этого сложного нового функционала заняла более двух лет, и мы с гордостью делимся с вами результатом.
Кроме этого вас ждёт еще много интересного и полезного:
- ряд новых функций в редакторе шаблонов;
- новые посещаемые объекты и декор для карты приключений;
- новый вторичный навык — Руны, позволяющий героям усиливать свои войска по ходу боя;
- одиночные сценарии, в которых можно ознакомиться с новым функционалом;
- исправления различных багов и визуальных недочётов.
Подробнее — в списке изменений: https://download.h3hota.com/upd/changelogs/rus.txt
Скачать HotA 1.8.0: h3hota.com/ru/download
Желаем вам приятно провести праздники — а наша работа продолжается. Ждите новостей!