WEBVTT - TechStuff Classic: How Video Game Emulators Work

0:00:04.440 --> 0:00:12.280
<v Speaker 1>Welcome to tech Stuff, a production from iHeartRadio. Hey there,

0:00:12.280 --> 0:00:15.920
<v Speaker 1>and welcome to tech Stuff. I'm your host, Jonathan Strickland.

0:00:15.960 --> 0:00:19.319
<v Speaker 1>I'm an executive producer with iHeartRadio, and how the tech

0:00:19.360 --> 0:00:22.959
<v Speaker 1>are you? It's time for a tech Stuff classic episode.

0:00:23.120 --> 0:00:27.479
<v Speaker 1>This episode originally published March first, twenty seventeen. It is

0:00:27.560 --> 0:00:33.080
<v Speaker 1>titled how Video Game Emulators Work. And I've often thought

0:00:33.560 --> 0:00:39.120
<v Speaker 1>about getting like an Arcade setup running a video game emulator.

0:00:39.600 --> 0:00:43.640
<v Speaker 1>Never done it because while most of those titles that

0:00:43.680 --> 0:00:46.800
<v Speaker 1>I would want to play are not really available through

0:00:46.840 --> 0:00:52.159
<v Speaker 1>any legitimate means, I can't reconcile the fact that a

0:00:52.159 --> 0:00:57.160
<v Speaker 1>lot of video game emulator solutions involve essentially just kind

0:00:57.160 --> 0:01:02.720
<v Speaker 1>of stealing intellectual property. But let's listen to this classic episode.

0:01:03.920 --> 0:01:05.880
<v Speaker 1>Just letting you guys know, in case you're wondering, like,

0:01:05.880 --> 0:01:09.319
<v Speaker 1>whys Jonathan sound so weird, or rather more weird than

0:01:09.360 --> 0:01:13.559
<v Speaker 1>he normally sounds, is because I am recovering from said cold,

0:01:14.000 --> 0:01:17.360
<v Speaker 1>and my voice is probably somewhere between eighty and ninety

0:01:17.400 --> 0:01:18.240
<v Speaker 1>percent back.

0:01:18.840 --> 0:01:20.720
<v Speaker 2>So got that out of the way.

0:01:20.760 --> 0:01:23.360
<v Speaker 1>Today's episode is actually coming to us courtesy of a

0:01:23.360 --> 0:01:28.840
<v Speaker 1>little listener male or actually it's from a listener tweet Now,

0:01:28.880 --> 0:01:33.160
<v Speaker 1>remember the tech stuff Twitter handle is tech Stuff HSW

0:01:33.440 --> 0:01:35.960
<v Speaker 1>so if you tweet me there, I will see it.

0:01:36.840 --> 0:01:39.800
<v Speaker 1>And this one comes from Dan who says I'd love

0:01:39.840 --> 0:01:42.720
<v Speaker 1>to hear a show on how video game emulators work.

0:01:43.640 --> 0:01:45.959
<v Speaker 1>So today we're going to explore what an emulator is,

0:01:46.680 --> 0:01:49.800
<v Speaker 1>why they're necessary, in how they work. Now, first of all,

0:01:49.840 --> 0:01:51.280
<v Speaker 1>I should say there are a lot of different types

0:01:51.280 --> 0:01:55.440
<v Speaker 1>of emulators. It's not just for the video game world,

0:01:55.600 --> 0:01:59.320
<v Speaker 1>but I'm going to focus specifically on video games. And

0:01:59.360 --> 0:02:01.520
<v Speaker 1>you might wonder our, right, So what is an emulator? Well,

0:02:01.680 --> 0:02:05.640
<v Speaker 1>it does what it sounds like. It emulates some other technology,

0:02:06.240 --> 0:02:10.120
<v Speaker 1>which means it's attempting to replicate how another technology works

0:02:10.440 --> 0:02:13.399
<v Speaker 1>or what it does. Now, sometimes the emulator does this

0:02:13.800 --> 0:02:17.080
<v Speaker 1>in a very different way than the original technology did.

0:02:17.520 --> 0:02:20.440
<v Speaker 1>And more often than not, an emulator relies on software

0:02:20.480 --> 0:02:23.320
<v Speaker 1>at least partly to replicate a particular piece of a

0:02:23.360 --> 0:02:27.359
<v Speaker 1>hardware's functionality. So you can think of emulators as being

0:02:27.480 --> 0:02:32.160
<v Speaker 1>at least partly a virtual machine. Some of the components

0:02:32.639 --> 0:02:37.320
<v Speaker 1>may actually be physical parts that are original to whatever

0:02:37.360 --> 0:02:41.320
<v Speaker 1>the technology you're trying to emulate was. Other components are

0:02:41.320 --> 0:02:44.359
<v Speaker 1>going to be purely software, and it's helpful to use

0:02:44.400 --> 0:02:48.080
<v Speaker 1>a little analogy here to understand what an emulator tries

0:02:48.120 --> 0:02:48.480
<v Speaker 1>to do.

0:02:49.080 --> 0:02:51.600
<v Speaker 2>So let's say you got two people.

0:02:51.480 --> 0:02:53.960
<v Speaker 1>And you know what, let's give them some random name. So,

0:02:54.080 --> 0:02:55.440
<v Speaker 1>just picking out of the air, I'm going to go

0:02:55.520 --> 0:02:59.320
<v Speaker 1>with Josh and Chuck. Now, both Josh and Chuck are

0:02:59.360 --> 0:03:02.320
<v Speaker 1>in a jungle, but they are separated, so they're each

0:03:02.400 --> 0:03:07.480
<v Speaker 1>individually in a jungle. Both are running from something. Let's

0:03:07.480 --> 0:03:10.480
<v Speaker 1>say they're being chased by aggressive badgers. So both of

0:03:10.520 --> 0:03:13.400
<v Speaker 1>them have managed to put some distance between themselves and

0:03:13.440 --> 0:03:16.400
<v Speaker 1>the fur balls of fury chasing them. And then each

0:03:16.440 --> 0:03:19.519
<v Speaker 1>of them individually comes to the edge of a pit

0:03:19.840 --> 0:03:22.600
<v Speaker 1>two different pits. So Josh is at one pit, Chuck

0:03:22.680 --> 0:03:25.400
<v Speaker 1>is at a different pit. There's no way around the pits.

0:03:25.480 --> 0:03:28.120
<v Speaker 1>There's too much overgrowth on either side, so you have

0:03:28.160 --> 0:03:30.560
<v Speaker 1>to go over it somehow, but you can't go around.

0:03:31.000 --> 0:03:32.880
<v Speaker 1>They each have a short amount of time to figure

0:03:32.880 --> 0:03:35.440
<v Speaker 1>out a way around, or rather over.

0:03:35.480 --> 0:03:36.560
<v Speaker 2>Their respective pits.

0:03:37.400 --> 0:03:40.560
<v Speaker 1>So Josh decides what he's going to do is fashion

0:03:40.680 --> 0:03:43.600
<v Speaker 1>a makeshift bridge out of some branches on the ground

0:03:43.640 --> 0:03:45.760
<v Speaker 1>and some vines, and so he binds them together and

0:03:45.800 --> 0:03:49.400
<v Speaker 1>he lays the bridge across the pit he crosses gingerly across,

0:03:49.440 --> 0:03:53.040
<v Speaker 1>because we know that Josh's sense of balance is somewhat

0:03:53.080 --> 0:03:55.960
<v Speaker 1>precarious under the best of circumstances. He gets to the

0:03:56.040 --> 0:03:58.040
<v Speaker 1>other side and then he kicks the bridge back into

0:03:58.080 --> 0:04:00.800
<v Speaker 1>the pit so that the badgers can't just follow him across,

0:04:00.960 --> 0:04:04.160
<v Speaker 1>and then he continues on his merry way. Meanwhile, Chuck,

0:04:04.320 --> 0:04:07.120
<v Speaker 1>on the other hand, uses a vine to tie it

0:04:07.200 --> 0:04:09.280
<v Speaker 1>to a branch and use that as kind of a

0:04:09.320 --> 0:04:12.720
<v Speaker 1>grappling hook. He tosses it up into the limbs overhead

0:04:12.760 --> 0:04:16.320
<v Speaker 1>and it catches, and so then he swings Tarzan like,

0:04:16.480 --> 0:04:20.000
<v Speaker 1>bellowing the whole time, and he gets to the other side.

0:04:20.120 --> 0:04:24.240
<v Speaker 1>Then he jerks the vine and dislodges the branch so

0:04:24.279 --> 0:04:26.080
<v Speaker 1>that it falls down and throws that into the pit

0:04:26.279 --> 0:04:29.880
<v Speaker 1>just in case. Badgers can also swing across pits. But

0:04:29.960 --> 0:04:33.160
<v Speaker 1>that's because he has not yet read how badgers work

0:04:33.240 --> 0:04:37.560
<v Speaker 1>on HowStuffWorks dot com. So both Josh and Chuck got

0:04:37.600 --> 0:04:40.880
<v Speaker 1>across their respective pits, but they both did so in

0:04:41.000 --> 0:04:44.599
<v Speaker 1>very different ways. The end result was the same, but

0:04:44.720 --> 0:04:48.039
<v Speaker 1>the pathway was different. That's sort of what emulators do.

0:04:48.120 --> 0:04:52.760
<v Speaker 1>They're meant to produce a result that's identical to another technology,

0:04:52.800 --> 0:04:55.919
<v Speaker 1>even if the pathway to get there is very different.

0:04:56.560 --> 0:04:59.040
<v Speaker 1>A video game emulator is really meant to replicate how

0:04:59.080 --> 0:05:01.640
<v Speaker 1>a specific machine works so that you can play the

0:05:01.680 --> 0:05:05.400
<v Speaker 1>games that were designed for that machine, typically on a

0:05:05.400 --> 0:05:09.200
<v Speaker 1>computer a PC. So an emulator could be a specific

0:05:09.360 --> 0:05:13.400
<v Speaker 1>arcade game emulator, like for a very specific title, or

0:05:13.440 --> 0:05:16.480
<v Speaker 1>it could be a video game console emulator, which means

0:05:16.520 --> 0:05:19.920
<v Speaker 1>it could act like a video game console virtually and

0:05:19.960 --> 0:05:23.040
<v Speaker 1>you could play the games made for that console on

0:05:23.080 --> 0:05:25.000
<v Speaker 1>your computer. The end result is that you can play

0:05:25.000 --> 0:05:28.440
<v Speaker 1>those games meant for one device on a totally different device,

0:05:28.640 --> 0:05:31.599
<v Speaker 1>and as I said before, typically we're talking about a

0:05:31.640 --> 0:05:36.479
<v Speaker 1>personal computer. Now, emulators are not the same thing as ports.

0:05:36.839 --> 0:05:40.919
<v Speaker 1>A ported game is one that developers originally created for

0:05:41.120 --> 0:05:44.760
<v Speaker 1>one architecture system and then they adapt that game for

0:05:44.839 --> 0:05:49.200
<v Speaker 1>a totally different system. So the easiest example is a

0:05:49.240 --> 0:05:52.599
<v Speaker 1>game that originally comes out on the PlayStation might get

0:05:52.640 --> 0:05:56.400
<v Speaker 1>ported to the Xbox. These are totally different architectures. The

0:05:56.520 --> 0:05:59.600
<v Speaker 1>video game consoles work in very different ways, so you

0:05:59.640 --> 0:06:05.080
<v Speaker 1>can't just reformat and put it on an Xbox one

0:06:05.160 --> 0:06:07.200
<v Speaker 1>disk and expect it to work. You actually have to

0:06:07.320 --> 0:06:09.920
<v Speaker 1>redesign parts of the game that's what porting is all

0:06:09.920 --> 0:06:14.599
<v Speaker 1>about now. Because each system, whether it's Xbox or PlayStation

0:06:14.760 --> 0:06:17.719
<v Speaker 1>or mac os or Windows, works in a very specific way.

0:06:17.800 --> 0:06:18.839
<v Speaker 2>Those programs are.

0:06:18.720 --> 0:06:22.839
<v Speaker 1>Not compatible, but a port can be reworked so that

0:06:23.160 --> 0:06:25.880
<v Speaker 1>it will operate on those new systems. Now, an emulator

0:06:25.960 --> 0:06:28.400
<v Speaker 1>is different. An emulator can run a game meant for

0:06:28.480 --> 0:06:31.960
<v Speaker 1>one system on a totally different system because the emulator

0:06:32.000 --> 0:06:32.760
<v Speaker 1>is doing the work.

0:06:33.240 --> 0:06:34.040
<v Speaker 2>So instead of.

0:06:34.160 --> 0:06:37.359
<v Speaker 1>Giving a game to a new group of developers and

0:06:37.440 --> 0:06:41.000
<v Speaker 1>saying I need you to make this version of the

0:06:41.040 --> 0:06:44.480
<v Speaker 1>game playable for this other system, you have a piece

0:06:44.560 --> 0:06:48.640
<v Speaker 1>of software that pretends that it is the other system,

0:06:49.240 --> 0:06:51.960
<v Speaker 1>and that way you don't have to have developers change

0:06:52.040 --> 0:06:55.560
<v Speaker 1>the code of the of the original game. You do

0:06:55.640 --> 0:06:58.960
<v Speaker 1>have to have developers create the emulator. So it really

0:06:59.000 --> 0:07:02.400
<v Speaker 1>just shifts the world from adapting a game to a

0:07:02.440 --> 0:07:06.160
<v Speaker 1>different system to adapting an emulator to be able to

0:07:06.200 --> 0:07:09.840
<v Speaker 1>work on whatever target machine you're talking about. Like I said,

0:07:09.880 --> 0:07:12.920
<v Speaker 1>typically a PC, more often than not it's a Windows

0:07:12.920 --> 0:07:15.040
<v Speaker 1>based PC, but you also see them for Unix and

0:07:15.120 --> 0:07:19.200
<v Speaker 1>mac os, so it's not like it's exclusive to Windows machines.

0:07:20.600 --> 0:07:24.800
<v Speaker 1>Now it's necessary because video game consoles and even arcade

0:07:24.800 --> 0:07:28.360
<v Speaker 1>games like the old arcade game cabinets, they have specific

0:07:28.440 --> 0:07:32.480
<v Speaker 1>hardware and software architecture to them. So some of those

0:07:32.520 --> 0:07:35.680
<v Speaker 1>old arcade machines don't really even have much software at all.

0:07:35.720 --> 0:07:40.520
<v Speaker 1>It's like the lightest level of software. It's mostly circuitry,

0:07:40.600 --> 0:07:45.760
<v Speaker 1>like hard coded circuitry. The game itself is represented in

0:07:45.800 --> 0:07:50.080
<v Speaker 1>the circuits that are on the board within the arcade cabinet.

0:07:50.720 --> 0:07:53.720
<v Speaker 1>It's kind of like the old cartridge based systems if

0:07:53.760 --> 0:07:56.440
<v Speaker 1>you had one of those, like the old Nintendo Entertainment

0:07:56.440 --> 0:08:00.600
<v Speaker 1>System or Super Nintendo or the Atari. Those are video

0:08:00.600 --> 0:08:04.080
<v Speaker 1>games that would be programmed onto a circuit board that's

0:08:04.160 --> 0:08:07.600
<v Speaker 1>housed inside of a cartridge, and you insert the cartridge

0:08:07.640 --> 0:08:11.560
<v Speaker 1>into the video game console and some contacts between the

0:08:11.560 --> 0:08:15.400
<v Speaker 1>console and the cartridge allow the console to read that

0:08:15.480 --> 0:08:20.720
<v Speaker 1>information and then you're able to play the game. Obviously,

0:08:21.040 --> 0:08:26.080
<v Speaker 1>you don't have, for most PCs, a cartridge based system

0:08:26.080 --> 0:08:29.800
<v Speaker 1>that can accept these games in this way. Now, in

0:08:29.840 --> 0:08:34.160
<v Speaker 1>the olden days, arcade games contained a circuit board unique

0:08:34.360 --> 0:08:39.000
<v Speaker 1>to that particular game. So in other words, an Asteroid's

0:08:39.040 --> 0:08:42.240
<v Speaker 1>machine was an Asteroids machine. That's all there was to it,

0:08:42.280 --> 0:08:45.439
<v Speaker 1>because the circuit board had the Asteroids game on it.

0:08:46.200 --> 0:08:48.080
<v Speaker 1>If you opened up a pac Man machine and you

0:08:48.120 --> 0:08:50.560
<v Speaker 1>opened up a Donkey Kong machine, you'd find two different

0:08:50.559 --> 0:08:53.160
<v Speaker 1>circuit boards. The pac Man one and the Donkey Kong

0:08:53.160 --> 0:08:55.360
<v Speaker 1>one would be unique to those arcade games.

0:08:56.000 --> 0:08:57.680
<v Speaker 2>They did have a very.

0:08:57.559 --> 0:09:02.360
<v Speaker 1>Low level of software on the machines, on the circuit

0:09:02.360 --> 0:09:08.280
<v Speaker 1>boards called BIOS now that stands for Basic Input Output System,

0:09:08.679 --> 0:09:12.320
<v Speaker 1>and really it's just a foundational software layer. It's really

0:09:12.400 --> 0:09:15.640
<v Speaker 1>just meant to be responsible for managing the relationship between

0:09:15.960 --> 0:09:19.800
<v Speaker 1>input devices like a push button or a joystick or

0:09:19.840 --> 0:09:25.240
<v Speaker 1>that sort of stuff, and the output devices like the monitor,

0:09:26.240 --> 0:09:28.600
<v Speaker 1>or even just what the game is supposed to do

0:09:28.760 --> 0:09:34.240
<v Speaker 1>whenever you enact on those input devices. So the input

0:09:34.320 --> 0:09:36.920
<v Speaker 1>could be a jump button, for example, you press the

0:09:36.960 --> 0:09:40.160
<v Speaker 1>button and the output is you see your character jumping

0:09:40.200 --> 0:09:44.480
<v Speaker 1>on the display. But keep in mind, the actual output

0:09:44.520 --> 0:09:47.680
<v Speaker 1>is really the code for jumping and a signal to

0:09:47.679 --> 0:09:51.120
<v Speaker 1>the arcade machine's display. Right, the display is not making

0:09:51.160 --> 0:09:54.640
<v Speaker 1>your character jump. That's being controlled by the code of

0:09:54.679 --> 0:09:58.520
<v Speaker 1>the arcade machine itself. It's reflected on the monitor in

0:09:58.559 --> 0:10:00.800
<v Speaker 1>a way that you can see by having the little

0:10:00.880 --> 0:10:01.840
<v Speaker 1>character jump up.

0:10:01.720 --> 0:10:02.199
<v Speaker 2>In the air.

0:10:03.640 --> 0:10:07.520
<v Speaker 1>Now, the game's circuit board handled everything else in those

0:10:07.559 --> 0:10:12.199
<v Speaker 1>old machines, Besides that input output, the hardware was handling everything.

0:10:12.640 --> 0:10:14.880
<v Speaker 1>It was just programmed directly onto the circuit board, and

0:10:14.920 --> 0:10:18.760
<v Speaker 1>that included the game's sound, its graphics engine, its logic.

0:10:19.280 --> 0:10:21.280
<v Speaker 1>If you had an Arcade cabinet and you wanted to

0:10:21.320 --> 0:10:24.120
<v Speaker 1>switch out games. Let's say you've got a Pacmand cabinet

0:10:24.600 --> 0:10:27.160
<v Speaker 1>and you think I'm gonna put Donkey Kong in this cabinet,

0:10:27.240 --> 0:10:29.360
<v Speaker 1>I'm gonna I want to switch out the games. What

0:10:29.400 --> 0:10:31.480
<v Speaker 1>you had to do was gut the machine. You had

0:10:31.520 --> 0:10:35.600
<v Speaker 1>to take all that circuitry and those connections out of

0:10:35.640 --> 0:10:39.080
<v Speaker 1>the machine, the Pacman machine, and replace them with the

0:10:39.120 --> 0:10:42.960
<v Speaker 1>ones from a Donkey Kong machine. You couldn't just swap

0:10:43.000 --> 0:10:46.559
<v Speaker 1>out a certain element. You had to do pretty extensive surgery.

0:10:47.440 --> 0:10:50.440
<v Speaker 1>It took some time, usually, you know, half hour an

0:10:50.440 --> 0:10:54.560
<v Speaker 1>hour easy to switch these things out. Later on, it

0:10:54.600 --> 0:10:57.679
<v Speaker 1>got a little simplified. First, it got simplified in the

0:10:57.679 --> 0:11:03.040
<v Speaker 1>the adoption of some more standardized connectors. So that meant

0:11:03.080 --> 0:11:05.800
<v Speaker 1>that you could start to disconnect a circuit board from

0:11:05.840 --> 0:11:08.640
<v Speaker 1>the rest of a system, and assuming that the control

0:11:08.880 --> 0:11:12.280
<v Speaker 1>scheme is similar from the old game to the new game,

0:11:13.040 --> 0:11:16.480
<v Speaker 1>you could plug the new circuit board into a cabinet

0:11:16.760 --> 0:11:19.640
<v Speaker 1>and it would work pretty well. Now, obviously, that only

0:11:19.679 --> 0:11:23.240
<v Speaker 1>works if your control scheme is the same. So, for example,

0:11:23.320 --> 0:11:26.319
<v Speaker 1>if you're playing pac Man, there's no jump button, right,

0:11:26.360 --> 0:11:28.720
<v Speaker 1>there's a player one, a player two, and then there's

0:11:28.760 --> 0:11:32.560
<v Speaker 1>the joystick that has for motion control, and you just

0:11:32.640 --> 0:11:36.760
<v Speaker 1>control the pac Man character that way. But let's say

0:11:36.800 --> 0:11:39.480
<v Speaker 1>you want to play Centipede. Centipede is a very different

0:11:39.800 --> 0:11:42.559
<v Speaker 1>type of game. It has a rollerball controller, so you

0:11:42.720 --> 0:11:46.120
<v Speaker 1>have a ball that you swipe and you can move

0:11:46.160 --> 0:11:48.760
<v Speaker 1>your character that way, and it has a fire button

0:11:48.800 --> 0:11:52.160
<v Speaker 1>where you shoot whenever you press the button. So if

0:11:52.200 --> 0:11:56.079
<v Speaker 1>you were to switch out the pac Man to the

0:11:56.120 --> 0:12:00.840
<v Speaker 1>Centipede boards, assuming that they had these universal connectors, you

0:12:00.920 --> 0:12:03.840
<v Speaker 1>still would have to switch out the control system as well,

0:12:03.960 --> 0:12:06.280
<v Speaker 1>or else you wouldn't really be able to control the

0:12:06.360 --> 0:12:08.640
<v Speaker 1>game Centipede the way it was meant to be played,

0:12:09.080 --> 0:12:11.760
<v Speaker 1>Particularly since you wouldn't have a fire button, that would

0:12:11.760 --> 0:12:16.760
<v Speaker 1>be a problem. Later on, arcade manufacturers would create machines

0:12:16.760 --> 0:12:18.920
<v Speaker 1>that had the basic hardware set up so that different

0:12:18.920 --> 0:12:21.480
<v Speaker 1>games could be plugged into the system more like a

0:12:21.559 --> 0:12:24.880
<v Speaker 1>video game console. So this was even simpler than the

0:12:24.960 --> 0:12:29.439
<v Speaker 1>universal kind of standardized controls. This was more about like

0:12:31.400 --> 0:12:35.360
<v Speaker 1>a set structure where you plug in a chip essentially

0:12:35.480 --> 0:12:38.200
<v Speaker 1>that has the game on it and everything else remains

0:12:38.240 --> 0:12:40.840
<v Speaker 1>the same. So kind of like a video game console

0:12:40.840 --> 0:12:43.160
<v Speaker 1>where if you're playing a Nintendo and you wanted to

0:12:43.160 --> 0:12:49.760
<v Speaker 1>stop playing Super Mario Brothers instead play Gumshoe, then you

0:12:49.800 --> 0:12:53.319
<v Speaker 1>could turn off the console, pull one cartridge out, put

0:12:53.320 --> 0:12:55.040
<v Speaker 1>the other cartridge in, turn it on, and there you go.

0:12:55.640 --> 0:12:57.840
<v Speaker 1>Same sort of thing with these old arcade machines. Once

0:12:57.880 --> 0:13:01.640
<v Speaker 1>they got to this level of sophistication, it was still

0:13:01.679 --> 0:13:03.120
<v Speaker 1>a bit of a pain in the butt because he

0:13:03.160 --> 0:13:05.839
<v Speaker 1>still had to open everything up and get in among

0:13:05.880 --> 0:13:07.840
<v Speaker 1>all the wires and stuff, but it was still way

0:13:07.880 --> 0:13:11.440
<v Speaker 1>faster than the old days where you had to replace

0:13:11.520 --> 0:13:16.800
<v Speaker 1>everything essentially. Now the games themselves are called ROMs.

0:13:17.880 --> 0:13:18.559
<v Speaker 2>MS.

0:13:18.640 --> 0:13:22.960
<v Speaker 1>Now ROM is an acronym. It stands for read only memory.

0:13:23.400 --> 0:13:26.720
<v Speaker 1>That meant the player or anyone else couldn't write anything

0:13:26.760 --> 0:13:29.840
<v Speaker 1>to the game. Now, they might have something on the

0:13:29.840 --> 0:13:33.520
<v Speaker 1>circuit board, some temporary memory in the arcade machine that

0:13:33.520 --> 0:13:36.480
<v Speaker 1>would allow players to put in initials next to high score,

0:13:36.960 --> 0:13:39.560
<v Speaker 1>and that would be stored in that memory CHEP, but

0:13:39.640 --> 0:13:43.080
<v Speaker 1>the game itself was immutable. You could not change the game.

0:13:43.200 --> 0:13:46.240
<v Speaker 1>It was the computer equivalent of being set in stone.

0:13:46.760 --> 0:13:50.120
<v Speaker 1>So in the emulator world, we generally refer to game

0:13:50.200 --> 0:13:54.839
<v Speaker 1>files as in the software that represents that game as

0:13:54.880 --> 0:13:58.920
<v Speaker 1>a ROM. If you've ever used an emulator, you're probably

0:13:58.960 --> 0:14:02.960
<v Speaker 1>familiar with ROM. And there's a big legality question people

0:14:03.000 --> 0:14:05.280
<v Speaker 1>have when it comes to ROMs, and I'll get to

0:14:05.320 --> 0:14:07.760
<v Speaker 1>that later in the episode. At the end, I'm going

0:14:07.840 --> 0:14:11.080
<v Speaker 1>to spend time talking about the legality of read only

0:14:11.160 --> 0:14:14.560
<v Speaker 1>memory files and whether or not it is legal to

0:14:14.640 --> 0:14:17.200
<v Speaker 1>download them, But for now, let's just focus on the

0:14:17.240 --> 0:14:19.560
<v Speaker 1>technical side of things. We'll get to the legal stuff

0:14:19.560 --> 0:14:22.720
<v Speaker 1>at the end. So you got various types of games,

0:14:22.800 --> 0:14:26.240
<v Speaker 1>each designed to run on specific hardware. And there are

0:14:26.280 --> 0:14:29.800
<v Speaker 1>the standalone arcade machines that each had their own peculiar architecture.

0:14:30.040 --> 0:14:32.840
<v Speaker 1>They're the later arcade machines that could accept different chips,

0:14:32.840 --> 0:14:35.280
<v Speaker 1>with each chip containing a different game. And then there

0:14:35.280 --> 0:14:38.760
<v Speaker 1>are the video game consoles and their proprietary game technologies.

0:14:38.960 --> 0:14:41.680
<v Speaker 1>You even got old computer games that were designed to

0:14:41.760 --> 0:14:44.560
<v Speaker 1>run on slower machines with much less computing power than

0:14:44.600 --> 0:14:48.680
<v Speaker 1>today's PCs. A lot of those are impossible to play

0:14:48.800 --> 0:14:52.640
<v Speaker 1>on later machines because they just they can't handle the

0:14:52.680 --> 0:14:55.160
<v Speaker 1>fact that they've got access to all that processing power.

0:14:55.440 --> 0:14:58.640
<v Speaker 1>So you might even need an emulator for a PC

0:14:58.960 --> 0:15:01.760
<v Speaker 1>based game on a PC.

0:15:01.800 --> 0:15:02.760
<v Speaker 2>If it's old enough.

0:15:02.800 --> 0:15:05.280
<v Speaker 1>If it's an old game, you may need an emulator

0:15:05.280 --> 0:15:07.840
<v Speaker 1>in order to run it a virtual machine of some sort.

0:15:08.920 --> 0:15:11.440
<v Speaker 1>Emulators are what let you run those games designed for

0:15:11.480 --> 0:15:15.440
<v Speaker 1>those older or other devices on a modern machine. So

0:15:15.720 --> 0:15:18.040
<v Speaker 1>I've got more to say about this, but before I

0:15:18.080 --> 0:15:21.280
<v Speaker 1>get into it, let's take a quick break to thank

0:15:21.320 --> 0:15:21.960
<v Speaker 1>our sponsor.

0:15:32.480 --> 0:15:33.760
<v Speaker 2>All right, we're back now.

0:15:33.760 --> 0:15:38.920
<v Speaker 1>There are two big categories for emulators, and this doesn't

0:15:38.920 --> 0:15:41.760
<v Speaker 1>depend upon the type of console or game you're trying

0:15:41.760 --> 0:15:45.440
<v Speaker 1>to emulate. It's universal. These two big categories are universal

0:15:45.480 --> 0:15:49.680
<v Speaker 1>no matter what system you're trying to emulate, so all

0:15:49.720 --> 0:15:53.320
<v Speaker 1>different systems, all different arcade games, emulators can fall into

0:15:53.400 --> 0:15:57.160
<v Speaker 1>one of two categories. There's low level emulation and there's

0:15:57.360 --> 0:16:02.359
<v Speaker 1>high level emulation. And it might be a little counterintuitive

0:16:02.440 --> 0:16:07.160
<v Speaker 1>what these mean, but with low level emulation, programmers are

0:16:07.200 --> 0:16:11.520
<v Speaker 1>trying to create software and or hardware that can pretend

0:16:11.760 --> 0:16:16.120
<v Speaker 1>to be the emulated hardware. In other words, you're trying

0:16:16.160 --> 0:16:21.760
<v Speaker 1>to replicate the actual mechanics, although it's not mechanical, it's electronic,

0:16:22.160 --> 0:16:27.480
<v Speaker 1>but the actual physical process I guess physical process doesn't

0:16:27.520 --> 0:16:30.960
<v Speaker 1>really work either, right, the actual logical process of the

0:16:31.000 --> 0:16:35.320
<v Speaker 1>original game system or arcade machine. So you want your

0:16:35.360 --> 0:16:39.920
<v Speaker 1>system to look from a high level as close to

0:16:40.000 --> 0:16:43.880
<v Speaker 1>that original system as you possibly can get it. Sometimes

0:16:43.880 --> 0:16:47.720
<v Speaker 1>that actually means including original hardware from the target machine

0:16:48.360 --> 0:16:51.560
<v Speaker 1>with the emulator, so that means you're not just replicating

0:16:51.560 --> 0:16:53.840
<v Speaker 1>the target machine, you're using some of its actual parts.

0:16:53.920 --> 0:17:00.000
<v Speaker 1>You're in part rebuilding the actual original machine. In fact,

0:17:00.080 --> 0:17:03.040
<v Speaker 1>the first couple of models of the PlayStation three actually

0:17:03.040 --> 0:17:07.480
<v Speaker 1>contained elements of the PlayStation two inside it in order

0:17:07.520 --> 0:17:10.639
<v Speaker 1>to provide some backwards capability. So if you wanted to

0:17:10.640 --> 0:17:13.119
<v Speaker 1>play a PlayStation two game on one of those early

0:17:13.320 --> 0:17:17.159
<v Speaker 1>PS three models, instead of it using the typical PS

0:17:17.240 --> 0:17:20.520
<v Speaker 1>three equipment inside the console, it would actually hand that

0:17:20.720 --> 0:17:23.920
<v Speaker 1>off to the PS two elements. So it was almost

0:17:24.000 --> 0:17:27.679
<v Speaker 1>like having two different video game consoles in the same box.

0:17:28.520 --> 0:17:29.520
<v Speaker 2>You didn't know it.

0:17:29.440 --> 0:17:32.760
<v Speaker 1>As a consumer, like, you don't see any of that happening.

0:17:32.760 --> 0:17:36.320
<v Speaker 1>It's all happening inside the console. But it wasn't a

0:17:36.359 --> 0:17:40.639
<v Speaker 1>PS three system reading the information and then playing it

0:17:40.680 --> 0:17:42.800
<v Speaker 1>on your screen. It was actually a PS two system

0:17:42.920 --> 0:17:49.080
<v Speaker 1>housed inside that PS three, So the PS three's core

0:17:49.160 --> 0:17:52.919
<v Speaker 1>system was acting as the emulator, but it was using

0:17:53.000 --> 0:17:58.480
<v Speaker 1>PS two hardware to actually read the information off of discs. Now,

0:17:58.480 --> 0:18:01.639
<v Speaker 1>if you're using something like an sixty four emulator, the

0:18:01.680 --> 0:18:04.320
<v Speaker 1>emulator's trying to replicate the way the N sixty four

0:18:04.400 --> 0:18:08.000
<v Speaker 1>is hardware worked, and the more sophisticated that target system is,

0:18:08.160 --> 0:18:09.800
<v Speaker 1>the more difficult this is to do.

0:18:10.720 --> 0:18:10.880
<v Speaker 2>So.

0:18:11.040 --> 0:18:14.679
<v Speaker 1>With low level emulation, the amount of processing power you

0:18:14.760 --> 0:18:17.760
<v Speaker 1>need on your computer to run the emulator so that

0:18:17.800 --> 0:18:19.600
<v Speaker 1>you can play those games the way they were meant

0:18:19.640 --> 0:18:24.639
<v Speaker 1>to be played. That processing power demand increases as the

0:18:24.840 --> 0:18:29.440
<v Speaker 1>complexity of the video game system you're emulating increases, which

0:18:29.480 --> 0:18:32.800
<v Speaker 1>makes sense, right. The more complicated the system, the greater

0:18:32.880 --> 0:18:38.879
<v Speaker 1>the demands are in processing power, particularly if the system

0:18:38.880 --> 0:18:44.160
<v Speaker 1>you're trying to emulate is remarkably different from PC architecture,

0:18:44.800 --> 0:18:48.680
<v Speaker 1>because your processors having to handle all of those differences

0:18:49.480 --> 0:18:52.280
<v Speaker 1>and it ends up creating a bigger drain on the

0:18:52.320 --> 0:18:57.440
<v Speaker 1>processor's ability. So if you've ever played a video game emulator,

0:18:57.440 --> 0:19:00.040
<v Speaker 1>and you've run a game and you're thinking, this thing

0:19:00.080 --> 0:19:02.840
<v Speaker 1>as slow as molasses, I'm barely able to get this

0:19:02.960 --> 0:19:07.200
<v Speaker 1>character moving. It's probably because you're experiencing that problem that

0:19:07.400 --> 0:19:11.960
<v Speaker 1>the emulator is probably a low level emulator. It's trying

0:19:11.960 --> 0:19:16.040
<v Speaker 1>to replicate that original system as closely as possible, and

0:19:16.160 --> 0:19:19.760
<v Speaker 1>as a result, your processor is having to work super

0:19:19.800 --> 0:19:22.240
<v Speaker 1>hard to keep up, even though the game might be

0:19:22.320 --> 0:19:25.639
<v Speaker 1>fairly simple. It can be very frustrating because you might

0:19:25.680 --> 0:19:28.639
<v Speaker 1>be playing a game that came out in like the

0:19:28.720 --> 0:19:32.560
<v Speaker 1>late eighties, and you're thinking, it's twenty seventeen. My computer

0:19:32.600 --> 0:19:35.520
<v Speaker 1>should be able to run this with no problem. But

0:19:35.600 --> 0:19:39.119
<v Speaker 1>the truth is the processor is trying to handle a

0:19:39.200 --> 0:19:43.520
<v Speaker 1>system so different from itself that that's what's causing the

0:19:43.560 --> 0:19:46.920
<v Speaker 1>slow down. I experienced this with a friend who had

0:19:47.960 --> 0:19:53.320
<v Speaker 1>an Arcade emulator, and he's had Ghosts and Goblins on there.

0:19:53.320 --> 0:19:55.080
<v Speaker 1>And I love that game. I loved it when it

0:19:55.119 --> 0:19:58.119
<v Speaker 1>came out, but as I started to play it, I thought,

0:19:58.280 --> 0:20:00.800
<v Speaker 1>this game is way slower than and I remember it

0:20:00.840 --> 0:20:02.960
<v Speaker 1>am I just remember getting incorrectly.

0:20:03.119 --> 0:20:03.359
<v Speaker 2>Nope.

0:20:03.440 --> 0:20:07.760
<v Speaker 1>Turned out it was because the emulator was putting too

0:20:07.840 --> 0:20:12.200
<v Speaker 1>great a demand on his system's processor, and as a result,

0:20:12.480 --> 0:20:14.639
<v Speaker 1>the game I was playing was much slower than what

0:20:14.680 --> 0:20:18.679
<v Speaker 1>it was supposed to be, and it's really hard to

0:20:18.720 --> 0:20:23.359
<v Speaker 1>make low level emulators efficient. Some games and systems require

0:20:23.440 --> 0:20:28.080
<v Speaker 1>multiple synchronization processes to make sure all the emulated components

0:20:28.119 --> 0:20:31.760
<v Speaker 1>are working together properly. So the more frequently that happens,

0:20:31.760 --> 0:20:34.200
<v Speaker 1>the more times that an emulator has to say, hey,

0:20:34.280 --> 0:20:37.040
<v Speaker 1>is everything all right and send that message out to

0:20:37.119 --> 0:20:40.119
<v Speaker 1>all the different components and wait for a response, the

0:20:40.119 --> 0:20:44.840
<v Speaker 1>more demands it places on that processor. So if you

0:20:44.960 --> 0:20:47.800
<v Speaker 1>want to have a really good low level emulator, you

0:20:47.960 --> 0:20:53.440
<v Speaker 1>need a computer with like a screaming fast processor. And

0:20:53.840 --> 0:20:56.840
<v Speaker 1>that could be again a little counterintuitive. You might think, well,

0:20:56.960 --> 0:21:01.040
<v Speaker 1>this game can run the latest computer games with no

0:21:01.320 --> 0:21:05.520
<v Speaker 1>frame rate issues at the highest graphic setting, everything's awesome,

0:21:05.720 --> 0:21:08.240
<v Speaker 1>But when I try to run this emulated game, everything

0:21:08.280 --> 0:21:12.480
<v Speaker 1>slows down. Why is that? It's because of this. Now,

0:21:12.560 --> 0:21:15.600
<v Speaker 1>then you have high level emulation. This is very different.

0:21:15.840 --> 0:21:20.520
<v Speaker 1>High level emulation simulates the functions of hardware, but doesn't

0:21:20.520 --> 0:21:24.640
<v Speaker 1>try to replicate those functions. So, in other words, all

0:21:24.640 --> 0:21:27.200
<v Speaker 1>it wants to do is get to that end result.

0:21:27.800 --> 0:21:30.439
<v Speaker 1>It doesn't care if it follows the same path as

0:21:30.480 --> 0:21:33.240
<v Speaker 1>the hardware. So this gets back to that Josh and

0:21:33.400 --> 0:21:35.639
<v Speaker 1>Chuck example I gave at the top of the show.

0:21:35.960 --> 0:21:38.639
<v Speaker 1>Both the vine and the bridge will get Chuck and

0:21:38.760 --> 0:21:41.760
<v Speaker 1>Josh across the pit, but they do it in different ways.

0:21:42.200 --> 0:21:44.680
<v Speaker 1>The end result is the same. That's what high level

0:21:44.680 --> 0:21:50.159
<v Speaker 1>emulation aims to do, so we call this abstraction. We

0:21:50.560 --> 0:21:53.720
<v Speaker 1>are able to create an environment in which a game

0:21:53.760 --> 0:21:57.320
<v Speaker 1>will work even if you're using totally different hardware because

0:21:57.320 --> 0:22:02.399
<v Speaker 1>of this level of abstraction. This is particularly handy for

0:22:02.520 --> 0:22:05.520
<v Speaker 1>game developers, not just people who want to play games,

0:22:05.560 --> 0:22:09.720
<v Speaker 1>but people who are making games, because you can develop

0:22:09.800 --> 0:22:13.800
<v Speaker 1>a game for a specific system using a level of abstraction,

0:22:14.800 --> 0:22:19.320
<v Speaker 1>and you can use whatever system you prefer to develop on.

0:22:19.720 --> 0:22:22.399
<v Speaker 1>So let's say you're a developer and that you use

0:22:23.000 --> 0:22:26.359
<v Speaker 1>a Mac as you're a computer, but you're developing a

0:22:26.400 --> 0:22:30.600
<v Speaker 1>game for the Xbox. A level of abstraction allows you

0:22:30.680 --> 0:22:34.240
<v Speaker 1>to do this on a virtual level, so that you're

0:22:34.240 --> 0:22:38.119
<v Speaker 1>developing an Xbox game in a Mac environment and you

0:22:38.160 --> 0:22:41.320
<v Speaker 1>don't have to have special equipment or anything like that.

0:22:41.640 --> 0:22:45.159
<v Speaker 1>You've abstracted all of the elements into a virtual realm.

0:22:47.400 --> 0:22:52.520
<v Speaker 1>So high level emulation uses shorthand for basic operations instead

0:22:52.520 --> 0:22:56.520
<v Speaker 1>of a specific pathway. So a low level emulator would

0:22:56.560 --> 0:23:00.160
<v Speaker 1>try to replicate the exact way a game saves information.

0:23:00.240 --> 0:23:03.359
<v Speaker 1>For example, a high level emulator would just say save

0:23:03.400 --> 0:23:06.959
<v Speaker 1>this data to the storage drive, and firmware would actually

0:23:07.000 --> 0:23:11.040
<v Speaker 1>handle the transaction. So the software hands it off to

0:23:11.080 --> 0:23:13.480
<v Speaker 1>the firmware that says, all right, what's the most efficient

0:23:13.640 --> 0:23:16.280
<v Speaker 1>way for me to do the task I've been asked

0:23:16.280 --> 0:23:19.240
<v Speaker 1>to do? That puts the least demand on the processor.

0:23:20.240 --> 0:23:22.800
<v Speaker 1>It's kind of like a voice activated assistant in a way.

0:23:22.840 --> 0:23:25.399
<v Speaker 1>As these systems get more robust, you can ask for

0:23:25.600 --> 0:23:28.720
<v Speaker 1>the same information in many different ways. So for example,

0:23:28.880 --> 0:23:31.119
<v Speaker 1>if I had an iPhone, I could ask Siri what

0:23:31.280 --> 0:23:34.840
<v Speaker 1>is the weather like outside? Or I could ask Siri

0:23:35.000 --> 0:23:35.719
<v Speaker 1>is it raining?

0:23:35.960 --> 0:23:37.320
<v Speaker 2>Now? Both of those questions.

0:23:37.040 --> 0:23:40.560
<v Speaker 1>Will get me a weather answer from Siri because the

0:23:40.640 --> 0:23:44.359
<v Speaker 1>system can actually handle the different ways to request essentially

0:23:44.400 --> 0:23:48.320
<v Speaker 1>the same information. Hardware abstraction does something similar. It interprets

0:23:48.359 --> 0:23:51.199
<v Speaker 1>a request and then it does the leg work to

0:23:51.359 --> 0:23:55.840
<v Speaker 1>fulfill that request. Now, there are three main ways that

0:23:55.960 --> 0:24:01.920
<v Speaker 1>high level emulators simulate hardware functions. The first is called interpreting.

0:24:02.440 --> 0:24:05.159
<v Speaker 1>The emulator will go through the code of the game

0:24:05.359 --> 0:24:09.600
<v Speaker 1>line by line in chunks and replicate what the instructions

0:24:09.600 --> 0:24:13.720
<v Speaker 1>are supposed to do, so, interpreting makes sense right like you,

0:24:14.480 --> 0:24:16.479
<v Speaker 1>It's kind of like if you were to read a

0:24:16.520 --> 0:24:20.479
<v Speaker 1>story and then tell somebody what does the story say?

0:24:20.560 --> 0:24:22.960
<v Speaker 1>Like what are the basic points of the story. Or

0:24:22.960 --> 0:24:25.440
<v Speaker 1>you're trying to tell someone about a movie you've seen

0:24:25.760 --> 0:24:29.160
<v Speaker 1>and you're giving them kind of a high level, bullet

0:24:29.200 --> 0:24:33.360
<v Speaker 1>point rundown of what the plot was all about. That's

0:24:33.359 --> 0:24:37.159
<v Speaker 1>what interpreting does, except it does it with code. Next

0:24:37.800 --> 0:24:42.840
<v Speaker 1>is a strategy called dynamic recompiling. Now that method actually

0:24:42.840 --> 0:24:45.760
<v Speaker 1>looks at blocks of code, looks at the instructions that

0:24:46.000 --> 0:24:49.199
<v Speaker 1>are the processor is supposed to carry out according to

0:24:49.320 --> 0:24:52.120
<v Speaker 1>that code, and then it starts looking for a more

0:24:52.160 --> 0:24:56.159
<v Speaker 1>efficient or optimized way to run those same instructions on

0:24:56.240 --> 0:24:59.200
<v Speaker 1>the actual computer you are using. So, in other words,

0:24:59.240 --> 0:25:03.160
<v Speaker 1>it's recom hiling the code for a different piece of hardware.

0:25:03.520 --> 0:25:06.360
<v Speaker 1>It's kind of like saying, all right, this was written

0:25:06.600 --> 0:25:10.359
<v Speaker 1>for an Atari twenty six hundred, I want to rewrite

0:25:10.359 --> 0:25:13.359
<v Speaker 1>it so that the same result will happen on the

0:25:13.400 --> 0:25:20.000
<v Speaker 1>PC that is running the software. Very interesting that this

0:25:20.040 --> 0:25:24.639
<v Speaker 1>can be done on an abstract level. And finally, there's

0:25:24.680 --> 0:25:28.760
<v Speaker 1>a strategy called list interception. Now this is relevant for

0:25:28.800 --> 0:25:32.680
<v Speaker 1>computers that use coprocessors, and for systems that you're trying

0:25:32.680 --> 0:25:37.280
<v Speaker 1>to emulate that also had coprocessors. Most PCs these days

0:25:37.320 --> 0:25:41.639
<v Speaker 1>have a coprocessor. The graphics processing unit is a coprocessor. Now,

0:25:41.720 --> 0:25:44.880
<v Speaker 1>those chips are meant to handle graphics, but they're also

0:25:44.960 --> 0:25:48.119
<v Speaker 1>really handy for parallel processing. You might have heard that

0:25:48.280 --> 0:25:51.320
<v Speaker 1>a lot of hackers use GPUs in order to do

0:25:51.359 --> 0:25:56.600
<v Speaker 1>brute force attacks against secure systems. This is because GPUs

0:25:56.640 --> 0:25:59.800
<v Speaker 1>can process stuff in parallel, which means you can have

0:25:59.840 --> 0:26:03.040
<v Speaker 1>a bunch of parallel processors all tackling the same problem,

0:26:03.480 --> 0:26:06.639
<v Speaker 1>going through different potential solutions, and that cuts down on

0:26:06.680 --> 0:26:08.679
<v Speaker 1>the amount of time it takes for you to find

0:26:08.720 --> 0:26:14.080
<v Speaker 1>the real answer. So with list interception, an emulator interrupts

0:26:14.160 --> 0:26:18.439
<v Speaker 1>a command list sent to the original device's coprocessor and

0:26:18.560 --> 0:26:23.680
<v Speaker 1>turns that into instructions that the actual host computer's graphics

0:26:23.720 --> 0:26:26.880
<v Speaker 1>processing unit can handle. So it's kind of like translating

0:26:26.880 --> 0:26:29.760
<v Speaker 1>text from one language to another. It intercepts the message

0:26:29.800 --> 0:26:32.600
<v Speaker 1>says okay, well, the GPU can't understand this the way

0:26:32.600 --> 0:26:36.239
<v Speaker 1>it's written, but I can take these instructions rewrite it

0:26:36.280 --> 0:26:39.520
<v Speaker 1>in a way that the GPU understands. And send it along,

0:26:39.800 --> 0:26:42.920
<v Speaker 1>And that's how that works. The big advantage of high

0:26:43.000 --> 0:26:46.879
<v Speaker 1>level emulators over low level emulators is that they require

0:26:46.960 --> 0:26:50.760
<v Speaker 1>less processing power to run games. So a well designed

0:26:50.800 --> 0:26:54.160
<v Speaker 1>high level emulator can run titles smoothly on a modest PC.

0:26:54.400 --> 0:26:58.199
<v Speaker 1>You don't need to have a killer gaming rig, but

0:26:58.240 --> 0:27:01.320
<v Speaker 1>a low level emulator would require that bf yeer processor

0:27:01.359 --> 0:27:04.600
<v Speaker 1>to handle demands. Now, the flip side is a low

0:27:04.680 --> 0:27:08.200
<v Speaker 1>level emulator tends to be more accurate when replicating a game,

0:27:08.560 --> 0:27:11.159
<v Speaker 1>and a high level emulator might not be able to

0:27:11.680 --> 0:27:15.600
<v Speaker 1>replicate all the things the game does because it's not

0:27:15.840 --> 0:27:20.119
<v Speaker 1>as specific to that system, like, it's not replicating the

0:27:20.160 --> 0:27:22.000
<v Speaker 1>system as faithfully.

0:27:21.720 --> 0:27:24.480
<v Speaker 2>As a low level emulator would. So there are trade offs.

0:27:25.400 --> 0:27:27.480
<v Speaker 1>So let's say you want to invest in an emulator

0:27:27.560 --> 0:27:30.680
<v Speaker 1>and some games, and just for argument's sake, let's say

0:27:30.680 --> 0:27:32.280
<v Speaker 1>that there's a legal way for you to buy the

0:27:32.320 --> 0:27:35.600
<v Speaker 1>games rather than just download them willy nilly. Like I

0:27:35.640 --> 0:27:38.200
<v Speaker 1>said before, I'm going to talk more about the legality

0:27:38.320 --> 0:27:39.879
<v Speaker 1>of all of this at the end of the show.

0:27:40.320 --> 0:27:43.160
<v Speaker 1>So what system should you go for if you want

0:27:43.160 --> 0:27:46.480
<v Speaker 1>an emulator? Well, that really depends on several factors. For one,

0:27:47.840 --> 0:27:50.840
<v Speaker 1>are you missed their money bags or miss money bags,

0:27:51.040 --> 0:27:53.480
<v Speaker 1>because if money's not an object, you might as well

0:27:53.520 --> 0:27:56.560
<v Speaker 1>go bonkers and trick out a nice low level emulator

0:27:56.600 --> 0:28:01.639
<v Speaker 1>system with a really really good gaming rig PC to

0:28:01.680 --> 0:28:04.280
<v Speaker 1>get the most authentic experience when you PLoP down to

0:28:04.320 --> 0:28:08.280
<v Speaker 1>a rousing game of Burger Time or Gauntlet two. Low

0:28:08.359 --> 0:28:12.960
<v Speaker 1>level emulators, particularly ones that include actual hardware used by

0:28:13.080 --> 0:28:16.760
<v Speaker 1>the system you're trying to emulate, get pretty pricy, and

0:28:16.880 --> 0:28:19.600
<v Speaker 1>remember you got to have that powerful processor to run

0:28:19.640 --> 0:28:20.480
<v Speaker 1>those emulators.

0:28:21.080 --> 0:28:22.640
<v Speaker 2>And as opposed to.

0:28:22.560 --> 0:28:26.240
<v Speaker 1>The high level emulator types, high level emulators don't require

0:28:26.240 --> 0:28:29.760
<v Speaker 1>as much horsepower from the host computer, which brings the

0:28:29.800 --> 0:28:32.639
<v Speaker 1>cost down. You don't need to buy a super fast computer.

0:28:32.640 --> 0:28:35.239
<v Speaker 1>In fact, you may already have a machine more than

0:28:35.359 --> 0:28:39.320
<v Speaker 1>capable of running a high level emulator program, so you

0:28:39.320 --> 0:28:42.000
<v Speaker 1>won't have to spring for that screaming gaming rig with

0:28:42.880 --> 0:28:46.840
<v Speaker 1>you would like for a low level emulator. But sometimes

0:28:47.160 --> 0:28:51.120
<v Speaker 1>those high level emulators cannot perfectly replicate whatever the target

0:28:51.200 --> 0:28:55.120
<v Speaker 1>system is the emulated system, so you might find certain

0:28:55.160 --> 0:28:57.360
<v Speaker 1>games don't have all the bells and whistles that they should,

0:28:57.680 --> 0:29:00.760
<v Speaker 1>and if you might even be unplayable, like you might

0:29:00.960 --> 0:29:03.680
<v Speaker 1>get a title a rom for a game you love,

0:29:04.400 --> 0:29:06.840
<v Speaker 1>and you have an emulator, a high level emulator for

0:29:06.960 --> 0:29:09.160
<v Speaker 1>that system or for that machine, and then you find

0:29:09.200 --> 0:29:11.360
<v Speaker 1>out you still can't play the game. Well, it might

0:29:11.360 --> 0:29:13.600
<v Speaker 1>not be that the file you got is corrupt.

0:29:13.680 --> 0:29:14.400
<v Speaker 2>It may be that the.

0:29:14.360 --> 0:29:17.560
<v Speaker 1>Emulator just isn't capable of replicating that game the way

0:29:17.600 --> 0:29:21.520
<v Speaker 1>it should. Now, mostly that depends upon the way the

0:29:21.520 --> 0:29:25.000
<v Speaker 1>original game developers programmed the original game. If they use

0:29:25.040 --> 0:29:27.800
<v Speaker 1>a lot of weird shortcuts and hacks to create the

0:29:27.840 --> 0:29:31.320
<v Speaker 1>game that would work on the target system, it may

0:29:31.360 --> 0:29:35.200
<v Speaker 1>not work on an emulated system. So in other words,

0:29:35.240 --> 0:29:40.160
<v Speaker 1>like let's say I've developed a game for the original Nintendo,

0:29:40.320 --> 0:29:43.360
<v Speaker 1>and the original Nintendo could totally handle these sort of

0:29:43.440 --> 0:29:49.600
<v Speaker 1>cludgy hacked processes I've created because I wanted to do

0:29:49.640 --> 0:29:51.560
<v Speaker 1>it to make a bunch of shortcuts. Like the code

0:29:51.560 --> 0:29:54.200
<v Speaker 1>looks messy as heck. If you look at the code,

0:29:54.640 --> 0:29:58.680
<v Speaker 1>but the gameplay doesn't reflect that, it's just fine. But

0:29:58.720 --> 0:30:01.160
<v Speaker 1>then you pull it over onto an emulaid system that's

0:30:02.000 --> 0:30:06.600
<v Speaker 1>more designed to handle games that are written to the

0:30:06.640 --> 0:30:10.960
<v Speaker 1>standard of Nintendo as opposed to just getting it done,

0:30:11.760 --> 0:30:14.520
<v Speaker 1>and you may find out that that game isn't really

0:30:14.520 --> 0:30:18.120
<v Speaker 1>playable on the EMULAID system. It's really frustrating if in

0:30:18.160 --> 0:30:22.880
<v Speaker 1>fact that was your goal from the start. So the

0:30:22.880 --> 0:30:25.320
<v Speaker 1>more standard of games code is, the better the chances

0:30:25.360 --> 0:30:27.840
<v Speaker 1>are that a high level emulator will be able to

0:30:27.920 --> 0:30:32.080
<v Speaker 1>handle it. Now, arguably one of the most popular types

0:30:32.120 --> 0:30:36.600
<v Speaker 1>of emulators is the multiple arcade machine emulator or MAN.

0:30:37.600 --> 0:30:41.560
<v Speaker 1>That's an open source emulator. An open source essentially means

0:30:41.600 --> 0:30:44.720
<v Speaker 1>the code is open for anyone to look at, to alter,

0:30:45.040 --> 0:30:48.440
<v Speaker 1>and even to re upload and distribute. So that means

0:30:48.920 --> 0:30:52.040
<v Speaker 1>as people find better ways to emulate a particular machine,

0:30:52.080 --> 0:30:55.160
<v Speaker 1>they can make adjustments to the code, and a new

0:30:55.240 --> 0:30:59.320
<v Speaker 1>version of the emulator can incorporate those changes. So if

0:30:59.320 --> 0:31:04.440
<v Speaker 1>it's a multiple arcade machine emulator, then you may have

0:31:04.560 --> 0:31:07.960
<v Speaker 1>a specific arcade cabinet that has not been emulated yet.

0:31:08.000 --> 0:31:10.280
<v Speaker 1>You might figure out how to do that, and you

0:31:10.400 --> 0:31:16.200
<v Speaker 1>add that code into a already existing MAME emulator, which

0:31:16.400 --> 0:31:21.560
<v Speaker 1>I understand is repetitive. See also my tire rate about

0:31:21.560 --> 0:31:26.840
<v Speaker 1>atm machines and pen numbers. But because you're able to

0:31:27.920 --> 0:31:30.120
<v Speaker 1>actually take that code and change it, then you can

0:31:30.160 --> 0:31:33.800
<v Speaker 1>increase the functionality for the community as a whole.

0:31:35.960 --> 0:31:37.840
<v Speaker 2>Now, the stated purpose of.

0:31:37.920 --> 0:31:44.160
<v Speaker 1>MAIME is to preserve games as an historical effort because

0:31:44.160 --> 0:31:47.480
<v Speaker 1>these old arcade machines relied on physical hardware, and a

0:31:47.560 --> 0:31:49.880
<v Speaker 1>lot of them are no longer in production. In fact,

0:31:49.960 --> 0:31:54.280
<v Speaker 1>most of them aren't in production anymore. So creating the

0:31:54.320 --> 0:31:57.400
<v Speaker 1>software that could run those games is a way to

0:31:57.520 --> 0:32:01.600
<v Speaker 1>preserve the games indefinitely instead of just have them get

0:32:01.640 --> 0:32:04.240
<v Speaker 1>older and older and older and eventually they just don't

0:32:04.240 --> 0:32:06.640
<v Speaker 1>work anymore. They break down to the point where it

0:32:06.680 --> 0:32:10.160
<v Speaker 1>doesn't matter if you have an original arcade machine, the

0:32:10.200 --> 0:32:14.800
<v Speaker 1>circuit board just won't play the game. This way, they

0:32:14.800 --> 0:32:16.640
<v Speaker 1>could be preserved indefinitely.

0:32:17.480 --> 0:32:18.960
<v Speaker 2>Now it just so happens that the.

0:32:18.920 --> 0:32:21.640
<v Speaker 1>Software also allows you to play those games, because that's

0:32:21.800 --> 0:32:25.840
<v Speaker 1>how the games work, right, Like, if the software didn't

0:32:26.040 --> 0:32:29.080
<v Speaker 1>allow the games to run, all you really would need

0:32:29.120 --> 0:32:31.800
<v Speaker 1>to do is find a way to preserve that random

0:32:32.200 --> 0:32:36.320
<v Speaker 1>or rather the read only memory the ROMs. If you

0:32:36.360 --> 0:32:39.560
<v Speaker 1>could just preserve the ROMs period, you could have a

0:32:39.680 --> 0:32:45.920
<v Speaker 1>library of unreadable files. It would be pretty unusual to

0:32:45.960 --> 0:32:47.240
<v Speaker 1>do that, Like, what's the point.

0:32:47.480 --> 0:32:49.320
<v Speaker 2>It'd be kind of like going into.

0:32:49.520 --> 0:32:52.760
<v Speaker 1>A library that is filled with books written in an

0:32:52.800 --> 0:32:58.160
<v Speaker 1>ancient language that no one understands anymore. So, yeah, they're historical.

0:32:58.440 --> 0:33:01.480
<v Speaker 1>They have some historical significant but there's no way to

0:33:01.560 --> 0:33:04.880
<v Speaker 1>understand what is there. So you start asking the question,

0:33:05.000 --> 0:33:07.640
<v Speaker 1>does it really make sense to keep them if there's

0:33:07.680 --> 0:33:10.840
<v Speaker 1>no way to read them. So Maine can read these

0:33:10.840 --> 0:33:15.320
<v Speaker 1>files that can play those games. But the stated purpose

0:33:15.640 --> 0:33:18.200
<v Speaker 1>for Maine isn't to play the games, it's just to

0:33:18.240 --> 0:33:23.200
<v Speaker 1>preserve them. Now you might find that that purpose is

0:33:23.240 --> 0:33:27.080
<v Speaker 1>a little do not peak behind the curtain esk, and

0:33:27.160 --> 0:33:29.480
<v Speaker 1>that you could easily imagine mame's design is meant to

0:33:29.560 --> 0:33:32.120
<v Speaker 1>give you the chance to play those old games and

0:33:32.200 --> 0:33:35.720
<v Speaker 1>not just keep them for posterity. I mean, if you

0:33:35.720 --> 0:33:38.360
<v Speaker 1>can't play the video game, is it really worth keeping?

0:33:39.160 --> 0:33:43.400
<v Speaker 1>But never mind that it doesn't really matter for the

0:33:43.400 --> 0:33:47.920
<v Speaker 1>purposes of this discussion. I just find it amusing. So

0:33:47.960 --> 0:33:51.400
<v Speaker 1>the main software evolves over time, and part of that

0:33:51.520 --> 0:33:55.120
<v Speaker 1>is just to keep up with technology. As operating systems evolve,

0:33:55.320 --> 0:33:59.560
<v Speaker 1>we have to adjust the software, the MAME software to

0:33:59.640 --> 0:34:04.120
<v Speaker 1>run on new systems. So you know, if Microsoft releases

0:34:04.240 --> 0:34:08.120
<v Speaker 1>a new version of Windows that's remarkably different from previous versions,

0:34:08.719 --> 0:34:12.480
<v Speaker 1>you may have to tweak the code for MAME to

0:34:12.520 --> 0:34:16.040
<v Speaker 1>be able to run on the new Windows platform. So

0:34:16.840 --> 0:34:19.000
<v Speaker 1>it is necessary for this to be open source for

0:34:19.120 --> 0:34:23.040
<v Speaker 1>the software to remain relevant, and there are lots of

0:34:23.040 --> 0:34:26.759
<v Speaker 1>different versions of MAIME on operating systems like Windows, on

0:34:26.960 --> 0:34:30.319
<v Speaker 1>Unix mac os. There are versions for both thirty two

0:34:30.360 --> 0:34:33.880
<v Speaker 1>bit and sixty four bit Windows versions. You can find

0:34:33.880 --> 0:34:38.799
<v Speaker 1>people selling MAME machines inside either classic arcade cabinets or

0:34:38.960 --> 0:34:42.640
<v Speaker 1>new cabinets designed to look like old ones, complete with

0:34:42.719 --> 0:34:46.480
<v Speaker 1>special controls. So if you wanted to, you could create

0:34:46.520 --> 0:34:49.359
<v Speaker 1>a computer like You could build a computer on your own,

0:34:49.800 --> 0:34:52.759
<v Speaker 1>a decent one, not like again, not a super fast

0:34:52.760 --> 0:34:55.439
<v Speaker 1>one necessarily, but a decent computer.

0:34:55.120 --> 0:34:55.920
<v Speaker 2>With a lot of storage.

0:34:56.600 --> 0:35:01.040
<v Speaker 1>You could mount a display inside a cabinet to look

0:35:01.160 --> 0:35:05.040
<v Speaker 1>like in arcade monitor. You could have the computer inside

0:35:05.080 --> 0:35:09.960
<v Speaker 1>the cabinet. That's essentially the case for your computer, and

0:35:10.000 --> 0:35:14.640
<v Speaker 1>you could hook up arcade controls, including ones that are

0:35:15.520 --> 0:35:19.120
<v Speaker 1>more unusual like the roller balls or some of the

0:35:19.160 --> 0:35:24.479
<v Speaker 1>other yoke versions for flight games like the old Star

0:35:24.520 --> 0:35:26.359
<v Speaker 1>Wars game, that kind of stuff. You could have all

0:35:26.360 --> 0:35:29.399
<v Speaker 1>those sort of controls available. You can even have ones

0:35:29.440 --> 0:35:33.000
<v Speaker 1>that detach from the system so that you can swap

0:35:33.040 --> 0:35:35.160
<v Speaker 1>them out whenever you need to for whatever game you

0:35:35.200 --> 0:35:38.680
<v Speaker 1>want to play, and you could have that in your

0:35:38.719 --> 0:35:42.080
<v Speaker 1>house and you would essentially have access to all the

0:35:42.239 --> 0:35:46.239
<v Speaker 1>arcade games supported by that emulator. That doesn't necessarily mean

0:35:46.280 --> 0:35:49.600
<v Speaker 1>every arcade game ever invented, but it could be hundreds

0:35:49.600 --> 0:35:52.880
<v Speaker 1>and hundreds of different titles. On the inside's just a

0:35:52.920 --> 0:35:56.680
<v Speaker 1>PC running that mame software and a collection of ROMs.

0:35:57.960 --> 0:36:02.880
<v Speaker 1>So it's getting to time for me to talk about

0:36:03.200 --> 0:36:06.480
<v Speaker 1>the legality of this. Like, if you wanted to do this,

0:36:06.560 --> 0:36:09.120
<v Speaker 1>if you wanted to have an emulator, whether it was

0:36:09.160 --> 0:36:12.760
<v Speaker 1>a main emulator or a video game console emulator or whatever,

0:36:14.000 --> 0:36:17.360
<v Speaker 1>what are the legal considerations you should make. I'm going

0:36:17.440 --> 0:36:19.240
<v Speaker 1>to tell you more about that in just a second,

0:36:19.320 --> 0:36:22.920
<v Speaker 1>but first let's take another quick break to thank our sponsor.

0:36:32.480 --> 0:36:33.359
<v Speaker 2>All Right, we're back.

0:36:33.760 --> 0:36:37.160
<v Speaker 1>So you could technically build or buy a machine capable

0:36:37.200 --> 0:36:41.560
<v Speaker 1>of providing an entire arcade's worth of gaming on one device.

0:36:41.680 --> 0:36:46.160
<v Speaker 1>But is that legal? So this brings us to the

0:36:46.239 --> 0:36:49.959
<v Speaker 1>legal discussion or law stuff, don't dun.

0:36:51.160 --> 0:36:51.560
<v Speaker 2>Interesting.

0:36:51.600 --> 0:36:54.000
<v Speaker 1>Note there are a lot of questions about ROMs and

0:36:54.040 --> 0:36:57.879
<v Speaker 1>their legality. So our ROM files illegal? Is it ever

0:36:58.280 --> 0:37:04.360
<v Speaker 1>legal to download one? Are emulators illegal? It's good to

0:37:04.440 --> 0:37:08.520
<v Speaker 1>finally kind of tackle these questions now. First, emulators in

0:37:08.600 --> 0:37:12.520
<v Speaker 1>general are legal. You can own an emulator. There is

0:37:12.560 --> 0:37:18.040
<v Speaker 1>nothing inherently illegal about emulators. They're software meant to emulate

0:37:18.080 --> 0:37:24.280
<v Speaker 1>another technology, but in general they don't contain any proprietary code,

0:37:24.719 --> 0:37:28.399
<v Speaker 1>So that means emulators more often than not, don't have

0:37:28.520 --> 0:37:33.320
<v Speaker 1>any code in them that is protected by copyright. Since

0:37:33.360 --> 0:37:39.319
<v Speaker 1>there's no copyright violation, there's no illegal nature to these emulators.

0:37:39.800 --> 0:37:44.000
<v Speaker 1>Developers haven't stolen any intellectual property from the companies that

0:37:44.080 --> 0:37:47.400
<v Speaker 1>made the original equipment. They're just creating new software to

0:37:47.520 --> 0:37:51.759
<v Speaker 1>run programs that relied on older original equipment. So it's

0:37:51.800 --> 0:37:56.640
<v Speaker 1>a fine line. But emulators on their own are totally legal.

0:37:57.840 --> 0:38:01.920
<v Speaker 1>As for ROMs, that's where it gets messy. For one thing,

0:38:01.960 --> 0:38:08.640
<v Speaker 1>we do not have global laws guiding our choices about

0:38:09.280 --> 0:38:13.120
<v Speaker 1>legality or illegality when it comes to ROMs, so the

0:38:13.200 --> 0:38:16.920
<v Speaker 1>rules in one country can be significantly different from those

0:38:17.080 --> 0:38:20.440
<v Speaker 1>of other countries. Now, I'm gonna be looking at this

0:38:20.520 --> 0:38:23.160
<v Speaker 1>from the viewpoint of someone in the United States because

0:38:23.200 --> 0:38:26.160
<v Speaker 1>that's where I live. Longtime listeners of text stuff. No,

0:38:26.320 --> 0:38:29.160
<v Speaker 1>this is my mo I will take a view from

0:38:29.200 --> 0:38:32.359
<v Speaker 1>the US because that's where I'm from and it's way

0:38:32.480 --> 0:38:34.719
<v Speaker 1>easier for me to talk about this. But if I

0:38:34.719 --> 0:38:37.960
<v Speaker 1>wanted to tackle the legality from every country, I'd have

0:38:38.000 --> 0:38:42.320
<v Speaker 1>to do a whole series of podcasts because it's different

0:38:42.400 --> 0:38:46.040
<v Speaker 1>for different places. In fact, even just the length of

0:38:46.320 --> 0:38:50.399
<v Speaker 1>copyright protection is different in different countries. The US has

0:38:50.880 --> 0:38:56.000
<v Speaker 1>a lengthy period of copyright protection, Like we're talking decades

0:38:56.040 --> 0:38:59.560
<v Speaker 1>and decades of protection even after the death of whomever

0:38:59.719 --> 0:39:04.960
<v Speaker 1>held the copyright. So something to keep in mind, all right, So,

0:39:05.040 --> 0:39:07.640
<v Speaker 1>downloading a rom of a game you do not own

0:39:08.280 --> 0:39:12.719
<v Speaker 1>is violating copyright and is illegal pretty much anywhere.

0:39:12.800 --> 0:39:14.640
<v Speaker 2>So if you wanted.

0:39:14.360 --> 0:39:17.279
<v Speaker 1>To get hold of a RAM for a game, but

0:39:17.320 --> 0:39:20.320
<v Speaker 1>you don't own that game, you have no legal copy

0:39:20.400 --> 0:39:24.319
<v Speaker 1>of that game, Downloading it is against the law. It's

0:39:24.400 --> 0:39:27.360
<v Speaker 1>no different from downloading a song you don't own, or

0:39:27.400 --> 0:39:30.279
<v Speaker 1>a movie you don't own, or a television show. If

0:39:30.320 --> 0:39:34.560
<v Speaker 1>you do not own a copy, you're essentially stealing. Now,

0:39:34.560 --> 0:39:37.680
<v Speaker 1>in the case of arcade games, it's pretty darn common

0:39:37.680 --> 0:39:40.680
<v Speaker 1>for people to steal them. Not many people actually own

0:39:41.360 --> 0:39:44.080
<v Speaker 1>arcade machines. There are people who do, there are a

0:39:44.120 --> 0:39:46.120
<v Speaker 1>lot of them who do, but most people do not.

0:39:46.719 --> 0:39:49.319
<v Speaker 1>The average person does not own an arcade machine in

0:39:49.360 --> 0:39:52.759
<v Speaker 1>their home. So unless you own a legit copy of

0:39:52.840 --> 0:39:56.680
<v Speaker 1>an arcade machine, downloading the ROM for that game is

0:39:56.680 --> 0:39:57.600
<v Speaker 1>pretty much illegal.

0:39:59.040 --> 0:40:00.000
<v Speaker 2>But let's say you.

0:39:59.840 --> 0:40:02.319
<v Speaker 1>Go go to an auction right and you buy an

0:40:02.320 --> 0:40:05.120
<v Speaker 1>old Spy Hunter cabinet for your rec room at home.

0:40:05.200 --> 0:40:08.680
<v Speaker 1>First of all, good job, Spy Hunter, awesome arcade game,

0:40:09.040 --> 0:40:12.680
<v Speaker 1>one of my favorites from the arcade era. You get

0:40:12.719 --> 0:40:16.360
<v Speaker 1>the machine home and you realize that the circuit board

0:40:16.760 --> 0:40:20.400
<v Speaker 1>is damaged a little bit. It's kind of fried, and

0:40:20.440 --> 0:40:24.960
<v Speaker 1>the game isn't really working properly. It's not stable, like

0:40:25.000 --> 0:40:26.560
<v Speaker 1>you can get it running every now and then, but

0:40:26.640 --> 0:40:31.239
<v Speaker 1>it doesn't necessarily run flawlessly or it might crash at

0:40:31.320 --> 0:40:32.280
<v Speaker 1>random intervals.

0:40:33.160 --> 0:40:34.280
<v Speaker 2>So the question is, could.

0:40:34.120 --> 0:40:38.840
<v Speaker 1>You then download a ROM for Spy Hunter and replace

0:40:38.920 --> 0:40:41.800
<v Speaker 1>the guts of the cabinet you've bought with a PC

0:40:42.120 --> 0:40:45.440
<v Speaker 1>running an emulated copy of the game. So instead of

0:40:45.480 --> 0:40:49.839
<v Speaker 1>having the actual Spy Hunter elements inside this cabinet, you

0:40:49.880 --> 0:40:52.479
<v Speaker 1>remove those, you put a PC in there.

0:40:53.440 --> 0:40:54.080
<v Speaker 2>The PC is.

0:40:54.120 --> 0:40:57.440
<v Speaker 1>Running Maime, and the only ROM you have on it

0:40:57.480 --> 0:40:59.680
<v Speaker 1>is Spy Hunter, because that's the game you bought.

0:41:00.280 --> 0:41:06.840
<v Speaker 2>Would that be legal? Well, if you were to rip the.

0:41:06.719 --> 0:41:10.520
<v Speaker 1>Game off the circuit board yourself, you could probably argue

0:41:10.560 --> 0:41:13.719
<v Speaker 1>that as being totally legit. So in other words, you'd

0:41:13.760 --> 0:41:16.400
<v Speaker 1>have to make a digital copy of a hard coded game,

0:41:17.239 --> 0:41:20.520
<v Speaker 1>which isn't exactly easy for the average person to do,

0:41:20.880 --> 0:41:23.080
<v Speaker 1>but it would be a necessary step to use a

0:41:23.120 --> 0:41:25.720
<v Speaker 1>digital ROM on another type of device.

0:41:26.320 --> 0:41:27.640
<v Speaker 2>In the United States, this.

0:41:27.640 --> 0:41:31.200
<v Speaker 1>Would likely be seen as making a legal backup copy,

0:41:31.760 --> 0:41:35.399
<v Speaker 1>as in a lawful it is perfectly fine to make

0:41:35.440 --> 0:41:39.120
<v Speaker 1>a backup copy of media you have purchased. It's similar

0:41:39.120 --> 0:41:43.320
<v Speaker 1>to making a backup of a CD or a cassette

0:41:43.360 --> 0:41:47.399
<v Speaker 1>tape or a vinyl album, either through putting it onto

0:41:47.440 --> 0:41:50.239
<v Speaker 1>another medium or ripping it and making it an MP three.

0:41:51.200 --> 0:41:52.160
<v Speaker 2>That's perfectly legal.

0:41:52.480 --> 0:41:54.160
<v Speaker 1>As long as you're doing it for your own personal

0:41:54.280 --> 0:41:58.200
<v Speaker 1>use without the intent to distribute, you're pretty much okay.

0:41:58.840 --> 0:42:02.120
<v Speaker 1>You are legally al oued to make backup copies of

0:42:02.200 --> 0:42:07.440
<v Speaker 1>stuff you purchased, as long as it's for the purpose

0:42:07.480 --> 0:42:11.400
<v Speaker 1>of a backup. But what about downloading a ROM from

0:42:11.440 --> 0:42:14.439
<v Speaker 1>another source rather than ripping it from the circuit board

0:42:14.440 --> 0:42:16.440
<v Speaker 1>you physically own. Let's say that you don't have the

0:42:16.480 --> 0:42:20.680
<v Speaker 1>equipment necessary to pull the code off a hard coded

0:42:20.719 --> 0:42:23.880
<v Speaker 1>circuit board and convert it into something digital that a

0:42:23.920 --> 0:42:27.600
<v Speaker 1>PC could read, so instead you're just going to download

0:42:27.640 --> 0:42:31.320
<v Speaker 1>a copy from the internet. Now, arguably you could say

0:42:31.400 --> 0:42:34.040
<v Speaker 1>that downloading the ROM in this instance is a case

0:42:34.080 --> 0:42:37.200
<v Speaker 1>of fair use. So the argument you would make is

0:42:37.200 --> 0:42:40.000
<v Speaker 1>that you already own the game. You purchased a legit

0:42:40.120 --> 0:42:43.879
<v Speaker 1>copy of Spy Hunter, and you're not distributing the ROM

0:42:43.920 --> 0:42:45.440
<v Speaker 1>to anyone.

0:42:45.520 --> 0:42:47.479
<v Speaker 2>You're not trying to.

0:42:47.640 --> 0:42:51.480
<v Speaker 1>Create a marketplace for the Spy Hunter game. All you

0:42:51.520 --> 0:42:53.319
<v Speaker 1>want to be able to do is play the game

0:42:53.360 --> 0:42:59.120
<v Speaker 1>you bought on the arcade console you purchased. So you

0:42:59.120 --> 0:43:02.560
<v Speaker 1>could argue, I'm not causing harm to the market, right,

0:43:03.120 --> 0:43:06.080
<v Speaker 1>I'm not denying a sale. I'm just trying to get

0:43:06.120 --> 0:43:09.840
<v Speaker 1>access to the thing I have already purchased. Well, that

0:43:09.880 --> 0:43:12.239
<v Speaker 1>could be a legit fair use argument, but you got

0:43:12.280 --> 0:43:14.759
<v Speaker 1>to remember fair use is an argument you have to

0:43:14.760 --> 0:43:17.720
<v Speaker 1>make in a legal case. In other words, it doesn't

0:43:17.719 --> 0:43:22.960
<v Speaker 1>protect you from getting sued. You can't say at the forefront,

0:43:23.400 --> 0:43:27.200
<v Speaker 1>this is fair use, don't sue me. Instead, fair use

0:43:27.280 --> 0:43:30.760
<v Speaker 1>is an argument you make once you have been sued,

0:43:31.400 --> 0:43:34.720
<v Speaker 1>so fair use doesn't matter until you get to court.

0:43:35.600 --> 0:43:37.440
<v Speaker 2>Chances are, though, no one would sue.

0:43:37.200 --> 0:43:39.760
<v Speaker 1>You in the first place unless you were distributing games,

0:43:39.960 --> 0:43:42.600
<v Speaker 1>particularly for some of these old ROMs because in some

0:43:42.680 --> 0:43:44.880
<v Speaker 1>of these cases, the companies that made the games have

0:43:44.960 --> 0:43:48.600
<v Speaker 1>been out of business for years, or they were acquired

0:43:48.640 --> 0:43:51.520
<v Speaker 1>and sold and acquired so many times, then no one

0:43:51.560 --> 0:43:53.759
<v Speaker 1>really knows what the ownership rights are for some of

0:43:53.800 --> 0:43:56.279
<v Speaker 1>these games. So, in other words, there's no one to

0:43:56.320 --> 0:43:59.400
<v Speaker 1>give your money to because no one knows who owns

0:43:59.480 --> 0:44:04.640
<v Speaker 1>the copyright. And not only are no copies being sold,

0:44:05.080 --> 0:44:09.040
<v Speaker 1>but there's no one who's authorized to sell them, right,

0:44:09.560 --> 0:44:12.320
<v Speaker 1>no one knows who owns it. So in those cases,

0:44:12.719 --> 0:44:16.720
<v Speaker 1>you're probably okay to download the ROMs, not that it's legal,

0:44:16.840 --> 0:44:19.160
<v Speaker 1>but that you're probably not gonna get punished for it

0:44:19.200 --> 0:44:22.080
<v Speaker 1>because there's no one to lay a claim against you.

0:44:23.360 --> 0:44:26.799
<v Speaker 1>That doesn't stop companies from doing that even when they

0:44:26.800 --> 0:44:30.279
<v Speaker 1>don't necessarily have a legal claim to the content. If

0:44:30.320 --> 0:44:31.960
<v Speaker 1>they think they can get away with it, they could

0:44:31.960 --> 0:44:34.160
<v Speaker 1>totally go that route. You would have to prove in

0:44:34.200 --> 0:44:37.399
<v Speaker 1>a court of law that the company suing you does

0:44:37.440 --> 0:44:40.919
<v Speaker 1>not have a legal claim to the property they are

0:44:41.440 --> 0:44:46.040
<v Speaker 1>arguing is theirs. So you know, if video game Company

0:44:46.080 --> 0:44:48.960
<v Speaker 1>A says, hey, you know, back in nineteen eighty eight,

0:44:49.000 --> 0:44:51.839
<v Speaker 1>we purchased video game Company B, which means we own

0:44:52.560 --> 0:44:57.479
<v Speaker 1>the video game you have downloaded illegally and you say,

0:44:57.640 --> 0:45:02.080
<v Speaker 1>well no because of X, Y and Z. Maybe it

0:45:02.120 --> 0:45:04.200
<v Speaker 1>turns out you're perfectly fine, but it means you have

0:45:04.239 --> 0:45:08.719
<v Speaker 1>to go through the whole court experience, which isn't great. Now.

0:45:08.760 --> 0:45:10.680
<v Speaker 1>You may have also heard that there's a special rule

0:45:10.760 --> 0:45:13.319
<v Speaker 1>that allows you to download any video game ROM and

0:45:13.400 --> 0:45:16.240
<v Speaker 1>keep it for twenty four hours without it being illegal,

0:45:16.280 --> 0:45:19.480
<v Speaker 1>as long as you delete the realm after twenty four hours.

0:45:20.840 --> 0:45:23.439
<v Speaker 1>So generally people say, oh, yeah, you can download the game,

0:45:23.480 --> 0:45:25.440
<v Speaker 1>give it a whirl, and delete it a day later,

0:45:25.560 --> 0:45:29.000
<v Speaker 1>and there's no fear of someone coming after you. I

0:45:29.000 --> 0:45:30.600
<v Speaker 1>am here to tell you that is not based on

0:45:30.640 --> 0:45:33.960
<v Speaker 1>any actual legal grounding. From what I can tell, there

0:45:34.080 --> 0:45:39.840
<v Speaker 1>is no legal foundation for this argument. It's probably just

0:45:39.920 --> 0:45:42.799
<v Speaker 1>wishful thinking that's been passed along as gospel among a

0:45:42.800 --> 0:45:46.200
<v Speaker 1>lot of realm sharing communities. The truth is, if you're

0:45:46.239 --> 0:45:49.279
<v Speaker 1>downloading something that doesn't belong to you and you're not

0:45:49.400 --> 0:45:53.040
<v Speaker 1>purchasing it, you're just downloading it, you are stealing. It.

0:45:53.080 --> 0:45:56.080
<v Speaker 1>Doesn't matter if you're keeping it forever or for twenty

0:45:56.080 --> 0:45:57.560
<v Speaker 1>four hours, it's still stolen.

0:45:58.160 --> 0:45:59.879
<v Speaker 2>Now. Complicating matters in this.

0:45:59.840 --> 0:46:03.359
<v Speaker 1>Case is that we're talking about digital information, not a

0:46:03.360 --> 0:46:06.960
<v Speaker 1>physical copy of something. I mean, if I walked into

0:46:07.000 --> 0:46:09.360
<v Speaker 1>a video game store and I pocketed a copy of

0:46:09.360 --> 0:46:12.640
<v Speaker 1>an actual video game that was stored on physical media

0:46:12.760 --> 0:46:15.800
<v Speaker 1>like a CD or a DVD, there's no question that

0:46:15.920 --> 0:46:17.880
<v Speaker 1>I stole something. Right If I walk into a game

0:46:17.920 --> 0:46:21.360
<v Speaker 1>stop and I grab a box and I shove it

0:46:21.440 --> 0:46:24.360
<v Speaker 1>under my jacket and I walk out, I stole that.

0:46:25.160 --> 0:46:28.120
<v Speaker 1>There is a physical copy of the game that I

0:46:28.160 --> 0:46:31.080
<v Speaker 1>have taken, and that means the store can't sell that

0:46:31.120 --> 0:46:34.160
<v Speaker 1>physical copy because it's in my possession and I didn't

0:46:34.160 --> 0:46:40.279
<v Speaker 1>buy it. But downloading a file doesn't feel like stealing, right.

0:46:40.080 --> 0:46:42.640
<v Speaker 2>Because the original file still exists.

0:46:42.239 --> 0:46:45.839
<v Speaker 1>On some server somewhere, So you didn't. You didn't take

0:46:45.920 --> 0:46:48.920
<v Speaker 1>the one and only existing copy. You made a copy

0:46:49.000 --> 0:46:52.640
<v Speaker 1>of another file, and now you have that copy, so

0:46:53.400 --> 0:46:56.960
<v Speaker 1>other legitimate customers could still purchase the game that you've taken,

0:46:57.360 --> 0:47:00.480
<v Speaker 1>because it's not like it doesn't exist anymore. And so

0:47:00.640 --> 0:47:03.360
<v Speaker 1>because of this, a lot of people justify their actions

0:47:03.400 --> 0:47:06.600
<v Speaker 1>as being okay, because it's not like they actually took

0:47:06.680 --> 0:47:10.920
<v Speaker 1>something that physically exists, except that at the end of

0:47:11.040 --> 0:47:14.839
<v Speaker 1>the day, you are accessing something without paying for it.

0:47:15.120 --> 0:47:18.480
<v Speaker 1>When there's an entire business based off of making games

0:47:18.480 --> 0:47:23.840
<v Speaker 1>for money. If game developers didn't make money, there wouldn't

0:47:23.880 --> 0:47:28.000
<v Speaker 1>be games. No one would make games, or at least

0:47:28.239 --> 0:47:30.200
<v Speaker 1>not on the level that we are used to. People

0:47:30.280 --> 0:47:33.200
<v Speaker 1>might make games as an expression of art and they're

0:47:33.200 --> 0:47:35.360
<v Speaker 1>not trying to make any money, But there wouldn't be

0:47:35.360 --> 0:47:39.000
<v Speaker 1>a video game business if we all just stole stuff, right,

0:47:39.040 --> 0:47:41.000
<v Speaker 1>because there's no money in that, you would spend your

0:47:41.000 --> 0:47:42.960
<v Speaker 1>time doing something else where you'd actually be able to

0:47:42.960 --> 0:47:48.000
<v Speaker 1>make a living. But we get even more complicated because

0:47:48.160 --> 0:47:51.000
<v Speaker 1>many of the games that are in raw form are

0:47:51.040 --> 0:47:54.600
<v Speaker 1>now on obsolete systems or which you cannot purchase at

0:47:54.680 --> 0:47:59.799
<v Speaker 1>least not from a primary company, Like you're not gonna

0:47:59.800 --> 0:48:03.040
<v Speaker 1>be like be able to buy a classic Nintendo system

0:48:03.040 --> 0:48:07.080
<v Speaker 1>from Nintendo. You could buy the little ones that replicate,

0:48:07.560 --> 0:48:10.800
<v Speaker 1>you know, a dozen or two dozen games on one system,

0:48:11.200 --> 0:48:13.200
<v Speaker 1>but you can't just go out and buy an Anys.

0:48:13.600 --> 0:48:17.799
<v Speaker 1>They don't make them anymore. Or some of those video

0:48:17.840 --> 0:48:20.160
<v Speaker 1>game systems are in limbo as far as ownership goes.

0:48:20.600 --> 0:48:22.880
<v Speaker 1>And that also makes it easier for people to justify

0:48:22.920 --> 0:48:25.840
<v Speaker 1>downloading the files, but it doesn't make it any more legal.

0:48:26.480 --> 0:48:27.520
<v Speaker 2>Now I'll admit.

0:48:27.320 --> 0:48:30.200
<v Speaker 1>It's really frustrating to be in a position in which

0:48:30.239 --> 0:48:34.080
<v Speaker 1>you would happily pay for something if you could, but

0:48:34.200 --> 0:48:36.040
<v Speaker 1>you have no legal way to do it. That is

0:48:36.160 --> 0:48:39.600
<v Speaker 1>really frustrating. I found myself in that same position with

0:48:39.680 --> 0:48:42.560
<v Speaker 1>a lot of British television series that I love but

0:48:42.640 --> 0:48:45.000
<v Speaker 1>are not available for purchase in the United States.

0:48:45.960 --> 0:48:48.160
<v Speaker 2>So I do the.

0:48:48.239 --> 0:48:54.000
<v Speaker 1>Legal, grown up lame thing, which is that I don't

0:48:54.719 --> 0:48:57.239
<v Speaker 1>I don't access it like I don't. I don't get

0:48:57.280 --> 0:49:00.160
<v Speaker 1>it means I don't pirate the stuff I love in

0:49:00.200 --> 0:49:02.160
<v Speaker 1>the hopes that one day I'll have a legal means

0:49:02.160 --> 0:49:02.840
<v Speaker 1>to access it.

0:49:04.120 --> 0:49:04.480
<v Speaker 2>Instead.

0:49:04.520 --> 0:49:07.760
<v Speaker 1>I'll, you know, I'll post about it, I'll write to people,

0:49:07.960 --> 0:49:11.799
<v Speaker 1>I'll ask questions, but I have to wait until there's

0:49:11.840 --> 0:49:13.120
<v Speaker 1>a legal way to purchase it.

0:49:14.120 --> 0:49:15.800
<v Speaker 2>I do think this is a muddy area.

0:49:16.280 --> 0:49:19.359
<v Speaker 1>If a game exists and there's no way to buy

0:49:19.400 --> 0:49:22.320
<v Speaker 1>it and the company that made it doesn't even exist anymore,

0:49:22.360 --> 0:49:25.320
<v Speaker 1>are you really causing harm to the market by downloading

0:49:25.360 --> 0:49:29.759
<v Speaker 1>a ROM I'd say it probably not, because there's no

0:49:29.800 --> 0:49:33.319
<v Speaker 1>way to purchase it legally. But someone in court might

0:49:33.400 --> 0:49:36.800
<v Speaker 1>say you undermined their attempt to make a legitimate commercial

0:49:36.880 --> 0:49:39.640
<v Speaker 1>copy of the game. Further down the road, and because

0:49:39.640 --> 0:49:42.080
<v Speaker 1>we can't see into the future and see if someone

0:49:42.160 --> 0:49:45.399
<v Speaker 1>is really telling the truth in those cases, that's problematic.

0:49:45.920 --> 0:49:48.880
<v Speaker 1>So if I download a bunch of ROMs from a

0:49:49.920 --> 0:49:53.720
<v Speaker 1>previous publisher that no longer exists, but their intellectual property

0:49:53.960 --> 0:49:57.160
<v Speaker 1>belongs to another company, and that other company says, hey,

0:49:58.200 --> 0:50:00.560
<v Speaker 1>in five years, we're going to release a best of

0:50:00.800 --> 0:50:04.880
<v Speaker 1>compilation little console that you can connect to your TV,

0:50:05.719 --> 0:50:10.680
<v Speaker 1>and if you distribute these ROMs, then you devalue that system,

0:50:11.000 --> 0:50:13.000
<v Speaker 1>even if they have no plan of doing that. I

0:50:13.040 --> 0:50:16.759
<v Speaker 1>don't know the case right, so it's complicated.

0:50:17.320 --> 0:50:18.200
<v Speaker 2>At the end of the day.

0:50:18.760 --> 0:50:21.680
<v Speaker 1>It is illegal to download ROMs for any games you

0:50:21.760 --> 0:50:25.160
<v Speaker 1>do not own, and you could technically get in trouble

0:50:25.200 --> 0:50:28.520
<v Speaker 1>for it. And as for games you do own, it's

0:50:28.520 --> 0:50:32.239
<v Speaker 1>a gray area and you could still technically get in

0:50:32.280 --> 0:50:35.120
<v Speaker 1>trouble for it. So tread carefully, and if there is

0:50:35.440 --> 0:50:38.120
<v Speaker 1>a legal way to buy or access the stuff you love,

0:50:38.239 --> 0:50:41.439
<v Speaker 1>I urge you to do that first. It helps cut

0:50:41.480 --> 0:50:45.560
<v Speaker 1>down on reactionary laws and digital rights management strategies, and

0:50:45.600 --> 0:50:49.600
<v Speaker 1>it helps prevent companies from making these these.

0:50:49.680 --> 0:50:53.200
<v Speaker 2>These new systems that hurt everybody.

0:50:54.160 --> 0:50:56.759
<v Speaker 1>So if there's a way to get it legally, do that,

0:50:58.640 --> 0:51:02.080
<v Speaker 1>and if there's not, think really hard before you go

0:51:02.120 --> 0:51:05.560
<v Speaker 1>down this pathway, because you could be causing yourself more

0:51:05.600 --> 0:51:08.560
<v Speaker 1>frustration in the long term. And that's it for that

0:51:08.600 --> 0:51:11.600
<v Speaker 1>classic episode about how video game emulators work. As I

0:51:11.600 --> 0:51:14.440
<v Speaker 1>said at the beginning, I've thought about getting like a

0:51:14.520 --> 0:51:18.640
<v Speaker 1>mame machine. But the issue I have is that a

0:51:18.640 --> 0:51:21.360
<v Speaker 1>lot of the content you find with those, I mean again,

0:51:21.440 --> 0:51:26.040
<v Speaker 1>it's like pirated content. That doesn't mean that emulators themselves

0:51:26.160 --> 0:51:29.600
<v Speaker 1>are bad, as I've said many times, they're not. Emulators

0:51:29.640 --> 0:51:33.480
<v Speaker 1>are a way of preserving work that otherwise could just

0:51:33.600 --> 0:51:36.719
<v Speaker 1>go forgotten. It. I don't have an issue with that

0:51:36.840 --> 0:51:40.480
<v Speaker 1>at all. It's just the issue where I balk is

0:51:40.920 --> 0:51:46.360
<v Speaker 1>I really do believe in paying to have access to

0:51:46.480 --> 0:51:50.399
<v Speaker 1>work that other people have made, and so that's why

0:51:50.480 --> 0:51:53.080
<v Speaker 1>I haven't taken the plunge on getting a mame machine.

0:51:53.520 --> 0:51:55.799
<v Speaker 1>It's not that I think Maime itself or any other

0:51:55.880 --> 0:52:00.799
<v Speaker 1>video game emulator for that matter, is inherently bad. That

0:52:02.640 --> 0:52:05.120
<v Speaker 1>I believe in paying people for their work. And I

0:52:05.360 --> 0:52:07.400
<v Speaker 1>don't just mean the people who make the emulators. I

0:52:07.440 --> 0:52:09.279
<v Speaker 1>mean the people who made the original games that are

0:52:09.320 --> 0:52:13.840
<v Speaker 1>running on those emulators. It's a it's a it's complicated

0:52:13.840 --> 0:52:18.920
<v Speaker 1>because in many cases you literally cannot purchase the content

0:52:19.320 --> 0:52:23.200
<v Speaker 1>any other way, and then you're left with the question of, well,

0:52:23.239 --> 0:52:26.400
<v Speaker 1>if you can't do that, doesn't it just get forgotten?

0:52:26.840 --> 0:52:29.640
<v Speaker 1>And honestly, I don't. I don't know how to reconcile that.

0:52:29.960 --> 0:52:32.840
<v Speaker 1>So as I struggle with this, I hope you all

0:52:33.280 --> 0:52:35.920
<v Speaker 1>are well and stay well.

0:52:36.200 --> 0:52:37.000
<v Speaker 2>Don't worry about me.

0:52:37.320 --> 0:52:40.720
<v Speaker 1>I'm sure I can come to some sort of decision

0:52:40.760 --> 0:52:44.759
<v Speaker 1>about Maine at some point, and I will talk to

0:52:44.760 --> 0:52:54.840
<v Speaker 1>you again, really soon. Tech Stuff is an iHeart Radio production.

0:52:55.160 --> 0:52:59.480
<v Speaker 1>For more podcasts from iHeartRadio, visit the iHeartRadio app Apple

0:52:59.520 --> 0:53:02.320
<v Speaker 1>Podcasts wherever you listen to your favorite shows.