What's new

Hle & Lle

Allnatural

New member
Moderator
Lewpy (of the PSX emulation scene) offered an excellent explanation once.

Okay, let's try and clear this up


HLE - High Level Emulation

A technique used to emulate a system, or part of a system, by simulating the software API calls that the program makes.


LLE - Low Level Emulation

A technique used to emulate a system, or part of a system, by simulating the hardware registers that a program accesses.


What HLE does is it scans a program and "hooks" the standard API calls that a program is using (because it is designed using a standard development library, so the API calls are standard across many games). By doing this, it doesn't actually have to fully emulate the hardware in the system, and also has access to the program data before it gets mangled by any actually hardware device in the system.

LLE emulates the system at a register level, so is almost exactly the same as the system being emulated. This also means it suffers from any limitations of the system being emulated. In the case of the PSX, this means it has non-perspective correct texturing, no zbuffering, 3D engine glitches, etc.

All PSX emulator plugins that use the PSEmu Pro plugin interfaces are LLE components, because they operate at the register level of the devices they are emulating. The fact that they subsequently call D3D, OpenGL, Glide, etc. afterwards to display the data afterwards is irrelevant.

N64 lends itself very well (from what I have read) to HLE techniques, because most of the developers use[d] standard Nintendo libraries to develop their games, so used a common API for accessing the various system blocks (graphics, sound, etc.)

PSX doesn't lend itself to HLE very well, because most games are written using proprietary libraries, so that the performance of the system is maximised. I doubt there are many developers that used exactly the same libraries on multiple games.

Most emulators that use HLE only use it in part of the system. Most rely on LLE emulation of core operations, such as the CPU.

Full HLE is in effect porting an entire game from one platform to another (such as FF7 on PSX and PC): the executed code has absolutely nothing to do with the original platform code, and even the data structures are changed to optimise them for the target platform.

:)
 

Top