schellingb / dosbox-pure

DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.
GNU General Public License v2.0
731 stars 61 forks source link

DOSBox-X #424

Closed Torinde closed 9 months ago

Torinde commented 9 months ago

@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?

schellingb commented 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.

Torinde commented 6 months ago

https://github.com/schellingb/dosbox-pure/issues/301#issuecomment-1179534658

You're telling me there's a chance...?

schellingb commented 6 months ago

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.

Torinde commented 6 months ago

Though I'm not sure if at some point a DOSBox-X libretro core wouldn't make more sense.

But my comment was a joke - it's a quote from a movie. :)