PlayStation (Beetle PSX HW)¶
Last Updated: March 21, 2020
Beetle PSX HW is a port/fork of Mednafen's PSX module to the libretro API. It can be compiled in C++98 mode, excluding the Vulkan renderer, which is written in C++11 for the time being. Beetle PSX HW currently runs on Linux, OSX and Windows.
Notable additions in this fork are:
- PBP and CHD file format support, developed by Zapeth;
- Software renderer internal resolution upscaling, implemented by simias;
- An OpenGL 3.3 renderer, developed by simias;
- A Vulkan renderer, developed by TinyTiger;
- PGXP perspective correct texturing and subpixel precision, developed by iCatButler;
The Beetle PSX HW core has been authored by
The Beetle PSX HW core is licensed under
A summary of the licenses behind RetroArch and its cores have found here.
- OpenGL 3.3 for the opengl renderer
- Vulkan for the vulkan renderer
Required or optional firmware files go in the frontend's system directory.
|scph5500.bin||PS1 JP BIOS - Required for JP games||8dd7d5296a650fac7319bce665a6a53c|
|scph5501.bin||PS1 US BIOS - Required for US games||490f666e1afb15b7362b406ed1cea246|
|scph5502.bin||PS1 EU BIOS - Required for EU games||32736f17079d0b2b7024407c39bd3050|
Content that can be loaded by the Beetle PSX HW core have the following file extensions:
RetroArch database(s) that are associated with the Beetle PSX HW core:
Frontend-level settings or features that the Beetle PSX HW core respects.
|Crop Overscan *||✕|
* Overscan cropping available via Core Options instead of frontend settings
The Beetle PSX HW core's library name is 'Beetle PSX HW'
The Beetle PSX HW core saves/loads to/from these directories.
Frontend's Save directory
- Memory cards
Frontend's State directory
Geometry and timing¶
- The Beetle PSX HW core's core provided FPS is 59.826 for NTSC games and 49.761 for PAL games (non-interlaced rates) and is toggleable to 59.940 for NTSC games and 50.000 for PAL games (interlaced rates) through core options
- The Beetle PSX HW core's core provided sample rate is 44100 Hz
- The Beetle PSX HW core's base width is 320
- The Beetle PSX HW core's base height is 240
- The Beetle PSX HW core's max width is 700 when the 'Internal GPU resolution' is set to 1x. Raising the resolution past 1x will increase the max width
- The Beetle PSX HW core's max height is 576 when the 'Internal GPU resolution' is set to 1x. Raising the resolution past 1x will increase the max height
- The Beetle PSX HW core's core provided aspect ratio is automatically set based on core options
Beetle PSX HW needs a cue-sheet that points to an image file. A cue sheet, or cue file, is a metadata file which describes how the tracks of a CD or DVD are laid out.
If you have e.g.
foo.bin, you should create a text file and save it as
foo.cue. Most PS1 games are single-track, so the cue file contents should look like this:
1 2 3
FILE "foo.bin" BINARY TRACK 01 MODE1/2352 INDEX 01 00:00:00
After that, you can load the
foo.cue file in RetroArch with the Beetle PSX HW core.
Certain PS1 games are multi-track, so their .cue files might be more complicated.
Playing PAL copy protected games¶
PAL copy protected games need a SBI Subchannel file next to the bin/cue files in order to get past the copy protection.
- Ape Escape (Europe).bin
- Ape Escape (Europe).cue
- Ape Escape (Europe).sbi
For proper PAL game compatibility, the 'Skip BIOS' core option needs to be set to off.
If foo is a multiple-disk game, you should have .cue files for each one, e.g.
foo (Disc 1).cue,
foo (Disc 2).cue,
foo (Disc 3).cue.
To take advantage of Beetle PSW HW's Disk Control feature for disk swapping, an index file (a m3u file) should be made.
Create a text file and save it as
foo.m3u. Then enter your game's .cue files on it. The m3u file contents should look something like this:
1 2 3
foo (Disc 1).cue foo (Disc 2).cue foo (Disc 3).cue
After that, you can load the
foo.m3u file in RetroArch with the Beetle PSX HW core.
Here's a m3u example done with Valkryie Profile
Adding multi-track games to a RetroArch playlist is recommended. (Manually add an entry a playlist that points to
Disks can be swapped through Quick Menu -> Disk Control in RetroArch.
If not using .m3u files, .cue files must be manually selected via the Load New Disk legacy feature.
If using .m3u files, disks can be swapped by selecting Eject Disk, changing the Current Disk Index to your desired disk, and finally selecting Insert Disk.
Alternatively to using cue sheets with .bin/.iso files, you can convert your games to .pbp (Playstation Portable update file) or .chd (MAME Compressed Hunks of Data) to reduce file sizes and neaten up your game folder.
A recommended .pbp convert tool is PSX2PSP.
If converting a multiple-disk game, all disks should be added to the same .pbp file, rather than making a .m3u file for them.
Most conversion tools will want a single .bin file for each disk. If your game uses multiple .bin files (tracks) per disk, you will have to mount the cue sheet to a virtual drive and re-burn the images onto a single track before conversion.
For multi-disk PAL copy-protected games, change the sbi file syntax from
- Final Fantasy IX (Germany).pbp
- Final Fantasy IX (Germany)_1.sbi
- Final Fantasy IX (Germany)_2.sbi
- Final Fantasy IX (Germany)_3.sbi
- Final Fantasy IX (Germany)_4.sbi
RetroArch does not currently have .pbp database due to variability in users' conversion methods. All .pbp games will have to be added to playlists manually.
To convert content to CHD format, use the chdman tool found inside the latest MAME distribution and point it to a .cue file, like so:
chdman createcd --input foo.cue --output foo.chd
Note that the tool currrently does not integrate .sbi files into the .chd, so these must be placed alongside the resulting .chd file in order to properly play games with LibCrypt protection.
For multi-disc content, make an .m3u file that lists all the .chd files instead of .cue files. Like the PBP files, content must be added to playlists manually.
For game savedata storage, the PSX console used memory cards. The PSX console had two slots for memory cards.
In this doc, the first memory card slot will be referred to as 'Memcard slot 0' and the second slot will be referred to as 'Memcard slot 1'.
For memory card functionality and usage, the Beetle PSX HW core will either use the Libretro savedata format or the Mednafen savedata format.
|Libretro savedata format||Mednafen savedata format|
By default, the Beetle PSX HW core will use Libretro's savedata format for Memcard slot 0 and Mednafen's savedata format for Memcard slot 1.
|Memcard slot 0||Memcard slot 1|
Memory card behavior can be controlled with the following core options (Memcard 0 method, Enable memory card 1, Shared memcards).
By default, the filenames of the Memcard savedata will match the loaded cue or m3u or pbp filename, like this:
Loaded content: Breath of Fire III (USA).cue
Memcard slot 0: Breath of Fire III (USA).srm
Memcard slot 1: Breath of Fire III (USA).1.mcr
Loaded content: Final Fantasy VII (USA).m3u
Memcard slot 0: Final Fantasy VII (USA).srm
Memcard slot 1: Final Fantasy VII (USA).1.mcr
Loaded content: Wild Arms 2 (USA).pbp
Memcard slot 0: `Wild Arms 2 (USA).srm
Memcard slot 1: `Wild Arms 2 (USA).1.mcr
To import your old memory cards from other emulators, you need to rename them to either the Libretro (.srm) savedata format or the Mednafen (.mcr) savedata format. The Libretro (.srm) savedata format, when used with Beetle PSX, is internally identical to the Mednafen PSX (.mcr) savedata format, and can be converted between one another via renaming.
Keep in mind that save states also include the state of the memory card; carelessly loading an old save state will OVEWRITE the memory card, potentially resulting in lost saved games. You can set the 'Don't overwrite SaveRAM on loading savestate' option in RetroArch's Saving settings to On to prevent this.
The Beetle PSX HW core has the following options that can be tweaked from your frontend's core options menu or manually changed via core configuration files. Options are listed below in the following format:
Option Name [option_key] (setting1/setting2/...)
To manually change an option, search for that option's key in the core configuration file you want to edit and set it to your desired setting value, enclosed in quotations. For example, if you had set the Internal Color Depth to 32bpp and wanted to revert it to 16bpp, you would change
beetle_psx_hw_depth = "32bpp" to
beetle_psx_hw_depth = "16bpp(native)". Manually editing core configuration files is typically unnecessary unless your frontend does not have a method for toggling options.
The default setting for each option will be highlighted in bold. Settings with (Restart) means that core has to be shut down for the new setting to be applied on next launch.
Renderer (Restart) [beetle_psx_hw_renderer] (hardware/hardware_gl/hardware_vk/software)
Chooses which video renderer will be used.
Software is the most accurate but generally has higher performance requirements when running at internal GPU resolutions higher than 1x. The software renderer also lacks certain enhancements exclusive to the hardware renderer.
Hardware is less accurate but may have improved performance over the software renderer at internal GPU resolutions of 2x and above on capable hardware. The hardware renderers also allow various graphical enhancements such as higher color depth, texture filtering, and PGXP. Choosing hardware will automatically select either the Vulkan or OpenGL renderer depending on the current libretro frontend video driver. If the provided frontend video driver is not Vulkan or OpenGL (3.3 or higher) then the core will fall back to the software renderer at 1x internal resolution.
hardware_gl and hardware_vk allow the core to ignore the frontend preferred hardware context and attempt to force a specific hardware renderer. If the core is unable to do so, it will fall back to the software renderer at 1x internal resolution. The ability to force specific renderers may not be available on all platforms.
The hardware renderers have known issues -- check the compatibility section below or the core's issue tracker for more details.
Software Framebuffer [beetle_psx_hw_renderer_software_fb] (enabled/disabled)
Allows accurate emulation of framebuffer readback effects (e.g. motion blur, FF7 battle swirl, etc.) when using the hardware renderer. If disabled, certain operations are omitted or rendered on the GPU, which can improve performance but may cause graphical errors or cause stuttering.
Leave enabled if unsure.
Internal GPU Resolution [beetle_psx_hw_internal_resolution] (1x(native)/2x/4x/8x/16x)
Selects internal resolution multiplier.
Resolutions higher than 1x(native) improve the fidelity of 3D models at the expense of increased performance requirements. 2D elements are generally unaffected by this setting from the core's perspective.
Internal GPU Resolution - 1x
Internal GPU Resolution - 2x
Internal Color Depth [beetle_psx_hw_depth] (16bpp(native)/32bpp)
The PSX has a limited color depth of 16 bits per pixel (bpp). This leads to banding effects (uneven color gradients) which are smoothed out by original hardware through the use of a dithering pattern. The '16bpp(native)' setting emulates the original 16bpp color depth. Selecting '32 bpp' increases the color depth such that smoother gradients can be achieved without dithering, allowing for a cleaner undithered output.
Note the visible horizontal bands on an undithered 16bpp image compared to the same undithered image at 32bpp:
This option should be toggled in conjunction with the Dithering Pattern option.
The software renderer is locked to 16bpp while the Vulkan renderer will automatically set render at 16bpp if dithering is enabled and 32bpp if dithering is disabled.
Dithering Pattern [beetle_psx_hw_dither_mode] (1x(native)/internal resolution/disabled)
Select dithering pattern.
Dithering is used by the original PSX hardware to combat the color banding visible due to 16bpp color depth. This option is less necessary and can be disabled if the Internal Color Depth option is set to '32bpp'.
'1x(native)' emulates original hardware but can look grainy at higher internal resolutions.
'internal resolution' reduces graininess by allowing for finer dithering at higher Internal GPU Resolutions, but has limited effectiveness in combating color banding if the Internal GPU Resolution is set too high. (Note in the examples below that the 'internal resolution' option is less grainy but has more visible banding than '1x(native)' at 4x Internal GPU Resolution)
'disabled' is useful to pair with '32bpp' Internal Color Depth where banding is far less visible or for users who otherwise wish to turn off dithering regardless of color banding at 16bpp.
Dithering Pattern - 1x Native (16bpp 4x IR)
Dithering Pattern - Internal Resolution (16bpp 4x IR)
Dithering Pattern - Disabled (16bpp 4x IR)
Texture Filtering [beetle_psx_hw_filter] (nearest/SABR/xBR/bilinear/3-point/JINC2)
Choose per-texture filtering method.
Texture filters can modify or enhance the appearance of 3D polygon textures and 2D elements. 'Nearest' emulates original hardware. 'Bilinear' and '3-Point' are smoothing filters, which reduce pixelation via blurring. 'SABR', 'xBR' and 'JINC2' are upscaling filters, which improve texture fidelity/sharpness at the expense of increased performance requirements.
Adaptive Smoothing [beetle_psx_hw_adaptive_smoothing] (disabled/enabled)
Enable smoothing of 2D artwork and UI elements without blurring 3D rendered objects.
Adaptive smoothing - Off
Adaptive smoothing - On
Supersampling (Downsample to Native Resolution) [beetle_psx_hw_super_sampling] (disabled/enabled)
When enabled, renders content at the specified Internal GPU Resolution then downsamples the resulting image to native 240p before shaders and resizing are applied by the frontend. Allows games to be displayed at native (low) resolution but with clean anti-aliased 3D objects. Produces best results when applied to titles that mix 2D and 3D elements such as 3D characters on pre-rendered backgrounds. This option is not to be confused with implicit supersampling provided by rendering at a higher Internal GPU Resolution multiplier then downsampling to the frontend's window scale.
Supersampling from 1x Internal Resolution with CRT Royale Shader
Supersampling from 8x Internal Resolution with CRT Royale Shader
Multi-Sampled Anti Aliasing [beetle_psx_hw_msaa] (1x/2x/4x/8x/16x)
Apply multi-sample anti-aliasing (MSAA) to rendered content. This is a type of spatial anti-aliasing similar to supersampling, but of somewhat lower quality and with (correspondingly) lower performance requirements. Improves the appearance of 3D objects. MSAA may be clamped internally at a lower value than what it is set at when running at higher Internal GPU Resolutions.
MDEC YUV Chroma Filter [beetle_psx_hw_mdec_yuv] (disabled/enabled)
Improves the quality of FMV playblack by smoothing the chroma channel when converting YcBcR to RGB. This reduces macroblocking artefacts (squares/jagged edges) as shown below:
MDEC YUV Chroma Filter On/Off Comparison
Wireframe Mode [beetle_psx_hw_wireframe] (disabled/enabled)
Renders 3D polygons models in outline form without textures or shading.
For debug use only. Leave off for normal usage.
Wireframe mode - On
Display Full VRAM [beetle_psx_hw_display_vram] (disabled/enabled)
Visualizes full contents of the emulated PSX VRAM.
For debug use only. Leave off for normal usage.
Display full VRAM - On
PGXP Operation Mode [beetle_psx_hw_pgxp_mode] (disabled/memory only/memory + CPU)
Enabling the Parallel/Precision Geometry Transform Pipeline (PGXP) allows polygons to be rendered with subpixel precision, eliminating or otherwise diminishing the polygon jitter/wobble visible on original PSX hardware. This distortion results from original hardware using fixed point mathematics when rendering 3D models, thus rounding polygon vertices to the nearest integer pixel.
'disabled' emulates original hardware behavior.
'memory only' mode enables subpixel precision at the cost of increased performance requirements with only minor compatibility issues. 'memory + CPU' mode can further reduce jitter but is highly demanding and is known to cause geometry errors. 'memory only' is recommended for best compatibility.
PGXP Vertex Cache [beetle_psx_hw_pgxp_vertex] (disabled/enabled)
Allows PGXP-enhanced polygon vertex coordinates to be cached when PGXP Operation Mode is also enabled. This option improves performance by allowing subpixel-accurate values to be used across successive polygon draws instead of rebasing from native PSX data each time. Allows for better object alignment and may reduce visible seams, but false positives when querying the cache produces graphical glitches in most games. Recommended to leave disabled.
PGXP Perspective Correct Texturing [beetle_psx_hw_pgxp_texture] (disabled/enabled)
Allows for perspective correct texturing when PGXP Operation Mode is also enabled. Original PSX hardware renders 3D objects with affine texture mapping where texture coordinates are interpolated between polygon vertices in 2D screen space with no consideration of object depth. This causes significant position-dependent distortion and/or blending of textures such as warped lines across floors and walls. PGXP Perspective Correct Texturing accounts correctly for vertex positions in 3D space thereby eliminating this texture distortion at the expense of increased performance requirements.
PGXP Texturing - Off
PGXP Texturing - On
Display Internal FPS [beetle_psx_hw_display_internal_fps] (disabled/enabled)
Displays the frame rate that the emulated PSX is drawing at. Requires onscreen notifications to be enabled in the libretro frontend. Reported values may be inaccurate.
Display internal FPS - On
Line-to-Quad Hack [beetle_psx_hw_line_render] (default/aggressive/disabled)
Certain games employ a special technique for drawing horizontal lines, which involves stretching single-pixel-high triangles across the screen in a manner that causes the PSX hardware to rasterise them as a row of pixels. Examples include Doom/Hexen, and the water effects in Soul Blade. When running such games with an Internal GPU Resolution higher than native, these triangles no longer resolve as a line, causing gaps to appear in the output image.
Setting 'Line-to-Quad Hack' to 'Default' solves this issue by detecting small triangles and converting them as required.
The 'Aggressive' option will likely introduce visual glitches due to false positives, but is needed for correct rendering of some 'difficult' titles (e.g. Dark Forces, Duke Nukem).
Frame Duping (Speedup) [beetle_psx_hw_frame_duping] (disabled/enabled)
Software Renderer and Vulkan only
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. May cause inaccurate behavior or lost animation frames, so it is not recommended to use this unless necessary.
CPU Dynarec [beetle_psx_hw_cpu_dynarec] (disabled/execute/execute_once/run_interpreter)
Dynamically recompile CPU instructions to native instructions. Much faster than interpreter, but CPU timing is less accurate, and may have bugs.
Dynarec Code Invalidation [beetle_psx_hw_dynarec_invalidate] (full/dma)
Some games require Full invalidation, some require DMA Only. This option has no effect when CPU Dynarec is not enabled.
Dynarec DMA/GPU Event Cycles [beetle_psx_hw_dynarec_eventcycles] (128/256/384/512/640/768/896/1024)
Max cycles run by CPU before a GPU or DMA Update is checked, higher number will be faster, has much less impact on beetle interpreter than dynarec. Leave at 128 for default Beetle interpreter behavior when CPU Dynarec is not enabled.
CPU Frequency Scaling (Overclock) [beetle_psx_hw_cpu_freq_scale] (50% to 750% in increments of 10%. Default: 100%(native))
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.
Note that some games have an internal frame rate limiter and may not benefit from overclocking. It is generally not recommended to adjust this setting as it causes many games or portions of them to run at unintended speeds. This can lead to audio and video desynchronization, among other issues.
Leave at default for most games.
GTE Overclock [beetle_psx_hw_gte_overclock] (disabled/enabled)
When enabled, reduces the latency of operations involving the emulated PSX's Geometry Transform Engine (CPU coprocessor used for calculations related to 3D projection - i.e. all 3D graphics) to 1 cycle per instruction and additionally eliminates all memory access or cache fetch latency. For games that make heavy use of the GTE, this can greatly improve frame rate (and frame time) stability at the expense of increased performance requirements.
Currently unstable -- leave off if unsure.
GPU Rasterizer Overclock [beetle_psx_hw_gpu_overclock] (1x(native)/2x/4x/8x/16x/32x)
Enables overclocking of the 2D rasterizer contained within the emulated PSX's GPU. Does not improve 3D rendering, and in general has little effect.
Skip BIOS [beetle_psx_hw_skip_bios] (disabled/enabled)
When enabled, skips the PSX BIOS animation normally displayed with starting content.
Enabling this option will cause compatibility issues with a small minority of games (Saga Frontier, PAL copy protected games, etc).
Skip BIOS - Off
Core-Reported FPS Timing [beetle_psx_hw_core_timing_fps] (force_progressive/force_interlaced/auto_toggle)
Sets FPS timing that the core will report to the frontend. Automatic toggling will allow the core to switch between reporting progressive and interlaced rates, but may cause frontend video/audio driver reinits. Progressive timings are 59.826 for NTSC content and 49.761 for PAL content, and interlaced timings are 59.940 for NTSC content and 50.000 for PAL content.
Core Aspect Ratio [beetle_psx_hw_aspect_ratio] (corrected/uncorrected/4:3)
Set core provided aspect ratio. This setting is ignored when the Widescreen Mode Hack or Display Full VRAM options are enabled. "4:3" forces the core aspect ratio to 4:3 without taking horizontal overscan cropping or visible scanlines into account. The "4:3" setting should not be used and is only provided as a legacy feature for users desiring old incorrect behavior from the core.
Widescreen Mode Hack [beetle_psx_hw_widescreen_hack] (disabled/enabled)
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. Leave off for most games.
Widescreen mode hack - Off
Widescreen mode hack - On
Crop Horizontal Overscan [beetle_psx_hw_crop_overscan] (enabled/disabled)
By default, Beetle PSX includes horizontal padding (black bars or 'pillarboxes' on either side of the screen) to emulate the same black bars generated in analog video output by real PSX hardware. This horizontal padding can contain garbage pixels that are generated when the game's width mode is smaller than the display area width in the emulated GPU registers. Enabling 'Crop Horizontal Overscan' will remove this potentially glitchy horizontal overscan region.
Not all games will benefit from enabling this setting as shown in the examples below.
Crop Overscan - Off (Game with Garbage Pixels)
Crop Overscan - On (Game with Garbage Pixels)
Crop Overscan - Off (Game with No Issues)
Crop Overscan - On (Game with No Issues)
This option does not affect vertical overscan. Vertical overscan can be cropped using the Initial/Last Scanline core options.
Additional Cropping [beetle_psx_hw_image_crop] (disabled/1px/2px/3px/4px/5px/6px/7px/8px)
Software Renderer Only
When 'Crop Horizontal Overscan' is enabled, this option further reduces the width of the cropped image by the specified number of pixels.
Note: This can have unintended consequences. While the absolute width is reduced, the resultant video is still scaled to the currently set aspect ratio. Enabling 'Additional Cropping' may therefore cause horizontal stretching.
Offset Cropped Image [beetle_psx_hw_image_offset] (disabled/-4px/-3px/-2px/-1px/+1px/+2px/+3px/+4px)
Software Renderer Only
When 'Crop Horizontal Overscan' is enabled, allows the resultant cropped image to be offset horizontally to the right (positive) or left (negative) by the specified number of pixels. May be used to correct alignment issues.
Horizontal Image Offset (GPU Cycles) [beetle_psx_hw_image_offset_cycles] (-24 to +24 in increments of 1. Default: 0)
Horizontally offsets the outputted image by the specified number of GPU timing cycles. Currently only for the hardware renderers and functions like 'Offset Cropped Image', but at a finer granularity and does not require 'Crop Horizontal Overscan' to be enabled for this option to have an effect.
Initial Scanline - NTSC [beetle_psx_hw_initial_scanline] (0 to 40 in increments of 1. Default: 0)
Selects the first displayed scanline when running NTSC content. Setting a value greater than 0 will reduce the height of output images by cropping pixels from the topmost edge. May be used to counteract letterboxing built in to some games.
Last Scanline - NTSC [beetle_psx_hw_last_scanline] (210 to 239 in increments of 1. Default: 239)
Selects the last displayed scanline when running NTSC content. Setting a value less than 239 will reduce the height of output images by cropping pixels from the bottommost edge. May be used to counteract letterboxing built in to some games.
Initial Scanline - PAL [beetle_psx_hw_initial_scanline_pal] (0 to 40 in increments of 1. Default: 0)
Selects the first displayed scanline when running PAL content. Setting a value greater than 0 will reduce the height of output images by cropping pixels from the topmost edge. May be used to counteract letterboxing built in to some games.
Last Scanline - PAL [beetle_psx_hw_last_scanline_pal] (230 to 287 in increments of 1. Default: 287)
Selects the last displayed scanline when running PAL content. Setting a value less than 287 will reduce the height of output images by cropping pixels from the bottommost edge. May be used to counteract letterboxing built in to some games.
CD Access Method (Restart) [beetle_psx_hw_cd_access_method] (sync/async/precache)
Selects method used to read data from content disc images.
'sync' emulates original hardware.
'async' can alleviate stuttering on devices with slow storage.
'precache' loads the entire disc image into memory when starting content, incurring a small startup delay. This can improve in-game loading times and eliminate stutters due to emulated CD access, but may cause issues on systems with low memory.
CD Loading Speed [beetle_psx_hw_cd_fastload] (2x(native)/4x/6x/8x/10x/12x/14x)
Selects disk access speed multiplier.
This speedhack can greatly reduce loading times at speeds higher than native but is known to introduce texture corruption errors, timing glitches, or loading screen softlocks in many titles. Some games will not work at all if loading speed is not set to native (e.g. Castlevania: Symphony of the Night).
Reduce multiplier value if experiencing loading issues, freezes, etc.
Memory Card 0 Method (Restart) [beetle_psx_hw_use_mednafen_memcard0_method] (libretro/mednafen)
Choose the savedata format used for Memory Card 0. See the Saves section above for an explanation regarding the libretro and mednafen formats. libretro is recommended, but mednafen may be used for compatibility with the standalone version of Mednafen. The libretro (.srm) and Mednafen (.mcr) formats are internally identical when used with Beetle PSX.
Note: This option must be set to 'mednafen' if the Shared Memcards option is enabled.
Enable Memory Card 1 (Restart) [beetle_psx_hw_enable_memcard1] (enabled/disabled)
Selects whether to emulate a second memory card in Slot 1. When disabled, games can only access the memory card in Slot 0.
Note: Some games require this option to be disabled for correct operation (e.g. Codename Tenka).
Shared Memory Cards (Restart) [beetle_psx_hw_shared_memory_cards] (disabled/enabled)
When enabled, games will save and load using the same memory card files. Note: The "Memcard 0 Method" option must be set to 'mednafen' for this option to function properly.
When disabled, separate memory card files will be generated for each title.
This option is useful for games in series such as Suikoden or Arc the Lad that check for save data from previous titles.
|Memcard slot 0||Memcard slot 1|
Analog Self-Calibration [beetle_psx_hw_analog_calibration] (disabled/enabled)
When enabled, monitors the max values reached by the input, using it as a calibration heuristic which then scales the analog coordinates sent to the emulator accordingly. For best results, rotate the sticks at max amplitude for the algorithm to get a good estimate of the scaling factor, otherwise it will adjust while playing.
While modern analog sticks have circular logical ranges, older analog sticks such as those on the DualShock have logical ranges closer to squares and can report larger values at the intercardinal directions than modern analog sticks can. Games that expect these larger values will have issues controlling with modern analog sticks, which this option can solve by scaling modern analog stick values up.
Enable DualShock Analog Mode Toggle [beetle_psx_hw_analog_toggle] (disabled/enabled)
When the input device type is set to DualShock, this option determines whether or not the Analog Button on that device can be toggled.
When this option is disabled, the DualShock input device will be locked in Analog Mode where the analog sticks are on.
When this option is enabled, the DualShock input device can be toggled between Digital Mode (analog sticks off) and Analog Mode (analog sticks on) much like real hardware by pressing and holding START+SELECT+L1+L2+R1+R2 for one second in lieu of a dedicated Analog Button.
Note: Some games may not respond to input when the DualShock is in Analog Mode. Either enable Analog Button Toggle and toggle the DualShock to Digital Mode or change your input device type to PlayStation Controller.
Port 1: Multitap Enable [beetle_psx_hw_enable_multitap_port1] (disabled/enabled)
Enables/Disables multitap functionality on port 1.
Port 2: Multitap Enable [beetle_psx_hw_enable_multitap_port2] (disabled/enabled)
Enables/Disables multitap functionality on port 2.
Gun Input Mode [beetle_psx_hw_gun_input_mode] (lightgun/touchscreen)
When device type is set to 'Guncon / G-Con 45' or 'Justifier', specify whether to use a mouse-controlled 'Light Gun' or 'Touchscreen' input.
Gun Cursor [beetle_psx_hw_gun_cursor] (cross/dot/off)
Selects the gun cursor to be displayed on screen while using the the 'Guncon / G-Con 45' and 'Justifier' input device types. When disabled, cross hairs are always hidden.
Gun Cursor - Cross
Gun Cursor - Dot
Gun Cursor - Off
Mouse Sensitivity [beetle_psx_hw_mouse_sensitivity] (5% to 200% in increments of 5%. Default: 100%)
Configure the response of the 'Mouse' input device type.
NegCon Twist Response [beetle_psx_hw_negcon_response] (linear/quadratic/cubic)
Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.
'linear': Analog stick displacement is mapped linearly to negCon rotation angle.
'quadratic': Analog stick displacement is mapped quadratically to negCon rotation angle. This allows for greater precision when making small movements with the analog stick.
'cubic': Analog stick displacement is mapped cubically to negCon rotation angle. This allows for even greater precision when making small movements with the analog stick, but 'exaggerates' larger movements.
A linear response is not recommended when using standard gamepad devices. The negCon 'twist' mechanism is substantially different from conventional analog sticks; linear mapping over-amplifies small displacements of the stick, impairing fine control. A linear response is only appropriate when using racing wheel peripherals.
In most cases, the 'quadratic' option should be selected. This provides effective compensation for the physical differences between real/emulated hardware and is the closest approximation of real hardware, enabling smooth/precise analog input.
NegCon Twist Deadzone [beetle_psx_hw_negcon_deadzone] (0%/5%/10%/15%/20%/25%/30%)
Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.
Most (all?) negCon compatible titles provide in-game options for setting a 'twist' deadzone value. To avoid loss of precision, the in-game deadzone should always be set to zero. Any analog stick drift should instead be accounted for by configuring the 'NegCon Twist Deadzone' core option. This is particularly important when 'NegCon Twist Response' is set to 'quadratic' or 'cubic'.
Xbox gamepads typically require a deadzone of 15-20%. Many Android-compatible bluetooth gamepads have an internal 'hardware' deadzone, allowing the deadzone value here to be set to 0%.
For convenience, it is recommended to make use of the 'Options → Analog Setting 1P' menu of Gran Turismo when calibrating the 'NegCon Twist Deadzone'. This provides a clear and precise representation of 'real' controller input values.
User 1 - 8 device types¶
The Beetle PSX HW core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s):
- None - Input disabled.
- PlayStation Controller - Joypad - PlayStation Controller (SCPH-1080)
- DualShock - Joypad - DualShock (SCPH-1200)
- Analog Controller - Joypad - PlayStation Dual Analog Controller(SCPH-1180)
- Analog Joystick - Joypad - PlayStation Analog Joystick (SCPH-1110)
- Guncon / G-Con 45 - Lightgun - Namco Gun Controller (SLEH-00007)
- Justifier - Lightgun - Konami Justifier lightgun peripheral (SLEH-00005, SLUH-00017)
- Mouse - Mouse - PlayStation Mouse (SCPH-1090, SCPH-1030)
- neGcon - Joypad - Namco third party controller
Rumble only works in the Beetle PSX HW core when
- The content being ran has rumble support.
- The frontend being used has rumble support.
- The joypad device being used has rumble support.
- The corresponding user's device type is set to DualShock
|User 1 - 8 input descriptors||RetroPad Inputs||PlayStation Controller Inputs||DualShock Inputs||Analog Controller Inputs||Analog Joystick Inputs||neGcon Inputs|
|Cross||Analog button I|
|Square||Analog button II|
|D-Pad Up||D-Pad Up|
|D-Pad Down||D-Pad Down|
|D-Pad Left||D-Pad Left|
|D-Pad Right||D-Pad Right|
|L1||Left shoulder button (analog)|
|R1||Right shoulder button (digital)|
|L2||Analog button II|
|R2||Analog button I|
|Left Analog X||X||Left Joystick X||Twist|
|Left Analog Y||Y||Left Joystick Y|
|Right Analog X||X||Right Joystick X|
|Right Analog Y||Y||Right Joystick Y|
|RetroMouse Inputs||Mouse Inputs|
|Mouse Cursor||Mouse Cursor|
|Mouse 1||Mouse Left Button|
|Mouse 2||Mouse Right Button|
|RetroLightgun Inputs||Guncon / G-Con 45 Inputs||Justifier Inputs|
|Gun Crosshair||Guncon / G-Con 45 Crosshair||Justifier Crosshair|
|Gun Trigger||Guncon / G-Con 45 Trigger||Justifier Trigger|
|Gun Reload||Guncon / G-Con 45 Reload||Justifier Reload|
|Gun Aux A||Guncon / G-Con 45 A||Justifier Aux|
|Gun Aux B||Guncon / G-Con 45 B|
|Gun Start||Justifier Start|
Expect bugs with hardware renderer enhancements.
When using the run-ahead latency reduction feature, the "second instance" setting will break the hardware renderer.
Hardware renderer currently has a number of issues with interlacing shaders and outputting on CRTs. Use the software renderer for the time being.
A list of known emulation bugs when using the software renderer can be found here https://forum.fobby.net/index.php?t=msg&th=1114&start=0&
Issue tracker for the hardware renderer can be found here https://github.com/libretro/beetle-psx-libretro/issues
- Official Mednafen Website
- Official Mednafen Downloads
- Beetle PSX HW Libretro Core info file
- Beetle PSX HW Libretro Github Repository
- Report Beetle PSX HW Core Issues Here