RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    lr-duckstation - Experimental new PlayStation 1 emulator

    Scheduled Pinned Locked Moved Ideas and Development
    duckstationlr-duckstationplaystationpsxps1
    154 Posts 28 Posters 64.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • MrPacMan17M
      MrPacMan17 @dankcushions
      last edited by

      @dankcushions Hi there.

      Thanks for the advice but it doesn't work :(. What is strange that the file you mentioned contains NO other entries for Duckstation what so ever.

      See pastebin for the verbose log of Runcommand: https://pastebin.com/LXzAgGwS

      And pastebin for the retroarch-core-options.cfg: https://pastebin.com/e8p3jr7E

      Guess something is not okay here. And thanks a lot for your help here, much appreciated.

      stooS dankcushionsD 2 Replies Last reply Reply Quote 1
      • stooS
        stoo @dankcushions
        last edited by stoo

        @dankcushions I've tested a handful of games on the Pi4 (arm 2000/v3d 700) and found:

        OpenGL
        All tested games seem to run full speed at 1x native with or without PGXP enhancements tested more and it seems PGXP can cause slowdown in certain scenes. It's not terrible, but it's definitely there.
        1x native with any form of antialiasing introduces slowdown in certain scenes, with or without PGXP.
        2x native and higher introduces slowdown
        Some of the time the emulator fails to initialise the OpenGL renderer, simply trying a second time with identical settings seems to fix it.

        Vulkan
        AFAIK, Vulkan is not officially available in RetroPie yet, at least on RPi platforms.
        [ERROR] Requesting Vulkan context, but RetroArch is not compiled against Vulkan. Cannot use HW context.

        Software
        Everything seems to run full speed.
        Scaling, antialiasing and PGXP are not available in software.

        dankcushionsD 1 Reply Last reply Reply Quote 1
        • stooS
          stoo @MrPacMan17
          last edited by

          @mrpacman17 Turn on logging in retroarch and post that log. Settings - Logging - Log to file.

          Logs should appear here:

          /opt/retropie/configs/all/retroarch/logs

          MrPacMan17M 1 Reply Last reply Reply Quote 1
          • dankcushionsD
            dankcushions Global Moderator @MrPacMan17
            last edited by

            @mrpacman17 can you please show your config files:
            /opt/retropie/configs/all/retroarch.cfg
            /opt/retropie/configs/psx/retroarch.cfg

            MrPacMan17M 1 Reply Last reply Reply Quote 1
            • dankcushionsD
              dankcushions Global Moderator @stoo
              last edited by

              @stoo said in lr-duckstation - Experimental new PlayStation 1 emulator:

              Vulkan
              AFAIK, Vulkan is not officially available in RetroPie yet, at least on RPi platforms.
              [ERROR] Requesting Vulkan context, but RetroArch is not compiled against Vulkan. Cannot use HW context.

              that's right - it's nether included in raspi pi OS yet, nor does retropie compile retroarch for vulkan on pi platforms

              1 Reply Last reply Reply Quote 1
              • MrPacMan17M
                MrPacMan17 @dankcushions
                last edited by

                @dankcushions Hi there.

                See here: From ALL folder: https://pastebin.com/VAHGAUQk
                From PSX folder: https://pastebin.com/yJqykEM0

                Cheers,
                Marnix

                dankcushionsD 1 Reply Last reply Reply Quote 1
                • MrPacMan17M
                  MrPacMan17 @stoo
                  last edited by

                  @stoo Hi there. Thanks a lot for your efforts, much appreciated. Please see here: https://pastebin.com/mNe4uETa

                  1 Reply Last reply Reply Quote 1
                  • dankcushionsD
                    dankcushions Global Moderator @MrPacMan17
                    last edited by

                    @mrpacman17 said in lr-duckstation - Experimental new PlayStation 1 emulator:

                    @dankcushions Hi there.

                    See here: From ALL folder: https://pastebin.com/VAHGAUQk

                    this is a non-default config, unfortunately. i would reset it by updating retroarch, which will generate a retroarch.cfg.rp-dist default file in th same folder. delete/rename your old retroarch.cfg and then rename retroarch.cfg.rp-dist to retroarch.cfg

                    that said, the line i was curious about is

                    video_driver = "gl"
                    

                    try instead with

                    video_driver = "glcore"
                    

                    From PSX folder: https://pastebin.com/yJqykEM0

                    looks fine

                    MrPacMan17M 2 Replies Last reply Reply Quote 1
                    • MrPacMan17M
                      MrPacMan17 @dankcushions
                      last edited by

                      @dankcushions Thank you, will do as advised. Many thanks again for your hard work and time.

                      1 Reply Last reply Reply Quote 2
                      • MrPacMan17M
                        MrPacMan17 @dankcushions
                        last edited by

                        @dankcushions I did as requested. The file is default now and I changed the videodriver to glcore as requested. But the issue persists, see Runcommand log: https://pastebin.com/YcmcpvLM

                        mituM dankcushionsD 2 Replies Last reply Reply Quote 1
                        • mituM
                          mitu Global Moderator @MrPacMan17
                          last edited by

                          @mrpacman17 glcore is not supported on a Pi4. Use gl as the video driver. Also, RetroPie doesn't support running it in a desktop session on a Pi, you should run it outside the desktop environment.

                          MrPacMan17M 1 Reply Last reply Reply Quote 1
                          • MrPacMan17M
                            MrPacMan17 @mitu
                            last edited by

                            @mitu I am running Xubuntu on an HP laptop (ProBook 6550B). I did as adviced but still the same issue is at play.

                            mituM 1 Reply Last reply Reply Quote 1
                            • mituM
                              mitu Global Moderator @MrPacMan17
                              last edited by

                              @mrpacman17 said in lr-duckstation - Experimental new PlayStation 1 emulator:

                              ProBook 6550B

                              I see, even this way glcore would not work. According to HP's spec page, the GPU included doesn't support OpenGL 3.3, which is needed for glcore.

                              MrPacMan17M 1 Reply Last reply Reply Quote 1
                              • MrPacMan17M
                                MrPacMan17 @mitu
                                last edited by

                                @mitu Okay, video is set back to GL. Still no luck though. I am doing something wrong but I don't know what. Sorry for my basic level of understanding here.

                                mituM 1 Reply Last reply Reply Quote 1
                                • mituM
                                  mitu Global Moderator @MrPacMan17
                                  last edited by

                                  @mrpacman17 Try to force the Software renderer in Duckstation by modifying retroarch-core-options.cfg and setting

                                  duckstation_GPU.Renderer = "Software"
                                  
                                  1 Reply Last reply Reply Quote 1
                                  • dankcushionsD
                                    dankcushions Global Moderator @MrPacMan17
                                    last edited by dankcushions

                                    @mitu we tried that :) i believe even in software mode duckstaiton needs a valid gl context. methinks this hardware is getting nothing. perhaps a linux driver issue. nah it should fall back to software... https://github.com/stenzek/duckstation/pull/908 - weird.

                                    @mrpacman17 i'm afraid i'm out of ideas. i don't have this hardware. if you know how to use gdb you could get a backtrace of the crash. you could also try the libretro and duckstation discord for advice.

                                    MrPacMan17M 2 Replies Last reply Reply Quote 1
                                    • MrPacMan17M
                                      MrPacMan17 @dankcushions
                                      last edited by

                                      @dankcushions Hi all. Well I am not a Linux specialst whatsoever. So I leave it at this. Thank you very much for your time and effort. I really appreciate it. I will run my PSX games with another emulator. Still I appreciate all your hard work. Thanks to you I can play retro games, which is totally awesome!

                                      I 1 Reply Last reply Reply Quote 1
                                      • MrPacMan17M
                                        MrPacMan17 @dankcushions
                                        last edited by

                                        @dankcushions and @mitu: It WORKS!!! Just for a last effort I added the line as I did before. And now it WORKS!!! Totally happy I am. Guess all the previous steps combined with the software rendering did the trick. Woohooo!!! Thank you guys!

                                        1 Reply Last reply Reply Quote 2
                                        • stooS
                                          stoo
                                          last edited by

                                          As well as the emulator sometimes failing to initialize OpenGL after changing resolution settings (even at low x values), I've noticed that after changing settings a few times (scaling, AA, PGXP, etc.) the emulator will become choppy and slow even when set to 1x native with all enhancements disabled. Restarting the emulator is the only way to get performance back. Not sure what's going on here.

                                          I'll see if I can replicate it and if there are reproducible steps to cause it.

                                          stooS 1 Reply Last reply Reply Quote 1
                                          • stooS
                                            stoo @stoo
                                            last edited by

                                            @stoo While I haven't been able to replicate the weird performance problem I was getting before, I see why OpenGL is failing intermittently.

                                            Seemingly at random when switching AA values, a shader fails to compile. It doesn't happen every time, but maybe 50% of the time?

                                            [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] [GPUBackend] GPU thread started.
                                            [libretro INFO] [GPU_HW] Resolution Scale: 1 (1024x512), maximum 4
                                            [libretro INFO] [GPU_HW] Multisampling: 4x
                                            [libretro INFO] [GPU_HW] Dithering: Disabled
                                            [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: YES
                                            [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 81 of 0-156
                                            [libretro ERROR] [CompileShader] Shader failed to compile:
                                            0:105(68): error: `gl_SampleID' undeclared
                                            0:105(63): error: cannot construct `uint' from a non-numeric data type
                                            0:105(59): error: cannot construct `int' from a non-numeric data type
                                            0:105(17): error: no matching function for call to `texelFetch(sampler2DMS, ivec2, error)'; candidates are:
                                            0:105(17): error:    vec4 texelFetch(sampler1D, int, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler1D, int, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler1D, int, int)
                                            0:105(17): error:    vec4 texelFetch(sampler2D, ivec2, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler2D, ivec2, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler2D, ivec2, int)
                                            0:105(17): error:    vec4 texelFetch(sampler3D, ivec3, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler3D, ivec3, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler3D, ivec3, int)
                                            0:105(17): error:    vec4 texelFetch(sampler2DRect, ivec2)
                                            0:105(17): error:    ivec4 texelFetch(isampler2DRect, ivec2)
                                            0:105(17): error:    uvec4 texelFetch(usampler2DRect, ivec2)
                                            0:105(17): error:    vec4 texelFetch(sampler1DArray, ivec2, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler1DArray, ivec2, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler1DArray, ivec2, int)
                                            0:105(17): error:    vec4 texelFetch(sampler2DArray, ivec3, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler2DArray, ivec3, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler2DArray, ivec3, int)
                                            0:105(17): error:    vec4 texelFetch(sampler2DMS, ivec2, int)
                                            0:105(17): error:    ivec4 texelFetch(isampler2DMS, ivec2, int)
                                            0:105(17): error:    uvec4 texelFetch(usampler2DMS, ivec2, int)
                                            0:105(17): error: type mismatch
                                            
                                            [libretro ERROR] [Initialize] Failed to compile programs
                                            [libretro ERROR] [CreateGPU] Failed to initialize OpenGL renderer, falling back to software renderer
                                            [INFO] [Environ]: SET_MESSAGE: Failed to initialize OpenGL renderer, falling back to software renderer.
                                            [libretro INFO] [GPUBackend] GPU thread stopped.
                                            [libretro INFO] [GPUBackend] GPU thread started.
                                            

                                            When this happens, it says it's falling back to Software rendering, but a black screen appears instead. The game is still running, audio is playing but no display. You can switch internal resolutions up or down to force it to initialize the OpenGL renderer again and it usually comes back.

                                            No idea if this is a bug in duckstation, Retroarch or a GL driver bug. I'm using glcore.

                                            dankcushionsD 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            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.