Why Can't We Have Fast PSX/N64 Emulators
Lost Soul - October 30, 1997
Recently (the past 2 years), many emulators for various machines have appeared, those are great events for all the emulator lovers, those who like to recall their memories of 'the best' video games as they remember, and of course the console gamers.
It seems that those who when born during the '80 aren't satisfied with the current emulators, they want to have emulators for the most recent consoles, they want to save some money (they actually don't save a thing, since they could buy a well equipped console with many games for the same money they paid for their computer) in playing on emulators for saturn, N64 and PSX, that's why they keep looking for emulators for these machines and hope that every rumor about fast emulators for the mentioned consoles is true.
In this article, i'll explain why isn't it possible to code a fast emulator for these machine (note; i say that it's impossible to code a fast emulator, i'm not saying that it's impossible to code an emulator at all).
The basic idea behind emulators is 'emulating', they take a command that an original processor had to process and emulate it correctly. (we must remember that a different processor cannot interpret the command since it's a whole other processor)
In order to emulate an alien command, the processor has to go trough several commands of his own which do interpretation (instead of the original processor). this means (for example) that if the PSX processor had to process 10,000 commands to draw a line, it would take the 'emulator processor' over 500,000 commands to do the same things (x50 slower!)
In brief, for each command (CPU CYCLE) for the original we pay much more commands on the emulator cpu!
- When we dealt with 8bit machines, which had Z80 processor that was running at 1Mhz, our +133Mhz computers were fast enough to emulate Z80 fast enough.
- When we deal with 16bit machines, their processor is running at about 8Mhz (x8 then z80), this makes emulating much slower for 2 reasons:
- The ratio between the speeds of the 'original processor' and the 'emulator processor' is smaller, this means that it's more difficult for the 'emulator processor' to emulate things fast enough (As they were on the original processor)
- Emulating a single command of advanced processor (the 16bit processor are advanced comparing to 8bit ones) takes more commands on the 'emulator cpu'.
Why are Emulators Written in ASM Faster?
Assembly can access the processor (emulator processor) and the memory faster then any other programming language, this makes emulating faster.