LINUX.ORG.RU

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

 , , , ,

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

1

1

Главная особенность нового релиза - это поддержка монохромных экранов низкого разрешения (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 ()
Последнее исправление: dataman (всего исправлений: 1)

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

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)

это цифровой аналог ШИМ

Шаман Истинный Модератор. Теперь банановый и в цифре.

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