Как запустить дум на калькуляторе инструкция

Время на прочтение
6 мин

Количество просмотров 18K

Установить DOOM на какое либо устройство, это как водрузить знамя победителя на павшей крепости. Мне задали вопрос “ну что, doom запустил?” не менее 35 раз, когда узнали что я вожусь с данным калькулятором. Решил не разочаровывать публику и добиться запуска DOOM. Попутно, это стало неплохим тестом работоспособности оборудования, а также выявления неприятных багов. В общем, поехали!

Новости по проекту

Тем, кому интересно как же я запустил DOOM, могут пропустить эту главу и перейти сразу к следующей. Тут просто представлен текущий статус проекта.

Как вы помните в прошлых частях (часть 1 и часть 2), я занимался тем что ставил Linux на калькулятор, пересобирал u-boot, kernel, rootfs. С тех пор достаточно плотно занимался калькулятором и даже основательно разобрался с тем, что же было сделано в u-boot, kernel и device tree. Надо понимать, что это моё хобби, в свободное от основной работы и семьи время, поэтому не всё идёт быстро, и порой несколько алогично, просто потому что сегодня есть настроение делать так, а не иначе.

Главная новость состоялась, благодаря пользователю Alx2000y, который пригласил меня в чатик в телеге, где на аналогичном процессоре народ пилит свою прошивку для Xiaomi Gateway. Даже есть статья на хабре по теме. Народ уже сильно продвинулся в данной теме, невероятно расширив функционал устройства. И мне очень сильно помогли победить проблему nand. Как вы помните, в самом начале я свой образ nand затёр по глупости. В результате, у меня получилось достаточно большое количество «виртуальных» битых секторов, самое неприятное что битые сектора находились в самом начале и не давали записать туда u-boot. Ниже привожу список битых секторов, большинство из них виртуальные.

=> nand bad
Device 0 bad blocks:
  00000000
  00020000
  00040000
  00060000
  012c0000
  04e20000
  05280000
  094c0000
  17b20000
  1ff80000
  1ffa0000
  1ffc0000
  1ffe0000
=> 

Ленар, из вышеупомянутого чатика, очень сильно мне помог, проблема решилась буквально двумя командами в u-boot:

nand erase.chip
…
nand scrub.chip
…
Really scrub this NAND flash? <y/N>
y

После чего, проверяем количество битых секторов, и, о чудо, их стало значительно меньше!

=> nand bad

Device 0 bad blocks:
  1ff80000
  1ffa0000
  1ffc0000
  1ffe0000

В результате, я теперь могу загрузить u-boot в нулевой сектор и произвести загрузку. На данный момент, калькулятор может быть загружен просто подав питание и будет полностью загружен linux, с работающим дисплеем и возможностью запуска программ по UART. Там даже корректно работает DOOM. «Но, есть нюанс» (С). Видимо драйвер клавиатуры как-то пересекается с драйвером ubifs, и в результате, если нажать любую клавишу на клавиатуре, то происходит мгновенное зависание калькулятора. Мне разок даже прилетел kernel panic, но я не сообразил его сохранить, чтобы хотя бы найти место этого пересечения. Так что на данный момент, всё однозначно работает в initramfs. Видео с демонстрацией работы загрузки nand, запуска DOOM и зависания постил в своём телеграмм канале.

Из других хороших новостей, попробовал поставить ubuntu на nand, тоже корректно работает. Пакеты, конечно, ставить нельзя, но в целом можно работать и использовать её, что тоже удобно. Но без работающий клавиатуры, эти игры пока лишены практического смысла.

В последней части я жаловался, что u-boot имеет разное поведение, при работе на nand и из ОЗУ. Я потратил два дня, ковыряния в исходных кодах u-boot, чтобы понять в чём же дело. А всё оказалось банально (даже стыдно). Утилита uuu, при запуске u-boot из памяти, передаёт туда свои переменные окружения. А точнее вызывает mfgtool_args и в результате строка переменной окружения загрузки выглядит таким образом:

bootargs=rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber= mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs) clk_ignore_unused

Разумеется, если загрузиться с nand, то с такими параметрами ubifs в четвёртом разделе виден не будет. Поэтому после загрузки u-boot в ОЗУ, я принудительно задаю ему следующие переменные окружения:

setenv bootargs  console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs)

И всё отлично работает.

Поясню, зачем это нужно: если прошить загрузчик в нулевой сектор, пропадает возможность работы через mfgtool (утилита uuu). А на данном этапе, состоящем из разработки и отладки — это основной инструмент. Поэтому проще оставить возможность работы утилиты uuu, и загружать каждый раз u-boot вручную.

Запуск DOOM

Переходим к самой интересной части — к запуску DOOM на калькуляторе. Как вы понимаете, я не зря вначале расписал обо всех проблемах. Можно запустить DOOM при загрузке на NAND-флеш, там можно поставить карты всех видов, все возможные версии DOOM и вообще всего что душа пожелает. Но при запуске в ОЗУ, мы ограничены размером образа rootfs примерно в 15 МБ (практика показала, что 16 ещё прокатывает). В связи с этим, пришлось подбирать версию DOOM и делать правильную сборку, а также научиться с ней работать.

Оказалось, что всё хорошее давно придумано за нас, и DOOM можно собрать прямо в buildroot не вставая с дивана. Это я узнал, когда гуглил все возможные варианты DOOM для встраиваемых систем и пытался их собрать. Как оказалось, достаточно запустить:

make menuconfig

И выбрать DOOM. Это делается в «Target packages ---> Games --->«

В нашем распоряжении две версии DOOM: chocolate-doom и prboom. После нескольких экспериментов, я понял что chocolate-doom ну никак не хочет влезать в initramfs. Разве, если вообще убрать wad-файлы. Пытался найти обрезанные wad-файлы, которые бы влезали вместе с шоколадным думом. Но она с ними на отрез отказалась работать. В результате, я попробовал шоколадную версию установить на nand (вместе с prboom), и пробовал там. Подбирал параметры и т.д. Результатом экспериментом стала следующий способ запуска:

export SDL_NOMOUSE=1 
chocolate-doom -geometry 320x240 -bpp 24 -nomouse

Итог меня сильно разочаровал: эта версия doom некорректно (или может, наоборот, корректно) растягивает экран, оставляя широкие полосы по краям экрана, что мне очень не понравилось.

Шоколадная версия DOOM. Видна чёрная полоса снизу.

При запуске, мне шоколадный дум говорит о том, что делает изменение размера окна:

I_InitGraphics: 320x240 mode not supported on this machine.
I_InitGraphics: Auto-adjusted to 320x200x32bpp.

Поэтому, я остановился на prboom. Сделал образ вместе с шароварными WAD-файлами и самим prboom, всё лишнее убрал. Но, всё равно очень долго не мог заставить его работать. Читал всевозможные мануалы, искал как сконфигурировать, чтобы всё корректно работало. Изображение выводит, на кнопки реагирует, но экран коряво растягивает и выводит кривые цвета. Пока на каком-то форуме не нашёл идеальные параметры запуска.

В общем, для нашего калькулятора запуск prboom такой: отключаем мышку, и далее запускаем prboom со следующими параметрами:

export SDL_NOMOUSE=1 
/usr/games/prboom -width 320 -height 240 -nosound -vidmode 32bit

Ключевой параметр здесь: "-vidmode 32bit".

Долго искал подходящие параметры, и только с этим всё завелось. Для удобства всё записал в скрипт d.sh. Наконец всё работает, можно даже играть!

Специально для вас, я подготовил обновлённую сборку flash_utility с DOOM, который вы можете запустить на своём калькуляторе даже без перепрошивки, и показать друзьям, мол вот, DOOM у меня в калькуляторе работает. Достаточно разобрать калькулятор, замкнуть контакты, описанные в первой части и запустить

sudo uuu doom.uu

В конце всех действий, вы получите калькулятор, с linux и DOOM. Чтобы запустить DOOM, надо будет залогиниться и на калькуляторе выполнить:

./d.sh

Резюмируя

DOOM работает! Можно ли в него играть? Ну локально, загружая с компьютера — можно. Это выглядит круто и красиво, но на деле, не совсем то что хочется получить. В действительности будет круто, когда ты едешь в метро, взять и достать из широких штанин калькулятор, включить его (на данный момент режим энергосбережения не работает), и запустить DOOM. Вот это реально круто, играть в метро на калькуляторе в DOOM, Duke Nukem 3D, Quake I, II, III и т.д. Но факт остаётся фактом — DOOM на этой железке запущен. Но ещё очень много работы.

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

P.S. Зачем я этим занимаюсь?

Очень часто спрашивают меня «нафига»? Умом понимаю, что на данный вопрос отвечать глупо, но тем не менее отвечу.

Зачем художник рисует картину или автор пишет книгу? Будем честны, 90% книг, картин да и других произведений могут вообще не увидеть свет, а из тех кто увидят, доли процента станут известными и обретут широкий круг читателей. Проще говоря, большинство творцов делают «бесполезный» труд. Более того, множество произведений даже никогда не находят своего читателя, но что же им этого не делать? Что движет этими людьми? Всё достаточно банально. Ими движет простое чувство:

Проще говоря, этим занимаешься, потому что это круто и это прёт. И, как это ни странно, в будущем приносит большую пользу, хоть и не такую явную как кажется.

Файлы для скачивания

  • Обновлённая прошивка с DOOM

Легендарный Doom, который появился уже больше 20 лет назад, до сих пор не отпускает своих истинных фанатов. Более того, они играют не только на компьютере, но и на другой технике. Иногда только диву даешься от того, на чем запускают игру. В данной статье собраны самые интересные устройства, на которых можно поиграть в Doom, так что устраивайтесь поудобнее и приготовьтесь удивиться.

Автомобиль

Недавно Doom был запущен на компьютере в Porshe 911. Это было показано на видео, которое 19 февраля показал на своем канале пользователь vexal. Он просто вставил в USB-порт флэшку, а также вставил диск в CD-привод. Передвижение в игре происходило с помощью руля, педалей, а также коробки передач, для чего пришлось колесить по парковке. Видео оказалось фейком, к счастью и безопасности окружающих.

Однако в 2015 году пользователь с ником DavidXNewton показал, что в его автомобиле Honda Fit всё-же можно запустить Doom. Правда с помощью установленного там мини-компьютера Raspberry Pi. Конечно, это уже не так зрелищно, но зато куда безопаснее предыдущего варианта.

Еще один неплохой вариант, который поможет развлечься на скучном экзамене. Конечно на обычном калькуляторе запустить игру не получится, зато вот на научном калькуляторе — почему бы нет? Изображение, правда, не блещет.

Однако, если поработать над графикой и адаптировать ее под калькулятор…

Принтер

Если у вас под рукой есть принтер с цветным экраном, то почему вы еще сидите? Бегом запускать на нем Doom!

Одна проблема — отсутствие звука. Видите рядом еще один принтер? Вперед запускать на нем саундтрек!

Часы

Приобрести умные часы можно хотя бы ради того, чтобы запустить на них Doom. С этой задачей справится и Android Wear и Apple Watch. Еще один способ развлечься в любой ситуации.

Банкомат

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

Электронная книга

Утомились при чтении книги? Пора расслабиться и как следует пострелять!

Айпод

Или же иной плеер с экраном.

Бензопила

Если вы хотите острых ощущений, то можете попробовать сыграть в Doom на бензопиле. Правда предварительно придется встроить в пилу компьютер Raspberry Pi и экран.

Рекламный баннер

Фотоаппарат

Тачбар

В конце прошлого года компания Apple явила миру новое поколение MackBook Pro, которые имеют TouchBar — узкий сенсорный экран над клавиатурой. И на нем тоже можно запустить Doom.

Осциллограф

Данный вариант нельзя назвать честным, так как внутри данного устройства находится простой компьютер под управлением Windows 95. Все, что нужно — установить игру и запустить.

Хотя в теории возможно и полностью портировать игру на осциллограф. Ведь если получилось с Quake, то почему бы не проделать такое с Doom?

На клавиатуре

В далеком 2008 году «Студия Артемия Лебедева» выпустила свою клавиатуру под названием «Оптимус Максимус», где каждая клавиша имела небольшой цветной экран, чтобы пользователи имели возможность настроить клавиатуру под себя. Игру запустили, в этом случае, очень сложно. В Doom играли на компьютере, но специальная программа всё время делала скриншоты и отправляла их на клавишу.

Doom

Ну и, наконец, подходим к концу. В GZDoom, который является фанатским портом Doom, имеется игровой автомат, на котором вы можете поиграть в Doom. Таким образом вы будете играть в Doom, играя в Doom.

  • 9 лучших игровых толп болельщиков и их развитие

Есть такая народная забава, портировать Doom на всякие калькуляторы. Массовым это увлечение стало уже в декабре 1997 года когда Джон Карман перевёл исходники Doom под лицензию GPL сделав их общедоступными для некоммерческого использования. В этой статье мы расскажем немного об этой забаве и приведём 5 самых интересных портаций DOOM.

Сам Doom написан на языке С, достаточно низкоуровневом и близком к железу языке, что делает портацию на самые разные устройства более простой и осуществимой задачей.

24 июня 2009 ID Software была приобретена издательством ZeniMax Media, которое в спустя несколько лет перевела под лицензию GPL исходный код других продуктов разработанных ID Software, такие как Quake 2, 3, Wolfenstein 3D а впоследствии и Doom 3 BFG Edition.

Посмотреть исходники игр студии можно тут — https://github.com/id-Software
А непосредственно Doom’a тут — https://github.com/id-Software/DOOM

Важное замечание, что под лицензией GPL только исходный код, а игровые файлы, музыка, текстуры все ещё остаются платными и продаются в steam. Таким образом компания имеет возможность продолжать зарабатывать на этих тайтлах давая возможность разработчикам всего мира перенять их опыт и хорошие (а также и плохие, например wolf_actor_ai.c ) решения.

Так на что же портировали Doom?

В первую очередь Doom конечно портировали на различные устройства и платформы, чтобы в него действительно можно было поиграть. К такого рода портам например относится портирование на Adobe Flash. Можете поиграть в DOOM на известном сайте Flash игр NewGrounds.

https://www.newgrounds.com/portal/view/470460

Также Doom запустили в браузере с помощью JavaScript. Но тут все на порядок сложнее, так как на JS написали порт DOS эмулятора Dos-Box и уже в нём запускается DOOM (а также многие другие игры). В общем матрёшка получилась такая, что лично у меня DOOM тормозит.

Можете попробовать вот тут — https://js-dos.com/DOOM/

А также можете встроить это решение на свой собственный сайт:

<style type=»text/css»>
   .dosbox-container { width: 320px; height: 200px; }
   .dosbox-container > .dosbox-overlay { background: url(https://js-dos.com/cdn/DOOM.png); }
</style>
<div id=’dosbox’></div>
<br/>
<button onclick=’dosbox.requestFullScreen();’>Make fullscreen</button>
    
<script type=’text/javascript’ src=’https://js-dos.com/cdn/js-dos-api.js’></script>
<script type=’text/javascript’>
   var dosbox = new Dosbox({
       id: ‘dosbox’,
       onload: function (dosbox) {
           dosbox.run(‘upload/DOOM-@evilution.zip’, ‘./doom’);
       },
       onrun: function (dosbox, app) {
           console.log(‘App «‘ + app + ‘» is runned’);
       }
   });
</script>

Периодически DOOM продолжают портировать на игровые консоли, например не так давно его портировали на Nintendo Switch

С некоторой натяжкой можно сказать, что также для того чтобы поиграть DOOM портировали на Apple Ipod nano

https://youtu.be/5aKeACL2giA
А вот на остальные девайсы DOOM портировали просто потому что могут. Список устройств действительно уникален

На калькуляторе без адаптации графики — https://youtu.be/NsN2JIRGHAo
На калькуляторе с адаптацией графики — https://youtu.be/nduMTX86Zl0
На калькуляторе с цветным дисплеем — https://youtu.be/PGVUsYRVRbw
Apple TV — https://youtu.be/Kphyme60f4s
Apple Watch — https://youtu.be/KXhf_SpO6wA
Android Wear (watch) — https://youtu.be/1ei2-jBGGYk
На осциллографе — https://youtu.be/xZaKlLyikKg
На банкомате — https://youtu.be/D0rStdHowAg
На принтере — https://youtu.be/XLHx3vO7KJM
На бортовом компьютере Porche 911 — https://youtu.be/NRMpNA86e8Q
На бортовом компьютере Honda Fit — https://youtu.be/2DSYr4ehi7w
На рекламной панеле — https://youtu.be/PxIGuMif1Nk
На книго читалке PocketBook 360 Plus — https://youtu.be/QOPZrVsCEHg
На фотоаппарате Kodak DC260 — https://youtu.be/k-AnvqiKzjY
На криптовалютном кошельке — https://youtu.be/UNgMTkrhV3g

И вот наши топ5 устройств для игры в Doom

5 — TouchBar MacBook Pro

DOOM запустили на MacBook Pro — эта фраза вовсе не вызывает удивления. Совсем другое дело в том, что его запустили не на экране, а на TouchBar’e макбука. Играть на нём конечно совершенно не возможно, но ведь работает!!!

4 — На кнопке клавиатуры Оптимус Максимус

Это клавитура от студии Артемия Лебедева на каждой кнопке которой есть небольшой экранчик. Чтобы “запустить” на ней DOOM, пришлось сильно извратится, по сути, сам DOOM работает на машине к которой подключена клавиатура, специальная программа очень часто делает скриншоты игры который и показываются на кнопке клавиатуры.

В отличие от TouchBar’a играть уже можно, хотя конечно и не удобно.

3 — На пианино.

Это конечно специальное пианино с дисплеем, где кнопки пианино при нажатии не только издают звуки, ну и служат для управления в игре. Можете сами оценить, какая “симфония” получается при игре в DOOM.

2 — На бензопиле.

Конечно для этого пришлось встроить в бензопилу Raspberry Pi и экранчик, но разве оно того не стоило, это же так в духе самого DOOM.

1 DOOM

Да, вы всё правильно поняли, DOOM запустили внутри DOOM, чтобы вы могли играть в DOOM пока играете в DOOM.

В моде GZDoom, вы можете найти игровой автомат в котором собственно будет Doom.

И на заключение, DOOM портируют не только на различные устройства, но в том числе и на более современные игровые движки. Одна группа энтузиастов например занимается портированием DOOM на движок Unity и выглядит это вот так

Другая группа пишет собственный движок который открывает возможность для желающих разрабатывать собственные модификаций для DOOM, одной из самых известных на данный момент является Brutal DOOM и это в свою очередь выглядит вот так:

Приятной игры, на чём бы вы там не играли!

Установить DOOM на какое либо устройство, это как водрузить знамя победителя на павшей крепости. Мне задали вопрос “ну что, doom запустил?” не менее 35 раз, когда узнали что я вожусь с данным калькулятором. Решил не разочаровывать публику и добиться запуска DOOM. Попутно, это стало неплохим тестом работоспособности оборудования, а также выявления неприятных багов. В общем, поехали!

Новости по проекту

Тем, кому интересно как же я запустил DOOM, могут пропустить эту главу и перейти сразу к следующей. Тут просто представлен текущий статус проекта.
Как вы помните в прошлых частях (часть 1 и часть 2), я занимался тем что ставил Linux на калькулятор, пересобирал u-boot, kernel, rootfs. С тех пор достаточно плотно занимался калькулятором и даже основательно разобрался с тем, что же было сделано в u-boot, kernel и device tree. Надо понимать, что это моё хобби, в свободное от основной работы и семьи время, поэтому не всё идёт быстро, и порой несколько алогично, просто потому что сегодня есть настроение делать так, а не иначе.
Главная новость состоялась, благодаря пользователю Alx2000y, который пригласил меня в чатик в телеге, где на аналогичном процессоре народ пилит свою прошивку для Xiaomi Gateway. Даже есть статья на хабре по теме. Народ уже сильно продвинулся в данной теме, невероятно расширив функционал устройства. И мне очень сильно помогли победить проблему nand. Как вы помните, в самом начале я свой образ nand затёр по глупости. В результате, у меня получилось достаточно большое количество «виртуальных» битых секторов, самое неприятное что битые сектора находились в самом начале и не давали записать туда u-boot. Ниже привожу список битых секторов, большинство из них виртуальные.

=> nand bad
Device 0 bad blocks:
  00000000
  00020000
  00040000
  00060000
  012c0000
  04e20000
  05280000
  094c0000
  17b20000
  1ff80000
  1ffa0000
  1ffc0000
  1ffe0000
=> 

Ленар, из вышеупомянутого чатика, очень сильно мне помог, проблема решилась буквально двумя командами в u-boot:

nand erase.chip
…
nand scrub.chip
…
Really scrub this NAND flash? 
y

После чего, проверяем количество битых секторов, и, о чудо, их стало значительно меньше!

=> nand bad

Device 0 bad blocks:
  1ff80000
  1ffa0000
  1ffc0000
  1ffe0000

В результате, я теперь могу загрузить u-boot в нулевой сектор и произвести загрузку. На данный момент, калькулятор может быть загружен просто подав питание и будет полностью загружен linux, с работающим дисплеем и возможностью запуска программ по UART. Там даже корректно работает DOOM. «Но, есть нюанс» (С). Видимо драйвер клавиатуры как-то пересекается с драйвером ubifs, и в результате, если нажать любую клавишу на клавиатуре, то происходит мгновенное зависание калькулятора. Мне разок даже прилетел kernel panic, но я не сообразил его сохранить, чтобы хотя бы найти место этого пересечения. Так что на данный момент, всё однозначно работает в initramfs. Видео с демонстрацией работы загрузки nand, запуска DOOM и зависания постил в своём телеграмм канале.

Из других хороших новостей, попробовал поставить ubuntu на nand, тоже корректно работает. Пакеты, конечно, ставить нельзя, но в целом можно работать и использовать её, что тоже удобно. Но без работающий клавиатуры, эти игры пока лишены практического смысла.
В последней части я жаловался, что u-boot имеет разное поведение, при работе на nand и из ОЗУ. Я потратил два дня, ковыряния в исходных кодах u-boot, чтобы понять в чём же дело. А всё оказалось банально (даже стыдно). Утилита uuu, при запуске u-boot из памяти, передаёт туда свои переменные окружения. А точнее вызывает mfgtool_args и в результате строка переменной окружения загрузки выглядит таким образом:

bootargs=rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber= mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs) clk_ignore_unused

Разумеется, если загрузиться с nand, то с такими параметрами ubifs в четвёртом разделе виден не будет. Поэтому после загрузки u-boot в ОЗУ, я принудительно задаю ему следующие переменные окружения:

setenv bootargs  console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs)

И всё отлично работает.
Поясню, зачем это нужно: если прошить загрузчик в нулевой сектор, пропадает возможность работы через mfgtool (утилита uuu). А на данном этапе, состоящем из разработки и отладки — это основной инструмент. Поэтому проще оставить возможность работы утилиты uuu, и загружать каждый раз u-boot вручную.

Запуск DOOM

Переходим к самой интересной части — к запуску DOOM на калькуляторе. Как вы понимаете, я не зря вначале расписал обо всех проблемах. Можно запустить DOOM при загрузке на NAND-флеш, там можно поставить карты всех видов, все возможные версии DOOM и вообще всего что душа пожелает. Но при запуске в ОЗУ, мы ограничены размером образа rootfs примерно в 15 МБ (практика показала, что 16 ещё прокатывает). В связи с этим, пришлось подбирать версию DOOM и делать правильную сборку, а также научиться с ней работать.
Оказалось, что всё хорошее давно придумано за нас, и DOOM можно собрать прямо в buildroot не вставая с дивана. Это я узнал, когда гуглил все возможные варианты DOOM для встраиваемых систем и пытался их собрать. Как оказалось, достаточно запустить:

make menuconfig

И выбрать DOOM. Это делается в «Target packages ---> Games --->«

В нашем распоряжении две версии DOOM: chocolate-doom и prboom. После нескольких экспериментов, я понял что chocolate-doom ну никак не хочет влезать в initramfs. Разве, если вообще убрать wad-файлы. Пытался найти обрезанные wad-файлы, которые бы влезали вместе с шоколадным думом. Но она с ними на отрез отказалась работать. В результате, я попробовал шоколадную версию установить на nand (вместе с prboom), и пробовал там. Подбирал параметры и т.д. Результатом экспериментом стала следующий способ запуска:

export SDL_NOMOUSE=1 
chocolate-doom -geometry 320x240 -bpp 24 -nomouse

Итог меня сильно разочаровал: эта версия doom некорректно (или может наоборот корректно) растягивает экран, оставляя широкие полосы по краям экрана, что мне очень не понравилось.

Шоколадная версия DOOM. Видна чёрная полоса снизу.

При запуске, мне шоколадный дум говорит о том, что делает изменение размера окна:

I_InitGraphics: 320x240 mode not supported on this machine.
I_InitGraphics: Auto-adjusted to 320x200x32bpp.

Поэтому, я остановился на prboom. Сделал образ вместе с шароварными WAD-файлами и самим prboom, всё лишнее убрал. Но, всё равно очень долго не мог заставить его работать. Читал всевозможные мануалы, искал как сконфигурировать, чтобы всё корректно работало. Изображение выводит, на кнопки реагирует, но экран коряво растягивает и выводит кривые цвета. Пока на каком-то форуме не нашёл идеальные параметры запуска.
В общем, для нашего калькулятора запуск prboom такой: отключаем мышку, и далее запускаем prboom со следующими параметрами:

export SDL_NOMOUSE=1 
/usr/games/prboom -width 320 -height 240 -nosound -vidmode 32bit

Ключевой параметр здесь: "-vidmode 32bit".

Долго искал подходящие параметры, и только с этим всё завелось. Для удобства всё записал в скрипт d.sh. Наконец всё работает, можно даже играть!

Специально для вас, я подготовил обновлённую сборку flash_utility с DOOM, который вы можете запустить на своём калькуляторе даже без перепрошивки, и показать друзьям, мол вот, DOOM у меня в калькуляторе работает. Достаточно разобрать калькулятор, замкнуть контакты, описанные в первой части и запустить

sudo uuu doom.uu

В конце всех действий, вы получите калькулятор, с linux и DOOM. Чтобы запустить DOOM, надо будет залогиниться и на калькуляторе выполнить:

./d.sh

Резюмируя

DOOM работает! Можно ли в него играть? Ну локально, загружая с компьютера — можно. Это выглядит круто и красиво, но на деле, не совсем то что хочется получить. В действительности будет круто, когда ты едешь в метро, взять и достать из широких штанин калькулятор, включить его (на данный момент режим энергосбережения не работает), и запустить DOOM. Вот это реально круто, играть в метро на калькуляторе в DOOM, Duke Nukem 3D, Quake I, II, III и т.д. Но факт остаётся фактом — DOOM на этой железке запущен. Но ещё очень много работы.
В целом, не хватает хотя бы небольшого сообщества вокруг этого калькулятора (хотя бы больше меня одного), чтобы были тестировщики проблем, было с кем поговорить и поделиться, услышать совет. Первоначальный автор явно остыл к данному проекту, хотя и проделал титаническую работу. Я его хорошо понимаю, и никак не могу укорять за то, что он не хочет помогать даже советом по данному проекту. Ну так, небольшие рекомендации давал, но ему явно уже не до него. Поэтому если у вас есть идеи, калькулятор, желание помочь, хотя бы советом, пишите тут или в телегу, буду рад!

P.S. Зачем я этим занимаюсь?

Очень часто спрашивают меня «нафига»? Умом понимаю, что на данный вопрос отвечать глупо, но тем не менее отвечу.
Зачем художник рисует картину или автор пишет книгу? Будем честны, 90% книг, картин да и других произведений могут вообще не увидеть свет, а из тех кто увидят, доли процента станут известными и обретут широкий круг читателей. Проще говоря, большинство творцов делают «бесполезный» труд. Более того, множество произведений даже никогда не находят своего читателя, но что же им этого не делать? Что движет этими людьми? Всё достаточно банально. Ими движет простое чувство:

Проще говоря, этим занимаешься, потому что это круто и это прёт. И, как это ни странно, в будущем приносит большую пользу, хоть и не такую явную как кажется.

Файлы для скачивания

  • Обновлённая прошивка с DOOM

February 26 2021, 16:31

Category:

  • IT
  • Cancel

Меня только ленивый не пинал на тему запуска DOOM на калькуляторе. Не считаю это чем-то особенным и выдающимся, но вот зрителю нужно.

Поэтому, по многочисленным просьбам трудящихся, встречайте мою новую статью: «Запускаем DOOM на калькуляторе HP Prime G2». Читаем, ставим лайки, комментируем, даём советы, присоединямся к владельцам калькуляторов пилящих линукс и наслаждаемся жизнью :))).

Понравилась статья? Поделить с друзьями:
  • Целестодерм крем инструкция по применению для детей
  • Диалек цена инструкция по применению цена
  • Титбит трава для кошек пшеница инструкция
  • Руководство в организации теория справедливости
  • Quad capture roland мануал