Skip to content

OXOS v0.1.3

Choose a tag to compare

@kooscode kooscode released this 17 Oct 15:16
· 73 commits to main since this release

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).
    • XboxHardwareInfo was 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) need ASPECT=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 test phases and the controller test pass.

Using it in xemu

  1. Open Machine → Settings → System.
  2. Set Flash (BIOS) File to bios_v0.1.3.bin and 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 86f547387184d1001d377cce97d3756c8acf91cc for the X-codes and EEPROM key states.
  • Contains no Microsoft code. Not affiliated with or endorsed by Microsoft.