This is an old revision of the document!
Sony PlayStation
The PlayStation (frequently referred to in shorthand as the PS1, PSOne or its codename PSX, not to be confused with the actual PSX) is a fifth generation console released by Sony Computer Entertainment on December 3, 1994 in Japan and September 9, 1995 in the US. It was retailed for $299.99. It had a R3000 CPU (which was used by NASA for a space craft to take pictures of Mars because of its reliability) at 33.8688 MHz with 2MB of RAM and 1MB of VRAM. It used a proprietary MDEC video compression unit, which is integrated into the CPU, allowing for playback of full motion video at a higher quality than other consoles of its generation. It also had a superior digital-to-analog converter than most CD players at the time.
It was a commercial success, partly due to Sony encouraging third-party developers with affordable dev-kits, being relatively easy to program for (compared to others at the time) and because its CD-based media was cheaper than the competition.
Quick reference table
| Emulators | Folder | Accepted ROM formats | BIOS files | BIOS required? | Configuration via |
|---|---|---|---|---|---|
| DuckStation | psx | .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso | psxonpsp660.bin scph101.bin scph1001.bin scph5500.bin scph5501.bin scph5502.bin scph7001.bin | Optional, some games require | EmulationStation and duckstation-config |
| Libretro/mednafen psx | psx | .cue .pbp .toc .m3u .ccd .chd | psxonpsp660.bin scph5500.bin scph5501.bin scph5502.bin | Optional, some games require | EmulationStation and RetroArch |
| Libretro/PCSX ReARMed | psx | .bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd | psxonpsp660.bin scph101.bin scph1001.bin scph5501.bin scph7001.bin | Optional, some games require | EmulationStation and RetroArch |
| Libretro/SwanStation | psx | .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso | psxonpsp660.bin scph101.bin scph1001.bin scph5500.bin scph5501.bin scph5502.bin scph7001.bin | Optional, some games require | EmulationStation and RetroArch |
BIOS
The BIOS files aren't strictly required for emulation, but can dramatically improve compatibility and accuracy. As a replacement for any of the first 3 BIOS files mentioned above, it is also possible to use the PSXONPSP660.bin BIOS. This BIOS comes from the PSP, is region-free and can sometimes offer better performance. Their md5 checksums and expected paths are as follows:
c53ca5908936d412331790f4426c6c33 bios/psxonpsp660.bin Extracted from a PSP 6e3735ff4c7dc899ee98981385f6f3d0 bios/scph101.bin Version 4.4 03/24/00 dc2b9bf8da62ec93e868cfd29f0d067d bios/scph1001.bin Version 2.0 05/07/95 8dd7d5296a650fac7319bce665a6a53c bios/scph5500.bin PS1 JP BIOS 490f666e1afb15b7362b406ed1cea246 bios/scph5501.bin Version 3.0 11/18/96 PS1 US BIOS 32736f17079d0b2b7024407c39bd3050 bios/scph5502.bin PS1 EU BIOS 1e68c231d0896b7eadcad1d7d8e76129 bios/scph7001.bin Version 4.1 12/16/97
ROMs
PlayStation ROMs typically come in the modern .cue/.bin format. The .cue sheets contain the metadata of where the 'data tracks' on the disc are physically located, and the .bin files are the actual data. They must retain the same filename (the .cue file is just a text file that points to the .bin file) and be in the same directory to function together. When loading PSX ROMs, be sure to select the .cue file, not the .bin file. Some games may work (with glitches) with just the .bin file loaded, but most don't. Refer to CD image formats for more info.
Older PlayStation ROMs may have been ripped in .iso image format, which is a direct representation of the data on the disc. Some emulators are incompatible with this format. This format typically only allows loading the first .bin file, and no others. In order to properly use the ROM like this, get the .img file and pair it with its CUE sheet. There are tools that can do this automatically for you.
.pbp is a proprietary format made by Sony to store PlayStation games (even multi-disc ones) in a compressed format for their PS1-on-PSP downloadable content games. There are tools to convert to and from this format. Using this format is not recommended as it can cause issues with certain games.
The .cue and .bin files are combined when compressed into a CHD file, so only the .chd file needs to be present and loaded. This is the recommended format.
Place your Sony PlayStation ROMs in /userdata/roms/psx/.
Playing PAL copy-protected games
PAL copy protected games need a SBI subchannel file next to the .bin/.cue/.chd files in order to get past the copy-protection. For example:
Game (Europe).bin Game (Europe).cue Game (Europe).sbi
For proper PAL game compatibility, DuckStation should be set to show the BIOS animation, PCSX-ReARMED should be set to skip the BIOS animation (unless using a real BIOS) and Mednafen should be set to skip the BIOS animation (unless using a real BIOS).
Multi disc games
To automatically load the next disc of a game, you can use a .m3u playlist file. To make one, simply create a text file with the same filename as your intended game name (it could be anything, really). Within that text file, write the names of the .cue sheets or .chd files for your game discs. For instance, if your game's .cue sheets were structured like
roms/ └─ psx/ ├─ Final Fantasy VII (Disc 1).cue ├─ Final Fantasy VII (Disc 1).bin ├─ Final Fantasy VII (Disc 2).cue ├─ Final Fantasy VII (Disc 2).bin ├─ Final Fantasy VII (Disc 3).cue └─ Final Fantasy VII (Disc 3).bin
you would put the following as text into the Final Fantasy VII.m3u text file:
- Final Fantasy VII.m3u
Final Fantasy VII (Disc 1).cue Final Fantasy VII (Disc 2).cue Final Fantasy VII (Disc 3).cue
Save the text file with the file extension .m3u and place it in the psx folder along with the game's discs. When you get to the end of that disc, the next disc will be automatically loaded. If this fails, you can utilize Retroarch's 'Disc Control' menu in the Quick Menu (Hotkey+South button in-game) to eject a disc and insert another (Swap Disc is for legacy purposes and should not be used). Refer to multi-disc games for more info.
Emulators
DuckStation
DuckStation is focused on playability, speed, and long-term maintainability. The goal of the emulator is to be as accurate as possible while maintaining performance on a broad range of devices. “Hack” options are discouraged, and the default configuration should support all playable games with only some of the enhancements having compatibility issues. 64-bit CPUs are required for recompiler support for maximum performance.
Batocera uses the latest standalone version of Duckstation. Performs well on lower end x86_64 systems.
Configuration
ES option name and batocera.conf line | Description | Recommendation |
|---|---|---|
VULKAN THREADED psx.duckstation_threadedpresentation | Turns on threaded rendering for Vulkan. Presents frames on a background thread when fast-forward or V-sync is disabled. Considerably improves performance. | ON 1 If using V-sync, only improves fast-forward so it is safe to leave it on. |
VSYNC psx.duckstation_vsync | Turns on V-sync to avoid screen tearing. Introduces a negligible amount of input delay. Significant performance cost. | 1 Only should be disabled if experiencing slowdown. |
FRAME SKIP psx.duckstation_frameskip | Skips frames to improve performance. Values: 0 for off, 1 for on. | 0 Can cause motion sickness if enabled, only use if the game is unplayable without it. |
SHOW BIOS BOOTLOGO psx.duckstation_PatchFastBoot | Enhancement. Skips the BIOS boot animation. Some games require the animation to function correctly, most can skip it fine. 1 to skip, 0 to show. | 0 Duckstation uses the official BIOS, some games look for this specific animation before booting. |
VIDEO RESOLUTION psx.duckstation_resolution_scale | Enhancement. Multiplies the internal rendering resolution. Extreme performance cost. Values: 1 through 16. | 1 for native, higher for a clearer image. |
ANTI-ALIASING (MSAA/SSAA) psx.duckstation_antialiasing | Enhancement. Applies MSAA or SSAA to smooth out jagged edges on 3D object polygons. Most noticeable at lower resolutions. Does not affect textures. The sharp edges of polygons are usually masked by the blurry video output of the PSX, but digital displays may feature them more prominently. This can alleviate that. The PSX does not have any native anti-aliasing. Enabling this can cause rendering errors. Cheaper than multiplying the rendering resolution, but not by much. Values: 1 for native, 2 for 2x MSAA, 4 for 4x MSAA, 8 for 8x MSAA up to 32 for 32x MSAA. Then, 2-ssaa for 2x SSAA, 4-ssaa for 4x SSAA up to 32-ssaa for 32x SSAA. | 1 for an authentic experience, higher values for clearer 3D objects. |
TEXTURE FILTERING psx.duckstation_texture_filtering | Enhancement. Applies texture filtering to all textures. Minimal performance cost. Values: Nearest for native, Bilinear, BilinearBinAlpha for bilinear (no edge blending), Jinc2, Jinc2BinAlpha, xBR or xBRBinAlpha. | Nearest for an authentic experience, Bilinear for a “neutral” improvement (think N64), xBR/Jinc2 for smart upscaling (subjective improvement). |
CROP MODE psx.duckstation_CropMode | Zooms in the display to hide black borders. Not all PSX games have the same sized black borders. Values: None, Overscan, Borders. | Overscan, unless you know the game has thicker borders than usual. |
WIDESCREEN HACK psx.duckstation_widescreen_hack | Enhancement. Widescreen hack. Very glitchy. Only works when using a 16:9 video mode and with bezels (decorations) disabled. 0 for disabled, 1 for enabled. | 0 Recommended to use game patches instead. Some games natively support 16:9 in their in-game options. |
CONSOLE REGION psx.duckstation_region | Changes the region of the emulated console. Region-locking is disabled so setting this isn't necessary, but some games will run at weird framerates if using out-of-region consoles. Values: PAL, NTSC-U or NTSC-J. | Auto, as in delete the line. Duckstation will detect and switch to the right region unless specified otherwise. |
FORCE 60HZ psx.duckstation_60hz | Enhancement. Forces 50Hz PAL games to run at 60Hz. Has issues with certain games that tie framerate to logic, but most games (ones that use a variable FPS) should be fine. | 0 |
CUSTOM TEXTURES psx.duckstation_custom_textures | Enhancement. Uses the hi-res texture pack for the game, if any. 0 for off, normal to load from disk as needed, preload to load textures into RAM first (increases boot time). | 0, though safe to leave on if no texture pack is present. |
RUMBLE psx.duckstation_rumble | Activates rumble on supported controllers. Requires the Dualshock controller, Namco GunCon or NeGcon and a compatible game. | 1 Safe to leave enabled. |
DPAD TO JOYSTICK psx.duckstation_digitalmode | Activates Joystick to D-pad, allowing the Joystick to function as a virtual D-pad. Useful for games that only support the digital controller. 1 to enable. | 0 Turn on for games that use digital only. |
MULTITAP psx.duckstation_multitap | Enables multitap for the specified port(s). Values: Disabled, Port1Only, Port2Only or BothPorts. | Disabled, not all games utilized it and may have issues with it on. Generally safe to leave on for port 2, though. |
CONTROLLER 1 TYPE psx.duckstation_Controller1 | Refer to Controls. Values: None, DigitalController, AnalogController, AnalogJoystick, NamcoGunCon, PlayStationMouse or NeGcon. | DigitalController, unless you know your game supports a later controller. |
CONTROLLER 2 TYPE psx.duckstation_Controller2 | Same as above but for port 2. | Same as above. |
Other configuration settings must be configured from within Duckstation's standalone emu-config (F1 on the systems menu > Applications).
Libretro/Mednafen PSX
Beetle PSX is a standalone fork of Mednafen PSX to the Libretro API. Offers a lot of options to enhance graphics and geometry. Highly recommended for x86_64 systems with a decent GPU.
Configuration
ES option name and batocera.conf line | Description | Recommendation |
|---|---|---|
SHOW BIOS BOOTLOGO psx.beetle_psx_skip_bios | Enhancement. Skip the BIOS animation when starting content. | disabled. Can be enabled but some games may have issues, notably copy protected PAL games. |
OVERCLOCKING (HEAVY CPU) psx.beetle_psx_cpu_freq_scale | Enhancement. Enable overclocking (or underclocking) of the emulated PSX's CPU. The default frequency of the MIPS R3000A-compatible 32-bit RISC CPU is 33.8688 MHz; running at higher frequencies can eliminate slowdown and improve frame rates in certain games at the expense of increased performance requirements. Values: 50%, 60%, 70% all the way up to 160%. Exception: 100%(native). | 100%(native). Overclocking can lead to audio and video desynchronization on certain games, underclocking can improve performance on weak devices. |
VIDEO RESOLUTION psx.beetle_psx_internal_resolution | Enhancement. Increases the rendering resolution for 3D geometry. 2D elements are generally unaffected by this setting from the core's perspective. Significant performance cost. Values: 1x(native), 2x, 4x, 8x or 16x. | 1x(native). Although not exact, set to 4x for 1080p resolution. |
WIDESCREEN HACK psx.beetle_psx_widescreen_hack | Enhancement. Forces content to be rendered with an aspect ratio of 16:9. Produces best results with fully 3D games. Can cause graphical glitches or alignment/stretching issues in games that mix 3D and 2D elements. | disabled Recommended to use game patches instead. Some games natively support 16:9 in their in-game options. |
FRAME DUPING (SPEED UP) psx.beetle_psx_frame_duping | Enhancement. When enabled, provides a small performance increase by redrawing/reusing the last rendered frame (instead of presenting a new one) if the content of the current frame is unchanged based on the internal fps heuristic. | disabled, enabling may cause inaccurate behavior or lost animation frames. |
CPU DYNAREC (SPEED UP) psx.beetle_psx_cpu_dynarec | Dynamically recompile CPU instructions to native instructions. Much faster than interpreter, but CPU timing is less accurate, and may have bugs. Extreme performance cost if disabled. Values: disabled for native interpreter, execute for max performance, execute_once for cycle-timing check or run_interpreter for lightrec interpreter. | disabled, only enable if on a weak device. |
DYNAREC CODE INVALIDATION psx.beetle_psx_dynarec_invalidate | Switches between full invalidation mode and DMA only mode. DMA only mode is slightly faster, however some games require full invalidation to run correctly. This option has no effect when beetle_psx_cpu_dynarec is not enabled. Values: full or dma | full, only use dma on weak devices. |
MULTITAP psx.multitap_mednafen | Enables/Disables multitap functionality and allows up to 8 players. Values: disabled, port1, port2, port12 for two multi-taps. | disabled, not all games utilized it and may have issues with it on. Generally safe to leave on for port 2, though. |
CONTROLLER 1 TYPE psx.beetle_psx_controller1 | Refer to Controls. Values: 1 for digital controller, 261 for analog controller, 517 for dualshock controller, 773 for analog flystick, 260 for Namco GunCon, 1029 for neGcon or 258 for PlayStation Mouse. | 1, unless you know your game supports a later controller. |
CONTROLLER 2 TYPE psx.beetle_psx_controller2 | Same as above but for port 2. | Same as above. |
Other configuration settings must be configured from RetroArch's Quick Menu (Hotkey+
).
Libretro/PCSX ReARMed
PCSX ReARMed is an optimized PCSX fork for ARM based systems like the Raspberry Pi, but also works on x86.
Configuration
ES option name and batocera.conf line | Description | Recommendation |
|---|---|---|
SHOW BIOS BOOTLOGO psx.show_bios_bootlogo | Shows the BIOS boot animation when starting the game. In PCSX ReARMed, this can cause some games to break when turned on. | disabled PCSX uses an emulated BIOS by default, running this emulated BIOSs' animation can cause some games to malfunction. Games that require the proper BIOS animation require an official BIOS present. |
FRAMESKIP psx.frameskip_pcsx | Skip frames to improve performance. Can cause motion sickness if set to high values. Values: 0, 1, 2 or 3. | 0, can cause motion sickness if set high. Only use if the game is unplayable without it. |
ENHANCED RESOLUTION (SLOWER) psx.neon_enhancement | Enhancement. Doubles the internal rendering resolution. Extreme performance cost. Values: disabled, enabled or enabled_with_speedhack. | disabled for native, enabled if your system is strong enough. enabled_with_speedhack is not recommended as it can cause glitches. |
MULTITAP psx.multitap_pcsx | Enables multitap on the selected port. Values: disabled, port1, port2 or port12 for both ports. | disabled, most games don't utilize multitap, but is generally safe to leave in port2. |
ADDITIONAL GAME FIXES psx.game_fixes_pcsx | Enables a per-game fix. Values: Capcom_fighting, Chrono_Chross, Dark_Forces, Diablo_Music, Lunar, InuYasha_Sengoku, Pandemonium or Parasite_Eve. | Auto, as in erase the line. This shouldn't need to be changed if the game has been successfully scraped. |
CONTROLLER 1 TYPE psx.controller1_pcsx | Refer to Controls. Values: 1 for digital, 261 for analog controller, 517 for dualshock controller, 260 for Namco GunCon, 773 for neGcon, 258 for PlayStation Mouse. | 1 unless you know your game supports a later controller. |
CONTROLLER 2 TYPE psx.controller2_pcsx | Same as above but for port 2. | 1 As above. |
Other configuration settings must be configured from RetroArch's Quick Menu (Hotkey+
).
libretro/SwanStation
SwanStation is the libretro version of the standalone emulator DuckStation.
SwanStation shares its configuration with Duckstation, but omits threaded_presentation, vsync, frameskip, region, custom_textures, rumble, digital_mode and multitap (correct as of v31). These settings can still be adjusted with RetroArch's Quick Menu (Hotkey+
).
Controls
The PlayStation had many types of controllers throughout its life, starting with the digital controller which only had a D-pad, face buttons and shoulder buttons, then the Analog controller which added two joysticks to the center and finally the DualShock which added vibration. A game needs to explicitly support a controller to function with it, most supported at least the digital controller. The Analog and Dualshock controller had an “Analog” button to switch between being its native self or a virtual digital controller so it could function with older games; this is generally not emulated yet so the best recommendation is to stick with digital controllers unless you know your game explicitly supports a later one. By default, Batocera will enable Joystick to D-pad so that the joystick will function as a virtual D-pad.
The PlayStation also had alternative controllers such as the dance mat (same as the digital controller) or the analog joystick (same as the analog controller). Other controllers such as the Namco GunCon, the neGcon or the PlayStation Mouse would use their own interface, requiring the game to specifically support it.
The default button mapping to the PSX controller is as follows:
- systems/psx.1631532259.txt.gz
- Last modified: 5 years ago
- by atari


