1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

DOSBox. Инструкция по использованию

Тема в разделе "Кладезь мудрости", создана пользователем Virgil, 3 авг 2006.

  1. Virgil Администратор

    Virgil

    Администратор

    Регистрация:
    2 янв 2005
    Сообщения:
    11.276
    Статья по использованию DOSBox на данный момент находится в нашей wiki и разделена на несколько частей.

    DOSBox в "вопросах и ответах".

    О DOSBox'е.
    - Что это такое и зачем оно нужно?
    - Какую версию использовать?
    - Как запустить игру в DOSBox'е?
    - Как запустить PC-booter игру (т.е. игру, запускающуюся напрямую с образа дискеты)?

    Команды DOSBox'а.
    - Я запустил DOSBox — получил чёрный экран и командную строку, что писать?
    - Как мне получить содержимое папки с игрой в DOSBox’е?
    - У меня есть образ диска/дискеты и я не хочу его записывать на реальный носитель или загружать в виртуальный привод для игры, есть ли способ подключать образ в DOSBox'е напрямую?

    Горячие клавиши DOSBox'а.
    - Как перевести игру в полноэкранный режим?
    - Как записать видео-ролик или сделать скриншот игры? Как записать музыку?
    - У меня не проигрываются видеоролики, записанные в DOSBox'е!
    - Игра идет слишком быстро/медленно, что делать?
    - Есть ли в DOSBOx'е возможность сохраняться в любой момент (как например в эмуляторе Super Nintendo)?
    - Как переназначить клавиши в DOSBox'е?

    Частые проблемы при запуске игр.
    - На моем ноутбуке при переходе в полноэкранный режим изображение глючит или игра вообще вылетает.
    - Картинка сжата или, наоборот, хочется, чтобы пропали пустые полосы по бокам экрана в полноэкранном режиме
    - Где мне искать файл настроек dosbox.conf?
    - В игре нет звука или музыки, хотя они должны быть
    - Я монтирую диск с игрой, как написано, перехожу на него и запускаю игру с помощью команды GAMES\GAME\GAME.EXE (пример), но ничего не работает.

    DOSBox для пользователей.

    DOSBox для знатоков.

    Прочие полезные ссылки:

    DOSBox.conf - полное описание.

    Примеры запуска игр в DOSBox.

    Краткая инструкция по запуску glide-игр в особой сборке DOSBox.

    Описание DOSBox.

    Русский перевод интерфейса DOSBox и ридми-файла к нему (с официального сайта) (продублировано в аттаче)


    Видео на 10 минут про основные моменты


    Относительно самой темы


    Здесь обсуждается только использование программы DosBox для запуска старых DOS же игр. Когда описываете проблему - пишите о ней развёрнуто т.е. что делали, в какой последовательности, где происходит ошибка и т.п. Все сообщения, не удовлетворяющие этим условиям будут удаляться без предупреждения - не хочу видеть здесь помойку. Та же учесть постигнет нетлёнки авторов, задающих вопросы, разобранные в этом посте. Так, что соизвольте сначала поискать ответ на интересующий вас вопрос.
     

    Вложения:

    Последнее редактирование: 15 июн 2021
    RobinGood, ZaRR, Mel Shlemming и 91 другим нравится это.
  2.  
  3. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Кривой эмуляцией, например. Особенно напоровшись на защиту от отладки и эмуляции. :-(
     
  4. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Возникла необходимость задействовать виртуальный принтер, попробую поделиться опытом.

    На VOGONS, в основном, пытаются на реальных USB-девайсах из DosBox печатать, а мне нужен был именно виртуальный, т.к. много всякого непотребства на него выводить планировалось, в том числе командные коды и дёргать реальный принтер не хотелось.

    Как вы знаете, стандартный DosBox принтер вообще не поддерживает - позиционируется как игровая машинка, нужен SVN-Daum. Заходим к нему в настройки, наивно ставим в секции [printer] параметр printer=true, пишем в консоли echo Yahoo! > PRN и понимаем, что нифига не печатает.

    И правильно делает, никто ведь не знает, на каком порту принтер висит. Заходим в секцию [parallel]. Печатать будем на LPT1. В числе доступных значений у параметра parallel1 есть file. Казалось бы, это именно то, что нам нужно.

    Код:
    [printer]
    printer=true
    dpi=360
    width=85
    height=110
    printoutput=png
    multipage=false
    docpath=.
    timeout=0
    
    [parallel]
    parallel1=file
    Пишем в консоли echo Yahoo! > PRN

    Где наш файл?

    Не поверите, он в каталоге CAPTURE - там же, где и все скриншоты с видеороликами. Расширение у файла PRT, все команды и данные сохраняются в сыром виде. Простейший DIR > PRN создаст текстовый файл со списком файлов.

    Во-первых, если вам этого достаточно, секция [printer] не понадобится - параметра parallel1=file из [parallel] для такого функционала достаточно. Таким образом:

    Код:
    [parallel]
    parallel1=file
    И каждая сессия печати будет сохраняться в CAPTURE в виде файла с расширением PRT.

    Мне этого мало - желательно, чтобы работало графическое представление, стили шрифтов, плотность печати. Пробуем настроить.

    Код:
    [parallel]
    parallel1=printer    # виртуальный матричный принтер
    Теперь печать должна идти через виртуалку, параметры которой настраиваются в секции [printer]. Оставляем стандартные параметры:

    Код:
    [printer]
    printer=true
    dpi=360
    width=85
    height=110
    printoutput=png
    multipage=false
    docpath=.
    timeout=0
    Пишем в консоли echo Yahoo! > PRN

    Где наш файл?

    Уже не в CAPTURE. Теперь, чтобы выставить путь для сохранения документа, нужно изменить параметр docpath. Какой подвох ожидает трудолюбивого настройщика? Точка, указанная в качестве значения по умолчанию - это не текущий каталог, из которого производилась печать, там вы свой файл не найдёте. Это рабочий каталог самой программы DosBox.

    Другими словами, к виртуальном диску, на котором расположено ваше приложение, он никак не относится. Этот путь указывает на каталог реального винчестера. Например, C:\ или D:\PrintOutput (завершающую обратную косую можно не ставить - программа добавляет её в любом случае). Между прочим, имя файла указывать нельзя, это именно каталог, а имя формируется автоматически.

    Как же будет называться файл?

    Если printoutput = ps (PostScript), в зависимости от параметра multipage DosBox создаёт pageN.ps (multipage = false) или docN.ps (multipage = true), где N - первое возможное число от 1. Это значит, что счётчик не просто накапливается - проверяется первый доступный вариант. Скажем, если у вас на винте находятся page1.ps, page2.ps и page3.ps, а вы удалили page2.ps, при следующей печати будет повторно зайдествован индекс 2.

    Если printoutput = png или bmp, вариант с именем doc вам не встретится, только page.

    Не забывайте, что печатаете в картинку, а картинка - это целая страница. Как DosBox узнает, что можно сохранять страницу, если вы напечатали маленький текст, занимающий лишь её половину? Он ждёт какое-то время и если данных больше нет, сбрасывает буфер в картинку (завершает печать страницы).

    "Какое-то время" задаётся параметром timeout. Если поставить слишком маленькое значение timeout и программа не успеет распечатать страницу за этот промежуток (скажем, изображение медленно уходит на печать), большая страница разделится на несколько маленьких.

    Если он равен нулю, ситуация налаживается - DosBox ждёт вечно. Так ли это хорошо? Пока вы не допечатаете до конца страницы, он не сохранит изображение. Программа может отправить команду "конец страницы", но при простейшем type filename > PRN этого не происходит. Сделаем это сами - напишем простенькую утилитку FF (form feed), которая отправит на принтер 0Ch - конец страницы. Прикрепляю её к сообщению. Всего 11 байт, можно добавить в батник, печатающий текст.

    Код:
    type %1 > prn
    ff
    Как только FF завершит работу, DosBox создаст новое изображение с текущей страницей, даже если она не заполнена до конца.

    (если ручками в конце файла поставить этот же символ - 0Ch, получится то же самое, выбирайте сами - тот же Turbo Assembler при создании листинга программы именно так и поступает)

    Итак, принтер печатает в PNG и всё почти замечательно. Одна проблема - вместо кириллицы идут кракозябры. Я совершенно не помню, как это делалось в DOS - на тот момент (конец 90-х) у меня не было принтера, так что если я где и читал, как это решалось, уже забыл.

    К счастью, исходники принтера в DosBox неплохо читаются и служебные команды понять можно. Кодовая таблица 866 в наличии есть, но она не выбрана - по умолчанию во все 4 слота для кодировки ставится таблица 437.

    Если то, что у меня получилось - велосипед, отвернитесь и не читайте, я другого способа не знаю :)

    Берём контрольную последовательность 01Bh, 028h, 074h и ставим для принтера в слот первой кодировки таблицу 866, которая идёт у них 14-й по счёту.

    Интересно, что в этом месте у принтерного патча есть небольшой глючок, частенько встречающийся у многих программеров:

    PHP:
    case 0x274// Assign character table (ESC (t)
            
    if (params[2] < && params[3] < 16)
            {
               
    charTables[params[2]] = codepages[params[3]];
                   
    ...
    а должно быть 15потому что:

    const 
    Bit16u codepages[15] = {0437932850851853855860863865852857862864866};
    Ошибка некритичная, потому что при попытке выбрать 15-й элемент массива подставляется стоящая дальше в памяти нулевая ячейка, а ноль в качестве индекса, как видно по началу массива, допускается:

    Код:
    case 0: // Italics, use cp437
    Вот и всё. Итак, чтобы печатать в PNG кириллицу, достаточно сделать следующее:

    Код:
    [printer]
    printer=true
    dpi=360
    width=85
    height=110
    printoutput=png
    multipage=false
    docpath=c:
    timeout=0
    
    [parallel]
    parallel1=printer
    ...и запустить перед печатью мою утилитку - прикреплённый к этому сообщению файл pr866.com. Как правило, достаточно сделать это один раз при старте DosBox.

    Если файл не создаётся, значит страница заполнена не до конца. Печатайте через батник:

    Код:
    type %1 > prn
    ff
    Если я где-то ошибся, поправьте, не сочтите за труд.

    Будьте здоровы и счастливы, большой привет.
     

    Вложения:

    • pr866.zip
      Размер файла:
      380 байт
      Просмотров:
      254
    • ff.zip
      Размер файла:
      368 байт
      Просмотров:
      180
    Последнее редактирование: 1 авг 2013
    phase, Sherhan007, Vladimir 777 и 7 другим нравится это.
  5. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    115.263
    A.P.$lasH, я, наверное, всё подробно прочитаю вечером, но считаю, что это просто замечательное руководство. И его, наверное, стоит перенести в wiki.

    Да, это общеизвестный факт, и это очень плохо. Потому что есть игры - игры, да, - в которых нужен принтер. Пример - раритетнейшая детская игра Designasaurus. На сайте есть. Там детям предлагается (в одном из режимов) придумать и нарисовать из элементов собственного динозавра, а потом распечатать рисунок на принтере. Но современные дети, если вдруг кто-нибудь из них захочет поиграть в эту игру, такой радости лишены.

    Уточню, что в этом последнем абзаце своего сообщения я ни на что не намекаю и ни о чём не прошу, а просто рассказываю о том, что такое существует. Так что игры, в которых задействован принтер, БЫВАЮТ.

    ---------- Сообщение добавлено в 16:56 ---------- Предыдущее сообщение размещено в 16:55 ----------

    Да, и вопрос: эту утилиту можно будет выложить на сайте (понятно, с указанием авторства)?
     
    hobot и A.P.$lasH нравится это.
  6. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Если она потребуется, я ничего против не имею.

    Мне казалось, что есть более красивый способ, но сходу не нашёл.
     
    hobot нравится это.
  7. kreol Старший офицер Чёрной Гвардии

    kreol

    Администратор

    Регистрация:
    2 июл 2007
    Сообщения:
    115.263
    Даже если есть, это не означает, что предложенный тобой не имеет право на существование и популяризацию.
     
    A.P.$lasH нравится это.
  8. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Уточнил назначение параметра timeout, добавил в сообщение следующие строчки:

    Не забывайте, что печатаете в картинку, а картинка - это целая страница. Как DosBox узнает, что можно сохранять страницу, если вы напечатали маленький текст, занимающий лишь её половину? Он ждёт какое-то время и если данных больше нет, сбрасывает буфер в картинку (завершает печать страницы).

    "Какое-то время" задаётся параметром timeout. Если поставить слишком маленькое значение timeout и программа не успеет распечатать страницу за этот промежуток (скажем, изображение медленно уходит на печать), большая страница разделится на несколько маленьких.

    Если он равен нулю, ситуация налаживается - DosBox ждёт вечно. Так ли это хорошо? Пока вы не допечатаете до конца страницы, он не сохранит изображение. Программа может отправить команду "конец страницы", но при простейшем type filename > PRN этого не происходит. Сделаем это сами - напишем простенькую утилитку FF (form feed), которая отправит на принтер 0Ch - конец страницы. Прикрепляю её к сообщению. Всего 11 байт, можно добавить в батник, печатающий текст.

    Код:
    type %1 > prn
    ff
    Как только FF завершит работу, DosBox создаст новое изображение с текущей страницей, даже если она не заполнена до конца.

    (если ручками в конце файла поставить этот же символ - 0Ch, получится то же самое, выбирайте сами)
     
    kreol нравится это.
  9. Newbilius Программуль

    Newbilius

    Регистрация:
    24 авг 2007
    Сообщения:
    4.602
    Обнаружил, что на DOSBox SVN Daum (последняя версия) в играх вроде Commander Keen (любая часть), Dangerous Dave 2-3-4,Bio Menace происходит мигание экрана черным. Кто-нибудь сталкивался? С настройками пробовал копаться, не помогает.

    Видео (27 секунд, 4.4 мб.):
    http://yadi.sk/d/wYqBwz1x9uzUj

    Мои настройки
     
  10. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    У меня тоже мерцает, но несколько иначе (с теми же настройками): http://yadi.sk/d/FfWUtwG19v8PV
    Версия точно та же? (25.07.2013).
     
    Newbilius и A.P.$lasH нравится это.
  11. Newbilius Программуль

    Newbilius

    Регистрация:
    24 авг 2007
    Сообщения:
    4.602
    Да, версия та же.
     
  12. Newbilius Программуль

    Newbilius

    Регистрация:
    24 авг 2007
    Сообщения:
    4.602
    Что интересно, на последней стабильной старой версии 0.74 проблем нет. Хех.
     
  13. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Вообще уже один раз было, что вывод на экран подобным образом сломали, вот видимо опять.
     
    Newbilius нравится это.
  14. Val07og

    Val07og

    Регистрация:
    1 апр 2008
    Сообщения:
    897
    MisterGrim, если так подёргивается экран – может, вылечится повышением тактов процессора (Ctrl+F12) – поставь не 3000, а 10000, например.
    В файле конфигурации это можно поправить здесь:
    Осторожней с максимальной скоростью – в некоторых играх может перестать определяться звуковая карта.

    Nubilius, мерцания нет ни при каких настройках, в т. ч. и тех, что в сообщении (версия июльская).
    Попробуй тоже скорость поднять – вдруг поможет?
     
    Последнее редактирование: 30 сен 2013
  15. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.569
    Пытаюсь в нём записать ролик. Использую вот эту сборку. Жму ctrl-alt-f5, как и надо, снимаю, жму те же кнопки, потом иду в папку count - там игрофой процесс отделён от набора команд для его запуска. Но это-то ладно - у видео с игровым процессом маленький размер изображения и сильно отстающий звук. А с набором всё нормально. Что нужно делать, чтобы сделать изображение видео покрупней и нормализовать звук?
     
  16. Ogr 2 лол

    Ogr 2

    Хелпер Переводчик

    Регистрация:
    25 мар 2008
    Сообщения:
    6.515
    отключи всинк в ДБ.
    перегнать в видео редакторе с ресайзом. лол
     
  17. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.569
    Ogr 2, давненько не копался в настройках DOSBox'a, уже позабывал весь тамошний жаргон. Можно на русском?
     
  18. Ogr 2 лол

    Ogr 2

    Хелпер Переводчик

    Регистрация:
    25 мар 2008
    Сообщения:
    6.515
  19. Genesis Злоботряс

    Genesis

    Регистрация:
    21 апр 2011
    Сообщения:
    12.569
    Ogr 2, так, а что такое ДБ?

    Кстати, разобрался во второй части того поста. Зачем записывать с DOSBox'a видео сторонним редактором, если есть встроенный? Другие-то вон записывали со встроенного - и ничего.
     
  20. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.605
    Насколько помню, последние версии SVN Daum при записи игнорируют MIDI и CD-Audio музыку, если вообще не отправляют в поток все, кроме кадров и не музыкальное аудио.
     
  21. Ogr 2 лол

    Ogr 2

    Хелпер Переводчик

    Регистрация:
    25 мар 2008
    Сообщения:
    6.515
    DOSBox - ДосБокс - ДБ
    нет, не понял. лол. развешь видео редакторами записывают? разрешения игры = разрешения видео.
    надо полагать, они у тебя сторонними средствами воспроизводятся, отсюда и...
     
    Genesis нравится это.
  22. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.605
    Это происходит при:
    1) Монтировании через DT и монтировании командой mount X X -t cdrom
    2) при монтировании в самой сборке командой imgmount X Z -t iso
    3) Не уверен, но и при монтировании через меню Drive->X->Mount as Image

    Забавно читать про воспроизведение сторонними средствами, которые не используются - ничего кроме сборки нет.
    Указанное выше помню по MadSpace.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление