SAND STORM

朝ぼらけ

2009年10月20日

DOSBoxの解説

Filed under: 未分類 — Tags: — sajin @ 18:12

DOSBoxはDOS(Disk Operating System)のemulatorでWindowsのDOS窓では動かないDOS時代のprogramを動かすことができる。

Official: DOSBox, an x86 emulator with DOS / SourceForge
Forum: VOGONS > DOSBox
Wiki: DOSBoxWiki / StrategyWiki
Manual: DOSBox Manual


[Menu]


◇SPEC

CPU: 286/386 realmode/protected mode
memory: XMS/EMS
graphic: Tandy/Hercules/CGA/EGA/VGA/VESA
Sound: Sound Blaster/Gravis Ultra Sound card
MIDI: Roland MPU-401

634kb!

◎誰もが昔悩まされたcombentional memoryはほぼ最大限確保されるので心配ない。


[互換性]

互換性はemulatorの常として100%ではないが、最近のversionでかなり向上しているようだ。それにDOSといってもIBM-PCで主流だったMS-DOSでPC98のものは動かない。

◇DOS32A

またDOS/Vでも末期の386 Protect modeを使うDOS4GW.exeを介するものは動かないが、DOS4GW.exeの代わりにDOS32Aを使うことにより起動するものも多い。

1.DOS4GW.exeを_DOS4GW.exeなどにrename
2.DOS32A.exeを同じfolderに入れDOS4GW.exeにrename

DOS32A @ DOSBox Wiki

DOS32Aの方が軽いのでそれで動くなら置き換えてしまった方がいい。

◇Test結果

Zork 正常動作
Dune 2 正常動作
Wolfenstein 3D 正常動作
Master of Magic 日本語版 正常動作。mouseの反応が遅いのでCPU速度を上げておく必要有り。
Destruction Derby2 demo DOS32A置き換えで起動
System Shock 動かず。DOS32Aでもダメ。CDcheckもしくは日本語で×

問題が出るとしたらやはり末期の386CPU/CD drive/graphic Board/MIDIなど新しい上級hardwareを使用したものになるだろう。

◇注意点

DOSとは言え、emulationにはかなりのCPU powerを浪費する。使わない時はAlt+Pauseで強制停止させておけばこの浪費は防げるが、Alt+Pauseでの停止はmouse cursorがDOSBoxに捕らわれた状態になるのでAlt+Tabなどを連打して脱出しなければならない。


[使い方]

◇D-Fend

gameごとに登録したprofileを選択しておけば別々の設定で起動できる、front end utilityのD-Fend reloadedを使うのが便利。

D-Fend ReloadedはWindowsのみだが、同じD-Fend派生でmultiplatform対応のDBGLがある。

◇shortcut法

DOS内からcommandを打つ方法や外部fileで起動する方法もあるが、DOSの知識が必要になる。gameごとにshortcutを作るのが簡単。

DOSBoxのショートカットを作り、propertyを開いて、リンク先のDOSBox.exe以降に追加。

DOSBox.exe [実行fileのパス] -c “Mount C [実行fileのあるpath]”

例えば、

DOSBox.exe C:\DOS\Wolfenstein3D\wolf3d\WOLF3D.EXE -c “Mount C C:\Wolfenstein3D\wolf3d” -noconsole -fullscreen

といった形で指定する。※commandやPATHが空白を含む場合は””で囲む。

-noconsole DOS画面のみを表示
-fullscreen 全画面表示
-conf dosbox.confの代わりに指定した.confを読み込む
-exit 起動した実行programが終了した時、DOXBox自体も自動的に終了する。

chdir C:\Game\RPG\#Wizardry\1~5\
C:\Game\#DOSBox\DOSBOX\DOSBox.exe -conf WIZ5.conf -noconsole -c “exit”

DOSBox本体とgameの実行programがあるpathが異なり、作業場所を実行programのpathにしないと動かない場合、batch fileを組んでchdirで移動してから、fullpathでdosbox.exeを実行し、同様に.confのある場所が実行programと異なる場合もfullpathで.confを指定する。

Usage – DOSBox Wiki

・DOSBox内での入力

Mount c H:\MoM

で自分のPCのH: driveのMoM directoryをemulateされたDOSBoxのC: driveとして設定。

[Trouble]

◇key配列と実際に出てくる文字が異なる

英語keyboard入力しか受け付けないので’半角/全角’が`(チルダ)になっているし、「:」はSHIFT+;(セミコロン)、’\’は右SHIFT左横のKEYで入力。Ctrl+F1でkeymappingし直さないと「”」は入力できないといった事が多発する。

我慢して配置、入力法を憶えるか、

  1. Control Panel(コントロールパネル)>地域と言語のオプション>言語
  2. テキストサービスと入力言語>詳細
  3. installされているサービス>追加>入力言語で”英語(米国)”を選択>OK
  4. その後に既定の限定を”英語(米国)-US”を選択、適応。

で入力言語を変更、もしくは

日本語keyboard版 @ モンちゃん寄ってって!

などで日本語keyboard対応版をinstall。

◇右SHIFT keyが効かない

Control Panel > System > Systemの詳細設定 > System Property > 環境変数 > 新規作成

で変数名(N)に”sdl_videodriver”,変数値(V)に”windib”を入れてOKする。


[shortcut key]

Alt+Enter: desktop⇔fullscreen切り替え
Alt+Pause: 強制Pause。Alt+Tabで切り替えないとmouseがDOSBoxに囚われたままになる。
Ctrl+F1: key割り当て変更
Ctrl+F4: mountしたfile情報を更新する。Also cycles through disk images mounted using imgmount.
Ctrl+F5: screenshotを撮る(Dosbox\Captureに保存)。
Ctrl+ALT+F5: 動画の録画を開始/停止
Ctrl+F6: 音声をWAV形式で\Captureに録画開始/停止
Ctrl+ALT+F7: OPL Commandsを録画開始/停止
Ctrl+ALT+F8: MIDIを録画開始/停止
Ctrl+F7: frameskipを減らす
Ctrl+F8: frameskipを増やす
Ctrl+F9: DOSBoxを終了
Ctrl+F10: mouseをDOSBox内部のものとWindowsのとで切り替え
Ctrl+F11: CPU速度Down
Ctrl+F12: CPU速度Up
Alt+F12: CPUの最大能力までspeed up。turbo機能。

manual和訳

[key mapping]

DOSBox Wiki > Mapper

CTRL+F1を押してkeymapping画面を出す。とりあえずこれを見れば日本語keyboardでもどれを押せばどの出力に該当するのかがわかる。saveすると、mapper.txtが生成される。基本的にGUIで操作するより、このmapper.txtを見た方が早い。

key bindを変更するには該当keyをclickして緑色にし、Addをclickした後にbindしたいkeyを押す。これは何度でも行うことが可能で、一つのkeyで同時に複数の出力を行うことができる。Nextで登録されたものが次々表示され、Delで今表示されているBINDが消去される。

例えばkeyboardを英語にして半角/全角を押しても`(tilda)がでない場合、Addで他のkeyにmappingすれば入力できるようになる。

※!#$%などのSHIFT同時押しでの出力をbindすることはできない。これらはqとQが表裏一体であるように表のkeyと一体である。また”など存在しない出力もあり、これらを出すことはできない。

hold: 該当keyを押している時だけ作用する。

mod: CTRL+ALT+F5など同時押しに使用するkey。自由に登録して好きな同時押しを機能させることができる。

Tips: Joystick/Padなどのbuttomもkeyboard同様に適用できる。


[設定]

◇Sound設定

DOS gameのSetup.exeやinstall.exe,install.batなどは単なるfileのinstallerではなく音声設定を兼ねているものが多い。当時の音はDirectSoundやOpenALのように統一されたAPIがあってそれに合わせている訳ではないので、これで使用hardwareを指定しないと音がならないものが多数ある。だから、音が鳴らない場合は一度Mountした状態でDOSBoxを起動した上でDOSBox内からinstall.batやsetup.exeなどを実行し設定する必要がある。

VDMSound(Forum,Wikipedia) – VDMSoundはWindows上でDOS program用にsoundcardをemulateするutility。Vista移行には対応しておらず、開発は停止している。すでにcodeはDOSBoxに移植されているのでDOSBoxを使うなら必要ない。DOS窓+VDMSoundの利点は負荷が低いことだが、CPUの性能向上などによりもう考えなくていいだろう。

◇dosbox.conf

DOSBoxの設定fileである”dosbox.conf”をメモ帳で開き設定する。

[sdl]
# fullscreen — fullscreenで開始する(true/false)
# fulldouble — fullscreen時にdouble bufferingを行う
# fullresolution — fullscreen時の解像度を指定(original もしくは 指定size 1024×768など)
# windowresolution — window時のsizeを指定(original もしくは 指定size 1024×768など)
# output — fullscreen時、画像出力に何を使うか(surface/overlay/opengl/openglnb/ddraw)
# autolock — DOSBoxのwindow上でclickした時、mouseを自動的にgame内部のものに切り替えlockする(CTRL+F10同様)。falseだとwindowの領域内にcursorがある時のみDOSBoxのそれとして機能し、windowから外すとdesktopに戻る。(true/false)
# sensitiviy — mouse感度
# waitonerror — DOSBoxがErrorを起こしたときに勝手に終了せず待つ
# priority — Windows上における実行優先度。,の後に2つ目を指定するとそれは最小化時の優先度になる (lowest,lower,normal,higher,highest)
# mapperfile — 専用にcustomしたkey配置設定fileを読み込む
# usescancodes — OSが受け付けない同時key押下を避ける(true/false)

fullscreen=True
fulldouble=True
fullresolution=1920×1200
windowresolution=original
output=ddraw
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true

[dosbox]
# memsize — DOSBoxが使うmemory sizeを決める。当時のmemory sizeなど知れているので64MBもあれば十分過ぎるぐらい十分。
# machine — 描画に使用するhardwareを決める。(hercules,cga,ega,vga,tandy,pcjr,svga_s3)
# captures — screenshot/音声/動画を保存するpath

Hercules(Hercules Video Card): 白黒。CGA互換。

CGA(Color Graphics Adapter): 320×200/640×200,同時4色/16色(cyan&magentaかlight green&light yellowといったドギツイ色の組み合わせしか表示できない)

EGA(Enhanced Graphics Adapter): 640×350 同時16色/64色 CGA互換。

VGA(Video Graphics Array): 640×480 同時16色/262144色 CGA/EGA互換。

SVGA(Super Video Graphics Array): 800×600以上。特定のhardwareでなくVESAの規格であるため内容は変わっている。

pcjr(IBM PCjr): IBM-PCのhome computer版(性能が低く大半のsoftwareが動かなかった)。King’s Questはこれでしか正常描画されない。

Tandy(Tandy 1000): PCjrのcopy

DOSBox Graphic and Machine Emulation, CGA, VGA, Tandy, PCJr, Hercules @ The Developer’s Tidbit

language=
machine=vga
captures=capture
memsize=64

[render]
# frameskip — DOSBoxが一回描画するごとにskipするframeの数
# aspect — 描画の縦横比率を正常に保つか否か(true/false)
# scaler — 低解像度描画のものをn倍描写する(none,normal2x,normal3x,advmame2x,advmame3x,advinterp2x,advinterp3x,tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.)

none: まったく拡大しない。
normal2x/3x: 単純拡大。
sai: 拡大しぼかしをかける。質はもっとも低い。
supersai: SAI同様に拡大しぼかしをかけるが結果はかなり明瞭なものになる。処理は重い。
supereagle: SAIよりマシだが、SuperSAIよりボケる。Fraps無効化。directX/openglを通さない用だ。supereagleは2x。
advinterp:
advmame: SAIとは別のぼかし。ボケは少なく、単純拡大に近い。
hq: もっとも質が高く、拡大補間しながらもボケがでない。処理はもっとも重い。
scan: scanline(走査線)が入るのでPC用monitorでは逆に見づらくなる。
tv: TV monitor用の表示。scanlineに近い欠けた描画になる。
rgb: RGB  monitor用。scanlineに近い欠けた描画になる。

User Manual/Appendix: Graphic filters – ScummVM :: Wiki – 画像付きでそれぞれの差を説明しているので分かりやすい。
Image scaling @ Wikipedia

window表示で上手く拡大できない場合、Windowsであればmagnify.exeなどの拡大鏡utilityを使うといい。

frameskip=0
aspect=true
scaler=normal2x

[cpu]

# core — DOSBoxが使うCPUのcore数 (simple,normal,full,dynamic)
# cycles — CPU速度
# cycleup — Ctrl+F12を押した時に上がるCPU速度量
# cycledown — Ctrl+F11を押した時に下がるCPU速度量

core=dynamic
cycles=20000
cycleup=2000
cycledown=1000

cyclesがEmu内CPU性能でこれが遅いと異常が出るgameと速いと異常が出るgameの両方があるのでgameごとに調整の必要有り。Ctrl+F11/F12で上下。

[mixer] 音声出力に関する設定
# nosound — trueで消音。ただしsoundはemulateされている。
# rate — 音のsample rate(22050/44100など)
# blocksize — Mixer block size。大きい方が音が途切れることは少なくなるが代りに遅れ易くなる。
# prebuffer — blocksizeのtopに指定数x0.01秒分のdataを事前にcacheしておくか。

nosound=false
rate=44100
blocksize=2560
prebuffer=256

DOSBox Sound Emulation with DOSBox Audio and Music Samples @ The Developer’s Tidbit

[midi] Roland社のMIDI機器MPU-401の設定
# mpu401 –(none/uart/intelligent)
# device — device that will receive the MIDI data from MPU-401.(default,alsa,oss,win32,coreaudio,none)

mpu401=intelligent
device=default
config=

[sblaster] Sound Blasterに関するsetting
# sbtype — type of sblaster to emulate:(none,sb1,sb2,sbpro1,sbpro2,sb16) 基本的にsb16で良い。
# sbbase,irq,dma,hdma — The IO/IRQ/DMA/High DMA address of the soundblaster. IRQ,DMA,High DMAの設定。IRQは認識番号で他のhardwareと被ってはならない。DMAはdirect memory accessで通常変える必要はない。
# mixer — Allow the soundblaster mixer to modify the dosbox mixer. Soundblaster側の音を変更しようとするのをDOSBox側が反映させるか。
# oplmode — type of OPL emulation: auto,cms,opl2,dualopl2,opl3.
# On auto the mode is determined by sblaster type.
# All OPL modes are ‘Adlib’, except for CMS.
# oplrate — sample rate of OPL music emulation.

sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=44100

sbtypeの設定項目は見ておいた方がいい。この通り設定しないと鳴らないprogramもある。

[speaker] TandyのSound systemに関するsetting
# pcspeaker — Enable PC-Speaker emulation.
# pcrate — sample rate of the PC-Speaker sound generation.
# tandy — Enable Tandy Sound system emulation (off,on,auto).
# For auto Tandysound emulation is present only if machine is set to tandy.
# tandyrate — sample rate of the Tandy 3-Voice generation.
# disney — Enable Disney Sound Source emulation.

pcspeaker=true
pcrate=22050
tandy=auto
tandyrate=22050
disney=true

Sound @ DOSBoxWiki

[autoexec]以下に記述することでautoexec.batと同等の機能を果たすことができる。


[Link]

DOSBoxWiki > Dosbox.conf

DOS/32 Advanced DOS Extender Home Page

VOGONS :: View topic – Windows 3.1x DOSBox Guide


関連記事

3 Comments »

  1. right shiftが効かない。
    http://vogons.zetafleet.com/viewtopic.php?t=18465
    上で論議されているが、日本語keyboardの問題だ。
    DOSBoxのある場所でcmd.exeから

    set sdl_videodriver=windib
    dosbox.exe

    をやって起動すればその場でだけは使えるが、GUIから起ち上げるとまったく認識しない。driverをHIDに置き換えても駄目。

    Comment by sajin — 2012年1月21日 @ 22:49

  2. コンピュータの環境変数設定でsdl_videodriverをwindibとして追加しておけばGUIから立ち上げてもOKですよ。

    Comment by KazaKaza — 2012年4月22日 @ 03:07

  3. ありがとう。早速記事に追加しておきました。

    Comment by sajin — 2012年4月22日 @ 04:24

RSS feed for comments on this post. TrackBack URL

Leave a comment


sand-storm.net