Research emulator for the ARM9 core in the Nintendo Wii.
Credit is due to the following projects and resources that have guided the implementation since the beginning:
- Team Twiizers' fork of Skyeye
- MINI
- Wiibrew
- YAGCD
- libogc
- archshift/llama
- MerryMage/dynarmic
- All of the folks who still work on Wii/GC homebrew
- Execution through the boot ROM
- Execution through IOS first-stage bootloader
- Execution through IOS second-stage bootloader
- Execution in the IOS kernel
- Broadway/PowerPC-world HLE
- Emulated SDHC (SD card) support?
- Emulated USB support?
- Emulated WLAN functionality?
- Write a bunch of tests
- Guest debugging functionality (perhaps via GDB, or some UI?)
- Go fast (performance optimizations, i.e. a JIT backend, etc)
- Tools for fuzzing guest code
- Other related tools?
If there end up being features specific to Linux platforms, I am not planning on Windows/Mac compatibility. It's also probably very slow, sorry.
I am not interested in accepting contributions to this project and I will probably work on it alone; at least, for now. When I get around to deciding on a license, it will probably be as permissive as possible.
I use Nightly by default, so you may have to do something like this:
$ git clone https://github.com/eigenform/ironic && cd ironic/
...
$ rustup toolchain install nightly
$ rustup override set nightly
$ cargo build --release
In order to boot, ironic
expects the following files to live in the project
directory:
boot0.bin
- The Wii boot ROM dumped from your consolenand.bin
- The NAND flash data dumped from your consoleotp.bin
- The associated OTP/fused memory dumped from your consoleseeprom.bin
- The associated SEEPROM memory dumped from your console
You can run the emulator with the interpreter backend like this:
$ cargo run --release --bin ironic-tui interp
Like skyeye-starlet
, the ironic-tui
target includes a server for PPC HLE.
Tools for interacting with the server and representing processes on the
PowerPC-side of the machine can be found in pyronic/
.