Don't forget though, the Xbox uses a special version of DirectX as sort of an abstraction layer. Coders who work on the Xbox don't write for the "bare metal" of the Xbox, they simply write for the DirectX layer.
The point of an emulator is basically to emulate "bare metal" so that you can get programs created for another platform running. Unfortunately, we don't know enough about the Xbox's "bare metal" to do an accurate emulation of it. We do know a fair amount about the DirectX layer that runs on top, but how are we supposed to emulate that accurately if we can't emulate the "bare metal" accurately?
Theoretically, we could just use our knowledge of the DirectX layer to form the basis of a high-level emulator, and a few other people have already done this, but this an overall poor emulation strategy for accurately emulating the software we want to run. It'll get a few things running, but we'll have to put up with things like timing issues, messed up textures, and other stuff like that.