I understand that emulators have to convert “console-language” to “emulator language” which causes stutters and otherwise poor performance.
But how can that same emulator play the game at 5-10x the speed using speed up features without sacrificing gameplay, loading screens, or resolution?
I just played through an emulated gamecube version of Twilight Princess with a 4K texture pack, which had its fair share of stutters. But I could also hold the speed-up button during loading zones and while saving my file and the game would handle it just fine.
If it requires extra processing power to emulate, how come emulators can speed the game up to such high speeds?
In: 15
Emulators use tricks when running at higher speeds.
Not all instructions in the console take the same amount of resources to emulate so one way to speed it up is to just ignore certain types of graphics or audio commands. If I’m at 4x speed I only need to actually draw every fourth frame to the screen for example. (Though there are some games where this does not apply because they’re doing atypical things with the graphics data for example).
So something like saving where almost all the CPU time is spent writing a file and not on hard to emulate things you can speed up to take advantage of better hardware on your computer compared to the original hardware.
Broadly speaking, it depends on what console is being emulated. Any console more than 15 years old would have hardware that runs very slow compared to new PC hardware. We’re probably talking hundreds or maybe even thousands of times slower. An emulator software on a modern PC would need to have some intelligence to “slow down” the execution of the console software to make it playable. The emulator can remove some of that “slow down” to speed up the game.
Because old consoles’ original CPUs were much weaker than standard PC CPUs even back then, it just so happened that games were decently optimized (for the time). Example iirc the Nintendo 64 ran on around 1 core with 90 MHz. Compare that to today’s PCs running at 5 GHz up to 16 cores potentially. All the emulator does is make an environment sandbox to suit the game’s needs and adjusts accordingly. If you push the speed of it it will use more resources (not a lot for older systems)
I’ll try to give you an analogy.
You have 2 legs and you can adjust the speed of which you move from point A to point B adjusting many things. The start position and goal are irrelevant. How hard you push against the ground, how long or short your steps are, how much air you take and release are major factors to decide speed. Let’s say walking normally is 100% of the emulator’s speed, that’s the correct way to run it. And most optimized. You can also lower the speed of the emulator similarly to how you take a slow walk on an ocean coast. You may also decide to reach the other end faster, that’s when you start to jog or even sprint.
It depends. There was another question here on ELI5 recently, asking about how computers can wait for things, instead of running movies and games as fast as they can. It’s all about that clock.
One type of emulator will bookkeep time manually for the virtual game console. Conversely, this also means that it can simply make that virtual clock tick faster, at the price of the whole system doing a lot more work in a second.
Another type of emulator will rely on your actual machine’s clock, and instead will intercept the game’s attempts at trying to wait for some time period, and manipulate that value. This will still require more performance, but not to the same extreme.
And sometimes the emus will have game patches. With game patches you can specifically target the game’s game simulation related code paths, and only speed up what needs to be sped up, ensuring minimal (but still very much nonzero) performance impact.
There are other approaches too, but it would be too long to cover them all.
There’s no free lunch that you might be thinking however.
Latest Answers