Retroarch psx command line

Retroarch psx command line DEFAULT

Playstation 1


The PlayStation is a 5th generation video game console released by Sony in 1994.

EmulatorRom FolderExtensionBIOSController Config
lr-pcsx_rearmedpsx.cue .cbn .chd .img .iso .m3u .mdf .pbp .toc .z .znxpsxonpsp660.bin scph101.bin scph7001.bin scph5501.bin scph1001.bin/opt/retropie/configs/psx/retroarch.cfg
PCSX-ReARMedpsx.cue .cbn .img .iso .m3u .mdf .pbp .toc .z .znxSCPH1001.BIN/opt/retropie/configs/psx/pcsx.cfg
lr-beetle-psxpsx.cue .ccd .chd .exe .iso .m3u .pbp .tocscph5500.bin scph5501.bin scph5502.bin/opt/retropie/configs/psx/retroarch.cfg
lr-duckstationpsx.exe .cue .bin .chd .psf .m3u .pbpany valid BIOS dumps/opt/retropie/configs/psx/duckstation.cfg

Emulators: lr-pcsx_rearmed, PCSX-ReARMed, lr-beetle-psx, lr-duckstation.


Recommended for Raspberry Pi 2-4. The features of RetroArch combined with PCSX-ReARMed's excellent Dynamic Recompiler allow for an adequate PlayStation emulation experience, though expect some inaccurate emulation.


Recommended for Raspberry Pi 0/1 due to its lower system requirements, though expect some inaccurate emulation. Additionally, setting the resolution via Runcommand to a low 4:3 resolution is recommended for faster emulation and correct aspect ratio, though 480i (CEA-6) is the lowest recommended 4:3 CEA resolution due to CEA-2 causing visual issues and CEA-1 causing the system to lock up entirely.


Recommended for more powerful x86 systems. It is accurate and includes several enhanced graphical features. Not available for ARM systems (like the Raspberry Pi) due to its poor performance on ARM.


Experimental but promising fast, accurate emulation, including various graphial enhancements. Supported on all architectures aside from ARMv6 (Raspberyy Pi 0/1) and 32-bit x86.


Accepted File Extensions: .cue .ccd .chd .exe .iso .m3u .pbp .toc

Place your PlayStation ROMs in

Only ROMs

If you only have a ROM and no file, generate it via:

ECM Compression

If your PSX game has an extension, it's a compressed file that needs to be extracted.

Directly on RetroPie, input to terminal:

Alternatively, on Windows, use ECM Decompressor, or on Ubuntu 19.X+(or derivative), install ecm from the ubuntu archive with the following:

CHD files

All supported PlayStation emulators have support for the CHD (V5) archive format. This is a lossless compression format which can be useful to tidy up multi-.bin ROMs into one file. See Creating CHDs from CD-ROMS.

Multi-Disc Games

.pbp format ROMs can package together multiple discs in one file. To change the disc through RetroArch, from the "Quick Menu", enter "Disk Control", use the "Disk Cycle Tray Status" to open the virtual disk tray, change the disk number to the correct one, then use the "Disk Cycle Tray Status" to close the virtual disk tray.

M3U playlists for .cue & .bins, or .chds

For multi-disc games on .cue & .bin ROM pairs or .chds, you can create a .m3u playlist file to enable you to change discs by the above method. Replace the or extension for each disc of the game with an appropriate , , etc so that EmulationStation will list only the and not the individual discs. NOTE:lr-duckstation does not support extension renaming within .m3u playlists.

Example for Final Fantasy VII:

Folder Structure:

Final Fantasy VII (USA).m3u's Text Contents:


Place BIOS in

While both lr-pcsx_rearmed and PCSX-ReARMed have an emulated BIOS to fall back on, it has limited compatibility so most games will have issues running with it (or not work at all), and all games that use memory card saves are prone to save corruption. It should be considered mandatory to manually install an official BIOS.


The following BIOS are supported:

Recognized NameRedump NameCRC32MD5

If more than one of the BIOS above is provided, then the latest revision of the BIOS available is automatically chosen. Note: psxonpsp660.bin is a BIOS dumped from the PSP's PlayStation emulator. It is said to improve performance for certain PlayStation games as is a streamlined version of the BIOS, lacking irrelevant features like the built-in CD Player and Memory Card manager.

The recognized name can be all uppercase OR all lowercase.


The following BIOS is supported:

Recognized NameRedump NameCRC32MD5

Place BIOS in

The recognized BIOS filename is case-sensitive (must be in all uppercase).


The following BIOS are supported:

Recognized NameRedump NameCRC32MD5

The BIOS is automatically chosen based upon the region of the ROM.

The recognized BIOS filename is case-sensitive (must be in all lowercase).


Any valid BIOS dump from real hardware is supported (too many to list). As such, any of the above BIOS dumps should be supported, when named appropriately with .bin extension.

The BIOS is automatically chosen based upon the region of the ROM.


lr-pcsx_rearmed, lr-beetle-psx & lr-duckstation Controls

lr-pcsx_rearmed and lr-beetle-psx utilize RetroArch configurations.

Add custom RetroArch controls to the retroarch.cfg file in

For more information on custom RetroArch controls see: RetroArch Configuration


PCSX-ReARMed Controls

PCSX-ReARMed controls and configurations are located in

You will need a keyboard to press Escape on to access the emulator's menu so that you can then configure your controller: a controller with a Home/Guide button that can be a dedicated Open Menu button is required to use this emulator with just a controller.

The Controller Problem: Digital-Only & Analog

A common issue people using RetroPie have with PSX emulation is their analog sticks do not work. The reason for this is related to a default lr-pcsx_rearmed core setting, and there is a very good reason the setting is the way it is that we will get into later.

Open the Quick Menu, select Controls and for Port 1 Controls and Port 2 Controls, change the Device Type from standard to dualshock. See Setting Core Options.

On the Controls page, select Save Core Remap File to save this setting as a default for all games.

After a complete exit back to EmulationStation, all games that should work with the analog sticks will function correctly, however, we have just created a problem: roughly 1/3 of the PSX library will no longer accept any input whatsoever.

The reason for the problem is due to the PSX originally being released with a controller that didn't have analog sticks. The games released for the system prior to the analog sticks being added to the controller only account for the standard controller: these games are generally referred to as Digital-Only games.

Unfortunately, this is a problem that doesn't have an easy solution. The reason the emulator was set the way it was is because it was 100% compatible even if it removed all analog functionality. If you want all your games with analog support to work correctly, you will have to manually fix the Digital-Only games one by one.

The process of fixing a Digital-Only game is to set per-ROM Core Options, changing Port 1 Device Type and Port 2 Device Type back to standard and then do Save Game Remap File. See Setting Core Options per-ROM.

(Optional) In Port (#) Controls, change all Analog to Digital Type settings from None to Left Analog, then do Save Game Remap File.

After a complete exit back to EmulationStation, the game you've manually fixed will function correctly plus you will be able to use the left analog stick for up to 8-way movement if you want to. Keep in mind the "Analog To Digital" step is completely optional and included for those that may want to still use an analog stick for movement in games that didn't support it originally.

For a decent list of which games are Digital-Only, check the spreadsheet and website found in the "Game Specific Control Information" section below.

The negcon setting found between pad type is for the NeGcon.

While this section does focus on lr-pcsx_rearmed, what is done in this section could be done in PCSX-ReARMed's menu as well if not visually different.

Game Specific Control Information

The main purpose of this section is for users to be able to identify Digital-Only games in their library and fix them as detailed above in the "The Controller Problem: Digital-Only & Analog"

If you have a limited input method such as an SNES-style controller or handheld, then the spreadsheet below will also help you figure out which games you will be able to play.

PSX - General Game Info

If you want to improve the spreadsheet, then request editing permission and you will be approved in a timely manner.

For a more complete resource, please check the PlayStation DataCenter.

Multitap (3-5 Players)

lr-pcsx_rearmed has support for multitap, but not all games read input when a multitap is connected, so a per-ROM Core Options file should be created for multitap compatible games. Set the Core Options for Pad 3 Type, Pad 4 Type (and so on, depending on how many players are supported by the game) to the relevant Controller Type that the game supports. See Setting Core Options per-ROM.



Performance - PSX CPU Clock

The clock speed percentage of the emulated PSX hardware's CPU can be adjusted by the user. While the default setting of 57 is decent, it does cause some games to exceed their intended frame rate and the setting of 55 is recommended to reduce this from happening in more games. Some games, such as "Final Fantasy 7" and "Final Fantasy Tactics", may need even lower CPU speeds. See Setting Core Options per-ROM.

Performance - Disable Vibration

Vibration is known to cause slowdown in some games. Disabling vibration in-game (if possible) is recommended if you notice this happen, or don't have a controller with vibration ability. See Setting Core Options.

Change Core Option Enable Vibration to disabled

Instances in-game where vibration occurs may still cause the slowdown even if vibration is disabled.

Video - Double Internal Resolution

lr-pcsx_rearmed has a Core Option Enhance Resolution (Slow) that improves graphical fidelity by doubling the normal resolution, producing a sharper 3D image, however all 2D bitmaps and texture maps retain their original resolution. It can present some (sometimes game-breaking) visual glitches. It should be used in tandem with the Enhanced Resolution (Speed Hack) for best performance, but this can increase the glitches. See Setting Core Options.

On a Pi 2 it can introduce performance issues, even with the speed hack, but on a Pi 3 and up it should be perform better, sometimes even without the speed hack. To disable these options for games which exhibit issues, or to only enable it for games that perform well, see Setting Core Options per-ROM.

Video - Disable Dithering

The PSX had a dithering trick that blended colors together in an attempt to make games look more colorful. On modern TVs this effect can be less desirable. To disable, set the Core Option Enable Dithering to disabled. See Setting Core Options.

Audio - Switch Interpolation to Gaussian

Some games like "Spyro: Year of the Dragon" have audio corruption issues using the default Core Option Sound: Interpolation value of simple. The alternative gaussian setting fixes audio issue with minimal cost to performance. See Setting Core Options.

Memory Card and Save State


Memory Card saves have the extension and are located in

A new memory card file with the same name as the ROM is created for each game as needed.


Memory Card saves are located in

Their naming convention is where 'X' is a number between 0 and 9. Numbers 0 and 1 represent the first 2 Memory Card slots respectively.

Save States are located in

Importing Save Files

On sites like GameFAQs you can find many save files for PlayStation games. Different emulators often use different save file formats, so you must convert such files to a suitable format.

One such tool is Memory Card Manager 1.4 by Aldo Vargas. Download this and , and run :

MemManager Screenshot

Press the New button at the bottom and create a file the same name as your PSX ROM. For example, if you are using or then call the new memory card file . Ensure you select the Other - AdriPSX, FPSE, pcsx format in the dropdown menu, then press Save.

Press the >< at the bottom of the window which opens a second pane on the right. In the new pane, press the ... at the top and open the save file you have downloaded. Hopefully you'll see valid memory card blocks, similar to what you'd see on an actual PSX. (some saves may not show expected/valid contents, in which case you're probably out of luck trying to use that save file, download a different one)

Click on the block in the right hand column you wish to import, and press the < arrow to copy it into your new memory card on the left-hand column. The screenshot above demonstrates the way to select the correct block and the correct button to press.

In your memory card on the left, click Save As and save over the blank card you just created.

Quit MemManager and rename your new memory card from to . Following our example above, we'd now have a file called . Copy this memory card file to your RetroPie ROMs directory.

The save file should now be available in your game.


RetroArch Controller Configuration

Retroarch Logo

RetroArch is the official front end for the libretro API. RetroArch and libretro provide a way to take an existing emulator and load that emulator as a library or "core". RetroArch then handles the input (controls) and output (graphics and audio) while the emulator core handles the emulation of the original system. With a few simple changes to the emulator source code, almost any existing emulator could become a libretro core.

In RetroPie, the libretro emulator cores are identified with a in front of their name. For example, is the libretro core of the SNES emulator called snes9x2010.

RetroArch and libretro provide ability to configure controllers once for many emulators instead of having to configure each emulator individually. However, RetroArch also provides the freedom to configure specific emulators individually and even individual games differently if the user wants. This allows a specific setting or button mapping for a certain console or even just for a certain game.

For emulators which are not libretro cores, there are emulator-specific configurations under the respective system's wiki page.

The RetroPad concept

When you configure your controller in EmulationStation, the RetroPie setup script automatically configures RetroArch with the same controls.

RetroArch controls map real-world controller buttons to a virtual controller called a "RetroPad". A RetroPad does not exist in real life, it's a concept only within RetroArch. A RetroPad has an ABXY layout like a SNES controller plus four shoulder buttons and dual analog sticks like a Sony DualShock.

You don't have to map all of the RetroPad buttons to a real world button. If your real controller has less buttons than a DualShock, then the virtual RetroPad also has less buttons, that's perfectly fine.

As RetroArch starts an emulator core, it maps the RetroPad configuration to the emulated system's original controls. The mapping for many consoles is represented by the pictures below and on each system's wiki page. If you wish, you can reconfigure this control mapping, either for all RetroArch, for a specific system, or even for a specific ROM.

Retroarch Controls

There are 3 main ways to configure input for RetroArch:


RetroArch controls have been integrated into EmulationStation and will be the first thing you see when you boot from the RetroPie SD image the first time. You can also access it from the start menu within EmulationStation under the Configure Input option. Your joypad is automagically configured for libretro (RetroArch) emulators when you configure your controller in EmulationStation. You'll know if your controller has been automagically configured if you see a flash of yellow text on the bottom of the screen with your gamepad ID when you start a game.

The following diagrams are for the 3 most common controllers: Super Nintendo, Xbox 360, and PlayStation 3. They can be used as a reference when configuring your controllers. Each emulator page on the wiki has a diagram of the original controller for its respective console that will correspond to the same inputs listed below.




After you've configured your controller the autoconfig will be created here:

This is an example config for a USB SNES controller

As seen above in the config for the USB SNES controller, each input on the controller has an associated value. When setting up the controller in EmulationStation, these values are then assigned a respective action on RetroArch.

For example, suppose the "A" button on a USB SNES controller has a value of "1." When setting up the controller, EmulationStation would prompt you to press the "A" button on your controller. Pressing the "A" button would then record into the config file as , so RetroArch will know that the "A" button on your physical controller corresponds to the "A" button on RetroArch's virtual controller, the RetroPad. Therefore, the next time you play a game such as Super Mario Bros. pressing the "A" button will tell RetroArch to press the "A" button on its RetroPad, causing Mario to jump. If you accidentally pressed the "B" button with a value of "2" during setup when it prompted for "A," then it would be recorded into the config file as , so if you want to jump in Super Mario Bros., you would have to press "B" on your controller.


Hotkeys are combinations of buttons you can press in order to access options such as saving, loading, and exiting games. The following defaults are set automatically the first time you set up your controller from EmulationStation (the numbers will vary depending the controller you use).

Default joypad hotkeys:

HotkeysActionCode Example
SelectHotkeyinput_enable_hotkey_btn = "6"
Select+StartExitinput_exit_emulator_btn = "7"
Select+Right ShoulderSaveinput_save_state_btn = "5"
Select+Left ShoulderLoadinput_load_state_btn = "4"
Select+RightInput State Slot Increaseinput_state_slot_increase_btn = "h0right"
Select+LeftInput State Slot Decreaseinput_state_slot_decrease_btn = "h0left"
Select+XRGUI Menuinput_menu_toggle_btn = "3"
Select+BResetinput_reset_btn = "0"

Determining Button Values

If you want to edit the entries in the .cfg file for your controller, you will need to know the values corresponding to the buttons on your controller. Usually the relationship between the two can be deduced by looking at the file and noting the entries' names along with the values next to them, assuming that the values have not been jumbled from previous edits or been mixed up due to unknown issues. For example, the USB gamepad above has an entry for , indicating that the "X" button on the controller (or the button that you associated as "X" during controller setup in EmulationStation) has a value of "0."

On the other hand, maybe you are not sure if the values in the .cfg file is correct or the file is missing entries for buttons that are available on your own controller, such as a "Home" button. You can run jstest (joystick test) in the terminal by selecting Quit EmulationStation (a keyboard will be required for the following steps).

In the terminal, type and enter

Replace js0 with js1, js2, js3, etc. as needed if not detected.

A multitude of rows and columns should appear. Pressing buttons or moving analog sticks/joystick will cause various entries in the columns to swap between on and off and fluctuate through a range of numbers. The value next to an on/off entry corresponds to the button that you have pressed. The fluctuation of numbers from -32767 to 32767 correspond to the input on your controller that has a range of motion, such as analog sticks/triggers.

If you are interested in figuring out which is your "Select" button, pressing and holding "Select" on your controller will cause one column to switch from off to on. The value next to it corresponds to the "Select" button. If you have a controller with a "Home" button, pressing the "Home" button will also cause one column to switch from off to on. To exit jstest, press . To return to EmulationStation from the terminal, type and enter .

Using these values, you can edit the .cfg file for that controller as needed. For example, if you were interested in switching the your Hotkey button to a "Home" button available on your controller, you would edit , replacing "some number" with the value you found for your "Home" button in jstest.

Video Tutorial

Hardcoded Configurations

These configurations are manual edits you can make that are locked to a specific libretro core and controller. Hardcoded controls can be configured either globally, specific to the emulator core, or specific to an individual game.

Config Hierarchy

All RetroArch based emulators can be configured in the following way:

Global settings - that are settings which should apply to all systems - are done in the file:


System-specific settings are done in the files:


Here, SYSTEMNAME is , , etc. All settings in these files will override the corresponding global setting as long as they are placed above the line.

ROM-specific settings can be created in the runcommand menu and show up as configuration files by ROM title:


The includes the original file extension before the , e.g. These configurations are used when starting this specific ROM.

Custom RetroArch Override Examples

Example Default Per-System retroarch.cfg

Example Per-System Control Override retroarch.cfg

Note the values below are for one person's controller, your values may differ. Make sure that these values are placed above the line:

Example Per-ROM Override retroarch.cfg

Core Input Remapping

Core Input Remapping differs from the other two methods as it remaps how the core receives input rather than how the gamepad is coded, for example you can tell the snes core to switch button A and B on the controller for gameplay, but you can still use "A" to select in the RGUI and "B" to go back where as hard-coding would make B select and A back. Core Remapping is much more practical than hard-coded mapping but is limited to the cores that support it.

  • Start a game of the system you want to remap the buttons
  • Invoke RGUI (Hotkey+X with player 1)
  • Go to Quick Menu and then Controls
  • Configure the buttons the way you want
  • Select Save Core Remap File
  • OR, if you want to save this remapping for the current game only, select Save Game Remap File

Remaps are saved as files in directory:

Retroarch Controls Cheat-Sheet

Retroarch Controls Cheat-Sheet

Video Tutorials

Default Core Controls for All Emulators



Atari 2600


Atari Lynx




Gameboy Color


Gameboy Advance


Game Gear




Megadrive/Genesis (3 Button)


Megadrive/Genesis (6 Button)


Nintendo 64


Nintendo DS




Neo Geo


Neo Geo Pocket








Super Nintendo


Sega Saturn










Sega Dreamcast




  1. Haikyuu chapters
  2. Karaoke pitch perfect
  3. Instacart champaign il
  4. Lights cover ellie goulding


Mednafen (an acronym for My Emulator Doesn't Need A Frickin' Excellent Name, formerly Nintencer) is an open-source, multi-system emulator, driven from the command-line. Many of its cores are ports of other emulators, but many of them are also original. Its Sony PlayStation, Sega Saturn, Nintendo Virtual Boy, and NEC PC Engine (TurboGrafx-16) original cores are notable for their high quality, compatibility and accuracy.


Supported systems[edit]


The best cores in Mednafen are those that are original - which are the Sony PlayStation, NEC PC Engine, PC-FX, Sega Saturn and Nintendo Virtual Boy cores. The NEC PC Engine core is one of the best emulators for that system, with a Fast and Accurate version. The PlayStation core is native resolution only and features a high degree of accuracy and compatibility[1]. The Nintendo Virtual Boy core is one of the best for the system.

Other cores improve upon emulators that have been long abandoned and rarely updated. These include the SNK Neo Geo Pocket/Color, Bandai WonderSwan/Color, and Atari Lynx cores.

Other cores are less useful, as there are better options in stand-alone emulators (Nintendo Entertainment System, Sega Genesis, Master System, and Super Nintendo Entertainment System). These cores might even be based on out-dated versions. For instance, the Super Nintendo Entertainment System core is based on an old outdated version of bsnes. This is before the performance/accuracy/balanced cores — 0.50x territory — with a couple of changes by Ryphecha.

It is unknown at this time whether Mednafen's Nintendo Game Boy Advance core is better than VBA-M.

Mednafen's Sony PlayStation, NEC PC Engine (Fast, not Accurate, version), SNK Neo Geo Pocket/Color, Nintendo Virtual Boy, Sega Saturn and Bandai WonderSwan/Color emulators are all available as libretro cores under the name "Beetle", so it might make more sense to use RetroArch instead.

Using Mednafen[edit]

Officially Mednafen has only a command-line interface, that is nevertheless easy to configure and run for users familiar with it. Everyone else can use a third-party frontend for GUI. As with any type of interface a good text editor like Notepad++ can be used to change settings.


Most cores do not require any BIOS except for the Sony PlayStation, NEC PC Engine CD, PC-FX, and Sega Saturn cores. BIOS files need to be placed into a folder called "firmware" in your Mednafen directory. Mednafen is very picky about which BIOS to use, but all of these come with the Mednafen BIOS pack and are correctly named. The ones that you might need are:

Sony PlayStation

  • SCPH5500.bin - (NTSC-J) Required for Japan-region games.
  • SCPH5501.bin - (NTSC-U) Required for North America/US-region games.
  • SCPH5502.bin - (PAL) Required for Europe-region games.

NEC PC Engine CD


Sega Saturn

  • sega_101.bin
  • mpr-17933.bin


For most systems, Mednafen only needs the ROM file; but to load PlayStation games, Mednafen requires CUE sheets to know where the music data is. Ensure that the CUE sheet is properly set up in order for the game to run. See the Cue sheet (.cue) page for more info.

Loading a game[edit]

To load a game in Mednafen, simply drag and drop your ROM or CUE file onto mednafen.exe, or if you prefer, you can use the command line. Mednafen requires no special commands, such as the desired system. For example, in Windows, the command would look like C:/Emulators/Mednafen/mednafen.exe C:/Roms/Nintendo/battletoads.nes

m3u playlist files[edit]

An example of a .m3u for Valkyrie Profile

To automatically load the next disc of a game, you will need a .m3u file. To make one, simply create a text file and name it after your game. Within the text file, write the names of the .cue sheets for your game discs as such:

Game (Disc 1).cue

Game (Disc 2).cue

Game (Disc 3).cue

Save the .txt file and then change the file extension to .m3u. Run the .m3u, rather than the .cue of the first disc and the first disc will load. When you get to the end of that disc, the next disc will be automatically loaded. For this method to work, shared memory cards (see below) must be used for the games in the playlist.

Dual analog controllers with PlayStation[edit]

To enable analog sticks and rumble on DualShock controllers, open the mednafen-09x.cfg file, search for "psx.input.port1" and change gamepad to DualShock. Do this for port2 if you wish to play multiplayer games with the features of DualShock controllers.

Configuring controls[edit]

Once in-game, to configure your controller at any time, press Alt+Shift+1 and it will guide you through the setup. Press Alt+Shift+2 and so on for each additional controller for multiplayer. To emulate a different kind of controller, Ctrl+Shift+1 (or 2 for port 2 etc) to cycle through known controller types. If you're having trouble with a controller with analog buttons (the Namco neGcon, for example), hit F3 to make Mednafen detect them.

Graphical enhancements[edit]

Sprite limit[edit]

This is a feature on older systems, due to hardware limitations, that makes it only display so many sprites could be on screen at the same time. Most systems got around this limitation by alternating which sprites were on the screen each refresh, causing the sprite to flicker. Mednafen's default settings are true to the original system limits, but this can be disabled in the .cfg file. Here is the list of options from the .cfg file to change from 0 to 1 if you don't wish to have the limit.

Width size corrections[edit]

Some cores have a wrong width resolution, doubt if this is a bug and even less a problem, but if you want some pixel perfect (to see better horizontal scrolling for example) you must disable Correct aspect ratio in these cores:

  • md.correct_aspect 0
  • nes.correct_aspect 0
  • pce_fast.correct_aspect 0
  • snes.correct_aspect 0
  • snes_faust.correct_aspect 0
  • ss.correct_aspect 0

Here is also a little list of the cores without an correct_aspect setting but its width is still wrong, so changing it's xscale values will give pixel perfect. These cores (except PC-FX) also have a boolean setting called h_overscan which if it's enabled (1) some overscan (which is most known as black bars) on both sides will appear, but width size is still inaccurate. All values are replaced from 1X scale, if you want 2X or 3X scale, multiply it with a calculator.

  • PCE / PC-FX: 0.888888888888888
  • PC Engine (h_overscan 1): 0.875
  • PlayStation (h_overscan 0): 1.092715231788079
  • PlayStation (h_overscan 1): 1.09375


Mednafen supports the usual cheats such as GameShark, Code Breaker, and Action Replay. The cheats menu can be accessed (or quit back to normal gameplay) with ALT+C.

The cheat engine interface is command-based but still easy to use. Each time a menu appears, you have a bunch of options with a number (or key) before each choice. You're supposed to write the number (# just means to choose the number for the line you want) or letter standing for your choice. Occasionally, when asked to input some values or names, a value appears between brackets after the question - if that's what you want to write down, you can simply leave the entry field empty and press Enter.

To add an existing GS/AR/PAR/CB cheat code, use "Gameshark Codes". Else, if you have a memory address and a given value for it, choose "Search Code" then "Add Code", then put in the address (as $XXXXXXXX), the byte range depending on the values your variable can take (1 is 0-255, 2 is 0-65535, etc), and the numeric value proper (in decimal, or hexadecimal if followed by a lower-case h). Various cheat types exist too (S(substitute on read), C(substitute on read with compare) or R(replace value before vblank) -- R being the default recommended option).

Searching for new cheat codes is also possible. The general idea being comparing variables, going back to gameplay so that this variable changes then back to the cheat engine searching for any variables that changed in that particular way. For example:

  • Infinite Health / Ammo / Time / Money: you start with 5 hearts, reset search (in the cheat engine, not reset the game you silly!), you get hurt to 4 hearts, search variables that decreased, get healed back to 5 hearts, search variables that increased, and so on. For the money, you can start with 0 when you have 0 gold and try earning/spending money. You could try using save states as well when you don't have as much freedom changing the value.
  • Infinite Lives: It's game over when the internal variable for "Lives" is 0. So in some cases, when it shows "REST/LEFT=1" in-game and you lose a life then it becomes 0 but you're still allowed to play on your last life, that means the internal counter for lives has actually changed from 2 to 1 and not from 1 to 0, but in other games (where if you die on "LIVESx1" it's game over) it's not the case. In the case of lives, you actually know the exact value: reset search initially, then (if you have 2 lives on a game that allows you to play on "LEFT=0") search for variables with values equal to 3. Lose a life, search for variables equal 2, and so on.
  • Character Modifier / Level Modifier / Having an Item: reset search, play without changing whatever you're searching for (let's say the stage), do lots of searches for new value equals old value. In-game, change it, then do a new value doesn't equal old value. And so on.
  • Walk Through Walls / Invincibility / In-game Cheats & Features: you need to find the value that tells the character if he can move or not (he can't really move when walking against a wall) / if he's blinking or being invincible right now after getting hurt. Same methods as before, but there are hints that could be useful here -- both states could be 0/1, or something else... for example, one could assume 0 is not enabled and 1 is enabled.
  • Debug Modes: stuff that stays 0 no matter what, extra off-screen inaccessible options in menus, extra dialogue... you name it. Have fun experimenting.

The goal of these searches is to narrow down the list of results to a single or handful of addresses (variables) pertinent directly to whatever we're searching for. The search always starts with "Reset Search", going back in-game (Alt+C) to play and change stuff, then back to the cheat engine to compare the "Original" value with the "Current" value. Then you check the results page which must get smaller and smaller (if it's 0 results, you screwed up and need to reset search to try again). The comparing options offered by Mednafen are as follow, with O being the Original value, and C being the Current value (when you reset a search, they're the same):

  1. O==V1 && C==V2 if you know the explicit numerical values for the variable you write it here. The first time, just write the same value in both. Subsequent times, leave O blank and press Enter so that you don't write the old value again, and write the current value under C.
  2. O==V1 && |O-C|==V2 same, but instead of writing the current value you write by how much it changed (0 if old value equals new value)
  3. |O-C|==V2 you write by how much it changed (0 if old value equals new value)
  4. O!=C if old value doesn't equal new value
  5. Value decreased if new value smaller than old value
  6. Value increased if new value bigger than old value

Further reading[edit]

Memory cards[edit]

Shared memcards[edit]

Use this so that there is a shared memory cards for all games:

Create psx.cfg, and add the line: filesys.fname_sav %s.%X
Here's the full documentation:

Emulation bugs, crashes, and save states can corrupt your memory card data.


To transfer memory cards, follow this guide. Also, in games with multiple discs with saves that carry over, you have to follow the same procedure.

Mednafen creates memory card files for each individual game, in contrast to PCSX-Reloaded/ePSXe where all game saves are stored into 2 memory card files. To transfer memory card files from PCSX-Reloaded/ePSXe to RetroArch:

  • Start the game in RetroArch.
  • Go to the system folder. Copy the names of the .mcr files created for the game.
  • Delete them.
  • Rename the files you want to transfer with the names of the RetroArch memcard files.
  • Place the new ones in the system folder.

Using Memory Card Manager 1.4[edit]

Another option is to use Memory Card Manager 1.4 to extract a separate game saves from a shared memory card file.

The utility has support for next memory card formats: *.mem, *.mcd, *.mcr, *.gme, *.ddf, *.psx, *.ps, *.psm, *.vmp, *.VM1

Memory card manager.png

It allows to transfer each of the game saves from a shared memory card to a .mcr memory file used by Mednafen. As it was described above you just need to start game and check for sav folder inside Mednafen system directory. Open with Memory Card Manager 1.4 the memory file created for your game by Mednafen and open the shared memory card file from which you wish to transfer a save entry. When there would be a dialogue 'Do you want to replace 'SAVE_ENTRY_NAME' click 'Yes' and then save the file to the sav folder (the older one should be replaced).


See our dedicated frontends page.

Main article: Frontends#Mednafen


Cores that work with netplay:

  • NEC PC Engine (TurboGrafx-16)/PCE-CD (TG-CD)/SuperGrafx (option for both accuracy and fast cores)
  • Nintendo Entertainment System
  • Sega Genesis
  • Sega Master System
  • Super Nintendo Entertainment System
  • Sony PlayStation
  • Sega Saturn (experimental)
  • You can make and load save states
  • Netcode allows for people to join a game that's already in session
  • In-game chat
  • Playing it full-screen works (sometimes)
  • Command-line only (you can use a frontend, though)
  • Weird, convoluted settings (or lack thereof)
  • Super Nintendo Entertainment System emulation will be slow to you if you're on a low-end computer (uses bsnes core)
  • Sony PlayStation core is accurate but slow
  • Only supports 2 players on Genesis
How to

It's recommended that you download a frontend.

  1. Run MedGui.exe
  2. You'll get a small window. On your left, you'll see two arrow buttons with a console/handheld icon in between. Choose your desired platform.
  3. Click the button with the blue lightning icon and look for the folder that contains your game(s). The emulator looks for compressed archives by default, but you can still load uncompressed files by clicking on the drop-down menu.
  4. Pick your game.
  5. Click the button with a checkered red ball and joystick to start the game.
  6. You'll then (very likely) get a message an update prompt. Click Yes, and wait.
  7. Start the game. If it asks you to update again, ignore it and restart the emulator.
  8. While the game is loaded, press ALT + SHIFT + 1 to map your controller. You'll get several options per button (for example, UP 1, UP 2, UP 3, etc.). Just map the first one to your controller, and the rest to a key you'll never press. You will have to repeat this step for every emulator core.
  9. Close the emulator.
  10. Click the arrow button on the right side of the window. It should expand it.
  11. Click Advanced Mode.
  12. Click the tab called Media/Network/Utility.

For Hosting:

  1. In the Netplay-Server section, you have the following options:
    • "Max Clients", as in, the number of people that can connect to your server (not necessarily players; theoretically you can use this as a makeshift stream)
    • "Conn. Timeout" which is the number of seconds you'll allow for your clients to attempt establishing a connection
    • "Port" where you'll choose one an open TCP/UDP one
    • "Password" which you can establish or leave blank
  2. When you're done fiddling with your settings, click Create standard.conf
  3. Click Create Server. A cmd window will appear.
  4. Click My IP to obtain your external IP address and share it along with your port to your friend(s).
  5. Launch the game.
  6. Press T, and type /server localhost.
  7. Wait for other people to connect.

If you're Connecting:

  1. In the Netplay-Client section, you have the following options:
    • "Host", which is the server's IP you'll connect to
    • "Port, which is the one used by the server (which you should also have open on your end).
    • "Password", blank if there is none.
    • "Nickname" where you type whatever you want.
    • "Local player" is the number of players that will also be playing on one computer.
    • "Small font" which makes the chat font smaller.
  2. When you're done fiddling with your settings, launch the game.
  3. Press T, and type /server IP_goes_here.

You can chat in-game by pressing T. Also, remember that you can drop in and out of the game at any time, so you don't need to reset the game if someone accidentally disconnects. There are way too many settings, commands, and features to list, so take a look at the emulator's documentation.

External links[edit]


Tutorial - Setup PS1 Emulation with Retroarch - My Settings (October 2020)

PlayStation (Beetle PSX)¶


Beetle PSX is a port/fork of Mednafen's PSX module to the libretro API. It can be compiled in C++98 mode. Beetle PSX 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;
  • PGXP subpixel precision, developed by iCatButler;

Beetle PSX is built without hardware rendering support and lacks enhancements such as texture filtering, PGXP perspective correct texturing, and more. To take advantage of hardware rendering and the various enhancements that come with it, use Beetle PSX HW instead.

The Beetle PSX core has been authored by

The Beetle PSX core is licensed under

A summary of the licenses behind RetroArch and its cores can be found here.


Required or optional firmware files go in the frontend's system directory.

scph5500.binPS1 JP BIOS - Required for JP games8dd7d5296a650fac7319bce665a6a53c
scph5501.binPS1 US BIOS - Required for US games490f666e1afb15b7362b406ed1cea246
scph5502.binPS1 EU BIOS - Required for EU games32736f17079d0b2b7024407c39bd3050

As a replacement for any of the BIOS files mentioned above, it is also possible to use either of these BIOSes:

  • (MD5: c53ca5908936d412331790f4426c6c33)
  • (MD5: 81bbe60ba7a3d1cea1d48c14cbcc647b)

The BIOS comes from the PSP, and the BIOS comes from the PS3, both are region-free.
For Beetle PSX to recognize either of these BIOSes, you need to enable the "Override BIOS" option.


Content that can be loaded by the Beetle PSX core have the following file extensions:

  • .cue
  • .toc
  • .m3u
  • .ccd
  • .exe
  • .pbp
  • .chd

RetroArch database(s) that are associated with the Beetle PSX core:


Frontend-level settings or features that the Beetle PSX core respects.

Core Options
RetroArch Cheats
Native Cheats
Disk Control
Crop Overscan *

* Overscan cropping available via Core Options instead of frontend settings


The Beetle PSX core's library name is 'Beetle PSX'

The Beetle PSX core saves/loads to/from these directories.

Frontend's Save directory

Frontend's State directory


Geometry and timing¶

  • The Beetle PSX 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 core's core provided sample rate is 44100 Hz
  • The Beetle PSX core's base width is 320
  • The Beetle PSX core's base height is 240
  • The Beetle PSX 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 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 core's core provided aspect ratio is automatically set based on core options

Loading content¶

Beetle PSX 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. , you should create a text file and save it as . Most PS1 games are single-track, so the cue file contents should look like this:

After that, you can load the file in RetroArch with the Beetle PSX 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.

Multiple-disk games¶

If foo is a multiple-disk game, you should have .cue files for each one, e.g. , , .

To take advantage of Beetle PSW's Disk Control feature for disk swapping, an index file (a m3u file) should be made.

Create a text file and save it as . Then enter your game's .cue files on it. The m3u file contents should look something like this:

After that, you can load the file in RetroArch with the Beetle PSX 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 )

Swapping disks¶

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.

Compressed content¶

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 to

  • Final Fantasy IX (Germany).pbp
  • Final Fantasy IX (Germany)
  • Final Fantasy IX (Germany)
  • Final Fantasy IX (Germany)
  • Final Fantasy IX (Germany)


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:

Note that the tool currently 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 core will either use the Libretro savedata format or the Mednafen savedata format.

Libretro savedata formatMednafen savedata format

By default, the Beetle PSX core will use Libretro's savedata format for Memcard slot 0 and Mednafen's savedata format for Memcard slot 1.

Memcard slot 0Memcard 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 savedata format or the Mednafen 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.

Core options¶

The Beetle PSX 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:

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 to . 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.

  • Internal GPU Resolution [beetle_psx_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.

  • Dithering Pattern [beetle_psx_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.

    '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 for users who otherwise wish to turn off dithering regardless of color banding.

  • PGXP Operation Mode [beetle_psx_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.

  • Display Internal FPS [beetle_psx_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.

  • Line-to-Quad Hack [beetle_psx_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_frame_duping] (disabled/enabled)

    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_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_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_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_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_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_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_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).

  • Core-Reported FPS Timing [beetle_psx_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_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_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.

  • Crop Horizontal Overscan [beetle_psx_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.

    This option does not affect vertical overscan. Vertical overscan can be cropped using the Initial/Last Scanline core options.

  • Additional Cropping [beetle_psx_image_crop] (disabled/1px/2px/3px/4px/5px/6px/7px/8px)

    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_image_offset] (disabled/-4px/-3px/-2px/-1px/+1px/+2px/+3px/+4px)

    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.

  • Initial Scanline - NTSC [beetle_psx_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_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_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_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_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_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_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_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_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 0Memcard slot 1
  • Analog Self-Calibration [beetle_psx_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_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_enable_multitap_port1] (disabled/enabled)

    Enables/Disables multitap functionality on port 1.

  • Port 2: Multitap Enable [beetle_psx_enable_multitap_port2] (disabled/enabled)

    Enables/Disables multitap functionality on port 2.

  • Gun Input Mode [beetle_psx_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_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.

  • Mouse Sensitivity [beetle_psx_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_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_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 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 support¶

Rumble only works in the Beetle PSX 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

Multitap support¶

Activating multitap support in compatible games can be configured by the 'Port 1: Multitap enable' and 'Port 2: Multitap enable' core options.



RetroMouse InputsMouse Inputs
Mouse CursorMouse Cursor
Mouse 1Mouse Left Button
Mouse 2Mouse Right Button


RetroLightgun InputsGuncon / G-Con 45 InputsJustifier Inputs
Gun CrosshairGuncon / G-Con 45 CrosshairJustifier Crosshair
Gun TriggerGuncon / G-Con 45 TriggerJustifier Trigger
Gun ReloadGuncon / G-Con 45 ReloadJustifier Reload
Gun Aux AGuncon / G-Con 45 AJustifier Aux
Gun Aux BGuncon / G-Con 45 B
Gun StartJustifier Start


A list of known emulation bugs can be found here

External Links¶

Libretro PSX cores¶

Last update: 2021-10-09


Command retroarch line psx

Retroarch can emulate many game consoles, including the original PlayStation. If you’re looking to enjoy PS1 games in Retroarch on your Linux PC, look no further than this tutorial. In it, we go over in detail how to set up and emulate PS1 games in Retroarch on Linux!

Note: Addictivetips in no way encourages or condones the illegal downloading or distribution of ROM files for RetroArch. If you want to play Sony PlayStation 1 games with RetroArch, please use your own game ROM files you’ve backed up to your PC, legally.

Installing Retroarch on Linux

Retroarch needs to be installed on your Linux PC before attempting to use it to play PlayStation 1 games. To start the installation process, open up a terminal window and enter the command-line instructions down below to get everything working.

In this section of the guide, we’ll briefly go over how to install Retroarch on Linux. However, if you need more in-depth instructions, feel free to follow our guide on how to get Retroarch working on Linux.


sudo apt install retroarch


sudo apt-get install retroarch

Arch Linux

sudo pacman -S retroarch


sudo dnf install retroarch


sudo zypper install retroarch


There’s a way to get Retroarch working on Flatpak. To start the process of installing Retroarch, you must set up the Flatpak runtime. To install the Flatpak runtime, install the “flatpak” package. Alternatively, if you do not know how to get it going,  follow our guide on the subject.

Once the Flatpak runtime is ready to go, enter the two commands below to get Retroarch via Flatpak.

flatpak remote-add --user --if-not-exists flathub flatpak install --user flathub org.libretro.RetroArch

Setting up the PlayStation Retroarch core

Retroarch, on its own, cannot emulate any video games at all. The reason for this is that Retroarch works based on libretro emulation cores. These cores add emulation functionality for various consoles. So, for example, if you want to play Nintendo 64, you must install the N64 core, etc. If you want to enjoy PlayStation 1 games on your Linux PC via Retroarch, you need to get a PS1 core installed.

Installing libretro cores in Retroarch on Linux is pretty easy, as it can be done directly through Retroarch itself, rather than using external websites or terminal command-line interfaces. To set up the libretro core for PS1, follow the step-by-step instructions below.

Step 1: Open up Retroarch by launching it via the app menu on the Linux desktop. Then, look for the Retroarch menu. Can’t find it? It’s the icon with the Retroarch logo.

Step 2: Once inside the Retroarch menu, there are many different options to choose from. Locate the “Load Core” option, and select it with the mouse or press Enter with the keyboard to confirm.

Step 3: In the “Load Core” menu, scroll to the bottom of the list of options to choose from. At the bottom, find the “Download a Core” option, and select it. The “Download a Core” area is where you can download various libretro cores.

Step 4: Look through the list of available libretro cores to choose from, locate “Sony – PlayStation (PCSX ReARMed)”, and press the Enter key or click on it with the mouse to download the core to your Linux PC.

Generally speaking, Sony – PlayStation (PCSX ReARMed) is the best core to play PlayStation 1 games in Retroarch. However, feel free to download any of the other Sony PlayStation libretro cores on the list.

When the download process is complete, Retroarch will set up the core for use with emulation.

Playing PlayStation 1 games in Retroarch

To play a PlayStation 1 game with Retroarch, add your favorite PS1 ROM to the system. Then, follow the step-by-step instructions below.

Step 1: Find the “Scan Directory” area of Retroarch and use it to scan for your PS1 ROM(s). Keep in mind that Retroarch may not detect 100% of your ROM files, so ensure that the ROM files are named correctly.

Step 2: Once the scanning is complete, you will see a PlayStation controller icon appear in Retroarch. Head over to the PS1 controller icon using the Left/Right arrow keys or the mouse. Select the controller icon using the Enter key or by clicking with the mouse.

Step 3: After accessing the PS1 area in Retroarch, you will see your list of ROM files added to Retroarch. Using the arrow keys or mouse, select the game you wish to play.

Once the game is selected, a sub-menu will appear. This submenu has a few options to choose from. Click on “Set Core Association.”

Step 4: In the “Set Core Association” area, look for “Sony – PlayStation (PCSX ReARMed)” and select it. By selecting “Sony – PlayStation (PCSX ReARMed),” Retroarch will know always to load the ROM file with this core.

Step 5: Locate the “Run” button and click on it with the mouse or select it with Enter. Clicking on “Run” will start up the game.

RetroArch Easy Beginners Setup Guide for Windows

Frequently Asked Questions

We will deal with general problems in the FAQ. If you cannot find the problem you are looking for below, you can ask us through our forum or Discord channel. Alternatively, check our Documentation page.

Our advanced settings interface lets you tweak every possible option influencing how the games are run and displayed. Make sure you have the latest version to get the most out of your RetroArch experience! Check out our Documentation page to take your experience to the next level with the high configuration features of RetroArch!

  • {{item.question}}


  • Hi Invader! Unfortunately, there is no matching with your search results. But that doesn't mean there's no answer to what you're looking for. Please click here to go to our Docs page and try your luck there. If you still can't get a result, don't hesitate to ask us on our Discord by clicking here!

    never stop looking...

Similar news:

And what is the use for future children. In the last year, the young people played a wedding and, after receiving their diplomas, left for the village. At the same time, they wanted to spend their honeymoon in nature.

2152 2153 2154 2155 2156