Wednesday, November 2, 2011

Xbox Dashboard (3944)

I haven't done any serious work on Cxbx since June this year due to the fact that not only am I spending more time working on my own emulator but working towards getting a long term job (I've been getting quite a few good job prospects), but last night I wanted to play around with the source a bit. And what do you know? Something good came of it after all. I managed to get the Xbox Dashboard (the one built with XDK 3944) to launch, so don't go dumping your own dashboard and send me crazy questions/complaints pertaining to their dashboard not emulating. Only the very first retail Xbox Dashboard works so far, NOT any latter ones yet. I have a copy of the 4920 dashboard, but I have to find it.

Most of the menus can be accessed without problems, but you may get some bogus results sometimes. The time/date is automatically set to the time your computer is running. The memory section doesn't work yet because I can't get the dashboard to accept the fact that I'm not emulating any memory cards! It's probably because there's more to emulating XMountMURootA() then I thought; I just redirected it to XMountMU to get it over with. Oh, and checking the system details will cause a crash.

Quite frankly, I've been working at this for quite a while in the past, but like I always say, I tend to make the best progress after leaving it for a while, then coming back and getting something working! It wasn't exactly "hard" (for the most part), just a matter of hacking my way around certain things. I ended up adding quite a few new features to some existing implementations such as the "Y:" drive (which I just redirected to the current directory) and some other things I can't really remember.

"Why emulate the dashboard?" Because I felt like it, for starters. Second, I like the challenge, which may lead to fixing bigger bugs. You know what I mean, right?

If you look through the source code (at what I changed) you'll notice that HalReturnToFirmware doesn't return when the error code is 4 (the one that makes your Xbox show the multi-language screen saying your Xbox needs servicing). That's just a silly hack to get passed the "Challenge Response Protocall" code since Cxbx doesn't properly emulate the kernel functionality to do it (i.e. XcSHAInit/Update/Final). For a more detailed understanding if you don't know what that is, read this thread:;wap2

Don't have much else to say except I did comment out the Gamma Ramp code to prevent problems with certain games in fullscreen mode (Unreal Championship, Azurik: Rize of Perathia, and Robotech: Battlecry in particular). If you need that functionality, just delete the comments in front of the PC equivelant in EmuD3D8.cpp. Okay?

Have fun,


EDIT: The Youtube video for those who want to see it in action:


  1. Wauw, great BlueShogun. I always wanted to see the Dash in cxbx.:D
    Did the XDK revieled any keypoints towards making this posible ?

  2. Yeah, the XDK used the first dashboard was basically the same as XDK 3911, making it easier to find and fix problems. Now I need to find a copy of the 4920 dashboard and test that! Would be interesting to see it connect to Xbox Live or something like that.

  3. Ahhh....the arcane world of computer games.

    I played PacMan a couple times, years ago.

  4. Nice job man, well your idea works ok.
    And now let's see if the games will work on the future. Now JSRF will stop saying CD Dirty or Damage, believe-me or not you emulator is getting very closer to emulate all.

    Never Give Up!

  5. Hello... Nice work ;) Can u tell me what is latest rev of emulator? What games are compatible
    with r170? Tnx ;)

  6. I always loved the original Xbox's dashboard... I wish I had it back

  7. Awesome news! Thanks for all your work.

    Now, I'm crossing fingers for a Linux port of this emulator… but considering the Xbox' software architecture, well…

  8. Can you send a link to download the dash at all?