Nintendo 3DS Compilation / Development GuideLink

Environment configurationLink

You need the homebrew Nintendo 3DS SDK ctrulib and DevkitARM toolchain installed.

RetroArch CompilationLink

Fetching RetroArchLink

Clone RetroArch's repository from GitHub

1
2
git clone https://github.com/libretro/RetroArch.git retroarch
cd retroarch

For subsequent builds you only need to pull the changes from the repo

1
2
cd retroarch
git pull

To update your local copy from the repository run git pull

Building RetroArch separatelyLink

First, you need to compile 'Salamander'. To compile Salamander (for 3DS) run:

1
make -f Makefile.ctr.salamander

Second, to compile RetroArch (for 3DS) run:

1
make -f Makefile.ctr

Note

RetroArch on 3DS is statically linked. With statically linked RetroArch, each executable is a separate libretro core instead of the core being separately loaded from a single executable. A pre-existing libretro library needs to be present in the root directory in order to link RetroArch 3DS. This file needs to be called 'libretro_ctr.a'.

After a few seconds/minutes you should be able to find a retroarch_ctr.elf and retroarch_ctr.dol file under that directory.

Building RetroArch in bulkLink

Instead of building each core one by one, you can build all cores as a batch task. Run from the main 'retroarch' directory:

1
cd dist-scripts

Note

Make sure that all the libretro cores that you want to compile are inside the 'dist-scripts' directory.

Once inside this directory, run :

1
./dist-cores.sh ctr

This process will also automate the packaging process for you.

Packaging RetroArchLink

Additional Tips:Link

Core CompilationLink

Fetching CoresLink

The easiest way to fetch all the cores is to use libretro-super. Run

1
./libretro-fetch.sh

Building CoresLink

The easiest way to build all the cores (for 3DS) is to use libretro-super. Run

1
./libretro-build-ctr.sh

In case you only want to build one and/or more cores instead of all, you can specify the cores you want to build after the first command in no particular order. E.g.:

1
./libretro-build-ctr.sh snes9x2010 fceumm

Once finished, you can find the libretro cores inside directory dist/ctr.