Fast NDS Emulator for ARM32/PSVita
This runs most games, however consider:
libshacccg.suprx, follow
this guide or just install and open VitaDBkubridge.skprx version >= 0.3.1 from https://github.com/bythos14/kubridge/releases*KERNEL section, otherwise the app might crash upon opening*.ndsFeel free to create an issue if you run into problems, however please make sure before reporting anything the game you
are
having issues with exhibits the same behavior with the AccurateLle setting enabled.
Install cargo
You need to have both llvm-18 and llvm-21 installed. - llvm-18 is required for bindgen, newer versions struggle to parse class sizes correctly - llvm-21 is used for building C/C++ libraries
Clone the repo
$ git clone --recurse-submodules https://github.com/Grarak/DSVita.git
Get a armhf sysroot with libsdl2 development packages installed
- On ubuntu >= 22.04
bash
$ sudo apt install debootstrap qemu-user-static
$ sudo debootstrap --foreign --variant=buildd --arch=armhf jammy ./ubuntu-armhf https://ports.ubuntu.com
$ sudo cp /usr/bin/qemu-arm-static ubuntu-armhf/usr/bin/
$ sudo chroot ubuntu-armhf /debootstrap/debootstrap --second-stage
$ apt update && apt install libsdl2-dev # If apt can't find the package make sure the source has "main restricted universe multiverse" defined in /etc/apt
$ LIBCLANG_PATH=<path to llvm-18 library> DSVITA_SYSROOT=<path to armhf sysroot> cargo build --target thumbv7neon-unknown-linux-gnueabihf --release
$ LIBCLANG_PATH=<path to llvm-18 library> cargo vita build vpk -- --release
To obtain the most optimized build you need to use a patched rust compiler due to LTO incompatibility. The upstream rust compiler doesn't set the target cpu and target features in the callsite attributes which prevents the clang linker from inlining cross language functions.
$ RUSTC=<path to compiled rustc> LIBCLANG_PATH=<path to llvm-18 library> RUSTFLAGS="-Zlocation-detail=none -Zfmt-debug=none -Zub-checks=no -Zsaturating-float-casts=no -Ztrap-unreachable=no -Zmir-opt-level=4 -Clinker-plugin-lto -Clto=fat -Zunstable-options -Cpanic=immediate-abort" cargo vita build vpk -- --release
Currently we are also stuck with an older rust compiler, which still uses llvm-21, later versions of llvm seem to cause performance regressions.
*KERNEL section of your config.txt$ claude mcp add DSVita \
-- python -m otcore.mcp_server <graph>