eli5: Why do we need emulators to play old games? why can’t we just make the games work without the emulator?

738 views

eli5: Why do we need emulators to play old games? why can’t we just make the games work without the emulator?

In: 409

33 Answers

Anonymous 0 Comments

now, let me tell you a story from the days of old:

*long, long time ago, in the land of home 8 bit computers and 386/486 PCs…*

back then, hardware could not do as much as it can do today. so programmers reverted to some cool trickery (bordering magic sometimes 😉 to squeeze as much, from what they had, as was possible (and even a little bit more sometimes ;). this included undocumented functions of hardware and software. very often software(s) like games, demos (demoscene was notorious for using various hacks to make stuff work) were talking to hardware directly through i/o ports, direct memory access, reprogramming hardware’s behaviour at lowest possible level (which is also the quickest in execution of code.). this was done in assembly or even sometimes in machine code (lowest possible programming method – sometimes called *bare-metal programming*). so…. fast forward some 30 years, and we have memory protection, hypervisors, drivers running in unprivilleged mode and all this new stuff that makes modern computing possible. this does not allow direct communication with hardware, rather through series of “gatekeepers” so to speak. API’s, drivers, frameworks and similar.

1. todays hardware is not compatible with old software

2. we use hardware differently today (some 97-98% of the time) than it was used 30 years ago.

3. emulated software also could’ve been running on entirely incompatible platform (MIPS, PowerPC, or any other for that matter).

Anonymous 0 Comments

If youre not emulating, or you have the old console and games still working (which implies a lot of money and effort) or you have some ports (Even when some of this ones are emulated, like Mario 3d all stars)

Anonymous 0 Comments

At the base of all programs are things that the hardware (the actual physical computer) can do. Programs call on the hardware to do its pre-made (designed) operations (hardware can only physically do certain specific things, things it is made to do). Operating systems tend to combine several machine-level operations into specific actions, so we can just write a word up in the operating system, and it sends a series of instructions down to the machine, which will then automatically do the (possibly many) physical steps involved. The program code also does this (takes one instruction and converts it into a series of machine actions).

We can write programs always down at the machine level, but it is long and arduous. Easier to make common tasks run as automatic routines called by a single instruction. Like, when my mom told me to clean my room, I didn’t need her to tell me every single thing I had to do while cleaning: that phrase “clean your room” told me that I had to do a number of tinier tasks. That is sort of how a program works. Mom could have said “gather your dirty clothes and dump them in the hamper, put all the books on a shelf, organize your toys and put them in the closet, and then vacuum the room including under your bed”, but “clean my room” told me all of those things so easier for everyone to just use “clean your room”.

The thing about it though, is that the program calls for a sequence of base level actions, and those actions are very specific to the hardware (the actual physical computer). When we make better computers, we change basic functions in the process, so you have to change the system or program codes to make the computer do what the other one would do for the very same instructions. Be like having a babysitter that thought “tidy your space” was how to tell me to clean my room. Say what? tidy my space? what’s that mean, exactly?

Emulators are just shells that allow taking the old instructions and converting them into the way the new system will do those same actions. It is a translator, basically. The new hardware speaks a different language than the old program, so a translator is needed. Easier to use a bilingual intermediary than to take every program and rewrite it for the new language.

Some words can still get lost or confused in translation, so bugs are possible.

Anonymous 0 Comments

Old games know how to drive the ancient Ford Model T. When you try to make it drive a modern Tesla, it’ll try to crank the engine and not only will it not find a crank, it won’t even find an engine. It has no idea what to do.

There are two ways to get it driving a Tesla.

You can just teach it how to drive a Tesla. But that’ll take time, and you’d have to teach every individual game.

The other way is to attach adapters to the Tesla so that they can just use it like a Model T.

Teaching a game how to drive a new card is called porting it. Meanwhile attaching adapters is emulation.

(In reality, ports will sometimes/often have an emulator in the background. But there’s usually more work put in to make them work better and more reliably for that specific game.)

Anonymous 0 Comments

Driving analogy.

Imagine it’s a couple of generations ago – late 1940s, North America. You learned how to drive on a car with a gear lever and clutch pedal (US “stick shift”). You know exactly how to change gear, and when, and you drive around to your heart’s content.

Fast forward a couple of decades. You sell your loyal old vehicle and buy a new one. But this one has the latest technology – an automatic transmission. And let’s say (for the purposes of the analogy) that you’ve never heard of automatics, and you’re too cautious to experiment. So you get into your new vehicle – and just sit there, unable to get it moving, because what you used to do simply doesn’t work – you want to press the clutch pedal, and there’s no pedal to press. What you need is help in turning your old driving methods into ones that work for your new vehicle.

That’s basically what running an old program on new hardware can be like. The program wants to do the equivalent of putting the car into gear by depressing the clutch and then moving the gear lever – but the new hardware doesn’t have a clutch pedal to depress (or a lever to move); it’s waiting for the program to select “Drive”. Easier to do, but the program doesn’t and can’t know that. And the program certainly has no way of working out what to do instead. It just tries what it knows. What it needs is “something” to sit between it and the new hardware, that understands both, and that can translate the things the old program wants to do into things the new hardware understands. That “something” is an emulator.

(I actually had a very minor variant of the above when I bought my current vehicle – got in, turned the key in the ignition, and nothing happened. Sat there wondering what to do next. The issue was that I needed to depress the clutch as well. None of my previous vehicles had needed that, and nobody thought to mention it to me. Basically my old mental code didn’t work on the newer hardware.)

Anonymous 0 Comments

We do not necessarily need emulators to play old games it is just a lot easier that way most of the time. Most of the time the only thing we have to work with from old games is the ROM file which we would view as assembly instructions. Converting these instructions game per game would be quite involved compared to simply making an emulator.

If the source code to these games was release that might make it easier. You also have the issue of the company that owns the rights of these games going after people for doing things like this. Nintendo is pretty infamous for doing this. If you look at the game Doom the source code is well written and it has been ported to basically everything due to that.

The emulator itself is also typically legal where a unauthorized port would not be.

Anonymous 0 Comments

When I was a kid, we had a super fast PC, a full on 486. It had a “turbo” button, and I never really understood why. You always left it on or the thing would be super slow.

Then I got an older 286 game from a friend to play. It was over in like two seconds and I died.

Turned off the turbo and all of a suddenly the over-in-two-seconds-game was playable! The super fast 486 processor made the game run at like 100x speed and turning off the “turbo” button made it run like a 286.

I’m sure that programming is a lot more sophisticated today, but it was remarkable how just a little hardware adjustment can really throw things off.

Anonymous 0 Comments

When a game is made, it’s made to be able to operate in a specific operating system. This can be a console’s operating system, or a computer’s. This is why there are separate console/OS versions for each game. The game has to have a way to interact with the machine and tell it what resources to use and how, otherwise it can’t use the hardware to do anything.

In the case of older games the emulator is a program using whatever hardware and OS a computer has to emulate a console, so that the game can run because as far as it is concerned it’s running in a console. Obviously nobody could have made an old game not need an emulator in the future because he’d have to be able to predict the future to do that.

What we can do however is make emulators native to consoles and computers, but officially no company can do that legally except for its own products, so a Windows computer may be able to run a game designed for Windows XP, or a current console could be made to be able to play older games from the same console line, and it’s been done in some cases. But generally it’s not done because companies can’t profit directly from it, whereas they can profit from rereleases of older games as remakes. Also each company is contained within their own product lineup, whereas unofficial non profit emulators can make a Windows PC play a Nintendo or Playstation game.

Anonymous 0 Comments

I’ll take a shot at a real ELI5:

Your little 1-speed bicycle works pretty well in our flat driveway with nice, smooth concrete and you’re not allowed to go much farther than that right now. But the family has fallen on hard times and we’re moving to your uncle’s old trailer way out in the woods. The driveway is a rough dirt path with big holes of mud and plants and stuff growing in it. You’re allowed some freedom to roam a bit on the family property, but your bicycle doesn’t do so well out here in the woods. It’s still the same bike, but the environment in which it operates has changed a lot. What you really need is a bike designed for off-roading, but those are expensive and your family can’t afford it right now. Besides, you liked your little bike.

So what can you do if you still want to ride your bike? Well, you can put your bike away temporarily and only break it out when your family is going to visit your grandparents in town where there is nice, flat concrete to ride on. Maybe your friend has a nice place to ride bikes and your Mom will take you over there sometimes. In this analogy, that would be like maintaining a very old computer that can still run the game. You can do that, of course, but it gets more challenging over time and there are aspects that you don’t have control over.

OR

You can ask your dad to help you put some grippy, knobby tires on your bike to help it still kinda-sorta work out there in the woods. Maybe he’s handy and can add some gears to it to make it possible to go up and down hills. Maybe it needs brakes added to it so you don’t slide into a tree and hurt yourself. This is the equivalent of an emulator trying to help your old game work in a new environment that it wasn’t designed to run in.

Anonymous 0 Comments

A guy in Florida grew up in Canada, and wants to play some ice hockey. As a kid, he would just go to any old lake in the winter, and go for a skate on the frozen lake, or the many backyard/park outdoor rinks scatted everywhere. The Sport was designed for Winter/Ice, but In Florida, he can’t, there is no natural ice for the man to go skate on, so he has to go to a Ice Arena where they emulate Cold temperatures to get ice.

That’s the best analogy I can give, The Older Games were built for those older Operating Systems and you can’t just always run that older game on a different OS,

Some games can be played, or redesigned to work on the newer OS(called a Port generally, “that game was Ported to PC from Xbox.”), going back to the Ice hockey, maybe you use rollerblades instead of Skates, and play on the street, its often not as good as the real thing(Crappy PC Ports from Console, and vice versa) but you can still play the sport now. It often costs a bunch of money to do this however, and it’s often far cheaper for people to make a fake OS(Arena) to emulate it inside your current OS