7.4 KiB
DSpico Guide
This guide aims to document step by step how to setup your DSpico.
Prerequisites
- Ensure you have a Linux or WSL (Windows Subsystem for Linux) environment set up.
- Install BlocksDS
- Install .NET 9.0 for your environment (note: this link points to the instructions for Ubuntu, but links for most OS'es are available on the same page)
- Install a few prerequesite packages:
sudo apt install cmake gcc-arm-none-eabi build-essential git - Set an environment variable for dlditool:
export DLDITOOL=/opt/wonderful/thirdparty/blocksds/core/tools/dlditool/dlditool
1. Getting and assembling your DSpico
Refer to the DSpico hardware repository for all information about ordering and assembling a DSpico.
2. Compiling the DSpico DLDI
- Clone the DSpico DLDI repository
- Run
make
You should now have DSpico.dldi.
3. Compiling the DSpico Bootloader
- Clone the DSpico Bootloader repository
- Initialize the submodules:
git submodule update --init - Run
make
You should now have BOOTLOADER.nds.
- DLDI patch the bootloader:
$DLDITOOL /path/to/DSpico.dldi BOOTLOADER.nds - Clone the DSRomEncryptor repository
- Compile DSRomEncryptor by running:
dotnet build
The compiled executable can be found at DSRomEncryptor/DSRomEncryptor/bin/Debug/net9.0/, in the project's folder.
- Ensure files containing the NTR and TWL blowfish tables are present in the same folder as the DSRomEncryptor executable (see also the DSRomEncryptor readme)
- Run
DSRomEncryptor /path/to/BOOTLOADER.nds default.nds
You should now have default.nds.
4. Optional: Compiling Wrfuxxed
Follow these steps if you want to use the Wrfuxxed exploit to boot the DSpico on unmodified DSi and 3DS systems.
- Clone the Wrfuxxed repository
- Run
make - DLDI patch the exploit:
$DLDITOOL /path/to/DSpico.dldi uartBufv060.bin
5. Compiling the DSpico Firmware
- Clone the DSpico Firmware repository
- Initialize the submodules:
Note that you shouldn't use
git submodule update --init cd pico-sdk git submodule update --init cd ..--recursivebecause it draws in a lot of unnecessary submodules inside the pico-sdk. - Copy
default.ndsfrom step 3 to theromsfolder of the firmware repository - Optional if you want to use Wrfuxxed:
- Copy the WRFU Tester v0.60 rom to
roms/dsimode.nds(SHA-1:2d65fb7a0c62a4f08954b98c95f42b804fccfd26) - Copy
uartBufv060.binto thedatafolder - Uncomment (remove the
#) theDSPICO_ENABLE_WRFUXXEDoption inCMakeLists.txt
- Copy the WRFU Tester v0.60 rom to
- Run
./compile.sh. If you get an error saying that there are missing permissions, runchmod +x compile.shand retry.
The build folder should now contain DSpico.uf2.
6. Flashing the DSpico
- Boot the DSpico in BOOTSEL mode.
- If the rp2040 was not flashed before, it should automatically enter BOOTSEL mode when it is connected to a PC via USB.
- If the rp2040 already has the DSpico Firmware, eject the micro SD card and it should automatically enter BOOTSEL mode when it is connected to a PC via USB.
- Otherwise, hold the BOOTSEL button while connecting to a PC via USB to enter BOOTSEL mode.
- Copy
DSpico.uf2to the USB drive that appeared when connecting the DSpico. - Disconnect the DSpico from the PC.
7. Compiling Pico Loader
- Clone the Pico Loader repository
- Initialize the submodules:
git submodule update --init - Run
make
You should now have the following files:
picoLoader7.binpicoLoader9_DSPICO.bindata/aplist.bindata/savelist.bin
8. Compiling Pico Launcher
- Clone the Pico Launcher repository
- Initialize the submodules:
git submodule update --init - Run
make
You should now have LAUNCHER.nds.
9. Prepare the micro SD card
- If necessary, format your micro SD card using these steps: https://dsi.cfw.guide/sd-card-setup.html.
Warning
Do NOT use the built-in formatting tool of Windows!
- Copy the
_picofolder from the Pico Launcher repository to the root of the micro SD card. - Copy
LAUNCHER.ndsto/_picoboot.nds. - Copy
picoLoader7.binto/_pico/picoLoader7.bin. - Copy
picoLoader9_DSPICO.binto/_pico/picoLoader9.bin. - Copy
aplist.binto/_pico/aplist.bin. - Copy
savelist.binto/_pico/savelist.bin. - Copy any DS roms to your micro SD card. It is recommended to make a folder to put them in.
The final directory structure will look like this:
.
├── _pico
│ ├── themes
│ │ ├── material
│ │ │ └── theme.json
│ │ └── raspberry
│ │ ├── bannerListCell.bin
│ │ ├── bannerListCellPltt.bin
│ │ ├── bannerListCellSelected.bin
│ │ ├── bannerListCellSelectedPltt.bin
│ │ ├── bottombg.bin
│ │ ├── gridcell.bin
│ │ ├── gridcellPltt.bin
│ │ ├── gridcellSelected.bin
│ │ ├── gridcellSelectedPltt.bin
│ │ ├── scrim.bin
│ │ ├── scrimPltt.bin
│ │ ├── theme.json
│ │ └── topbg.bin
│ ├── aplist.bin
│ ├── savelist.bin
│ ├── picoLoader7.bin
│ └── picoLoader9.bin
└── _picoboot.nds
Note: If you want to play DSiWare on the DSpico, additional files are required. See the Pico Loader readme for more information.
10. Test your DSpico
- Insert the micro SD card in your DSpico.
- Insert the DSpico in your DS, DSi or 3DS device.
- Turn on the device.
- The DSpico should appear on the menu, of if you are using Wrfuxxed on a DSi, Pico Launcher should start automatically after going through the exploit.
- If you're not using Wrfuxxed on a DSi, launch the DSpico from the menu.
- Pico Launcher should start and shows the contents of your micro SD card.
- Navigate to a DS rom and press A to start it.
Troubleshouting
The DSpico is not detected by my DS, DSi or 3DS system or hangs at the DS(i) splash screen
- Check that the bootloader was properly encrypted with the correct blowfish keys.
- Check that the firmware was compiled in
RelWithDebInfomode.
Wrfuxxed doesn't work, WRFU Tester stays on screen
- Ensure the correct version of WRFU Tester is being used (v0.60).
- Ensure that the
DSPICO_ENABLE_WRFUXXEDoption is enabled in the firmwareCMakeLists.txt.
I get "Error: Failed to mount SD card.", or a blue screen after the Wrfuxxed exploit
- Mounting your micro SD card failed. Check if there's anything wrong with it, try reformatting (see Step 9) or try a different micro SD card. In case of a blue screen, make sure the exploit has been patched with the proper DLDI driver.
I get "ERROR: Failed to open Pico Loader file.", or a red screen after the Wrfuxxed exploit
/_pico/picoLoader9.binor/_pico/picoLoader7.bincould not be opened. Check that you copied all necessary files to the micro SD card (see Step 9).