[Classic Gamer Magazine introduction. This article was originally published in CGM volume 2, #1 (April 2004). This is the article as I submitted it and does not exactly match what was published.]
If
you’re a classic gamer and are on the Internet, odds are you've
at least heard of emulation and emulators. You may even have a hard
drive full of ROMs and a computer desktop full of emulator icons at
home. If that’s the case, you might as well go read this issue's
“MAMExposed” by Scott Marriott. If you're the one saying,
“what's a ROM?” (Yes, you!
The one in the back!), keep reading.
An
emulator is simply a program that lets one computer imitate a
different computer. When I say “computer,” I mean it in almost
the most generic sense. In this case, an electronic device that uses
microprocessors to, er, compute. For example, there are emulators
that let your Apple Macintosh act like a PC, your PC pretend it's a
Sony PlayStation, and your PlayStation think it's an Intellivision.
(And for some real fun, try running the Intellivision emulator on
your PlayStation emulator on your PC emulator on your Mac.) Sounds
simple enough, right? “So,” you ask, “how do they work?” I
wish you hadn't asked that.
Creating
an emulator is not a simple task. It takes a lot of technical
know-how and programming skills. It's really more complicated that
I can explain in this limited space, but let's see if I can cover
the basics. Since this is Classic
Gamer
Magazine,
we’ll limit our discussion to home video game consoles and
coin-operated arcade video games. For all video games, there are
four primary areas to consider: video, audio, controls, and central
processing unit(s). These are collectively known as the hardware.
The
CPU emulation is really the heart of an emulator. It's the CPU
that runs the program that is the game, whether the game is contained
in a chip on a cartridge (as in home consoles) or on several chips
soldered to a printed circuit board (PCB) (as in arcade games). In
order for an emulator to run a game, you have to make your computer
processor run as if it were the console's or coin-op's CPU.
In addition to the CPU, there are probably other processors that handle the video, audio, and controls. When the emulator programmer creates these components, he must not only have them imitate the original hardware, but translate their input or output to the emulator's host system. For example, you can't hook up your Atari 2600 directly to your PC monitor. They simply aren't compatible. Similarly, your sound card isn't a TV speaker and there's nowhere to plug in the joystick. So the emulator has to convert what was once a TV (or arcade monitor) signal into something your video and sound cards can understand. Likewise, it has to convert certain presses of the keyboard into something that appears to the emulated CPU like pressing the joystick and buttons.
So, to reiterate, an emulator is a computer program that imitates the hardware of another computer. Now, when it comes to computers, where there's hardware, software usually isn't too far behind. In the case of video games, it's the game itself that is the software. When you plug a cartridge into your ColecoVision, you're actually connecting a Read Only Memory (ROM) chip to the CPU. When you turn the console on, the CPU then executes (runs) the code found in the ROM chip (or just ROM for short). Similarly, when you turn on an arcade game, the CPU reads the software in the ROM chips connected to it.
Now, most people don't have the hardware to connect a cartridge to their computer. This is where ROM images (or, again, just ROMs for short) come in. It is possible to buy or even make the proper cables and/or hardware to connect a cartridge or arcade game ROM chip to a computer. Then you can use special software to copy the software contained in the ROM to a file on your computer. This file is called a ROM image. The ROM image (or, say it with me, ROM for short) is identical to the code that the console or arcade game runs. Thus, when used in conjunction with a good emulator, you can get an experience that's almost just like playing the actual console or arcade game.
You might be wondering why you didn't hear about emulation until recently. [Author’s note: “recent” is a relative term here. This article was originally written for the non-existent seventh issue of CGM back in 2001.] This time, I’m glad you asked. The primary reason is that computer processors have only recently gotten fast enough to handle emulating other systems. There's a lot of overhead in getting one computer processor to emulate another. It wasn't until the mid-1990s that personal computers had the power to emulate a 1MHz CPU! And then programming an emulator generally required using assembly language. Assembly language is a very low-level language for directly programming a computer. It's basically only a couple steps removed from the actual zeroes and ones your computer uses. The advantage is, because you're practically talking the language of the computer, programs written in assembly are (generally) very fast. But because it's so rudimentary, few people take the time to learn it. Thus, there were few people that had both the interest and the ability to write emulators.
By the late 1990s, computers were powerful enough to handle emulators written in higher-level languages like C. A program written in a language like C is converted down to assembly language by what's called a compiler. But even the best compiler isn't going to create an assembly language program as efficient as that written by hand. (At least that written by the hand of an experienced assembly language programmer.) Thus, such programs run slower. This has been made up for in processor speed.
To give some early history, Digital Eclipse released their Williams Digital Arcade series for the Macintosh in 1994. The games of the series were Defender, Joust, and Robotron: 2084. These were the world's first commercially released arcade game emulators. The following year, Activision published their first Atari 2600 Action Pack, which was an Atari 2600 emulator accompanied by 15 games. This was the first commercially released home video game console emulator. These two programs, along with several independent efforts that happened to be taking place about the same time, started the emulator revolution. At the same time, the Internet was starting to really take off. This allowed programmers to better share their works and communicate with each other to compare notes.
It also made it easier for those few with the ability to make ROM images to share them with others. This brings us to a legal technicality. While there is (generally), nothing illegal about creating or using an emulator, most of the games they run are still the property of the companies and individuals who created them. Their copyrights won't expire for many years yet, and some companies are intent on defending them, as is their right under the law. Thus I feel I must point out that it is illegal to download ROMs from the Internet, particularly if you don't own the actual game.
The laws regarding “backing up” software muddy the issue some. Technically, the owner is supposed to back up his own software. However, since all copies are identical, once you've downloaded a copy, how could anyone tell that you hadn't done it yourself? Second, there are some questions as to whether laws allowing the backing up of software apply to software distributed on a robust medium like a cartridge. As best I know, these particular issues have not been tried in court because the companies that own the games don't generally go after the emulator users; they target those that distribute the ROMs on a large scale. Beyond the legal issues are the ethical ones, which I don't have nearly the space to go into here. Suffice it to say, you'll have to sort out for yourself whether breaking these laws is actually harming anyone or not. It's not an easy question to answer.
Regardless of your answer, today you can find an emulator for practically any home console or computer that was popular in its day. And even some that weren't so popular. You can also find emulators for thousands of arcade games. By far, the most popular is the Multiple Arcade Machine Emulator or MAME (www.mame.net), which currently emulates over 2600 unique games. Can you imagine an arcade with 2600 different games??? Well, thanks to emulation, you don't have to imagine it. You can have it in your home, filling up your computer's hard drive.
In addition to the CPU, there are probably other processors that handle the video, audio, and controls. When the emulator programmer creates these components, he must not only have them imitate the original hardware, but translate their input or output to the emulator's host system. For example, you can't hook up your Atari 2600 directly to your PC monitor. They simply aren't compatible. Similarly, your sound card isn't a TV speaker and there's nowhere to plug in the joystick. So the emulator has to convert what was once a TV (or arcade monitor) signal into something your video and sound cards can understand. Likewise, it has to convert certain presses of the keyboard into something that appears to the emulated CPU like pressing the joystick and buttons.
So, to reiterate, an emulator is a computer program that imitates the hardware of another computer. Now, when it comes to computers, where there's hardware, software usually isn't too far behind. In the case of video games, it's the game itself that is the software. When you plug a cartridge into your ColecoVision, you're actually connecting a Read Only Memory (ROM) chip to the CPU. When you turn the console on, the CPU then executes (runs) the code found in the ROM chip (or just ROM for short). Similarly, when you turn on an arcade game, the CPU reads the software in the ROM chips connected to it.
Now, most people don't have the hardware to connect a cartridge to their computer. This is where ROM images (or, again, just ROMs for short) come in. It is possible to buy or even make the proper cables and/or hardware to connect a cartridge or arcade game ROM chip to a computer. Then you can use special software to copy the software contained in the ROM to a file on your computer. This file is called a ROM image. The ROM image (or, say it with me, ROM for short) is identical to the code that the console or arcade game runs. Thus, when used in conjunction with a good emulator, you can get an experience that's almost just like playing the actual console or arcade game.
You might be wondering why you didn't hear about emulation until recently. [Author’s note: “recent” is a relative term here. This article was originally written for the non-existent seventh issue of CGM back in 2001.] This time, I’m glad you asked. The primary reason is that computer processors have only recently gotten fast enough to handle emulating other systems. There's a lot of overhead in getting one computer processor to emulate another. It wasn't until the mid-1990s that personal computers had the power to emulate a 1MHz CPU! And then programming an emulator generally required using assembly language. Assembly language is a very low-level language for directly programming a computer. It's basically only a couple steps removed from the actual zeroes and ones your computer uses. The advantage is, because you're practically talking the language of the computer, programs written in assembly are (generally) very fast. But because it's so rudimentary, few people take the time to learn it. Thus, there were few people that had both the interest and the ability to write emulators.
By the late 1990s, computers were powerful enough to handle emulators written in higher-level languages like C. A program written in a language like C is converted down to assembly language by what's called a compiler. But even the best compiler isn't going to create an assembly language program as efficient as that written by hand. (At least that written by the hand of an experienced assembly language programmer.) Thus, such programs run slower. This has been made up for in processor speed.
To give some early history, Digital Eclipse released their Williams Digital Arcade series for the Macintosh in 1994. The games of the series were Defender, Joust, and Robotron: 2084. These were the world's first commercially released arcade game emulators. The following year, Activision published their first Atari 2600 Action Pack, which was an Atari 2600 emulator accompanied by 15 games. This was the first commercially released home video game console emulator. These two programs, along with several independent efforts that happened to be taking place about the same time, started the emulator revolution. At the same time, the Internet was starting to really take off. This allowed programmers to better share their works and communicate with each other to compare notes.
It also made it easier for those few with the ability to make ROM images to share them with others. This brings us to a legal technicality. While there is (generally), nothing illegal about creating or using an emulator, most of the games they run are still the property of the companies and individuals who created them. Their copyrights won't expire for many years yet, and some companies are intent on defending them, as is their right under the law. Thus I feel I must point out that it is illegal to download ROMs from the Internet, particularly if you don't own the actual game.
The laws regarding “backing up” software muddy the issue some. Technically, the owner is supposed to back up his own software. However, since all copies are identical, once you've downloaded a copy, how could anyone tell that you hadn't done it yourself? Second, there are some questions as to whether laws allowing the backing up of software apply to software distributed on a robust medium like a cartridge. As best I know, these particular issues have not been tried in court because the companies that own the games don't generally go after the emulator users; they target those that distribute the ROMs on a large scale. Beyond the legal issues are the ethical ones, which I don't have nearly the space to go into here. Suffice it to say, you'll have to sort out for yourself whether breaking these laws is actually harming anyone or not. It's not an easy question to answer.
Regardless of your answer, today you can find an emulator for practically any home console or computer that was popular in its day. And even some that weren't so popular. You can also find emulators for thousands of arcade games. By far, the most popular is the Multiple Arcade Machine Emulator or MAME (www.mame.net), which currently emulates over 2600 unique games. Can you imagine an arcade with 2600 different games??? Well, thanks to emulation, you don't have to imagine it. You can have it in your home, filling up your computer's hard drive.
Postscript (12 June 2013)
This article was originally written for Classic Gamer Magazine volume 1, #7 in 2001. Yes, the one time I managed to get an article written on time — or was it even ahead of time? — the magazine folded. Unfortunately, CGM wasn't the only one. Syzygy and GameGo also disappeared about the same time. At first, CGM publisher Cav planned to publish the seventh issue on CD-ROM, but four months later, he realized that even that was to expensive a venture. So he planned to use our articles on the Classic Gamer web site to maintain interest until he could figure out what to do. Finally, in 2004, CGM was re-launched with volume 2 as a PDF document and this article saw "print." By then, however, I had other commitments and didn't write any further articles. (See the "Remembering CVG 101 and Classic Gamer Magazine" entry for more information on the magazine.)
That note about the article being written in 2001 was not included and that part was re-written, possibly not by me. Also, Scott Marriott's column was renamed to MAMEusements and my article edited to reflect that.
No comments:
Post a Comment