DSpico 的固件。
This is the repository for the DSpico firmware. The firmware emulates a DS cartridge, with extended features for SD access and USB. PIO is used for an SDIO interface for the SD card and for interfacing the DS cartridge bus.
For an overview of the supported card commands, see commands.md.
| Peripheral | Pin name - Peripheral | Pin name - RP2040 |
|---|---|---|
| DS Slot | D0 | GPIO12 |
| D1 | GPIO13 | |
| D2 | GPIO14 | |
| D3 | GPIO15 | |
| D4 | GPIO16 | |
| D5 | GPIO17 | |
| D6 | GPIO18 | |
| D7 | GPIO19 | |
| CLK_DS | GPIO11 | |
| ROM_CS | GPIO10 | |
| SPI_CS | GPIO21 | |
| IRQ | GPIO20 | |
| RST_DS | GPIO09 | |
| SDIO | CLK_SD | GPIO03 |
| DAT0 | GPIO05 | |
| DAT1 | GPIO06 | |
| DAT2 | GPIO07 | |
| DAT3 | GPIO08 | |
| CMD | GPIO04 |
We recommend using WSL (Windows Subsystem for Linux), or a Unix-based machine to compile this repository.
The steps provided will assume a Linux environment. Alternatively, you can run the setup_environment.sh bash script.
sudo apt update && sudo apt install cmake gcc-arm-none-eabi build-essential gitgit submodule update --init
cd pico-sdk
git submodule update --init
cd ..
Note that you shouldn't use --recursive because it draws in a lot of unnecessary submodules inside the pico-sdk.The CMakeList.txt file contains a couple of options that you can configure.
ENABLE_R4_MODE - Enables R4 emulation. This allows you to use R4 software, such as the Wood R4 kernel. As R4 emulation can be used together with regular DSpico software, it can usually be kept enabled.DSPICO_ENABLE_WRFUXXED - Enables emulation of the IS-SPI-USB-ADAPTER to support the WRFUxxed exploit. This requires uartBufv060.bin to be placed in the data/ folder.ENABLE_PREVENT_DSI_AUTOBOOT - Experimental feature that prevents DSi consoles from autobooting when the autoboot flag is set. It was intended to be used with WRFU Tester, which has the autoboot flag set. It is generally not recommended to use this, as it does not work properly with the 3DS and has not been tested much.To compile and properly use the firmware, you will need to place a valid DS rom in the roms/ folder, named default.nds. Additionally, you may include a second rom in the roms/ folder named dsimode.nds, if you wish to have a different rom for DS consoles and DSi/3DS consoles.
Usage
default.nds
dsimode.nds
Notes
Single rom for DS and/or DSi
Your rom
-
The rom must contain NTR blowfish keys.
If the rom is hybrid or DSi exclusive, it must additionally contain TWL blowfish keys.
Hybrid bootloader
Bootloader
-
The bootloader rom must be patched with the DSpico DLDI.
The bootloader rom must contain NTR and TWL blowfish keys.
DSi ntrboot
GCD rom
-
The rom must contain GCD blowfish keys and must be properly signed.
The DSpico must be using USB power, such that the firmware is booted before starting the DSi. Without external power, the firmware currently does not boot fast enough to keep up with DSi ntrboot.
3DS ntrboot
3DS ntrboot rom
-
A 3DS ntrboot rom consists of a header, the blowfish keys and the firm to boot.
Separate rom for DS and DSi
Your DS rom
Your DSi rom
The DS rom must contain NTR blowfish keys.
The DSi rom must contain both NTR and TWL blowfish keys.
WRFUxxed
Bootloader
WRFU Tester v0.60
The bootloader rom and uartBufv060.bin must be patched with the DSpico DLDI.
uartBufv060.bin must be placed in the /data folder. The bootloader rom must contain NTR blowfish keys. The DSPICO_ENABLE_WRFUXXED define in CMakeLists.txt must be enabled.
Simply run ./compile.sh to compile the firmware. Once it is complete, you will be able to find DSpico.uf2 in the build/ folder, which you can use to flash your DSpico board with.
[!IMPORTANT] The firmware only works correctly when build with optimization. Recommended is
RelWithDebInfo.
The firmware for the DSpico project includes code that is licensed under the following:
SPDX-License-Identifier: Zlib
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: GPL-3.0-or-later
For details, see the license directory, as well as LICENSE.txt.
暂无开放 Issues,或尚未同步最近议题。