0002_DOSBox - slacknk/slackretro GitHub Wiki

DOSBox (an x86 emulator with DOS)

DOSBox эмулирует Intel x86 PC с полной поддержкой звука, графики, мышки, джойстика, модема и всего остального, что необходимо для запуска большинства старых игр под MS-DOS, которые не так-то просто запустить на современных компьютерах и операционных системах, таких как: MS Windows XP, Windows Vista, Linux и FreeBSD.

DOSBox - эмулятор с открытым исходным кодом, распространяется под лицензией GPLv2. Воссоздаёт DOS-окружение, что позволяет запускать старые программы и игры, разработанные для MS-DOS, под управлением современных операционных систем.

Главное требование для запуска - наличие библиотеки libsdl для вашей системы. Минимальные требования соответствуют минимальным требованиям для запуска MS Windows 9x плюс наличие SVGA-совместимой видеокарты. Однако эти требования могут меняться в зависимости от приложения, которое вы пытаетесь запустить.

C установкой никаких проблем возникнуть не должно. Набор библиотек SDL входит в стандартную поставку большинства дистрибутивов GNU/Linux. Для большинства дистрибутивов есть соответствующие пакеты для установки DOSBox в репозитории.

Установка в slackware-14.2:

  • готовый пакет от Alien'а ( slack-required: SDL_sound ) # slackpkg install "SDL_sound dosbox"
  • сборка из исходников, _SBo ( SDL_sound is an optional dependency ) # sbopkg -Bki "SDL_sound dosbox"

В самом крайнем случае, вы можете собрать DOSBox из исходников самостоятельно:

  1. Скачайте исходный код и распакуйте в любую директорию на жестком диске:
$ wget https://sourceforge.net/projects/dosbox/files/dosbox/0.74/dosbox-0.74.tar.gz/download
$ mkdir -pv ~/src
$ tar xf dosbox-*.tar.gz -C ~/src
  1. Перейдите в получившуюся директорию:
$ cd ~/src/dos*
  1. В терминале отдайте команду на конфигурацию и сборку исходников:
$ ./configure && make
  1. Когда сборка закончится, удалите отладочную информацию из файла (это почти в 5 раз сократит его размер):
$ strip -s src/dosbox
  1. Скопируйте получившийся исполняемый файл из папки src в любую папку на жестком диске, из которой вы собираетесь запускать приложение:
$ cp src/dosbox /любая/папка/на/вашем/жестком/диске

Если вы хотите установить DOSBox для всех пользователей в системе, то лучше производить сборку под рутом и cкопировать исполняемый файл в /usr/bin:

# cp src/dosbox /usr/bin
  1. Удалите мусор, оставшийся после сборки:
$ cd ~/ && rm -rf ~/src

Настройка

Первым делом нам нужно разок запустить dosbox, чтобы в каталоге текущего пользователя появилась папка настройки:

$ dosbox

После запуска в окне программы сразу же пишем exit, чтобы выйти - нам сейчас нужна только папка настроек. Настройки по умолчанию прописываются в ~/.dosbox/dosbox*.conf.

  1. Делаем резервную копию настроек: $ cp ~/.dosbox/dosbox*.conf ~/.dosbox/dosbox-conf.bak

  2. Открываем файл настроек ~/.dosbox/dosbox-0.74.conf и ищем секцию [dos]. В ней опцию keyboardlayout=auto, меняем на keyboardlayout=ru441

Теперь у нас две разные раскладки (русская и латинская). Переключаться между ними мы можем с помощью сочетаний клавиш

  • [LAlt]+[LShift] и [LAlt]+[RShift]
  1. Русифицируем наш DOSBox. Качаем пакет русификации с сайта DOSBox и распаковываем:
$ wget http://www.dosbox.com/tools/DOSBox-russian-lang-074.zip
$ unzip DOSBox-russian-lang-074.zip -d ~/.dosbox/

Теперь говорим досбоксу где лежит файл русификации, для этого снова открываем файл ~/.dosbox/dosbox-0.74.conf и ищем в нем секцию [dosbox], в этой секции после language= дописываем russian.txt, должно получиться:

  • language=russian.txt (здесь можно прописать полный путь до файла, для верности)
  1. Запускаем DOSBox, любуемся русскими буквами, снова вводим exit и выходим из программы, русификация завершена.

    • ВНИМАНИЕ!! Если вместо русских букв у нас "крокозябры", проверяем конфиг dosbox-0.74.conf. Скорее всего мы забыли сохранить изменения перед запуском DOSBox'а из-за чего файл был перезаписан значениями по умолчанию.
  2. Настраиваем автозапуск.

По умолчанию DOSBox монтирует только виртуальный диск Z:\, на котором лежит несколько системных файлов (вроде COMMAND.COM или AUTOEXEC.BAT). Но для работы такой диск не годится. Нам нужно смонтировать в досбоксе какой-нибудь диск С:\. В качестве этого диска может выступать любая папка на реальном жестком диске, т.е. при желании можно и /usr смонтировать. Создаем папку будущего диска С:

$ mkdir ~/.dosbox/drive_c

Напомню, что папка может находиться где угодно, так что можете с чистой совестью создавать ее там, где вам удобнее. Теперь нужно эту папку смонтировать в досбоксе в качестве диска C:\. Для этого можно просто отдать команду mount с параметрами в окне досбокса, но после выключения досбокс все забудет, и нам придется подключать папку снова. Чтобы автоматизировать этот рутинный процесс, открываем конфиг и ищем в самом конце секцию [autoexec]. Пишем в нее:

mount c /home/имя_пользователя/.dosbox/drive_c
set PATH=Z:\;C:\
C:
  • Точно ток же можно монтировать другие директории в качестве дисков D, Е, F..
  • Досбокс поддерживает основные команды COMMAND.COM, как например: DIR, CD, COPY, MKDIR и прочие (полный список можно узнать по команде help)

Дополнительно

Все подробности о запуске, настройке, тонких параметрах и возможных проблемах описаны в файле

  • ~/.dosbox/DOSBox 0.74 Manual RUS.txt (этот файл появится после русификации).

Так же не помешает в самом DOSBox'е ввести команды:

intro
intro mount
intro cdrom
intro special
  • Cправка intro многостраничная
  • Настройки масштабирования окна ищите в конфиге в секции [sdl], а графики и фильтров в секции [render]

Несколько полезных горячих клавиш:

[Ctrl]+[F1] - Запустить настройщик клавиш.
[Alt]+[Enter] - Переключить на полный экран и обратно.
[Ctrl]+[F10] - Захватить/Отпустить мышь.
[Ctrl]+[F4] - Сменить смонтированный образ диска (CD или дискеты). Обновить кэш директории для всех дисков.
[Ctrl]+[F5] - Сохранить скриншот. (в формате PNG)
[Ctrl]+[Alt]+[F5] - Старт/Стоп создания ролика с экрана. (захват видео и запись в avi)

SDL

Поскольку DOSBox основан на SDL, он наследует и некоторые баги, например, знакомый многим баг с зажатой клавишей в играх под wine. Связан он с тем, что сигналы мыши интерпретируются как сигналы от несуществующего геймпада. Лечится довольно просто, на время игры нужно удалить из системы устройство /dev/input/js0 (иногда этого оказывается мало и нужно удалить еще и /dev/input/js1), т.е. если вы видите, что в игре постоянно зажата какая-то клавиша, попробуйте перед началом игры от рута выполнить команду:

# mv /dev/input/js0 /dev/input/jsback
  • когда наиграетесь, верните устройство на место: # mv /dev/input/jsback /dev/input/js0
  • ЗЫ баг проявляется довольно редко, например в Tomb Raider

command.com

..WINDOWS\system32\AUTOEXEC.NT

  • SET BLASTER=A220 I5 D1 P330 T3 - Windows XP / 2003 server
  • SET BLASTER=A220 I7 D1 H5 T6 - DOSBox:
* Базовый порт ввода-вывода Sound Blaster = 220
* Номер прерывания (IRQ) = 5
* Канал 8-bit DMA = 1
* Базовый порт ввода-вывода MPU-401 = 330
* Тип карты Sound Blaster = 3 (Sound Blaster 2.0)