Wikis

AES Keys

How to obtain AES Keys Users can provide some additional crypto keys to enable some advanced features in Citra. These keys are not officially provided by Citra due to legal considerations. Method 1 In this method, you will dump the ARM9 BootROM, NATIVE_FIRM, and SAFE_MODE_FIRM (and the secret section for the new revision models) from your console using GodMode9. Note: Extracting 0x25KeyX from NATIVE_FIRM is still not correctly implemented, so you will have to provide the key manually using the second method.

Continue Reading

Archive of 3DS Documentation

For better or worse, there is no unified way of writing and collecting information gathered during research on 3DS software or hardware. This page hence seeks to gather a list of various places for 3DS documentation. A wiki dedicated to 3DS reverse-engineering fincs’s notes on various PICA200 features: Procedural texture generation, shadow mapping, gaseous rendering mike’s transcript of the gaseous rendering patent wwylele’s diagram of gaseous rendering based on the said patent Subv’s notes on the kernel scheduler implementation

Continue Reading

Archive of 3DS Tests

For better or worse, there is no unified way of writing and collecting tests written against 3DS software or hardware. This page hence seeks to gather a list of various repositories of 3DS tests. Note: When adding to the list, if there are any prerequisites for a test outside of simply setting up a working devkitPro environment, please be sure to state them somewhere. Citra’s official test suite aroulin’s tests JayFoxRox’s tests Lectem’s tests MerryMage’s tests:

Continue Reading

Building for Android

Note: These build instructions are a work-in-progress. Dependencies Android Studio NDK and CMake Git Cloning Citra with Git git clone --recursive https://github.com/citra-emu/citra.git Citra by default will be cloned into - C:\Users\\citra on Windows ~/citra on Linux And wherever on macOS Building Start Android Studio, on the startup dialog select Open. Navigate to the citra/src/android directory and click on OK. In Build > Select Build Variant, select release or relWithDebInfo as the “Active build variant”.

Continue Reading

Building for Linux

An unofficial PKGBUILD of Citra is available for Arch Linux on the AUR. Dependencies: You’ll need to download and install the following to build Citra: SDL2 Deb: apt install libsdl2-dev Arch: pacman -S sdl2 Fedora: dnf install SDL2-devel OpenSUSE: zypper in libSDL2-devel OpenSSL Deb: apt install libssl-dev Arch: pacman -S openssl-1.0 Fedora: dnf install openssl-devel OpenSUSE: zypper in openssl-devel Qt 5.9+ Only 5.9+ versions are tested.

Continue Reading

Building for OpenBSD

OpenBSD is not officially supported. These instructions are not actively updated and represent what happened to work for one user on amd64 in March 2018. Install the required packages: (Please amend if you notice some are missing, I did not test this on a clean installation!) pkg_add cmake sdl2 qtbase The repository uses submodules, so remember to clone it recursively: git clone --recursive https://github.com/citra-emu/citra cd citra To build, run the following in the repository root directory:

Continue Reading

Building for Windows

MSVC Build for Windows Minimal Dependencies On Windows, all library dependencies are automatically included within the “externals” folder or can be downloaded on-demand. To build Citra, you simply need to install: Visual Studio 2022 - Make sure to select C++ support in the installer. CMake - Used to generate Visual Studio project files. Git - We recommend msysgit. While installing Git Bash, you should tell it to include Git in your system path.

Continue Reading

Building for macOS

Dependencies: It’s recommended that you use homebrew to install dependencies. You’ll need to download and install the following to build Citra: pkg-config (brew install pkgconfig) SDL2 (brew install sdl2, or download this dmg) Qt5 (brew install qt5) (Note: If you have Qt4 installed, then you will need to remove it before building. brew unlink qt4) CMake (brew install cmake) OpenSSL (brew install openssl) A recent version of Xcode and the Xcode command line tools Optional dependencies: FFmpeg 4.

Continue Reading

CPU

Citra contains two CPU cores: an interpreter and a JIT core. The interpreter is an ARM interpreter called “dyncom”, which was originally taken from a project called SkyEye, and then modified to support the ARMv6 instruction set that the 3DS uses. Dyncom originally supported ARM7 (ARMv5) and partial ARMv6 only. We added in the remaining ARMv6 media instructions and other fixes ourselves to get 3DS emulation as far as it is.

Continue Reading

Citra Web Service

Citra Web Tokens Citra web tokens are unique identifiers that allow your personal Citra installation to be able to log in to Citra’s Web Services, without having to save your email and password. Logging in to your Web Services account allows you to provide more detailed statistics with telemetry, among other things. Getting A Token If you haven’t done so already, register on the Citra Community Forums. Log in to your forum’s account.

Continue Reading