Hotel Mario (USA) running as a native Philips CD-i build on the sibling
cdirecomp static-recompilation engine.
This is a research preview. The real CD-RTOS BIOS boots, the player shell opens the disc, the Philips Interactive Media bumper plays with decoded XA audio, and Hotel Mario reaches its title card. Gameplay is not yet reachable — no level is playable and a full playthrough is not certified. Expect rough edges and breaking changes.
Hotel Mario reaching its title card as native recompiled code — booted through the real CD-i system ROM.
This repo is thin. It contains only game-specific build glue, identity
metadata, and acceptance tooling — it builds the cdirecomp runtime with a
Hotel-Mario-specific product identity and asset contract. It does not
contain a CD-i BIOS, any Hotel Mario disc data, generated game code, or any
emulator/tooling forks. All of the interesting work lives in cdirecomp, whose
philosophy is low-level, static, native-first: the whole CD-RTOS system ROM
is recompiled and executed as native C (no OS-9 HLE), and the game boots on top
of it exactly as on hardware.
You provide both, from your own legally dumped media (see DISC.md for the verified identities):
- A 512 KiB CD-i player BIOS (
cdi490a.rom). - A Hotel Mario (USA) raw Mode-2
.cue+.binimage (select the.cue).
The runtime validates both at startup and never embeds either one in the executable.
Place this repo beside cdirecomp:
Projects/
├── cdirecomp/
└── HotelMarioRecomp/
Requirements: CMake, Ninja (or another generator), a C11 compiler, and SDL2.
./tools/build.ps1 # builds build/HotelMarioRecomp.exe against ../cdirecomp
./tools/launch.ps1 # first run asks for the BIOS + disc, then remembers themThe first launch saves the chosen paths in git-ignored bios.cfg / disc.cfg
sidecars; later launches reuse them.
Controls: on Windows the mouse controls Hotel Mario directly — it drives the CD-i pointer and both buttons through the recompiled runtime's input model, in-game as well as in the shell. Arrows/WASD also move the pointer; Enter/Space/Z is button 1; Backspace/X is button 2; F11/Alt+Enter toggles fullscreen; Esc exits.
With your own BIOS and disc:
./tools/accept-attract.ps1 -Bios path/to/cdi490a.rom -Disc path/to/HotelMario.cueIt enters through the real player-shell input path and checks the pixel-exact title, populated intro planes, clean bumper/intro XA audio with zero drops, expected disc progress, zero native dispatch misses, and real-time field pacing. See ISSUES.md for the intentionally narrow current certification.
PolyForm Noncommercial License 1.0.0 — © 2026 Matthew Stan. Covers this repository's build glue and tooling only. It grants no rights to Nintendo, Philips, or any other third-party intellectual property; you must supply your own legally obtained BIOS and disc image.
