Журнал LinuxFormat - перейти на главную

LXF131:dosbox

Материал из Linuxformat
Перейти к: навигация, поиск
DOSBox Эмулируйте время черно-белых экранов и играйте в великие игры

Содержание

DOSBox: Время вспять

Тоскуете по классическим DOS-играм былых времен? Адитья Шеваде покажет, как вернуться в юность, используя DOSBox.

Помните ли вы того самого Принца Персии, Worms или Lemmings? С развитием компьютерных технологий эти классические игры потихоньку ушли, и, возможно, уже не запускаются на современных машинах.

Но если вас одолевает ностальгия, не грустите: решение есть. Такие игры были спроектированы для работы под старой ОС Microsoft Disk Operating Systen (MS-DOS), а ее можно воссоздать при помощи технологий виртуализации наподобие VirtualBox; но существует эмулятор, приспособленный для игр гораздо лучше.

DOSBox ориентирован на игры, хотя позволяет запускать и другое ПО. Он обеспечивает весьма точную эмуляцию звуковых карт, и вы можете настроить параметры видео, играть в многопользовательские игры и записывать скринкасты. Умно то, что он позволяет сбросить скорость эмуляции до уровня престарелой персоналки, максимально приблизив вас к древней DOS. Давайте выясним, как установить DOSBox и настроить его для наших нужд.

Двоичные сборки DOSBox для многих дистрибутивов Linux имеются на странице Downloads на сайте http://www.dosbox.com. Если нужной не нашлось, скомпилируйте ее сами из исходных текстов.

Параметры системы, где запускается DOSBox, будут влиять на скорость эмуляции. 400‑Мгц Pentium II обеспечит производительность порядка процессора 386, а 1‑ГГц Pentium III перенесет вас в высокопроизводительный 486‑й процессор. Но, как и всегда, чем мощнее у вас система, тем лучший выйдет результат. Чтобы узнать об этом больше, посмотрите http://www.dosbox.com/wiki/System_Requirements.


Если вы решитесь собрать программу из исходных кодов, возьмите архив с сайта: http://prdownloads.sourceforge.net/dosbox/dosbox-0.73.tar.gz?download. Скачав файл, распакуйте его в отдельную директорию. Если у вас нет библиотеки SDL, установите ее, чтобы в DOSBox были звук и графика; загрузить ее можно с http://www.libsdl.org, но она наверняка найдется и в репозиториях вашего дистрибутива.

Затем установите DOSBox, используя следующие команды:

tar xvf dosbox-x.y.tar.gz
cd dosbox-x.y
./configure
make
make install

Если английский – не ваш родной язык, то на странице загрузок DOSBox доступно с десяток переводов на другие языки, включая русский.

Начнем

Успешно установив DOSBox, вы, вероятно, сразу же рванетесь поиграть. Ну и пожалуйста; но неплохо бы узнать об основном файле настройки, где можно подогнать DOSBox к вашим нуждам. Файл с именем dosbox.conf используется для глобальной настройки всех приложений, запускаемых вами в DOSBox.

Если у вас есть локальный файл настройки, то он читается первым, а недостающие параметры берутся из основного. В Linux, конфигурационный файл создается при первом запуске программы в ~/.dosbox/. Его имя обычно dosbox-[номер_версии].conf. Редактируя его, вы сможете настроить производительность DOSBox по своему желанию.

В этом файле несколько разделов. Более подробную информацию о них можно найти на вики: http://www.dosbox.com/wiki/Dosbox.conf. Вы можете указать, какой файл настройки загружать с каждым экземпляром DOSBox, передав аргумент в командной строке:

dosbox -conf путь_К_файлу_Конфигурации


Попозже мы займемся изменениями, которые можно делать в файле настройки, но пока давайте запустим DOSBox.

Сперва вы увидите приглашение с буквой диска Z:\>. Последовательно нажимая Tab, вы получите список доступных команд. Отметьте для себя mount. Мы будем использовать ее для монтирования директории, содержащей ваши игры, и назначения ей буквы диска. Если все ваши игры находятся в ~/Games, смонтируйте этот каталог в C:\, набрав:

Z:\>mount C /home/username/Games

Затем наберите C: для доступа к диску C, где теперь находятся все ваши игры. Или можно запустить DOSBox из командной строки Linux, передав в качестве аргумента имя директории – и она автоматически смонтируется как C:\.


dosbox ~/Games

Чтобы это происходило при каждом запуске DOSBox, добавьте вышеприведенную команду mount (и другие необходимые вамкоманды) в раздел [autoexec] файла настройки.

Монтирование оптических дисков требует похожих действий, но придется добавить несколько параметров, потому что CD-ROM’ы защищены от записи. Для настоящего CD допишите

Z:\>mount Буква_Диска /media/МеткаОптическогоДиска/ -t cdrom -usecd 0 -ioctl

А для монтирования образа –

Z:\>imagemount Буква_Диска /Путь/К/Образу.iso -t iso.

Обратите внимание на особые аргументы, используемые для доступа DOSBox к оптическим носителям. Ключ -t cdrom активирует режим MSCDEX, позволяющий DOS-играм взаимодействовать с CD-ROM. Некоторые игры пытаются обратиться к CD, используя его метку, поэтому при монтировании вы можете передать -label Метка_Диска, если надо. Для лучшей производительности неплохо будет создать образ используемого CD и смонтировать его инструментом imagemount. Смонтировав CD, просто зайдите в директорию с игрой и играйте.

Чтобы достать виртуальный диск и освободить привод, вам придется его отмонтировать. В DOS нет команды umount – вместо нее наберите следующее:

mount -u Буква_Диска

Ничего не слышу

DOSBox спроектирован для эмуляции нескольких звуковых устройств и позволяет DOS-программам взаимодействовать со звуковым оборудованием вашего компьютера для воспроизведения аудио. Так как во времена DOS не было унифицированных звуковых драйверов, настройка звука в DOSBox может оказаться непростой. Но здесь имеется поддержка большинства типичных устройств, включая динамик компьютера и различные версии SoundBlaster.

Если звук отсутствует только в части игр, проверьте корректность установки последних. Если проблема не в этом, попробуйте выбрать в игре soundblaster или soundblaster16 и убедитесь, что в файле настройки значится address=220 irq=7 dma=1. Вы можете также выбрать в качестве устройства для воспроизведения музыки MIDI на порту 330. Если звук все равно не слышен, проверьте свои колонки и убедитесь, что хост-система воспроизводит звук. Попробуйте также настроить значение циклов core на поменьше, в районе 3000. Или попробуйте использовать менее популярные устройства, такие как SoundBlaster Pro (sbtype=sbpro1 в файле конфигурации) или Gravis Ultrasound (gus=true).

Вы также можете столкнуться с трудностями вроде плавания частоты звука или его прерывания. В большинстве случаев это результат перегрузки процессора. Попробуйте уменьшить значение core, разрешить пропуск кадров или установить разрешение по меньше. Иногда помогает изменение частоты дискретизации звукового устройства. Кроме того, вы можете поэкспериментировать с параметром prebuffer в файле настройки и убедиться, что на хост-машине не запущено программ, пожирающих ресурсы или интенсивно обменивающихся с жестким диском. Подробная информация о настройке звука в DOSBox имеется на http://www.dosbox.com/wiki/Sound.


Скорость эмуляции DOSBox зависит от числа эмулируемых команд. Это называется «числом циклов под загрузкой» и может быть настроено через параметр cycles. Если вы планируете запускать жадные до ресурсов игры (те, что вышли в последние годы жизни DOS), эмуляция их в реальном времени может перенапрячь DOSBox. В таком случае существуют различные пути для повышения производительности.

Первый и основной – закрыть все приложения, запущенные на вашей Linux-системе, чтобы освободить максимум ресурсов для DOSBox.

Улучшим производительность

По умолчанию значение cycles устанавливается автоматически. DOSBox использует обратную связь для определения, где игре необходимо больше циклов, и подстраивает производительность соответственно. Установка для cycles значения max в конфигурационном файле заставит DOSBox эмулировать игру с максимально возможной скоростью, независимо от необходимости. Однако установка на максимум может быть не оптимальным выбором, и поскольку настройки применяются на лету, лучше будет задать числа вручную. В оконном режиме вы увидите счетчик циклов в заголовке. Чтобы ускорить игру, нажмите Ctrl+F12, чтобы замедлить – Ctrl+F11. Ctrl+F9 увеличивает пропуск кадров, а Ctrl+F7 уменьшает.

Иногда бывает, что производительность улучшается, когда cycles установлены в max, а core – в dynamic. Однако это допускается только на архитектуре x86 и только в некоторых играх. Если игра, в которую вы играете, к ним не относится, вы можете увидеть существенное падение производительности.

Для улучшения производительности можно также поэкспериментировать с настройками звука – как в файле настройки, так и в самой игре. Попробуйте выключить звук или понизить его качество. Следующий код уменьшит частоту дискретизации, ускорив воспроизведение звука. Prebuffer задает число миллисекунд данных, сохраняемых сверх размера блока микшера.

[mixer]
rate=22050
oplrate=22050
rate=22050
pcrate=22050
tandyrate=22050
prebuffer=100

Дополнительный прирост производительности можно получить, изменив некоторые параметры в разделах [sdl] и [render] файла настройки. Вот как минимизируется постобработка видео, что заставит эмулятор работать быстрее:


[sdl]
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
[render]
aspect=false
scaler=none

Плохое качество изображения обычно означает, что исходное разрешение слишком мало для вашего экрана, и обычно вы не можете радикально улучшить графику. Но можно поэкспериментировать с разделом [render] файла настройки. В нем есть параметр scaler. Старые игры в большинстве случаев спроектированы с учетом определенного (и по современным стандартам, низкого) разрешения. Основная причина этого была в недостатке вычислительной мощности. Когда вы растягиваете видео на ваш монитор с высоким разрешением, картинка выглядит ужасно. Scaler работает как фильтр, повышающий разрешение графики перед ее отображением, но это всегда делается после эмуляции. Поэтому все выполненные экранные снимки будут в низком разрешении, и вы сможете увеличить их позже, вручную, с помощью графического редактора. Детальный анализ доступных режимов масштабирования можно найти на http://www.dosbox.com/wiki/Scaler.

Наконец, если у вас мощный процессор, попробуйте включить режим двойной буферизации [double buffering]. В том же разделе параметр full resolution определяет разрешение в полноэкранном режиме. Для ЭЛТ-монитора попробуйте задать разрешение с множителем, кратным исходному разрешению игры, чтобы избежать проблем с частотой обновления. Или можно установить параметр aspect в true. Следующий параметр – это output. Режим surface по умолчанию отрисовывает графику в ее изначальном представлении. Если вы хотите получить чуть более современный вид, попробуйте применить opengl или direct-draw.

Радость совместной игры

Одной из блестящих возможностей DOSBox является поддержка игры по сети: эмулируется клиент-серверная архитектура, где одна машина выступает как сервер, а все остальные подключаются к ней как клиенты. DOSBox может также эмулировать виртуальный модем, передавая весь трафик через IP. Это означает, что вам не потребуется дополнительного оборудования. Для начала загрузим IPX, добавив или изменив следующие строки в вашем файле настройки DOSBox.

[ipx]
ipx=true/false

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

ipxnet startserver [UDP-порт]


Параметр UDP-порт является необязательным и по умолчанию равен 213. При необходимости, вам следует открыть этот порт в хост-системе. Вы должны увидеть сообщение вида ‘IPX Tunneling Server Started’. Обычно для Linux рекомендуется использовать порт с номером больше 1024: меньшие значения потребуют привилегий root и способны привести к конфликтам.

Вернитесь к клиентским машинам и скомандуйте

ipxnet connect <IP> [UDP-порт]

IP-адрес должен быть адресом сервера, а UDP-порт должен совпадать с таковым на сервере. Вам также нужно открыть этот порт на всех клиентских компьютерах. Кроме того, если ваши машины находятся за маршрутизатором, требуется изменить записи NAT.

Если все настроено верно, вы увидите сообщение ‘IPX Tunneling Client Connected to Server at <IP>’. Для проверки состояния также могут быть использованы другие команды, такие как ipxnet status и ipxnet ping.

В итоге при входе в вашу игру вы должны увидеть все машины сети. Наигравшись, отключите клиенты, набрав ipxnet disconnect на каждом из них. Когда все клиенты отключатся, наберите ipxnet stopserver на сервере.

Скринкасты из DOSBox

Последняя версия DOSBox позволяет записывать все, что делается на вашем экране – например, если вам нужно потом показать кому-то, как завершить некий уровень игры.

Пользователи Linux нуждаются для записи видео в небольшой подстройке. По умолчанию сочетание клавиш для старта и остановки записи Ctrl+Alt+F5. Почти во всех случаях эти клавиши переключат вас в пятый виртуальный терминал [tty5].


Все, что вам нужно сделать – запустить DOSBox Keymapper с помощью

dosbox -startmapper

Вы увидите раскладку клавиатуры, показанную на рисунке. Щелкните мышью на какой-нибудь клавише, что бы увидеть физическую кнопку, соответствующую виртуальной. Щелчок на Video даст вам сочетание Mod1 + Mod2 как Hold и F5 как привязку. Проще говоря, вы должны нажимать F5, удерживая Mod1 и Mod2; и вам нужно изменить это сочетание. Давайте изменим его на Mod1 + Mod2 + V'. Кликните на Video, затем на Add Button, и нажмите V. Это действие удалит Mod1 + Mod2 из Hold, поэтому щелкните на них снова, чтобы они удерживались.

Теперь вы можете записывать в DOSBox скринкасты. Разрешение и глубина цвета будут такими же, как и режим, эмулируемый DOSBox. Если вы измените настройки цвета или разрешение во время записи видео, текущий файл будет закрыт, и начат новый, с измененными настройками; он получит имя запущенного приложения. Скринкасты записываются в ~/.dosbox/captures.

DOSBox – отличный инструмент, но его интерфейс командной строки может озадачить, особенно новичков. К счастью, есть немало графических интерфейсов, доступных на странице загрузок http://www.dosbox.com.


Нам очень нравится DBoxFE: он здорово упрощает редактирование конфигурационного файла. Вы можете также создавать для каждой игры отдельные файлы настройки, называемые «профилями игр». Последняя версия DBoxFE требует Qt 4.3.x. После успешной установки DBoxFE запустите его, и вы увидите окно, похожее на изображенное на рисунке. Нажмите на Create [Создать], чтобы создать новый профиль, и дайте ему подходящее имя. Профили отображаются на левой панели. Во вкладках справа можно проделать все необходимые изменения. Они будут применяться при каждом запуске данного профиля.

При внесении изменений важно указать расположение исполняемого файла DOSBox. Пройдите во вкладке Preferences [Настройки] к двоичному файлу DOSBox и выберите его. Его версия будет определена автоматически. Если вы плохо представляете, где находится данный двоичный файл, это можно узнать, набрав which dosbox в вашем терминале – вам вернется путь до исполняемого файла.

Далее, предположим, что после запуска данного профиля вы хотите монтировать и запускать sampleGame, расположенную в /home/ИмяПользователя/Games/sampleGame. Щелкните на вкладке Misc [Разное] и перейдите к Autoexec [Автозапуск]. Выберите директорию с игрой и букву диска, на который вы хотите ее смонтировать. Если игра идет на CD-ROM, можете указать и это. Закончив, нажмите на Add [Добавить] и после внесения всех изменений сохраните профиль и запустите DOSBox с ним, щелкнув на Start [Запуск].

DOSBox – великолепный инструмент для всех, кто хочет вспомнить детство, но не готов собирать винтажный компьютер. Эмуляция делает процесс игры на новых системах более гладким и гораздо более быстрым. DOSBox пока не идеален, и ему не хватает ряда возможностей – например, сохранения состояния текущей сессии и ее последующего восстановления. Не помешал бы и собственный графический интерфейс, чтобы не полагаться на сторонних разработчиков.

Тем не менее, при текущем наборе функций без особых проблем доступна почти вся классика. При его активном и энергичном сообществе, DOSBox уже не остановить.

Обновление папок

Если вы сделали изменения в директории, смонтированной в DOSBox, они не будут показаны автоматически. Образ придется обновить вручную. Для этого используйте событие Swap Image [Сменить образ], которое по умолчанию вызывается через Ctrl+F4.

Персональные инструменты
купить
подписаться
Яндекс.Метрика