02-06-2016, 08:34 PM -
As far as I know there's only a single proper lle emulator, znes for the snes. It simulates chip inner working up to cycle accuracy.
Others emulator use hle to some extent : for instance gpu inner working are not really documented, dev only have access to the "reaction" of gpu to some inputs. Cpu increasing complexity also prevent accurate emulation : you can execute the instruction on the host hardware but chances are that latency are different, not accounting that no interpreter or compiler mimic cpu cache, cpu instruction reordering or track branch instruction path.
Today lle and hle are used to qualify library. An lle Emu will execute library code with the same interpreter/recompiler as the game is using. An hle Emu will catch system library call and execute an equivalent native one.
Of course the barrier is moot since lle lib can call library function too, so there's likely a small irréductible set of function that needs to be written with a native implementation : ps3 has 2 level of libs, lv2 are accessed by games and make use of lvl 1 level which exposes "kernel like" features that need to access mmu.
Another thing that worth mentioning is that lle module are not redistributable. Lle emulator can't be proposed on store like Google play or Steam since they can't work out of the box. I know that this doesn't sound like an important feature but lately psx games are sold on Steam, some game controller are designed with Dolphin compatibility in mind and so on. This can only happen if it's considered legally safe to do so.
Others emulator use hle to some extent : for instance gpu inner working are not really documented, dev only have access to the "reaction" of gpu to some inputs. Cpu increasing complexity also prevent accurate emulation : you can execute the instruction on the host hardware but chances are that latency are different, not accounting that no interpreter or compiler mimic cpu cache, cpu instruction reordering or track branch instruction path.
Today lle and hle are used to qualify library. An lle Emu will execute library code with the same interpreter/recompiler as the game is using. An hle Emu will catch system library call and execute an equivalent native one.
Of course the barrier is moot since lle lib can call library function too, so there's likely a small irréductible set of function that needs to be written with a native implementation : ps3 has 2 level of libs, lv2 are accessed by games and make use of lvl 1 level which exposes "kernel like" features that need to access mmu.
Another thing that worth mentioning is that lle module are not redistributable. Lle emulator can't be proposed on store like Google play or Steam since they can't work out of the box. I know that this doesn't sound like an important feature but lately psx games are sold on Steam, some game controller are designed with Dolphin compatibility in mind and so on. This can only happen if it's considered legally safe to do so.