2024-03-07 22:05:16 +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)
|
2024-03-08 15:59:14 +01:00
|
|
|
* ``cmake -DCMAKE_BUILD_TYPE=Release .. -G Ninja -DCMAKE_PREFIX_PATH=`realpath .` ``
|
2024-03-07 22:05:16 +01:00
|
|
|
* `ninja`
|
|
|
|
|
2024-03-08 21:16:08 +01:00
|
|
|
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
|
2024-03-23 16:59:35 +01:00
|
|
|
cryptopp/8.5.0
|
2024-03-08 21:16:08 +01:00
|
|
|
sdl/2.0.20
|
|
|
|
range-v3/0.11.0
|
|
|
|
catch2/2.13.7
|
2024-03-23 16:59:35 +01:00
|
|
|
libunwind/1.8.0
|
2024-03-08 21:16:08 +01:00
|
|
|
```
|
|
|
|
|
2024-03-07 22:05:16 +01:00
|
|
|
## 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.
|