Для определения чипсета кнопочного телефона написал отдельную статью. Предполагается, что вы сначала должны проверить чипсет телефона перед указанными ниже инструкциями.
Исходники здесь, готовые бинарники в Releases.
Волшебная клавиша
Сначала нужно найти "boot key", это кнопка что переводит телефон в режим загрузки прошивки (download mode). Что также позволяет запустить свой код на телефоне, не перезаписывая прошивку.
Если вам попался чип SC6531E, то найти нужную кнопку перебором гораздо проще. Достаточно вытащить батарейку, и зажимать одну кнопку, подключать USB кабель (удерживая кнопку) и смотреть смогла ли программа spd_dump подключиться к телефону (или Zadig для Windows пользователей, что еще не устанавливали драйвер). Если нет, то вынимаем кабель и подключаем удерживая другую кнопку.
Для SC6531DA придётся каждый раз вынимать батарею и ставить обратно, кнопку нужно держать нажатой пока вставляете батарею. USB кабель можно подключить заранее, или после этого, удерживать кнопку во время подключения кабеля не обязательно.
Этого можно избежать, если использовать USB кабель с замкнутыми контактами 4 и 5. В обычных кабелях они не соединены. Это используется в OTG адаптерах (переходник для подключения к телефону, например, флэшки). Производители телефонов и смартфонов с micro-USB разъёмом использовали это для создания специального кабеля, при подключении которым устройство переводится в особый режим загрузки.
Такой кабель можно заказать на Алиэкспресс (и ждать несколько недель)...
...или купить OTG адаптер и AM-AM USB кабель и объединить их вместе.
При подключении таким кабелем искать загрузочную кнопку не нужно.
Для пользователей Linux
Прочитайте Readme от spd_dump, чтобы узнать как запускать без sudo.
Для пользователей Windows
Библиотеке libusb нужна установка драйвера, делается это через программу Zadig. Запустите Zadig, и если вы подключили телефон в загрузочном режиме, то он появится в списке с кодом 1782:4d00. Установите драйвер WinUSB для него.
Как запустить Doom на телефоне
Создать директорию workdir, положить в неё ресурсы игры (.wad файл, например doom1.wad). Doom 2 и другие совместимые тоже поддерживаются, Heretic и Hexen не поддерживаются (использованы исходники ванильной версии Doom от id Software).
Записать эти команды в скрипт (для Windows, в архиве с бинарниками, есть пример "run.bat") и запустить, после этого присоединить телефон к USB (зажав кнопку загрузки, как описано выше):
./spd_dump --wait 300 fdl nor_fdl1.bin 0x40004000 fdl fpdoom.bin ram
cd workdir && ../libc_server -- --bright 50 --rotate 3 doom
На чём получилось запустить
№ | название | чип | LCD | разрешение | boot key |
1 | F+ F256 | SC6531E | GC9306 | 240x320 | * |
2 | Digma Linx B241 | SC6531E | ST7789 | 240x320 | center |
3 | F+ Ezzy 4 | SC6531E | GC9106 | 128x160 | 1 |
4 | Joy's S21 | SC6531DA | GC9108 | 128x160 | 0 |
5 | Vertex M115 | SC6531DA | ST7735 | 128x128 | up |
6 | Vertex С323 | SC6531DA | GC9106 | 128x160 | 0 |
7 | Nobby 170B | SC6531E | GC9106 | 128x160 | # |
8 | смарт-часы DZ09 | SC6531DA | GC9307 | 240x240 | none |
9 | Nokia TA-1174 | SC6531E | ST7735 | 128x160 | 7 |
10 | BQ 3586 Tank Max | SC6531H | R61529 | 320x480 | # |
11 | Samsung B310E | SC6530C | ST7735 | 128x160 | center |
12 | Fontel FP200 | SC6531DA | GC9106 | 128x160 | left soft |
13 | Vertex D514 | SC6531E | ??? | 240x320 | center |
14 | Fly TS114 | SC6531E | GC9306 | 240x320 | right soft |
15 | Energizer E12 | SC6531E | GC9106 | 128x160 | 1 |
16 | Itel it5626 | SC6531DA | GC9307 | 240x320 | left soft |
17 | Sunwind C2401 | SC6531E | ST7789 | 240x320 | * |
18 | DEXP SD2810 | SC6531E | NV3029G | 240x320 | 2 |
19 | Nokia TA-1400 | SC6531F | ??? | 240x320 | right soft |
20 | YX Q5 Kids Camera | SC6531DA | NV3023 | 128x160 | shutter |
21 | Nomi i184 | SC6531DA | GC9102 | 128x160 | * |
22 | Sigma IO67 | SC6531DA | GC9305 | 240x320 | dial |
23 | Samsung GT-E1272 | SC6531E | ST??? | 128x160 | 2 |
24 | Samsung GT-E1272 | SC6530 | ST7735 | 128x160 | center |
Для Vertex M115, Nobby 170B, Nokia TA-1174, BQ 3586, Energizer E12, Sunwind C2401, DEXP SD2810 не находит таблицу с клавишами (keymap), надо подавать отдельной опцией.
Для Nobby 170B надо указывать опции
--spi 1 --mac 0xa8
Для смарт-часов DZ09 опции
--spi 0 --lcd 0x80009307
, управления нет - можно только смотреть реплеи, загрузочной клавиши нет - нужно использовать загрузочный кабель.Для Nokia TA-1174 опции
--spi 1 --spi_mode 1
, также надо добавить командуend_data 0
дляspd_dump
(после опций и до командfdl
).Для BQ 3586 опции
--bl_gpio 19
Для Fly TS114 опции
--spi 1
Чипсет SC6531H - фактически SC6531E, но используют с увеличенным объёмом ОЗУ и флэш памяти (8 мегабайт, в отличие от обычных 4-х), плюс ставят экраны разрешением 320x480.
Телефоны 1 - 5 на картинке к новости, видео с F+ F256 было в моей первой статье, 2 - 5 показаны на новом видео:
Экран нетрадиционной ориентации
Пока не нашел ни одной LCD панели, что используется на кнопочных телефонах, что имела бы родную горизонтальную ориентацию. Поэтому, если вы видите телефон с экраном установленным горизонтально - то это вертикальный экран установленный горизонтально. Так как дешевые LCD экраны имеют плохие углы обзора - лучше всего в одну сторону, сносно влево/вправо, и очень плохо в противоположную - то получается одним глазом вы видите нормальное изображение, а другим инвертированное, что очень некомфортно для глаз.
Дополнительно
Есть еще тонкости с указанием опций для игры в горизонтальном положении ("--rotate" из примера, и что нужно указывать для экранов установленных горизонтально), об этом написано в Readme на github. Файл с раскладкой клавиш (keymap) для Vertex M115 есть в Releases, там же написано какой опцией его подключить.
В мае 2023 добавлены порты игр на Build Engine: Duke Nukem 3D и Shadow Warrior. Находятся в том же репозитории на github, переиспользуют код написанный для порта Doom.
В июне 2024 добавлен порт Blood.
В августе 2024 появилась возможность добавить дополнительный загрузчик поверх прошивки, что позволяет запускать игры с SD карты. После добавления загрузчика подключение к компьютеру не требуется.