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

good-penguin.png

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

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

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

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

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

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

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

©  Linux.org.ru