[DOSBox] official thread
-
@nemo93 Wow I've read through your contributions to the pi4 build, the wiki and the release notes. This really sounds like a big step! Thanks for your dedication!
I've been an avid DOS gamer in the 90s, so my Retropie was always equipped with a great library of DOS games and custom made startup scrips for MIDI output selection etc...I was a little bummed with the performance of the pi4 in this regard until @quicksilver's workaround (btw. thanks for that, too)! Now it seems SDL1 and dispmanx should work again as they should (see How to keep 4/3 aspect ratio in Daphne games ?)
I haven't tried it yet due to time restrictions, but what would you all think: should I update to Staging or stay on SVN for the time being?
I think Staging sounds too good to be true, but I fear I have to rework quite a bit (although my startup script should work with Staging, as it just generates a conf on the fly which is passed over to dosbox). I fear that I have to edit all these conf files for the cycles count by hand...Also, can Staging be installed though the retropie-setup script or do I have to do it by hand?
Thanks and happy gaming!
-
hi @ecto ! I'd say for the time being it's safe to stick with SVN. The many improvements on "staging" have not all been merged into the master branch and some are still being tested (like the Pi speed/cycles improvements). Also
fluidsynth
has just been implemented and for now it's not really easy to use with Retropie. So if you got some General Midi games they might not work out-of-the-box.But it's getting closer...I'm using staging for more than 6 months now and it's my default choice since then for anything DOS. My testbed is made of roughly 250 games (from early CGA stuff up to the more complex 3D games) and I'm not the only one testing. Meaning we'll have quite some tailored conf files to share for various devices and for many games. I already did share some in the wiki but I do hope to share even more in the future.
Like with many things we need to be a bit more patient as this version of DOSbox is likely to become a "must have" at some point (this is my expection at least!). For that reason there's still no script bundled with the retropie-setup but I have one ready that I could share if you want.
Once staging will be ready I'll raise a PR for it to be included into Retropie if that makes sense (I'd like to not have too many DOSbox forks or people might get confused).
-
@nemo93 Thanks for this very informative reply! I'll stick with svn with the patched sdl1 library for the time being!
Btw. I'm using a mix of munt and fluidsynth for midi under dosbox, as not everything plays nice with fluidsynth. ;)
-
Another quality update from the DOSBox Staging folks who come with a 0.76.0 release. Feel free to check the release note) for list of changes. Few highlights below:
- More Gravis UltraSound emulation improvements
- new built-in GLSL shaders
- Built-in MIDI support via FluidSynth (2.x)
- Audio pop and click prevention
- ...
I'd say the compatibility, performance and quality of life improvements have me stick to that fork. For those interested to give a try there's a script to have it integrated with Retropie on the Wiki (no support provided at this stage). MT-32 integration is lacking but it's being looked after as well as many other interesting topics.
-
@nemo93 This sounds really exciting! I have a few questions though, before I start the tranition:
- as MT32 is not integrated, is it posible to use Munt externally (the way through an Alsa port)?
- how are the cpu cycle settings now working out? Does every game need a separate setting?
- This is minor: does Staging behave the same way as Dosbox when started through the command line with extra overriding config files? I'm using a custom starting script, but changing that should be no problem...
Cheers!
-
@ecto hello! Let me try to address your points.
-
as MT32 is not integrated, is it posible to use Munt externally (the way through an Alsa port)?
=> the logic is simply not "wired" in DOSBox Staging and to any versions prior 0.76. There's a very early branch available for testing (check here and scroll down to the bottom). The good news is that MT-32 will be provided the same way ScummVM does (integrated). This feature is planned for 0.77. -
how are the cpu cycle settings now working out? Does every game need a separate setting?
=> I'd say that generally speaking all DOS games do require precise fine-tuning. I found out setting a default cycles count of 25000 or 30000 does work for a good number of games on pi4 (same on pi3). More are coming on that front hopefully. Perhaps the new Vulkan driver and next kernel etc would help. If you have any issue with a specific game feel free to ask here or on Staging Discord. -
this is minor: does Staging behave the same way as Dosbox when started through the command line with extra overriding config files? I'm using a custom starting script, but changing that should be no problem...
=> It should given the layering approach is still there (wiki). If you do have an example feel free to share but I guess best way is to give it a go and report back :)
Hope this helps.
-
-
@nemo93 Thanks for your reply! That was really helpful.
I guess that a lot of games (especially the protected mode games) can be run with max cycles, right? Is 30000 the maximum on a non-overclocked RPi4? I've seen that there are listings of recommended cycles for a lot of games on the Staging wiki.
And - best of all - you have written a dos32a extender compatibility sheet, right? That was really helpful. I think all my games now run with dos32a now. Thanks for that btw!It's really tempting to start integrating Staging into my setup, and I guess there is probably not much too much to do.... Hmmm. Do you have an idea how long the 0.77 release will take (give or take)?
-
@ecto no problem. For now on a stock pi4 you won't be able to go above 35000 cycles based on my testing. Setting a higher cycles count will get your games to stutter. This is weird as this count is roughly the same I was able to get to with a pi3B+. Hence why a specific branch has been created to somehow unleash the power of the pi4. With it you could get up to 100.000 cycles with some (protected mode/3D) games like Fade to Black which now runs fullspeed even on higher resolution. That branch can be compiled as it's part of the "Retropie script" as indicated from the wiki (just uncomment a line).
About DOS32/A extender, yes I did spend quite some time on that list but I'm happy it's useful to other people. I'm not the only one to have participated of course. So if you find more games that deserve to be on that list just let me know on Discord or update the list by yourself.
"If it works don't fix it" :) Therefore if you're happy with your current setup just leave it as it is especially if you need MT-32. Otherwise if you're struggling to get a game properly working with DOSBox SVN then give it a try. Staging is being updated almost daily and the amount of work done by the 2 main devs is simply breathtaking. Yet I can't commit to any release date. You could have a look at the project page to see progress by yourself.
I'll keep updating that thread whenever there's important change about DOSbox (not only Staging).
-
@nemo93 Since the thread is about DOSBox in general, you probably want to add information for DOSBox-X updates too. DOSBox-X (https://dosbox-x.com) aims to be a complete DOS emulation package that is both fully-featured and easy to use, so unlike DOSBox Staging and most other DOSBox forks it officially goes beyond DOS gaming, covering things like DOS applications, DOS games, DOS commands, DOS-based Windows including Windows 3.x/9x, and more. DOSBox-X is very feature-rich compared with other DOSBox forks and it is under very active developments as well for further features and improvements to usability etc. It has a menu system which makes it easier to use too. You can find examples of DOSBox-X's unique features from the DOSBox‐X’s Feature Highlights page (these are just examples; there are a lot more).
DOSBox-X version 0.83.8 has been recently released with quite a few new features and other improvements over the previous version, such as support for TrueType font (TTF) output and on-screen text styles for DOS applications, support for ARM-based M1 Mac and macOS 11 Big Sur, mounting MAME CHD CD images, switching OpenGL (GLSL) shaders at run-time, selectable host keys from the menu (Ctrl+Alt, Ctrl+Shift, etc), improved automatic fix for the "Packed file corrupt" error, enhanced MODE command to change screen dimensions, along with a lot of usability improvements such as enhanced mapper editor interface, more saving options for the built-in configuration tool, displaying help information for DOS commands from the "Help" menu, and loading DOSBox-X mapper files dynamically from the "Main" menu. The release notes for DOSBox-X 0.83.8 is available from: https://dosbox-x.com/release-0.83.8.html
The latest packages for Windows, Linux, macOS and DOS platforms can be downloaded from the DOSBox-X homepage (https://dosbox-x.com/).
The DOSBox-X Wiki system including its user guide is available from: https://dosbox-x.com/wiki
-
@wengier Oh wow, this is the best version of DOSBox ever! It's like they read my mind exactly how I'd ever want a DOS emulator to function! Thanks for posting this.
-
@wengier thanks a lot for providing a detailed view of this very impressive fork (not sure it's still a fork at that point where there have been so much added). To be honest I never gave a try to your fork as the number of features and options are simply daunting!! I'd say my objective remains to be able to run a few (famous) DOS games on a pi3B+ (now a Pi4). If you have a specific version or even some guidance to run DOSBox-X on such a low-spec device please feel free to share it. For sure this fork is by far the most complete and it's really amazing to see the so many options supported... Please keep this thread updated (if you will) with any new changes. I'll update the first post. Thanks again!
-
@wengier Hmm... the PC version is a dream come true. But my Pi doesn't seem to want to cooperate with the second step of installing flatpak. It's too bad this isn't a Libretro core.
-
@nemo93 and @themazingness Glad to hear the feedbacks from both of you. Indeed, DOSBox-X is so unique that it may not be appropriate to be called a "fork" any more. As a complete DOS emulator it is under very active developments of course.
So far, I have tested DOSBox-X in Windows, Linux and macOS on the PC platform. According to Jon Campbell, Raspberry Pi 3 is a supported platform for DOSBox-X, but since I don't have a Pi myself at this time I have not checked it personally yet. I do have plan to get a Pi (hopefully 4) shortly myself and post any updates here. Thanks again for your support!
-
@wengier Ah, that's probably the problem then. I have a Raspberry Pi 4, so it may not be compatible updated hardware.
Edit: Did some diving, and it looks like Flatpak is super new (first stable release last month), and DOSBox-X was previously using RPM for installation. I suspect if I wait a while or try a different day it'll be working.
-
@nemo93 Ok, I did the dive, and Staging is now running on my Pi4. I can give some thoughts:
First of all: it's really nice. Especially the pixelperfect display. Bye-bye washed out pixels! For that alone it was worth it! I've managed to get fluidsynth to run (easyly) and for selected games Munt's MT32 emulation runs through ALSA (just like with svn).
But it's more work to set up. I'm slowly getting somewhere, but I'm not done yet. The cycle settings is a hit and miss. I tried setting them from the dos command prompt (config -set cycles xxx) but the doesn't seem ro have any influence?! On top of that, choppy video or sound is no indication for too few cycles. It could also be too many, which makes it complicated. For many games I found cycle settings for Dosbox games online, but not all seem to be the right number for Staging. Some examples: Wing Commander 3, Magic Carpet 2 and Pro Pinball Timeshock. There is still some crackling and choppy gameplay left. Is it too early to collect the optimal cycle settings in a wiki maybe?
Then there were some hard lock-ups of my Pi4: one while starting up Staging, and one right before a system reboot. I can't say for sure it was Staging's fault, but as I was fiddeling with it I guess it was. It might have something to do with sound emulation, as sometimes I loose all sounds and so far I could only restore it by rebooting... ^^;
Btw. Magic Carpet also works with dos32a. :D
Cheers and happy gaming!
edited for some horrible spelling
-
@ecto thanks for taking time to share. To set proper cycles amount is quite annoying for sure yet with such low-spec devices it's the only way to get the best experience. After lot of testing I ended up setting a default value of 25000 cycles in my default
.conf
file (dosbox-staging-git.conf
). This will allow games to run and without any crashes. That setting is the foundation I use to build up specific settings should a game require some. Feel free to try the default + specific settings from that wiki page if you haven't already.I've never used the command utilities you've mentioned. I do everything by modifying one default
.conf
(which I never change) and one specific.conf
per game (which I fiddle with in case of issue to add more memory, joystick, GUS, etc). Choppiness tends to occur mostly when you have too many cycles. To the point it could crash your Pi.That's why you must never go with the
max
orauto
values forcycles
parameter. This explains the fixed value of 25.000 as said above. If you respect that statement then DOSBox will never crash again. If it does then something else is happening on your Pi. I haven't faced a single crash with Staging for the past 7 months or so. Of course you have to properly configure the games to match the correct IRQ/DMA asked during setup/install.exe and for some games you have to set the rightmachine
setting :) It's not specific to Staging though.I was tempted to add a page with optimal settings per device but first that's a lot of work and second Pi's environment (OS, drivers, etc) as well as Staging are getting improved at a good pace making settings obsolete. Yet I decided to put settings for some games on that wiki page. I may add more.
I'm using
cycles = 30000
for Wing Commander 3 yet I haven't tested that game extensively. Regarding Magic Carpet 2 it was one of the first game to be optimized especially for Pentium processor (devs even included some Easter Eggs) and as such requires a solid configuration to run at full speed. You'll need to give a try to thekc/fps-pacing-1
branch to allow your Pi to go above the 35000 cycles mark (the limit on mine above which choppiness occurs). You could give a try to the Retropie script and just uncomment a line to get that version. I have currently set 90000 cycles for that game and it runs fullspeed.My version of Magic Carpet 1 is running off the CD hence I can't change the extender. I'll be happy to add anything to the wiki if you provide me with the version (CD, GoG, etc) you're using and the
.exe
to patch. -
Thanks for your reply @nemo93 !
I will try and comment on the things you suggested:I've never used the command utilities you've mentioned. I do everything by modifying one default
.conf
(which I never change) and one specific.conf
per game (which I fiddle with in case of issue to add more memory, joystick, GUS, etc). Choppiness tends to occur mostly when you have too many cycles. To the point it could crash your Pi.I tried to use the command line tool to find a nice cycle setting without haveing to reboot the games all the time (exit -> edit config -> restart game -> test). But as I said, it doesn't seem to have the desired effect. (?)
That's why you must never go with the
max
orauto
values forcycles
parameter. This explains the fixed value of 25.000 as said above.That's a very good point! I have many
conf
files left over from my DosBox-SVN. There I have often usedcycles = max or auto
or somesuch. That would explain the occasional crashes when trying the games. I will check myconf
files for leftovers.[... ]and for some games you have to set the right
machine
setting :) It's not specific to Staging though.Yeah about that... So far, I have only used
svga_s3
. Are there games, that require anothermachine
setting? Sorry for my ignorance... ^^;I'm using
cycles = 30000
for Wing Commander 3 yet I haven't tested that game extensively. Regarding Magic Carpet 2 it was one of the first game to be optimized especially for Pentium processor (devs even included some Easter Eggs) and as such requires a solid configuration to run at full speed. You'll need to give a try to thekc/fps-pacing-1
branch to allow your Pi to go above the 35000 cycles mark (the limit on mine above which choppiness occurs). You could give a try to the Retropie script and just uncomment a line to get that version. I have currently set 90000 cycles for that game and it runs fullspeed.I have the
kc/fps-pacing-1
branch installed from the start as I thought that this might be the best for the Pi4. Are there downsides to that? Do you know if the cycle settings are interchangeable between thekc/fps-pacing-1
and themaster
branch? (Of course the highercycles
settings above 35000 are not interchangeable...)My version of Magic Carpet 1 is running off the CD hence I can't change the extender. I'll be happy to add anything to the wiki if you provide me with the version (CD, GoG, etc) you're using and the
.exe
to patch.I'm using the GOG version of MC2. It comes with a CD image, but I mounted it and copied over all files into the game directory. This way, no CD is needed (at least so far as I'm aware). By that I can easily exchange the dow4gw.exe that is provided with dos32a.exe. I probably did the same for MC1, as I don't need / mount the CD.
-
@ecto you're welcome. I can't comment further on the command-line utilities at this stage. Yet I made extensive use of the CTRL-F11 / CTRL-F12 combo keys to do exactly that. Not very precise as on Pi you won't see on screen the current cycles count but it works.
About the
machine
setting, in fact you almost never require to go withsvga_s3
. The recommended setting ismachine = vesa_nolfb
. With it you won't have any flickering issue with Build Engine games (Duke3D, Blood, Shadow Warrior, etc) as well as on other games. Actually only a handful of games do require thesvga_s3
setting (mostly ones with FMV like 11th Hour or Ripper for instance but not required for Wing Commander's serie).
Note: I discovered that after patching Blood up to version 1.11 (latest patch available) then you must rely onmachine = svga_paradise
instead ofvesa_nolfb
to remove flickering. It's the only game to my knowledge which requires that value. It's only for patch/version 1.10 and 1.11.The
kc/fps-pacing-1
branch is the recommended one to use on pi4. Yet it's not polished and not officially supported. The only downside I'm aware is regarding sound/audio. Given the throttling implemented (the more cpu available the higher the cycles count) it might lead to a doppler effect or distortion in the sound when throttling occurs. Apart from that it's really fine and the added cycles allow for more games to run fullspeed on pi4.Thanks about Magic Carpet. The first one comes with no CDDA/redbook audio and I recall you might face issues at some point (opening/closing map and/or casting spells perhaps) if game is not executed from CD. Magic Carpet 2 does have CDDA. You might not hear the score if you copy the data to your c: drive. Keep me honest. I'll add these anyway to the wiki as Bullfrog games have no issue with DOS32A.
Keep on testing and feel free to report back!
-
@nemo93 Thanks for your input. It's greatly appreciated!
I will set
vesa_nolfb
in the defaultdosbox.conf
. Sorry to keep on bothering you but I have a couple of questions remaining ;)- What is the best setting for
output
is recommended? I have it ontexturepp
. - Should I leave the
texture_renderer
onauto
?
Do you have any experience with the following games that I can't get to run without sound crackeling:
- Pro Pinball Timeshock!: I tested
cycles = fixed 30000 .. 150000
but it's mostly laggy gameplay and always crackeling sound. - Fallout: I found it with
cycles = fixed 60000
to be perfectly playable but the sound keeps crackling at some points.
I'm so happy to have Dosbox working so great, as I grew up with various MS-DOS PCs (from 286 to 468 to several Pentiums) and played a good share of games on them and to relive that now is simply amazing.
PS I have to look into the CDDA of Magic Carpet 2 O_o I completely missed that!
edit
I got a bit further with Timeshock! I'm using a slightly lower detail setting in-game and 120000 cycles and I disabled CDDA. With that only minor audio stuttering remain. I can even almost use 800x600 resolution.
Does CDDA need so much processing power? The tracks are in .ogg format so a bit of decoding is certainly needed. I'm almost inclined to transcode to .wav, as the soundtrack is definitely worth it... - What is the best setting for
-
@ecto no problem :) I just saw this morning that MT32 is almost there on Staging. I guess it won't be long before it will be fully integrated. Now to your questions.
-
What is the best setting for output is recommended? I have it on texturepp.
=> I'm relying onoutput = texturenb
and that's good enough for me. The pixel perfect might be more suitable for desktop environments. -
Should I leave the texture_renderer on auto?
=> when it comes to DOS stuff I don't like to leave settings onauto
:D I'm usingtexture_renderer = opengles2
which is the backend currently supported on Pi's. At some point we might move toopengl
instead!
I have no experience whatsoever with Pro Pinball Timeshock! (you mean Pro-Pinball 2 : TimeShock! right?) I'm afraid as it's not part of my testbed. I'll give it a try when I have a chance though. As a wild guess your issue might be due to a too high resolution to handle for the Pi. Perhaps you could try enforcing a VGA resolution of 320x200 by setting
machine = vgaonly
in the.conf
. If the game supports such mode of course.Fallout sound is crackling and runs slow even going with
cycles = 100000
. So it migth be due to the resolution as well. I need to give a try tomachine = vgaonly
to see what's happening.
EDIT: Fallout doesn't supportmachine = vgaonly
which leaves us only with the only option to have a faster CPU.About the audio, please don't go with compressed formats like ogg, opus or mp3 as they will tax the CPU for decompression. It's best to stick with pure CD Audio on low-spec devices like the Pi. You just need to pass along a BIN/CUE pair to DOSBox and that will do. Don't bother to transcode anything!
-
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.