LINUX.ORG.RU
решено ФорумGames

DosBox на Raspberry Pi

 ,


0

3

Почему бы и нет? Он собран, опакечен и запускается (raspbian8, RPi 3B). Производительности вроде достаточно чтобы поиграть как минимум в первый x-com. Если бы не одно НО:

Игра использует видеорежим 640х400, я использую монитор 1280х1024, но досбокс отказывается масштабироваться в 2 раза в оконном и полноэкранном режиме. В конфиге указано:

[sdl]
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=original
output=overlay
autolock=true
sensitivity=100
waitonerror=true
priority=higher
mapperfile=mapper.txt
usescancodes=true

[dosbox]
language=
machine=vgaonly
captures=capture
memsize=24

[render]
frameskip=0
aspect=false
scaler=normal2x

Пробовал scaler=normal3x, output=surface, aspect=true - не реагирует. output=opengl - тормозит, но не масштабирует.

Может кто встречался с подобной проблемой, или знает что то, чего я не понял из вики?

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

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

Поставь qemu-launcher, он позволяет через меню включить. Он вообще очень удобен был на начальном этапе, когда я не знал параметров. Запусти его с консоли, в момент запуска виртуальной машины он выплюнет туда полную команду, которой ты запускаешь. Покажи потом, какая получилась. И попробуй с консоли запустить и с параметрами поиграть -m 512 - это сколько оперативки отдать, -smp 4 - это чтобы юзал все 4 ядра. -usbdevice tablet можно попробовать опционально, это рекомендуют для решения проблем с мышкой. Вместо виртуальной, можно попробовать пробросить физическую мышку: -usbdevice host:VENDOR-ID:PRODUCT-ID (параметры из lsusb берутся). И самое, самое главное, попробовать разные варианты для параметра -vga. Вот тут перечислены варианты для вывода графики: https://wiki.archlinux.org/index.php/QEMU#Graphics. Часть из них фризилась, либо жёстко тупило всё. Либо некоторые окна в виртуалке подвисали. Основное окно при этом не тормозило.

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

Ну у меня вот на Celeron B830 с интеграшкой вместо видеокарты некоторые игры в эмуляторе PS2 (в нативной конфигурации естессна, куда там ему до кастомной) работали лучше, чем некоторые в досбоксе.

Слабо верится, что на таком железе можно было комфортно в игрушки от второй плойки играть...

Рекомендуемые требования: • Windows XP/Vista or Linux 32bit/64bit • Процессор: Core 2 Duo 3.2GHz • Видеокарта GeForce 8600 GT и выше • 1GB RAM (2GB при использовании Windows Vista)

Чтобы самому не быть голословным, вот линк на тему 2005 года PocketScumm, который работал ещё на Motorola mpx200, обладавшей процессором 200МГц и кпк под Windows Mobile схожей конфигурации. Единственная оговорка - игры типо Full Throttle я запускать не пробовал, т.к. на тот момент sd карточка на 512Мб была большим объёмом, и у меня просто не было места её поставить.

Значит ли это, что DOSBOX плохо оптимизирован? Это вряд ли.

Конечно же значит! Ты сам только что написал, что он не оптимизирован и тормозил на твоём x86 компе! У меня когда-то был нетбук на слабеньком Атоме, так там вторая копию линукса с lxde на виртуалбоксе для всяких тестов просто летала, а у него дос тормозил.

Какие другие решения по эмуляции DOS?

  • qemu
  • bochs - знаменитый IBM PC Emulator
  • dosemu - не пробовал, но есть в репах на десктопе
  • rpix86 - эмулятор 486 (40МГц)
  • exagear - платный эмулятор x86 для малины, пишут, что под вайном многое пашет.
  • playdosgamesonline.com - можно играть прямо с браузера с поддержкой javascript, у них неплохая коллекция игр, так же периодически они покупают на каком-нибудь аукционе дискету с раритетной игрой и выкладывают.

И самое главное, на что я обращал внимание в своём посте - врядли запускать именно дос самоцель. А многих игрушек есть опенсорц реализация и можно поставить без эмулятора, как тот же Quake III и Doom, либо в случае квестов (фанатом коего жанра я являюсь) - запустить через ScummVM, либо же найти консоль (эмуляторы которых работают на малине хорошо), на которую был порт игрушки.

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 1)

ТС, возможно тебе интересно будет - пару линков случайно нашёл:

http://sbornik-obrazov-dlya-bochs-i-qemu.ru/Diskimages/Diskimages.html - это сборник готовых образов для qemu и bochs, очень много разных операционок.
http://www.codingepiphany.com/2013/03/30/raspberry-pi-retro-gaming-mania-part-2-dosbox/ - это статья по правильной конфигурации dosbox на малине, судя по скринам, автор статьи вполне успешно играет на нём.

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

Интерестно, и очень даже, если бы я не собрал openxcom и не зарубился уже в него.

По qemu:

aqemu не сообщает, какие бинарники и опции использует для запуска.

qemu-launcher не нашёл бинарника qemu (такой действительно не установлен), я подсунул ему путь для qemu-i386, но это видимо не то, что он ожидает увидеть. При запуске ничего не происходит, ошибка такая:

rrr@raspberrypi:~$ /usr/bin/qemu-i386 -boot c -m 32 -hda '/home/rrr/qemu/dos.img' -net none -localtime -std-vga
usage: qemu-i386 [options] program [arguments...]
Linux CPU emulator (compiled for i386 emulation)

Options and associated environment variables:

Argument      Env-variable      Description
-h                              print this help
-g port       QEMU_GDB          wait gdb connection to 'port'
-L path       QEMU_LD_PREFIX    set the elf interpreter prefix to 'path'
-s size       QEMU_STACK_SIZE   set the stack size to 'size' bytes
-cpu model    QEMU_CPU          select CPU (-cpu help for list)
-E var=value  QEMU_SET_ENV      sets targets environment variable (see below)
-U var        QEMU_UNSET_ENV    unsets targets environment variable (see below)
-0 argv0      QEMU_ARGV0        forces target process argv[0] to be 'argv0'
-r uname      QEMU_UNAME        set qemu uname release string to 'uname'
-B address    QEMU_GUEST_BASE   set guest_base address to 'address'
-R size       QEMU_RESERVED_VA  reserve 'size' bytes for guest virtual address space
-d item[,...] QEMU_LOG          enable logging of specified items (use '-d help' for a list of items)
-D logfile    QEMU_LOG_FILENAME write logs to 'logfile' (default stderr)
-p pagesize   QEMU_PAGESIZE     set the host page size to 'pagesize'
-singlestep   QEMU_SINGLESTEP   run in singlestep mode
-strace       QEMU_STRACE       log system calls
-version      QEMU_VERSION      display version information and exit

Defaults:
QEMU_LD_PREFIX  = /etc/qemu-binfmt/i386
QEMU_STACK_SIZE = 8388608 byte

You can use -E and -U options or the QEMU_SET_ENV and
QEMU_UNSET_ENV environment variables to set and unset
environment variables for the target process.
It is possible to provide several variables by separating them
by commas in getsubopt(3) style. Additionally it is possible to
provide the -E and -U options multiple times.
The following lines are equivalent:
    -E var1=val2 -E var2=val2 -U LD_PRELOAD -U LD_DEBUG
    -E var1=val2,var2=val2 -U LD_PRELOAD,LD_DEBUG
    QEMU_SET_ENV=var1=val2,var2=val2 QEMU_UNSET_ENV=LD_PRELOAD,LD_DEBUG
Note that if you provide several changes to a single variable
the last change will stay in effect.
rrr@raspberrypi:~$
kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от fehhner

Кажется секрет использования dosbox на RPi в том, чтобы взять кошмарный frameskip=3 и увеличить его в 4 раза...

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

/usr/bin/qemu-i386

Там есть этот бинарник, но это не то, правильный qemu-system-i386.
Можно попробовать с консоли
/usr/bin/qemu-system-i386 -boot c -hda '/home/rrr/qemu/dos.img' -m 512 -smp 4 -usbdevice tablet -show-cursor -net nic,vlan=0 -net user,vlan=0 -rtc base=localtime -vga virtio
Остальное норм вроде указал, а последним идёт параметр -vga, вот с ним и можно было бы разное попробовать, как в арчевики предложено. Я в любом случае уже определился и на днях тоже малинку третью возьму. Обдумывал другие варианты, но всё же тут самое большое коммьюнити и будет оптимально.

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

Кажется секрет использования dosbox на RPi в том, чтобы взять кошмарный frameskip=3 и увеличить его в 4 раза...

Ну, это тоже, и он предлагает к тому же запустить игру в окошке и парметр CPU cycle подбирать кнопками ctrl + F11, ctrl + F12 оптимальный для игры, смотря текущий в консоли.

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

-smp 4 — задействовать более 1 ядра дос в qemu не смог, прироста нет.

Играться параметром -m кажется нехорошая идея, у доса ведь какая то сложная система работы с памятью. Например WarCraft2 ни в какую не хочет запускаться в qemu, эмулятор падает при попытке обратиться к каким то адресам памяти.

По вариантам графики: qemu согласился только на std и cirrus. Цирус чуть быстрее, и в doom2 уже в принципе можно поиграть (фпс 5-8), в отличии от dosbox.

Ну и хрен с ними... openxcom мне пока надолго хватит, а qemu может быть потом пригодится чтобы запустить х86 вайн. Извращение конечно, но некоторых утилит сильно не хватает.

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.