New PlayStation1 core DuckStation now available for RetroArch!


Stenzek’s new PlayStation1 emulator DuckStation is now available as a Libretro core on RetroArch! The author of this promising new PlayStation1 emulator made the core by himself and has included it in his upstream repo.

DuckStation is a totally new PlayStation 1 (aka PSX) emulator focusing on playability, speed, and long-term maintainability. Accuracy is not the main focus of the emulator, but the goal is to be as accurate as possible while maintaining performance suitable for low-end devices. “Hack” options are discouraged, the default configuration should support all playable games with only some of the enhancements having compatibility issues. A “BIOS” ROM image is required to start the emulator and to play games. You can use an image from any hardware version or region, although mismatching game regions and BIOS regions may have compatibility issues. A ROM image is not provided with the emulator for legal reasons, you should dump this from your own console using Caetla or other means. DuckStation includes hardware rendering (OpenGL, Vulkan and D3D11), upscaling and 24-bit color and a 64-bit dynarec.

It is currently available on the Libretro buildbot for the following platforms:

  • Windows
  • Linux
  • Android (AArch64-only)

As soon as a commit is pushed on Stenzek’s repository, the libretro buildbot will compile a new build, and it should from there be available shortly for all RetroArch users.

Features

  • Relatively high degree of compatibility
  • Has three hardware renderers: OpenGL, Vulkan, and Direct3D11
  • Allows you to internally upscale the resolution
  • Has a dynamic recompiler and cached interpreter CPU core
  • Ability to run PSX CDROM emulation on a separate thread, reducing frame time spikes
  • How to get it

    There are two ways to install and/or update the DuckStation core:

    a – If you have already installed the core before, you can go to Online Updater and select ‘Update Installed Cores’.

    b – If you haven’t installed the core yet, go to Online Updater, ‘Core Updater’, and select ‘Sony – PlayStation (DuckStation)’ from the list. It will then download and install this core.

    BIOS required

    DuckStation, like Beetle PSX, requires a real BIOS in order to work. There is no HLE BIOS like PCSX ReARMed.

    A “BIOS” ROM image is required to start the emulator and to play games. You can use an image from any hardware version or region, although mismatching game regions and BIOS regions may have compatibility issues. A ROM image is not provided with the emulator for legal reasons, you should dump this from your own console using Caetla or other means.

    Recognized BIOS images:

    • scph5500.bin
    • scph5501.bin
    • scph5502.bin

    Benchmarks

    System specs: CPU – Intel Core i7 7700k | GPU – Geforce RTX 2080 Ti (11GB VRAM, 2018) | 16GB RAM

    We’ve performed some basic performance tests between DuckStation and Beetle PSX HW. We are using the same baseline resolution (1x) for both cores, and we try to make the test as fair as possible by disabling features such as PGXP and texture filtering for Beetle PSX HW (both features which DuckStation lacks).

    DuckStation

    Title Direct3D11 Vulkan OpenGL
    Tekken 3 396fps 414fps 335fps
    Alien Trilogy 538fps 552fps 499fps

    Beetle PSX HW

    NOTE: Beetle PSX HW does not have a Direct3D 11 renderer

    Title Vulkan OpenGL
    Tekken 3 326fps 229fps
    Alien Trilogy 480fps 473fps

    As you can see, on average performance is overwhelmingly in DuckStation’s favor. It does have to be said that Beetle PSX HW right now has some unique features that DuckStation lacks, such as PGXP and texture replacement.

    Conclusion

    You should definitely give DuckStation a go if you want a high performance PlayStation1 emulator. If you find Beetle PSX HW to be running too slowly for you on your system, you should check if DuckStation is faster instead.

Beetle PSX HW – Experimental texture replacement now available!

DISCLAIMER: Libretro as a group or entity has no affiliation or involvement in the creation of assets contained in any texture pack

So this has been a project that has been cooking in the oven for about a year in the form of a bounty. The goal is to come up with a way to not only dump all the textures of a PlayStation1 game, but also to replace them with user-supplied textures.

Doing this is hard with PlayStation renderers due to the general low level of abstraction of these renderers, which is why it’s not exactly a commonplace feature in many PS1 emulators.

So far we have let it cook slowly in the oven. However, the recent release of people preparing a Proof Of Concept demo in the form of a Chrono Cross texture pack and the circulation of a modified Beetle PSX HW core that adds support for custom texture injection has led us to make the decision to include this feature already in the buildbot cores rather than wait it out. We hope by doing this, that this feature can organically grow and that more people start taking an active interest in making their own texture packs this way for their own favorite content. Libretro is all about enabling people the power and freedom to do what they want with their legally bought content, after all.

Requirements/Availability

Should only require the Vulkan renderer and a graphics card that is compatible with the Vulkan API. Will not work with either OpenGL or software rendering.

Android, Linux and Windows are all supported targets.

How to get it

The usual. Either you have Beetle PSX HW already installed, in which case you would just go to RetroArch’s Online Updater and select ‘Update Cores’. In case you don’t have it already installed, go to ‘Online Updater’, select ‘Core Updater’ or ‘Core Downloader’ (depends on the version of RetroArch you’re using), and then download Beetle PSX HW.

Explanation of core options

Two new core options have been added.

Dump Textures

While the game is running, it will dump all current active textures it comes across to a directory. The name of this folder is [gamename]-texture-replacements, and it will dumped inside the same dir that your content (ISO or other image format) comes from.

Replace Textures

It will attempt to use all HD textures from the ‘texture-replacements’ directory. The name of this folder is [gamename]-texture-replacements, and it will try to read this directory from the same dir that your content (ISO or other image format) comes from.

NOTE: Later on, we might add another option that allows you to point the dumping and injection path to somewhere else. Right now this is a problem for instance when you have your content stored on a slow disk device like a HDD but you want your texture replacement files to be read from your much faster but smaller SSD instead. Right now, you are forced to move the image to your SSD as well, because otherwise it just dumps and/or reads these texture replacement files from the same dir as the image, in this case the mechanical harddrive.

How to make it work

Make sure you have the textures extracted already in your [ganename]texture-replacements dir, and make sure that the dir is in the same dir that your game content file (ISO or other image format) comes from.

Start Beetle PSX HW, make sure that you are using the Vulkan renderer (it won’t work with either the software renderer or GL renderer), and then make sure the ‘Replace Textures’ option is enabled.

If it works properly, you’ll start seeing low-resolution textures replaced by higher-resolution ones.

Screenshots

Future

We hope to provide you with an article in the near future that goes into how to create your own texture pack for a game.

Is the format set in stone? Is it complete? Probably no to both. It is a Work-In-Progress. However, we hope that by putting it out there already, the community can already start experimenting with the option, putting it through its paces, and see what its limitations are and how far it can be pushed.