Запустить VCMI на экране 800x480?

Фоновое изображение:

  1. Поскольку HoMM3 был сделан в темном веке с разрешением 800x600, VCMI требует минимум 800x600
  2. VCMI выполняет проверку, через SDL, и ломается, если разрешение пикселей слишком мало (поэтому нет, xrandr -шкала 1x1.25 не является решением, приложение ломается в любом случае)
  3. Устройство RaspberryPi 4B с "оригинальным" 800x480 сенсорным экраном, работает Ubuntu 20.10
  4. Все работает на больших экранах, устройство полностью способно запустить VCMI из биксов. Проблема только в том, что его можно запустить в 480p
  5. Windowed режиме, просто бросив xrandr --mode 800x600 - шкала 1.5x1.5, но это приводит к разрыву сенсорного экрана на мышь.

Я заставил его более или менее работать, накопив так много взломов и обходных путей, что мне пришлось убить службу сообщений об ошибках, чтобы не расплавить мой Pi...

  1. Создание пользовательского разрешения 800x600@60 с помощью cvt 800 600 60 и xrandr -newmode... согласно Как установить пользовательское разрешение? VCMI теперь запускается в оконном, истинном полноэкранном и не истинном полноэкранном (безграничном максимальном?) режиме. Очевидно, что это не очень воспроизводимо, потому что нижние 120px окна находятся за пределами экрана.
  2. Затем я уменьшил изображение до исходного разрешения, 600px * 0.8 = 480px, и обнаружил, что "истинный полноэкранный" игнорирует масштаб и "не-истинный полноэкранный" имеет интересную ошибку/функцию, где он масштабируется до 480px правильно, но рисуется по центру, так что изображение не выровнено с (физическим) экраном. Так что ssh'ed с ПК и брутально переместил его на несколько пикселей вверх, пока он не выглядел нормально и не закончил с этой мерзостью: xrandr --output DSI-1 --mode forced600 --transform 1.0,0,0,0,1.25,+80,0,0,1

Это "работает", но у меня проблемы с мышью и сенсорной панелью из-за сильного злоупотребления xrandr --transform. Как только я применяю мое устройство для взлома работает в разрешении 800x600 с причудливым скраллингом и трансформациями, что приводит к:

  • мыши вниз по экрану, раздражающей, но не "игровой" проблеме
  • точность сенсорного экрана испорчена нестандартным разрешением, масштабом и смещением, что затрудняет точное прикосновение к кнопкам

Как я могу исправить эти проблемы с двумя указателями? Есть ли лучший способ заставить VCMI работать в режиме 480p?

0
задан 10 January 2021 в 02:04

1 ответ

Ну, оказывается, что проверка разрешения только при запуске. Как только VCMI работает и работает, я могу просто вернуться к родной резолюции. VCMI позаботится о масштабировании все самостоятельно, нарисовать, чтобы заполнить при сохранении соотношения сторон. Это избавляется от всех проблем с мышью и сенсорным экраном.

# disable external screen
xrandr --output HDMI-1 --off 
# force 800x600 resolution
xrandr --output DSI-1 --mode forced600
# after 10 seconds reset to standard resolution
( sleep 10; xrandr --output DSI-1 --mode FIXED_MODE --scale 1.0x1.0 ) &
# run game
vcmiclient

Однако это грустно приводит к тому, что в игре будет поступательно. TODO: Получите этот сенсорный экран, работающий с дисплейным масштабированием ... TODO: Выясните, как щелкнуть правой кнопкой мыши на сенсорном экране ...

0
ответ дан 18 March 2021 в 23:45

Другие вопросы по тегам:

Похожие вопросы: