Release DuckStation


ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
9,330
Age
52
Location
France, near Lyon
Here is DuckStation, a PSX (PS1) Emulator

preview01.png


The Emulator needs BIOS to run. Copy them is "appdata/duckstation/.local/share/duckstation/bios" after 1st launch, or use the setup to point to the folder. While in the settings, also setup you folder for Disc images. After that, most other config should be good to go for the Pyra.
Note that, for now, only the Software renderer is availble. Hardware rendere use GL 3.0+ (with Integer VA and UBO, so, quite some work is needed in gl47es before it could be supported).

The controls should be plug'n play. A Analog Pad is emulated, including the Rumble :) !

Also, for your future SDL2 port: here is pyra configuration to have the gamepad found
Code:
03000000010000000100000001000000,pyraInput Gamepad,a:b3,b:b1,x:b0,y:b4,back:b10,start:b11,leftshoulder:b8,rightshoulder:b9,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux,

Use "Space" to validate stuff while in menu.
And to get the menu while in game, use "F1" key.
(it sometimes fail to get fullscreen. In thta case, just quit and relaunch).

History Log
=========

Build 02
-----------

  • repackaged to use gl4es
Build 01
-----------

  • Initial build
  • Auto-hide mouse cursor while in game
  • Added Pyra specific joystick

Also, for the currious, attached is the diff of this build compared to current git sources
 

Attachments

  • pyra_diff.tar.gz
    2.3 KB · Views: 238
Last edited:
Mmmm, maybe I forgot "gl4es" (gl4es is fully integrated on my system and I don't need the wrapper, so I tend to forgot).
Post automatically merged:

Now build on the repo, a qui-repacke to use gl4es and hopefully fixing the blackscreen on start.

Build 02
-----------

  • repackaged to use gl4es
 
But I also allready installed GL4ES a while ago on my Pyra, you know, I also tested fu billiard and it’s dit run (Slow but steady)
What is the difference between your Pyra and our Pyra?
 
But I also allready installed GL4ES a while ago on my Pyra, you know, I also tested fu billiard and it’s dit run (Slow but steady)
What is the difference between your Pyra and our Pyra?
Yes, but my installation is different. gl4es replace mesa libs on my pyra and I don't need to use "gl4es" to use it.

Grab the updated version, it should be fixed

Also, I added the diff of this build on the 1st post.
 
Awesome: not only do whe now have full analogue Stick Support, Street Fighter Alpha 3 Continued to work which ditnt work whit pcsxrearmed on the Pyra, but on the Pandora, and I can finally play Formula 1 2000 , which ditnt run on PCSXREARMED on Pyra and Pandora ^^

Maybe expect tomorrow a new Video? ^^

EDIT: are Memory Cards and Savestate from PCSXREARMED supported?
 
  • Like
Reactions: rSl
Ok testet it: they aren’t compatible: at least the Memory Cards should work when you change the settings from “one card per game to share one for different games” but I didn’t test yet
The Savestate are different file types ..

And I found out the Game List don’t put any of your games on it’s list, but you can go manually to the directory and run them from there, if the game file is a different type..
but it’s a bit work as you have to go the whole path when you use this way: /media/matzesu/pyra2/pyra roms/PlayStation X but it’s the fault of the emulator ui, nothing you can or should have to, as it’s up to the user who have its image in a non standard ending
 
Are you game directories not configurable in the settings? I have no experience of running this but looking at the screenshot above I suspect it might, and that might fix your game list.
 
There are, and I allready put the PlayStation Directory right, but some games like Afterburner and the Final Fantasy Games ditnt got to the Game List..
 
Never heard about this emulator. PSX emulation is among the main things I wanted in Pyra, thanks a lot.
 
It is crashing for me. No blank screen or anything. It just stays in the desktop.
Code:
asimov@asimov-pyra:~$ dbp-run-path /media/asimov/SD16/dragonbox/packages/duckstation-0.0.1.02.dbp
--------------------------------------------------------------
Setting PATH to /mnt/dbp/union/duckstation:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
--------------------------------------------------------------
Setting HOME to /mnt/dbp/union/duckstation
[    0.0494] I/SDLControllerInterface: Loading game controller mappings from '/mnt/dbp/union/duckstation/database/gamecontrollerdb.txt'
LIBGL: ERROR: EGL Error detected: EGL_BAD_ATTRIBUTE
LIBGL: No EGL configs found.
LIBGL: ERROR: EGL Error detected: EGL_BAD_CONFIG
[    1.3772] I/GL::Context: Created a OpenGL context
[    1.4175] I/GL::Context: GL_VENDOR: ptitSeb
[    1.4176] I/GL::Context: GL_RENDERER: GL4ES wrapper
[    1.4176] I/GL::Context: GL_VERSION: 2.1 gl4es wrapper 1.1.5
[    1.4176] I/GL::Context: GL_SHADING_LANGUAGE_VERSION: 1.20 via gl4es
[    1.4177] E(CompileShader): Shader failed to compile:

[    1.5300] E(CreateResources): Failed to compile display shaders
[    1.5302] E(ReportError): Failed to create/initialize display render device
[    1.5302] E(Initialize): Failed to create host display
Program directory "/mnt/dbp/union/duckstation"
User directory: "/mnt/dbp/union/duckstation/.local/share/duckstation"
LIBGL: Initialising gl4es
LIBGL: v1.1.5 built on Aug  1 2021 19:39:11
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax  detected and used
LIBGL: Extension GL_EXT_draw_buffers  detected and used
LIBGL: FBO are in core, and so used
LIBGL: PointSprite are in core, and so used
LIBGL: CubeMap are in core, and so used
LIBGL: BlendColor is in core, and so used
LIBGL: Blend Substract is in core, and so used
LIBGL: Blend Function and Equation Separation is in core, and so used
LIBGL: Texture Mirrored Repeat is in core, and so used
LIBGL: Extension GL_OES_mapbuffer  detected
LIBGL: Extension GL_OES_element_index_uint  detected and used
LIBGL: Extension GL_OES_packed_depth_stencil  detected and used
LIBGL: Extension GL_OES_depth24  detected and used
LIBGL: Extension GL_OES_rgb8_rgba8  detected and used
LIBGL: Extension GL_EXT_multi_draw_arrays  detected
LIBGL: Extension GL_EXT_texture_format_BGRA8888  detected and used
LIBGL: Extension GL_OES_depth_texture  detected and used
LIBGL: Extension GL_EXT_texture_rg  detected and used
LIBGL: Extension GL_OES_texture_float  detected and used
LIBGL: Extension GL_OES_texture_half_float  detected and used
LIBGL: Extension GL_OES_fragment_precision_high  detected and used
LIBGL: Extension GL_EXT_shader_texture_lod detected and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives  detected and used
LIBGL: Max texture size: 4096
LIBGL: Max Varying Vector: 8
LIBGL: Texture Units: 8/8 (hardware: 8), Max lights: 8, Max planes: 6
LIBGL: Max Color Attachments: 4 / Draw buffers: 4
LIBGL: Hardware vendor is Imagination Technologies
LIBGL: EGLImage to Texture2D supported
LIBGL: EGLImage to RenderBuffer supported
LIBGL: Targeting OpenGL 2.1
LIBGL: NPOT texture handled in hardware
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: FBO workaround for using binded texture enabled
LIBGL: Force texture for Attachment color0 on FBO
LIBGL: Hack to trigger a SwapBuffers when a Full Framebuffer Blit on default FBO is done
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/mnt/dbp/union/duckstation/.local/share/duckstation
DRI3 1.0
present 1.2
DRM FD 8
LIBGL: Shuting down
asimov@asimov-pyra:~$
This is what I get when running from cli:
 
There are, and I allready put the PlayStation Directory right, but some games like Afterburner and the Final Fantasy Games ditnt got to the Game List..
Maybe there are some active filters like the Region or PAL/NTSC ?

Another guess could be that because every PSX game is identified by a unique code, the emulator may show only the games that are certified to run ?
Or maybe it has a DB that doesn't contain the specific versions of your games ?

This site should list the IDs of all the available games (the link is for PAL, but at the top of the page there are also NTSC lists):
 
Anyway, I’m happy that it’s work, it’s just a few steps more for the other games..
but it’s would be much better if the emulator would save the last directory..
 
It is crashing for me. No blank screen or anything. It just stays in the desktop.
Code:
asimov@asimov-pyra:~$ dbp-run-path /media/asimov/SD16/dragonbox/packages/duckstation-0.0.1.02.dbp
--------------------------------------------------------------
Setting PATH to /mnt/dbp/union/duckstation:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
--------------------------------------------------------------
Setting HOME to /mnt/dbp/union/duckstation
[    0.0494] I/SDLControllerInterface: Loading game controller mappings from '/mnt/dbp/union/duckstation/database/gamecontrollerdb.txt'
LIBGL: ERROR: EGL Error detected: EGL_BAD_ATTRIBUTE
LIBGL: No EGL configs found.
LIBGL: ERROR: EGL Error detected: EGL_BAD_CONFIG
[    1.3772] I/GL::Context: Created a OpenGL context
[    1.4175] I/GL::Context: GL_VENDOR: ptitSeb
[    1.4176] I/GL::Context: GL_RENDERER: GL4ES wrapper
[    1.4176] I/GL::Context: GL_VERSION: 2.1 gl4es wrapper 1.1.5
[    1.4176] I/GL::Context: GL_SHADING_LANGUAGE_VERSION: 1.20 via gl4es
[    1.4177] E(CompileShader): Shader failed to compile:

[    1.5300] E(CreateResources): Failed to compile display shaders
[    1.5302] E(ReportError): Failed to create/initialize display render device
[    1.5302] E(Initialize): Failed to create host display
Program directory "/mnt/dbp/union/duckstation"
User directory: "/mnt/dbp/union/duckstation/.local/share/duckstation"
LIBGL: Initialising gl4es
LIBGL: v1.1.5 built on Aug  1 2021 19:39:11
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax  detected and used
LIBGL: Extension GL_EXT_draw_buffers  detected and used
LIBGL: FBO are in core, and so used
LIBGL: PointSprite are in core, and so used
LIBGL: CubeMap are in core, and so used
LIBGL: BlendColor is in core, and so used
LIBGL: Blend Substract is in core, and so used
LIBGL: Blend Function and Equation Separation is in core, and so used
LIBGL: Texture Mirrored Repeat is in core, and so used
LIBGL: Extension GL_OES_mapbuffer  detected
LIBGL: Extension GL_OES_element_index_uint  detected and used
LIBGL: Extension GL_OES_packed_depth_stencil  detected and used
LIBGL: Extension GL_OES_depth24  detected and used
LIBGL: Extension GL_OES_rgb8_rgba8  detected and used
LIBGL: Extension GL_EXT_multi_draw_arrays  detected
LIBGL: Extension GL_EXT_texture_format_BGRA8888  detected and used
LIBGL: Extension GL_OES_depth_texture  detected and used
LIBGL: Extension GL_EXT_texture_rg  detected and used
LIBGL: Extension GL_OES_texture_float  detected and used
LIBGL: Extension GL_OES_texture_half_float  detected and used
LIBGL: Extension GL_OES_fragment_precision_high  detected and used
LIBGL: Extension GL_EXT_shader_texture_lod detected and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives  detected and used
LIBGL: Max texture size: 4096
LIBGL: Max Varying Vector: 8
LIBGL: Texture Units: 8/8 (hardware: 8), Max lights: 8, Max planes: 6
LIBGL: Max Color Attachments: 4 / Draw buffers: 4
LIBGL: Hardware vendor is Imagination Technologies
LIBGL: EGLImage to Texture2D supported
LIBGL: EGLImage to RenderBuffer supported
LIBGL: Targeting OpenGL 2.1
LIBGL: NPOT texture handled in hardware
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: FBO workaround for using binded texture enabled
LIBGL: Force texture for Attachment color0 on FBO
LIBGL: Hack to trigger a SwapBuffers when a Full Framebuffer Blit on default FBO is done
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/mnt/dbp/union/duckstation/.local/share/duckstation
DRI3 1.0
present 1.2
DRM FD 8
LIBGL: Shuting down
asimov@asimov-pyra:~$
This is what I get when running from cli:
gl4es is from 1 of August 2021. That seems a bit old to me. Is your system up-to-date?
 
gl4es is from 1 of August 2021. That seems a bit old to me. Is your system up-to-date?
I fear not. I opened another thread in support because GPG signature fails for pyra repositories, I guess that's causing the problem.
 
Got it working. Just did a 5 minute test and noticed that it does not list .bin images.

Besides that detail, the emulator has a lot of nice features. If ptitSeb improves gl4es to the point it makes the hardware renderer possible, this emulator will be amazing.
 
And don’t forget that the Audio Issue also eats a lot of power at the moment, so whit GLES and Audio over its Hardware Chip it should run much better ..
Images that aren’t listet can be played over (Start Image) , but needs some more steps as you have to go the whole path from the Apdata of the Emulator, to your Rom Directory..
 
Looking at matzesu's video, most of his games seemed to have bin and cue but there were some that weren't listed in the game listing. The ones he gavigated to using the start game filer seemed to have both though, so I'm not sure why he had to do that.

I also noticed that despite putting analogue mode on, his steering in the F1 game seemed rather digital. Perhaps that's just his playing style however.
 
Back
Top