An experimental multiplatform Philips CD-i emulator written in C++17. Should run on Windows, macOS (courtesy of yeah-its-gloria), (v)Wii, Wii U (WUHB) and 3DS. May not run up to fullspeed on all builds.
Run miniCDi using the command line arguments miniCDi <boot.rom> [disc.bin]. Alternatively, drag the system ROM file itself into miniCDi to boot the emulated system from the ROM, then drag the disc image into the emulator window.
Other system builds expect player ROM files and disc images in the following directories:
| Build | System ROMs | Discs |
|---|---|---|
| Nintendo Wii | sd:/miniCDi/rom |
sd:/miniCDi/discs |
| Nintendo 3DS | sdmc:/3ds/miniCDi/rom |
sdmc:/3ds/miniCDi/discs |
| Nintendo Wii U | /vol/external01/wiiu/apps/miniCDi/rom |
/vol/external01/wiiu/apps/miniCDi/discs |
With the exception of NVRAM, the following boards and chips are emulated:
- Mono-I: SCC68070, MCD212, CDIC, SLAVE
- Mono-II: SCC68070, MCD212, DRVDSP (stub), SLAVE
- Mono-III, Mono-IV, Robocon: SCC68070, MCD212, CIAP (stub), IKAT
As a result of DRVDSP and CIAP lacking proper emulation, the corresponding board types cannot run discs. Only Mono-I is currently fully supported.
- NVRAM/Timekeeper emulation
- Rewrite emulator backend to use less pointers and garbage (define what this last word means)?
- Check audiomap-to-XA switching
To compile, use devkitPro's powerpc-eabi-cmake (GC, (v)Wii, Wii U) or arm-none-eabi-cmake (3DS), or the regular MINGW64 CMake if compiling for Windows. The corresponding SDL2 package is required, except on 3DS.
The latest commit is compiled automatically using GitHub Actions (.github/workflows/*.yml).
Special credits to Stovent, CD-i Fan and Slamy for helping me wherever possible on this project. The emulator uses Musashi version 4.10 as a core for the 68070 processor.
- CD-i Technical Documentation / System (The New International CD-i Association)
- Slamy's CDIC_BlackBoxAnalyzer
- CD-i Fan's cdichips documenting remaining hardware
Some of the emulation code is ported or adapted from:
- Emulation of IKAT and CIAP in Stovent's CeDImu (license unknown)
- the MAME CD-i driver by Vincent Halver and Ryan Holtz (licensed under BSD-3) (global MAME license)
- CD-i Emulator, via reverse engineering of generated trace logs
The general code for this emulator is released under GPLv3 (see above credits for other licenses). Work is currently underway to remove any derived code that does not conform with this license as stated above.
