No sega dreamcast core on retroarch 1.7.3 (debian buster)

Hi,

I’ve installed via apt retroarch on my debian buster. The version is 1.7.3. I can’t find sega dreamcast core in the list of the cores. It’s the same thing after having updated the cores with the “core updater”. So I compiled the last version (1.7.9), and I’ve the same problem: no dreamcast in the core list.

Is it because I’m on linux ?

Thanks for tour answers.

Yannick

Works fine for me on Linux with RA installed through Flatpak.

Did you update the core info files first in the updater? You usually should update everything at least once (info files, assets, databases, everything.)

Hi, and thanks for your answer.

So I have updated everything:

  • GLSL Shaders
  • Overlays
  • Databases
  • Cheats
  • Joypad Profiles
  • Core info files
  • In Thumbnails Udpater, I’ve updated Sega - Dreamcast.zip
  • Core Updater

And there is still no core for the dreamcast .

I’m on a 64bits system , with OpenGL 4.2.

Dunno why it wouldn’t show up in the updater, but you can always just download it from here: http://buildbot.libretro.com/nightly/linux/x86_64/latest/flycast_libretro.so.zip

Maybe it’s a settings issue. Quit RA and then delete the RA settings:

cd ~/.config
rm -r retroarch

Start RA again and do another core info files update. Restart RA to be sure. Does the “flycast” core show up then?

I’ve the flycast_libretro.so.zip in the core list. It’s exactly written “flycast_libretro.so.zip” and I didn’t know it was the dreamcast core. But when I load it, it’s still written “no core” just next to the version number 1.7.3. And my cdi’s or gdi’s files doesn’t appear when I want to load a content .

Thanks for your help.

If it’s failing to even load the core, we’ll need a verbose log of you trying to load it to see what’s going on with it.

I would like to give you a verbose log, but gdb doesn’t give anything:

$ gdb retroarch
GNU gdb (Debian 8.2.1-2+b1) 8.2.1
Copyright © 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type “show copying” and “show warranty” for details.
This GDB was configured as “x86_64-linux-gnu”.
Type “show configuration” for configuration details. For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.\

For help, type “help”.
Type “apropos word” to search for commands related to “word”…
Reading symbols from retroarch…(no debugging symbols found)…done.
(gdb) run
Starting program: /usr/bin/retroarch
[Thread debugging using libthread_db enabled]
Using host libthread_db library “/lib/x86_64-linux-gnu/libthread_db.so.1”.
[New Thread 0x7fffea5e7700 (LWP 5180)]
[New Thread 0x7fffe8cae700 (LWP 5181)]
[Detaching after fork from child process 5182]
[New Thread 0x7fffdef3a700 (LWP 5204)]
org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
Here I’m trying to load flycast_libretro.so.zip, but nothing in gdb…
[Thread 0x7fffdef3a700 (LWP 5204) exited]
[Thread 0x7fffe8cae700 (LWP 5181) exited]
[Thread 0x7fffea5e7700 (LWP 5180) exited]
[Inferior 1 (process 5172) exited normally]
(gdb) bt full
No stack.
(gdb)

I’ve a verbose log with strace :
strace -o retroarch.log retroarch

But it’s very big. So I did a grep on it, and I give you the result:

grep -A 10 -B 10 flycast retroarch.log
stat("/usr/share/libretro/info/mednafen_snes_libretro.info", {st_mode=S_IFREG|0644, st_size=434, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_snes_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=434, …}) = 0
lseek(12, 0, SEEK_SET) = 0
read(12, “display_name = “SNES / Super Fam”…, 434) = 434
lseek(12, 434, SEEK_SET) = 434
read(12, “”, 16384) = 0
close(12) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/freeintv_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/flycast_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/play_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0
lseek(12, 0, SEEK_SET) = 0
read(12, “display_name = “SNES / Super Fam”…, 2729) = 2729
lseek(12, 2729, SEEK_SET) = 2729
close(12) = 0
stat(”/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12

ioctl(4, DRM_IOCTL_I915_GEM_BUSY, 0x7ffdbc7b6ba0) = 0
ioctl(4, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffdbc7b6c10) = 0
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\224\1\22\0\2\0\300\3\6\0\300\3\220\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"…, iov_len=72}], 1) = 72
nanosleep({tv_sec=0, tv_nsec=1000000}, NULL) = 0
stat("/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=98304, …}) = 0
mkdir("/usr/lib/x86_64-linux-gnu/libretro/", 0750) = -1 EEXIST (Le fichier existe)
stat("/usr/lib/x86_64-linux-gnu/libretro/", {st_mode=S_IFDIR|0755, st_size=4096, …}) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission non accordée)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\3\0\2\0\2\0\300\3\16\0\2\0\2\0\300\3", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\331$\3\0\0\0\17\1\0\0\1\0\0\1\377\377\377\377\0\0\0\0\0\1\2\0\1\0\300\3"…, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 76 r\ecvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="+\0\1\0", iov_len=4}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 4

I hope it will help you (and me).

But, when I read this: openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/ flycast_libretro.so.zip ”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission non accordée)
“Permission non accordée” means “no premission” and when I see this:

ls -al /usr/lib/x86_64-linux-gnu/libretro/
total 23416
drwxr-xr-x 2 root root 4096 oct. 3 21:17 .
drwxr-xr-x 112 root root 98304 oct. 8 18:21 …
-rw-r–r-- 1 root root 1544568 févr. 4 2019 bsnes_mercury_accuracy_libretro.so
(…)

I think I’m going to change this:

chmod a+w /usr/lib/x86_64-linux-gnu/libretro/

Still the same problem…

The log:
strace -o retroarch2.log retroarch
grep -A 4 -B 4 flycast retroarch2.log
read(11, “display_name = “Virtual Boy (Med”…, 338) = 338
lseek(11, 338, SEEK_SET) = 338
read(11, “”, 16384) = 0
close(11) = 0
stat(”/usr/share/libretro/info/flycast_libretro.info", 0x7fffeff5aa20) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_wswan_libretro.info”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0

lseek(12, 434, SEEK_SET) = 434
read(12, “”, 16384) = 0
close(12) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/freeintv_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/flycast_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/play_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0

writev(3, [{iov_base="\224\1\22\0\2\0\240\4\6\0\240\4\333\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"…, iov_len=72}], 1) = 72
stat("/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=98304, …}) = 0
mkdir("/usr/lib/x86_64-linux-gnu/libretro/", 0750) = -1 EEXIST (Le fichier existe)
stat("/usr/lib/x86_64-linux-gnu/libretro/", {st_mode=S_IFDIR|0777, st_size=4096, …}) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=0, …}) = 0
lseek(11, 0, SEEK_SET) = 0
lseek(11, 0, SEEK_SET) = 0
write(11, “PK\3\4\24\0\0\0\10\0,EHO\374H\271\215\271^\26\0\230mF\1\23\0\34\0fl”…, 1458176) = 1458176
write(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053
close(11) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=1466229, …}) = 0
lseek(11, 1458176, SEEK_SET) = 1458176
read(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053

read(11, “display_name = “Virtual Boy (Med”…, 338) = 338
lseek(11, 338, SEEK_SET) = 338
read(11, “”, 16384) = 0
close(11) = 0
stat(”/usr/share/libretro/info/flycast_libretro.info", 0x7fffeff5b340) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_wswan_libretro.info”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0

read(11, “display_name = “SNES / Super Fam”…, 2729) = 2729
lseek(11, 2729, SEEK_SET) = 2729
read(11, “”, 16384) = 0
close(11) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=1466229, …}) = 0
lseek(11, 1458176, SEEK_SET) = 1458176
read(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053
lseek(11, 0, SEEK_SET) = 0
close(11) = 0
unlink(”/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip") = 0
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\3\0\2\0\2\0\240\4\16\0\2\0\2\0\240\4", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16

permissions problem seems to be ok but problem not solved…

Can you get a RetroArch log by running:

retroarch --menu --verbose --log-file ~/log.txt

Try to load the core and then exit RetroArch and the log file should hopefully tell us something useful.

ok, thanks.

cat log.txt
[INFO] RetroArch 1.7.3 (Git b2ceb50)
[INFO] === Build =======================================
[INFO] Version: 1.7.3
[INFO] Git: b2ceb50
[INFO] =================================================
[INFO] Environ SET_PIXEL_FORMAT: RGB565.
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 29970.03 Hz.
[INFO] [Video]: Video @ 960x720
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GLX]: GLX_OML_sync_control and GLX_MESA_swap_control supported, using better swap control method…
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 1600x900.
[INFO] [GLX]: Window manager is Xfwm4.
[INFO] [GLX]: X = 0, Y = 0, W = 960, H = 720.
[INFO] [GLX]: Found swap function: glXSwapIntervalEXT.
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [GL]: Vendor: Intel Open Source Technology Center, Renderer: Mesa DRI Intel® Ivybridge Mobile .
[INFO] [GL]: Version: 3.0 Mesa 18.3.6.
[INFO] [GL]: Using resolution 960x720
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support …
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Setting up menu pipeline shaders for XMB …
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] Resetting shader to defaults …
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Joypad]: Found joypad driver: “udev”.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [X11]: Suspending screensaver (X11, xdg-screensaver).
[INFO] [Video]: Found display server: x11
[INFO] [PulseAudio]: Requested 24576 bytes buffer, got 18432.
[INFO] [Menu]: Found menu display driver: “menu_display_gl”.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = ‘null’ 0x55b563172a20
[INFO] SRAM will not be saved.
[INFO] Loading history file: [/home/yann/.config/retroarch/content_history.lpl].
[INFO] Loading history file: [/home/yann/.config/retroarch/content_favorites.lpl].
[INFO] Loading history file: [/home/yann/.config/retroarch/content_music_history.lpl].
[INFO] Loading history file: [/home/yann/.config/retroarch/content_video_history.lpl].
[INFO] Loading history file: [/home/yann/.config/retroarch/content_image_history.lpl].
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [PulseAudio]: Unpausing.
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapIntervalEXT(1)
[INFO] [PulseAudio]: Pausing.
[INFO] [decompress] File '/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip.
[INFO] [PulseAudio]: Unpausing.
[INFO] [PulseAudio]: Unpausing.
[INFO] [Config]: Saved new config to “/home/yann/.config/retroarch/retroarch.cfg”.
[INFO] [PulseAudio]: Pausing.
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [XINERAMA]: Saved monitor #0.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.\

You’ll need to unzip the core before you can use it.

I think it’s already unziped:

ls /usr/lib/x86_64-linux-gnu/libretro/
bsnes_mercury_accuracy_libretro.so desmume_libretro.so mednafen_pce_fast_libretro.so mgba.libretro nestopia_libretro.so bsnes_mercury_balanced.libretro flycast_libretro.so mednafen_psx_libretro.so mgba_libretro.so snes9x_libretro.so bsnes_mercury_balanced_libretro.so gambatte_libretro.so mednafen_vb_libretro.so mupen64plus_libretro.so bsnes_mercury_performance_libretro.so genesis_plus_gx_libretro.so mednafen_wswan_libretro.so nestopia.libretro

EDIT: it’s ok: it’s in the load core list, and when I load it, it’s ok. Sorry I didn’t see it before …

1 Like

no worries, glad you got it going!

Thanks again for your help. I can load cdi or gdi games now.

1 Like

The original issue still persists though. Namely that the core updater doesn’t list it as “Sega Dreamcast/Naomi (Flycast)”. I’ve had this issue before as well when running RA using flatpak. I now only use flatpak to download and update RA, but otherwise I run it outside of flatpak and it doesn’t exhibit this problem.

does it show up under the lib name? like, ‘flycast_libretro.so’?

Yes. It shouldn’t do that AFAIK after updating the core info files, but it does.

Update:

I re-installed RA in flatpak and deleted all configuration files. The flycast core does show up correctly. However, other cores do not (like bsnes, it only shows the old ones based on bsnes 09x). They do show up as generically named corename_libretro.so.zip entries.

Basically, retroarch seems to load the bundled retroarch.cfg file which sets the core, core info and other directories to the read-only paths in /var/flatpak and so the updater can not actually update anything. The message says it downloaded and unpacked the various zip files, but they aren’t saved anywhere.

I think something similar might be going on when installing through a PPA because a global retroarch.cfg is being installed (maybe in /etc.) In my case, I don’t have a config file in /etc, and I run RA outside of flatpak so there’s no sandbox and the bundled retroarch.cfg is thus not found. As a result, RA will read my local retroarch.cfg (in my ~./config/retroarch directory), which has the various directories set correctly and thus the updater can actually download and save cores and core info files.

Long story short: It seems that everyone who uses RA from flatpak or through their package manager is eternally bound to that version’s core info files, assets, shaders, etc, etc, until the next version of RA is released. If that’s the case, it’s really a major problem. This is not good.

If anyone affected is reading this: it seems the best way to run RA on Linux right now is to install it through flatpak, but do not run it through flatpak. Instead, simply run the RA binary directly:

/var/lib/flatpak/app/org.libretro.RetroArch/current/active/files/bin/retroarch

I simply made a .desktop file for that executable on my desktop. You might want to run it from the terminal first to check for missing libraries which you can either install separately in your package manager (this is what I do,) or manually set LD_LIBRARY_PATH to contain the paths to the various flatpak directories that contain the bundled libraries (you can do that in the exec entry in the .desktop file you create.)

I can verify whether the PPAs are pointing to a different location for info files. It’s likely only a problem with the stable build, but I’ll double-check.

The snap package should be fine, I think.