DOSBox-X maintains both SDL2 support by request and a heavily modified in-tree version of SDL1. The in-tree modifications add support for things not originally supported by SDL1 and fix many annoying bugs. It also features a hack for Windows builds where the window frame message pump is in a separate thread from DOSBox-X's main thread so that sizing & moving the window or using the menus is possible without halting emulation. Others requested SDL2 support, which I am willing to provide, while I'm content with modifying SDL1 in-tree where needed.
The idea is that the SDL1 code in-tree is modified as I need it (since SDL1 is considered deprecated), and the SDL2 support is based on what the library can provide since SDL2 is under active development.
DOSBox-X can be compiled to SDL1 or SDL2, chosen at compile-time. Code specific to each is separated by #ifdefs.
My modified SDL1 code supports extra features including foreign keyboards, display DPI determination, and support for menus in Windows and Mac OS X.
The SDL2 support is happy to support surface output, touchscreen support, and resizing. OpenGL support isn't implemented yet.
I originally stated that I was to implement SDL2 and phase out SDL1, but I'm not so sure about that now.
A lot of work has been done to make 32-bit and 64-bit work nearly identically where possible, including fixes to parts of the source that originally had problems with 64-bit (such as the S3 acceleration code). It used to be the case that you had to use 32-bit for the dynamic core, but the DOSBox SVN dynamic core (dynrec) was recently ported to DOSBox-X which now enables dynamic core on 64-bit x86_64 as well as ARM processors.
The various builds should be explained:
- The main Windows builds are compiled with VS2017 community edition. They run on Windows Vista or higher. VS2017 can target Windows XP but several key C runtime functions are broken (such as stat).
- MinGW builds can run on Windows XP or higher. They are compiled with the MinGW64 project to 32-bit and 64-bit versions. Based on Kernel32 dependencies they require Windows XP or higher but might run under Windows 2000 (not sure).
- There is a MinGW build that targets MS-DOS, HDPMI and the HX-DOS/HX-GUI environment. This version uses a reduced subset of the Windows API supported by HX-GUI and runs fullscreen at all times.
- Lowend builds are meant for lower end processors, especially those that lack SSE support. The MUNT code incorporated from the Daum branch happens to require SSE, which is why lowend builds omit it.
- SDLDRAW builds for WIndows use a custom drawn menu (drawn on the SDL surface) instead of the Windows menus, for code testing.
DOSBox-X project: more emulation better accuracy.
DOSLIB and DOSLIB2: Learn how to tinker and hack hardware and software from DOS.