An
emulator is a piece of software that emulates a
system (that is, imitates it in such a way as to be functionally indistinguishable from the original : e.g. entering input/data/software for the original should have the same result as with the real system) on a computer sufficiently more powerful than the original system to make this feasible in realtime. Usually the subject for
emulation is a popular but superceded computer. However, it is possible to create emulations of all kinds of systems, electronic or otherwise.
A few years ago, emulators of microcomputers, coin-ops and games consoles became feasible on modern PC hardware. Initially, coders attempted to emulate these systems to the metal (e.g., a Sega Megadrive emulator would typically load a software emulation of a 68000, a Z80 and all the rest of the gubbins into memory - not as overkill as it sounds, in fact, you can emulate a full speed Z80 in Java). This method does not scale very well however, as an increase in the number and power of dedicated chips in later machines would be very computationally expensive.
So, for formats such as the N64, Neo Geo and Amiga (and of course, the Windows "platform" - in Wine) less "pure", but more efficient methods of emulation were devised. One downside of this shift from exact hardware recreation is that some software would now require specific alteration of the emulator to run as intended. In some cases, this results in the developer concentrating on getting specific programs to run and ignoring others.
It is problems like these, which become enormous obstacles with each increase in the subject system's complexity, that are causing WINE to take so long to be completed!
Another mission accomplished by
The Old Node Revival Squad