lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores)
-
Sorry for the silly question, but I'm not familiar at all with retropie (or the rpi in general.) Don't the libretro buildbot ARM builds of dosbox-svn run as-is on retropi? I mean these:
-
@RealNC They do work (I know I tested the
armv7-neon-hf
build fordosbox-svn
). If the regulardosbox-libretro
repository is no longer updated, I guess we can switch todosbox-svn
instead ?I think the new
dosbox-core
is the one that's not working - due to the C++17 requirements. It builds, but I think I got a runtime error when loading the core. I can repeat the test to get the actual error. -
@mitu
In that case, I will look into adding ARM builds for dosbox-core. Right now it's only being built for Linux x86-64.If you build yourself, then you need to pass
STATIC_LIBCXX=1
to make so that libstdc++ and libgcc_s are statically linked. This is already being done for the x86 buildbot builds so that the core runs on old Linux distros as well. -
@RealNC I'll give it a try.
-
I was able to set up a build using Ubuntu 16.04 ARM 32-bit ("armhf"). I have no idea if it runs though, so it would be helpful if anyone could test:
https://github.com/realnc/dosbox-core/releases/download/latest_build/linux-armhf.zip
Munt, fluidsynth and bassmidi are all supported and built-in (except for bassmidi due to licensing) along with their dependencies (like vorbis, libsndfile, etc.) The only external library dependencies are:
libasound.so.2
libpthread.so.0
libgobject-2.0.so.0
libglib-2.0.so.0
libm.so.6
libc.so.6
ld-linux-armhf.so.3which I believe should be already pre-installed on virtually all Linux systems out there.
-
@RealNC said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
https://github.com/realnc/dosbox-core/releases/download/latest_build/linux-armhf.zip
Seems to be ok on a PI4 (Raspbian Buster) system, I don't get any errors when starting.
I get a crash though trying to load a simple
.conf
file, but since the.so
doesn't have debugging symbols, kind of difficult to say where it crashes. Could be because I don't have any soundfonts or some assets are missing.EDIT: Compiling directly on a Raspbian Buster works, but even with
STATIC_LIBCXX=1
, there's still a runtime error about missing a new C++17 filesystems function. I think that's ok, Buster has onlygcc
8.3.0, so it's missing the necessary requirements. Probably if compiled with a newer gcc/clang would work. -
@mitu said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
Seems to be ok on a PI4 (Raspbian Buster) system, I don't get any errors when starting.
I get a crash though trying to load a simple
.conf
file, but since the.so
doesn't have debugging symbols, kind of difficult to say where it crashes. Could be because I don't have any soundfonts or some assets are missing.It doesn't rely on any assets or soundfonts. I'll put up a debug build as well.
EDIT: Compiling directly on a Raspbian Buster works, but even with
STATIC_LIBCXX=1
, there's still a runtime error about missing a new C++17 filesystems function. I think that's ok, Buster has onlygcc
8.3.0, so it's missing the necessary requirements. Probably if compiled with a newer gcc/clang would work.Ah, with GCC 8 you need to add
-lstdc++fs
to LDFLAGS. The handling of that is wonky though. You probably have to editMakefile.libretro
and add in line 366, at the end of the line that starts withLDFLAGS += `$(PKGCONFIG)
-
I uploaded a debug build as well:
https://github.com/realnc/dosbox-core/releases/download/latest_build/linux-armhf-dbg.zip
-
@RealNC I think it might be targeting the wrong (ARM) dynrec.
-
@mitu said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
I think it might be targeting the wrong (ARM) dynrec.
It's the correct one for ARMv7. Does 32-bit stand-alone dosbox run fine when dynrec is enabled? (
core = dynamic
in the.conf
file.) I think the rpi4 CPU is supposed to be backwards compatible with 32-bit ARMv7. So if stand-alone 32-bit dosbox with the same dynrec has the same issue, then this could be a bug in the dosbox dynrec.I'll also put a 64-bit ARMv8 build up to see how that one behaves.
-
Btw, if you disable the dynrec by setting the core's "System: CPU core" option to "normal", does it work then?
-
@RealNC Yes, the RPI4 (at least on Raspbian) should fall into the 32 bit ARMv7 category. Sadly 64 bit (ARMv8) would not work out-of-the-box since Raspbian has no 64 bit userspace support.
I tried the recommended settings (core and .conf) and it's still crashing - while the normal
dosbox
(upstream SVN) ordosbox-staging
work fine.RetroPie uses these build instructions when packaging upstream
dosbox
.My testing
.conf
has just an autoexec section for starting Q1:[autoexec] mount c: /home/pi/roms/pc-data c: cd \quake1 quake -nocdaudio exit
I think I'll try again to build the core - modifying the Makefile - and see if I can get it running locally, it might be an issue with the automated build.
-
@mitu said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
I tried the recommended settings (core and .conf) and it's still crashing
Can you get a backtrace in this case? The old crash pointed to the dynrec, so with it disabled it should point somewhere else.
-
@RealNC Re-tested with
core = dynamic
and the crash is similar. Using the "System: CPU core" option to "normal" doesn't crash, but it's obviously slow. -
It's very difficult to debug this on my end, as I don't have any ARM devices. To check if this an issue with the toolchain, I built the regular dosbox-svn core with it:
http://83.212.109.87/~realnc/tmp/dosbox_svn_libretro.zip
Does it also crash?
-
@RealNC said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
Does it also crash?
No, it doesn't crash. I don't think the toolchain is at fault. Since the last update I managed to compile it natively (modifying the
LDFLAGS
) and I get a crash also.I don't know if the core you linked (
svn
) is synchronized to the latest Dosbox SVN tag (I thinkdosbox-core
is), but I'll install from source the latest Dosbox and see if maybe there's a recent regression. -
@mitu said in lr-dosbox-svn / lr-dosbox-core (new dosbox libretro cores):
I don't know if the core you linked (svn) is synchronized to the latest Dosbox SVN tag
No, it is kept in sync with SVN trunk. So that's not it.
I found something that might be the cause of it. I'll upload a new test build shortly.
-
If you want to test locally if this is indeed the issue, edit
Makefile.libretro
and change this line near the beginning of the file:CXXFLAGS += -std=c++17 -Dregister=
to:
CXXFLAGS += -std=c++17
Then do:
make <your other options here> targetclean`
and build again.
(
targetclean
only cleans core files, not deps, so that you don't have to rebuild deps again.) -
@RealNC I'll give it a shot, thank you.
-
Well, it's not crashing anymore - this may be the winning ticket. If you have an automated build, I can give it a test.
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.