FPDoom – проект, позволяющий запустить классический Doom, его дополнения и другие портированные игры на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Проект содержит порты ванильного Doom, а также Duke3D, Shadow Warrior, Blood, Wolfenstein 3D и порт InfoNES.
Порты выполнены в виде приложений bare-metal, запускаемых через свой загрузчик (добавляется в прошивку, загружает игры с SD-карты). Устанавливается на современные кнопочные телефоны с чипами Spreadtrum SC6530/SC6531, что составляет более половины предложений на российском рынке. Список протестированных моделей и ссылка на описание загрузки приведены в Readme.
Продолжается развитие проекта FPDoom, что позволяет запустить классический Doom, его дополнения и другие портированные игры на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Чипсету уже около десяти лет, и телефоны выпускаются до сих пор.
Протестировано на 42 моделях телефонов.
Теперь можно запускать игры с SD-карты, для этого нужно при включении/перезагрузке телефона зажать определённую клавишу (разные для разных моделей). Для загрузки с SD-карты требуется добавление небольшой секции размером 4КБ в прошивку телефона. ОС телефона остаётся работоспособной.
Сделано меню для выбора игр при загрузке с SD карты.
Добавлен порт эмулятора InfoNES (далеко не лучший эмулятор, но простой для портирования, работает ~50% игр).
Опубликованный в декабре 2022-го проект FPDoom позволял запустить классический Doom и его дополнения на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531.
Новости проекта:
Протестировано на 24-х устройствах, поддержан старый чип SC6530. В том числе на детском фотоаппарате с чипом SC6531 (сложно найти в продаже, китайцы продают товар в одинаковом корпусе на разных чипах).
Портирован движок Build и три игры на нём: Duke Nukem 3D, Shadow Warrior, Blood.
Сделана поддержка чтения клавиши питания (имеет отдельный от остальных клавиш драйвер).
Проведён реверс-инжинириг подсистемы SDIO, через которую можно читать и перезаписывать сектора на SD картах.
Написан компактный драйвер файловой системы FAT32. Для запуска игр всё еще требуется USB подключение, но после телефон можно отключить от компьютера, игра может читать ресурсы игры с SD карты.
Утилита spreadtrum_flash, что используется в этом проекте для загрузки кода игр в оперативную память телефона, дополнилась экстрактором .pac архивов с прошивками и анализатором дампов флэш памяти (например, может распаковывать код и ресурсы прошивки, или прочитать СМС из дампа флэш памяти телефона).
Опубликованы исходники порта Doom для кнопочных телефонов на чипе Spreadtrum SC6531. Модификации чипа Spreadtrum SC6531 занимают около половины рынка дешевых кнопочных телефонов российских брендов (остальное за MediaTek MT6261, другие чипы редкость).
В чём состояла сложность портирования:
Сторонние приложения на этих телефонах не предусмотрены.
Малый объём ОЗУ - всего 4 мегабайта (бренды/продавцы часто указывают это как 32МБ - но это введение в заблуждение, так как мегабиты, а не мегабайты).
Закрытая документация (можно найти только утечку ранней и неполноценной версии), поэтому многое добывалось методом реверс-инжиниринга.
В основе чипа процессор ARM926EJ-S с частотой 208 МГц (SC6531E) или 312 МГц (SC6531DA), может понижать частоту до 26 МГц, архитектура процессора ARMv5TEJ (нет деления и операций с плавающей точкой).
Пока что исследована работа лишь малой части чипа, это USB, экран и клавиши. Поэтому поиграть можно только при телефоне подключенном к компьютеру USB кабелем (ресурсы для игры передаются с компьютера), также в игре нет звука.
На данный момент запускается на 6-и из 9-и протестированных телефонов на чипе SC6531. Для перевода этого чипа в загрузочный режим, нужно знать какую клавишу удерживать при загрузке, клавиши для протестированных моделей: F+ F256: *, Digma LINX B241: центр, F+ Ezzy 4: 1, Joy’s S21: 0, Vertex M115: вверх, Vertex C323: 0.
P.S.: Похожее было опубликовано на OpenNet, новость от меня, только отредактированная админом сайта.
Без лицензии, сложно сказать какая лицензия должна быть для кода полученного реверс-инжинирингом, считайте как копилефт - копируйте и изменяйте, давайте изменять другим.
Игра Doom была использована для привлечения внимания, в качестве примера, я бы хотел свободную прошивку для кнопочных телефонов. Их чипы гораздо мощнее, чем они используются в прошивке. Причём железо дешевое и массовое, в отличие от редких телефонов с «открытых» ОС или позволяющих выполнять свой код. Пока никого не нашел, чтобы скооперироваться, а реверс-инжиниринг тяжелое развлечение. Для начала было бы хорошо найти управление SD картой и управление энергопотреблением, чтобы можно было использовать эти телефоны как игровую приставку. Дополнительно к Doom можно портировать NES/SNES эмулятор.