Follow TV Tropes


Media Notes / Emulation

Go To
NESticle, one of the first and most influential video game emulators of all time, running the 1984 Nintendo Entertainment System game Balloon Fight on Windows 95note .

"With the development of emulator programs for minicomputers such as the PDP-11/70 and mainframes such as the IBM 370, and the release of older software on a free-use for non-commercial purposes, one can run old programs from these systems in software emulation on today's PCs at speeds as much as 100 times as fast as the original machine ran."
— Introduction to the Hercules IBM mainframe emulator

Emulation, at least in the context of this page, is using a computer program to simulate another computer system. Such a program is called an emulator.

This can be done for a wide variety of computers—any computer, theoretically, can be emulated. However, you're probably here for the definition that involves games. Yes, emulators that run on standard home/office computers have been developed for most consoles, as well as for older computers, for running games which originated on those platforms, allowing a user to play a game on a non-native platform.

Not surprisingly, emulation does take more processing power than the original, varying wildly depending on how similar the original platform and the one running the emulator are. For example, 80x86 emulators like DOSBox run at nearly native speed on typical 80x86 PCs, while emulators for exotic architectures like PCSX2 and RPCS3 will drag all but the mightiest multicore 80x86 rig to its knees.

The most popular computers to emulate are Arcade Games and games consoles, although emulators for other systems do exist. Most emulators are written by fans/enthusiasts, as a technical challenge, as a way of storing computing history (MAME and MESS have this as their primary goal),note  or as a way to run games on something other than what they were written for in the first place. A few emulators are written by the official manufacturers, such as Nintendo's acNES for GBA (used for the eReader, Game Boy Advance extras in Animal Crossing, and Classic NES Series) and the emulators used for Virtual Console titles.

In order to play games, emulators require the game software as well. These usually come in the form of ROMs (for cartridge-based games) and various disc image formats (for disc-based games). Publicly distributing ROM dumps (pirating copyrighted games) without permission is generally considered illegal, with possible, nebulous, and debatable exceptions for “fair use” in some cases. (Though a handful of video game consoles like the GCE Vectrix are now entirely within the public domain, including the games, and can be exchanged freely.) The veracity (and legal validity) of these beliefs have yet to be formally ruled on in either direction; and thus, talk about emulation (especially talk about ROMs themselves) is generally a very dangerous subject on Internet fora, such as the GameFAQs fora and others, which may auto-delete posts that direct other users towards emulation sites, possibly even if they don't link to games themselves, partly due to legal reasons. Morality issues are even grayer, so it's probably best not talk about it, lest you start up rampant Flame Wars, or worse yet, philosophy students bandying about terms such as "utilitarianism" or the dreaded "Kant's Categorical Imperative." There's really no reason to share such information anyway, since most web searches can provide it handily. (Interestingly devices called "flash carts" exist that allow you to play these ROM files on their original consoles. These tend to be rather pricey, but people that consider emulation in general to be sacrilege love them.)

Nevertheless, the lure of classic games is too much for many gamers to resist, especially for games that are long out of print, were never sold in one's part of the world, were never (or were poorly) translated, or do not exist in a portable format. In addition, emulators tend to add lots of comfort features such as state freezing, upscaling, control remapping (particularly helpful when emulating consoles that have terrible controllers to begin with, like the Atari 5200), cheats, etc., and also allow gamers to study, modify, and find interesting things to do with these games.

Emulation services such as Nintendo's Virtual Console and Time-Warner's GameTap are an attempt to replace illegal emulation by offering something similar legally: Cheap versions of classic games that you can download directly to your system. Nintendo has even called the Virtual Console “iTunes for video games,” referring to Apple's attempts to reduce Internet music piracy with the use of a similarly functioning but legal substitute. On the fans' side, ZX Spectrum fans at the World Of Spectrum have gone all out to ask the original producers of the games for permission to distribute them freely, which has been granted in the majority of cases, the exceptions mostly being games published by companies that still exist and fear that they would compromise the integrity of their current catalogues by allowing free download of something that ceased to be profitable to them in 1993. For those that really don't care about the legality of this there's also various emulator consoles out there, most of them running on Android OS. These take on all kinds of different forms, from full arcade stick/button rigs meant to be hooked up to a TV to handhelds the same size as a phone. They can vary wildly in price and quality, so careful research should be done before attempting to acquire one. Reddit and Discord are your friends here.

Emulators are also a popular way to make a port or Updated Re-release on sufficiently powerful hardware, especially given that making a native port can be far more difficult for a variety of reasons. Many older games were coded using assembly language or other platform-specific tools, meaning that porting them to run natively on other systems would essentially require rewriting them from scratch. The source code for some games — even big ones —is outright lost (either due to misplacement, uncontrollable damage, human error, or just plain throwing it out due to it not being seen as practical to keep), which further makes emulation a favorable method of porting, provided that the emulator itself can faithfully run the game(s) in questionnote . This can be done officially, or sometimes unofficially in the case of ROM hacks that expand a game beyond the original size of its cartridge, for example. Emulation can also make Compilation Rereleases or services like Virtual Console easier to implement, as it means only having to create one piece of new software instead of porting each game individually.

Even mobile gaming is now subject to Emulation, allowing the PC gamer to sit down in comfort at a 30-inch screen and study a game in depth— and hack into Freemium and Microtransaction-heavy games to their heart's delight. Due to the weakness of a Mobile's specs compared to even a mid-range PC, lag becomes completely irrelevant.

Despite the legal issues with this, some games have been given the blessing of their creators to be spread via ROMs once it becomes apparent they will fade to obscurity or never get released in a certain region. Mother 3 is an example of this; Shigesato Itoi supported the effort to get the game translated for English-speaking gamers.

In terms of how faithful the emulator tries to simulate the original system, emulators can be categorized into these main categories:

  • Low-level emulation (LLE) seeks to simulate the original hardware. At a basic level, most emulators perform LLE by translating the target system's machine code into something the host machine can run. More advanced LLE-based emulators also seek to simulate the proper clock speed of the system or in the most extreme cases, the individual transistors and logic gates the system is made of. Higan is one such example of an LLE, where author byuu took the herculean effort of reverse-engineering every single enhancement chip used on SNES games. Another key point in Higan is it syncs up every piece of hardware its emulating at the original input clock speed of the SNES at ~21-24 MHz where most other emulators sync at a much slower rate. This synchronization rate allows games with programming tricks (such as messing with the PPU while it's drawing something on the screen) or odd timing bugs to actually work.
  • High-level emulation (HLE) implements the system's features rather than the hardware itself. For example, rather than emulate a Graphics Processing Unit of a console, the emulator intercepts the instructions the game sends to what it thinks is a GPU and translates it to a Graphics API that the host computer can run. This started becoming popular during the The Fifth Generation of Console Video Games, made famous by Bleem!, a PlayStation emulator, and UltraHLE, a Nintendo 64 emulator which made headlines for running (major) Nintendo 64 titles at a playable framerate on hardware of the time. Used almost exclusively by emulators of The Fifth Generation of Console Video Games and after due to increasing hardware complexity making it impractical to simulate the hardware directly
  • Compatibility Layers are an even higher form of emulation, although it's generally not considered emulation as they don't typically simulate another hardware platform. Or another way of putting it, these emulate just the software portions of a computer system. Compatibility layers take advantage of applications that make system calls to an OS or firmware to perform some functionality (such as "get inputs from a controller"). Since the signature of these system calls can be known, the compatibility layer looks to see if the signature is trying to be executed, replacing it with a native system call. A famous example is Wine, which allows Windows applications to run on Linux by substituting Windows-based system calls for Linux based ones, while returning any data the application is expecting as it would get in Windows. Another one is partly how Xbox 360 compatibility works. While there's still some re-translation of Xbox 360 code to the Xbox One, system calls that the 360 game makes can be mapped to something that the Xbox One can handle, to the point where the 360 game thinks that it's running on the 360's OS.

The choice between high or low-level emulation has led to some arguments from casual players and purists, the former arguing that HLEs could be developed faster and often could potentially run better on lower-end hardware or can run games better than the original hardware (e.g., the GameCube/Wii emulator Dolphin can play games at HD resolutions just fine even though the original consoles can't). So long as popular titles can be played, HLE is enough. LLE proponents argue for preservation and conservation of what can now be seen as a cultural legacy— as HLEs don't provide an accurate reference on the inner workings of a device, it therefore is unsuitable for purposes of recreating and/or documenting vintage hardware. They also argue that while HLE is easier to get start running, time spent on LLE pays itself better in the long run. In practice most modern emulators use some combination of both approaches. Typically the CPU portion is LLE while everything else is HLE.

Generally speaking, the more faithful the emulation, the more accurate it will be which reduces the chances of bugs and other emulation issues, but at the expense of higher performance requirements. Many consoles have custom hardware which will contain some instructions and capabilities that are not available in off-the-shelf PC hardware. In the best case this can be intercepted and replaced, in the worst case it might need specific workarounds for a title to be developed, or it might cause bugs and severe slowdown. As mentioined above, emulation often uses a mixture of approaches to find the right balance between performance, compatibility, and being able to develop it in the first place (since often reverse engineering is needed; for some reason console manufacturers don't seem to want to release their highly confidential internal documentation, source code, and development tools).

Where practical, having the software ported over to a new system is always going to be the best option, from a performance point of view... assuming the port is a Polished Port and not a Porting Disaster. In more recent years, publishers have gone out their way to port or re-release older games on more modern systems, and the ever increasing cost of game development has made it so games are often released on multiple platforms to be available to the widest possible market. Additionally, with console switching from highly custom designs and architecture to a more PC-esque one, this not only makes it easier to port games between systems, but also often allows newer consoles to play the older games natively, maybe with a compatibility layer on the backend. This said, the need and desire for emulation is unlikely to go away any time soon.

Emulators with pages on TV Tropes: