The story behind porting Double Dragon from the arcade to the Genesis.
Games

The Story Behind the Tireless Slog of Porting 'Double Dragon' to Genesis

Back then, game companies basically dumped an arcade machine in your lap and said "good luck."

The following excerpt comes from Arcade Perfect: How Pac-Man, Mortal Kombat, and Other Coin-Op Classics Invaded the Living Room by David L. Craddock, available in paperback and Kindle formats. Find out more at arcadeperfectbook.com , and on Twitter @ArcPerfectBook .

Pete Andrew had fallen down a rabbit hole. Like Alice, he had landed in a place that seemed too small for him. Once upon a time, it had fit just right. Back then, the walls had stretched up to ceilings lost in shadows. Corridors as wide as twelve-lane superhighways carried tidal waves of students lugging books and backpacks.

Advertisement

Every time Andrew returned to his old high school, the ceilings seemed lower, like a deathtrap that would eventually catch him. Once spacious corridors had narrowed to claustrophobic chokepoints. He tried to think more about that, about the wonder of it, and less about the reason he was here.

The halls were quiet as he took a deep breath and peeked his head into his old computer lab.

It was empty. The computers, off-white towers likely running Pentium processors, hummed quietly. Ghostly images from screensavers painted the walls. Andrew’s gaze slid to the desk where his former teacher had sat. It figured that Andrew had come all this way to make his grand announcement, to tell the man he had been wrong, only to find him gone.

For a long time he just stood there, soaking in the room’s details, and remembering.

1568390111653-Arcade-perfect_frontCover

Pete Andrew was a bright student. Maybe that’s why his high school’s singular computer science course called to him. He was ahead of the curve in math, and he picked up on every lesson in BASIC, the language he was studying in a classroom full of BBC Micro PCs, the dominant platform in the United Kingdom, within minutes. The class was split between two rooms: one dedicated to the practical application of code, and another where the teacher lectured. After handing in assignments, he would wander into the other classroom. He was such a quick learner that the teacher sometimes called on him to lead a discussion in one room while the teacher worked with students in the other.

Advertisement

The first bit of trouble came when his teacher gave him a C on a mid-term. It was preposterous: Andrew’s solution worked. The teacher had marked off due to a difference in opinion of coding styles. But, whatever. Andrew could make up the point difference. Then the second bit of trouble occurred.

One afternoon in the theoretical classroom, his teacher paced back and forth as he lectured. “Computers are a big, new thing,” he said, waving one hand to take in the machines. “What are you hoping to get out of this? Where do you think these skills will take you?” He paused and waited for someone to answer.

Andrew spoke up. “I want to make video games.”

Silence greeted his answer. Andrew cleared his throat and readied himself to continue. To explain that in fact, he had already taken the first steps on his chosen path. He and a buddy planned to form a two-man team: He, Andrew, would be the artist, and his friend would write code.

Then his teacher laughed. “That’s not a real industry. That’s not a way anybody could make a real living.”

Andrew sat frozen. All around him, other students chuckled or barked laughter.

“Now, it wasn't a bullying situation, because these were good kids, and I had a love-hate relationship with that teacher,” he said in reflection. “But still, it was like, dude: That's not cool.”

Andrew knew his teacher was wrong. The United Kingdom’s retail scene had exploded with computer and home video games overnight. There was Mastertronic’s budget line of titles starting at £1.99 when £5.99 was the going price. Developers like Ocean Software charged as much as ten pounds, but the games were worth it. Of more immediate concern was the fact that the availability of these games proved conclusively to Pete Andrew that someone out there was making them, and getting paid for their efforts.

Advertisement

He almost missed his chance to join their ranks. His mom worked at a factory, and his dad made sheet metal. They had money for house payments, food, and clothes, but not for frivolities like computers. Or at least that’s what Andrew thought. “To buy me my first computer was a big stretch for them financially. I never would have entered this industry without that lift from them. I had convinced them, ‘Get me a computer and I'll do all these things for you!’ I had no idea, but they saw I was passionate about it.”

To his frustration, Andrew didn’t pursue a career in games after graduating his high school. He didn’t know where to start. And, secretly, he feared his teacher had been right.

Andrew went to the Royal Air Force to join up, hoping it would give him some direction. Recruiters took one look at his resume and told him to go get more education first. He enrolled in university, but was unmotivated. Three months later, he quit. After another three months looking for work, Andrew was running out of ideas. Entering a job center, he approached the front desk.

“What are you looking for?” the receptionist asked.

“Anything, really,” he admitted. “Something that has prospects. I know I’ve got no background in anything just yet.”

She considered. “What are your interests?”

“Well,” he said slowly, buying himself time to think. “I rode in on my bike. I like doing that.” He continued in a rush, “I also like video games, but I know there’s no jobs there.”

Advertisement

At first, the receptionist said nothing. Andrew’s heart sank. His teacher had been right after all. Then she brightened. “Wait a minute,” she said, digging through papers. “There might be.”

She handed him a sheet for a program called Youth Training Scheme. As Andrew read it over, his mood brightened.

The United Kingdom’s Young Training Scheme originated in 1980, when industrialist Norman Tebbit laid out plans to train the unemployed during their first year after graduating high school. Over time, the program gained a reputation for plucking young people away from potential careers and into unpaid positions where they stocked shelves. This was false. The goal of YTS was to train and educate people across a range of fields and industries. Enrollees would have to meet certain standards set by employers who agreed to take them on, effectively combining education with hands-on experience in a real job within a real industry.

"'Computers are a big, new thing,' his teacher said, waving one hand to take in the machines. 'What are you hoping to get out of this? Where do you think these skills will take you?' He paused and waited for someone to answer. Andrew spoke up. 'I want to make video games.'"

“There’s a company not far out of town that makes video games,” the receptionist said. “They’re in the Youth Training Scheme program. Are you interested?”

This, Pete Andrew thought, is too good to be true.

Advertisement

Days later, he was in a small room with Doug Anderson, a programmer at M.C. Lothlorien, also known as Icon Design. The studio was known for war games, and had been founded by three school chums who decided to start a company together after one man’s wife bought him a ZX-81 computer as a Christmas gift. Now Andrew was here, at a game studio, being interviewed by a guy who made video games for a living.

The dream job was real, and it was his to lose.

So far, Anderson had asked Andrew three questions. Actually, they were more like chit-chat about computers and games. Nevertheless, Andrew believed—desperately hoped—he had impressed the other man so far. Then came a real question: What if you had four numbers, and you used mathematical operations to add them together?

Andrew’s breath caught. Could this really be as simple as mental arithmetic? He gave his answer, and Anderson broke into a smile. “Okay. You’re in.” Anderson shook his hand and got up to leave.

“Wait,” Andrew said. “I thought you were going to ask me more questions.”

“I just did.”

“Right,” Andrew said, “but I thought that was just talking. I thought we’d be getting to the really tricky questions.”

Anderson shrugged. “Nope. You’re in.”

Everything happened so fast. Andrew went from unemployed to earning £27.50 a week, the equivalent of $34.89 US dollars in 2019. The pay was low, like most jobs acquired through the Youth Training Scheme, but Andrew didn’t care. He was making games. Sort of.

Advertisement

He started out making coffee runs for programmers, but seized every opportunity to pick the brain of the engineer who sat next to him. Eventually they gave him a computer and told him to learn assembly language. “At this point, I'd never done assembly. I was a Commodore 64 programmer, but I'd only ever done BBC BASIC. In the real world, you couldn't make a game in anything other than assembly. So I was learning 6502 assembly on the spot.”

When he made a breakthrough, Andrew would politely ask the engineer to look at what he’d written and critique it. The man’s eyes would scan left to right like the platen in a typewriter. Then he’d take a swig of coffee and say, “Well, that’s one way of doing it,” before walking Andrew line by line through ways he could tighten things up.

Just his confidence was at its peak, Icon Design’s finances were dwindling. Projects fell through, and paydays came and went. The co-founders had to let people go until only three full-time employees remained: Doug Anderson, another engineer called John Buckley, and Andrew. Buckley had been the engineer mentoring Andrew in his spare time. The three friends resolved to stick out Icon Design, until the situation grew untenable. “They were hoping to have this one game we were working on get funding, but it fell through. That's when I had to move on,” said Andrew.

Andrew didn’t need long to get back on his feet. The experience he’d gained at Icon Design helped him land a job at Software Creations, where his first task was a port of Solar Jetman from the 8-bit NES console to Atari’s ST computer. It gave Andrew the opportunity to learn how to write assembly code for the 68000 processor, which he found difficult to wrangle. “It was a game where you flew around caves, and you could rotate your ship, and drop a rope to pick something up. The rope behaved with physics, and I could not get the math right. I was writing everything in 68000 assembly. We had something acceptable working, but it had bothered me.”

Advertisement

While he worked on the Atari ST port, John Buckley sat nearby converting the game to Commodore 64. The ST version was cancelled prior to release, and Andrew tried his best to salvage something from the situation. While he had been unhappy with his port, he had developed an efficient horizontal-scrolling engine, quite a feat on the Atari ST. He’d done it by pre-rotating graphics in every position for quicker loading and reducing the number of colors as well as the play area.

There was also the trifling inconvenience of his appendix bursting during production.

All in all, he thought glumly, his first gig at Software Creations had been a bust, and had done little for his self-confidence.

“Then Double Dragon came along,” he said.

1568390076204-DDragonGen_PeteAndrew

At first blush, the job seemed relatively simple. Double Dragon was an arcade game from 1987. It was 1992, and the Genesis was a sophisticated piece of hardware. Andrew dissected it, seeking to answer the usual questions he asked himself when learning a new platform: How many sprites on-screen at once? How does scrolling work? How many background layers?

“At first it felt overwhelming, but when I look back at how constrained the information set was, it was a lot easier to wrap your head around it. Plus, that's where your head lived. When you had new hardware come along, like the Super Nintendo versus the NES, the things people cared about were, ‘Look at the number of colors it can do,’ and ‘It's got these different graphics modes, and here's how they work,’ and ‘How do the character blocks work?’”

Advertisement

He learned at a breakneck pace. Double Dragon had to be finished in three months, four at the most. “That was the typical timeline back then: one programmer, one artist, and maybe an audio person. Just, go-go-go-go. I was a kid and loving every minute of it.”

Andrew was self-aware enough to know he was still green. Everything he knew about the Genesis was relative to the Atari ST, the most advanced platform he’d developed on prior to being given the beat-em-up. As his familiarity with the hardware increased, so did his confidence. “Just having hardware that allowed me to do certain things like scroll with sprites, and what we could do with the way the screen was displayed, which was called character mapping—those were huge. It felt like, ‘Okay, here's a whole bunch of stuff I don't have to worry about to do the task I've been given.’”

There was no source code, but Software Creations did order in an arcade unit. Andrew played and played and played, absorbing what he saw on the screen and thinking how to best replicate it in 68000 assembly. “On the Sega Genesis, there was a lot more storage capacity. At this point, I'm working out, how do I get the materials I need to make the game from the arcade system, and what is going to be the structure of the game with regard to how I put this content [onto the Genesis]? The two pieces of content were, what is the gameplay? That's the programming, how things work, how the fights work. Then, how will I get the art into the game? I needed background art; the sprites needed to be animated.”

Advertisement

Every screen of Double Dragon consisted of a pseudo-3D effect, where players were free to move vertically, horizontally, and diagonally along wide lanes. Pits, ladders, moving platforms, and other objects could be placed anywhere, such as against buildings in the background, and the code needed to know what to do when players stepped onto any location: conveyor belts should move them in a set direction, pits should cause them to fall and lose a life, and so on. Once a few screens were in place, Andrew created a data set that said, in code, what type of terrain a sprite was on, and what should happen to the sprite based on that terrain.

Andrew cheated by creating two data sets. One gave every character a height within the pseudo-3D environment. The other mapped the total height of the game world as well as where players should be located based on their height relative to the height of the space where they stood. Even though the on-screen perspective was skewed, Andrew’s code treated it like a 2D map displayed from overhead. The further up the screen an object was located, such as a ladder or conveyor belt, the further he had to move coordinates to determine which tile in the height map players overlapped with.

"He learned at a breakneck pace. Double Dragon had to be finished in three months, four at the most. 'That was the typical timeline back then: one programmer, one artist, and maybe an audio person. Just, go-go-go-go. I was a kid and loving every minute of it.'

Advertisement

The operation was complicated by Double Dragon’s jumping ability. “When you want to represent 3D, there's always a problem of, when things are in the air, they can be in the air anywhere,” Andrew explained. “If I'm close to the edge of the screen, and I jump, I could actually be on the ground two or three tiles back from a visual perspective, the way the game renders in 2D.”

Andrew tracked where players were in his height map relative to the terrain that should be beneath them, such as a platform or a pit. He also added data such as ladders to the height map, which characters would grab on to if they stood on its spot within the map coordinates. “That was everything I needed to do to allow the artist to leverage what I was giving him, and to allow the art to work in the game.”

More than graphics, Andrew struggled with artificial intelligence and collision detection. “It was spotty,” he admitted of collision detection. “This was the first [brawler] game I'd ever done, and the first game with any kind of pseudo-3D. There were a couple of problems in trying to match the arcade game that made sense.”

Even with his height map, Double Dragon’s pseudo-3D, skewed perspective threw off calculations during combat. When an enemy punched, for instance, Andrew had to decide how deep into a height map location the punch was allowed to go. He mishandled some calculations, resulting in occasions where players or enemies swung and missed despite being close enough for the hit to connect. “The characters to need to line up on the exact pixel line you were on. There needed to be some depth, there, and I didn't do anything clever with that depth. It would effectively been a cube around his fist; I should have made it spherical.”

Advertisement

A spherical hit cube, as opposed to hitbox, would have probed more spots on the height map than a square. As it was, Andrew’s hitbox activated when the animation started and switched off afterwards. “It wouldn't have been left on until the end of the animation, because of course if you just leave your fist hanging out, people shouldn't walk into it and get hurt,” he said. “I just wasn't that good at it back then. I wish I could have done better. I know it's not great, but it was what I could do at the time.”

State management, what players or enemies can do when they were grappling versus not touching, was another challenge. Andrew had trouble adapting his code to effectively change what players could do depending on whether their sprites overlapped with an enemy.

As deadlines loomed, he focused on hitting milestones. Synchronized movement, stemming from AI, seemed determined to keep him from completing the project. Double Dragon allowed enemies to converge on players from all directions, hence the importance of players being able to strike at enemies in front of and behind them. The arcade game was programmed to coordinate enemy movement such that characters closed in on players at different rates. Unfortunately, Andrew left out character-on-character collision, so enemies piled onto each other, sprites overlapping like a folded paper doll.

“They would freely walk through each other,” Andrew remembered. “What I'd say was, if the spot next to you or behind you isn't available, there should be other desirable spots to go to. When there are lots of enemies around you, you'll see them moving in sync, almost like some sort of dance system we'd set up. How they would come at you and fight you was very limited. It was, ‘They’re going to try and get into that position, and then they'll throw a punch at you.’ There was no coordinated AI. I couldn't tell you how much that existed in the arcade game, because the time I had to investigate that was limited.”

Advertisement

Double Dragon ended well—or as well as could be expected, depending on each developer’s perspective. Andrew’s feelings on the Genesis port had been mixed at first. He was aware of its shortcomings and resisted the urge to feel personally attacked when critics carved off their pound of flesh. Even so, he had been pleased that he’d finished the game at all. It had been his toughest and most ambitious project to date, and the fact that it existed, that characters on the screen moved and fought and lived and died according to code he had written, was a small miracle.

The project had boiled down to moments: the moment he figured out where artwork had been on the EPROMs; the moment a level had taken shape before his eyes; the moment he had touched a controller and made the player-characters move.

“You spend time saying, ‘I want this thing to happen,’” Andrew remembered. “You're creating something in this weird, nebulous way where once you've created it, it acts, and it behaves. There's something really thrilling about that. It doesn't matter how simple the thing you're doing is. It still gives you that rush of, ‘I made it work.’ That moment is just thrilling. I guess that's it. The moment you can take something from your head, this nebulous, ethereal thing that doesn't exist outside of your imagination, and turn it into something tangible and tactile—there's something magical about that. That's true of every creative endeavor: art, music, writing, video games—it's a common motivator.”

1568390317522-DDarcgen

Pete Andrew broke his reverie. He trailed back down the corridor toward the exit.

Although no one would remember his adaptation of Double Dragon as arcade perfect, Software Creation’s higher-ups had thought it more than good enough. When management announced they needed someone to go to the United States and work on an adaptation of Disney’s Beauty & the Beast for the Genesis, Andrew made his case for why he was the right programmer. They agreed.

“They never would have sent me if I hadn't had some success and built up some trust. I never would have come to America, and I never would have gone down this path.”

Beginning there, every job Andrew accepted represented one rung up a career ladder. He accepted a lead programmer position at Electronic Arts’ Seattle office, went from there to Volition and then to THQ where he was technical director for two years, then to EA in Canada as technical director, all the way to D3 Publisher of America, where he was promoted from VP of product development, to VP of publishing, to his current position as senior VP of product development across the entire studio.

Andrew took one final look around, then pulled out of the lot.

“I really wanted to say to him, ‘Look what I did,’” he reflected of his teacher. “The whole thing is, what he was really saying was, ‘I have no idea how that happens. I have never witnessed anybody doing it. It's not in my realm of experience. Therefore, it doesn't happen.’ Well, the world's bigger than your realm of experience, and the things you have touched.”

Arcade Perfect: How Pac-Man, Mortal Kombat, and Other Coin-Op Classics Invaded the Living Room by David L. Craddock is available in paperback and Kindle formats. Find out more at arcadeperfectbook.com , and on Twitter @ArcPerfectBook .