Nintendo GameCube Compilation / Development Guide

Environment configuration

You need the homebrew Nintendo GameCube SDK libogc and Devkitpro PPC toolchain installed.

RetroArch Compilation

Fetching RetroArch

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 separately

First, to compile RetroArch (for GameCube) run:

1
make -f Makefile.griffin platform=ngc

Note

RetroArch on GameCube 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 GameCube. This file needs to be called 'libretro_ngc.a'.

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

Building RetroArch in bulk

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 ngc

This process will also automate the packaging process for you.

Packaging RetroArch

Additional Tips:

Core Compilation

Fetching Cores

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

1
./libretro-fetch.sh

Building Cores

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

1
./libretro-build-ngc.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-ngc.sh snes9x2010 fceumm

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