Next Generation Emulation banner

1 - 2 of 2 Posts

·
Registered
Joined
·
1 Posts
Discussion Starter #1
I'm pretty bad at intros, so hello, I'm Tomy.

I loved the original Xbox console (Fable, Grabbed by the Ghoulies) and want to dive into a new project - and as a programmer, the idea of working on an emulator seems like a decent challenge.

The problem is that I'm late to this scene, and I'm stuck. As someone new, I'd love a kickstart from someone who could kindly explain where the challenges lie:

From some research that I've done into the HLE techniques proposed by Cxbx (and the FAQ - http://dxbx-emu.com/faq/) the concept is to patch all the calls to the Xbox kernel by running them through Windows. So if I'm correct, you can obtain the function names (and their arguments/return values?) from some debug names they were compiled with (??) and patch them as required?

I don't understand what the BIOS is and if it's needed.

I also don't have access to any XBKs, nor understand the important of their differences (other than additions). How does the console handle games with different versions?

I'll leave it there. You can e-mail me through my profile, or ask me to come on IRC.

Thanks for reading ;)
 

·
Registered
Joined
·
80 Posts
HLE approach is all about creating a complete enough 'shim' between the indirect calls in the .xbe files to either the kernel, or the relevant Xbox API libraries (to draw a comparison with .DLLs).

That being said, it is complicated by the nature of single executable model on the native hardware and that the only true external reference is to the kernel itself. Every other API is either statictly linked or included with Link Time Code Generation.

HLE is possible because (I) the underlying executable and thread model is so similar on Xbox1 to WinNT, so we leverage off the already in-situ system/kernel/BIOS etc, and (II) that the x86 architecture is available on most PC's.

One difficulty with HLE though is that because we utilise the in-situ system and kernel of the user, certain assumptions are relied upon re architecture that have changed in Windows OS versions since early 2000s; one example is the current use of LDT in Cxbx that invalidates 64bit systems.

Counterpoint this approach with LLE, which does not require a reimplementation of the kernel or BIOS, as it's actually being run in an Intel x86 VM. Difficulty is that we'd have to more fully emulate the hardware through boot-up and system setup.

This approach is more akin to VMware or VirtualBox virtualisation.
 
1 - 2 of 2 Posts
Top