LINUX.ORG.RU

Новости FPDoom: поддержка монохромных экранов

 , , , ,

Новости FPDoom: поддержка монохромных экранов

2

2

FPDoom – проект, позволяющий запустить классический Doom, его дополнения и другие портированные игры на очень распространённом на дешевых кнопочных телефонах чипе Spreadtrum SC6531 и его модификациях. Проект содержит порты ванильного Doom, а также Duke3D, Shadow Warrior, Blood, Wolfenstein 3D и порт InfoNES.

Порты выполнены в виде приложений bare-metal, запускаемых через свой загрузчик (добавляется в прошивку, загружает игры с SD-карты). Устанавливается на современные кнопочные телефоны с чипами Spreadtrum SC6530/SC6531, что составляет более половины предложений на российском рынке. Список протестированных моделей и ссылка на описание загрузки приведены в Readme.

Главная особенность нового релиза – это поддержка монохромных экранов низкого разрешения (128x64, 96x68). Казалось бы, такими ужасными экранами только людей пугать, но сейчас как раз подходящее время года. Эти экраны используют 1 бит на пиксель, но при быстром мигании пикселями можно получить оттенки серого. Метод называется temporal dithering, это цифровой аналог ШИМ (PWM). Обновление экрана сделано по таймеру через прерывания, чтобы обеспечить равномерность и постоянность обновления пикселей. Если обновлять по таймеру игры (например, у Doom внутреннее ограничение на 35 кадров в секунду), то изображение очень сильно шумит.

Автору встретилось 3 варианта экранов:

  • 128x64 ST7567A: Самый лучший вариант драйвера, он поддерживает увеличение частоты обновления до 300 кадров в секунду, при такой частоте шум едва виден глазом, камера смартфона шум не замечает. Экраны с разрешением 128x64 имеют физическое отношение сторон не 2:1, а примерно 7:5, пиксели вытянутые по вертикали.
  • 96x68 HX1230: Это дешевая имитация экранов использующихся в старых Nokia. Драйвером экрана поддерживаются только самые базовые команды, напряжение настроить нельзя, и оно завышенное, из-за чего экран чернит, нужно задирать гамму в играх. Экран этот подключен к чипу через GPIO, который нужно дергать процессором, что приводит к большой нагрузке на процессор. Частота обновления около 75 кадров, заметный шум.
  • 128x64 ST7565R: Не поддерживает изменение частоты обновления, стандартная около 77. Если точно попадаешь в частоту, то по экрану медленно проходит чёрная линия. Если не точно, то по экрану постоянно пробегает лёгкий шум (выбран такой вариант).

У всех экранов очень большое время отклика, что приводит к эффекту motion-blur. Тем не менее, что-то различить на экране можно (видео).

Также в этом релизе:

  • Уже протестировано на 50 моделях телефонов.
  • Написан драйвер для встроенного в чип LZMA-декомпрессора, теперь при загрузке сканируется и сжатая часть прошивки. Ранее для 40% телефонов приходилось вручную доставать из прошивки раскладку клавиш и указывать в аргументах запускаемой игры.
  • Для портов Doom и Wolf3D добавлена возможность активировать читы на неуязвимость и все предметы.

>>> Исходный код



Проверено: dataman ()
Последнее исправление: hobbit (всего исправлений: 5)

Не угадал автора

Kolins ★★★★★
()

Вопрос не по теме, но может кто то заинтересованный в движках дума в курсе: gzDoom принципиально не умеет занижать скорость игрового времени, или я просто не нашёл как?

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

В ванильном Думе это константа времени компиляции. Как в других не знаю.

doomdef.h:

// State updates, number of tics / second.
#define TICRATE		35
jpegqs
() автор топика
Ответ на: комментарий от dataman

changelog не ведётся?

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

jpegqs
() автор топика
Ответ на: комментарий от kirill_rrr

Это же вроде фпс а не количество секунд в секунде?

Функция I_GetTime из i_system.c использует эту константу, по сути определяет течение времени для игры. Пусть комментарий с 1/70 не смущает, видимо на какой-то момент разработки было так, но железо в те времена плохо с таким справлялось.

//
// I_GetTime
// returns time in 1/70th second tics
//
int  I_GetTime (void)
{
    struct timeval	tp;
    int			newtics;
    static int		basetime=0;
  
    gettimeofday(&tp, NULL);
    if (!basetime)
	basetime = tp.tv_sec;
    newtics = (tp.tv_sec-basetime)*TICRATE + tp.tv_usec*TICRATE/1000000;
    return newtics;
}
jpegqs
() автор топика
Ответ на: комментарий от vada

А это зачем? В DOOM на часах «Электроника» играть?

На дешевых современных кнопочных телефонах. Я запустил на Tokky FP10, Fontel FP100, Joy’s S16 и Joy’s S19. Первые два лучше, потому что используют ST7567A (но возможно это как повезёт).

Вот видео от azya (на ЛОР вроде нет), который запустил Flappy Bird с оттенками на МК-90. Еще четыре года назад, о чём я ничего не знал. Он мне дал ссылку на своё видео, когда я ему рассказал о своих экспериментах с оттенками на монохромных LCD дисплеях телефонов.

jpegqs
() автор топика
Последнее исправление: jpegqs (всего исправлений: 1)

Такой интересный вопрос, сколько оперативной памяти требуется твоему порту Doom? Поддерживается ли Big-Endian?

EXL ★★★★★
()
Ответ на: комментарий от EXL

Есть порт Doom для RP2040, где ОЗУ всего 264КБ. А у меня чип телефона где памяти минимум 4МБ. Так что я не экономил память никак, для этой игры на телефоне достаточно памяти. Насчёт RP2040 - то там основная нагрузка на прошивку во флэше. То есть ресурсы игры, в оригинале большинство ОЗУ используется для хранения текстур и других ресурсов прочитанных с диска, но их можно читать из ридонли флэша, так это сделано в порте для RP2040.

jpegqs
() автор топика
Ответ на: комментарий от nuxster

Где бы ещё такой телефон достать?)

Продаются на российских маркетплейсах, наверняка и в салонах сотовой связи. Это не старые телефоны, это те что еще продаются и совсем не редкие.

jpegqs
() автор топика
Ответ на: комментарий от vasya_pupkin

Штош... Случается даже с лучшими из нас!

Smacker ★★★★★
()
Ответ на: комментарий от jpegqs

Но, зачем? Такие телефоны обычно покупают как раз чтобы на них не играть.

imul ★★★★★
()
Ответ на: комментарий от jpegqs

На дешевых современных кнопочных телефонах. Я запустил на Tokky FP10, Fontel FP100, Joy’s S16 и Joy’s S19.

А как на такие аппараты вообще свои программы ставят?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А как на такие аппараты вообще свои программы ставят?

Никак, там монолитная ОС, в которой если есть какие-то приложения, то они скомпилированы вместе с системой, и ничего не прибавить, не отнять. Я делаю bare-metal приложения, которые запускаются вместо системы, для этого написал свой загрузчик что грузит обычную ОС либо приложения с SD карты.

Есть исключения с телефонами с поддержкой Java, но это очень большая редкость, у китайского бренда Itel на кнопочных подороже. Также когда-то был запуск нативных приложений .mrp, но это осталось далеко в прошлом, больше этим никто не балуется. И даже в прошлом это было на избранных телефонах. Мой способ позволяет на все телефоны с совместимым чипом добавлять игры, и использовать все ресурсы системы.

jpegqs
() автор топика

ахренеть...вы какие-то сверхчеловеки

Neresar ★★
()
Ответ на: комментарий от jpegqs

Я делаю bare-metal приложения, которые запускаются вместо системы, для этого написал свой загрузчик что грузит обычную ОС либо приложения с SD карты.

Эта процедура где-нибудь описана? Интересно почитать.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Эта процедура где-нибудь описана? Интересно почитать.

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

Пожалуй, самая сложная процедура - это найти клавишу загрузки в boot режим, если телефона нет в списке (где клавиши указаны).

jpegqs
() автор топика
Ответ на: комментарий от jpegqs

Пожалуй, самая сложная процедура - это найти клавишу загрузки в boot режим, если телефона нет в списке (где клавиши указаны).

А есть ли реальный шанс нарваться на телефон, где возможности загрузки в boot-режим вообще нет?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А есть ли реальный шанс нарваться на телефон, где возможности загрузки в boot-режим вообще нет?

На чипах Spreadtrum не встречал такого. Бывают варианты когда нет загрузочной клавиши, а используется комбинация. Тогда загрузочный кабель помогает (делается через microUSB OTG адаптер и USB AM-AM кабель, но на Али продаются и цельные бут-кабели). Из 50-и не имели загрузочной клавиши лишь смарт-часы и Fontel FP100. Смарт-часы не имели потому, что на них лишь клавиша питания, а она загрузочной быть не может. У Fontel FP100 надо зажать три клавиши использующие те же линии (0,y)+(x,0)+(x,y), чтобы сработало (0,0). Я находил в интернете про такие фокусы у индийских брендов, это первый встреченный телефон с комбинацией. Также мне встретилось 3-4 телефонов что не реагировали на бут-кабель, похоже на плате не присоединили пятый контакт microUSB (что определяет режим подключения).

Наибольшая вероятность напороться на кнопочный с другим чипом, от Mediatek или RDA (вымершая компания что объединилось со Spreadtrum, после они переименовались в Unisoc). Но у российских брендов большинство кнопочных телефонов на чипах Spreadtrum (думаю более 50%).

jpegqs
() автор топика
Последнее исправление: jpegqs (всего исправлений: 1)
Ответ на: комментарий от Strannik-j

Вот теперь Doom выглядит действительно страшно!

Когда DOOM вышел, было страшно. Сейчас то уже попривыкли, таксе по страшности.

vada ★★★★★
()
Ответ на: комментарий от vada

А на электронной бумаге (ридер) это будет работать?

Есть видео и не одно. Там очень низкая скорость обновления экрана, несколько кадров в секунду. Вроде есть фейковое видео, по которому можно подумать что работает быстро, но это само видео ускорено.

Но на самых новых и дорогих E-Ink экранах может уже и терпимо стало.

Часто на электронных книгах обычный Андроид, там ничего и хакать не нужно, просто .apk установить.

jpegqs
() автор топика
Ответ на: комментарий от jpegqs

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

Автор протестировал запуск FPDoom на телефонах Tokky FP10, Fontel FP100, Joy’s S16 и Joy’s S19. Первые два работают лучше, потому что используют ST7567A (но возможно это как повезёт). Прошивка FPDoom выполнена в виде приложения bare-metal с собственным загрузчиком, которое запускается вместо основной системы телефона. Описание загрузки приведено в инструкции на сайте проекта.

hobbit ★★★★★
()

Почему на ZX Spectrum до сих пор не портировали? :) На старые смарты - пожалуйста. На часы - пожалуйста. А на культовый комп - нифига.

Да, знаю, что есть там отдельные демки. Но это не порты оригинала, а просто кто-то что-то «похожее» (нет!) пытался сделать.

anonmyous ★★
()
Ответ на: комментарий от hobbit

Что с экранами на ST7567A лучше - это в теле новости написано. На Гитхабе есть список где указано какие модели с каким экраном. Ссылка на установку загрузчика в самом начале Readme, это невозможно пропустить.

Если так, для тех кто не видел более старые новости:

Проект содержит порты ванильного Doom, а также Duke3D, Shadow Warrior, Blood, Wolfenstein 3D и порт InfoNES. Порты выполнены в виде bare-metal приложений, через свой загрузчик (добавляется в прошивку, загружает игры с SD карты). Устанавливается на современные кнопочные телефоны с чипами Spreadtrum SC6530/SC6531, что более половины на российском рынке. Смотрите список протестированных моделей в Readme.

jpegqs
() автор топика
Ответ на: комментарий от anonmyous

Почему на ZX Spectrum до сих пор не портировали?

А почему на NES не портировали? Почему на Game Boy (не Advance) не портировали? Почему на Электронику МК-90 не портировали?

Doom портируют чтобы показать что устройство достаточно мощное, значит есть и недостаточно мощные устройства. Есть устройства что Doom не потянут, потому что у них микроскопический объём ОЗУ, недостаточный для игры. Даже если у процессора Z80 будет достаточно памяти, то как вы в 8-бит собираетесь делать арифметику, в игре используются 32-бит fixed point числа (1-знак,15-целая часть,16-дробная). В Z80 нет даже умножения. Это будет чрезвычайно медленно. Кроме того, на 8-бит устройства часто нет графического режима для адресации отдельных пикселей. Или он реализован через хаки и очень медленный. Z80 на стероидах, с добавленной памятью и разогнанный раз в 100, может и потянет, но это будет не то оригинальное устройство. Вроде на Commodore 64 так запускали, с расширением процессора и памяти, это уже читерство.

Не берём в расчёт фейковые порты, которых очень много. Которые не являются Doom, а проще даже Wolf3D. Где из Doom только спрайт одного оружия и спрайт одного монстра. Ни движка, ни уровнй из оригинальной игры нет.

jpegqs
() автор топика
Ответ на: комментарий от Romanych

У меня старый утюг на балконе стоит. Может, и на него портировать?

Утюг должен быть новый, с экраном.

jpegqs
() автор топика
Ответ на: комментарий от nuxster

А можете конкретную модель подсказать?

Внизу новости ссылка >>> Исходный код на Github, там в Readme список из 50-и устройств. Многие из которых на текущий момент продаются на WB/Озоне, я покупаю когда вижу интересное с большими скидками. Если хочется по фану купить и поставить FPDoom, то находим любой кнопочный телефон на площадке, из его карточки переходим в поиск по категории «мобильные телефоны», делаем сортировку от дешевых, и немного проматываем, в начале там будет всякий мусор у которого неправильно категорию установили. На Авито еще дешево можно взять, но я там не покупаю. Пару лет назад можно было даже за 300р купить телефон, теперь минимум за 500р. Видимо инфляция.

Только Нокии брать не рекомендую, Нокия стала мусорным брендом, что перевыпускает одну модель каждый год с разным железом, в то же время её часто подделывают, так что тем более неизвестно что ты получишь. Есть младшие модели без SD карты, а значит установить игры нельзя. Монохромные Нокии - у них нет USB разъёма, только свои проприетарные для зарядки и данных, и процессор там вряд ли Spreadtrum.

jpegqs
() автор топика
Последнее исправление: jpegqs (всего исправлений: 1)
Ответ на: комментарий от Somebody

Fontel FP100 тяжело ввести в загрузочный режим, потому что нужно зажать вверх+вниз+центр на D-pad (проще весь D-pad), и при этом вставить аккумулятор, у меня через раз получается. Так что я бы особо не рекомендовал. Зато там редкие 8МБ ОЗУ, что видимо, какая-то ошибка. Потому что телефону с монохромных экраном не на что тратить столько памяти. Зато Blood будет работать без тормозов от подгрузки текстур.

jpegqs
() автор топика
Ответ на: комментарий от jpegqs

Ничего не могу сказать по этому поводу, я это к тому писа́л, что всё находится, если искать...

Somebody ★★
()
Ответ на: комментарий от jpegqs

Не берём в расчёт фейковые порты, которых очень много. Которые не являются Doom, а проще даже Wolf3D.

Интересно вообще, чем вызвано такое «взрывное» увеличение системных требований у думовского движка по сравнению с вольфом? Конечно какие-то плюшки там добавились. Но это такой же спрайтовый движок. А по системным требованиям, взятым вот отсюда: https://ensigame.com/games/doom-ii/system-requirements почти дотягивает до ГТА3 на минималках. :)

Operating System: Windows 95/98/NT 4.0
Processor: Intel Pentium 166 MHz or equivalent
RAM: 32 MB
Graphics Card: SVGA graphics card with 2 MB VRAM
Hard Drive: 100 MB of free space
Sound Card: 16-bit sound card with 3D support

Да на таком, поди, и Мафия бы даже пошла, не только гта3. :)

Посмотреть бы на дум на вольфовском движке… Но на ютубе я такого не нашёл. А интересно было бы сравнить.

anonmyous ★★
()
Ответ на: комментарий от anonmyous

Вы нашли чушь в интернете и обсуждаете, будто это правда. Много времени прошло и есть всякие порты и переиздания под современные ОС, там требования уже другие. Вот и вот адекватные данные, 386 и 4МБ ОЗУ.

Судя по упоминанию Windows, то это типовые системные требования для этих старых Windows, возможно на этом сайте просто копипастят их, когда не знают системные требования и не хотят разбираться. Даже если там не билд Doom для Windows (а он был, Doom95), то сама ОС в любом случае вкладывается в системные требования.

jpegqs
() автор топика
Последнее исправление: jpegqs (всего исправлений: 1)
Ответ на: комментарий от anonmyous

Да на таком, поди, и Мафия бы даже пошла, не только гта3. :)

На таком даже Blood в SVGA режиме подтормаживал бы.

devl547 ★★★★★
()
Ответ на: комментарий от jpegqs

Вот и вот адекватные данные, 386 и 4МБ ОЗУ.

Да тоже на чушь похоже:

Windows System Requirements
Operating System: 	MS-DOS 5.0

Если это Windows System Requirements, то при чём тут мс-дос5?

Хотя, судя по википедии, виндовых релизов и не было. Так что да, моя ссылка, скорее всего, отражает какие-то из современных портов, а не исходные системные требования.

anonmyous ★★
()
Ответ на: комментарий от anonmyous

Хотя, судя по википедии, виндовых релизов и не было.

А он был, Doom95. Википедия не то чтобы всегда точна.

В стиме продают еще более современные билды. Системные требования там фантастические:

OS Version: Windows 10 (64-разрядная версия)
Processor: Intel Core i5-3570, 3,4 ГГц или AMD Ryzen 5 1400, 3,5 ГГц
Memory: 8 ГБ оперативной памяти
Graphics:NVIDIA GeForce GTX 650 Ti (2 ГБ) или AMD HD 7750 (1 ГБ)
Direct X: Версия 12
Disk Space: Не менее 2 ГБ свободного места на диске 
jpegqs
() автор топика
Ответ на: комментарий от jpegqs

А он был, Doom95. Википедия не то чтобы всегда точна.

Может быть и точна: я так и не понял из вашей ссылки, насколько это был официальный порт. Написано, что это была демка от микросовта. Релизилась ли она под эгидой ID Software - непонятно.

Требования удалось найти вот такие:

[6-2] - What do you Recommend to run Doom 95?
---------------------------------------------
In order to run Doom 95 optimally, in the highest resolution,
you should have a P90, with 8 Megs of RAM and Windows 95.
You should have at least a 1 Meg video card (2 Meg if possible)
and at least a 16-bit soundcard, wavetable preferred.

Это ещё можно понять, хотя всё равно, относительно вольфа это улёт в космос по требованиям. А между тем, я таки нашёл Дум на вольфовском движке. KlooNI называется. Полноценный дум, единственное, не увидел там потолков разных высот, и лестниц (может, просто невнимательно смотрел). Если бы такие порты были на спектруме, или где угодно ещё, где игры класса вольфа, в принципе, работают - я был бы только за. :) Но, похоже, это единственный качественный порт дума на вольфовский движок, и других нет и не будет.

anonmyous ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.