Mikage Developer Edition
Find a file
2025-01-01 22:32:34 +01:00
.github Create FUNDING.yml 2024-12-29 11:36:49 +01:00
.gitlab Add GitLab CI 2024-09-20 15:10:33 +02:00
data/nand_archives CMake: Add install step for placeholder NAND archives 2025-01-01 22:32:34 +01:00
source Frontend: Ensure immutable data directory exists on startup 2025-01-01 22:11:18 +01:00
tools CMake: Allow compiling against system libraries for cryptopp and libunwind 2024-03-30 18:33:46 +01:00
.gitlab-ci.yml Add GitLab CI 2024-09-20 15:10:33 +02:00
.gitmodules CMake: Bundle Teakra via FetchContent 2024-09-29 15:17:55 +02:00
CMakeLists.txt Enforce nodiscard 2024-12-08 20:12:38 +01:00
conanfile.py Build: Add option to enable profiling 2024-12-08 20:12:38 +01:00
Doxyfile Make naming more consistent 2024-03-12 17:32:53 +01:00
README.md CMake: Add install step for placeholder NAND archives 2025-01-01 22:32:34 +01:00

Mikage Developer Edition

Build instructions

CMake and Conan 2 are required to build Mikage.

  • mkdir build
  • cd build
  • conan install .. -of . --build=missing (add -s build_type=Debug for Debug builds)
  • cmake -DCMAKE_BUILD_TYPE=Release .. -G Ninja -DCMAKE_PREFIX_PATH=`realpath .`
  • ninja && sudo ninja install

Some dependencies may be provided by system packages instead of building them via Conan. To enable this behavior, add the following to your Conan profile (~/.conan2/profiles/default):

[platform_requires]
boost/1.80.0
cryptopp/8.5.0
sdl/2.0.20
range-v3/0.11.0
catch2/2.13.7
libunwind/1.8.0

Usage

For the first launch, three things must be set up:

  1. a complete aes_keys.txt must be placed in the build folder
  2. a virtual NAND must be bootstrapped from a game update partition
  3. the 3DS initial system setup must be run

Given any game with an update partition, steps 2 and 3 can be done by running:

cd build && source conanrun.sh && ./source/mikage game.cci --bootstrap_nand --launch_menu

NOTE: Currently, this probably requires a game of the EU region. Patching SecureInfo_A by hand after bootstrapping may work, too.

Once set up, it's sufficient to run ./source/mikage game.cci or ./source/mikage --launch_menu. You'll need to source conanrun.sh to set up library directories.

Key bindings

  • Arrow →: A
  • Arrow ↓: B
  • Arrow ↑: X
  • Arrow ←: Y
  • WASD keys: Circle pad
  • Backspace: HOME (press twice to power down)
  • Q key: L
  • E key: L
  • IJKL keys: D-pad

Debugging

Individual processes may be debugged through an embedded GDB remote server over network port 12345. To enable it, pass --debug and --attach_to_process <pid> when launching Mikage. After startup, connect via gdb using tar ext :12345, wait until Mikage prints a message about waiting for the debugger attach, then type attach <PID> in the gdb shell. Note that a gdb build for ARM targets may be necessary to do this. Debuggers other than gdb may work but are untested.

Processes running in the emulated kernel can be introspected through a simple debug console available via telnet on port 12347.