Xbox emulation on Windows 8? Don't bet on it

Those rumors are too good to be true in the short term -- but might point towards future projects

Early last week, discovered references inside ntoskrnl.exe, a NT kernel file, that hint at a possible blending of the XBox 360 and Windows 8.

-- both lines were found inside one out of roughly 100.000 system files and millions of lines of code. Of course, that's all it took for the blogosphere to run amok and wildly speculate on built-in Xbox 360 support for Windows 8. And while I'm all too intrigued on the idea of switching back and forth between Outlook 15 an Gears of War 3, I just don't see it happening any time soon.

These stop codes have caused a lot of wild speculation!

Instead of just repeating this rumor or mocking how ridiculous it sounds, I wanted to dig deeper and see if Windows 8 contained additional references and code-bits to support this theory -- and explain what an enormous undertaking it would be to properly implement Xbox 360 functionality into Windows.

The evidence: two simple Blue Screen of Death codes. Really?

What do these two references actually mean? In fact, they're nothing more and nothing less than BSoD codes -- known officially as stop errors -- that Windows calls in case anything goes wrong. You're looking at mere placeholders for two Xbox 360-related crashes. I fail to see why anyone thinks that this is even remotely connected to Xbox 360 game support or a built-in emulator. It is far more likely that the Windows 8 and the Xbox 360 kernel are growing closer together, which I'll get into later.

Out of sheer curiosity, I took apart the latest leaked Windows 8 build (7989, from the end of April 2011) as far as I could. Using binary-level search tools and disassemblers, I tried hard to find further evidence of Xbox 360 support -- but there were none. Not a single mention of Xbox 360, no support for XBG3 (the console's new disc format) and no sign of the Xbox Xenon CPU. Hell, I even looked for DLL calls only present in the Xbox 360 kernel and dozens of other Xbox hardware and software related references. Nada!

Granted, I get that not all libraries can be accessed on a binary level, and I also know that we're talking about a pre-beta build of Windows 8, which means code can be added or removed daily, but there would be at least some minor references or hints. An Xbox 360 emulator is a huge undertaking, as I'll discuss shortly; if they were playing with implementing such a feature, there would be at least some minor references -- something -- and not just two stop errors.

Xbox 360 emulation on Windows 8: Possible, in theory!

The question is: Could Windows in theory run Xbox 360 games natively? No. Some Xbox Games are written in .NET/XNA, so I figure they could easily be JIT compiled, but the big commercial games (such as Gears of War or Call of Duty) would need to be recompiled and adapted in case the games contain hardware-specific code. And I'm not sure this is feasible at all.

So the only possible solution is emulation -- and this is where we run into big problems. Console emulators rank amongst the more complex pieces of software out there, as they need to translate custom console hardware instructions to x86. And while the Xbox runs a customized NT kernel and uses some form of DX9, its hardware is an entirely different story. An Xbox 360 emulator would need to struggle with:

  • PowerPC emulation: The Xbox 360 is built on a Xenon, a 64-bit PowerPC CPU with three physical cores that uses the RISC instruction set. Translating its instructions would require a compiler that'd take good care to correctly translate its caches, registers and so forth. x86 CPUs would have trouble emulating some of the Xbox CPU instructions fast enough, while in other cases they'd translate things too quickly. Simply put, it's like having a human language interpreter translating a speech in real-time, with no noticeable delay, while at the same time adapting to the speaker's erratic voice patterns and speeds.

    Plus, you'd need at least a quad-core CPU to map all three physical cores of the Xbox 360 to your PC -- and don't forget that you've got Windows 8 and its background processes struggling for processor time, as well, so it'd be best to have at least a few spare cores.

  • ATI R500 emulation: The built-in ATI R500 chip was great for its time (circa 2005), but it's nowhere near the GPU performance we're used to these days; the Xbox 360 GPU was clocked at 500 MHz while today's Radeon 6950 puts out more than 800 MHz. Also, its overall architecture has improved by dozen-fold: where once 16 texture units were responsible for filling textures, you're now looking at 192 of these units. Memory bandwidth also doubled. The list goes on.

    So shouldn't it be fairly easy to emulate the R500 GPU? Unfortunately, things are not that easy. From what I've gathered, the R500 sports some unique instructions, such as MEMEXPORT, that aren't available on desktop cards, and which are either hard or next to impossible to emulate in time.

That's just two pieces of the hardware; we're still miles away from emulating the Xbox kernel and all its calls (which differ from the NT way of doing things). I highly recommend reading this description of the difficulties in creating a 3rd party Xbox 360 emulator.

But for the sake of the argument, let's just assume that Microsoft's Xbox and Windows team somehow worked their magic and created an emulator capable of overcoming all translation issues. Performance is still the biggest issue. Take the Wii hardware as an example: it runs on a PowerPC CPU and ATI GPU as well, but is not nearly as powerful as the 360. It took years for developers to create the Dolphin emulator, which runs some (not even all!) Wii games and doesn't deliver smooth gameplay with anything less than a 3 GHz Core 2 Duo. And that's only emulating the puny little 729 MHz single-core PPC CPU that's built into the Wii. Compare that to the three-core 3.2 GHz architecture found in the Xbox 360. I can't even begin to imagine what kind of processors would be required for Xbox 360 games to be emulated flawlessly at 100 percent performance, but I suspect it's beyond what's available today (or even what'll be available in April 2012, when Windows 8 will reportedly hit the market).

Emulating the 729 MHz PowerPC CPU of the Nintendo Wii requires fairly decent hardware to run at high resolutions. Imagine what it would take to emulate the Xbox 360's tri-core 3.2 GHz CPU. Yikes.

I think it's all highly unlikely, unless Microsoft really put in the resources to create a fast and flawless emulator. It's very hard to pull off, so the question is: why would they?

So what's the Xbox strategy?

First of all, Microsoft's "One Windows for All" mantra might play a huge role in the Xbox 360 kernel references found. What if Microsoft ditches the current Xbox kernel (xboxkrnl.exe) and replaced it with the Windows 8 kernel, possibly adding in a couple of Windows-related features to the mix, maybe as part of a future update, minor console revision or even the next-gen "Xbox 720?" Windows 8 already supports x86, x86-64, and ARM -- why not support PPC? It's all wild speculation at this point, but at least Microsoft is thinking about it and is experimenting with the technical unification of Windows 8 and Xbox 360 (and not just adapting the UI) -- otherwise these STOP errors wouldn't make any sense. A common codebase would only be helpful in order to brave the One-Windows-World.

In the meantime, I have no doubt there will be an Xbox Live service built-into Windows 8 that allows users to download non-native Xbox 360 games such as parts of the Games for Windows catalog (which has recently moved to and play online. I just don't think that you'll be able to pop in a Xbox 360 game disc or download native console games and just play them. Sad truth.

ITWorld DealPost: The best in tech deals and discounts.
Shop Tech Products at Amazon