this post was submitted on 01 Sep 2024
11 points (86.7% liked)

nostupidquestions

112 readers
1 users here now

founded 2 years ago
 

I'm not asking why emulators run slow in general. I know there's a performance hit when you're faking being another OS. That's not what I'm asking, but that's all my web searching results.

I mean the game plays fine until it gets to a certain point in a certain level that I remember running slow all those years ago. Like there are 20 enemies on the screen or something and that's the same way the NES would lag 40 years ago.

The emulator is on my PC, which has orders of magnitude more power. Even accounting for emulation's inherent performance hit, it seems like it should be able to handle it.

top 7 comments
sorted by: hot top controversial new old
[–] KickMeElmo@sopuli.xyz 19 points 3 months ago

It's emulating the hardware of the system, which includes its limitations. Some emulators are capable of overclocking to fix that, though it won't have desirable results in every game. It also can make games significantly harder. One of the Gradius games is known for a section where slowdown makes it viable to beat.

[–] gencha@lemm.ee 7 points 3 months ago

The thing is, you don't want to "fix" that.

Your x86 is a supercomputer from an alien world compared to an NES. It's not just extremely faster, it works in entirely different ways physically.

Some features of old console games rely on a deep understanding of the entire hardware of the console. As you wrote the game in assembly language, talking directly to each individual hardware component, you had to follow certain rules from the operating manual. There is no operating system doing this for you. Now, what happens if you don't follow the manual strictly?

There is some undefined behavior that still works reliably, if you just get the timing for a certain instruction to a component just right.

If you now were to naively interpret the instructions in an emulator, even at exactly the right timings according to the frequency of processor, the game would suddenly be broken, because your emulator is missing micro corrections for signal delay that the original console had due to physical properties.

So even making the game run as it would on the console is a major challenge.

If you add optimizations in one place, because of your one level stuttering, it might break dozens of other games. The emulator doesn't want to be a software to play your game as well as possible. The emulator wants to replicate the way the original console worked as perfectly as possible. Your game stuttering exactly the same way as you remember it is a sign of a good emulator.

[–] mercano@lemmy.world 5 points 3 months ago

The NES can only render 8 sprites per scan line. Games knew about this, and some, like Zelda, would double render the frame if it detected more than 8. This has two effects: Some sprites would flicker, as they’re only being drawn on one of the two passes, as the frame takes twice as long to draw, resulting in a slowdown. This behavior is part of the game, and would need to be patched out if it were running on an emulator that does away with this restriction. (However, because the emulator is no longer 100% faithful to the original hardware, some people might choose not to use it.)

[–] desentizised@lemm.ee 3 points 3 months ago* (last edited 3 months ago)

Yea like others have said, you're operating under the assumption that the shortcomings of old hardware require modern revisionism. I guess what makes this particularly unattractive with that specific era of videogaming is that games ran so close to the hardware that overclocking it (in actuality or virtually) doesn't just fix those edge cases (if at all).

Most games/software developed for chips like that of the NES rely on a predictable environment. You can't possibly know how a specific game will react to an increase in clockspeed.

Later generations like the PS1 are less susceptible to this. Emulators of the PS1 can't just bump the clockspeeds, they can also run at modern resolutions like 1080p and higher.

[–] wesker@lemmy.sdf.org 1 points 3 months ago* (last edited 3 months ago) (1 children)

why do emulators emulate?

It's in the name breh.

[–] GrayBackgroundMusic@lemm.ee 3 points 3 months ago (1 children)

This community is no stupid questions, it should also be no stupid answers to prevent stuff like this.

[–] wesker@lemmy.sdf.org 1 points 3 months ago

I'd like to think my answer was succinct.

emulate

To compete with successfully; approach or attain equality with. To imitate the function of (another system), as by modifications to hardware or software that allow the imitating system to accept the same data, execute the same programs, and achieve the same results as the imitated system.