I did some searching, but couldn't find many details for people using Macs. I have a new iBook with a 1.33Ghz G4 processor. I've found that DOS emulators run rather slowly on this machine, both on Virtual PC and with DOSBOX. I find that the system is too laggy to run any DOS-based PC games (for names sake, such titles that come to mind are Dark Forces, Duke Nukem 3D, Rise Of The Triad). They all usually get 1-2fps. Raising the CPU cycles to about 10,000, when my CPU is maxxed out, only increases it to roughly 3-4fps.
I was wondering if this was a common issue (I'm aware of the inefficiencies of emulation), or of this level of performance was rather unusual. I'd like some ideas on how to get the performance up to 30+fps, but there doesn't seem to be many options. So, if you're using a Mac, please let me know what type of performance you commonly experience on classic DOS games, and let me know of any key performance enhancements I can make that aren't included in the readme or are only lightly touched upon.
P.S. I've read the Readme file included, but it commonly speaks about attributes applied to the executable (ie: -fullscreen). How are these applied to the Mac executable?
That sounds about right. Those games wouldn't be playable on my x86 PC that is 2.5 times as fast in terms of raw clock speed, except that DOSBox has a dynamic recompliation core (which probably only works on x86 - I'm not sure). You probably aren't going to get any first-person shooters working playably, except maybe for the oldest ones like Wolf3D.
Not sure about your last question as I have little experience with Macs. I'm sure someone else knows though.
The million dollar question is why wouldn't they even run on your machine? So, I try to get DOSBOX going on my XP machine, and I couldn't even get them going at that point? That's.... unfortunate, to say the least.
I've been able to get Dark Forces running due to recent fixes in the CVS versions of DOSBox.
Duke Nukem 3D is way too new of a game to run under current DOSBox, and is a low priority due to the fact that the source code has been released to the public (allowing the creation of native ports of the game to any modern OS and platform that people take the effort to make).
Rise of the Triad should be possible to get working, although I haven't tried as I only enjoyed that game for its multiplayer.
The speed sounds about right. Pretty much how I can run DOSBox with my AMD 1800+ (1.5GHz).
HunterZ wrote:
Duke Nukem 3D is way too new of a game to run under current DOSBox, and is a low priority due to the fact that the source code has been released to the public (allowing the creation of native ports of the game to any modern OS and platform that people take the effort to make).
Dark Forces runs pretty well for me. Completely playable. I've tried it on 3 systems: AthlonXP 2.4GHz, Athlon64 1.8GHz, and a Pentium M 2.13GHz. So really fast machines. I think normal core is best for Dark Forces. Dynamic core doesn't seem totally stable with it and does not help with speed. Dark Forces has been said to use self-modifying code which the dynamic core can't help with apparently. You're stuck with normal core anyway though. You definitely want to try to get a CVS build, and a build that's compiled properly (I'm not sure how to do it).
Perhaps your problem is more to do with the display output mode? I think you should be able to get around 10fps... Try no sound and frameskip=2 perhaps. And try all the different display modes. I have no idea which ones work on Mac though. Using the wrong display mode will seriously impact performance. I've attached a old DOS VGA/SVGA benchmark called Chris's Bench (CBENCH). It's incredibly helpful for figuring out which display mode is optimal. Set the cycles to the same for each test and just vary DOSBOX's display output mode.
My Pentium M 2.13 here can run 20,000 cycles in normal and it is completely fluid. 20fps or more I'd guess. I don't know how to check. But it's as smooth as DF can get I think.... Here's my .conf
I agree with HunterZ on this. I could try some things, but the difference is that your CPU natively supports DOS code, while mine needs to emulate it, significantly increasing any latency on the system. I agree, it SHOULD be playable. By raw power, and even with emulating inefficiency, I should be able to run the game, but who can tell. I like the ideas you presented, but:
A) I have no idea how to setup the .conf file on my Mac (supposed to put it in my preferences folder, but should it be in a subfolder, and what is it supposed to be called).
B) I don't know anything about "cores". Emulation is a relatively new topic for me.
Actually, with normal core (as swaaye is using in this case) emulates the CPU completely in software just as it would on a Mac.
DOSBox provides several methods of emulating the CPU of a DOS machine. These methods are referred to as "cores". Choices include simple, normal, full, and dynamic (but vary depending on version and host platform).
Find out about CVS builds in the development forum. Unfortunately those are all Windows versions. You'd probably have to compile the source code yourself, and I don't know if Mac is supported without patching (probably not).
If the source is clean, I can compile it myself. But I think there's only one build available for Mac at the moment, which is what I have anyway.
If the normal core is straight software, then there's no reason why it shouldn't work badly on my machine if it's fine on swaaye's. Unless there's problems with the video encoding, which should be passed off to the video card rather than the CPU, to help compatibility issues (though then it'll cause some driver issues, I'm sure - not too clear on the details here).
Some performance tips for DOSBox on a Mac, from another Mac user. First off, be sure you're using surface output AND full screen. The performance difference between surface in a window and at full screen is quite massive. Secondly, don't be afraid to use frameskips. Even a single extra skip has made a major difference between jerky sound and accurate sound. If you can, use roland or general midi for your music. I use the simple core myself. If you have to play in a window use OpenGL for your output; (though it IS still over all slower than surface fullscreen!) That being said I still don't get OMG amazing performance. However I can play most of the older games I desire to on my Mac mini (1.42 GHz G4).
As for compiling it yourself. Go for it. I get better performance and better compatibility running a CVS build myself. You need to have SDL installed, however I just take care of this (and lots of other ports I use) via Darwinports.
Yeah I'm sorry to lead you on about performance but I think with normal core you should still be able to get it playable. DOSBOX is tricky to configure and most of us don't have any Mac experience....
I am running a g4 1.67ghz PB 17" and I have increased the CPU Cycles up, but the sound is still very poor. My test is Full Throttle, barely playable. I figured out how to switch to full screen, using the Ctrl-Cmd-enter keys, but I dont think that the same as the the "surface output and full screen" that neowolf has described. How do you enter that mode?
Neowolf, how do you get decent performance with your G4?
Kevin
You'll need to edit the DOSBox config file (don't know what or where it is on Mac) to set output=overlay.
I agree that SCUMMVM is worth checking out. I've used recent versions to play Full Throttle and it does a pretty good job now. I reported a few minor bugs a while back with FT in SCUMMVM that have probably been fixed by now.
Edit: Just checked sourceforge, and they fixed both bugs.
I'll just paste my config files. Keep in mind I'm running a recent cvs build myself. I also use two mini AppleScripts as launchers.
Windowed
1[sdl] 2# fullscreen -- Start dosbox directly in fullscreen. 3# fulldouble -- Use double buffering in fullscreen. 4# fullfixed -- Don't resize the screen when in fullscreen. 5# fullresolution -- What resolution to use for fullscreen, use together with fullfixed. 6# output -- What to use for output: surface,overlay,opengl,openglnb. 7# hwscale -- Extra scaling of window if the output device supports hardware scaling. 8# autolock -- Mouse will automatically lock, if you click on the screen. 9# sensitiviy -- Mouse sensitivity. 10# waitonerror -- Wait before closing the console if dosbox has an error. 11# priority -- Priority levels for dosbox: lower,normal,higher,highest. 12# Second entry behind the comma is for when dosbox is not focused/minimized. 13# mapperfile -- File used to load/save the key/event mappings from. 14 15fullscreen=false 16fulldouble=false 17fullfixed=false 18fullresolution=1280x1024 19output=openglnb 20hwscale=1.00 21autolock=true 22sensitivity=100 23waitonerror=true 24priority=higher,higher 25mapperfile=mapper.txt 26 27[dosbox] 28# language -- Select another language file. 29# memsize -- Amount of memory dosbox has in megabytes. 30# machine -- The type of machine tries to emulate:hercules,cga,tandy,vga. 31# captures -- Directory where things like wave,midi,screenshot get captured. 32 33language= 34machine=vga 35captures=capture 36memsize=8 37 38[render] 39# frameskip -- How many frames dosbox skips before drawing one. 40# aspect -- Do aspect correction. 41# scaler -- Scaler used to enlarge/enhance low resolution modes. 42# Supported are none,normal2x,advmame2x,advmame3x,advinterp2x,interp2x,tv2x. 43 44frameskip=1 45aspect=false 46scaler=normal2x 47 48 49[cpu] 50# core -- CPU Core used in emulation: simple,normal,full. 51# cycles -- Amount of instructions dosbox tries to emulate each millisecond. 52# Setting this higher than your machine can handle is bad! 53# cycleup -- Amount of cycles to increase/decrease with keycombo. 54# cycledown Setting it lower than 100 will be a percentage. 55 56core=simple 57cycles=3000 58cycleup=500 59cycledown=500 60
…Show last 116 lines
61[mixer] 62# nosound -- Enable silent mode, sound is still emulated though. 63# rate -- Mixer sample rate, setting any devices higher than this will 64# probably lower their sound quality. 65# blocksize -- Mixer block size, larger blocks might help sound stuttering 66# but sound will also be more lagged. 67# prebuffer -- How many milliseconds of data to keep on top of the blocksize. 68 69nosound=false 70rate=22050 71blocksize=2048 72prebuffer=10 73 74 75[midi] 76# mpu401 -- Enable MPU-401 Emulation. 77# intelligent -- Operate in Intelligent mode. 78# device -- Device that will receive the MIDI data from MPU-401. 79# This can be default,alsa,oss,win32,coreaudio,none. 80# config -- Special configuration options for the device. 81 82mpu401=true 83intelligent=true 84device=default 85config= 86 87[sblaster] 88# type -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16. 89# base,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster. 90# mixer -- Allow the soundblaster mixer to modify the dosbox mixer. 91# oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3. 92# On auto the mode is determined by sblaster type. 93# oplrate -- Sample rate of OPL music emulation. 94 95type=sb16 96base=220 97irq=7 98dma=1 99hdma=5 100mixer=true 101oplmode=auto 102oplrate=22050 103 104[gus] 105# gus -- Enable the Gravis Ultrasound emulation. 106# base,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the 107# Gravis Ultrasound. (Same IRQ's and DMA's are OK.) 108# rate -- Sample rate of Ultrasound emulation. 109# ultradir -- Path to Ultrasound directory. In this directory 110# there should be a MIDI directory that contains 111# the patch files for GUS playback. Patch sets used 112# with Timidity should work fine. 113 114gus=true 115rate=22050 116base=240 117irq1=5 118irq2=5 119dma1=3 120dma2=3 121ultradir=C:\ULTRASND 122 123[speaker] 124# pcspeaker -- Enable PC-Speaker emulation. 125# pcrate -- Sample rate of the PC-Speaker sound generation. 126# tandyrate -- Sample rate of the Tandy 3-Voice generation. 127# Tandysound emulation is present if machine is set to tandy. 128# disney -- Enable Disney Sound Source emulation. 129 130pcspeaker=true 131pcrate=22050 132tandyrate=22050 133disney=true 134 135[bios] 136# joysticktype -- Type of joystick to emulate: none, 2axis, 4axis, 137# fcs (Thrustmaster) ,ch (CH Flightstick). 138# none disables joystick emulation. 139# 2axis is the default and supports two joysticks. 140 141joysticktype=2axis 142 143[serial] 144# serial1-4 -- set type of device connected to com port. 145# Can be disabled, dummy, modem, directserial. 146# Additional parameters must be in the same line in the form of 147# parameter:value. Parameters for all types are irq, startbps, bytesize, 148# stopbits, parity (all optional). 149# for directserial: realport (required). 150# for modem: listenport (optional). 151 152serial1=disabled 153serial2=disabled 154serial3=disabled 155serial4=disabled 156 157[dos] 158# xms -- Enable XMS support. 159# ems -- Enable EMS support. 160# umb -- Enable UMB support (false,true,max). 161 162xms=true 163ems=true 164umb=true 165 166[ipx] 167# ipx -- Enable ipx over UDP/IP emulation. 168 169ipx=false 170 171[autoexec] 172# Lines in this section will be run at startup. 173 174mount c /Users/neowolf/Documents/DOSBox/C 175c:
and full screen
1[sdl] 2# fullscreen -- Start dosbox directly in fullscreen. 3# fulldouble -- Use double buffering in fullscreen. 4# fullfixed -- Don't resize the screen when in fullscreen. 5# fullresolution -- What resolution to use for fullscreen, use together with fullfixed. 6# output -- What to use for output: surface,overlay,opengl,openglnb. 7# hwscale -- Extra scaling of window if the output device supports hardware scaling. 8# autolock -- Mouse will automatically lock, if you click on the screen. 9# sensitiviy -- Mouse sensitivity. 10# waitonerror -- Wait before closing the console if dosbox has an error. 11# priority -- Priority levels for dosbox: lower,normal,higher,highest. 12# Second entry behind the comma is for when dosbox is not focused/minimized. 13# mapperfile -- File used to load/save the key/event mappings from. 14 15fullscreen=yes 16fulldouble=false 17fullfixed=false 18fullresolution=1280x1024 19output=surface 20hwscale=1.00 21autolock=true 22sensitivity=100 23waitonerror=true 24priority=higher,higher 25mapperfile=mapper.txt 26 27[dosbox] 28# language -- Select another language file. 29# memsize -- Amount of memory dosbox has in megabytes. 30# machine -- The type of machine tries to emulate:hercules,cga,tandy,vga. 31# captures -- Directory where things like wave,midi,screenshot get captured. 32 33language= 34machine=vga 35captures=capture 36memsize=8 37 38[render] 39# frameskip -- How many frames dosbox skips before drawing one. 40# aspect -- Do aspect correction. 41# scaler -- Scaler used to enlarge/enhance low resolution modes. 42# Supported are none,normal2x,advmame2x,advmame3x,advinterp2x,interp2x,tv2x. 43 44frameskip=1 45aspect=false 46scaler=normal2x 47 48[cpu] 49# core -- CPU Core used in emulation: simple,normal,full. 50# cycles -- Amount of instructions dosbox tries to emulate each millisecond. 51# Setting this higher than your machine can handle is bad! 52# cycleup -- Amount of cycles to increase/decrease with keycombo. 53# cycledown Setting it lower than 100 will be a percentage. 54 55core=simple 56cycles=3000 57cycleup=500 58cycledown=500 59 60[mixer]
…Show last 115 lines
61# nosound -- Enable silent mode, sound is still emulated though. 62# rate -- Mixer sample rate, setting any devices higher than this will 63# probably lower their sound quality. 64# blocksize -- Mixer block size, larger blocks might help sound stuttering 65# but sound will also be more lagged. 66# prebuffer -- How many milliseconds of data to keep on top of the blocksize. 67 68nosound=false 69rate=22050 70blocksize=2048 71prebuffer=10 72 73 74[midi] 75# mpu401 -- Enable MPU-401 Emulation. 76# intelligent -- Operate in Intelligent mode. 77# device -- Device that will receive the MIDI data from MPU-401. 78# This can be default,alsa,oss,win32,coreaudio,none. 79# config -- Special configuration options for the device. 80 81mpu401=true 82intelligent=true 83device=default 84config= 85 86[sblaster] 87# type -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16. 88# base,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster. 89# mixer -- Allow the soundblaster mixer to modify the dosbox mixer. 90# oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3. 91# On auto the mode is determined by sblaster type. 92# oplrate -- Sample rate of OPL music emulation. 93 94type=sb16 95base=220 96irq=7 97dma=1 98hdma=5 99mixer=true 100oplmode=auto 101oplrate=22050 102 103[gus] 104# gus -- Enable the Gravis Ultrasound emulation. 105# base,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the 106# Gravis Ultrasound. (Same IRQ's and DMA's are OK.) 107# rate -- Sample rate of Ultrasound emulation. 108# ultradir -- Path to Ultrasound directory. In this directory 109# there should be a MIDI directory that contains 110# the patch files for GUS playback. Patch sets used 111# with Timidity should work fine. 112 113gus=true 114rate=22050 115base=240 116irq1=5 117irq2=5 118dma1=3 119dma2=3 120ultradir=C:\ULTRASND 121 122[speaker] 123# pcspeaker -- Enable PC-Speaker emulation. 124# pcrate -- Sample rate of the PC-Speaker sound generation. 125# tandyrate -- Sample rate of the Tandy 3-Voice generation. 126# Tandysound emulation is present if machine is set to tandy. 127# disney -- Enable Disney Sound Source emulation. 128 129pcspeaker=true 130pcrate=22050 131tandyrate=22050 132disney=true 133 134[bios] 135# joysticktype -- Type of joystick to emulate: none, 2axis, 4axis, 136# fcs (Thrustmaster) ,ch (CH Flightstick). 137# none disables joystick emulation. 138# 2axis is the default and supports two joysticks. 139 140joysticktype=2axis 141 142[serial] 143# serial1-4 -- set type of device connected to com port. 144# Can be disabled, dummy, modem, directserial. 145# Additional parameters must be in the same line in the form of 146# parameter:value. Parameters for all types are irq, startbps, bytesize, 147# stopbits, parity (all optional). 148# for directserial: realport (required). 149# for modem: listenport (optional). 150 151serial1=disabled 152serial2=disabled 153serial3=disabled 154serial4=disabled 155 156[dos] 157# xms -- Enable XMS support. 158# ems -- Enable EMS support. 159# umb -- Enable UMB support (false,true,max). 160 161xms=true 162ems=true 163umb=true 164 165[ipx] 166# ipx -- Enable ipx over UDP/IP emulation. 167 168ipx=false 169 170[autoexec] 171# Lines in this section will be run at startup. 172 173mount c /Users/neowolf/Documents/DOSBox/C 174c: