Запускаем DOOM на калькуляторе HP Prime G2
Установить DOOM на какое либо устройство, это как водрузить знамя победителя на павшей крепости. Мне задали вопрос “ну что, doom запустил?” не менее 35 раз, когда узнали что я вожусь с данным калькулятором. Решил не разочаровывать публику и добиться запуска DOOM. Попутно, это стало неплохим тестом работоспособности оборудования, а также выявления неприятных багов. В общем, поехали!
Краткая предыстория
Всё началось с приобретения калькулятора HP Prime G2 версии 2AP18AA (это важно, т.к. я не знаю будет ли это работать с другими калькуляторами). Поскольку Пикабу развлекательный ресурс, поэтому грузить сложными вещами не буду. Скажу, что на данный калькулятор установлен линукс, изначально проект начинался с Linux for HP Prime G2 . Но повторить инструкцию "влоб", как обычно бывает не получилось. Я достаточно долго бился, чтобы запустить linux, ковыряясь в исходных кодах, командах и т.п. Результат моих мучений описал в двух статьях: "Установка Linux на калькулятор. Часть I" и "Установка Linux на калькулятор. Часть II". Прошу понять меня правильно, не всем интересна установка Linux на калькулятор и это реально весьма сложная тема, поэтому даю ссылки, тем кому интересно - почитают. Те, кому интересен только DOOM, едем дальше. В результате я получил калькулятор, на котором успешно запускается и работает linux.
Когда линукс завёлся, поставить DOOM казалось простой задачей. И в целом так оно и есть. Оказалось, что всё хорошее давно придумано за нас, и DOOM можно собрать прямо в buildroot не вставая с дивана. Это я узнал, когда гуглил все возможные варианты DOOM для встраиваемых систем и пытался их собрать. Как оказалось, достаточно запустить:
make menuconfig
И выбрать DOOM. Это делается в "Target packages ---> Games --->"
В нашем распоряжении две версии DOOM: chocolate-doom и prboom. Шоколадный дум мне не понравится двумя моментами: он здоровый и не помещался в initramfs, плюс ещё криво растягивал на экран изображение. Запускается шоколадный дум следующей командой:
export SDL_NOMOUSE=1
chocolate-doom -geometry 320x240 -bpp 24 -nomouse
Итог меня сильно разочаровал: эта версия 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".
Результат запуска prboom
Долго искал подходящие параметры, и только с этим всё завелось. Для удобства всё записал в скрипт d.sh. Наконец всё работает, можно даже играть!
Если кто решиться разобрать калькулятор и запустить DOOM, то читайте инструкцию в первой части установки линукс. Специально для вас подготовил скрипты запуска (правда, маловероятно что найдётся энтузиаст, кто готов будет это повторить). Всё выложил в архиве.
Достаточно разобрать калькулятор, замкнуть контакты, описанные в первой части и запустить
sudo uuu doom.uu
В конце всех действий, вы получите калькулятор, с linux и DOOM. Чтобы запустить DOOM, надо будет залогиниться и на калькуляторе выполнить:
./d.sh
Резюмируя
DOOM работает! Можно ли в него играть? Ну локально, загружая с компьютера — можно. Это выглядит круто и красиво, но на деле, не совсем то что хочется получить. В действительности будет круто, когда ты едешь в метро, взять и достать из широких штанин калькулятор, включить его (на данный момент режим энергосбережения не работает), и запустить DOOM. Вот это реально круто, играть в метро на калькуляторе в DOOM, Duke Nukem 3D, Quake I, II, III и т.д. Но факт остаётся фактом — DOOM на этой железке запущен. Но ещё очень много работы.
В целом, не хватает хотя бы небольшого сообщества вокруг этого калькулятора (хотя бы больше меня одного), чтобы были тестировщики проблем, было с кем поговорить и поделиться, услышать совет. Первоначальный автор явно остыл к данному проекту, хотя и проделал титаническую работу. Я его хорошо понимаю, и никак не могу укорять за то, что он не хочет помогать даже советом по данному проекту. Ну так, небольшие рекомендации давал, но ему явно уже не до него. Поэтому если у вас есть идеи, калькулятор, желание помочь, хотя бы советом, пишите, буду рад!
З.Ы. Это адаптированная для пикабу версия моей статьи на хабре.