High-level emulation


High-level emulation

High-level emulation (HLE) is an approach for construction of emulators, specifically of video game console systems. In HLE, instead of trying to accurately recreate the hardware, to create a platform on which the native code can be run, the effort focuses on recreating the appropriate "functionality" provided by the system emulated. Thus, the emphasis is shifted from emulating the "method" of reaching certain goals to getting the same (or comparable) "results" as if the native platform was used. By contrast, the traditional way of emulating is termed "Low-level emulation", or "LLE".

The term HLE originates from UltraHLE, the first emulator for the Nintendo 64 console that ran commercial games. Initial discussion about HLE occurred to give context for the reasons behind some video games not functioning properly with the emulator.

Criteria for High-Level Emulation

In order for HLE approach to work, the platform in question must meet certain criteria. Namely, there must exist a higher abstraction level than the raw machine code to be executed, realised directly in the hardware, or by the operating system. In any case, it must exist outside of the software intended to run on the emulated platform, and have certain amount of standardisation and semantics for HLE to succeed.

Comparison to traditional models

Compared to LLE, HLE has a very different set of design decisions and trade-offs. First, as the complexity of modern (fifth generation and above) video consoles rapidly increases, so does their computational power, and also the distance to the commodity PCs, which are the most common host systems for the emulators. Thus, the requirements on the quality of the emulated services increases, together with the difficulty of doing so. Hardware chips in consoles are usually extremely specialised towards specific functionality needed by games written for them, often in directions which are completely different than those taken by the hardware in an average PC machine. For example, 3D graphics might be realised by an extremely fast integer processor, coupled with the assumption of main system memory being the same as graphics memory, taking away the separate step of loading textures.

Emulating such an architecture programmatically on a PC, characterised by the emphasis put on floating-point operations, and specialised graphics hardware with memory separate from the system memory would be extremely difficult, especially taking into account the scarcity of documentation typical for specialised, proprietary hardware. Even if such emulator could be created, it would be much too slow for use. Instead, with HLE approach, the emulator would be rather written to take the data to be processed, along with the operations list, and implement it using the means available on the host systems, ie. floating-point maths and GPU. The result is not only a much better match with the host platform, but often also significantly better results, as floating-point computation yields higher quality graphics suitable for high resolution displays available for PCs.

Advantages and disadvantages of HLE

Among the advantages of HLE technique, chiefly are the ability to utilise the existing host facilities much better and easier, the ability to optimise the results as the code and hardware improves, and much less or no work at all needed to achieve the desired end result, if an appropriate function is already provided by the host, as would be common in 3D graphics functionality. The progress of implementations is also much more independent of the detailed hardware documentation, instead relying only on the listing of possible functions available to the programmer, which is already provided by a software development kit available for each platform.

The disadvantages include much higher reliance on standardisation among target applications, and the presence of sufficiently high-level mechanisms in the emulated platforms. If there is no such mechanism, or applications fail to utilise it in one of the already supported ways, they will not work correctly, even if other, superficially similar applications function with no problems. Thus a significant amount of tweaks might be required to get all of the desired titles to run satisfactorily.

As a side-effect, HLE removes the common source of legality issues, by not requiring the users to provide it with the bootstrap software used by the original platform to create environment for applications to run in. Because the emulator itself provides such environment, it no longer needs system ROM images, bootstrap cartridge images or other software obtained from a physical copy of the emulated system, a process which usually resulted in an unclear status in the light of copyright law.

Future outlook

As the console systems progress into more and more complexity, the importance of HLE approach increases. Modern (6th and 7th generation) video consoles are already far too complex and powerful to facilitate their emulation using the traditional approach. Additionally, some systems (notably Xbox) are themselves little more than a standardised PC machine, making it wasteful to try and recreate the hardware using PC as the host machine. Thus HLE increasingly becomes the only sensible approach.

External links

* [http://www.zophar.net/n64.html Nintendo 64 Emulators]
* [http://www.emulator-zone.com/doc.php/n64/ultrahle.html History of UltraHLE]
* [http://www.emuunlim.com/UltraHLE/old/techinfo.htm UltraHLE - Technical Information] : an overview of low-level CPU emulation and high-level co-processor emulation in UltraHLE


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • LAN Emulation —    Abbreviated LANE. An Asynchronous Transfer Mode (ATM) specification that defines ways of connecting legacy local area networks such as Ethernet and token ring to an ATM backbone, allowing ATM to replace older and slower backbone circuits.… …   Dictionary of networking

  • Hardware emulation — is the process of imitating the behavior of one or more pieces of hardware (typically a system under design) with another piece of hardware, typically a special purpose emulation system. The goal is normally debugging of the system being designed …   Wikipedia

  • Emulator — This article is about emulators in computer science. For a line of digital musical instruments, see E mu Emulator. For other uses, see Emulation (disambiguation). DOSBox emulates the command line interface of DOS. In computing, an emulator is… …   Wikipedia

  • MAME — Developer(s) Nicola Salmoria and the MAME Team Initial release February 5, 1997; 14 years ago (1997 02 05) …   Wikipedia

  • N64-Emulator — Ein Nintendo 64 Emulator ist ein Computerprogramm, das die Spielkonsole Nintendo 64 auf einem PC emuliert und damit N64 Spiele auf einem PC lauffähig macht. Neben dem einfachen Emulieren des Originalsystems versuchen Mitglieder der Emulatorszene… …   Deutsch Wikipedia

  • Nintendo-64-Emulator — Ein Nintendo 64 Emulator ist ein Computerprogramm, das die Spielkonsole Nintendo 64 auf einem PC emuliert und damit N64 Spiele auf einem PC lauffähig macht. Neben dem einfachen Emulieren des Originalsystems versuchen Mitglieder der Emulatorszene… …   Deutsch Wikipedia

  • Project64 — Ein Nintendo 64 Emulator ist ein Computerprogramm, das die Spielkonsole Nintendo 64 auf einem PC emuliert und damit N64 Spiele auf einem PC lauffähig macht. Neben dem einfachen Emulieren des Originalsystems versuchen Mitglieder der Emulatorszene… …   Deutsch Wikipedia

  • Console emulator — A console emulator is a program that allows a computer or modern console (cross console emulation) to emulate a video game console. Emulators are most often used to play older video games on personal computers and modern video game consoles, but… …   Wikipedia

  • Video game console emulator — Not to be confused with Terminal emulator. A video game console emulator is a program that allows a computer or modern console (cross console emulation) to emulate a different video game console s behavior. Emulators are most often used to play… …   Wikipedia

  • Microsoft Macro Assembler — Developer(s) Microsoft Stable release 10.0.30319.1 / April 12, 2010; 18 months ago (2010 04 12) Operating system Microsoft Windows and MS DOS …   Wikipedia