Garry Kitchen joins the podcast to discuss his lifelong career in gaming and how spending his summer of 1982 porting Nintendo’s Donkey Kong over to the Atari 2600 was tedious, but worth it. He’d also like you to know he’s a hell of a good ROM hacker, Mario’s eye is just a void, and you’re darn right he slanted those ramps.
See more from Garry Kitchen:
Twitter: @kitchengarry
Medium: https://garrykitchen.medium.com/
Website: garrykitchen.com
The Video Game History Hour music is Blippy Trance by Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License: http://creativecommons.org/licenses/by/4.0/
Transcript
VGHH EPISODE 7 Garry Kitchen DRY EDIT
Tue, 11/24 12:03PM • 1:05:13
SUMMARY KEYWORDS
atari, game, source code, donkey kong, people, games, screen, industry, garry, bytes, laughter, ram, write, draw, talking, repository, left, cartridge, years, scanline
SPEAKERS
Kelsey Lewin, Frank Cifaldi, Garry Kitchen
Kelsey Lewin 00:00
Welcome to episode number seven of the Video Game Gistory Hour presented by the Video Game History Foundation. Every episode, we’ll be bringing in an expert guest: someone who’s done the research and has an interesting story from video game history to tell. Or in this case, was there themselves. My name is Kelsey Lewin, I’m the co-director of the Video Game History Foundation and I’m here as always with Frank Cifaldi, the founder and co-director of the Video Game History Foundation.
Frank Cifaldi 00:23
Thanks, Kelsey. Joining us today is Garry Kitchen. Garry is a veteran video game designer, programmer, business person, kind of been all around the industry, really. His works that you’ve probably heard of in the console space, anyway, would include Keystone Kapers, Pressure Cooker, Super Battletank, and The Simpsons: Bart Versus the Space Mutants. Garry recently published an article on medium called, “How I Spent My Summer of 1982,” which – spoiler alert – is about how he managed to port Nintendo’s arcade hit, Donkey Kong, to the Atari 2600. Garry, welcome to the Video Game History Hour.
Garry Kitchen 00:58
Thanks for having me.
Frank Cifaldi 01:00
So your story here starts in 1982. And kind of take us back there; who was Gary kitchen in 1982?
Garry Kitchen 01:09
Well, um, I had originally started in 1973, I had started college as an art major, like drawing and painting. Because I did that my whole youth, that was my big thing. And I really had very little connection to technology at all at that point. But a couple of years in the school, I got a job at an engineering firm. And it was a part-time job because I was going to school and paying my own way, so making every buck was good. And eventually that job got me into electronic toys and then video games. And I was essentially self-taught on both. Somewhere in the process, I switched my major from art to engineering. But by the time I got my engineering degree in 1980, I had already released commercial toys and games that I had engineered and invented. So it was great to have it, but it wasn’t really the basis, the foundation of my skills. Those were learned on the job. So I left that company in 1981 after I reverse-engineered the Atari 2600 and did the Space Jockey for US Games. One of the early third-party games on the platform. I left my brother Dan left, we started a small company. And early 1982, my phone rang. And Coleco was looking for someone to port Nintendo’s Donkey Kong to the 2600. And ironically, at that point in time, there were the people at Atari, the people at Activision, who spawn off of Atari. And then the weren’t a whole lot of other people on the planet who knew how to program an Atari. Because there was no book you didn’t buy a manual, there was no internet. You didn’t download anything. But I had reverse-engineered it so I had that knowledge. And I was hired to do the work around I guess it was April-May 1982.
Kelsey Lewin 03:34
So this is before there’s dev kits, before there’s documentation, before anything. I mean, it’s not like you could go to Atari and request some information about what makes the Atari 2600 work. So where do you even start with something like that?
Garry Kitchen 03:49
Well, that’s, that’s true. It’s different than today. You know, if you want to be a developer today on the PlayStation 5, you sign up with Sony, they give you all the materials, everything set up to go. It wasn’t that way in the late ’70s. The Atari 2600 was a closed system. There was no public information out. They had no interest in other people doing games on the platform. Activision spun off; the four stars of Atari spun off in 1978, I guess it was. David Crane and his three partners at the time, they spun off, so now they were doing them too. But beyond that, to get in to the Atari world, you had to bust it open and figure it out. Because as you say, there was no access to anything. There was no development system. There were no tools and there was just that box you could buy for 150 bucks at the toy store. That was it.
Frank Cifaldi 04:58
So I mean, just help… Help me visualize reverse-engineering. I understand it from a high level, but let’s just, you know, roleplay, right? You got the Atari 2600, you open it up to the circuit board with a bunch of chips on it. Where do you even start? How do you how do you start reverse-engineering a system?
Garry Kitchen 05:18
Well, it’s funny because as I was doing it, I was saying to myself, “Well, they didn’t try very hard to keep this secret.” First of all, if I didn’t want people getting into a system, when I opened the box, the chips wouldn’t have numbers on them. And they did. So I opened it up, I saw immediately that it had a 6502, actually a variation of the 6502, but in the family of the microprocessors. So that immediately told me what the language was that you would write games with, it was the 6502 assembly language. Well, fortuitously – and I am a believer that some breaks in your career just happen out of pure luck – fortuitously, I was a very early owner of an Apple II computer. I bought it right when it came out, very soon after. So I had an Apple II, which also ran on the 6502. So it’s hard to express the glee I felt when I opened up it an Atari and saw that it had the same processor. Isn’t that nice! So if I could get the programs that ran on the Atari onto my Apple II, it would give me more of a system to be able to read them. So what I did is I figured out: I took an Atari cartridge, and I busted it open. I ran a an umbilical cord, a group of wires from the cartridge into a board, which I designed, which plugged into one of the back panel slots on the Apple II. Now, by doing that, if I plugged in a… well actually, let’s step back. What I had on the other end from the Apple II was not a cartridge plug, it was the reverse; it was a slot that would accept a cartridge. So I had this device. Now when I plugged an Atari cartridge into this receptacle that I had attached to my Apple, if I went into the memory of the Apple, at a certain mapping in the memory where there was no ROM in the Apple II, there had empty slots, I could see what was in the ROM of the Atari game. And that’s kind of how I started.
Frank Cifaldi 07:59
[Laughter.]
Garry Kitchen 07:59
I think I think the first game I looked at was, ironically, David Crane’s Combat. In fact that at that moment, I probably didn’t even know it was David Crane’s, but it was Combat. And I remember that was the very first one I looked at. And just because I could see into it didn’t make it any easier. All you can see at that point is 2048 numbers in a row. As I talked about in the Medium article, my entire career is making lists of numbers. And they just happen to be in the right order. So I got this list, and I brought it into my Apple. And then I could use something called a disassembler, which would take that list of numbers and turn it into a slightly readable version of 6502 code. “Slightly readable,” because it allowed me to read the instructions but it didn’t include any of the things that programmers put in code so that they can later understand it. Like, naming the variable that keeps track of score, “score” or naming the variable that keeps track of speed, “velocity,” or any comments in the code that explain, “Hey, what this code does is it does ABC.” None of that was in there. All I had now was a big list of instructions. And that’s where the work really started. I had to read this uncommented, undocumented list of instructions and start to understand what the program was telling the Atari to do. And that was a few months of reading, making notes and scratching my head.
Frank Cifaldi 08:37
So are you then making edits to the code and then deploying it back to the Atari to see what it does and then taking notes? Is that kind of how it works?
Garry Kitchen 10:05
That was part of it. Part of it was, I would find something that was interesting. And I would say, “Hmm, I wonder what that variable does?” I mean, part of a program is, you’re using a list of variables to keep track of things. So you have a variable that says, “What’s the horizontal position of Mario? What’s the vertical position of Mario? What’s the score? What level are you on?” And if you can identify all of those variables, so that I could read the program and say, “OK, well right there, what they’re doing is they’re doing ABC, whatever,” then that would be useful to me. So on the Atari 2600, you only have 128 bytes of RAM. So there weren’t more than 128 variables. So I made a chart and I started filling those in saying, “OK, I’m sure that that the location at number 56, has to do with whatever.” So as I built that and started filling them in, one way I could figure it out is, I would go to the code that played with those variables, or change them in some way. And I would change that code. So I’d say, “OK, right here it’s storing something in variable 1E5, I’m going to make it not store into that variable and see what it does to the code.” And then that would give me a clue. So I started to do that. I built up this list of variables for the program I was looking at. And then I could better go into the code that I was looking at and start to get a sense of what it was doing.
Kelsey Lewin 11:55
So part of taking apart one of these games is… I mean, you’re you’re basically doing primitive ROM hacking! You’re just kind of changing variables slightly and seeing what it does, in the spirit of experimentation, I’m sure you didn’t set out to make a hack of Combat or anything. But I think that’s fascinating that that’s kind of how it begins.
Garry Kitchen 12:19
Yeah, no, it’s certainly the same skill set. I’m a hell of a good ROM hacker, I have to tell ya.
Frank Cifaldi 12:26
It’s funny. I’m not a good ROM hacker, but I am good at cheating. [laughter] And, you know, using emulators for old games, I would essentially do exactly what you’re doing. I’d be monitoring memory addresses trying to figure out how the lives counter works, how the other the, you know, the timer works. Stuff like that in order to, you know, freeze values in memory.
Garry Kitchen 12:53
Oh, yeah, I’ve done that too in past lives. I wish I had had that capability at the time, but I didn’t even have that. So once I did that, and I had two or three games kind of figured out, like, “All right… I got a sense what they’re doing.” Then I had to figure out the hard stuff, which was: I know it’s throwing the screen in some way one scanline at a time but how is it actually doing it? And what’s the timing of it? And that was really migraine territory, trying to figure that out with no concept of how this machine worked. It took maybe six or seven months from the beginning to the end to get to the point where I’d written a complete set of documentation, which I then used to go off and write a 2k game, Space Jockey.
Frank Cifaldi 13:51
And, you know, studying Combat seems a little bit fortuitous because my understanding is essentially the 2600 was designed as a Combat machine, more or less, in terms of the features that you got as a developer. Can you kind of go through and explain you what it is that you have in terms of “player one missile,” etc.?
Garry Kitchen 14:17
Sure. And when you said that something… a bell just went off in my head.
Frank Cifaldi 14:21
Oh, great! That means I’m a good interviewer!
Kelsey Lewin 14:23
[Laughter]
Garry Kitchen 14:24
I misspoke before! Th game I was looking at was David Crane’s Outlaw.
Frank Cifaldi 14:30
Ah.
Garry Kitchen 14:31
Outlaw… The guy with the gun, the one guy on either side of the screen, shooting at each other. Not Combat. David Crane did not do Combat. He’s gonna yell at me later about that. But it was Outlaw. So All right, let me explain. Let’s see what I can do here. This is like the most impossible thing to explain, but let me do it.
Frank Cifaldi 14:49
Yeah, it’s a good challenge! let’s go.
Kelsey Lewin 14:50
And you don’t even get to use images because it’s the podcast, so extra challenge!
Garry Kitchen 14:53
Yes, that’s it! So if you think about a Commodore or an Apple or an IBM, I think everyone understands that it has what’s called a bitmap. Which is, it has an area of memory made up of RAM, which is memory that you can read or write to. And if you fill that area up with a picture, it is displayed on the screen based on what is sitting in that memory. So if, for example, the screen was, let’s just say 200 by 160. And each dot was described by one byte. So you would then have 200 times 160 bytes in memory. Each one had a value in it. If the value is zero, the dot was off. If value was one-to-255, it was some RGB value. There’s a standard of what those numbers mean in terms of colors. So that’s how a bitmap works. So if I have a bitmap of that many bytes, which correspond to each pixel on the screen, and I fill them up with one or two, or three – or whatever – fill them up with a sequence, the whole screen will look like a rainbow. It’ll look like a bunch of random dots, whatever. So if you have that as a basis to, “OK, I get it.” Here’s how to 2600 works. When it was designed, you could never have that much RAM in the system. RAM was very expensive. So if you’re going to build a consumer product in the 1975 timeframe, you’re not going to have 16,384 bytes of RAM, like an like an Apple II, you’re not going to have that because you can’t afford it. Unless you’re gonna sell for $1,000. But if you’re trying to sell something for $150, you’re not going to have a lot of RAM. In fact, that’s why the Atari only had 128 bytes of RAM, which is criminal if you’re trying to write a problem, it’s just criminal trying to write a program, because that’s just not enough ram to keep track of all the things you need to do. But anyway. So equally, there are two uses for RAM in the Atari. The 128 bytes was used by the program for all the things we talked about before. They call it a scratch pad. So the program keeps track of, you know, what level you’re on what score you’re at, where the character is. That sort of thing. But there’s also another usage for RAM in the machine and that is, you put information in a location, and it displays something on the screen in the same way a bitmap works. Except the limited amount of RAM on the 2600 was about one 200th of what you would get in the bitmap. Meaning that… Let’s say there’s 262 lines on a TV screen. And on a 2600, 192 of them are visible. And these are just round numbers. Rather than having 192 lines of graphics represented in memory, it only had one line of graphics in memory. So it had a bitmap, but the bitmap was only for one line! So there was one byte available for player one – who was eight bits wide. One byte available for player two. And notice even what I was saying before about bitmap having one byte per dot? No! On the Atari 2600, it’s one bit per dot. So, one byte – eight bits – represented one player! And you only had one line of information for that player. And you had one line of information for the other player. So that’s your second byte. Then you had bits for the two missiles, or “balls,” they’re called, because those didn’t have any graphic look to them. They were just either on or off. And then, so there were two missiles, one associated with each player and the ball. So that’s five moving objects. So you had one byte that described what the first moving object looked like. And we’re pretending right now that the screen is only one line tall.
Frank Cifaldi 19:52
Right…
Garry Kitchen 19:52
So yeah, one byte for the first object, one byte for the second object and three bits for the Three moving objects the little, they call ’em missiles and balls. So if you think about Tank, Combat – the game we were originally talking about, Combat – you’ve got a tank, you got another tank, and each of you are firing a missile. And that’s it! Right. Ping Pong, Pong? You’ve got a left paddle, a right paddle, and a ball bouncing in between. That’s what the machine was made for: two objects and each of them has an associated dot. And that’s it. Not a whole lot there.
Kelsey Lewin 20:36
This is a really good machine for making some dots that can move around between two players and not much else.
Frank Cifaldi 20:43
It can bounce!
Garry Kitchen 20:44
That was it! That was the whole idea. So if I wrote an incredibly simple program on the Atari 2600, and I put a value in one and a value in the other… Well, let’s just talk about the two players. If I put a bit pattern in the left player and a bit pattern in the right player, and I did nothing else, you would see a vertical strip down the length of the screen. Same thing you see when you pull a cartridge out, when you see you pull a cartridge out while powers on? You see a whole bunch of vertical strips. All that means is that, “All right, I put a 24 in player one. And I never changed it.” So for all the lines on the TV screen, that 24 is in player one, that’s all you see. You may see a vertical list down of the first number I put in. And that’s it. Now what the Atari did was, it was synchronized to the TV screen, meaning that the program knew. The program could tell when the screen was going to start, and it could tell every line that went down the screen. So I could tell in my program, right now, this thing that’s moving at a tremendous speed is about to draw line 32 on the screen.
Frank Cifaldi 22:08
And I think we should pause here just for a second to talk about how we’re talking about our CRT television. And the way that your television worked back then – right, Garry? – was to draw one line at a time quickly and then sweep back to the top and start again. Right?
Garry Kitchen 22:24
Right, right. It was actually the draw one dot at a time. It’s called a cathode ray tube. And the inside of the tube had dots and there was an electron beam that would start on the left edge, and sweep across all, aiming and all of those dots on line number one. And timing-wise, as it was passing a dot, the beam was either on or off, to turn that dot on or off. And then when it reached the edge of the screen, it did something where it returned turn back without drawing to the other side, and now do the second line. And then it returned back and now do the third line. So yes, literally something that you would never think about with an Xbox or a PlayStation, how the screen is being drawn, which it’s not even being drawn that way anymore. But none of that is of consequence. Put values somewhere and a picture displays. On the Atari, we essentially knew where that electron beam was all the time. And the reason we wanted to know that, just imagine this: you have that machine that has… it’s a one line display. And I can put one number in one, one number in the other. And I have two characters that aren’t very tall. Well, if I timed my program, so I was about to start drawing the second line, I could change those two numbers. And then for the third line, I could change those two numbers again. And for the fourth line, the same thing. And essentially what I’m doing is I am drawing an image into that tall column of a player. So the player is from the top of the screen to the bottom of the screen, player one and player two. You can position them horizontally in the screen wherever you want. But they’re just a big tube going down the screen. If I put one number in them at the top, that number stays in the whole time. However, if I put one number at the top, one number in the second line, one number in the third line, a different number in the fourth line, I can actually begin to create something that looks like something. That’s the very basic idea of what you do. That system is so ridiculous to me with modern [UNINTELLIGABLE]! So like I’m looking at the Mario sprite that you drew? Yes.
Frank Cifaldi 25:10
And, and so each line as it’s drawing horizontally, it can only be the one color and it can be on or off. Right?
Garry Kitchen 25:19
Correct.
Frank Cifaldi 25:20
So to draw that hat, it’s just like, “OK, you’re off, you’re off, you’re on a little bit, then you’re off again,” just for the top of the hat. You’d repeat that. And then you just do that a little bit at a time you change the color when you get to his head. Right?
Garry Kitchen 25:35
Yep.
Frank Cifaldi 25:36
And then you just, you just draw Mario bit by bit like that.
Kelsey Lewin 25:40
And you start using this negative space to draw these sprites, which I think is really kind of an interesting thing with these older games. That’s, you know, not present in later ones where you’re… I mean, the black in the Mario sprite is just you not drawing.
Garry Kitchen 25:54
Yes.
Kelsey Lewin 25:55
It’s not putting black there. It’s not to drawing!
Garry Kitchen 25:58
That’s correct.
Frank Cifaldi 26:00
Mario’s eye is just a void.
Kelsey Lewin 26:02
His mustache, and his sideburns and… Yeah.
Garry Kitchen 26:06
And the brilliance of that graphic, which came later, as I was working on it, was putting that negative space to the side of his nose, which kind of gives it the mustache look. That wasn’t there for a long time and his nose looked terrible.
Kelsey Lewin 26:22
We were just commenting before we started recording this podcast about how much we actually like the sprite work in this game because it is… I mean, in order to get the mustache in Mario, yeah, you have these kind of wide pixels and there’s not that much you could do with it. But you managed to make a mustache with three empty pixels here!
Garry Kitchen 26:42
Yeah, isn’t that ridiculous? If you focus on Mario for a minute and think about bits, look at that top line. The top line is 00, starting from the left 00111000. So in computer code, that’s 1C.
Frank Cifaldi 27:07
Ah, I see, OK…
Garry Kitchen 27:09
Now that, I have a table somewhere that has a 1C in it. And I picked that 1C up and I put it in there, and I get the top piece of his hat. And then the next one down is a 3E. (I could tell just by looking at it because I’m really deranged.) [laughter] So I would draw that on paper. I would turn it into hexadecimal, which is what I’m talking about. So I had a list of 18 numbers in memory, that on each scanline, wherever he was standing, I would take load-store, load-store, load-store, down each scanline to create that image. We also, I kind of assumed but I should mention, that there were two other pieces of RAM that held color, too. One for player one, one for player two. So on a scanline, if you could figure out on a scan line to store graphics and color and graphics and color for two players. So that’s four stores, two players. You could have two players on the screen that were both multicolor, by line. So these are the types of things you would do. The big problem was that you didn’t have that much time, from when the line starts on the left edges screen to it ends on the right. You only had 76 computer cycles to store as much stuff as you could and change as many things as you could to make what is on that line different than what is on the line above it. So that’s where the trick always became is, “OK, what can I afford to change on each line to make this look more interesting? I really would like to stripe this guy with color so he looks better… I’d like to change, you know, the graphics of the second player… But do I have enough time in this particular line of my program to do it?” And that’s the cross that you carried when you were programming it.
Kelsey Lewin 29:13
And that’s why you get some of these kind of big single color images, like the Donkey Kong sprite where it’s all just one, because I imagine it becomes a game of trying to figure out what you can what you can realistically fit there. So even if you wanted to give him more colors, I mean…
Garry Kitchen 29:30
Are you talking about the Stay Puft Marshmallow Man, is that what you’re doing?
Kelsey Lewin 29:37
Yeah! [laughter]
Garry Kitchen 29:37
Yeah, and the problem with him was, I could have made him look better. He’s still only 8 bits, but there’s a mode where you can take a sprite and double or triple its width. So he’s still an eight bit object. And she standing next to him is an 8 bit object. So why couldn’t I do more with him? The problem is if you look over on the right, those two boxes? Well, though on picture I’m looking at is two boxes, I’m not sure how many boxes it is on what you’re looking at. But over on the right are two boxes, which represent your two lives that you have saved. And you’re going to go through all of them. So I had to be able to display lives in that same line. So now I have the problem of, how am I going to make those two boxes over there? And a multicolor princess and Donkey Kong, so somebody had to lose. So it was Donkey Kong.
Kelsey Lewin 29:44
For what it’s worth, I think you made the right choice.
Garry Kitchen 30:38
I mean, I had to display the lives. So I had no choice there!
Kelsey Lewin 30:42
Well, I think I think Pauline would have looked a little worse as a blob than than Donkey Kong does.
Garry Kitchen 30:47
Yeah. I think so. I don’t think she looks bad! You can even see the ponytail.
Kelsey Lewin 30:52
She looks great!
Frank Cifaldi 30:52
Yeah, that’s that is actually specifically before the show, we were both saying, “Yeah, Pauline looks really good!”
Garry Kitchen 31:00
Oh, that’s because the guy who did this game went to school for art. It’s my artistic flair that gives those those sprites their genius, you know?
Frank Cifaldi 31:11
[Laughter]
Kelsey Lewin 31:13
There really is an art to it, though! I mean, you’re not working with a lot of space!
Garry Kitchen 31:17
There is but it’s really bizarre! It’s very little to do with art as we know it. So the reason Donkey Kong was so hard if we can move a little in that direction, is there also there’s also a background behind all these sprites. And the background is 160 pixels wide. And the pixels are the width of the stairs in Donkey Kong. So those are wide pixels. And there’s only 160 of them on the screen. But the problem is, they didn’t have enough RAM to define 160 pixels on a line. It was too much. So they have half that RAM. So if we do our thing where we say this is one line tall, for the background, you can only set 80 pixels as on or off. And then what you get on the screen is you either get the same 80 pixels on the left is on the right, or you get 80 pixels on the left and a mirror image on the right. That’s the only thing the machine can do.
Frank Cifaldi 32:28
Which, again, is Combat right? Combat just has a mirrored image.
Garry Kitchen 32:33
That’s why all the games, and 99% of the games you look at have either a mirror image or a copy left to right.
Frank Cifaldi 32:42
…Yeah.
Garry Kitchen 32:43
So the funny story is, I had programmed it that way. And what that means is you can’t have slanted ramps, because they are not mirrored or copied. Those are unique all the way across. So I didn’t. I didn’t have slanted ramps. I had the game first level; beginning the play. And this is probably halfway through the project? And I had a… I was thinking about my next project. You know, you got to be thinking ahead when you’re an independent consultant! And the Vice President of Activation visited me because I was talking about maybe working with them next. And, um…
Kelsey Lewin 33:28
And real quick, I just want to interrupt real quick, because I think, you know, there’s… What was the reaction of Activision, you call them up and you’re like, “Hey, I can program for the Atari 2600” Like, did they even believe, you? Because no one could!
Garry Kitchen 33:39
Naw, they said… I called and I, I just picked up the phone and I called him I got the main number. I asked for whoever was in charge of development. And they bounced me around, I begged, eventually got Tom Lopez. And I said, “Hi, I’m on the East Coast, I program the Atari 2600.” And he said, “No, I don’t think you do.”
Kelsey Lewin 33:52
[Laughter]
Garry Kitchen 33:55
I said, “Well, right now I’m working on Coleco’s Donkey Kong.” And he said, “Are you available tomorrow?” [Laughter]
Frank Cifaldi 34:14
[Laughter]
Garry Kitchen 34:15
So he flew out and he came. And he came down in the basement of my little house in New Jersey, unfinished basement pipes in the ceiling and all. And we talked for a while and then I said, “I’ll show you something but I’m not allowed to show it to you because it’s still in development. But I will show it to you.” And I showed him my in progress level, first level of Donkey Kong. And he was duly impressed. I mean, it was very impressive at the time for what I was doing. But he asked, “Why aren’t the ramps slanted?” And I said, “Well, it’s a limitation of the machine.” And I explained reflected, copied… Can’t be done. And then at the end of the day when he was leaving, we shook hands and as he was walking out of my house he said, “If you worked for Activation, those ramps would be slanted.”
Frank Cifaldi 35:11
Dang…
Kelsey Lewin 35:11
Wow. So then you did it out of spite?
Garry Kitchen 35:15
Yes. [laughter]
Kelsey Lewin 35:16
[Laughter]
Frank Cifaldi 35:16
[Laughter]
Garry Kitchen 35:16
It took about a week, took about a week, but I rewrote that part of the code to slant the ramps, just to say, “Ha!”
Frank Cifaldi 35:25
Very nice! Well, I mean, is this something that is explainable to a human? How you made them slanted?
Garry Kitchen 35:32
Well, it’s all part of that same thing. So I have 76 cycles. And let’s just say for argument’s sake, it takes six cycles, eight cycles to load and store to change one object. So I’ve got to do eight cycles on Mario. And then I’ve got to do eight cycles on Mario’s color. So that’s 16. And then I’ve got to do the barrel. Now you notice the barrels are not colored. So they’re only eight again. So that is 24. But now, I have a problem, I have to do the background. But I, I… what I’m going to have to do is, halfway across the screen, after I’ve stored 3 bytes on the left side, for the background – normally would leave it alone, I’ll get a copy or a mirror. But I don’t want to copy or mirror. I want the right to be different. I have to store three more times on the line to make the right be different than the left. So now that’s another three times eight is 24. And up near the top there, there’s that hammer. And he can grab the hammer, and he can run around with it. And he can hit barrels. So up at that part of the screen, you’ve got the hammer, which is made up of a ball and a missile, you’ve got him with two stores, the barrel with one store and six stores on the background. You don’t have enough, there’s it you can’t do it in 76 cycles. That’s the problem.
Frank Cifaldi 37:14
OK.
Garry Kitchen 37:15
But I did it anyway.
Frank Cifaldi 37:16
[Laughter]
Kelsey Lewin 37:16
[Laughter]
Garry Kitchen 37:21
And I’ll tell you one thing I did, which is very clever and I don’t think I’ve ever told anybody. And I don’t think any video game guy who performs 2600 has looked at this and tried to figure out what I did, but what I did is… I took advantage of the fact that the arcade game is more vertical than it is horizontal? Like, the aspect ratio is somewhat close to what I have here. And by doing that, I didn’t have to store anything on the left bite or the right bite of the playfield because those were always zero. So I restricted the playfield center to only be in four bytes. So rather than having to store six bytes at the store four bytes that allowed me to fit it in 76 cycles.
Kelsey Lewin 38:11
So you just made a thinner screen?
Garry Kitchen 38:13
Yeah, yeah, I mean, it’s black to the left and right. Right?
Kelsey Lewin 38:16
Wow.
Garry Kitchen 38:17
And, and I stored zero once at the top, for the one on the left and the one on the right and left them there. That’s fine. So you’ve got black on either side. And I use the Center for playfield locations, for the slanted ramps. And that worked. It still isn’t that easy. There’s still an enormous amount of nonsense going on to make it happen. But, um, that worked. And it worked pretty well.
Frank Cifaldi 38:48
So, um… That’s incredible. So one of the things you note in the in the article is, you know, you had exactly 4096 bytes of ROM memory. Was that the maximum at the time or were they just cheaping out on manufacturing costs?
Garry Kitchen 39:05
Well, you could… The standard from Atari was 2000 was 2k or 4k.
Frank Cifaldi 39:10
Yeah.
Garry Kitchen 39:11
I had done Space Jockey in 2k. This was 4k. Keystone Kapers was 4k. Pressure Cooker was 4k. People didn’t usually go to 8k unless they wanted to spend more money because it was more expensive. I mean, you have double the memory. So 8k was available. But the Greenberg brothers, who owned Coleco, and stood one over my left shoulder and the other over my right shoulder while I worked. They saw no reason to spend more money on a ROM because they knew they were going to basically sell every cartridge they could manufacture unless it was a complete piece of garbage, and they knew it wasn’t going to be a complete piece of garbage because they could see what I was doing. So I don’t blame them. I probably would have made the same decision. Why eat in to my profit if I’m manufacturing-limited, and I’m not going to get any more out to retail than maybe four or 5 million in 1982, and they sold every one.
Kelsey Lewin 40:15
Right, I mean, you’re pre-game crash here, so I mean, there’s not really the idea yet of, “Oh, there can be games that are so bad that people are really mad.”
Garry Kitchen 40:24
Right! Right.
Kelsey Lewin 40:27
It’s a popular arcade game, people are probably gonna buy it no matter what just based on the title alone.
Garry Kitchen 40:34
Right. And believe me, I’ve had my share of people who are mad about this game over the years because it doesn’t have the other two levels in it. But that was the limitation of 4k. And that, you know, that was their call. And, and honest to God, even if they had said, “Do it!” I couldn’t have done it anyway, because I didn’t have time. I mean, I worked from April to – I don’t know – end of July? 90-some days? And I had no more time left to do two more levels. It’s just the reality. You know, in the game industry, there’s always this problem when you’re doing licensed properties of – I mean, probably not so much now, but definitely back in the old days – you get the license, you say, “I want it for the holiday season.” And that amount of time is random. I mean, maybe you got the license in August. Or maybe you got it in January. Hey, great! But you know, they got it around mid-year or whatever, and there was no going past holiday on shipping. So you had the time you had, you know? And there was no… that was not a time, when people would say, “Oh, gee, let’s hold it up and go for the next Christmas and make the game better.” That wasn’t gonna happen.
Frank Cifaldi 42:00
So, you know, we’re always, of course, really appreciative when people publish their their memories, like you like you did, but I’m just kind of wondering: What’s inspiring you right now to write about your 2600 development?
Garry Kitchen 42:17
Well, it started a year ago, two years ago, maybe? I was on Quora. If you know, Quora?
Frank Cifaldi 42:25
Of course, yeah.
Garry Kitchen 42:26
And somebody asked a question. They said, “What’s the best program as a programmer that you wrote by yourself?” And I saw that and laughed and said, “Ah, God, I gotta answer this one!”
Kelsey Lewin 42:46
Kinda showed it to everyone else, there…
Garry Kitchen 42:48
Eh, it was just kind of for fun, you know? I said, “Maybe somebody will find this is interesting.” And I’d never done that before. So I wrote, you know, that my most impressive program that I wrote all by myself is 2600 Donkey Kong, and I put a picture. Well, that blew up on Quora like I never imagined it would. Crazy. I got hundreds and hundreds of people commenting. So people were really interested in it. And then I forgot about it. But I have been saying for years, that when David and I go to those conferences, we get up there and we tell our stories, we have always come away saying, “You know, we got to document all those stories!” Because we have so many of them. So many stories of games or things that happened or people we met or events. And I have a list on my computer of, you know, 50 or 100 topics that I’ve said, “Boy, at sometime I’ve got to start writing these down.”
Kelsey Lewin 43:55
Oh, that’s amazing.
Garry Kitchen 43:55
So I just started to do it.
Kelsey Lewin 43:57
That’s so great. I saw that when you tweeted the story out, I saw Howard Scott Warshaw even responded to you saying that he was like, you know, thankful you were sharing your stories. And he’s like, “I’m writing a book now.” And so I think there’s starting to be – and maybe it started with all of you guys going to these retro shows in the beginning and kind of realizing that people want to hear these stories – but it’s really nice to see that there’s more, more of this starting to happen, whether it’s articles or books or whatever. Really thankful that you guys are getting the chance to document some of this stuff.
Garry Kitchen 44:35
Yeah, it’s… I think it’s important. Um, I don’t… You know, I wish people had saved source code a little better than they did…
Frank Cifaldi 44:45
Don’t get us started…
Garry Kitchen 44:48
Or running versions of games, even. I mean, I did games on online that you can’t play, and you’ll never be able to play. So it’s like, you know, at least we can write this stuff down. And honestly, between you and me, all my articles will turn into a book one day. I mean, I already know I’m gonna put them all on a book. And it may be a book I do myself or it may be a book I do with Dave because he has an equal amount of stories. But I’m probably more inclined to write than he is. Both of my parents were journalists. So I have writing in the blood so I have no problem writing. So I’m going to keep doing it. And I’m going to keep publishing them, I’m going to put them in my little archive. And when I have three or four-hundred pages of them, I’ll probably publish a book about the craziness of the game industry.
Frank Cifaldi 45:44
And we will add it immediately to our library at the Video Game History Foundation.
Garry Kitchen 45:49
At least two copies!
Frank Cifaldi 45:53
Um, so why do you think… I don’t know, I don’t know if you share this opinion. But I think people are particularly fascinated with this system. You see things like, you know, Ed Fries retiring from Microsoft and writing a 2600 game? You see… actually Tim Schafer, from Double Fine? He’s kind of toying around at night with writing some 2600 software. Like what… what is it about this system that draws people?
Garry Kitchen 46:25
Well, I think for the developer, it’s almost like you have to prove you can do it. If you haven’t done it, and you’ve gone off and done amazing things like Tim Schafer has, he feels like it’s the last notch on his holster that he has to do. He’s, like, gotta they did a 2600 game. Because it was such a rite of passage to be able to do one that I think that’s part of it. But I think it’s also that people really… I mean, right, or not accurate or not, people really consider it the birth of the industry I think, in a lot of ways. Even though there were other machines before it.
Frank Cifaldi 47:13
Yeah, I think I call it the birth of maybe the modern industry, right? It sort of set the stage for how a console is, right? Whether it wanted to or not, introduced the idea of a third-party developer, right? It’s sort of, you know, set the tone for how we market games and stuff like that. So I think I agree with you.
Kelsey Lewin 47:38
And licenses and that sort of thing.
Garry Kitchen 47:40
Yeah, that’s a good way of saying it. It defined the business model, which is still around today. Where prior to that, there was no third-party business model. Or there were not cartridges, you know, there were a lot of different things. But yes, that was the first one where it was, “There’s a hardware business, there’s a software business. There are third party developers.” Dave and I laugh about this all time. I was sitting in New Jersey. When I went into a store and I saw Activision skiing, and the first thing I said to myself is, “God, that’s gotta suck! How could anybody who’s not Atari do a game for an Atari machine?” I mean, he just.. it was heresy! I mean, you buy an Atari machine, you get Atari Games! And to see a third party was like, “Well, that can’t be any good.” But I bought it anyway, and brought it home and said, “Oh, my God, these guys are knockin’ it out of the ballpark!” They were so much better. But yeah, that that really did define the industry. And the industry has grown directly out of that to what it is today, in a lot of ways.
Frank Cifaldi 48:54
So, Garry, we were talking before the show about how we’ve probably bumped into each other over the last couple decades, going to Classic Gaming Expo, things like that. So you’ve been involved in those shows. I believe you’re involved in some way with the National Videogame Museum, as well. is I mean, I’m starting to think that maybe the preservation of the history of this industry is important to you.
Garry Kitchen 49:20
Oh, yeah, no – it definitely is. Definitely is. I got a kick out of those guys. John Hardie, especially when they would come to us, I don’t know, 15-20 years ago?
Frank Cifaldi 49:34
And there weren’t all that many nerds for this stuff so it was novel for you?
Garry Kitchen 49:39
Yes! At E3 or at CES before that, they would come up to us and ask us about the games and talk about that they were in Atari’s parking lot climbing in the dumpster and they found source code. And over the years, we would just talk to them every year. And then I found out what they had and it amazed me. They had so much stuff! And stuff that I never had! I mean, things that were just incredible. And then we really started to support them and say, “Look, you’re right, what you’re doing is important.” And yeah, I’m on the board of advisors now. Talk to them all the time. I keep telling them, true or not, who knows? Maybe I’ll retire one day and be the old guy who walks around the museum in Frisco, Texas, showing people all the exhibits, you know? But yeah, no… I love those guys. I think the museum is great. And I think they’re doing great work.
Kelsey Lewin 50:53
So is that the first time that you started to think about kind of your legacy? And how far the industry had come? Was when you started getting approached by, you know, the Classic Gaming Expo people? Or had you been thinking about it before then?
Garry Kitchen 51:10
No, definitely wasn’t thinking about it before then. It’s hard when you’re active and crazy busy to think about anything having to do with legacy. Right? You just don’t even think about it. I’m just doing a job. That’s all I’m doing. No, no biggie. But you know, I got further away from the industry, because in the mid ’90s, Dave and I decided to switch over to the Internet. So rather than staying on console, we started doing games online. Because it was a different business model and we thought it would be interesting to pursue that. And we did that very successfully for a number of years and really pioneered this idea of advertising sponsored games. And then around 2009, we did iPhone for a few years, and we’re very successful at that. But, you know, then you start thinking back to, “what did we do at the beginning of the industry?” Because we were on the peripheral of the industry at that point; we weren’t deep in. So that probably made me think that it was interesting to think about what… what it was like when it was just one or two people doing a game and not, you know, 1500?
Frank Cifaldi 52:40
So, you know, you mentioned wishing that more source code have been held on to? That’s actually at the Foundation right now, that’s our main project, our main initiative right now. Is sort of an awareness campaign about the volatility of source code and what can be learned and done with any source code that survives. You know, we have our perspective on that. But why is it important to you that source code gets preserved? What do you hope to see out of source code still being around?
Garry Kitchen 53:21
Well, to me, it’s equivalent to the original films for some of the old movies. You know, they lost a lot of those, they lost them in fires, or they were just misplaced. And to think that you don’t have a print of, you know, the Wizard of Oz, or Citizen Kane or whatever, because it was never preserved. It limits dramatically what you can do with it. Now, it’s not so much Donkey Kong. If you didn’t have the source for this, at least you always have the binary, but you don’t necessarily have a platform to play it on. So, I mean, you want this art to live forever, the way songs live forever. I mean, I listen to music that’s 50 years old, which sounds ridiculous, but that’s only that’s the 1960s, 1970s. And yet, there are technical barriers to play a game from the ’60s or ’70s. And I think to stop all of those technical barriers, you’ve got to have all the assets that went into making the art, where you don’t need that on music, but it would be great to have the original tapes. And you do need it on film, because you need the original negatives, but you know… it’s different free each art. But it’s gonna have little value 50 years from now if you can’t recreate it.
Frank Cifaldi 54:59
Yeah, and I mean, you mentioned film and art. That when when things get released, remastered or a restoration, I mean… they they need that source material! They can’t just… I don’t know, like, I think I think the equivalent would be if – you mentioned the Wizard of Oz – if the only print we had of the Wizard of Oz was a VHS tape, right? That’s kind of the situation we’re in with these old video games.
Garry Kitchen 55:21
Yes, it would be. It would be a real problem.
Kelsey Lewin 55:25
And you should, you know… You would end up with sort of this game of telephone that would totally garble it 100 years from now if you’re pulling from a VHS tape, and then later from a blu-ray, and then later from whatever the next format is. I mean, you end up with something that’s just completely not at all like the original. And we’re already at risk of that with video games, because a lot of what we have is just, you know, the Atari cartridges themselves or equivalent.
Garry Kitchen 55:50
Yeah. And that’s sad. I mean, it’s amazing to me that… it may seem long ago to some people, it doesn’t seem long ago to me that we were doing this stuff. And yet, in a lot of cases, it’s too late. We’re too late. I don’t have the source code for Keystone Kapers. You know, and that’s terrible. And it really wasn’t that long ago in the grand scope of things. So yeah, I think anybody who doesn’t preserve source code now really just doesn’t get it.
Frank Cifaldi 56:29
But would your defense be naivety back then?
Garry Kitchen 56:36
Well, yeah, back then no one was talking about it. No one was thinking about it. And the biggest problem is that there’s so much jumping around companies in the game industry. So you work at company A, you’re there for three years, you leave, go to company B, Company A had the copyright, you can’t take the code with you. So what there almost needs to be, is there needs to be a third party repository which is independent and guarantees confidentiality, and gets every game publisher to agree that when a project completes, they will deposit the source code into a third party repository never to be touched at unless somebody has rights to touch it. But it’ll be kept confidential, but it’ll be preserved. Otherwise, programmers can’t take the work with them when they move around.
Frank Cifaldi 57:28
Speaking our language, man.
Kelsey Lewin 57:30
I swear we didn’t coach him on this!
Frank Cifaldi 57:35
Yeah, and it’s, you know, it’s not a crazy idea, what you just said. We have that for audio and video. The Library of Congress is like a free repository, you know, that’s federally funded, that a lot of the master reels for film reside. And when the commercial industry – even Walt Disney, I think – when they’re when they’re putting out a blu-ray or something for I don’t know, Sleeping Beauty, and they need to remaster that film, that master material exists in this archive. And yeah, we’re all hoping here for exactly what you’re describing that we figure out how to do that for source code. Because I just don’t trust this stuff to survive within the commercial industry.
Kelsey Lewin 58:18
And there’s a lot more secrecy, I feel like, in the in the video game industry, too, that we have to contend with that maybe isn’t there so much for some of these other industries, where even if you do have something like a third party repository. To get everyone to trust you is a pretty big undertaking.
Garry Kitchen 58:36
Right. And it’s even worse than that. Because you don’t know how hard it is to make sure you have THE – and I underline the – source code, even though you think, “Ah, can’t be that hard!” Dave and I did a project in the mid 1990s for a company in Japan that I had a relationship with. They wanted us to take a game on the PlayStation. What was it, take it maybe from PC to PlayStation? We said, “OK, you’re gonna give us the source code, right?” “Oh, yeah.” “All the source code, right?” “Oh, yeah.” And it’s a big, big company in Japan. So they sent us all the source code, and all the supporting files and all the tools – you need the tools that make part of it. All this stuff. And we started working on it and said, “This isn’t the right source code…” And they said, “No, no, it definitely is.” And we said no. Because there were things in the game that were different. And they swore it was the right source code. And it wasn’t. And this happens time and time and time again. You think you have the right source code, but you don’t. The only way you know you have the right source code is if you take the entire hard drive of the machine that built the game. Then you know you have the right source code. Otherwise, when you take all the files off, you leave something behind. And and people don’t… they haven’t grasped that that’s possible because they’re not that stupid. But it happens every time. Every time.
Frank Cifaldi 1:00:21
It does. I can vouch for that, from my brief development career. I can point to commercial published examples of that, even. There was that Silent Hill compilation from again, a Japanese publisher which would be Konami, where it was pretty obvious looking at the game that the people who ported it to the – I think it was the 360 – Xbox 360 just had source code that wasn’t quite final? Or just a little bit off? And to your point, it’s like, they might have grabbed it from someone’s computer and maybe they didn’t need those particular pieces to do their job. So it wasn’t a complete repository.
Garry Kitchen 1:01:02
Right. And it’s really, if you want to be completely 100% on mission, it’s not just the source. It’s the source. It’s all the tools. Because game developers always have dozens of tools that they write specifically to do a game. I have this tool here that converts the map into a data table. Well, we need that tool, because 50 years from now, we may want to do that. And it’s the original art files, and the original audio files, and the Photoshop files, and the 3d Studio Max files, and you never get that stuff. But if you don’t get that stuff, you don’t have all the source. You need it all. And it’s impossible to get it, or very hard.
Frank Cifaldi 1:01:53
Yeah, I mean, it’s impossible even inside of a studio to champion that. Like the best examples we know of: I don’t know if you’re aware, Garry, that that Electronic Arts has an archive team. And that that is their entire role. But I just I don’t suspect that many other companies have people who are dedicated to that sort of thing. And it’s a little terrifying. Yeah, no, it definitely, it definitely is. I mean, I’ll tell you what’s funny. What I do now, in addition to some game consulting, as I do a lot of work as an expert witness in the industry, meaning that I’m hired by attorneys during litigation to do analysis of things, and then to write reports explaining what I found, so that the court understands from an expert what’s really going on. And in that role, I’ve had to do everything we’ve talked about. I’ve been handed a pile of binary data and said, “This is a Super NES game. We don’t have the source code for it, could you figure out how it works?” You know, or: “This is a source repository of six gigabytes of data and we need you to find this.” And you know, so I am always doing this forensic analysis of things. So I know how hard it is to know that you’re actually getting what you think you’re getting, because a lot of times you’re not. Well, Garry, it’s been great. Thank you so much for joining us on the Video Game History Hour. Do you have anything you want to plug or talk about before we go?
Garry Kitchen 1:03:46
No, not really. I mean, I’m on social media. And you guys have all that. No, other than that, just look for more articles. I’ll definitely be… I have a couple of them I’m writing right now. One involving, I already published a small one about some work we did in the toy industry. And I have a more robust one coming out about the first entertainment product I ever did, which was Wildfire Pinball for Parker Brothers, which was a handheld electronic toy. And I’m doing kind of a deep dive on that; how it worked and the challenges we had getting it done. But then I’ll go back and I’m going to write that VCS one one of these days. Though, I shudder a little when I think about that, but I will be doing that one! But yeah, I mean, I’m enjoying documenting, I’m trying to get as much down as we can because, as you say it has a… you know, if you don’t put it down somewhere, eventually it’s gonna go away.
Kelsey Lewin 1:05:00
Yeah.
Frank Cifaldi 1:05:01
Definitely. Well, I’ll look forward to those articles and thanks again!
Garry Kitchen 1:05:06
Thank you so much for your time, guys. Appreciate it.
Kelsey Lewin 1:05:09
Thanks a bunch.
Garry Kitchen 1:05:10
All right, bye bye.
Thanks for listening to the Video Game History Hour brought to you by the Video Game History Foundation. If you have questions or comments for the show, you can find us on Twitter @gamehistoryhour or email us at podcast@gamehistory.org. Did you know that Video Game History Foundation is a 501c3 nonprofit and that all of your contributions are tax deductible? You can support this podcast and all of our other work on Patreon or at gamehistory.org/donate. This episode of the Video Game History Hour was produced by Robin Kunimune and edited by Michael Carrell. Thanks so much for listening and we’ll see you next time.