Repository navigation
OXOS v0.1.3
Bug-fix release: Half-Life 2 controller input now works, and the kernel keeps everything the original keeps when one game launches another.
Download: bios_v0.1.3.bin (1 MB, SHA-256 a94dded3836d76f6be31e17bfb98cb71ca3fe4031d5f92249748c61476b2add8)
Fixes
- Controller didn't work in Half-Life 2 ("Press START" ignored every button).
- Half-Life 2 starts through a small launcher that restarts the kernel into the real game (a quick reboot).
XboxHardwareInfowas filled at power-on only and wiped by that restart. The game's USB code sizes its descriptor pool from those flags; with them zeroed it ran out on the second hub and never found the pad.- It now survives quick reboots, as in the original kernel. Any game that starts through a launcher could have hit this.
- More state kept across quick reboots, checked against everything the original kernel keeps:
- AV cable type from power-on. Before, unplugging and replugging the same AV cable during a game started from the dashboard reset the console.
- "Game loaded" flag for eject and tray events. An eject while the next game was loading took the before-launch path.
- Network PHY "initialized" flag. Every networked game re-ran the link negotiation, which can take a few seconds.
- Widescreen signal. Mode changes now drive the AV connector's widescreen line (GPIO 0x80D6). With xemu's Auto aspect ratio, widescreen SD modes such as the dashboard's display at 16:9.
- The 2BL clears the 8 bytes the boot trick leaves at physical address 0, so page 0 starts zeroed as with a Microsoft BIOS.
For developers (make run)
- Keeps a persistent HDD copy and EEPROM per HDD image, so saves and settings survive. It starts from the Microsoft dashboard image when present and defaults to widescreen 1920x1080.
ASPECT=auto|native|4x3|16x9. The original kernel sends the widescreen signal only for SD modes, so widescreen games in 480p/HD (Halo 2) needASPECT=16x9.
Checked in xemu
- Half-Life 2: START on the title screen goes on to load the first level, as with a Microsoft BIOS.
- Halo 2 in 16:9 at 480p.
- The dashboard, Halo, Halo 2 and Brute Force as in v0.1.2.
- All
make testphases and the controller test pass.
Using it in xemu
- Open Machine → Settings → System.
- Set Flash (BIOS) File to
bios_v0.1.3.binand leave MCPX Boot ROM File empty.
Known limitations
- Not tested on a real console yet.
- No TV-encoder tables.
- No certificate key: stock saves and System Link with stock consoles won't work.
Sources (GPL-2.0)
- This repository at tag
v0.1.3. - XboxDev/cromwell at
86f547387184d1001d377cce97d3756c8acf91ccfor the X-codes and EEPROM key states. - Contains no Microsoft code. Not affiliated with or endorsed by Microsoft.