Xbox 360 Emulator
by Michael Brundage Created: 01 May 2004 Updated: 25 May 2014
We created the emulator for the Xbox 360 console, which enabled the Xbox 360 console to play original Xbox games without modification.
Xbox backwards compatibility was probably the hardest technical challenge of my career. It was certainly the hardest interview to date – two of the questions I was asked were: (1) compile 4x4 matrix multiplication into PPC assembly on the whiteboard, and (2) design and sketch the key routines for a virtual memory manager from the high-level architecture all the way down to bit manipulations.
A few of the many things I learned on this project include:
- The difference between actually debugging vs intuitively troubleshooting (which is what most developers do).
- How to optimize the heck out of code via lock analysis, low-level optimizations, statistical performance testing, parallelism, GPGPU, and predictive computation.
- What happens during the so-called “idle loop.”
- How the NIC, GPU, memory management, and file IO work at the level of the hardware/operating system interface (including command buffers, TLB, and the IRP stack).
- How parallelism works at the interrupt level, and how “low-level” primitives like locks and semaphores are implemented on top of the actual hardware instructions.
- What an interrupt storm is.
- How the operating system clock works.
- How thermal effects and CPU implementation details can impact hardware clock frequency and clock counting.
- How inefficient most standard libraries are, especially at math.
- How to make a high-performance emulator, and how incredibly hard that is to do.
- A little about how the video game industry works on the inside.
We named the emulator executable xefu.xex
. The console code name was “Xenon”; in fact, we all learned the actual name would be “Xbox 360” when it was announced to the public. The code name for the emulator was initially Fusion, but we were told to pick another name because some other team was already using that name. So, we shortened it. To FU. Which we usually pronounced by reading out the letters, and sometimes “fu” as in “kung-fu”. After launch, J Allard and Bill Gates gave us the honorary title ‘Emulation Ninja’, which was very unusual for Microsoft at the time (the company used standardized titles throughout).