lr-duckstation - Experimental new PlayStation 1 emulator
-
WHAT IS LR-DUCKSTATION?:
Recently RetroPie has added lr-duckstation to the experimental packages list. This is an actively developed PlayStation 1 emulator that is fast, compatible, and (increasingly) accurate. It also includes various enhancements to improve visuals beyond the original hardware.Time will tell, but it looks like it is set to be the best emulator for PS1 on Pi and other SBCs, and potentially even for PC-type hardware.
REQUIREMENTS:
- It is compatible with almost everything that RetroPie supports, apart from Pi 1 or 0.
- It requires RetroArch 1.9.1 and later - RetroPie moved to a compatible version very recently so you will likely need to update this core package also.
- As is typical with PS1 emulators, it requires a compatible BIOS file. I have not researched the precise requirements but anything that works for lr-pcsx_rearmed probably works.
- It supports extensions:
.cue
(and paired.bin
(s))
.chd
.pbp
and.m3u
multi-disc playlists of compatible extensions
INSTALLATION:
- Choose Update RetroPie-Setup script in
retropie_setup
(see this screenshot) - look for lr-duckstation in the Experimental packages list, and install it. Note that it is only available as a Binary (see https://www.duckstation.org/libretro/ for info on this)
- Be sure to update retroarch from Core packages, as per the requirements above.
- Best performance is achieved by switching the
audio_driver
toalsathread
. This is now the global default in RetroArch, but you will need to update to at least v1.9.5 (which you will get if you update the retropie-setup script and RetroArch, as instructed above, and you need to have a default retroarch.cfg file, that doesn’t specify alsa driver).
IMPORTANT NOTE FOR Pi 2 & 3 AND OTHER GLES 2 DEVICES:
lr-duckstation is compatible with these devices, but not the default hardware renderer, which will just produce a black screen. To fix this you need to set the renderer core option to 'Software'. This will be the default for such devices at some point.Performance issues on Pi 4:
Certain games can have performance issues with the default GLES 3.1 renderer (for example, Gran Turismo 2 at race start on certain tracks). To resolve this, use the software renderer as per the above instructions. This issue doesn't seem to be present with later MESA drivers, but they will not part of RetroPie until the next version of Raspberry Pi OS. Until then, software rendering will be the default for Pi 4 at some point.As this is an experimental emulator, there may be strange issues, and so forth - please don't expect immediate solutions - you're experimenting ;) Also, please do not swamp the developer's github page with issues - let's collate stuff here in the first instance.
-
@dankcushions looks good. I did some minor testing. Some slowdown here and there and some audio dropouts, usually related to the higher res modes, on a overclocked pi4. The only game that did not run at full speed at all, so far, was castlevania chronicles. No matter what settings, just could not get it to run full speed at all.
-
@lostless on my stock pi4 Castlevania Chronicles is running fullspeed. Please check you have
audio_driver = alsathread
in yourretroarch.cfg
(global config). Also as stated above therenderer
which gives best performance (for now) isSoftware
. I've left other settings as default. If still not fullspeed perhaps you should recompress the game using a newer.chd
by following the steps below (assuming you're having.chd
).@dankcushions thanks again for bringing that up. As my testing session goes everything is going very well so far. I'll share my findings right below as well as some feedbacks. I was about to start raising tickets on Github but I do concur that it's best to start a list here first. To see if there's workaround/fix from other users :-) I'll update the lists as it goes.
CHD prerequisite
In case your game(s) have music/CDDA issues (eg. looping or stuttering) and game has been compressed in.chd
. It might be due to an older version ofchdman
being used. If so get the latest MAME binary, extract it to get various executables. One of these beingchdman
which will match the MAME version. Compress again your game using that new version and you should be good.Feature(s) request
- to support different extensions for
.chd
(eg..cd[1-4]
) so that games won't be listed twice in frontends (note: Pegasus does support regex / I don't know about ES).
General Issues
-
games not running at full speed?
=> fix: ensure you haveaudio_driver = alsathread
set in yourretroarch.cfg
(global config) -
BIOS/PSX logo sound keeps on going after the boot sequence ends until another FMV starts playing.
-
vibration/analog not working?
(thanks to @windg)
=> fix: open RetroArch GUI then Controls > Port 1 controls > Device type > Analog Controller (Dualshock)
Game specific issues w/ fixes
-
Battle Arena Toshinden (PAL/US)
=> game runs too fast
=> fix: ensureApply Compatibility Settings
is set toON
in RGUI > Options panel
=> manual fix: open RGUI > Options > Recompiler ICache = "off" -
Blasto, Crusader No Remorse, Disruptor, In the Hunt, Lifeforce Lenka (PAL)
=> horizontal black bars on top during logo/FMV sequences (ticket).
=> fix: open RGUI > Options > Crop Mode = "Overscan only" + Display Line Start Offset = "10"
=> note: issue still occurs even whenApply Compatibility Settings
is set toON
in RGUI > Options panel (not tested on Blasto) -
Captain Commando (JP), Casper (PAL)
=> vertical "garbage" lines seen on the right side of the screen whenCrop
setting is being set toAll borders
.
=> fix: open RGUI > Options > Crop Mode = "Overscan only" -
Constructor (PAL)
=> flickering area at bottom side of the screen
=> fix: open RGUI > Options > Force NTSC Timings = "off" -
Diablo (PAL)
=> music and speeches are all cutting off and "jumpy"
=> fix: open RGUI > Options > Force NTSC Timings = "off"
=> alternative: prefer the US release as it's multilanguage as well -
Gekioh (JP)
menu background not being cleared up when starting a game (whatever the mode). Not sure it's a bug as videos on YT show similar behavior.
=> NOT A BUG
-
Jackie Chan Stuntmaster (PAL/US)
=> black screen after first logo (ticket)
=> fix: ensureApply Compatibility Settings
is set toON
in RGUI > Options panel -
Koudelka (PAL)
=> flickering FMVs
=> fix: open RGUI > Options > Force NTSC Timings = "off" -
X2: No Relief (PAL)
=> slowdown at beginning of first stage
=> fix: open RGUI > Options > Force NTSC Timings = "off"
Game specific issues w/o fixes
-
Captain Commando (JP)
=> sprites glitches (same on PCSX-ReARMed). Seen on the very 1st boss.
=> Stenzek is aware of it. CD timing-related. Thanks @stoo
-
ISS Pro 98 (US/PAL)
game stuck after main menu when creating data on Memory Card (PAL). On US version it goes through but still can't see any Memory Card available in the option screen.FIXED
=> Recompiler ICache now forced on ISS Pro 98 by default, which fixes the problem. Thanks @stoo
- to support different extensions for
-
@nemo93 said in lr-duckstation - Experimental new PlayStation 1 emulator:
games running not full speed?
=> ensure you have audio_driver = alsathread set in your retroarch.cfg (global config)do you have a particular example where a game works bad without, good with? maybe this should be retropie's default for all systems if it performs better - I should look into this
-
Thanks @dankcushions and everyone else involved in helping get this into RetroPie!
One issue I've noticed is that pressing Escape, Q, E, Space, Enter, or KeyPad Enter on a keyboard causes the emulator to crash. All other keys work without crashing the emulator.
Some contextual info to help:
Pi Model or other hardware: Pi 4B + Argon ONE V2 Case
Power Supply used: CanaKit 3.5A USB-C
RetroPie Version Used: 4.7.13, updated with master today (using Retroarch 1.9.4)
Built From: Pre made SD Image on RetroPie website
USB Devices connected: 3 2.4ghz adapters (2 for controllers, 1 for keyboard)
Controller used: Keyboard
Overrides: I have an overlay enabled, but otherwise no overrides configured for the RetroArch config or core options
Game: Tony Hawk's Pro Skater (USA) (built using chdman from MAME 0.230)Keyboard config in Retroarch:
input_player1_a = "x" input_player1_b = "z" input_player1_y = "a" input_player1_x = "s" input_player1_start = "enter" input_player1_select = "rshift" input_player1_l = "q" input_player1_r = "w" input_player1_left = "left" input_player1_right = "right" input_player1_up = "up" input_player1_down = "down" input_player1_l2 = "num1" input_player1_r2 = "num2" input_state_slot_increase = "right" input_state_slot_decrease = "left" input_exit_emulator = "enter" input_reset = "z" input_menu_toggle = "s" input_enable_hotkey = "rshift"
Error messages received:
[libretro ERROR] [LUTPageFaultHandler] Loadstore PC not found for 0xb6b4f3b4 in block 0x80055EF0 /opt/retropie/supplementary/runcommand/runcommand.sh: line 1305: 7568 Segmentation fault /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-duckstation/duckstation_libretro.so --config /opt/retropie/configs/psx/retroarch.cfg "/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd" --verbose --appendconfig /dev/shm/retroarch.cfg < /dev/null
Verbose log:
Parameters: Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-duckstation/duckstation_libretro.so </dev/null --config /opt/retropie/configs/psx/retroarch.cfg "/home/pi/Retr oPie/roms/psx/Tony Hawk's Pro Skater (USA).chd" --verbose --appendconfig /dev/shm/retroarch.cfg [INFO] RetroArch 1.9.4 (Git c226bd8) [INFO] === Build ======================================= [INFO] Capabilities: NEON VFPv3 VFPv4 [INFO] Built: May 31 2021 [INFO] Version: 1.9.4 [INFO] Git: c226bd8 [INFO] ================================================= [INFO] [Input]: Found input driver: "x". [INFO] [Core]: Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-duckstation/duckstation_libretro.so" [INFO] [Overrides]: No core-specific overrides found at "/home/pi/.config/retroarch/config/DuckStation/DuckStation.cfg". [INFO] [Overrides]: No content-dir-specific overrides found at "/home/pi/.config/retroarch/config/DuckStation/psx.cfg". [INFO] [Overrides]: No game-specific overrides found at "/home/pi/.config/retroarch/config/DuckStation/Tony Hawk's Pro Skater (USA).cfg". [INFO] [Environ]: GET_CORE_OPTIONS_VERSION. [INFO] [Environ]: SET_CORE_OPTIONS. [INFO] [Environ]: GET_DISK_CONTROL_INTERFACE_VERSION. [INFO] [Environ]: SET_DISK_CONTROL_EXT_INTERFACE. [INFO] [Environ]: GET_LOG_INTERFACE. [INFO] [Remaps]: Remap directory: "/opt/retropie/configs/psx/". [INFO] [Overrides]: Redirecting save file to "/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).srm". [INFO] [Overrides]: Redirecting save state to "/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).state". [INFO] [Environ]: GET_RUMBLE_INTERFACE. [libretro INFO] [LibretroHostInterface] Port 1 = DigitalController [libretro INFO] [LibretroHostInterface] Port 2 = None [libretro INFO] [LibretroHostInterface] Port 3 = None [libretro INFO] [LibretroHostInterface] Port 4 = None [libretro INFO] [LibretroHostInterface] Port 5 = None [libretro INFO] [LibretroHostInterface] Port 6 = None [libretro INFO] [LibretroHostInterface] Port 7 = None [libretro INFO] [LibretroHostInterface] Port 8 = None [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: SET_CONTROLLER_INFO. [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [INFO] [CONTENT LOAD]: Content loading skipped. Implementation will load it on its own. [libretro INFO] [Main] retro_load_game(/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd) [libretro INFO] [HostInterface] Boot Filename: /home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd [INFO] [Environ]: SET_PIXEL_FORMAT: RGB565. [libretro INFO] [HostInterface] Creating 'Cubeb' audio stream, sample rate = 44100, channels = 2, buffer size = 2048 [libretro INFO] [System] Loading CD image '/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd'... [libretro INFO] [System] Auto-detected console NTSC-U region for '/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd' (region NTSC-U) [libretro INFO] [System] Console Region: NTSC-U/C (US, Canada) [INFO] [Environ]: SYSTEM_DIRECTORY: "/home/pi/RetroPie/BIOS". [libretro INFO] [HostInterface] Searching for a NTSC-U/C (US, Canada) BIOS in '/home/pi/RetroPie/BIOS'... [libretro WARN] [FindBIOSImageInDirectory] Skipping '7800 BIOS (U).rom': incorrect size [libretro WARN] [FindBIOSImageInDirectory] Skipping 'gba_bios.bin': incorrect size [libretro INFO] [HostInterface] Using BIOS 'scph1001.bin': SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A) [libretro INFO] [System] Hash for 'SLUS_008.60' - 7D01FD9130BFE0C0 [libretro INFO] [LibretroHostInterface] Running game changed: SLUS-00860 (Tony Hawk's Pro Skater (USA)/HASH-7D01FD9130BFE0C0) [libretro INFO] [LibretroHostInterface] Game settings found for SLUS-00860/HASH-7D01FD9130BFE0C0 [libretro INFO] [LibretroHostInterface] Port 1 = DigitalController [libretro INFO] [LibretroHostInterface] Port 2 = None [libretro INFO] [LibretroHostInterface] Port 3 = None [libretro INFO] [LibretroHostInterface] Port 4 = None [libretro INFO] [LibretroHostInterface] Port 5 = None [libretro INFO] [LibretroHostInterface] Port 6 = None [libretro INFO] [LibretroHostInterface] Port 7 = None [libretro INFO] [LibretroHostInterface] Port 8 = None [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [libretro INFO] [Common::MemoryArena] File mapping name: duckstation_7568_0xabd0f564 [libretro INFO] [Bus] RAM is 2097152 bytes at 0xab74f000 [libretro INFO] [GPUBackend] GPU thread started. [libretro INFO] [Bus] Fastmem base (software): 0xaa0b5008 [INFO] [Environ]: GET_SAVE_DIRECTORY. [libretro INFO] [MemoryCard] Loaded memory card from /home/pi/RetroPie/roms/psx//Tony Hawk's Pro Skater (USA)_1.mcd [libretro INFO] [CDROM] Inserting new media, disc region: NTSC-U, console region: NTSC-U [INFO] [Environ]: GET_PREFERRED_HW_RENDER, video driver name: gl. [INFO] [Environ]: GET_PREFERRED_HW_RENDER - Context callback set to RETRO_HW_CONTEXT_OPENGL. [libretro INFO] [LibretroHostInterface] Renderer = OpenGL [libretro INFO] [LibretroHostInterface] Requesting hardware renderer context for OpenGL [INFO] [Environ]: SET_HW_RENDER, context type: glcore. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: glcore. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGL context, but RetroArch is compiled against OpenGLES. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [ERROR] Requesting OpenGLES3.2 context, but RetroArch is compiled against a lesser version. Cannot use HW context. [ERROR] [Environ]: SET_HW_RENDER - Dynamic request HW context failed. [INFO] [Environ]: SET_HW_RENDER, context type: gl. [INFO] Requesting OpenGLES3.1 context. [INFO] Reached end of SET_HW_RENDER. [libretro ERROR] [retro_get_memory_data] Save RAM requested but unavailable. [INFO] [SRAM]: Skipping SRAM load.. [INFO] Version of libretro API: 1 [INFO] Compiled against API: 1 [libretro INFO] [LibretroHostInterface] base = 320x240, max = 1024x512, aspect ratio = -1.00, fps = 59.82 [INFO] [Audio]: Set audio input rate to: 44234.67 Hz. [INFO] [Video]: Video @ 1920x1080 [INFO] [Video]: Using HW render, OpenGL driver forced. [INFO] [Video]: Using configured "gl" driver for GL HW render. [INFO] [DRM]: Found 1 connectors. [INFO] [DRM]: Connector 0 connected: yes [INFO] [DRM]: Connector 0 has 40 modes. [INFO] [DRM]: Connector 0 assigned to monitor index: #1. [INFO] [DRM]: Mode 0: (1920x1080) 1920 x 1080, 60.000000 Hz [INFO] [DRM]: Mode 1: (1920x1080) 1920 x 1080, 59.940201 Hz [INFO] [DRM]: Mode 2: (1920x1080i) 1920 x 1080, 30.000000 Hz [INFO] [DRM]: Mode 3: (1920x1080i) 1920 x 1080, 29.970100 Hz [INFO] [DRM]: Mode 4: (1920x1080) 1920 x 1080, 50.000000 Hz [INFO] [DRM]: Mode 5: (1920x1080i) 1920 x 1080, 25.000000 Hz [INFO] [DRM]: Mode 6: (1920x1080) 1920 x 1080, 30.000000 Hz [INFO] [DRM]: Mode 7: (1920x1080) 1920 x 1080, 29.970100 Hz [INFO] [DRM]: Mode 8: (1920x1080) 1920 x 1080, 25.000000 Hz [INFO] [DRM]: Mode 9: (1920x1080) 1920 x 1080, 24.000000 Hz [INFO] [DRM]: Mode 10: (1920x1080) 1920 x 1080, 23.976080 Hz [INFO] [DRM]: Mode 11: (1600x1200) 1600 x 1200, 60.000000 Hz [INFO] [DRM]: Mode 12: (1680x1050) 1680 x 1050, 59.883251 Hz [INFO] [DRM]: Mode 13: (1280x1024) 1280 x 1024, 75.024673 Hz [INFO] [DRM]: Mode 14: (1280x1024) 1280 x 1024, 60.019741 Hz [INFO] [DRM]: Mode 15: (1440x900) 1440 x 900, 74.984428 Hz [INFO] [DRM]: Mode 16: (1440x900) 1440 x 900, 59.901459 Hz [INFO] [DRM]: Mode 17: (1280x960) 1280 x 960, 60.000000 Hz [INFO] [DRM]: Mode 18: (1280x800) 1280 x 800, 59.909546 Hz [INFO] [DRM]: Mode 19: (1152x864) 1152 x 864, 75.000000 Hz [INFO] [DRM]: Mode 20: (1280x720) 1280 x 720, 60.000000 Hz [INFO] [DRM]: Mode 21: (1280x720) 1280 x 720, 59.940201 Hz [INFO] [DRM]: Mode 22: (1280x720) 1280 x 720, 50.000000 Hz [INFO] [DRM]: Mode 23: (1024x768) 1024 x 768, 75.028580 Hz [INFO] [DRM]: Mode 24: (1024x768) 1024 x 768, 70.069359 Hz [INFO] [DRM]: Mode 25: (1024x768) 1024 x 768, 60.003841 Hz [INFO] [DRM]: Mode 26: (832x624) 832 x 624, 74.551270 Hz [INFO] [DRM]: Mode 27: (800x600) 800 x 600, 75.000000 Hz [INFO] [DRM]: Mode 28: (800x600) 800 x 600, 72.187569 Hz [INFO] [DRM]: Mode 29: (800x600) 800 x 600, 60.316540 Hz [INFO] [DRM]: Mode 30: (800x600) 800 x 600, 56.250000 Hz [INFO] [DRM]: Mode 31: (720x576) 720 x 576, 50.000000 Hz [INFO] [DRM]: Mode 32: (720x480) 720 x 480, 60.000000 Hz [INFO] [DRM]: Mode 33: (720x480) 720 x 480, 59.940060 Hz [INFO] [DRM]: Mode 34: (640x480) 640 x 480, 75.000000 Hz [INFO] [DRM]: Mode 35: (640x480) 640 x 480, 72.808800 Hz [INFO] [DRM]: Mode 36: (640x480) 640 x 480, 66.666664 Hz [INFO] [DRM]: Mode 37: (640x480) 640 x 480, 60.000000 Hz [INFO] [DRM]: Mode 38: (640x480) 640 x 480, 59.940475 Hz [INFO] [DRM]: Mode 39: (720x400) 720 x 400, 70.081665 Hz [INFO] [GL]: Found GL context: kms [INFO] [GL]: Detecting screen resolution 1920x1080. [INFO] [EGL] Found EGL client version >= 1.5, trying eglGetPlatformDisplay [INFO] [EGL]: EGL version: 1.4 [INFO] [EGL]: Current context: 0x1a6dfe0. [INFO] [KMS]: New FB: 1920x1080 (stride: 7680). [INFO] [GL]: Vendor: Broadcom, Renderer: V3D 4.2. [INFO] [GL]: Version: OpenGL ES 3.1 Mesa 19.3.2. [INFO] [GL]: Using resolution 1920x1080 [INFO] [GL]: Default shader backend found: glsl. [INFO] [Shader driver]: Using GLSL shader backend. [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] [GL]: Using 1 textures. [INFO] [GL]: Loaded 1 program(s). [INFO] [GL]: Initializing HW render (1024 x 1024). [INFO] [GL]: Max texture size: 4096 px, renderbuffer size: 4096 px. [INFO] [GL]: Supports FBO (render-to-texture). [INFO] [Joypad]: Found joypad driver: "udev". [INFO] [Font]: Using font rendering backend: stb-unicode. [INFO] [Video]: Found display server: null [libretro INFO] [LibretroHostInterface] Hardware context reset, type = 5 [INFO] [Environ]: GET_SAVE_DIRECTORY. [libretro INFO] [LibretroHostInterface] Shader cache directory: '/home/pi/RetroPie/roms/psx//duckstation_cache/' [libretro INFO] [GPUBackend] GPU thread stopped. [libretro INFO] [GPU_HW_OpenGL] Max texture size: 4096x4096 [libretro INFO] [GPU_HW_OpenGL] Per-sample shading: not supported [libretro INFO] [GPU_HW_OpenGL] Max multisamples: 4 [libretro INFO] [GPU_HW_OpenGL] Uniform buffer offset alignment: 256 [libretro WARN] [SetCapabilities] GL_EXT/OES_copy_image missing, this may affect performance. [libretro INFO] [GPU_HW_OpenGL] Max fragment shader storage blocks: 16 [libretro INFO] [GPU_HW_OpenGL] Max shader storage buffer size: 134217728 [libretro INFO] [GPU_HW_OpenGL] Using shader storage buffers for VRAM writes. [libretro INFO] [GPU_HW] Resolution Scale: 1 (1024x512), maximum 4 [libretro INFO] [GPU_HW] Multisampling: 1x [libretro INFO] [GPU_HW] Dithering: Enabled (Scaled) [libretro INFO] [GPU_HW] Texture Filtering: Nearest-Neighbor [libretro INFO] [GPU_HW] Dual-source blending: Not supported [libretro INFO] [GPU_HW] Using UV limits: NO [libretro INFO] [GPU_HW] Depth buffer: NO [libretro INFO] [GPU_HW] Downsampling: Disabled [libretro INFO] [GPU_HW] Using software renderer for readbacks: NO [INFO] [Environ]: GET_SAVE_DIRECTORY. [libretro INFO] [LibretroHostInterface] Shader cache directory: '/home/pi/RetroPie/roms/psx//duckstation_cache/' [libretro INFO] [GL::ShaderCache] 0 program binary formats supported by driver [libretro WARN] [Open] Your GL driver does not support program binaries. Hopefully it has a built-in cache, otherwise startup will be slow due to compiling shaders. [libretro INFO] [HostInterface] Loading: Compiling Shaders 66 of 0-156 [libretro INFO] [HostInterface] Loading: Compiling Shaders 132 of 0-156 [libretro INFO] [ResetBatchVertexDepth] Resetting batch vertex depth [INFO] [ALSA]: Using floating point format. [INFO] [ALSA]: Period size: 768 frames [INFO] [ALSA]: Buffer size: 3072 frames [INFO] [ALSA]: Can pause: no. [INFO] [Display]: Found display driver: "gl". [libretro ERROR] [SetCoreOptions] Legacy options not implemented [libretro WARN] [InitDiskControlInterface] Failed to set disk control interface [libretro ERROR] [SetCoreOptions] Legacy options not implemented [libretro WARN] [InitDiskControlInterface] Failed to set disk control interface [libretro INFO] [Main] retro_set_controller_port_device(0, 1) [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [libretro INFO] [Main] retro_set_controller_port_device(1, 1) [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [INFO] [Playlist]: Loading history file: [/opt/retropie/configs/psx/content_history.lpl]. [INFO] [Playlist]: Loading history file: [/opt/retropie/configs/psx/content_music_history.lpl]. [INFO] [Playlist]: Loading history file: [/opt/retropie/configs/psx/content_video_history.lpl]. [INFO] [Playlist]: Loading history file: [/opt/retropie/configs/psx/content_image_history.lpl]. [INFO] [Playlist]: Loading favorites file: [/opt/retropie/configs/psx/content_favorites.lpl]. [libretro INFO] [LibretroHostInterface] Port 1 = DigitalController [libretro INFO] [LibretroHostInterface] Port 2 = DigitalController [libretro INFO] [LibretroHostInterface] Port 3 = None [libretro INFO] [LibretroHostInterface] Port 4 = None [libretro INFO] [LibretroHostInterface] Port 5 = None [libretro INFO] [LibretroHostInterface] Port 6 = None [libretro INFO] [LibretroHostInterface] Port 7 = None [libretro INFO] [LibretroHostInterface] Port 8 = None [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: GET_SAVE_DIRECTORY. [INFO] [Environ]: SET_INPUT_DESCRIPTORS: [libretro INFO] [LibretroHostInterface] base = 320x240, max = 1024x512, aspect ratio = 1.31 [INFO] [Environ]: SET_GEOMETRY: 320x240, aspect: 1.306. [INFO] [KMS]: New FB: 1920x1080 (stride: 7680). [INFO] [KMS]: New FB: 1920x1080 (stride: 7680). [INFO] [KMS]: New FB: 1920x1080 (stride: 7680). [libretro ERROR] [LUTPageFaultHandler] Loadstore PC not found for 0xb6b4f3b4 in block 0x80055EF0 /opt/retropie/supplementary/runcommand/runcommand.sh: line 1305: 7568 Segmentation fault /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-duckstation/duckstation_li bretro.so --config /opt/retropie/configs/psx/retroarch.cfg "/home/pi/RetroPie/roms/psx/Tony Hawk's Pro Skater (USA).chd" --verbose --appendconfig /dev/shm/retroarch.cfg < /dev/null
Note that changing the keyboard bindings to other keys (such as
input_player1_start
orinput_player1_l
) doesn't make a difference. Those same keys from above still cause the emulator to crash. -
@dankcushions said in lr-duckstation - Experimental new PlayStation 1 emulator:
do you have a particular example where a game works bad without, good with?
=> sure. In fact I have plenty. Worth noting the issue is not only with that core.
=> Let's start with Ape Escape as it's easy to spot the difference with/without. The realtime intro should be sluggish with crackling/stuttering audio. Another very good candidate would be Aladdin Nasira Revenge as the game is a slideshow without the proper setting. After settingaudio_driver = alsathread
games are fullspeed with clear, uncrackling sound.
=> Other games impacted: 70's Robot Anime Geppy-X (FMVs audio crackles), Alien Resurrection (gfx are fine but audio stutters/cuts off), Castlevania-Symphony of the night (FMV and some in-game audio crackling/stuttering), Tai'Fu (cutscenes are like slideshows).maybe this should be retropie's default for all systems if it performs better
On my stock pi4 it's a game changer :-) As stated above the setting helps a lot as well with other cores like lr-mame or lr-fbneo. For instance, Alien Storm does have sound crackling without. Same applies to many shooters like Stormblade or Desert Breaker. After picking the proper audio driver those games run flawless.
-
@nemo93 thank you so much for the tip. Seems like alsathread+software renderer is the magic combination to make most if not all psx games ran great. It even fixed nba2k3 which lags for me before trying this tip. Any downside when staying with alsathread especially when using other emu/cores?
-
I try Metal Gear Solid on both Pi3 and Pi 4 and it runs much better on the first one. It's unblayable on the Pi4 ( i try all renders modes).
Pi4 verbose log : https://pastebin.com/yAM3Duik
Edit: Ok i just try @nemo93 suggestion(alsathread+software render) and jack pot! Metal gear running perfect now.
-
@nemo93 I did those changes and still no change in castkevania chronicles. Might be related to my home made .pbp I made many years ago. I’ll do some testing later by extracting the iso.
-
@genos98 said:
Any downside when staying with alsathread especially when using other emu/cores?
=> as far as I can tell there's no downside as this setting fixed also stuttering in other cores as mentioned above. Apart from making all your games and systems playable on your Pi there's no risk to stick to it. I'll keep on testing and I'll report in case of issue.
@lostless said in:
I did those changes and still no change in castlevania chronicles. Might be related to my home made .pbp I made many years ago. I’ll do some testing later by extracting the iso.
=> I'm positive the game is fullspeed here. Please recompress the image or even go straight with the
cue/bin
to see if that makes a difference. On my end I stick to.chd
given the quite impressive storage saving it allows. If you have time and the will you should give it a try. -
@lostless said in lr-duckstation - Experimental new PlayStation 1 emulator:
@nemo93 I did those changes and still no change in castkevania chronicles. Might be related to my home made .pbp I made many years ago. I’ll do some testing later by extracting the iso.
Runs well for me. Using .chd version though.
@nemo93 said in lr-duckstation - Experimental new PlayStation 1 emulator:
@genos98 said:
Any downside when staying with alsathread especially when using other emu/cores?
=> as far as I can tell there's no downside as this setting fixed also stuttering in other cores as mentioned above. Apart from making all your games and systems playable on your Pi there's no risk to stick to it. I'll keep on testing and I'll report in case of issue.
Thanks again for the tips. I'm glad retropie finally has a way better alternative to pcsx rearmed.
-
This post is deleted! -
Thank you for adding this emulator! It seems to have resolved every issue I personally ran into with specific PS1 games in RetroPie previously.
To me, the final frontier for PS1 emulation is link-cable support (unless there are some more obscure peripherals others can think of). That's probably another can of worms, though, because it would require two instances of the emulator to run side by side. It works well with Game Boy, but, well, that's Game Boy.
Outside of handheld systems, PlayStation may have had the most link-compatible games out of the game consoles available to emulate on a Pi. The only such game I can even think of in the 8- and 16-bit eras is Zero Tolerance on MD/Genesis.
-
As it turns out, the keyboard issue was due to the use of a custom launching screen process. Nothing to see here :)
-
@nemo93 It was my old homemade PBP. I used a mac back in the day and used an app that was for that. It had a habit of setting the files at PAL, but the psp played the games just fine, it would just crop the top and the bottom a tad. Im assuming that was the issue. Reripped a new ISO and no issues.
-
Hi! Thank you very much for bringing Duckstation over. I've never tried it before but heard great things... and apparently it's true.
I had to fiddle around a little, but that was expected, since I also had to update Retroach (and apparently there are again some changes to the way the configs are being loaded).
But here is my little input, which is really great:
If you setdualshock
in theQuickMenu/input
menu as a standard for all games, it seems that Duckstation notices incompatible games and automatically sets to digital input. This is a new behavior (at least to me), that pcsx_rearmed didn't have. So now all of my option files to set the right controller for each game aren't needed anymore. Nice!I also tried some lightgun games, but sadly there is still no crosshair for now. Next I'll try my old NegCon with a USB adapter for some Ridge Race action, but I'll have to find it first... ;)
EDIT
Oh, and another thing: I had to symlink all my old*.srm
files to*_1.mcd
to make Duckstation load them. IDK on the Github page (I think) it was mentioned that*.srm
files can be loaded, too... -
My setup: Pi4 2Ghz/750Mhz 1440p glcore crt-pi slang shader. If it matters, I'm also using that new psx bios from the psp that supposedly helps with performance?
Without alsathread, I got a speed boost in some games from ~54fps to around full speed when going from ogl to vulkan. I was still getting huge slowdowns with castlevania chronicles at around 34fps even with vulkan, but changing it to alsathread immediately made it full speed. Wow. I'll keep that as default.
UPDATE: I set it to vulkan but I guess it must default to software since I don't have vulkan installed.. -
@ecto said:
If you set
dualshock
in theQuickMenu/input
menu as a standard for all games, it seems that Duckstation notices incompatible games and automatically sets to digital input. This is a new behavior (at least to me), that pcsx_rearmed didn't have. So now all of my option files to set the right controller for each game aren't needed anymore. Nice!=> hi @ecto :) I did the same at first but then realized still quite many games were not functioning properly with Dualshock "on" (as of typing 170 games tested and I'd say 15-20% didn't like Dualshock :-)). By that I mean no inputs are registered thus nothing happen when you hit "start" or "O/X" buttons (or any buttons in fact). Enough in fact to have me to revert back to the standard gamepad. This way I'm 100% sure controller will always work no matter what.
I may have missed something hence can you please share names of games working as you described please? Ace Combat 1/2/3 might be ones of these.
-
@nemo93 Oh, ok. Bummer. I've only tested a few: "Air Combat" is one of them. Then I tried "Romancing SaGa" and "Final Fantasy 7". And there it worked IIRC.
EDIT
The following other games need a digital pad and Duckstation automatically changes the input type accordingly:- Xevious 3D-G
- Legacy of Kain - Blood Omen
- Alundra
- Azure Dreams
- Final Fantasy Tactics
- Jumpin' Flash 2
- Parappa
- Persona
- Romance the three Kingdoms IV and VI
- Soul Blade
- Suikoden I and II
- Tales of Destiny
- Tomb Raider I and II
- Wild Arms 1 and 2
The following games are compatible with dualshock input (and rumble) but need the digital pad:
- Pepsiman
- Tenchu
This list isn't complete, of course. This is what I tested in a few minutes.
@nemo93 Can you name a few games that outright refuse dualshock input and are not changed to digital by Duckstation? Maybe we can collect those for future reference (or make Duckstation even better).
BTW. super cool news: I tried Soul Blade's secret characters, and they work. PCSX_Rearmed always crashed with those :D
-
@ecto not sure if these games are identified yet, but Mortal kombat trilogy, mortal kombat 4, and mortal kombat mythologies, all require a digital pad.
And for fun, the only game that requires analog is ape escape.
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.