Closed Torinde closed 9 months ago
The code bases are very different. DOSBox-X is not just a patch of the original DOSBox. Similarly DOSBox Pure is not just a patch of the original DOSBox.
Let's look at the amount of code: DOSBox
------------------------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------------------------
C++ 126 9471 10404 74 868
C/C++ Header 132 5115 5879 50 341
DOSBox Pure
------------------------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------------------------
C++ 112 9651 11023 83 358
C/C++ Header 143 7358 10349 63 082
C 3 107 98 439
DOSBox-X
------------------------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------------------------
C/C++ Header 991 42853 91636 562 086
C++ 298 33192 33626 336 935
C 639 60733 53291 238 131
So we have 125K lines of code in original DOSBox, 146K in Pure and 1137K in DOSBox-X. DOSBox Pure actually doesn't include a decent amount of code from the original (debugger, native CDROM and serial port access, some old Adlib emulators, screen/audio/video capturing, scalers and the UI and input handling) which amounts to about 25K lines of code. So DOSBox Pure took about 100K lines of code, applied minimal modifications and added about 50K new lines. On the other hand DOSBox-X contains all of the original, made huge amount of changes and then added about 1000K new lines. By now these are vastly different projects. Certain changes might be handpicked to be ported. For example some of the page fault handling code to improve Win9x support was ported from X to Pure. Another example is the FAT emulation which was ported from Pure to X. But as a whole syncing these two projects up is nowhere near possible. There also are features which both projects implemented completely different. I.e. SoundFont support in Pure is based on TinySoundFont whereas X uses FluidSynth, Voodoo support uses entirely different patches and while X can mount ZIP files as read-only it's very different from how Pure handles ZIP files.
I also think the overall philosophy is different between the two projects. Being lean is important to me. Less code makes things more manageable and maintainable. It results in smaller binaries which benefits everyone. Using less libraries means more and easier portability. The last two points is especially important to all embedded and console devices where DOSBox Pure runs on.
As for the On-Screen-Keyboard, that and all the other custom menus that were added to Pure (Start Menu and Gamepad Mapper) are very much built on top of the libretro API. It would require somewhat of a rewrite to be used with DOSBox-X's SDL1 and SDL2 APIs. I don't think it's that important for DOSBox-X. As far as I know it only runs on desktop operating systems where there most likely is a mouse and keyboard present.
https://github.com/schellingb/dosbox-pure/issues/301#issuecomment-1179534658
You're telling me there's a chance...?
Not sure what gives the impression. There is a chance of porting over very selective features like I detailed above but nothing huge and certainly nothing that doesn't actually improve emulation of games in DOSBox Pure.
@schellingb, what are your thoughts on (partial) syncing with DOSBox-X? (related: joncampbell123/dosbox-x/issues/893)
Especially the On-screen keyboard is something that I greatly miss in DOSBox-X. What would it take to port it there?