Pull to refresh
121
0
Send message

Ссылка на wad-файл (можно запустить любым движком DooM)

Всё-таки не любым, или я не нашел правильной опции.

Про чип можете прочитать в моей первой статье.

Уточнение к первой статье: чип SC6531DA оказался более старым, чем SC6531E, но по некоторым характеристикам он лучше, например макс частота 312 МГц, то есть в полтора раза выше.

Можно записать вместо прошивки, но без драйвера для MicroSD это будет бесполезно. При 4 мегабайтах RAM на дешевых моделях - запустить игру вместе с ОС из прошивки - невозможно, только если сделать режим, когда прошивка выгружается (и функции сотовой связи работать не будут), а после выхода из игры загружается снова. При 8 мегабайтах памяти хватит, это чип SC6531H (совместимый с E).

В самих исходниках Doom предполагается (README.asm), что некоторые функции перепишут на ассемблер, и я переписал (doomasm.s в репозитории на гитхабе).

Для Doom мощности чипа более чем хватает. И мне кажется, что проц довольно мощный, ОЗУ ставят очень мало.

В теории можно сделать из этого игровую приставку, если разобраться еще с работой MicroSD разъёма. Можно сделать NES/SNES эмулятор. Но у меня нет желания это серьёзно дорабатывать, особенно в одиночку, реверс-инжиниринг это тяжелая работа.

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


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


Еще забыл про раскладку клавиш для игры написать (лучше картинку сделать), но разобраться не сложно.


Телефоны продаются на популярном в России интернет-магазине, кроме двух тут остальные куплены специально для тестирования. Брал на распродажах с большими скидками.

Это Samsung. У них были телефоны на чипах Spreadtrum. Эти могли так скрупулёзно подойти к делу, что сменили код производителя чипсета на свой. Что в прошивке сделать просто. Если вогнать телефон в загрузочный режим, то может проявится код производителя чипсета.

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

Еще добавлю про mtkclient, что хотя не запускал, но код mtkclient изучал (и много других) чтобы сделать свой. И вот судя по коду mtkclient - эта программа не будет работать с MT6260/MT6261. Потому что при подключении выполняет эти команды, которые не поддерживаются.
MT6260 даже нет в таблицах mtkclient, только как приписка name="MT6573/MT6260", то есть MT6260 подкинули к MT6573. Те настройки, что указаны для MT6573 - явно не подходят для того MT6260, что у меня есть.

Программа прошивки от MediaTek даже не пытается запросить у BROM выполнение этих команд, при подключении девайса с этими чипами первые команды после handshake - это LEGACY_READ (0xA2) по адресам 0x80000000 (SW high) и 0x80000008 (HW high).

Еще к mtkclient прилагаются примеры payload кода для MT6261. Там нет своего кода для работы с USB, там захардкожен адрес на функции из BROM. Конечно же, в тех устройствах что есть у меня - другой BROM и другие адреса.

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

если подключить МТК к компьютеру в режиме прошивки, в lsusb он провисит не более 100 мс

Верно, но я имел в виду подключение телефона с загруженной ОС. Например как USB накопитель (наличие других опций зависит от прошивки).
Только не 100 мс, там секунда, иначе бы мои самописные тулы просто не работали (проверяю подключение 2 раза в секунду).

поэтому на линуксе лучше, конечно, смотреть в dmesg

Этим пользовался, когда отлаживал режим прошивки.

это завершить хендшейк и получить ответ на команды

Я бы этим пользовался, но оказалось что в BROM у MT6260/MT6261 эти команды просто не поддерживаются.

можно использовать программы типа mtkclient

Мне не понравилась эта программа. Раздутая, хочет установки. Требует кучу Python зависимостей для сборки. Такими тулами на питоне я пользоваться не собираюсь. Поэтому свою на Си написал.

В Европе делают свои кнопочные, но дорогие для их функциональности (с точки зрения небогатых и избалованных дешевой китайской техникой людей), и с дизайном хуже чем у китайских! Например: Punkt MP02, Mudita Pure

Мне бы тоже хотелось возвращения качественных кнопочных телефонов. Пока же хочу отметить, что эти китайские чипы достаточно мощные. Проблема только в том, что на оперативной памяти сильно экономят (всего 4 МБ на большинстве!) и унылая прошивка с минимумом функционала.

То есть, это не фирма

В комментарии и не утверждалось, что это фирма, добавлено "т.н.".

когда разработчики связных чипов (например, Alcatel)

У Alcatel были свои чипы? Их вроде перепродали насколько раз, так что осталось только название. Я их знаю уже только как бренд телефонов, есть один старый телефон от них, с qwerty клавиатурой и поддержкой J2ME приложений (но уверен что там всё китайское.)

SC6500 - это другой, совсем древний чип

Я знаю что это от более старого чипа. Написал же что чипсет состоит из разных частей, у каждой из которых есть свой номер. Например SC6500_BAR написано про MMI. Либо это действительно использовали что-то старое, либо опечатка в прошивке. С тех времён версию не исправляли.

SC6531E - например вообще не 6531, а имеет номер 6562. Но много имеет много общего с 6531.

А еще старый 6531 в 1.5 раза быстрее по частоте, чем новый 6562 (он же SC6531E).

Чтобы вы мне еще не возражали, что у меня телефон на том старом чипсете - этот чип точно SC6531BA. Это читается из его глобальных регистров (0x65310001 по адресу 0x205003fc). Но версию MMI он пишет именно такую (SC6500_BAR).

Опять не совсем так.

Что не так из того что я написал? До сих пор производятся и продаются телефоны/смартфоны с этими чипсетами. Сами можете купить и проверить.

это лютая древность 2014 года, устаревшая уже на момент выхода

Лютая или не лютая, но дешевая и поэтому нашла свою нишу и используется.

А из интересного - то, что RDA8826, он же SC6533 - это даже не ARM, а MIPS архитектура!

Я вам рекомендую обратить пристальное внимание на картинку к новости. Где чип RDA8955 тоже имеет номер SC6533, а вы мне пишете про какой-то конкретный RDA8826. И что есть такой у них на MIPS, я тоже знаю.

В общем - я недоволен вашими наездами, что что-то у меня не так и вы явно очень умничаете и явно знаете меньше, чем вы считаете что знаете.

Несколько лет назад, я тоже по просьбе ("ты же программист") доставал контакты из телефона с неработающим экраном, чипсет был MediaTek MT6261. Я сомневался, что у меня это получится, но таки получилось. Без специальных приложений, так что оказалось сложнее чем у вас, и потребовало некоторого программирования (написал свой код для извлечения контактов из файлов MP0C_003 MP0H_006 и даже вытащил СМС из MPA3_001).

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

Пока не дошел до публикации всего. На гитхаб (в дампер/загрузчик) добавил использование libusb (для тех кто на Windows - это будет единственный метод, подозреваю что еще и драйвера требует, те же самые что для прошивки используются). Если вы на Windows, то попробуйте собрать это и дампнуть прошивку. И телефон нужен конкретного чипсета. В общем не просто и не сразу, код пока настроен на одну модель телефона и LCD экрана, но у меня есть идеи для автоматического нахождения конфигурации телефона.

Дополнил текст, 19 FPS было из-за ошибки в заполнении MMU таблиц. После исправления упёрлось в 35 FPS лимит.

Причём J в ARMv5TEJ - это Jazelle, расширение процессора что позволяет выполнять Java байткод напрямую. Но Java там нет, возможно из-за малого количества RAM/флэш памяти.

На Hacker News размещал, никто не заметил, но там всегда как повезёт.

Хотелось бы накопить достаточно знаний о чипе чтобы сделать открытую ОС. Но такое я один не потяну, нужна команда. Так что я хочу сделать порт Doom что работает на достаточном количестве телефонов, а там может народ подтянется и поможет с остальным. (Или не подтянется, ну и ладно... попытаться всё равно стоит.)

Мои тулы с гитхаба собрать и запустить сможете? (Что загрузчик FDL для Линукс и custom_fdl.) С вами бы я скооперировался для ускорения разработки. На базе этих исходников у меня FDL2 с игрой и USB файл сервер.

Заказал несколько дешевых телефонов на распродаже на чёрную пятницу (что сейчас идёт). Буду проверять и улучшать совместимость. Может получится написать сканер прошивок для автоматического нахождения необходимых настроек.

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer
C
Code Optimization
Assembler
Linux