WEBVTT - How Video Game Emulators Work

0:00:04.160 --> 0:00:07.160
<v Speaker 1>Get in texts with technology with tex Stuff from how

0:00:07.240 --> 0:00:13.960
<v Speaker 1>stuff works dot com. Hey there, and welcome to tex Stuff.

0:00:14.000 --> 0:00:17.439
<v Speaker 1>I'm your host, Jonathan Strickland, senior writer for house stuff

0:00:17.480 --> 0:00:20.560
<v Speaker 1>Works dot com. And before I get into any of

0:00:20.560 --> 0:00:22.560
<v Speaker 1>this episode, I would like to let you guys know

0:00:23.040 --> 0:00:26.439
<v Speaker 1>I've got a cold. It's a bad one. Earlier this

0:00:26.520 --> 0:00:30.479
<v Speaker 1>week I was unable to speak. The people around me

0:00:30.560 --> 0:00:33.560
<v Speaker 1>rejoiced because they got peace and quiet for a minute.

0:00:34.280 --> 0:00:36.960
<v Speaker 1>But just letting you guys know, in case you're wondering,

0:00:37.000 --> 0:00:39.760
<v Speaker 1>like why is Jonathan sound so weird or rather more

0:00:39.840 --> 0:00:43.720
<v Speaker 1>weird than he normally sounds, is because I am recovering

0:00:43.800 --> 0:00:47.640
<v Speaker 1>from said cold and my voice is probably somewhere between

0:00:47.680 --> 0:00:51.479
<v Speaker 1>eighty and nine percent back. So um, got that out

0:00:51.520 --> 0:00:53.960
<v Speaker 1>of the way. Today's episode is actually coming to us

0:00:53.960 --> 0:00:58.680
<v Speaker 1>courtesy of a little listener mail, or actually it's from

0:00:58.680 --> 0:01:02.040
<v Speaker 1>a listener tweet. I remember the tech stuff twitter handle

0:01:02.240 --> 0:01:05.880
<v Speaker 1>is text stuff hs W, so if you tweet me there,

0:01:06.440 --> 0:01:09.479
<v Speaker 1>I will see it. Uh. And this one comes from Dan,

0:01:09.600 --> 0:01:12.120
<v Speaker 1>who says I'd love to hear a show on how

0:01:12.240 --> 0:01:16.240
<v Speaker 1>video game emulators work. So today we're gonna explore what

0:01:16.319 --> 0:01:20.480
<v Speaker 1>an emulator is, why they're necessary, and how they work. Now,

0:01:20.520 --> 0:01:21.920
<v Speaker 1>first of all, I should say there are a lot

0:01:21.920 --> 0:01:25.480
<v Speaker 1>of different types of emulators. Uh, it's not just for

0:01:25.560 --> 0:01:28.880
<v Speaker 1>the video game world, but I'm gonna focus specifically on

0:01:29.280 --> 0:01:31.600
<v Speaker 1>video games. And you might wonder, all right, so what

0:01:31.680 --> 0:01:34.200
<v Speaker 1>is an emulator. Well, it does what it sounds like,

0:01:34.280 --> 0:01:38.800
<v Speaker 1>It emulates some other technology, which means it's attempting to

0:01:38.880 --> 0:01:42.960
<v Speaker 1>replicate how another technology works or or what it does. Now,

0:01:43.040 --> 0:01:46.199
<v Speaker 1>sometimes the emulator does this in a very different way

0:01:46.319 --> 0:01:49.520
<v Speaker 1>than the original technology did. And more often than not,

0:01:49.600 --> 0:01:53.200
<v Speaker 1>an emulator relies on software at least partly to replicate

0:01:53.240 --> 0:01:57.240
<v Speaker 1>a particular piece of a hardware's functionality. So you can

0:01:57.240 --> 0:02:02.320
<v Speaker 1>think of emulators as being at least partly of actual machine. Uh,

0:02:02.360 --> 0:02:05.760
<v Speaker 1>some of the components may actually be physical parts that

0:02:05.880 --> 0:02:11.040
<v Speaker 1>are original to whatever the technology you're trying to emulate was.

0:02:11.600 --> 0:02:14.600
<v Speaker 1>Other components are going to be purely software. And it's

0:02:14.600 --> 0:02:18.080
<v Speaker 1>helpful to use a little analogy here to understand what

0:02:18.200 --> 0:02:21.840
<v Speaker 1>an emulator tries to do. So let's say you've got

0:02:21.880 --> 0:02:24.240
<v Speaker 1>two people, and you know what, let's give them some

0:02:24.360 --> 0:02:26.280
<v Speaker 1>random names. So, just picking out of the air, I'm

0:02:26.280 --> 0:02:29.920
<v Speaker 1>gonna go with Josh and Chuck. Now, both Josh and

0:02:30.040 --> 0:02:33.000
<v Speaker 1>Chuck are in a jungle, but they are separated, so

0:02:33.080 --> 0:02:38.400
<v Speaker 1>they're each individually in a jungle. Both are running from something. Uh,

0:02:38.480 --> 0:02:41.600
<v Speaker 1>let's say they're being chased by aggressive badgers. So both

0:02:41.639 --> 0:02:44.440
<v Speaker 1>of them have managed to put some distance between themselves

0:02:44.520 --> 0:02:47.600
<v Speaker 1>and the furballs of fury chasing them. And then each

0:02:47.639 --> 0:02:50.720
<v Speaker 1>of them individually comes to the edge of a pit

0:02:51.040 --> 0:02:53.800
<v Speaker 1>two different pits, So Josh is at one pit, Chuck

0:02:53.919 --> 0:02:56.600
<v Speaker 1>is at a different pit. There's no way around the pits.

0:02:56.680 --> 0:02:59.320
<v Speaker 1>There's too much overgrowth on either side, so you have

0:02:59.360 --> 0:03:01.760
<v Speaker 1>to go over it somehow, but you can't go around,

0:03:02.120 --> 0:03:03.760
<v Speaker 1>and they each have a short amount of time to

0:03:03.800 --> 0:03:07.760
<v Speaker 1>figure out a way around or rather over, their respective pits.

0:03:08.639 --> 0:03:11.960
<v Speaker 1>So Josh decides what he's gonna do is fashion a

0:03:12.040 --> 0:03:14.920
<v Speaker 1>makeshift bridge out of some branches on the ground and

0:03:14.960 --> 0:03:17.080
<v Speaker 1>some vines, and so he binds them together and he

0:03:17.400 --> 0:03:20.560
<v Speaker 1>lays the bridge across the pit. He crosses gingerly across,

0:03:20.639 --> 0:03:23.359
<v Speaker 1>because you know, we know that Josh's sense of balance

0:03:23.480 --> 0:03:27.120
<v Speaker 1>is somewhat precarious under the best of circumstances, gets to

0:03:27.160 --> 0:03:29.000
<v Speaker 1>the other side, and then he kicks the bridge back

0:03:29.040 --> 0:03:31.360
<v Speaker 1>into the pit so that the badgers can't just follow

0:03:31.440 --> 0:03:35.360
<v Speaker 1>him across, and then he continues on his merry way. Meanwhile, Chuck,

0:03:35.520 --> 0:03:38.360
<v Speaker 1>on the other hand, uses a vine to tie it

0:03:38.400 --> 0:03:40.440
<v Speaker 1>to a branch and use that as kind of a

0:03:40.480 --> 0:03:43.960
<v Speaker 1>grappling hook. He tosses it up into the limbs overhead

0:03:43.960 --> 0:03:47.520
<v Speaker 1>and it catches, and so then he swings Tarzan like,

0:03:47.680 --> 0:03:51.080
<v Speaker 1>bellowing the whole time, and he gets to the other side.

0:03:51.320 --> 0:03:55.440
<v Speaker 1>Then he jerks the vine and dislodges the branch so

0:03:55.520 --> 0:03:57.280
<v Speaker 1>that it falls down and throws that into the pit

0:03:57.440 --> 0:04:01.080
<v Speaker 1>just in case. Badgers can also swing across pits, but

0:04:01.160 --> 0:04:04.360
<v Speaker 1>that's because he has not yet read how Badgers work

0:04:04.440 --> 0:04:08.160
<v Speaker 1>on How Stuffworks dot Com. So both Josh and Chuck

0:04:08.560 --> 0:04:11.920
<v Speaker 1>got across their respective pits, but they both did so

0:04:12.000 --> 0:04:14.960
<v Speaker 1>in very different ways. The end result was the same,

0:04:15.720 --> 0:04:19.240
<v Speaker 1>but the pathway was different. That's sort of what emulators do.

0:04:19.320 --> 0:04:23.960
<v Speaker 1>They're meant to produce a result that's identical to another technology,

0:04:24.000 --> 0:04:27.160
<v Speaker 1>even if the pathway to get there is very different.

0:04:27.800 --> 0:04:30.280
<v Speaker 1>A video game emulator is really meant to replicate how

0:04:30.279 --> 0:04:32.839
<v Speaker 1>a specific machine works so that you can play the

0:04:32.880 --> 0:04:36.600
<v Speaker 1>games that were designed for that machine, typically on a

0:04:36.600 --> 0:04:40.400
<v Speaker 1>computer a PC. So an emulator could be a specific

0:04:40.560 --> 0:04:44.600
<v Speaker 1>arcade game emulator, like for a very specific title, or

0:04:44.640 --> 0:04:47.680
<v Speaker 1>it could be a video game console emulator, which means

0:04:47.720 --> 0:04:51.120
<v Speaker 1>it could act like a video game console virtually and

0:04:51.160 --> 0:04:54.200
<v Speaker 1>you could play the games made for that console on

0:04:54.279 --> 0:04:56.200
<v Speaker 1>your computer. The end result is that you can play

0:04:56.240 --> 0:04:59.679
<v Speaker 1>those games meant for one device on a totally different device.

0:04:59.839 --> 0:05:02.680
<v Speaker 1>And and as I said before, typically we're talking about

0:05:02.720 --> 0:05:06.640
<v Speaker 1>a personal computer. Now, emulators are not the same thing

0:05:06.800 --> 0:05:11.880
<v Speaker 1>as ports. Supported game is one that developers originally created

0:05:12.040 --> 0:05:15.839
<v Speaker 1>for one architecture system, and then they adapt that game

0:05:15.880 --> 0:05:20.160
<v Speaker 1>for a totally different system. So the easiest example is

0:05:20.279 --> 0:05:23.520
<v Speaker 1>a game that originally comes out on the PlayStation might

0:05:23.560 --> 0:05:27.560
<v Speaker 1>get ported to the Xbox. These are totally different architectures.

0:05:27.600 --> 0:05:30.640
<v Speaker 1>The video game consoles work in very different ways, so

0:05:30.680 --> 0:05:36.120
<v Speaker 1>you can't just reformat and put it on an Xbox

0:05:36.160 --> 0:05:38.360
<v Speaker 1>one disc and expected to work. You actually have to

0:05:38.520 --> 0:05:41.120
<v Speaker 1>redesign parts of the game. That's what porting is all

0:05:41.160 --> 0:05:45.880
<v Speaker 1>about now. Because each system, whether it's Xbox or PlayStation

0:05:45.960 --> 0:05:48.960
<v Speaker 1>or mac Os or Windows, works in a very specific way.

0:05:49.040 --> 0:05:53.520
<v Speaker 1>Those programs are not compatible, but apport can be reworked

0:05:53.760 --> 0:05:56.480
<v Speaker 1>so that it will operate on those new systems. Now,

0:05:56.480 --> 0:05:59.120
<v Speaker 1>an emulator is different. An emulator can run a game

0:05:59.160 --> 0:06:02.520
<v Speaker 1>mint for once system on a totally different system because

0:06:02.560 --> 0:06:05.760
<v Speaker 1>the emulator is doing the work. So instead of giving

0:06:06.040 --> 0:06:08.960
<v Speaker 1>a game to a new group of developers and saying

0:06:09.360 --> 0:06:12.480
<v Speaker 1>I need you to make this version of the game

0:06:12.520 --> 0:06:15.839
<v Speaker 1>playable for this other system, you have a piece of

0:06:15.880 --> 0:06:20.600
<v Speaker 1>software that pretends that it is the other system, and

0:06:20.680 --> 0:06:23.360
<v Speaker 1>that way you don't have to have developers change the

0:06:23.400 --> 0:06:26.800
<v Speaker 1>code of the end of the original game. You do

0:06:26.839 --> 0:06:30.159
<v Speaker 1>have to have developers create the emulator. So it really

0:06:30.200 --> 0:06:33.599
<v Speaker 1>just shifts the work from adapting a game to a

0:06:33.640 --> 0:06:37.320
<v Speaker 1>different system to adapting an emulator to be able to

0:06:37.400 --> 0:06:41.039
<v Speaker 1>work on whatever target machine you're talking about. Like I said,

0:06:41.080 --> 0:06:44.560
<v Speaker 1>typically PC, more often than not it's a Windows based PC,

0:06:44.720 --> 0:06:47.200
<v Speaker 1>but you also see them for Unix and mac os,

0:06:47.240 --> 0:06:50.400
<v Speaker 1>so it's not like it's it's exclusive to Windows machines.

0:06:51.800 --> 0:06:56.000
<v Speaker 1>Now it's necessary because video game consoles and even arcade

0:06:56.040 --> 0:06:59.560
<v Speaker 1>games like the old arcade game cabinets, they have specific

0:06:59.640 --> 0:07:03.720
<v Speaker 1>hardware and software architecture to them. So some of those

0:07:03.720 --> 0:07:06.920
<v Speaker 1>old arcade machines don't really even have much software at all.

0:07:06.960 --> 0:07:11.640
<v Speaker 1>It's like the lightest level of software. It's mostly circuitry,

0:07:11.800 --> 0:07:16.960
<v Speaker 1>like hard coded circuitry. The game itself is represented in

0:07:17.000 --> 0:07:21.320
<v Speaker 1>the circuits that are on the board within the arcade cabinet.

0:07:21.960 --> 0:07:24.920
<v Speaker 1>It's kind of like the old cartridge based systems if

0:07:24.960 --> 0:07:27.640
<v Speaker 1>you had one of those, like the old Nintendo Entertainment

0:07:27.640 --> 0:07:31.800
<v Speaker 1>System or Super Nintendo or the Tari. Those are video

0:07:31.840 --> 0:07:35.280
<v Speaker 1>games that would be programmed onto a circuit board that's

0:07:35.320 --> 0:07:38.800
<v Speaker 1>housed inside of a cartridge, and you insert the cartridge

0:07:38.840 --> 0:07:42.720
<v Speaker 1>into the video game console and some contacts between the

0:07:42.760 --> 0:07:46.600
<v Speaker 1>console and the cartridge allow the console to read that

0:07:46.680 --> 0:07:50.520
<v Speaker 1>information and then you're able to play the game. Uh.

0:07:51.320 --> 0:07:56.880
<v Speaker 1>Obviously you don't have, for most PCs, a cartridge based

0:07:56.920 --> 0:08:00.920
<v Speaker 1>system that can accept these games in this way. Now,

0:08:00.920 --> 0:08:04.760
<v Speaker 1>in the olden days, arcade games contained a circuit board

0:08:04.880 --> 0:08:09.360
<v Speaker 1>unique to that particular game. So, in other words, a

0:08:09.360 --> 0:08:13.000
<v Speaker 1>an Asteroids machine was an Asteroids machine. That's all there

0:08:13.040 --> 0:08:15.800
<v Speaker 1>was to it, because the circuit board had the Asteroids

0:08:15.880 --> 0:08:19.080
<v Speaker 1>game on it. If you opened up a Pacman machine

0:08:19.120 --> 0:08:21.200
<v Speaker 1>and you opened up a Donkey Kong machine, you'd find

0:08:21.240 --> 0:08:23.800
<v Speaker 1>two different circuit boards. The pac Man one of the

0:08:23.840 --> 0:08:26.600
<v Speaker 1>Donkey Kong one would be unique to those arcade games.

0:08:27.200 --> 0:08:32.120
<v Speaker 1>They did have a very low level of software on

0:08:32.280 --> 0:08:36.400
<v Speaker 1>the machines on the circuit boards called BIOS now that

0:08:36.440 --> 0:08:40.640
<v Speaker 1>stands for Basic Input output system, and really it's just

0:08:40.679 --> 0:08:44.280
<v Speaker 1>a foundational software layer. It's really just meant to be

0:08:44.400 --> 0:08:49.120
<v Speaker 1>responsible for managing the relationship between input devices like a

0:08:49.160 --> 0:08:51.880
<v Speaker 1>push button or a joystick or that sort of stuff,

0:08:52.640 --> 0:08:58.040
<v Speaker 1>and the output devices like the monitor or even just

0:08:58.160 --> 0:09:01.880
<v Speaker 1>what the game is supposed to do whenever you enact

0:09:02.200 --> 0:09:05.920
<v Speaker 1>on those input devices. So the input could be a

0:09:06.000 --> 0:09:09.280
<v Speaker 1>jump button, for example, you press the button and the

0:09:09.360 --> 0:09:12.920
<v Speaker 1>output is you see your character jumping on the display.

0:09:13.520 --> 0:09:16.319
<v Speaker 1>But keep in mind, the actual output is really the

0:09:16.360 --> 0:09:20.880
<v Speaker 1>code for jumping and a signal to the arcade machines display. Right,

0:09:20.920 --> 0:09:24.040
<v Speaker 1>the display is not making your character jump. That's being

0:09:24.080 --> 0:09:27.720
<v Speaker 1>controlled by the code of the arcade machine itself. It's

0:09:27.800 --> 0:09:30.640
<v Speaker 1>reflected on the monitor in a way that you can

0:09:30.679 --> 0:09:35.000
<v Speaker 1>see by having the little character jump up in the air. Now,

0:09:35.040 --> 0:09:39.000
<v Speaker 1>the game's circuit board handled everything else in those old

0:09:39.040 --> 0:09:43.360
<v Speaker 1>machines besides that input output. The hardware was handling everything.

0:09:43.840 --> 0:09:46.200
<v Speaker 1>It was just programmed directly onto the circuit board that

0:09:46.280 --> 0:09:50.640
<v Speaker 1>include the game's sound, its graphics engine. It's logic if

0:09:50.640 --> 0:09:52.840
<v Speaker 1>you had an arcade cabinet and you wanted to switch

0:09:52.880 --> 0:09:55.920
<v Speaker 1>out games. Let's say you've got a Pacman cabinet and

0:09:56.000 --> 0:09:58.360
<v Speaker 1>you think, I'm gonna put Donkey Kong in this cabinet

0:09:58.360 --> 0:10:00.439
<v Speaker 1>and I'm gonna I want to switch out the games.

0:10:00.480 --> 0:10:02.520
<v Speaker 1>What you had to do was gut the machine. You

0:10:02.520 --> 0:10:06.559
<v Speaker 1>had to take all that circuitry and those connections out

0:10:06.679 --> 0:10:10.000
<v Speaker 1>of the machine, the pac Man machine, and replace them

0:10:10.040 --> 0:10:13.520
<v Speaker 1>with the ones from a Donkey Kong machine. You couldn't

0:10:13.559 --> 0:10:16.000
<v Speaker 1>just swap out a certain element. You had to do

0:10:16.080 --> 0:10:20.960
<v Speaker 1>pretty extensive surgery. Uh. It took some time, usually, you know,

0:10:20.960 --> 0:10:23.640
<v Speaker 1>a half hour an hour easy to to switch these

0:10:23.679 --> 0:10:27.200
<v Speaker 1>things out. Later on, it got a little simplified. First

0:10:27.240 --> 0:10:30.920
<v Speaker 1>it got simplified in the the adoption of some more

0:10:31.240 --> 0:10:35.360
<v Speaker 1>standardized connectors. So that meant that you could start to

0:10:35.400 --> 0:10:38.359
<v Speaker 1>disconnect a circuit board from the rest of a system,

0:10:38.440 --> 0:10:42.280
<v Speaker 1>and assuming that the control scheme is similar from the

0:10:42.280 --> 0:10:45.680
<v Speaker 1>old game to the new game, you could plug the

0:10:45.760 --> 0:10:48.640
<v Speaker 1>new circuit board into a cabinet and it would work

0:10:48.640 --> 0:10:51.559
<v Speaker 1>pretty well. Uh. Now, obviously that only works if your

0:10:51.559 --> 0:10:54.839
<v Speaker 1>control scheme is the same. So, for example, if you're

0:10:54.840 --> 0:10:57.920
<v Speaker 1>playing pac Man, there's no jump button, right, there's a

0:10:58.040 --> 0:11:00.680
<v Speaker 1>player one, a player two, and then there's the joystick

0:11:00.760 --> 0:11:04.840
<v Speaker 1>that has for motion control, and you just control the

0:11:04.840 --> 0:11:08.080
<v Speaker 1>the pac Man character that way. But let's say you

0:11:08.080 --> 0:11:11.240
<v Speaker 1>wanted to play Centipede. Centipede is a very different type

0:11:11.280 --> 0:11:14.160
<v Speaker 1>of game. Has a rollerball controller, so you have a

0:11:14.200 --> 0:11:17.320
<v Speaker 1>ball that you uh, you swipe and you can move

0:11:17.360 --> 0:11:19.920
<v Speaker 1>your character that way, and it has a fire button

0:11:20.000 --> 0:11:23.360
<v Speaker 1>where you shoot whenever you press the button. So if

0:11:23.400 --> 0:11:27.240
<v Speaker 1>you were to switch out the pac Man to the

0:11:27.320 --> 0:11:32.040
<v Speaker 1>Centipede boards, assuming that they had these universal connectors, you

0:11:32.120 --> 0:11:35.000
<v Speaker 1>still would have to switch out the control system as well,

0:11:35.200 --> 0:11:37.520
<v Speaker 1>or else you wouldn't really be able to control the

0:11:37.559 --> 0:11:39.880
<v Speaker 1>game Centipede the way it was meant to be played,

0:11:40.320 --> 0:11:42.960
<v Speaker 1>particularly since you wouldn't have a fire button, that would

0:11:43.000 --> 0:11:47.960
<v Speaker 1>be a problem. Later on, arcade manufacturers would create machines

0:11:48.000 --> 0:11:50.120
<v Speaker 1>that had the basic hardware set up so that different

0:11:50.160 --> 0:11:52.720
<v Speaker 1>games could be plugged into the system, more like a

0:11:52.800 --> 0:11:56.079
<v Speaker 1>video game console. So this was even simpler than the

0:11:56.160 --> 0:12:00.440
<v Speaker 1>universal kind of standardized controls UH. This was more about,

0:12:00.480 --> 0:12:05.280
<v Speaker 1>like uh, a set structure where you plug in a

0:12:05.400 --> 0:12:08.840
<v Speaker 1>chip essentially that has the game on it and everything

0:12:08.840 --> 0:12:11.439
<v Speaker 1>else remains the same, so kind of like a video

0:12:11.440 --> 0:12:13.960
<v Speaker 1>game console, where if you're playing a Nintendo and you

0:12:14.000 --> 0:12:20.160
<v Speaker 1>wanted to stop playing Super Mario Brothers instead play Gumshoe.

0:12:20.600 --> 0:12:24.040
<v Speaker 1>Then you could turn off the console, pull one cartrid,

0:12:24.080 --> 0:12:25.800
<v Speaker 1>shop put the other cartridge, and turn it on and

0:12:25.800 --> 0:12:27.959
<v Speaker 1>there you go. Same sort of thing with these old

0:12:28.040 --> 0:12:31.200
<v Speaker 1>arcade machines. Once they got to this level of sophistication,

0:12:32.480 --> 0:12:33.520
<v Speaker 1>it was still a bit of a pain in the

0:12:33.600 --> 0:12:35.880
<v Speaker 1>butt because he still had to open everything up and

0:12:35.880 --> 0:12:38.200
<v Speaker 1>and get in among all the wires and stuff. But

0:12:38.200 --> 0:12:41.440
<v Speaker 1>it was still way faster than the old days where

0:12:41.440 --> 0:12:45.880
<v Speaker 1>you had to replace everything. Essentially. Now the games themselves

0:12:46.080 --> 0:12:50.320
<v Speaker 1>are called ROMs r O M. S Now r O

0:12:50.559 --> 0:12:54.239
<v Speaker 1>M is an acronym. It stands for read only memory.

0:12:54.600 --> 0:12:57.920
<v Speaker 1>That meant the player or anyone else couldn't write anything

0:12:57.960 --> 0:13:01.040
<v Speaker 1>to the game. Now, they might have something on the

0:13:01.040 --> 0:13:04.680
<v Speaker 1>circuit board, some some temporary memory in the arcade machine

0:13:04.679 --> 0:13:07.000
<v Speaker 1>that would allow players to put in initials next to

0:13:07.080 --> 0:13:10.640
<v Speaker 1>high score, and that would be stored in that memory chup,

0:13:10.720 --> 0:13:13.679
<v Speaker 1>but the game itself was immutable. You could not change

0:13:13.800 --> 0:13:16.840
<v Speaker 1>the game. It was the computer equivalent of being set

0:13:16.880 --> 0:13:20.760
<v Speaker 1>in stone. So in the emulator world we generally refer

0:13:20.920 --> 0:13:24.960
<v Speaker 1>to game files as in the software that represents that

0:13:25.080 --> 0:13:29.040
<v Speaker 1>game as a ROM. If you've ever used an emulator,

0:13:29.400 --> 0:13:32.960
<v Speaker 1>you're probably familiar with ROMs. And there's a big legality

0:13:33.080 --> 0:13:36.200
<v Speaker 1>question people have when it comes to ROMs, and I'll

0:13:36.200 --> 0:13:38.240
<v Speaker 1>get to that later in the episode. At the end,

0:13:38.640 --> 0:13:42.000
<v Speaker 1>I'm gonna spend time talking about the legality of read

0:13:42.080 --> 0:13:45.640
<v Speaker 1>only memory files and whether or not it is legal

0:13:45.679 --> 0:13:48.320
<v Speaker 1>to download them, But for now, let's just focus on

0:13:48.360 --> 0:13:50.439
<v Speaker 1>the technical side of things. We'll get to the legal

0:13:50.480 --> 0:13:53.920
<v Speaker 1>stuff at the end. So you've got various types of games,

0:13:54.040 --> 0:13:57.480
<v Speaker 1>each designed to run on specific hardware. And there are

0:13:57.520 --> 0:13:59.959
<v Speaker 1>the standalone arcade machines that each had their own pecure,

0:14:00.160 --> 0:14:03.360
<v Speaker 1>your architecture. They're the later arcade machines that could accept

0:14:03.360 --> 0:14:06.160
<v Speaker 1>different chips, with each chip containing a different game. And

0:14:06.200 --> 0:14:08.960
<v Speaker 1>then there are the video game consoles and their proprietary

0:14:09.000 --> 0:14:12.480
<v Speaker 1>game technologies. You even got old computer games that were

0:14:12.520 --> 0:14:15.200
<v Speaker 1>designed to run on slower machines with much less computing

0:14:15.280 --> 0:14:18.839
<v Speaker 1>power than today's PCs. Uh. A lot of those are

0:14:18.880 --> 0:14:22.400
<v Speaker 1>impossible to play on on later machines because they just

0:14:22.520 --> 0:14:25.120
<v Speaker 1>they can't handle the fact that they've got access to

0:14:25.160 --> 0:14:27.640
<v Speaker 1>all that processing power. So you might even need an

0:14:27.640 --> 0:14:33.160
<v Speaker 1>emulator for a PC based game on a PC if

0:14:33.160 --> 0:14:35.560
<v Speaker 1>it's old enough. If it's an old game, you may

0:14:35.640 --> 0:14:37.960
<v Speaker 1>need an emulator in order to run it a virtual

0:14:38.000 --> 0:14:41.760
<v Speaker 1>machine of some sort. Emulators are what let you run

0:14:41.760 --> 0:14:44.600
<v Speaker 1>those games designed for those older or other devices on

0:14:44.640 --> 0:14:48.200
<v Speaker 1>a modern machine. So I've got more to say about this,

0:14:48.720 --> 0:14:51.560
<v Speaker 1>but before I get into it, let's take a quick

0:14:51.600 --> 0:15:04.240
<v Speaker 1>break to thank our sponsor. Alright, we're back now. There

0:15:04.240 --> 0:15:09.600
<v Speaker 1>are two big categories for emulators, and this doesn't depend

0:15:09.680 --> 0:15:12.720
<v Speaker 1>upon the type of console or game you're trying to emulate.

0:15:12.800 --> 0:15:16.160
<v Speaker 1>It's universal. These two big categories are universal no matter

0:15:16.200 --> 0:15:20.800
<v Speaker 1>what system you're trying to emulate. Um so all different systems,

0:15:20.840 --> 0:15:23.960
<v Speaker 1>all different arcade games. Emulators can fall into one of

0:15:24.000 --> 0:15:29.200
<v Speaker 1>two categories. There's low level emulation and there's high level emulation.

0:15:30.120 --> 0:15:33.520
<v Speaker 1>And it might be a little counterintuitive what these mean,

0:15:34.520 --> 0:15:38.120
<v Speaker 1>but with low level emulation, programmers are trying to create

0:15:38.160 --> 0:15:42.560
<v Speaker 1>software and or hardware that can pretend to be the

0:15:42.640 --> 0:15:47.440
<v Speaker 1>emulated hardware. In other words, you're trying to replicate the

0:15:47.520 --> 0:15:52.680
<v Speaker 1>actual mechanics, although it's not mechanical, it's electronic, but the

0:15:52.720 --> 0:15:58.040
<v Speaker 1>actual uh physical process. I guess physical process doesn't really

0:15:58.040 --> 0:16:01.880
<v Speaker 1>work either, right, The actual logical process of the original

0:16:02.200 --> 0:16:06.080
<v Speaker 1>game system or arcade machine. So you want your system

0:16:06.320 --> 0:16:10.400
<v Speaker 1>to look from a high level as close to that

0:16:10.480 --> 0:16:14.320
<v Speaker 1>original system as you possibly can get it. Sometimes that

0:16:14.360 --> 0:16:18.760
<v Speaker 1>actually means including original hardware from the target machine with

0:16:18.920 --> 0:16:21.960
<v Speaker 1>the emulator, so that means you're not just replicating the

0:16:21.960 --> 0:16:24.400
<v Speaker 1>target machine, you're using some of its actual parts. You're

0:16:24.440 --> 0:16:30.360
<v Speaker 1>you're in part rebuilding the actual original machine. In fact,

0:16:30.360 --> 0:16:33.360
<v Speaker 1>the first couple of models of the PlayStation three actually

0:16:33.360 --> 0:16:37.800
<v Speaker 1>contained elements of the PlayStation two inside it in order

0:16:37.840 --> 0:16:40.960
<v Speaker 1>to provide some backwards capability. So if you wanted to

0:16:40.960 --> 0:16:43.440
<v Speaker 1>play a PlayStation two game on one of those early

0:16:43.680 --> 0:16:47.480
<v Speaker 1>PS three models, instead of it using the typical PS

0:16:47.600 --> 0:16:50.880
<v Speaker 1>three equipment inside the console, it would actually hand that

0:16:51.000 --> 0:16:54.400
<v Speaker 1>off to the PS two elements. So it's almost like

0:16:54.480 --> 0:16:58.000
<v Speaker 1>having two different video game consoles in the same box.

0:16:58.880 --> 0:17:01.560
<v Speaker 1>You didn't know it as as a consumer, like, you

0:17:01.600 --> 0:17:04.320
<v Speaker 1>don't see any of that happening. It's all happening inside

0:17:04.359 --> 0:17:08.560
<v Speaker 1>the console. But it wasn't a p S three system

0:17:08.600 --> 0:17:11.679
<v Speaker 1>reading the information and then playing it on your screen.

0:17:11.720 --> 0:17:14.399
<v Speaker 1>It was actually a PS two system housed inside that

0:17:14.480 --> 0:17:20.240
<v Speaker 1>PS three um. So the p S three's core system

0:17:20.359 --> 0:17:23.679
<v Speaker 1>was acting as the emulator, but it was using PS

0:17:23.720 --> 0:17:28.800
<v Speaker 1>two hardware to actually read the information off of disks. Now,

0:17:28.840 --> 0:17:31.800
<v Speaker 1>if you're using something like a Nintendo sixty four emulator,

0:17:31.880 --> 0:17:34.479
<v Speaker 1>the emulators trying to replicate the way the in sixty

0:17:34.480 --> 0:17:37.680
<v Speaker 1>four is hardware worked, and the more sophisticated that target

0:17:37.720 --> 0:17:41.240
<v Speaker 1>system is, the more difficult this is to do so

0:17:41.359 --> 0:17:45.040
<v Speaker 1>with low level emulation, the amount of processing power you

0:17:45.080 --> 0:17:48.080
<v Speaker 1>need on your computer to run the emulator so that

0:17:48.160 --> 0:17:49.920
<v Speaker 1>you can play those games the way they were meant

0:17:49.960 --> 0:17:55.120
<v Speaker 1>to be played. That processing power demand increases as the

0:17:55.160 --> 0:17:59.760
<v Speaker 1>complexity of the video game system you're emulating increases, which

0:17:59.760 --> 0:18:03.119
<v Speaker 1>makes sense, right. The more complicated the system, the greater

0:18:03.200 --> 0:18:09.160
<v Speaker 1>the demands are in processing powers, particularly if the system

0:18:09.240 --> 0:18:14.480
<v Speaker 1>you're trying to emulate is remarkably different from PC architecture,

0:18:15.119 --> 0:18:19.080
<v Speaker 1>because your processors having to handle all of those differences

0:18:19.840 --> 0:18:22.600
<v Speaker 1>and it ends up creating a bigger drain on the

0:18:22.640 --> 0:18:27.240
<v Speaker 1>processors ability. So if you've ever played a video game

0:18:27.240 --> 0:18:30.040
<v Speaker 1>emulator and you've run a game and you're thinking this

0:18:30.160 --> 0:18:33.040
<v Speaker 1>thing is slow as molasses. I'm barely able to get

0:18:33.080 --> 0:18:37.240
<v Speaker 1>this character moving, it's probably because you're experiencing that problem

0:18:37.320 --> 0:18:42.000
<v Speaker 1>that the emulator is probably a low level emulator. It's

0:18:42.000 --> 0:18:45.120
<v Speaker 1>trying to replicate that original system as closely as possible,

0:18:46.080 --> 0:18:49.280
<v Speaker 1>and as a result, your processor is having to work

0:18:49.720 --> 0:18:52.440
<v Speaker 1>super hard to keep up, even though the game might

0:18:52.480 --> 0:18:55.800
<v Speaker 1>be fairly simple. It can be very frustrating because you

0:18:55.840 --> 0:18:58.840
<v Speaker 1>might be playing a game that came out in like

0:18:58.920 --> 0:19:02.399
<v Speaker 1>the late eighties, and you're thinking, it's twenty seventeen. My

0:19:02.480 --> 0:19:05.760
<v Speaker 1>computer should be able to run this with no problem.

0:19:05.760 --> 0:19:09.399
<v Speaker 1>But the truth is the processors trying to handle a

0:19:09.520 --> 0:19:14.440
<v Speaker 1>system so different from itself that that's what's causing the slowdown.

0:19:14.560 --> 0:19:18.359
<v Speaker 1>I experienced this with a friend who had uh A

0:19:18.760 --> 0:19:23.119
<v Speaker 1>a an arcade emulator, and he's had ghosts and goblins

0:19:23.280 --> 0:19:25.159
<v Speaker 1>on there. And I love that game. I loved it

0:19:25.160 --> 0:19:27.600
<v Speaker 1>when it came out, but as I started to play it,

0:19:27.920 --> 0:19:31.119
<v Speaker 1>I thought, this game is way slower than I remember it,

0:19:31.160 --> 0:19:34.320
<v Speaker 1>and I just remember getting incorrectly. Nope. Turned out it

0:19:34.359 --> 0:19:39.000
<v Speaker 1>was because the emulator was putting too great a demand

0:19:39.240 --> 0:19:43.280
<v Speaker 1>on his systems processor and as a result, the game

0:19:43.320 --> 0:19:45.159
<v Speaker 1>I was playing was much slower than what it was

0:19:45.200 --> 0:19:49.520
<v Speaker 1>supposed to be. And it's really hard to make low

0:19:49.600 --> 0:19:53.679
<v Speaker 1>level emulators efficient. Some games and game system systems require

0:19:53.760 --> 0:19:58.400
<v Speaker 1>multiple synchronization processes to make sure all the emulated components

0:19:58.440 --> 0:20:02.080
<v Speaker 1>are working together properly. So the more frequently that happens,

0:20:02.080 --> 0:20:04.639
<v Speaker 1>the more times an emulator has to say, hey, is

0:20:04.680 --> 0:20:07.600
<v Speaker 1>everything all right and send that message out to all

0:20:07.600 --> 0:20:10.600
<v Speaker 1>the different components and wait for a response, the more

0:20:10.640 --> 0:20:15.239
<v Speaker 1>demands it places on that processor. Uh So, if you

0:20:15.280 --> 0:20:18.199
<v Speaker 1>want to have a really good low level emulator, you

0:20:18.240 --> 0:20:22.720
<v Speaker 1>need a a computer with like a screaming fast processor.

0:20:23.760 --> 0:20:26.399
<v Speaker 1>And and that could be again a little counterintuitive. You

0:20:26.480 --> 0:20:29.640
<v Speaker 1>might think, well, this game can run the latest computer

0:20:29.800 --> 0:20:34.240
<v Speaker 1>games with no frame rate issues. Um at the highest

0:20:34.240 --> 0:20:37.040
<v Speaker 1>graphics setting, everything's awesome. But when I try to run

0:20:37.080 --> 0:20:40.400
<v Speaker 1>this emulated game, everything slows down. Why is that? It's

0:20:40.440 --> 0:20:44.600
<v Speaker 1>because of this. Now, then you have high level emulation.

0:20:44.840 --> 0:20:49.119
<v Speaker 1>This is very different. High level emulation simulates the functions

0:20:49.160 --> 0:20:53.919
<v Speaker 1>of hardware, but doesn't try to replicate those functions. So,

0:20:53.960 --> 0:20:56.320
<v Speaker 1>in other words, all it wants to do is get

0:20:56.359 --> 0:20:59.840
<v Speaker 1>to that end result. It doesn't care if it follows

0:20:59.880 --> 0:21:02.120
<v Speaker 1>the same path as the hardware. So this gets back

0:21:02.440 --> 0:21:05.280
<v Speaker 1>to that Josh and Chuck example I gave at the

0:21:05.280 --> 0:21:07.919
<v Speaker 1>top of the show. Both the vine and the bridge

0:21:07.920 --> 0:21:11.000
<v Speaker 1>will get Chuck and Josh across the pit, but they

0:21:11.000 --> 0:21:13.760
<v Speaker 1>do it in different ways. The end result is the same.

0:21:14.119 --> 0:21:17.760
<v Speaker 1>That's what high level emulation aims to do, so we

0:21:17.880 --> 0:21:23.040
<v Speaker 1>call this abstraction. We are able to create an environment

0:21:23.400 --> 0:21:25.560
<v Speaker 1>in which a game will work even if you're using

0:21:25.640 --> 0:21:30.880
<v Speaker 1>totally different hardware because of this level of abstraction. This

0:21:30.960 --> 0:21:35.000
<v Speaker 1>is particularly handy for game developers, not just people who

0:21:35.040 --> 0:21:37.880
<v Speaker 1>want to play games, but people who are making games,

0:21:38.600 --> 0:21:42.359
<v Speaker 1>because you can develop a game for a specific system

0:21:42.480 --> 0:21:47.040
<v Speaker 1>using a level of abstraction, and you can use whatever

0:21:47.040 --> 0:21:50.760
<v Speaker 1>system you prefer to develop on. So let's say you're

0:21:50.760 --> 0:21:55.240
<v Speaker 1>a developer and that you use a Mac as your computer,

0:21:55.720 --> 0:21:59.320
<v Speaker 1>but you're developing a game for the Xbox. A level

0:21:59.400 --> 0:22:02.240
<v Speaker 1>of abstract action allows you to do this on a

0:22:02.320 --> 0:22:06.040
<v Speaker 1>virtual level, so that you're developing an Xbox game in

0:22:06.119 --> 0:22:09.840
<v Speaker 1>a Mac environment and you don't have to have special

0:22:10.160 --> 0:22:13.280
<v Speaker 1>equipment or anything like that. You've abstracted all of the

0:22:13.320 --> 0:22:19.879
<v Speaker 1>elements into a virtual realm. So high level emulation uses

0:22:20.040 --> 0:22:24.959
<v Speaker 1>shorthand for basic operations instead of a specific pathway. So

0:22:25.040 --> 0:22:28.440
<v Speaker 1>a low level emulator would try to replicate the exact

0:22:28.520 --> 0:22:32.080
<v Speaker 1>way a game saves information. For example, a high level

0:22:32.080 --> 0:22:35.240
<v Speaker 1>emulator would just say save this data to the storage drive,

0:22:35.640 --> 0:22:40.720
<v Speaker 1>and firmware would actually handle the transaction. So the software

0:22:40.760 --> 0:22:42.679
<v Speaker 1>hands it off to the firmware that says, all right,

0:22:42.720 --> 0:22:45.480
<v Speaker 1>what's the most efficient way for me to do the

0:22:45.560 --> 0:22:48.280
<v Speaker 1>task I've been asked to do? That puts the least

0:22:48.320 --> 0:22:51.560
<v Speaker 1>demand on the processor. It's kind of like a voice

0:22:51.560 --> 0:22:54.760
<v Speaker 1>activated assistant in a way. As these systems get more robust,

0:22:54.880 --> 0:22:57.919
<v Speaker 1>you can ask for the same information in many different ways.

0:22:58.200 --> 0:23:00.359
<v Speaker 1>So for example, if I had an eye phone, I

0:23:00.400 --> 0:23:03.760
<v Speaker 1>could ask Siri what is the weather like outside? Or

0:23:04.280 --> 0:23:06.800
<v Speaker 1>I could ask Siri is it raining? Now? Both of

0:23:06.800 --> 0:23:09.919
<v Speaker 1>those questions will get me a weather answer from Siri

0:23:10.400 --> 0:23:13.159
<v Speaker 1>because the system can actually handle the different ways to

0:23:13.240 --> 0:23:17.879
<v Speaker 1>request essentially the same information. Hardware abstraction does something similar,

0:23:17.920 --> 0:23:20.440
<v Speaker 1>and it interprets a request and then it does the

0:23:20.520 --> 0:23:24.680
<v Speaker 1>leg work work to fulfill that request. Now, there are

0:23:24.720 --> 0:23:29.600
<v Speaker 1>three main ways that high level emulators simulate hardware functions.

0:23:30.240 --> 0:23:34.200
<v Speaker 1>The first is called interpreting. The emulator will go through

0:23:34.280 --> 0:23:38.240
<v Speaker 1>the code of the game line by line in chunks

0:23:38.320 --> 0:23:41.640
<v Speaker 1>and replicate what the instructions are supposed to do. So

0:23:42.000 --> 0:23:45.280
<v Speaker 1>interpreting makes sense right like you you It's kind of

0:23:45.320 --> 0:23:48.080
<v Speaker 1>like if you were to read a story and then

0:23:48.160 --> 0:23:51.360
<v Speaker 1>tell somebody what does the story say? Like, what are

0:23:51.400 --> 0:23:53.280
<v Speaker 1>the what are the basic points of the story. Or

0:23:53.280 --> 0:23:55.760
<v Speaker 1>you're trying to tell someone about a movie you've seen,

0:23:56.119 --> 0:23:59.480
<v Speaker 1>and you're giving them kind of a high level bullet

0:23:59.520 --> 0:24:03.720
<v Speaker 1>point rundown of what the plot was all about. That's

0:24:03.720 --> 0:24:07.480
<v Speaker 1>what interpreting does, except it does it with code. Next

0:24:08.160 --> 0:24:13.160
<v Speaker 1>is a strategy called dynamic recompiling. Now that method actually

0:24:13.160 --> 0:24:16.080
<v Speaker 1>looks at blocks of code, looks at the instructions that

0:24:16.320 --> 0:24:19.560
<v Speaker 1>are the processor is supposed to carry out according to

0:24:19.640 --> 0:24:22.440
<v Speaker 1>that code, and then it starts looking for a more

0:24:22.480 --> 0:24:26.480
<v Speaker 1>efficient or optimized way to run those same instructions on

0:24:26.560 --> 0:24:29.520
<v Speaker 1>the actual computer you are using. So, in other words,

0:24:29.560 --> 0:24:33.480
<v Speaker 1>it's recompiling the code for a different piece of hardware.

0:24:33.840 --> 0:24:36.720
<v Speaker 1>It's kind of like saying, all right, this was written

0:24:36.920 --> 0:24:40.840
<v Speaker 1>for an Atari twenty SID, I want to rewrite it

0:24:41.160 --> 0:24:44.200
<v Speaker 1>so that the same result will happen on the PC

0:24:44.720 --> 0:24:50.320
<v Speaker 1>that is running the software. UM very interesting that this

0:24:50.359 --> 0:24:55.000
<v Speaker 1>can be done on an abstract level. And finally, there's

0:24:55.040 --> 0:24:59.080
<v Speaker 1>a strategy called list interception. Now this is relevant for

0:24:59.119 --> 0:25:03.000
<v Speaker 1>computers that you coprocessors and for systems that you're trying

0:25:03.000 --> 0:25:07.600
<v Speaker 1>to emulate that also had coprocessors. Most PCs these days

0:25:07.640 --> 0:25:12.040
<v Speaker 1>have a coprocessor. The graphics processing unit is a coprocessor. Now,

0:25:12.040 --> 0:25:15.240
<v Speaker 1>those chips are meant to handle graphics, but they're also

0:25:15.280 --> 0:25:18.439
<v Speaker 1>really handy for parallel processing. You might have heard that

0:25:18.600 --> 0:25:21.560
<v Speaker 1>a lot of hackers use gp us in order to

0:25:21.560 --> 0:25:25.680
<v Speaker 1>do brute force attacks against secure systems. This is because

0:25:26.080 --> 0:25:30.040
<v Speaker 1>GPUs can process stuff in parallel, which means you can

0:25:30.080 --> 0:25:33.800
<v Speaker 1>have a bunch of parallel processors all tackling the same problem,

0:25:33.800 --> 0:25:36.960
<v Speaker 1>going through different potential solutions, and that cuts down on

0:25:37.000 --> 0:25:38.960
<v Speaker 1>the amount of time it takes for you to find

0:25:39.040 --> 0:25:44.440
<v Speaker 1>the real answer. So with list interception and emulator interrupts

0:25:44.480 --> 0:25:48.800
<v Speaker 1>a command list sent to the original devices coprocessor and

0:25:48.880 --> 0:25:54.040
<v Speaker 1>turns that into instructions that the actual host computers graphics

0:25:54.040 --> 0:25:57.200
<v Speaker 1>processing unit can handle. So it's kind of like translating

0:25:57.240 --> 0:26:00.000
<v Speaker 1>text from one language to another. It intercepts the message

0:26:00.000 --> 0:26:02.760
<v Speaker 1>which says, Okay, well, the GPU can't understand this the

0:26:02.760 --> 0:26:06.440
<v Speaker 1>way it's written, but I can take these instructions, rewrite

0:26:06.480 --> 0:26:09.320
<v Speaker 1>it in a way that the GPU understands, and send

0:26:09.359 --> 0:26:12.880
<v Speaker 1>it along. And that's how that works. The big advantage

0:26:12.880 --> 0:26:16.600
<v Speaker 1>of high level emulators over low level emulators is that

0:26:16.640 --> 0:26:20.399
<v Speaker 1>they require less processing power to run games. So a

0:26:20.400 --> 0:26:23.520
<v Speaker 1>well designed high level emulator can run titles smoothly on

0:26:23.560 --> 0:26:26.800
<v Speaker 1>a modest PC. You don't need to have a killer

0:26:26.880 --> 0:26:30.480
<v Speaker 1>gaming rig, but a low level emulator would require that

0:26:30.560 --> 0:26:34.600
<v Speaker 1>beefier processor to handle demands. Now, the flip side is

0:26:34.640 --> 0:26:37.360
<v Speaker 1>a low level emulator tends to be more accurate when

0:26:37.400 --> 0:26:40.679
<v Speaker 1>replicating a game, and a high level emulator might not

0:26:40.760 --> 0:26:44.320
<v Speaker 1>be able to replicate all the things the game does

0:26:45.040 --> 0:26:49.480
<v Speaker 1>because it's not as specific to that system, like, it's

0:26:49.480 --> 0:26:52.800
<v Speaker 1>not replicating the system as faithfully as a low level

0:26:52.800 --> 0:26:56.359
<v Speaker 1>emulator would. So their trade offs. So let's say you

0:26:56.359 --> 0:26:59.520
<v Speaker 1>want to invest in an emulator and some games, and

0:26:59.560 --> 0:27:01.760
<v Speaker 1>just for argument's sake, let's say that there's a legal

0:27:01.760 --> 0:27:03.600
<v Speaker 1>way for you to buy the games rather than just

0:27:03.800 --> 0:27:06.919
<v Speaker 1>download them willy nilly. Like I said before, I'm going

0:27:06.960 --> 0:27:09.320
<v Speaker 1>to talk more about the legality of all of this

0:27:09.400 --> 0:27:12.040
<v Speaker 1>at the end of the show. So what system should

0:27:12.200 --> 0:27:14.720
<v Speaker 1>you go for if you want an emulator? Well, that

0:27:14.760 --> 0:27:18.439
<v Speaker 1>really depends on several factors. For one, um, are you

0:27:18.480 --> 0:27:21.800
<v Speaker 1>missed their money bags or miss money bags? Because if

0:27:21.800 --> 0:27:23.919
<v Speaker 1>money is not an object, you might as well go

0:27:24.000 --> 0:27:27.760
<v Speaker 1>bonkers and trick out a nice low level emulator system

0:27:27.800 --> 0:27:32.160
<v Speaker 1>with a really really good gaming rig PC to get

0:27:32.200 --> 0:27:34.680
<v Speaker 1>the most authentic experience when you PLoP down to a

0:27:34.800 --> 0:27:39.440
<v Speaker 1>rousing game of Burger Time or Gauntlet. To low level emulators,

0:27:39.480 --> 0:27:44.000
<v Speaker 1>particularly ones that include actual hardware used by the system

0:27:44.000 --> 0:27:48.119
<v Speaker 1>you're trying to emulate, get pretty pricing. And remember you've

0:27:48.119 --> 0:27:50.920
<v Speaker 1>got to have that powerful processor to run those emulators.

0:27:51.440 --> 0:27:55.080
<v Speaker 1>And as opposed to the high level emulator types, high

0:27:55.160 --> 0:27:58.720
<v Speaker 1>level emulators don't require as much horsepower from the host computer,

0:27:59.040 --> 0:28:01.600
<v Speaker 1>which brings the cost down. You don't need to buy

0:28:01.960 --> 0:28:03.960
<v Speaker 1>a super fast computer. In fact, you may already have

0:28:04.000 --> 0:28:07.800
<v Speaker 1>a machine more than capable of running a high level

0:28:07.880 --> 0:28:10.840
<v Speaker 1>emulator program, so you won't have to spring for that

0:28:10.960 --> 0:28:15.480
<v Speaker 1>screaming gaming rig with you would like for a low

0:28:15.560 --> 0:28:19.760
<v Speaker 1>level emulator. But sometimes those high level emulators cannot perfectly

0:28:19.840 --> 0:28:24.560
<v Speaker 1>replicate whatever the target system is that the emulated system,

0:28:24.560 --> 0:28:26.240
<v Speaker 1>so you might find certain games don't have all the

0:28:26.240 --> 0:28:28.680
<v Speaker 1>bells and whistles that they should, and if you might

0:28:28.960 --> 0:28:32.359
<v Speaker 1>even be unplayable, Like you might get a title a

0:28:32.520 --> 0:28:35.840
<v Speaker 1>rom for a game you love, and you have an emulator,

0:28:35.920 --> 0:28:38.760
<v Speaker 1>a high level emulator for that system or for that machine,

0:28:38.960 --> 0:28:41.360
<v Speaker 1>and then you find out you still can't play the game. Well,

0:28:41.360 --> 0:28:43.960
<v Speaker 1>it might not be that the file you got is corrupt.

0:28:44.000 --> 0:28:46.479
<v Speaker 1>It may be that the emulator just isn't capable of

0:28:46.520 --> 0:28:50.920
<v Speaker 1>replicating that game the way it should. Now, mostly that

0:28:50.960 --> 0:28:53.959
<v Speaker 1>depends upon the way the original game developers programmed the

0:28:54.000 --> 0:28:56.800
<v Speaker 1>original game. If they used a lot of weird shortcuts

0:28:56.840 --> 0:28:59.440
<v Speaker 1>and hacks to create the game, that would work on

0:28:59.480 --> 0:29:04.880
<v Speaker 1>the target system, it may not work on an emulated system. So,

0:29:04.960 --> 0:29:08.080
<v Speaker 1>in other words, like let's say I've developed a game

0:29:08.160 --> 0:29:12.800
<v Speaker 1>for the original Nintendo, and the original Nintendo could totally

0:29:12.840 --> 0:29:19.040
<v Speaker 1>handle these sort of clergy hacked processes I've created because

0:29:19.080 --> 0:29:21.320
<v Speaker 1>I wanted to do it to make a bunch of shortcuts.

0:29:21.320 --> 0:29:23.960
<v Speaker 1>Like the code looks messy as heck. If you look

0:29:24.000 --> 0:29:27.720
<v Speaker 1>at the code, but the gameplay doesn't reflect that, it's

0:29:27.800 --> 0:29:30.280
<v Speaker 1>just fine. But then you pull it over onto an

0:29:30.280 --> 0:29:34.800
<v Speaker 1>emulated system that's more designed to handle games that are

0:29:34.800 --> 0:29:39.960
<v Speaker 1>written to the standard of Nintendo as opposed to just

0:29:40.520 --> 0:29:43.719
<v Speaker 1>getting it done, and you may find out that that

0:29:43.760 --> 0:29:46.960
<v Speaker 1>game isn't really playable on the emulated system. It's really

0:29:46.960 --> 0:29:51.200
<v Speaker 1>frustrating if in fact, that was your goal from the start.

0:29:52.960 --> 0:29:55.080
<v Speaker 1>So the more standard of games code is, the better

0:29:55.160 --> 0:29:57.640
<v Speaker 1>the chances are that a high level emulator will be

0:29:57.720 --> 0:30:01.520
<v Speaker 1>able to handle it. Now, arguably one of the most

0:30:01.560 --> 0:30:06.280
<v Speaker 1>popular types of emulators is the multiple Arcade Machine emulator

0:30:06.480 --> 0:30:11.120
<v Speaker 1>or MAIN. That's an open source emulator, and open source

0:30:11.200 --> 0:30:14.200
<v Speaker 1>essentially means the code is open for anyone to look at,

0:30:14.440 --> 0:30:18.280
<v Speaker 1>to alter, and even to re upload and distribute. So

0:30:18.320 --> 0:30:21.320
<v Speaker 1>that means as people find better ways to emulate a

0:30:21.320 --> 0:30:25.120
<v Speaker 1>particular machine, they can make adjustments to the code, and

0:30:25.160 --> 0:30:28.000
<v Speaker 1>a new version of the emulator can incorporate those changes.

0:30:28.720 --> 0:30:33.959
<v Speaker 1>So if it's a multiple arcade machine emulator, then you

0:30:34.040 --> 0:30:37.360
<v Speaker 1>may have a specific arcade cabinet that has not been

0:30:37.400 --> 0:30:40.080
<v Speaker 1>emulated yet. You might figure out how to do that,

0:30:40.280 --> 0:30:44.600
<v Speaker 1>and you add that code into a and already existing

0:30:44.840 --> 0:30:51.040
<v Speaker 1>MAIME emulator, which I understand is repetitive see also my

0:30:51.240 --> 0:30:55.480
<v Speaker 1>tirade about a t M machines and pen numbers. Uh.

0:30:55.720 --> 0:30:59.320
<v Speaker 1>But because you're able to actually take that code and

0:30:59.400 --> 0:31:02.960
<v Speaker 1>change it, and you can increase the functionality for the

0:31:02.960 --> 0:31:08.120
<v Speaker 1>community as a whole. Uh. Now, the stated purpose of

0:31:08.240 --> 0:31:14.480
<v Speaker 1>MAME is to preserve games as an historical effort because

0:31:14.480 --> 0:31:17.880
<v Speaker 1>these old arcade machines relied on physical hardware, and a

0:31:17.880 --> 0:31:20.200
<v Speaker 1>lot of them are no longer in production. In fact,

0:31:20.280 --> 0:31:24.560
<v Speaker 1>most of them aren't in production anymore. So creating the

0:31:24.640 --> 0:31:27.680
<v Speaker 1>software that could run those games is a way to

0:31:27.840 --> 0:31:31.920
<v Speaker 1>preserve the games indefinitely instead of just have them get

0:31:31.960 --> 0:31:34.560
<v Speaker 1>older and older and older and eventually they just don't

0:31:34.560 --> 0:31:36.960
<v Speaker 1>work anymore. They break down to the point where it

0:31:37.000 --> 0:31:40.440
<v Speaker 1>doesn't matter if you have an original arcade machine, the

0:31:40.520 --> 0:31:44.960
<v Speaker 1>circuit board just won't uh play the game. This way,

0:31:45.000 --> 0:31:49.080
<v Speaker 1>they could be preserved indefinitely. Now just so happens that

0:31:49.120 --> 0:31:51.680
<v Speaker 1>the software also allows you to play those games, because

0:31:51.720 --> 0:31:55.160
<v Speaker 1>that's how the game's work, right, Like if if the

0:31:55.200 --> 0:31:58.960
<v Speaker 1>software didn't allow the games to run, all you really

0:31:59.000 --> 0:32:00.440
<v Speaker 1>would need to do is why in a way to

0:32:00.520 --> 0:32:04.560
<v Speaker 1>preserve that random or or rather the read only memory

0:32:04.960 --> 0:32:09.120
<v Speaker 1>the ROMs. If you could just preserve the ROMs period,

0:32:09.240 --> 0:32:14.000
<v Speaker 1>you could have a library of unreadable files. It would

0:32:14.040 --> 0:32:17.560
<v Speaker 1>be pretty unusual to do that, Like, what's the point.

0:32:17.760 --> 0:32:21.280
<v Speaker 1>It would be kind of like going into a library

0:32:21.320 --> 0:32:24.040
<v Speaker 1>that is filled with books written in an ancient language

0:32:24.040 --> 0:32:28.960
<v Speaker 1>that no one understands anymore. So, yeah, they're historical, they

0:32:28.960 --> 0:32:32.400
<v Speaker 1>have some historical significance, but there's no way to understand

0:32:32.480 --> 0:32:35.440
<v Speaker 1>what is there, so you start asking the question does

0:32:35.480 --> 0:32:38.160
<v Speaker 1>it really make sense to keep them if there's no

0:32:38.240 --> 0:32:41.520
<v Speaker 1>way to read them. So Maine can read these files

0:32:41.520 --> 0:32:46.040
<v Speaker 1>that can play those games. But the stated purpose for

0:32:46.160 --> 0:32:50.680
<v Speaker 1>Main isn't to play the games, it's just to preserve them.

0:32:50.720 --> 0:32:54.160
<v Speaker 1>Now you might find that that purpose is a little

0:32:54.360 --> 0:32:57.680
<v Speaker 1>do not peek behind the curtain esque and that you

0:32:57.720 --> 0:33:00.360
<v Speaker 1>could easily imagine Maine's design is meant to of view

0:33:00.400 --> 0:33:02.880
<v Speaker 1>the chance to play those old games and not just

0:33:02.960 --> 0:33:06.480
<v Speaker 1>keep them for posterity. I mean, if you can't play

0:33:06.520 --> 0:33:10.240
<v Speaker 1>the video game, is it really worth keeping? But never

0:33:10.320 --> 0:33:14.320
<v Speaker 1>mind that it doesn't really matter for the purposes of

0:33:14.360 --> 0:33:18.560
<v Speaker 1>this discussion. I just find it amusing. So the Main

0:33:18.680 --> 0:33:22.040
<v Speaker 1>software evolves over time, and part of that is just

0:33:22.080 --> 0:33:25.800
<v Speaker 1>to keep up with technology. As operating systems evolve, we

0:33:25.840 --> 0:33:30.240
<v Speaker 1>have to adjust the software the main software to run

0:33:30.320 --> 0:33:34.440
<v Speaker 1>on new systems. So you know, if if Microsoft releases

0:33:34.560 --> 0:33:38.440
<v Speaker 1>a new version of Windows that's remarkably different from previous versions,

0:33:39.040 --> 0:33:42.520
<v Speaker 1>you may have to tweak the code for Main to

0:33:42.840 --> 0:33:46.520
<v Speaker 1>be able to run on the new Windows platform. So

0:33:47.160 --> 0:33:49.320
<v Speaker 1>it is necessary for this to be open source for

0:33:49.440 --> 0:33:53.400
<v Speaker 1>the software to remain relevant, and there are lots of

0:33:53.400 --> 0:33:57.080
<v Speaker 1>different versions of MAME on operating systems like Windows. On

0:33:57.280 --> 0:34:00.680
<v Speaker 1>Unix mac os, there are versions for both thirty two

0:34:00.680 --> 0:34:04.200
<v Speaker 1>bit and sixty four bit Windows versions. You could find

0:34:04.240 --> 0:34:09.120
<v Speaker 1>people selling main machines inside either classic arcade cabinets or

0:34:09.239 --> 0:34:13.000
<v Speaker 1>new cabinets designed to look like old ones, complete with

0:34:13.040 --> 0:34:16.800
<v Speaker 1>special controls. So if you wanted to, you could create

0:34:16.840 --> 0:34:19.720
<v Speaker 1>a computer like You could build a computer on your own,

0:34:20.120 --> 0:34:22.800
<v Speaker 1>a decent one, not not like again, not a super

0:34:22.840 --> 0:34:25.719
<v Speaker 1>fast one necessarily, but a decent computer with a lot

0:34:25.760 --> 0:34:30.239
<v Speaker 1>of storage. You could um mount a display inside a

0:34:30.320 --> 0:34:34.319
<v Speaker 1>cabinet to look like an arcade monitor. You could have

0:34:34.400 --> 0:34:38.120
<v Speaker 1>the computer inside the cabinet. That's essentially the case for

0:34:38.200 --> 0:34:44.200
<v Speaker 1>your computer, and you could hook up arcade controls, including

0:34:44.280 --> 0:34:48.840
<v Speaker 1>ones that are more unusual like the roller balls or

0:34:49.000 --> 0:34:52.720
<v Speaker 1>or some of the other um you know, yoke versions

0:34:52.760 --> 0:34:55.279
<v Speaker 1>for for flight games like the old Star Wars game

0:34:55.320 --> 0:34:57.040
<v Speaker 1>that kind of stuff. You could have all those sort

0:34:57.080 --> 0:35:00.800
<v Speaker 1>of controls available. You can even have ones that detach

0:35:01.120 --> 0:35:03.680
<v Speaker 1>from the system so that you can swap them out

0:35:03.719 --> 0:35:06.000
<v Speaker 1>whenever you need to for whatever game you want to play,

0:35:07.040 --> 0:35:09.799
<v Speaker 1>and you could have that in your house and you

0:35:09.800 --> 0:35:13.840
<v Speaker 1>would essentially have access to all the arcade games supported

0:35:13.960 --> 0:35:17.480
<v Speaker 1>by that emulator. That doesn't necessarily mean every arcade game

0:35:17.520 --> 0:35:20.480
<v Speaker 1>ever invented, but it could be hundreds and hundreds of

0:35:20.520 --> 0:35:24.040
<v Speaker 1>different titles. On the inside is just a PC running

0:35:24.080 --> 0:35:30.959
<v Speaker 1>that main software and a collection of ROMs. So it's

0:35:31.080 --> 0:35:34.279
<v Speaker 1>getting to time for me to talk about the legality

0:35:34.360 --> 0:35:37.000
<v Speaker 1>of this. Like, if you wanted to do this, if

0:35:37.040 --> 0:35:39.480
<v Speaker 1>you wanted to have a an emulator, whether it was

0:35:39.520 --> 0:35:43.000
<v Speaker 1>a main emulator or a video game console emulator or whatever,

0:35:44.320 --> 0:35:47.840
<v Speaker 1>what are the legal considerations you should make. I'm gonna

0:35:47.880 --> 0:35:49.719
<v Speaker 1>tell you more about that in just a second, but

0:35:49.840 --> 0:35:53.240
<v Speaker 1>first let's take another quick break to thank our sponsor.

0:36:01.480 --> 0:36:04.680
<v Speaker 1>All Right, we're back. So you can technically build or

0:36:04.760 --> 0:36:08.320
<v Speaker 1>buy a machine capable of providing an entire arcade's worth

0:36:08.440 --> 0:36:14.160
<v Speaker 1>of gaming on one device. But is that legal? So

0:36:14.200 --> 0:36:20.759
<v Speaker 1>this brings us to the legal discussion or law stuff done? Uh? Interesting? Note,

0:36:20.800 --> 0:36:23.759
<v Speaker 1>there are a lot of questions about rams and their legality.

0:36:24.320 --> 0:36:27.799
<v Speaker 1>So our wrong files illegal? Is it ever legal to

0:36:27.920 --> 0:36:33.760
<v Speaker 1>download one? Our emulators illegal? Uh? It's good to finally

0:36:34.000 --> 0:36:37.920
<v Speaker 1>kind of tackle these questions now. First, emulators in general

0:36:38.040 --> 0:36:42.680
<v Speaker 1>are legal. You can own an emulator. There's nothing inherently

0:36:42.800 --> 0:36:48.080
<v Speaker 1>illegal about emulators. Their software meant to emulate another technology,

0:36:48.840 --> 0:36:53.839
<v Speaker 1>but in general they don't contain any proprietary code. So

0:36:53.920 --> 0:36:57.960
<v Speaker 1>that means emulators, more often than not, don't have any

0:36:58.040 --> 0:37:02.719
<v Speaker 1>code in them that's tacted by copyright. Since there's no

0:37:02.840 --> 0:37:08.480
<v Speaker 1>copyright violation, there's no illegal nature to these emulators. That

0:37:08.800 --> 0:37:13.000
<v Speaker 1>developers haven't stolen any intellectual property from the companies that

0:37:13.080 --> 0:37:16.400
<v Speaker 1>made the original equipment. They're just creating new software to

0:37:16.520 --> 0:37:20.759
<v Speaker 1>run programs that relied on older original equipment. So it's

0:37:20.760 --> 0:37:25.600
<v Speaker 1>a fine line. But emulators on their own are totally legal.

0:37:26.800 --> 0:37:30.920
<v Speaker 1>As for ROMs, that's where it gets messy. For one thing,

0:37:30.960 --> 0:37:37.240
<v Speaker 1>we do not have global laws guiding our our choices

0:37:37.320 --> 0:37:41.800
<v Speaker 1>about legality or illegality when it comes to rom's, so

0:37:42.000 --> 0:37:45.560
<v Speaker 1>the rules in one country can be significantly different from

0:37:45.600 --> 0:37:49.279
<v Speaker 1>those of other countries. Now, I'm gonna be looking at

0:37:49.320 --> 0:37:51.720
<v Speaker 1>this from the viewpoint of someone in the United States

0:37:51.760 --> 0:37:55.160
<v Speaker 1>because that's where I live longtime listeners of tech stuff. No,

0:37:55.320 --> 0:37:57.840
<v Speaker 1>this is my m O. I will take a view

0:37:57.920 --> 0:38:01.080
<v Speaker 1>from the US because that's where I'm rom and it's

0:38:01.120 --> 0:38:03.560
<v Speaker 1>way easier for me to talk about this. But if

0:38:03.600 --> 0:38:06.839
<v Speaker 1>I wanted to tackle the legality from every country, i'd

0:38:06.840 --> 0:38:10.640
<v Speaker 1>have to do a whole series of podcasts because it's

0:38:10.920 --> 0:38:14.760
<v Speaker 1>different for different places. In fact, even just the length

0:38:14.960 --> 0:38:19.160
<v Speaker 1>of copyright protection is different in different countries. The US

0:38:19.200 --> 0:38:23.880
<v Speaker 1>has a lengthy period of copyright protection, Like we're talking

0:38:24.440 --> 0:38:27.960
<v Speaker 1>decades and decades of protection even after the death of

0:38:28.040 --> 0:38:33.960
<v Speaker 1>whomever held the copyright. So something to keep in mind. Alright, So,

0:38:34.040 --> 0:38:36.600
<v Speaker 1>downloading a ram of a game you do not own

0:38:37.280 --> 0:38:42.000
<v Speaker 1>is violating copyright and is illegal pretty much anywhere. So

0:38:42.520 --> 0:38:45.200
<v Speaker 1>if you wanted to get hold of a rom for

0:38:45.320 --> 0:38:48.000
<v Speaker 1>a game, but you don't own that game, you have

0:38:48.080 --> 0:38:52.400
<v Speaker 1>no legal copy of that game, Downloading it is against

0:38:52.440 --> 0:38:55.359
<v Speaker 1>the law. It's no different from downloading a song you

0:38:55.440 --> 0:38:57.799
<v Speaker 1>don't own, or a movie you don't own, or a

0:38:57.840 --> 0:39:01.239
<v Speaker 1>television show. If you do not own a copy, you're

0:39:01.320 --> 0:39:05.680
<v Speaker 1>essentially stealing. Now, in the case of arcade games, it's

0:39:05.719 --> 0:39:08.160
<v Speaker 1>pretty darn common for people to steal them. Not many

0:39:08.160 --> 0:39:12.759
<v Speaker 1>people actually own arcade machines. There are people who do,

0:39:12.840 --> 0:39:14.399
<v Speaker 1>there are a lot of them who do, but most

0:39:14.400 --> 0:39:17.400
<v Speaker 1>people do not. The average person does not own an

0:39:17.520 --> 0:39:20.239
<v Speaker 1>arcade machine in their home. So unless you own a

0:39:20.320 --> 0:39:24.799
<v Speaker 1>legit copy of an arcade machine, downloading the wrong for

0:39:24.840 --> 0:39:28.799
<v Speaker 1>that game is pretty much illegal. But let's say you

0:39:28.880 --> 0:39:31.840
<v Speaker 1>go to an auction right and you buy an old

0:39:31.840 --> 0:39:34.359
<v Speaker 1>Spy Hunter cabinet for your wreck room at home. First

0:39:34.360 --> 0:39:38.160
<v Speaker 1>of all, good Jobs by Hunter, awesome arcade game, one

0:39:38.200 --> 0:39:41.839
<v Speaker 1>of my favorites from the arcade era. You get the

0:39:42.040 --> 0:39:45.880
<v Speaker 1>machine home and you realize that the circuit board is

0:39:46.680 --> 0:39:49.360
<v Speaker 1>damaged a little bit. It's it's kind of fried, and

0:39:49.400 --> 0:39:52.759
<v Speaker 1>the game isn't really working properly. It's it's not it's

0:39:52.760 --> 0:39:55.160
<v Speaker 1>not stable, like you can get it running every now

0:39:55.160 --> 0:39:59.160
<v Speaker 1>and then, but it doesn't necessarily run flawlessly or it

0:39:59.239 --> 0:40:03.040
<v Speaker 1>might crash at random intervals. So the question is, could

0:40:03.080 --> 0:40:07.800
<v Speaker 1>you then download a ROM for Spy Hunter and replace

0:40:07.920 --> 0:40:10.920
<v Speaker 1>the guts of the cabinet you've bought with a PC

0:40:11.080 --> 0:40:14.440
<v Speaker 1>running an emulated copy of the game. So instead of

0:40:14.480 --> 0:40:18.799
<v Speaker 1>having the actual Spy Hunter elements inside this cabinet, you

0:40:18.840 --> 0:40:22.799
<v Speaker 1>remove those, you put a PC in there. The PC

0:40:23.000 --> 0:40:25.960
<v Speaker 1>is running name and the only ROM you have on

0:40:26.040 --> 0:40:29.560
<v Speaker 1>it Spy Hunter, because that's the game you bought. Would

0:40:29.560 --> 0:40:35.640
<v Speaker 1>that be legal? Well, if you were to rip the

0:40:35.680 --> 0:40:39.520
<v Speaker 1>game off the circuit board yourself, you could probably argue

0:40:39.560 --> 0:40:42.719
<v Speaker 1>that as being totally legit. So, in other words, you'd

0:40:42.719 --> 0:40:45.400
<v Speaker 1>have to make a digital copy of a hard coded game,

0:40:46.239 --> 0:40:49.440
<v Speaker 1>which isn't exactly easy for the average person to do,

0:40:49.880 --> 0:40:52.040
<v Speaker 1>but it would be a necessary step to use a

0:40:52.080 --> 0:40:56.440
<v Speaker 1>digital ROM on another type of device. In the United States,

0:40:56.480 --> 0:40:59.640
<v Speaker 1>this would likely be seen as making a legal backup

0:40:59.680 --> 0:41:03.680
<v Speaker 1>cop be as in a lawful it is perfectly fine

0:41:04.080 --> 0:41:07.080
<v Speaker 1>to make a backup copy of media you have purchased.

0:41:07.480 --> 0:41:11.279
<v Speaker 1>It's similar to making a backup of a CD or

0:41:11.840 --> 0:41:16.040
<v Speaker 1>cassette tape or or a vinyl album, either through putting

0:41:16.040 --> 0:41:18.520
<v Speaker 1>it onto another medium or ripping it and making it

0:41:18.560 --> 0:41:22.120
<v Speaker 1>an MP three as perfectly legal. As long as you're

0:41:22.120 --> 0:41:24.720
<v Speaker 1>doing it for your own personal use without the intent

0:41:24.800 --> 0:41:28.800
<v Speaker 1>to distribute, you're you're pretty much okay. You are legally

0:41:28.840 --> 0:41:33.960
<v Speaker 1>allowed to make backup copies of stuff you purchased, um

0:41:34.000 --> 0:41:37.040
<v Speaker 1>as long as it's for the purpose of a backup,

0:41:38.320 --> 0:41:41.759
<v Speaker 1>but one about downloading a ROM from another source rather

0:41:41.800 --> 0:41:44.120
<v Speaker 1>than ripping it from the circuit board you physically own.

0:41:44.200 --> 0:41:47.319
<v Speaker 1>Let's say that you don't have the equipment necessary to

0:41:47.440 --> 0:41:51.000
<v Speaker 1>pull the code off a hard coded circuit board and

0:41:51.040 --> 0:41:53.799
<v Speaker 1>convert it into something digital that a PC could read,

0:41:54.719 --> 0:41:57.359
<v Speaker 1>so instead, you're just going to download a copy from

0:41:57.400 --> 0:42:01.239
<v Speaker 1>the internet. Now, arguably you could say that downloading the

0:42:01.360 --> 0:42:03.879
<v Speaker 1>ROM in this instance is a case of fair use.

0:42:04.800 --> 0:42:06.800
<v Speaker 1>So the argument you would make is that you already

0:42:06.840 --> 0:42:10.200
<v Speaker 1>own the game. You purchased a legit copy of Spy Hunter,

0:42:11.120 --> 0:42:14.920
<v Speaker 1>and you're not distributing the ROM to anyone. You're not

0:42:15.800 --> 0:42:20.120
<v Speaker 1>trying to create a marketplace for the Spy Hunter game.

0:42:20.200 --> 0:42:21.880
<v Speaker 1>All you want to be able to do is play

0:42:21.920 --> 0:42:27.000
<v Speaker 1>the game you bought on the arcade console you you purchased.

0:42:27.920 --> 0:42:31.560
<v Speaker 1>So you could argue, I'm not causing harm to the market, right,

0:42:31.600 --> 0:42:34.839
<v Speaker 1>I'm not. I'm not denying a sale. I'm just trying

0:42:34.840 --> 0:42:38.680
<v Speaker 1>to get access to the thing I have already purchased. Well,

0:42:38.760 --> 0:42:41.040
<v Speaker 1>that could be a legit fair use argument, but you've

0:42:41.040 --> 0:42:43.520
<v Speaker 1>got to remember fair use is an argument you have

0:42:43.640 --> 0:42:46.279
<v Speaker 1>to make in a legal case. In other words, it

0:42:46.360 --> 0:42:51.239
<v Speaker 1>doesn't protect you from getting sued. You can't say at

0:42:51.239 --> 0:42:55.400
<v Speaker 1>the forefront, this is fair use, don't sue me. Instead,

0:42:55.680 --> 0:42:58.520
<v Speaker 1>fair use is an argument you make once you have

0:42:58.960 --> 0:43:03.279
<v Speaker 1>been sued, So fair use doesn't matter until you get

0:43:03.320 --> 0:43:06.279
<v Speaker 1>to court. Chances are, though no one would sue you

0:43:06.320 --> 0:43:09.640
<v Speaker 1>in the first place, unless you were distributing games, particularly

0:43:09.680 --> 0:43:11.719
<v Speaker 1>for some of these old ROMs, because in some of

0:43:11.760 --> 0:43:14.080
<v Speaker 1>these cases, the companies that made the games have been

0:43:14.120 --> 0:43:17.719
<v Speaker 1>out of business for years, or they were acquired and

0:43:17.840 --> 0:43:20.799
<v Speaker 1>sold and acquired so many times, then no one really

0:43:20.800 --> 0:43:23.840
<v Speaker 1>knows what the ownership rights are for some of these games. So,

0:43:23.880 --> 0:43:26.000
<v Speaker 1>in other words, there's no one to give your money

0:43:26.040 --> 0:43:29.640
<v Speaker 1>to because there's no one knows who owns the copyright.

0:43:30.239 --> 0:43:34.640
<v Speaker 1>And not only are no copies being sold, but there's

0:43:34.800 --> 0:43:38.839
<v Speaker 1>no one who's authorized to sell them, right, no one

0:43:38.920 --> 0:43:42.440
<v Speaker 1>knows who owns it. So in those cases, you're probably

0:43:42.480 --> 0:43:45.920
<v Speaker 1>okay to download the ROMs, not that it's legal, but

0:43:45.960 --> 0:43:48.680
<v Speaker 1>that you're probably not gonna get punished for it because

0:43:49.120 --> 0:43:52.440
<v Speaker 1>there's no one to lay a claim against you. That

0:43:53.000 --> 0:43:56.040
<v Speaker 1>doesn't stop companies from doing that even when they don't

0:43:56.080 --> 0:43:59.440
<v Speaker 1>necessarily have a legal claim to the content. If they

0:43:59.440 --> 0:44:01.360
<v Speaker 1>think they can away with it, they could totally go

0:44:01.440 --> 0:44:03.480
<v Speaker 1>that route. You would have to prove in a court

0:44:03.520 --> 0:44:06.759
<v Speaker 1>of law that the company suing you does not have

0:44:06.800 --> 0:44:11.440
<v Speaker 1>a legal claim to the property they are arguing is theirs.

0:44:12.160 --> 0:44:16.160
<v Speaker 1>So um, you know, if if video game company A says, hey,

0:44:16.200 --> 0:44:19.680
<v Speaker 1>you know back in we purchased video game company B,

0:44:19.880 --> 0:44:24.440
<v Speaker 1>which means we own the video game you have downloaded illegally.

0:44:25.400 --> 0:44:28.960
<v Speaker 1>Uh And you say, well no because of X, Y

0:44:28.960 --> 0:44:32.640
<v Speaker 1>and Z. Maybe it turns out you're perfectly fine, but

0:44:32.680 --> 0:44:34.759
<v Speaker 1>it means you have to go through the whole court experience,

0:44:35.080 --> 0:44:38.640
<v Speaker 1>which isn't great. Now. You may have also heard that

0:44:38.680 --> 0:44:41.239
<v Speaker 1>there's a special rule that allows you to download any

0:44:41.320 --> 0:44:43.800
<v Speaker 1>video game ROM and keep it for twenty four hours

0:44:44.200 --> 0:44:46.719
<v Speaker 1>without it being illegal, as long as you delete the

0:44:46.840 --> 0:44:51.480
<v Speaker 1>ROM after twenty four hours. Uh So generally people say, oh, yeah,

0:44:51.520 --> 0:44:53.360
<v Speaker 1>you can download the game, give it a whirl, and

0:44:53.400 --> 0:44:55.799
<v Speaker 1>delete it a day later, and there's no fear of

0:44:55.840 --> 0:44:58.719
<v Speaker 1>someone coming after you. I am here to tell you

0:44:58.800 --> 0:45:02.160
<v Speaker 1>that's not based on any actual legal grounding. From what

0:45:02.280 --> 0:45:07.120
<v Speaker 1>I can tell, there is no legal foundation for this argument.

0:45:07.960 --> 0:45:10.799
<v Speaker 1>It's probably just wishful thinking that's been passed along as

0:45:10.880 --> 0:45:14.359
<v Speaker 1>gospel among a lot of ROM sharing communities. The truth is,

0:45:14.760 --> 0:45:17.960
<v Speaker 1>if you're downloading something that doesn't belong to you and

0:45:18.000 --> 0:45:22.040
<v Speaker 1>you're not purchasing it, you're just downloading it, you are stealing. It.

0:45:22.080 --> 0:45:25.080
<v Speaker 1>Doesn't matter if you're keeping it forever or for twenty

0:45:25.080 --> 0:45:28.799
<v Speaker 1>four hours, it's still stolen. Now complicating matters in this

0:45:28.880 --> 0:45:32.359
<v Speaker 1>case is that we're talking about digital information, not a

0:45:32.360 --> 0:45:35.920
<v Speaker 1>physical copy of something. I mean, if I walked into

0:45:36.000 --> 0:45:38.360
<v Speaker 1>a video game store and I pocketed a copy of

0:45:38.360 --> 0:45:41.560
<v Speaker 1>an actual video game that was stored on physical media

0:45:41.680 --> 0:45:44.800
<v Speaker 1>like a CD or a DVD, there's no question that

0:45:44.880 --> 0:45:46.839
<v Speaker 1>I stole something. Right If I walk into a game

0:45:46.880 --> 0:45:50.360
<v Speaker 1>stop and I grab a box and I shove it

0:45:50.440 --> 0:45:53.439
<v Speaker 1>under my jacket and I walk out, I stole that.

0:45:54.160 --> 0:45:57.680
<v Speaker 1>There's a physical copy of the game that I have taken,

0:45:57.719 --> 0:46:01.239
<v Speaker 1>and that means the store can't sell that physical copy

0:46:01.280 --> 0:46:03.480
<v Speaker 1>because it's in my possession and I didn't buy it.

0:46:04.320 --> 0:46:09.319
<v Speaker 1>But downloading a file doesn't feel like stealing, right, because

0:46:09.320 --> 0:46:13.520
<v Speaker 1>the original file still exists on some server somewhere, So

0:46:13.560 --> 0:46:16.760
<v Speaker 1>you didn't You didn't take the one and only existing copy.

0:46:16.880 --> 0:46:19.560
<v Speaker 1>You made a copy of another file, and now you

0:46:19.680 --> 0:46:24.640
<v Speaker 1>have that copy, so other legitimate customers could still purchase

0:46:24.800 --> 0:46:27.560
<v Speaker 1>the game that you've taken, because it's not like it

0:46:27.600 --> 0:46:30.480
<v Speaker 1>doesn't exist anymore. And so because of this, a lot

0:46:30.480 --> 0:46:34.560
<v Speaker 1>of people justify their actions as being okay, because it's

0:46:34.600 --> 0:46:38.440
<v Speaker 1>not like they actually took something that physically exists, except

0:46:38.560 --> 0:46:42.200
<v Speaker 1>that at the end of the day, you are accessing

0:46:42.280 --> 0:46:45.920
<v Speaker 1>something without paying for it, when there's an entire business

0:46:46.000 --> 0:46:50.840
<v Speaker 1>based off of making games for money. If game developers

0:46:50.840 --> 0:46:55.040
<v Speaker 1>didn't make money, there wouldn't be games. No one would

0:46:55.040 --> 0:46:57.960
<v Speaker 1>make games, or at least not on the level that

0:46:58.000 --> 0:47:00.440
<v Speaker 1>we are used to. People might make games as an

0:47:00.480 --> 0:47:03.480
<v Speaker 1>expression of art and they're not trying to make any money,

0:47:03.520 --> 0:47:06.480
<v Speaker 1>but there wouldn't be a video game business if we

0:47:06.600 --> 0:47:09.120
<v Speaker 1>all just stole stuff, right, because there's no money in that,

0:47:09.280 --> 0:47:11.120
<v Speaker 1>you would spend your time doing something else where you

0:47:11.120 --> 0:47:15.319
<v Speaker 1>would actually be able to make a living. But we

0:47:15.400 --> 0:47:18.239
<v Speaker 1>get even more complicated because many of the games that

0:47:18.600 --> 0:47:22.319
<v Speaker 1>are in wrong form are now on obsolete systems which

0:47:22.360 --> 0:47:27.640
<v Speaker 1>you cannot purchase at least not from a a primary company,

0:47:27.840 --> 0:47:30.880
<v Speaker 1>Like you're not gonna be able to buy a classic

0:47:30.960 --> 0:47:34.600
<v Speaker 1>Nintendo system from Nintendo. You could buy the the little

0:47:34.880 --> 0:47:38.520
<v Speaker 1>ones that replicate, you know, a dozen or two dozen

0:47:38.560 --> 0:47:41.120
<v Speaker 1>games on one system, but you can't just go out

0:47:41.120 --> 0:47:43.640
<v Speaker 1>and buy in any s. They don't they don't make

0:47:43.640 --> 0:47:47.520
<v Speaker 1>them anymore, or some of those video game systems are

0:47:47.560 --> 0:47:50.160
<v Speaker 1>in limbo as far as ownership goes, and that also

0:47:50.200 --> 0:47:52.880
<v Speaker 1>makes it easier for people to justify downloading the files

0:47:52.920 --> 0:47:56.240
<v Speaker 1>but it doesn't make it anymore legal. Now, I'll admit

0:47:56.320 --> 0:47:59.200
<v Speaker 1>it's really frustrating to be in a position in which

0:47:59.239 --> 0:48:03.080
<v Speaker 1>you would happily pay for something if you could, but

0:48:03.200 --> 0:48:05.040
<v Speaker 1>you have no legal way to do it. That is

0:48:05.160 --> 0:48:08.600
<v Speaker 1>really frustrating. I found myself in that same position with

0:48:08.680 --> 0:48:11.520
<v Speaker 1>a lot of British television series that I love but

0:48:11.600 --> 0:48:15.240
<v Speaker 1>are not available for purchase in the United States. So

0:48:15.719 --> 0:48:21.319
<v Speaker 1>I do the legal, grown up lame thing, which is

0:48:21.360 --> 0:48:25.680
<v Speaker 1>that I don't I don't access it like I don't.

0:48:25.719 --> 0:48:28.600
<v Speaker 1>I don't get it means I don't pirate the stuff

0:48:28.640 --> 0:48:30.319
<v Speaker 1>I love in the hopes that one day I'll have

0:48:30.360 --> 0:48:34.480
<v Speaker 1>a legal means to access it. Instead. I'll, you know,

0:48:34.680 --> 0:48:38.320
<v Speaker 1>I'll post about it, I'll write to people, I'll ask questions,

0:48:38.400 --> 0:48:41.240
<v Speaker 1>but I'm I have to wait until there's a legal

0:48:41.280 --> 0:48:44.000
<v Speaker 1>way to purchase it. I do think this is a

0:48:44.040 --> 0:48:48.000
<v Speaker 1>muddy area. If a game exists and there's no way

0:48:48.000 --> 0:48:50.120
<v Speaker 1>to buy it and the company that made it doesn't

0:48:50.120 --> 0:48:53.200
<v Speaker 1>even exist anymore, are you really causing harm to the

0:48:53.239 --> 0:48:57.520
<v Speaker 1>market by downloading a ROM I'd say you're probably not,

0:48:58.120 --> 0:49:01.320
<v Speaker 1>because there's no way to purchase that legal. But someone

0:49:01.360 --> 0:49:04.680
<v Speaker 1>in court might say you undermined their attempt to make

0:49:04.719 --> 0:49:07.520
<v Speaker 1>a legitimate commercial copy of the game further down the road.

0:49:08.160 --> 0:49:10.480
<v Speaker 1>And because we can't see into the future and see

0:49:10.520 --> 0:49:12.960
<v Speaker 1>if someone is really telling the truth in those cases,

0:49:13.440 --> 0:49:17.040
<v Speaker 1>that's problematic. So if I download a bunch of ROMs

0:49:17.120 --> 0:49:21.719
<v Speaker 1>from a previous publisher that no longer exists, but their

0:49:21.760 --> 0:49:25.520
<v Speaker 1>intellectual property belongs to another company, and that other companies

0:49:25.520 --> 0:49:28.880
<v Speaker 1>says hey, and five years we're going to release a

0:49:29.040 --> 0:49:33.360
<v Speaker 1>best of compilation, UH little console that you can connect

0:49:33.400 --> 0:49:38.080
<v Speaker 1>to your TV. And if you distribute these ROMs, then

0:49:38.120 --> 0:49:41.160
<v Speaker 1>you devalue that system, even if they have no plan

0:49:41.239 --> 0:49:44.479
<v Speaker 1>of doing that. I don't know the case right, so

0:49:44.800 --> 0:49:48.200
<v Speaker 1>it's complicated. At the end of the day. It is

0:49:48.239 --> 0:49:51.480
<v Speaker 1>illegal to download ROMs for any games you do not own,

0:49:52.120 --> 0:49:55.680
<v Speaker 1>and you could technically get in trouble for it. And

0:49:55.719 --> 0:49:58.440
<v Speaker 1>as for games you do own, it's a gray area

0:49:58.680 --> 0:50:01.840
<v Speaker 1>and you could still technically get in trouble for it.

0:50:01.960 --> 0:50:05.240
<v Speaker 1>So tread carefully, and if there is a legal way

0:50:05.320 --> 0:50:07.680
<v Speaker 1>to buy or access the stuff you love, I urge

0:50:07.719 --> 0:50:10.719
<v Speaker 1>you to do that first. It helps cut down on

0:50:10.760 --> 0:50:15.120
<v Speaker 1>reactionary laws and digital rights management strategies, and it helps

0:50:15.360 --> 0:50:21.160
<v Speaker 1>prevent companies from making these these these uh new systems

0:50:21.160 --> 0:50:24.439
<v Speaker 1>that hurt everybody. So if there's a way to get

0:50:24.440 --> 0:50:29.400
<v Speaker 1>it legally, do that. Um. And if there's not, I

0:50:29.560 --> 0:50:32.840
<v Speaker 1>think really hard before you go down this pathway, because

0:50:33.120 --> 0:50:36.920
<v Speaker 1>you could be causing yourself more frustration in the long term.

0:50:37.000 --> 0:50:39.520
<v Speaker 1>And that's all I have on video game emulators. And

0:50:39.680 --> 0:50:42.120
<v Speaker 1>there's a lot more to talk about, Like I could

0:50:42.400 --> 0:50:45.920
<v Speaker 1>go into more detail about specific emulators, but there's so

0:50:45.960 --> 0:50:48.719
<v Speaker 1>many different kinds of them and so many different approaches

0:50:48.760 --> 0:50:51.239
<v Speaker 1>to emulation that I had to take a really high

0:50:51.360 --> 0:50:54.960
<v Speaker 1>level look at this topic. No two emulators, even for

0:50:55.080 --> 0:50:58.440
<v Speaker 1>the same system, are exactly alike, and some of them

0:50:58.480 --> 0:51:02.120
<v Speaker 1>are remarkably different from most others. So it'd be impossible

0:51:02.160 --> 0:51:04.920
<v Speaker 1>to cover them all in an episode or even a

0:51:05.000 --> 0:51:08.239
<v Speaker 1>series of them. But if you guys have suggestions for

0:51:08.360 --> 0:51:11.680
<v Speaker 1>future episodes of tech Stuff, please let me know about them.

0:51:11.760 --> 0:51:13.840
<v Speaker 1>You can write me an email. My address for the

0:51:13.880 --> 0:51:17.440
<v Speaker 1>show is tech Stuff at how stuff works dot com,

0:51:17.560 --> 0:51:20.240
<v Speaker 1>or you can send me a message on Facebook or Twitter.

0:51:20.360 --> 0:51:23.200
<v Speaker 1>The handle at both of those is text Stuff H

0:51:23.520 --> 0:51:26.719
<v Speaker 1>s W. And I'll talk to you again, hopefully with

0:51:26.760 --> 0:51:34.480
<v Speaker 1>a better voice, really soon for more on this and

0:51:34.560 --> 0:51:37.040
<v Speaker 1>thousands of other topics. Is it how stuff works? Dot

0:51:37.120 --> 0:51:47.120
<v Speaker 1>com