the author of that post is claimimg you need to emulate the x86 instruction set and this is simply not the case. I think he is having issues with xbox security or hardware checks and does not know how to get around them to run all the games. It would not make sense for MS to have multiple APIs since one could not guarentee 100% compatability accross all games.
For "True emulation" you would need to emulate the x86 instruction set. To get a close approximate that may not work in all situations you can put wrappers around the API calls and run the x86 code natively on a modern processor. Timing in the game can be dependent on the speed the processor is executing particular blocks of code; for instance, many old DOS games run unplayably fast even on a meager 100 MHz Pentium.
Yes, the post that was quoted earlier in this thread is very intent on making a "true emulator", but in the link put up a little while back ( http://shogun3d-cxbx.blogspot.com/ ) the author is using the method of wrapping the API calls.
From the blog I re-linked
Well, I have some more bad news for you. When I was working on adding further support for this library, I did get some of the XDK samples built under the LTCG release to work, however, the code inside these functions are dynamic, NOT static like with normal D3D8 library builds. What does this mean? It means that even though one signature might work for one app/game, it's not guaranteed to work for the next as the code and signature would change per game. Furthermore, there is no standard way to dissassemble the library in IDA or use our automated tools to locate the functions. So with that being said, Cxbx CANNOT emulate these games using the method it uses now. The only way to do so is to actually create an HLE datasheet that manually specifies the location of each function similar to how Xeon works. This is really a lot of work to do since most games require many functions to be HLEd and finding them all manually can take months (unless we had a dedicated team to search them out). Now I see what Nisse was talking about =/
It's not as easy as you think. The libraries that you need to create wrappers for are often enormous, often poorly or un-documented, and not linked to in a standard way. And yes, there are multiple versions of the libraries (see quoted text).