Emulating PS1 on (New) Nintendo 3DS

I recently caught a bug to play the artfully done Policenauts fan translation. I’ve been playing my 3DS a lot lately so I figured why not try and run it there? Surprisingly PS1 emulation works quite well once configured properly. I’ve tried Xenogears and Policenauts and they both run at 100%. Save states also work perfectly. This is all thanks to all the great folks contributing to PCSX-ReARMed, libretro, devkitPro, MAME, as well as the community for documentation.

Supposedly this only works for the New 3DS. Your mileage may vary.

I’d highly recommend reading over this entire post before trying to follow along. There are a few tricky steps!

xenogears running on a 3ds


Prepare your games

Create backups for each disc you want to play.

Install chdman (MacOS 10.13 and above): brew install rom-tools

Compress BIN+CUE to CHD using chdman: chdman createcd -i game.cue -o game.chd

For multi-disc games, put all your CHDs in the same folder and create a .m3u playlist file. This command will do it for you and name it the same thing the directory is named:

find . -maxdepth 1 -type f -name "*.chd" -exec basename {} \; | sort -V > "$(basename "$(pwd)").m3u"

Recommended: test your CHD/M3U in an emulator like duckstation.

Put your games on your 3DS SD card. I put mine in /roms/ps1/.

Optional: create a backup of your PS1 BIOS and transfer scph550X.bin to your SD card. PCSX claims to work better with a BIOS backup but I haven’t actually tested the difference.


Install Retroarch

Install custom firmware: https://3ds.hacks.guide

Download & extract retroarch 3ds build (latest stable): https://buildbot.libretro.com/stable/1.17.0/nintendo/3ds/RetroArch_cia.7z

Inside the retroarch_cia/ folder, there are two folders: cia/ and retroarch/. cia/ isn’t used and can be discarded. Navigate to retroarch/cores/ and delete any cia’s that you don’t need. In my case I only want to emulate PS1 so the folder only has info/ folder and pcsx_rearmed_libretro.cia (can info/ be deleted?).

Download my PCSX configuration and place it in retroarch/config/PCSX-ReARMed/ (case sensitive).

Download my retroarch configuration and place it in retroarch/.

The directory should look like this:

└── retroarch/
    ├── assets/
    ├── cheats/
    ├── config/
    │   └── PCSX-ReARMed/
    │       └── PCSX-ReARMed.opt
    ├── cores/
    │   ├── info/
    │   └── pcsx_rearmed_libretro.cia
    ├── database/
    ├── filters/
    ├── overlays/
    ├── remaps/
    └── retroarch.cfg

Copy the entire retroarch/ folder to the root of you 3DS’ SD card.

Open FBI, navigate to the retroarch/cores/ directory and install PCSX. Do not delete the cia as retroarch will use it.

Install the PCSX .cia with FBI

Close FBI and you should have PCSX on your home menu!

PCSX is on the home screen


Configure PCSX

If you downloaded my configuration files, you can skip this step. If you experience poor performance, come here and verify your settings.

Out of the box PCSX doesn’t work very well. Toggling a few settings will greatly improve performance. Load a game and then tap the screen to access the quick menu.

Quick Menu > Core Options > Threaded Rendering = Asynchronous

Quick Menu > Core Options > GPU Plugin (Advanced) > Hi-Res Downscaling = enabled

Press B repeatedly until you navigate back to the main menu (not the quick menu).

Main Menu > Settings > Video > Synchronization > Vertical Sync (VSync) = disabled (enable this for 2d games)

Main Menu > Settings > Audio > Synchronization > Syncrhonization = enabled

Main Menu > Settings > Drivers > Audio = dsp_thread

Main Menu > Settings > Directory > System/BIOS = wherever you put your legally obtained BIOS

Quit PCSX and reopen to reload the config.


Tips

To load a game:

Main Menu > Load Content > sdmc:/ (navigate to your .chd or .m3u file)

Add your games to favorites so you can launch them without navigating your SD card every time.

To swap discs for multi-disc games:

Quick Menu > Disc Control > Eject Disc > Current Disc Index = increment by 1, then insert disc

Using the quick menu causes the currently playing audio to glitch out until you resume the game. This is considered expected behavior.

Bathe yourself in the PS1 startup sound:

Quick Menu > Core Options > System > Show BIOS Boot Logo = enabled

If PCSX goes unresponsive, try closing the console and reopening it.

Play around with overlays in the quick menu.

Screenshots can be found in the same directory as your backups. You can change the directory in the main menu settings.


Further reading

The settings changes were taken from this reddit post: https://www.reddit.com/r/3dshacks/comments/jvkotb/full_speed_psx_finally_here_on_new_3ds_new_2ds_xl/jjtrbeu/?context=3

More info on CHD, chdman, and disc based game backups from Retro Game Corps: https://retrogamecorps.com/2023/02/06/the-ultimate-rom-file-compression-guide/