WHAT IS IT?

DuckStation is a PlayStation emulator. It’s easy to set up, incredibly powerful and my main choice for PS1 games wherever I can use it.

As I always say, if you are new to emulation things can be very daunting. Our goal for this guide is to boot a single game. So pick your favourite and let’s get started!

DOWNLOADING DUCKSTATION

Start at the DuckStation website and choose the download for your platform. The current desktop builds cover Windows, macOS and Linux. SteamOS uses the Linux version.

Platform Installation
Windows Download the installer for your computer and follow its prompts. Most PCs need x64; Snapdragon Windows machines need ARM64. Current builds require Windows 10 version 1809 or newer, or Windows 11.
macOS Download the Mac ZIP, extract it and move DuckStation.app into Applications. Current builds require macOS 13.3 or newer and support Intel and Apple Silicon.
Linux Download the AppImage for your processor. In its file properties, allow it to run as a program, then open it. Current AppImages require a distribution equivalent to Ubuntu 22.04 or newer.
SteamOS Switch to Desktop Mode and use the Linux x64 AppImage. You can add it to Steam as a non-Steam game to launch it from Gaming Mode later.
Android Install the app using the Android download linked from the DuckStation website, then open it and follow the setup wizard.

These requirements and installation options come from the official DuckStation instructions. If macOS blocks the app, those instructions also explain how to allow it under System Settings > Privacy & Security.

YOU WILL NEED

  • A PS1 game file. For your first game, use a single-disc title in CHD or BIN/CUE format.
  • A BIOS file. My recommendation is psxonpsp660.bin.
  • A controller, either connected to your device or built into your handheld.

A BIOS is the console’s firmware, which DuckStation needs to start games. It isn’t included with the emulator due to copyright so you’ll need to locate your own file. psxonpsp660.bin is my recommendation.

For BIN/CUE games, keep the .cue file and all its .bin tracks together. You’ll open the CUE, which tells the emulator how those tracks fit together. Don’t load an individual BIN track or leave the game inside a ZIP archive.

ADDING YOUR BIOS AND GAME

Open DuckStation and work through its setup wizard. When it asks for a BIOS, point it at your BIOS folder on desktop, or import the file using Android’s file picker.

If you’ve already completed the wizard, open the BIOS settings. On desktop these are under Settings > BIOS. Choose the folder containing your BIOS and check that DuckStation detects it. On Android, use the BIOS import option in App Settings > BIOS.

If the emulator doesn’t detect the file, check that it has been extracted and that you’ve selected the correct folder. Renaming an unrelated file to psxonpsp660.bin won’t turn it into a BIOS. If your build rejects that image, use a recognised BIOS dump from your own PlayStation and select the appropriate game region.

Next, add the folder containing your PS1 game. The wizard can do this, or you can add it through Settings > Game List on desktop. On Android, use Add Game Directory from the main screen and grant access to the folder when prompted.

Your game should now appear in the list. Before opening it, let’s make sure the controller works.

MAPPING YOUR CONTROLLER

On desktop, open Settings > Controllers and select Controller Port 1. On Android, open the main menu, head into Controller Settings and select Port 1.

Choose an Analog Controller (DualShock) for games that support analogue controls. Use the automatic mapping option if available, then check the bindings yourself. Map the D-pad, both sticks, shoulder buttons, triggers, Start and Select.

I always describe face buttons by their position. The letters printed on Xbox and Nintendo controllers differ, so follow the position rather than matching letters.

PlayStation button Position on your controller
Cross (X) South, the bottom face button
Circle East, the right face button
Square West, the left face button
Triangle North, the top face button

Some older games don’t support a DualShock in analogue mode. If a game boots but ignores your controls, try switching it to digital mode, or choose a Digital Controller for that game’s settings.

HOTKEYS

Hotkeys let you open the menu or fast-forward whilst playing. Find Hotkeys in the controller settings. Older Android builds may call this Hotkey Settings.

Select is always the button I hold for hotkeys. DuckStation lets you bind the combination directly, so you don’t need to configure RetroArch’s separate Hotkey Enable setting.

Select the binding, hold Select, press the second button and then release both. Check that the binding records both inputs.

Action My combination
Open Pause Menu Select + north face button
Fast Forward (Toggle) Select + L2, the left trigger
Power Off System Select + Start

If your Android build uses different labels, bind the equivalent pause-menu, fast-forward toggle and exit-game actions. The toggle version of fast-forward stays on until you press the combination again.

Select + Start is my combination for quitting the current game. Power Off System returns you to DuckStation; it doesn’t necessarily close the whole app. Save in the game before using it.

SETTING UP MEMORY CARDS

PS1 games save to an emulated memory card, just as they did on the original console. I prefer a separate card for each game. That way, I don’t have to manage one shared card’s space across my whole library.

Open Settings > Memory Cards on desktop, or the Memory Cards section of App Settings on Android. For the first slot, choose Separate Card Per Game (Title). Older Android builds may call the section Memory Card Settings and the option Separate Card Per Game (Game Title).

Leave the second slot without a card for now unless your game needs one. DuckStation will create the first card for you when needed. You still need to use the game’s own save menu; creating a card doesn’t save your progress automatically.

Keep Use Single Card For Multi-Disc Games enabled where available. We’ll come back to those games shortly.

BOOTING YOUR FIRST GAME

Open your game from DuckStation’s list. Leave graphics enhancements alone for this first launch so you can check the basic setup.

Play far enough to confirm that the controls work and, when the game allows it, make a save using its own save system. Close the game normally, reopen it and check that you can load that save.

You’ve now got a working game, controller and memory card. That’s the foundation sorted. The remaining settings are things you can adjust once you’re happy it’s working.

GRAPHICS SETTINGS

I like to upscale games to suit my display whilst keeping their original aspect ratio. I don’t really use shaders.

On desktop, open Settings > Graphics. On Android, look in App Settings > Graphics; older builds split these options between Enhancements and Display Settings.

Increase Internal Resolution, called Resolution Scale on some builds, until the rendered game looks sharp on your screen. Start with 2x or 3x and work upwards if your device can maintain normal speed. This renders the 3D parts of the game at a higher resolution; it won’t add detail to the original textures or pre-rendered backgrounds.

For Aspect Ratio, choose Auto (Game Native) where available. On older builds, 4:3 is a suitable starting point for most PS1 games. Keep widescreen hacks and Stretch To Fill off if you want the original proportions.

I also enable PGXP Geometry Correction. The original PlayStation’s limited precision makes polygons wobble and textures warp as you move around. PGXP uses more precise geometry information to reduce that wobble. Its texture correction option, called Perspective Correct Textures in current desktop builds, also helps straighten out warped textures.

Leave the other PGXP options at their defaults for now. If an enhancement causes graphical problems in a particular game, disable it for that game. If the game runs slowly, lower the resolution first.

RETROACHIEVEMENTS

RetroAchievements adds achievements to supported retro games. Create an account if you don’t already have one, then open Settings > Achievements on desktop, or App Settings > Achievements on Android. Enable achievements and log in.

I always enable Hardcore Mode. It prevents things like loading save states, rewind and cheats, so I use the game’s own saves. You can leave Hardcore off and still earn achievements in Softcore mode. This is a personal preference, not something you need to copy to get DuckStation working.

I also hide leaderboard notifications and trackers. On current desktop builds, disable Show Leaderboard Notifications and Show Leaderboard Trackers. I keep achievement sound effects enabled. Again, these are my preferences; choose what you like seeing and hearing whilst you play.

If achievements aren’t detected, check the game’s page on RetroAchievements and its supported game hashes. Having the right title doesn’t guarantee that every version or modified copy will match. The RetroAchievements documentation covers supported games and Hardcore restrictions.

MULTI-DISC GAMES AND M3U PLAYLISTS

An M3U is a text playlist listing a game’s discs in order. Open the playlist in DuckStation and you can swap between those discs without treating them as unrelated games.

Put the discs together in one folder. For example:

Final Fantasy VII/
  Final Fantasy VII (Disc 1).chd
  Final Fantasy VII (Disc 2).chd
  Final Fantasy VII (Disc 3).chd
  Final Fantasy VII.m3u

The contents of Final Fantasy VII.m3u would be:

Final Fantasy VII (Disc 1).chd
Final Fantasy VII (Disc 2).chd
Final Fantasy VII (Disc 3).chd

Each line must match the actual filename. For BIN/CUE games, list the CUE files and keep their BIN tracks alongside them. Save the playlist as .m3u, rather than .m3u.txt.

Launch the M3U from the game list. When the game asks for the next disc, open the pause menu, choose Change Disc and select that disc from the playlist. Don’t restart the game to swap discs! (I did this countless times on original hardware, blame muscle memory!)

With title-based memory cards and the single-card option enabled, the discs can share the same card. Start multi-disc games through the playlist consistently so you don’t accidentally switch between different memory cards.

ANDROID SAVES AND SYNCING

The standard Android app keeps its user data in Android’s restricted app storage. On many unrooted devices, apps such as Syncthing can’t access that folder, which gets in the way of automatic save syncing.

Joey’s Retro Handhelds’ DuckStation patch changes the data location to /storage/emulated/0/DuckStation, making memory cards accessible to syncing tools. Follow the project’s installation and migration instructions if you want to use it, especially if you already have saves. Installing a different build won’t automatically move your existing cards.

You can leave syncing for later. For now, use the game’s save menu, close it normally and check that your progress loads the next time you play.

MIMIR

My app Mimir has some features to help make PS1 emulation easier. At time of writing it’s only available on Android, but I’m currently in the process of rebuilding it in Flutter so it will be available across more platforms!

ROM Converter/Compressor

Mimir comes with CHDMan, which will convert your BIN/CUE files into a single CHD file. This helps keep things tidier and can save you a tonne of space!

Multi-Disc Organiser

Many classic PS1 games (Metal Gear Solid, Final Fantasy VII etc.) came on multiple discs. Mimir has a tool that will scan your ROMs folder for games that contain (Disc 1), (Disc 2) etc. Once its found them, it will group them by game inside a folder and create the relevant .m3u playlist file. No more manual editing!