DOS-эмулятор в играх

Аватар пользователя Tolstik
Описана подробная настройка DOS-эмулятора для игр и других приложений. Статья печатается с любезного разрешения автора
На днях перечитывал статью Владислава Светличного "Игры без окошек" в МК № 33 (308). Там описывается способ экономии ресурсов компьютера при запуске тяжелых игрушек при помощи отказа от оконного менеджера. Это решение действительно весьма простое и эффективное. Но, на мой взгляд, есть лучший способ облегчить пытку компьютера Квейком Улыбка и прочими развлечениями.

Для начала немножко расскажу о том, что привело меня к такому способу запуска игрушек. В начале 2001 года мне в лапы попал диск, который назывался наподобие "Игры старого света". И там была весьма интересная игрушка под названием "Battlespire". В те славные времена у меня был Пентиум 120/ 16 Мб памяти под управлением Виндовс 98 (Кстати, сейчас этот аппарат работает принт-сервером и Х-терминалом, но уже под Линуксом. Зачем оно надо- непонятно. Но для тренировки настройки сети очень даже полезно). На таком железе "Battlespire" тормозил где-то как второй Квейк.
Потом обновил железо, поставил ХР+98. Один раз замучила ностальгия, решил вспомнить былое. Но не тут-то было. Длительное шаманство с боевым бубном не помогло, игрушка упорно не видела VESA-видеокарту. И это со вторым GeForce! Далее 98 не выдержал издевательств в виде драйвера тв-тюнера и DirectX 9.0b и рухнул окончательно, погребя под собой 700 мег нужной и невосполняемой информации.
Меня это достало, и я взялся за приведение в порядок болтающегося на винте Линукса. Однажды в руки попалась программа по имени Dosemu. Это эмулятор ДОСа, который, в отличие от DosBox, поддерживает защищенный режим и работает с нормальной скоростью. Dosemu превосходно запустил Blood и Duke Nukem 3D, но ни в какую не запускал Battlespire. Сначала вылетал DPMI Server. В Интернете нашел информацию, что необходимо заменить идущий в комплекте FreeDOS на обычный MSDOS 6.22. Это дело можно скачать с сайта http://www.bootdisk.com . Нам необходимо перенести файл 622C.IMG в каталог с дисками Dosemu:

[buba@big buba]$ su - Password: [root@big root]# cp /home/buba/archive/622c/622C.IMG /var/lib/dosemu/

Внимание! Этот образ должен быть доступен для записи, поэтому сразу делаем

[root@big root]# chmod 666 /var/lib/dosemu/*

ДОСовский диск С будем делать в виде каталога, а не образа. Это позволяет намного удобнее заливать туда игрушки и прочий софт. Для гибкости системы желательно скачать с сайта Dosemu еще и FreeDOS. Точный адрес не помню. Этот архив распаковываем в домашнем каталоге, получаем новый каталог ~/freedos, который и будет нашим диском С. Да, еще необходимо сделать локальный файл настроек. Это позволит не брать право root для настройки эмулятора.

[buba@big buba]$ cp /etc/dosemu/dosemu.conf ~/.dosemurc

Далее наступает время тонкого тюнинга. Я приведу самые важные строки из конфига и, по возможности, прокомментирую их. Безусловно, я не смогу описать ВСЕ параметры Dosemu. Те, которые я не трону, по умолчанию установлены оптимально.

$_cpu = "80586"
Это тип процессора. Ставим 80586- получаем Pentium.

$_rdtsc = (on)
Тонкий наворот для того же Пня

$_cpuspeed = (166)
Частота процессора

$_hogthreshold = (500)
Чем выше этот параметр, тем плавнее идет игра

$_hdimage = "/home/buba/dosemu/freedos /mnt/cdrom /home/buba"
Перечень дисков в порядке C: D: E:

$_vbootfloppy = "622C.IMG"
Загрузочная дискета в /var/lib/dosemu/

$_umb_max = (on)
Непонятный для меня параметр, влияющий на распределение памяти. Написано, что включение влияет на DPMI.

$_dosmem = (640)
Очевидно. Сколько базовой памяти

$_xms = (32768)
А это остальная память. Хватит 16 Мб.

$_ems = (8192)
Память ems. Хитрый выверт ДОСа.

$_ems_frame = (0xe000)
Этот параметр трогать не надо. Нужен для работы ems

$_dpmi = (32768)
Сколько DPMI. Вообще, почти все параметры памяти побирал методом тыка.
В группе terminal менять ничего не надо. Далее идет настройка мыши, которая не представляет сложности. Только в опции $_mouse нужно проставить правильный тип мыши:

$_mouse = "ps2"

Джойстик я не настраивал за неимением такового. Грустный Также ничего не менял в настройках СОМ-портов. Необходимо поменять устройства портов на что-то вроде /dev/usb/ttyUSB0 лишь если какой-то порт разведен через весьма экзотический и дорогой USB<->TTY конвертор. Иногда так работают и USB устройства, например дата-кабели для некоторых мобильных телефонов. Про настройку принтера могу сказать лишь то, что руки еще не дошли. Но теоретически настройки по умолчанию должны работать.
Звуковая подсистема Dosemu эмулирует SoundBlaster, с настройкой стоит повозиться хотя бы для того, чтобы снова услышать знаменитое "I live AGAIN!"

$_speaker = "emulated"

Следующие опции настраивают параметры SoundBlaster для самих запускаемых программ. Значения параметров по умолчанию вполне корректны и проблем со звуком быть не должно.
Дальше до настройки Х-ов ничего не трогаем.

$_X_updfreq = (1)
Частота кадров=20/$_X_updfreq. Ставим минимум- получаем нормальный FPS.

$_X_fullscreen = (on)
Запуск в полном экране. Переключение- Ctrl+Alt+F

$_X_keycode = (auto)
Перекодировка клавиатуры. Если ввод нормальный- оставляем.

$_X_blinkrate = (12)
Частота мерцания текстового курсора

$_X_font = "vgacyr"
А вот здесь надо прописать кириллический шрифт, например vgacyr.

$_X_mitshm = (on)
Включить обязательно. ОЧЕНЬ сильно ускоряет работу.

$_X_bilin_filt = (on)
Сглаживание цветов. Если не тормозит- включаем.

$_X_winsize = "640,480"
Размер окна

$_X_vgaemu_memsize = (8192)
Объём видеопамяти. Нам не жалко, ставим 8 Мб. Но 2Мб вполне должно хватить.

$_X_vesamode = "640,480,15 640,480,16"
Здесь нужно указать нужные нам видеорежимы. Для Battlespire надо 640,480,15
Далее идут параметры, могущие при неправильной установке повесить систему. Оно нам надо? Не надо, поэтому все до конца файла стираем. Но если мы сейчас попытаемся запустить игрушку, то получим облом:

C:\BSPIRE>bspire.bat
Battlespire V1.2
Could not initialize VESA 15 bit 640x480 mode.

В документации написано, что для использования VESA видеорежимов нужен Х-сервер с такой же глубиной цвета. Нет проблем, правим /etc/X11/XF86Config: заменяем DefultDepth 24 на DefultDepth 15 и перегружаем Иксы. Ан нет, проблемы все-таки есть, что-то случилось с XMMS. Меняем глубину цвета обратно, XMMS чувствует себя уже лучше. Для решения этой проблемы и пригодится еще один Х-сервер. Он доступен по сочетанию клавиш Ctrl+Alt+F8, а обычный Х-сервер с KDE или что там запущено - по Ctrl+Alt+F7. Запуск описан в МК № 33 (308), но мы можем поступить намного проще. Далеко не все пользователи используют для аутентификации XDM, поэтому не будем править его конфиги.
В консоли набираем команду:

[buba@big buba]$ X -depth 15 :1.0 &
[1] 9881
[buba@big buba]$

Видим, что процесс выполняется в фоновом режиме, поэтому консоль остается свободна. Поэтому в ней же набираем:

[buba@big buba]$ export DISPLAY=:1.0
[buba@big buba]$ xdosemu

Все, наш эмулятор на ходу и может порадовать юзера встречей со старыми, но такими родными игрушками. А может быть, и чем-нибудь посерьезней. Например, у меня под Dosemu крутится телефонный справочник.
На этом прощаюсь, до новых встреч!

Your rating: Нет Average: 7.7 (7 votes)
RSS-материал