Администрирование Разное Эмулятор DOSBox – новая жизнь старых игр Sun, October 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Эмулятор DOSBox – новая жизнь старых игр Печать
Добавил(а) microsin   

Статья про популярное приложение DOSBox, позволяющее запускать старое программное обеспечение MS-DOS. Автор Петр Семилетов, статья была опубликована в электронном приложении журнала «Open Source», №97, 14 декабря 2011.

На баннере DOSBox шутливая надпись: "DOSBox. Метод достичь большего количества FPS, чем в CounterStrike!" (FPS - Frames Per Second, количество кадров в секунду, а Counter Strike - популярный сетевой шутер от первого лица компании Valve).

DOSBox-banner

Современные игры слишком похожи друг на друга. Идет эксплуатация одних и те же движков и сюжетов. Редко какая-нибудь игра выходит в единственной части, да и еще издатели пускаются на такую уловку, как «урезание» главного сюжета и наполнения игры, после чего продают всё по частям в виде DLC-дополнений (новые герои, новое оружие и т.п.). Во времена системы MS-DOS игры были разнообразными. Не все революционными, но разнообразными – точно. Революционными же были многие. При их разработке присутствовали и творчество, вдохновение. В то время рождались целые жанры: квесты, бродилки-платформеры, 3D-шутеры от первого лица. Такие игры, как Quest For Glory, King's Quest, первый Doom, Goblins, Flashback, Prehistorik 2, The Fox, Prince Of Persia, «Легенда Кирандии», люди помнят до сих пор. Некоторые по-прежнему хотят в них играть – причём не только потому, что это игры их юности. Для них создаются эмуляторы, для них – эта статья.

[DOSBox]

DOSBox [1] – эмулятор DOS, лицензированный под GPL. Он портирован на множество систем: от Linux и Windows до Symbian и Android. В основной ветке идет работа над эмуляцией легендарной видеокарты Voodoo, что даст поддержку Glide API и Direct 3D. Эта эмуляция уже в той или иной мере работает в сборке DOSBox [2], на которой запускаются не только DOS-игры, но и Windows 95 (внутри Windows 95 работают даже DaemonTools). Кстати, постепенную интеграцию с с DOSBox начал другой известный Open Source-проект – Wine. Лично мне кажется, что расширение функциональности DOSBox в сторону поддержки Windows выходит за рамки задач самого эмулятора.

Но по традиции я начну с истории проекта. Основные разработчики в команде DOSBox: голландцы Harekiet и Qbix – были знакомы с детского сада. Рождение проекта совпало с выпуском Windows 2000, которая в отличие от Windows 98 не позволяла запускать DOS-игры так же относительно гладко. У Harekiet к тому времени были эмуляторные наработки – в частности, эмулятор Z80. И Harekiet решил делать эмулятор DOS с полной эмуляцией процессора. К проекту присоединился Qbix, вдохновленный рассказами Harekiet о задуманном. Поначалу планировалось эмулировать только вещи, необходимые для игр, но со временем получился полноценный эмулятор компьютера со встроенным DOS и необходимыми драйверами (в том числе и мыши).

Вообще, DOSBox активно использует наработки и идеи других проектов, как и должно происходить в мире свободного ПО. Например, код поддержки первого в мире 3D-ускорителя (чипсета Voodoo) и эмуляция FM-синтеза взяты из эмулятора MAME. DOSBox входит в состав почти всех дистрибутивов GNU/Linux. Частенько DOSBox используют издатели игр для переиздания своего «старого портфолио». Например, Sierra взяла DOSBox для повторного выпуска серий квестов, однако представители компании даже не удосужились сообщить об этом разработчикам DOSBox. Конечно, всё законно – эмулятор-то под GPL, но чисто по-человечески могли бы написать, что используют, и поблагодарить.

[Первые шаги]

В отличие от «полных» эмуляторов, где эмулируется жесткий диск, DOSBox работает с файловой системой той операционной системы, в которой запускается эмулятор. При этом эмулятор внутренне монтирует каталог программы как диск С. Важно помнить об этом при правке конфигов для конкретной игры. Как запустить игру в DOSBox? Например, зайдя в каталог с игрой (для примера это будет классический шутер-ужастик blood) и выполнив простую команду:

$ dosbox blood.exe

При этом текущий каталог будет монтирован в эмуляторе и представлен как корень диска C (соответственно подправьте пути к видеовставкам в blood.ini).

Другой вариант запуска:

$ dosbox <путь/к/каталогу>

Тогда указанный каталог тоже будет монтирован как С, а exe-файл надо запускать уже из консоли dosbox. В этой консоли работают как команды DOS, так и некоторые особенные для DOSBox – например, mount:

$ mount <раздел> <локальный>

Команда монтирует как указанный раздел такой-то каталог вашей файловой системы. Среди прочих:

> mem – отображает количество доступной в эмуляторе памяти;
> config -writeconf [имя файла] – записывает текущие настройки эмулятора в конфиг по умолчанию или в указанный файл (о файле настроек мы еще поговорим);
> loadfix -size <размер> – уменьшает количество доступной памяти на указанное число килобайт (полезно для очень старых программ, которым может не понравиться большой объем памяти);
> loadfix -f – вернуть память к первоначальному объему;
> rescan – перечитать текущий каталог (который находится вне эмулятора), если вам понадобится монтировать из него что-то внутри эмулятора.

Есть и другие встроенные команды и утилиты – подробную документацию читайте в файле README исходника. Среди них особенно отмечу imgmount для монтирования образа диска в формате iso, cue/bin, cue/img или флоппи-дисковода. Путь указывается внешний, то есть для локальной файловой системы:

$ imgmount D game.iso -t cdrom

Образ будет примонтирован как CD-ROM на букве D. Монтирование образа в качестве дискового раздела:

$ imgmount D game.iso -t iso

Несколько образов на один CD-ROM, с последующим переключением по+:

$ imgmount D gamecd1.iso gamecd2.iso -t iso

Это актуально для игр на нескольких дисках, которые надо переключать во время игры. Такое часто встречалось во времена флоппи-дискет, а для игр на CD – актуально при установке. Есть системный раздел Z, на котором виртуально представлены встроенные в DOSBox утилиты.

Видеоадаптер в DOSBox эмулируется как CGA, Hercules, EGA, Tandy Colors, VGA, VESA/SVGA. Звук – это PC Speaker и несколько звуковых карт: AdLib, SoundBlaster 16OPL3), SB Pro, SB Pro2, Game Blaster, Tandy, Gravis Ultra Sound (нужны патчи от Linux-версии TiMidity). Поддерживаются джойстик, серийный порт, сеть. Эмуляция процессора: 80286 и 80386 (и сопроцессор 387). Этого достаточно для работы игр (и программ), разработанных во времена, к которым относится упомянутое железо.

[Настройка]

Хорошая работа той или иной программы зависит от настройки эмулятора. Разработчики осознанно приложили много усилий, чтобы всё запускалось с настройками по умолчанию, но следует помнить, что эти настройки – усреднённые. Кроме того, они подобраны таким образом, чтобы эмулятор гарантировано запускался на вашей машине.

Хотя некоторые опции вынесены в командную строку, наиболее удобный вид настройки DOSBox – через файл настроек. Он находится в каталоге ./dosbox и называется, в зависимости от версии, dosbox-номер-версии.conf. По идее, если этого каталога и файла нет, они создаются автоматически при запуске dosbox, однако можно создать их самому: командой config из самого эмулятора или командой dosbox -resetconf вне его. Файл настроек отлично документирован в комментариях в самом файле, поэтому не буду сочинять здесь развернутую энциклопедию, а просто обращу ваше внимание на некоторые важные и полезные моменты.

> autolock=true | false – если выставлено в true, то во время игры с поддержкой мыши курсор будет автоматически захватываться окном. Чтобы освободить курсор, надо будет нажать + .
> fullscreen = true | false – запускать эмулятор в полноэкранном режиме или нет.
> fulldouble = true | false – включить/выключить двойную буферизацию в полноэкранном режиме. Может существенно затормозить вывод на экран, хотя у меня не тормозит.
> fullresolution = width x height | original | desktop – разрешение экрана в полноэкранном режиме, лучше оставить как есть, т.е. original.
> output = surface | overlay | opengl | openglnb – режим вывода: обычная SDL-поверхность, оверлей, OpenGL с антиалиасингом и без него (nb значит not blend).
> memsize = размер-в-мегабайтах – количество памяти, эмулируемой в DOSBox для запускаемых в нем программ.
> machine = hercules | cga | tandy | cga | tandy | pcjr | ega | vgaonly | svga_s3 | svga_et3000 | svga_et4000 | svga_paradise | vesa_nolfb | vesa_oldvbe – эмулируемая видеокарта. Обычно со всем отлично справляется svga_s3.
> aspect = true | false – подстройка соотношения сторон. Не поддерживается при режиме вывода surface. Для широкоформатных дисплеев (да и 16:10 тоже) удобно будет выставить true, при выводе через OpenGL или оверлей, иначе картинка будет растянутой. На старых ЭЛТ-мониторах всё нормально.
> scaler = none | normal2x | normal3x | tv2x | tv3x | rgb2x | rgb3x | scan2x | scan3x | advmame2x | advmame3x | advinterp2x | advinterp3x | 2xsai | super2xsai | supereagle | hq2x | hq3x – один из режимов масштабирования, которое применяется ДО масштабирования, используемого в оконном или полноэкранном режимах. Например, я приемлемо (с картинкой, подобной той, что была реальном железе) играю со следующими параметрами: вывод на openglnb либо overlay, scaler=normal2x, двойная буферизация – true, полноэкранное разрешение – original. Так большинство игр работают на полном экране (а не в прямоугольнике внутри полного экрана) и с нормальным соотношением сторон.
> core = simple | normal | dynamic | auto – эмулируемое ядро процессора. Наиболее эффективно значение dynamic, ибо при нем инструкции напрямую транслируются в ядро хоста (ядро вашего процессора).

С джойстиком DOSBox работает, как и с видео – через SDL. SDL в последних версиях зачастую странно (глючат «оси») ведет себя с USB-джойстиками, поэтому желательно вручную указать библиотеке, какое именно устройство используется в качестве джойстика или джойпада – желательно не из /dev/input/event, а из /dev/js* или /dev/input/js*.

Где-то в профиле bash (или в подобных, т.е. видимых в системе, настройках) задайте системную переменную для SDL, примерно так (либо через export):

env SDL_JOYSTICK_DEVICE=/dev/js0

[Запись видео]

Напоследок расскажу о записи видео в DOSBox. Видео пишется в каталог ~/.dosbox/capture/ с кодеком FFmpeg Zip Motion-Block Video в контейнере AVI. С воспроизведением этих файлов справляются MPlayer и VLC. По умолчанию для записи и выключения записи используется сочетание клавиш++– увы, под Linux на это чаще откликается оконный менеджер, поэтому сочетание надо переопределить. Запускаем dosbox вот так:

$ dosbox -startmapper

Появится экран настройки клавиатуры. Выбираем Video, снимаем галочки с модификаторов, чтобы осталась только клавиша, и жмем Save. Готово – можно записывать видео по. В том же экране видим другие функции, которые можно переназначить. Например, Rec Wave – запись звука в WAV-файл, Screenshot – снимок экрана, Cap mouse – захват и освобождение захвата событий мыши, и так далее. Всё можно переназначить.

[Совместимость с играми]

На сайте DOSBox есть база по совместимости [3]. От себя скажу, что то, во что хочу играть я, большей частью запускается. Иногда бывают трудности, пока не подберу нужные настройки самой игры – как правило, это связано со звуком. Производительность эмулятора такова, что на современном компьютере можно спокойно играть под эмулятором в DOS-игры старшего поколения – например, на движке Build (игры Blood, Duke Nukem 3D) или в первую Tomb Raider. Игры работают полноценно: с загрузкой и сохранением – данные читаются и записываются в вашу локальную, «настоящую» файловую систему. А если программа под эмулятором решила стереть файлы? Она видит только примонтированный каталог и видит его как раздел диска. Поэтому, даже если и сотрет, то лишь в каталоге самой игры.

Где брать игры под DOS? Поисковые системы, как правило, легко решают эту проблему. Причем многие из игр доступны для свободного (не «пиратского») скачивания, например, с [4].

dosbox 073_prince_of_persia_1 dosbox 073_prince_of_persia_2 dosbox 073_prince_of_persia_3
dosbox 073_blood_1 dosbox 073_blood_2 dosbox 073_blood_3

Игры Prince of Persia и Blood, запущенные в DOSBox.

[Ссылки]

1. Эмулятор DOSBox.
2. DOSBox 0.74 SVN build.
3. База данных совместимости DOSBox.
4. Abandonia - ретро игры
5. DOSBox: запуск игры Supaplex (оригинальная версия).
6. DOSBox: как запустить игру Another World на Windows XP

 

Добавить комментарий


Защитный код
Обновить

Top of Page