Pico Loader is a homebrew and retail DS(i) rom loader supporting a variety of platforms (see below).
- Supports both homebrew and retail DS(i) roms
- Supports DSiWare and redirects NAND to the flashcard SD card (acting as "emunand", see below for how to setup)
- Supports DS roms with an encrypted secure area if a DS arm7 bios is present at
/_pico/biosnds7.rom - Supports a wide range of platforms, including popular flashcards and the DSpico
- Built-in patches for DS Protect
- Fast loading
Note that Pico Loader can currently not run retail roms from the DSi SD card. Homebrew is supported, however.
Return to loader is also currently not supported yet.
Caution
Using the wrong platform could damage your flashcard!
Note that there can be some game compatibility differences between different platforms.
| PICO_PLATFORM | Description | DMA |
|---|---|---|
| ACE3DS | Ace3DS+, Gateway 3DS (blue), r4isdhc.com.cn carts, r4isdhc.hk carts 2020+, various derivatives | ✅ |
| AK2 | Acekard 2, 2.1, 2i, r4ids.cn, various derivatives | ❌ |
| AKRPG | Acekard RPG SD card | ❌ |
| DSPICO | DSpico | ✅ |
| DSTT | DSTT, SuperCard DSONE SDHC, r4isdhc.com carts 2014+, r4i-sdhc.com carts, various derivatives | ❌ |
| G003 | M3i Zero (GMP-Z003) | ✅ |
| ISNITRO | Supports the IS-NITRO-EMULATOR through agb semihosting. | ❌ |
| M3DS | M3 DS Real, M3i Zero, iTouchDS, r4rts.com, r4isdhc.com RTS (black) | ❌ |
| MELONDS | Melon DS support for testing purposes only. | ❌ |
| R4 | Original R4DS (non-SDHC), M3 DS Simply | ❌ |
| R4iDSN | r4idsn.com | ❌ |
| SUPERCARD | SuperCard (Slot-2 flashcart) | ❌ |
The DMA column indicates whether DMA card reads are implemented for the platform . Without DMA card reads, some games can have cache related issues.
Note that there are still SDK versions and variants for which Pico Loader does not yet support DMA card reads.
We recommend using WSL (Windows Subsystem for Linux), or MSYS2 to compile this repository. The steps provided will assume you already have one of those environments set up.
- Install BlocksDS
- Install .NET 9.0 for your system (note: this link points to the instructions for Ubuntu, but links for most OS'es are available on the same page)
- Run
make- By default this compiles for the DSpico platform. To specify a different platform use
make PICO_PLATFORM=PLATFORM, for examplemake PICO_PLATFORM=R4. See the table above for the supported platforms.
- By default this compiles for the DSpico platform. To specify a different platform use
- To use Pico Loader, create a
_picofolder in the root of your flashcard SD card and copy the following files to it:picoLoader7.binpicoLoader9.bin(the version for your platform)aplist.bin(generated in thedatafolder of the repo)savelist.bin(generated in thedatafolder of the repo)
When running DSiWare, Pico Loader redirects NAND to the flashcard SD card. This requires the following files and folders, obtained from a DSi nand dump, in the root of your flashcard SD card:
photo- The photo partition of nand will be redirected to this foldershared1TWLCFG0.datTWLCFG1.dat
shared2launcherwrap.bin
syslogproduct.logshop.logsysmenu.log
cert.sysdev.kpHWID.sgnHWINFO_N.datHWINFO_S.datTWLFontTable.dat
On the arm9:
- Map VRAM blocks A, B, C and D to LCDC
- Load
picoLoader9.binto0x06800000(VRAM A and B) - Load
picoLoader7.binto0x06840000(VRAM C and D) - Setup the header of picoLoader7 to specify what should be loaded. See
pload_header7_tin include/picoLoader7.h.- Caution: VRAM does not support byte writes!
- Disable irqs and dma
- Ensure the cache is flushed
- Map VRAM C and D to arm7
- Request the arm7 to boot into picoLoader7
- Arm7: Disable sound, irqs and dma and jump to the
entryPointspecified in the picoLoader7 header. Note that after mapping the VRAM to arm7, it appears at0x06000000on the arm7 side.
- Arm7: Disable sound, irqs and dma and jump to the
- Arm9 jump to
0x06800000
Note that vram must be executable on the arm9.
This project is licensed under the Zlib license. For details, see LICENSE.txt.
Additional licenses may apply to the project. For details, see the license directory.