DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.

Related tags

Game dosbox-pure
Overview

DOSBox Pure

DOSBox Pure is a fork of DOSBox, an emulator for DOS games, built for RetroArch/Libretro aiming for simplicity and ease of use.

Logo

Download

You can find a binary download for Windows, Linux and Raspberry Pi (Arm7) under the Releases page.

Install

Locate the directory where your libretro frontend stores its cores.
In RetroArch, you can open the main menu and go to Configuration File -> Load Configuration -> Parent Directory -> cores to find it.
The release ZIP contains 2 files, dosbox_pure_libretro.dll (or .so for Linux) and dosbox_pure_libretro.info.
The .dll or .so file is to be extracted into the cores directory. The .info file goes into the info directory or into cores if it doesn't exist.

Features

Load games from ZIP

DOSBox Pure can load games directly from ZIP files without the need to extract them.

Store modifications in separate save files

Changes made to a loaded ZIP file will be stored as a separate ZIP file into the libretro saves directory.
If a game is loaded directly without using a ZIP file the saves directory is not used.

Mount disc images from inside ZIP files

CD images (ISO or CUE) and floppy disk images (IMG/IMA/VHD) can be mounted directly from inside ZIP files.
The system will automatically mount the first found disk image as the A: or D: drive.
Additional disks can be loaded or swapped by using the Disc Control menu in RetroArch.
The start menu also offers the option to mount or unmount an image.

Start menu with auto start

Start Menu

This is the first screen that appears when loading a game. It offers a gamepad controllable list of all executable files for the loaded game. By pressing right an item can be selected as the default which will skip the menu on the next launch.
By pressing right multiple times, a number of frames can be specified that will automatically be skipped on start. This can be used to skip over loading screens or start-up sequences.
If there is only a single executable, the menu will not show and directly run the file.
To force the menu to be shown, hold shift on the keyboard or L2 or R2 on the gamepad while selecting Restart in the core menu.

Automated controller mappings

When a game is loaded, DOSBox Pure will try to detect the game and apply a controller mapping.
To see the applied mapping, check the Port 1 Controls screen in the RetroArch menu. It will show Detected Automatic Key Mapping: . Additionally you can set the core option Input > Advanced > Automatic Game Pad Mappings to Enable with notification on game detection.

Mouse emulation

Under the Controls screen in the RetroArch menu there are 2 mouse emulation modes available by switching the Device Type setting of any port with left/right. There is Mouse with Left Analog Stick and Mouse with Right Analog Stick.
When choosing left stick, the face buttons (B/A) will be used as left/right mouse buttons.
For the right stick the shoulder buttons L/R will be used as left/right mouse buttons.
The X button is the middle mouse button and L2/R2 can be used to speed up or slow down mouse movement.
There is also the core option Input > Mouse Sensitivity to increase/decrease mouse movement speed.

Keyboard emulation

For games that don't have automated controller mappings or are not detected successfully, by default the option Input > Bind Unused Buttons will assign all unused buttons on the game pad with some default key.
If the Device Type under the Controls screen in the RetroArch menu of any port is set to Generic Keyboard Bindings all buttons will be assigned with a keyboard key. Additionally it can be set to Custom Keyboard Bindings which will allow fully customizable mappings.

Joystick emulation

There are multiple DOS era joysticks available as mappings under the Controls screen in the RetroArch menu.
Gravis GamePad (1 D-Pad, 4 Buttons), Basic joystick (2 Axes, 2 Buttons), ThrustMaster Flight Stick (3 axes, 4 buttons, 1 hat) and Control both DOS joysticks (4 axes, 4 buttons).
These can be assigned to any port and the button layout can be remapped as with any other device type.

On-screen keyboard

On-Screen Keyboard

By pressing L3 on the gamepad (usually by pushing in the left analog stick) the on-screen keyboard will open. The cursor can be controlled with the controller (or mouse or keyboard) and L2/R2 will speed up or slow down the move speed.
If the cursor is moved above the middle of the screen the keyboard will move to the top. The button can be remapped in the controls menu and there is also a core options to disable it entirely.

MIDI playback with SoundFonts

If DOSBox Pure finds one or more .SF2 sound font file in the system directory of the frontend, one of them can be selected via the Audio > MIDI SoundFont core option.
This sound font will then be used to play General Midi and Sound Canvas music.

Cheats support

DOSBox Pure exposes its memory for cheats in the libretro frontend.
For details how to use it and how to find new cheats while playing the game, check the documentation on the RetroArch website.
This can also be used to add controller rumble support to DOS games.

Save states

The DOSBox Pure core fully supports libretro save states.
Make sure to test it in each game before using it. Complex late era DOS games might have problems.
Be aware that states saved with different video or cpu settings are not loadable.
Save states might not be compatible across different versions of DOSBox Pure.

Rewind support

Using the core option Save States Support, rewinding can be enabled.
Keep in mind that rewind support comes at a high performance cost.

Loading M3U8 files

If the core gets loaded with a .m3u8 file, all files listed in it will be added to the disc swap menu. The first image will automatically get mounted as A: or D: drive depending if it is a CD or floppy disk image.

Tips

Playing with keyboard and mouse

To play not with a gamepad but with keyboard and mouse, be sure to use the 'Game Focus' mode available in RetroArch. By default you can toggle game focus by pressing the scroll lock key. While game focus is active, the hotkeys are disabled and keyboard will not cause retro pad button presses (which could cause multiple keys to be pressed at once).

ZIP files can be renamed to DOSZ

If your libretro frontend wants to load the content of .ZIP files instead of sending it to DOSBox Pure to load, the files can be renamed from .ZIP to .DOSZ.
This is especially useful for CD images in ZIP format which RetroArch refuses to append through its Disc Control menu. Using an M3U8 file also avoids this problem.

Force opening the start menu

If you have assigned an auto start item in the start menu but want to go back to it, hold shift on the keyboard or L2 or R2 on the gamepad while selecting Restart in the core menu.

Mount ZIP as A or D drive

If you have a ZIP file you want to load as a fake floppy disk or fake CD-ROM, there are multiple options.
The easiest is to rename the file from .ZIP to .D.ZIP (to use the D: drive).
You can also edit the RetroArch .LPL playlist file to add a #D after the file like game.zip#D.
A third option is available inside DOSBox Pure with a new remount command that can be called with REMOUNT C: D: to remount the C: drive to D:. This can for example be used in a startup batch file.

Change disk label with label command

DOSBox Pure by default uses the first word of the ZIP file as the label of the mounted disk.
Some games require a specific label on a floppy or a CD-ROM so DOSBox Pure offers a new command to change the label of a mounted disk. For example, LABEL C: HELLO changes the label of the C: drive.
This label is not saved anywhere and needs to be reapplied on every launch so it's best to add the command in a startup batch file. You can run the MOUNT command to check all mounted disks and their disk label.

Keyboard layout defaults to US

The keyboard layout defaults to the US Layout (QWERTY).
If you need a different layout, you can change the core option Input > Advanced > Keyboard Layout.

Save file handling

When modifications to the file system loaded from a ZIP file happens, modifications are written into a separate save file. You can find these save files inside the data directory of your libretro frontend usually in a sub-directory called saves.
Save files get re-written to disk a short while after a modification happens in the file system.
The bigger the save, the less often it will be written out.
Up to 1MB of total save data, it will be written out 2 seconds after the last file modification. Then gradually until at max 59MB and more, it will be written out 60 seconds after the last file modification.

Features not yet implemented

Load dosbox.conf

It would be nice to be able to load a dosbox.conf file if it exists in the loaded game directory (for example inside the ZIP file). Ideally this would then hide all the options that have been overwritten by that .conf file in the core options list.

Store ZIP seek index into save file

When a DOS games opens a large file and wants to read some data from near the end of the file, DOSBox Pure needs to decompress the entire file to do that. This can be most noticeable when mounting CD-ROM images from inside ZIP files.
Afterwards there is an index buffer which will be used to decompress random locations of the file and file access will be much faster.
This index buffer should be stored into the game save file to avoid having to slowly rebuild it every time the same game is launched.

Unsupported features

For now, serial port and IPX emulation from base DOSBox have been removed.

Building

DOSBox Pure has no dependency requirements besides a C++ compiler and the standard library.

Windows

Open dosbox_pure_libretro.sln in Visual Studio (all versions from 2012 and up are supported) and press build to build the dosbox_pure_libretro.dll core file.

Linux

To build under linux, make sure GCC 9 (package g++-9) and GNU Make (package make) are installed.
Change into the project directory then run make -j4 to build it.
The makefile explicitly is set to use g++-9 because there are codegen bugs in GCC 10.2 that affect any version of DOSBox on certain platforms.
You can edit the simple Makefile to set a different compiler or add hardware specific compiler flags.

License

DOSBox Pure, as well as original DOSBox, is available under the GNU General Public License, version 2 or later.

Issues
  • No MT32 support

    No MT32 support

    Another feature that would be nice to have from the main core. Thanks in advance. If I'm just overlooking this somehow, feel free to close, but I can't find it.

    opened by n1ghttrap 33
  • Launching on RetroArch Android crashes immediately

    Launching on RetroArch Android crashes immediately

    Every time I try to open DOSBox Pure on RetroArch, it crashes RetroArch immediately whether I open it with or without content (zip file). This is not happening with other cores.

    Core Version: 0.9.2 RetroArch version: AArch64 Android version: 12 Device: LGV600 Processor: Snapdragon 865 RAM: 8GB Content: Fallout 1997 (archive.org hosts a copy that matches mine) Content Location: SD Card

    RetroArch Info

    Screenshot_20220531-072728 Screenshot_20220531-072742 Screenshot_20220531-072748 #Screenshot_20220531-072754

    opened by domportera 22
  • Vsync support?

    Vsync support?

    I noticed a lot of games have screen tearing. I'm aware this is a DOS thing but IIRC there were some DosBox versions that did eliminate this issue. Could something similar be implemented in Pure?

    opened by Tasosgemah 22
  • Sound bugs in version 0.21

    Sound bugs in version 0.21

    I just updated from 0.20 to 0.21 and i'm now getting random blips and bloops in the midi music every now and then.

    Seems to clear up if i force 60fps in the core options but that's something i didn't need to do in 0.20. Plus, if i force 60fps, games run a bit jerkier.

    I have a 240hz gsync monitor.

    opened by Tasosgemah 21
  • SaveState not working

    SaveState not working

    When I Updated to Retroarch 1.9.1 the Save States stopped working all Together.

    Why would it do that and is it Fixable?

    Error Message:

    Error Message that comes up:

    [INFO] [GLCore]: VSync => OFF [INFO] [WGL]: wglSwapInterval(0) [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [ERROR] [State]: Failed to save state to "E:\Video Games\RetroArch\RetroArch 1.9.1 (64 Bit)\states\Jagged Alliance (1994).state". [INFO] [Core]: Paused.

    opened by TradeDraft 19
  • Dosbox Pure is unable to play games from zip files when they are several gb

    Dosbox Pure is unable to play games from zip files when they are several gb

    I am unable to play games like Wing Commander IV, Pandora Directive and Ripper. If the game is unzipped, it plays fine. As soon as I zip the game and change the extension to .dosz, Dosbox Pure says No Executable File Found. The correlation is that these games weight about 3 gigs each. I think Dosbox Pure is running into issues when the zips are too large.

    opened by triggerthehorizon 18
  • Frontend MIDI silence when selected prior to game booting.

    Frontend MIDI silence when selected prior to game booting.

    Win 10 64 Tested Games: Doom (GM), Leisure Suit Larry 6 (GM), Leisure Suit Larry 3 (MT-32)

    When using the Frontend MIDI option, no sound is heard when loading a game with Frontend MIDI selected prior to loading the game. To function as intended, a sf2 must be selected and then switched to Frontend MIDI once the game is loaded. Loading the core to the boot menu with a soundfont and switching to Frontend MIDI before booting the game does not work. I've tried this with both software MIDI synths (MUNT, Virtual Midi Synth as well as a borrowed Roland SC-88 through USB-MIDI). The same occurs in all instances.

    opened by sweatypickle 17
  • Add larger Hard Disk sizes for OS install

    Add larger Hard Disk sizes for OS install

    This is such an excellent feature but the largest Hard Disk size for OS install is only 1GB, so with just Windows 98 and a single large game installed (like Unreal Gold which is over 500MB) most of that space is already gone. For comparison, when the 3dfx Voodoo came out HDD's were around 10GB, and 20GB+ was common for Windows 98 PC's. So could some much larger sizes be added?

    For now my workaround is to get the disk image that DBP creates in the System folder and use UltraISO to increase the size to 2GB, which is the size limit for this software. 2GB isn't great, but Windows 98 will boot fine and recognise the increased space. If anyone knows of a better way to do this i'd love to hear it.

    opened by PoloniumRain 15
  • Save states don't save with Vulkan/GL

    Save states don't save with Vulkan/GL

    Current RA nightly, latest dosbox-pure core from the RA updater as of today. Windows 10 20H2, GTX 1080 (driver 461.09). Tested with Prince of Persia and Lotus: The Ultimate Challenge.

    Save states don't save at all when using Vulkan or GL as output driver in RA. No OSD messages, nothing is written to disk. Nothing I can see in the log files aside from RA itself throwing an error that automated save states (on exit/load for undo) didn't save.

    Creating a save state using the d3d11 driver does work, and said save state also loads correctly when using vulkan or gl. This happens both on my normal install, as well as a fresh and otherwise untouched RA install.

    opened by trostboot 15
  • BigBox pause screen exiting emulator issue

    BigBox pause screen exiting emulator issue

    I've setup DOSBox Pure under LaunchBox/BigBox (Windows). I'm having an issue using the pause screen to exit out of the emulator, it does not actually exit, but instead returns to the emulator and mutes it (volume control appears onscreen). Attempting a second time unmutes. I can still keep a keyboard around and exit out with the ESC key, but I do like trying to do everything from a controller. Note, other RetroArch cores exit out just fine this way, but there is something specific about DOSBox Pure. Not sure if this issue is with the BB front end itself, but since this is the only core doing this, filing here anyway.

    Steps to reproduce

    1. Hit Xbox button on controller to bring up BigBox Pause menu
    2. Choose Exit Emulator.
    opened by laxdragon 12
  • Keyboard unusable

    Keyboard unusable

    I'm unable to use my keyboard. I'm running Windows 10 and have a Belgium ( period ) keyboard. Retroarch 1.9.1 DOSBox-pure (0.12)

    When I'm in dosbox pure my keyboard is totally unusable. Most of the keys appear to do nothing and the ones that do something are not "producing" the key (character) I pressed on.

    I tried all different "input / control" settings nothing helps. I'm using "France" as the Keyboard Layout at the options for DOSBox-pure because Belgium ( BE ) is not available.

    This is a quick overview for the keys a to z 0 to 9 ( the ones not listed appear to do nothing )

    When game focus is off a = & z = é s = "space" d = "esc" (most likely not 100% sure) g = "home" (most likely not 100% sure) J = - k = arrow left m = arrow right n = +

    When game focus is on

    r = 0 i = 9 o = 1 p = 2 q = 3 s = . d = "esc" (most likely not 100% sure) g = 7 h = 8 j = - k = 4 l = 5 m = 6 n = + esc = $a

    When game focus is "on" or "off" "top" row of the keyboard ( not the num keypad )

    1 = n 2 = , 3 = ; 4 = : 5 = ! 7 = * 9 = "space" 0 = b

    And keys like "CTRL" "ALT" "ALT Gr" "shift" "page up" "page down" "home" "end"... and the arrow keys are also not working the way they should.

    opened by WarlockSVG 11
  • Bilinear Filtering just used for Dosbox Purei

    Bilinear Filtering just used for Dosbox Purei

    I know that you can change it in Video Options but Turn Off to use the other Cores with it off.

    So I reckon that making a Option to Change thru Dosbox Pure Core instead of for All Cores.

    opened by TradeDraft 0
  • PG-5 PcGun by A4 Tech Support?

    PG-5 PcGun by A4 Tech Support?

    There are two obscure Dos games that used lightguns back in the day, moreover they supported 2p action: AD cop Bonbon paradise In both games you have a Dossteup.exe where you can set your controller as lightgun but as espected as it's very rare, it won't work. If you set controller to mouse you can play with modern lightguns, but only one player allowed. In windows, nowadays lightguns like Aimtraks or Sinden or even Crt ones, are seen as absolute coord mice, and uses rawinput to allow two pointers at once. https://www.youtube.com/watch?v=PKdaGMO1QQo In this video he talks about some technical details.

    opened by phasermaniac83 0
  • Genenal MIDI not working on Tyrian 2000.

    Genenal MIDI not working on Tyrian 2000.

    I've been trying to get Retroarch to work with a fronted MIDI port, but the MIDI doesn't work in my Tyrian 2000 setup. 255 error occurs and it is changed to fmsound. Is there any way to fix this?

    opened by wanisea 0
  • Pad mapping joystick axes to triggers causes conflicts

    Pad mapping joystick axes to triggers causes conflicts

    I tried mapping the right trigger to joystick forward and left trigger to joystick backward but if you accidentally press both at the same time, they get stuck cancelling each other out and you have to completely release both before either one will work again which is obviously an issue when playing racing games. Remapping the triggers in RetroArch doesn't cause this issue.

    (Xbox One controller with Windows 10)

    opened by redmist77 0
  • Allow pad mapping for more than one controller

    Allow pad mapping for more than one controller

    Unless I'm missing something, it's currently not possible to map anything other than controller 1. Is mapping multiple controllers on the road map? I find the PADMAP.DBP that the pad mapper creates to be a potential game changer especially if it can allow multiple controllers.

    opened by redmist77 0
  • Wolfenstein 3D - stuttering

    Wolfenstein 3D - stuttering

    Hi,

    Can't get Wolf3D or Blake Stone to run properly. Menus work correctly, but once the game starts, it's unplayable.

    I downloaded the Steam version, which works and includes a dosbox config and I try to use it with my setup. The file is detected but the result is the same.

    Any idea ?

    Here's my pure config and the dosbox file : config.zip

    opened by dukeblooders 2
Releases(0.9.7)
Owner
Bernhard Schelling
GameDev during the day, GameDev during the night? https://twitter.com/B_Schelling
Bernhard Schelling
bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.

bsnes 1.2k Jul 29, 2022
Simple Directmedia Layer, 1.2 branch ... ***DEPRECATED***, please use https://github.com/libsdl-org/SDL for new projects!

DEPRECATED The 1.2 branch of SDL is deprecated. While we occasionally collect fixes in revision control, there has not been a formal release since 201

Simple Directmedia Layer 38 Jul 25, 2022
Pure C math library for 2D and 3D programming

MATHC MATHC is a simple math library for 2D and 3D programming. Features Vectors (2D, 3D and 4D) (integer type and floating-point type) Quaternions Ma

Felipe da Silva 600 Jul 27, 2022
Pure C Arcade game. Cross between pong and breakout, made it by accident

LameBall I accidentally made this game while testing some code. It's kind of a cross between Pong and Breakout, mixed with Squash/Racquetball. >> DOWN

Phil Bagshaw 2 Sep 17, 2021
Pure C Game Engine

Corange game engine Version 0.8.0 Written in Pure C, SDL and OpenGL. Running Corange is a library, but to take a quick look at some of the things it d

Daniel Holden 1.5k Jul 31, 2022
Quality of Life Psych Engine Fork.

ProjectFNF Quality of Life Psych Engine Fork "I Live My Life a Quarter Mile at a Time" - EastDeveloper WARNING: This engine is still very early in dev

null 5 Oct 26, 2021
Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

null 4 Dec 10, 2021
A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)

PolyMC is a custom launcher for Minecraft that focuses on predictability, long term stability and simplicity. This is a fork of the MultiMC Launcher a

null 1.7k Jul 31, 2022
Classic video game revived with a new story, now available for your MySQL database.

mysql-snake Classic video game revived with a new story, now available for your MySQL database. A supermarket is giving out free buckets to visitors.

Ville-Markus Yli-Suutala 14 Feb 16, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 7 Apr 20, 2022
FPS Game built from scratch using C++ and Legacy OpenGL.

A small game made by a couple of students as a university project. Built from scratch using C++ and Legacy OpenGL, hence the name.

Yaman Qassas 57 Jun 27, 2022
A simple localization framework that can re-localize in built maps based on FAST-LIO.

Realtime 3D global localization in a pre-built point cloud map. By fusing low-frequency global localization (about 0.5~0.2Hz), and high-frequency odometry from FAST-LIO, the entire system is computationally efficient.

KINO 197 Jul 29, 2022
Engine-3D is a 3D-Graphics Renderer built from scratch in C++

Engine3D Engine-3D is a 3D-Graphics Renderer built from scratch in C++, as an Undergraduate Computer Engineering Project for 5th Semester, assigned by

Chirag Lamsal 4 Nov 15, 2021
Own mod. Should be usable with VS v4 API (built with v3).

Own mod. Should be usable with VS v4 API (built with v3).

null 72 Jul 28, 2022
gloom game, built with conan

gloom game, built with conan

null 0 Feb 7, 2022
Care race game built in c++ with sfml. this project is done in 3rd semester of csit for demonstration of computer graphics.

Car Race Car race is simple game which has been built by using SFML in c++ implementing concepts of Computer Graphics for project Work of 3rd semester

subash kc 4 Dec 18, 2021
A minecraft clone built in c++ opengl for the purpose of prefecting graphics programming skills.

LearnOpenGL - CLion This is a project template for OpenGL development with JetBrains CLion IDE. It was created mainly for LearnOpenGL tutorials. Inclu

Jeremy Dellock 1 Dec 28, 2021
GB Studio is a quick and easy to use retro adventure game creator for Game Boy available for Mac, Linux and Windows

GB Studio is a quick and easy to use retro adventure game creator for Game Boy available for Mac, Linux and Windows

Chris Maltby 6.3k Aug 6, 2022
A simple and easy-to-use library to enjoy videogames programming

raylib is a simple and easy-to-use library to enjoy videogames programming. raylib is highly inspired by Borland BGI graphics lib and by XNA framework

Ray 10.2k Jul 31, 2022