I Developed the PS1 Backwards Compatibility Emulator for Sony Computer Entertainment

By Tetsuya Iida

It was 1996 when I first joined Sony Computer Entertainment as part of the second wave of newly graduated hires at the time. Back then, I think SCE’s research and development team was made up of all of around maybe 50 people, with Ken Kutaragi standing at the helm while guys like me were at the very bottom of the ladder. If I remember correctly, I was hired just after it had been announced that Square entered the ranks of Sony’s third party developers. Around the time that Final Fantasy VII was coming out, I had a chance to watch the cutscenes for it and, like a lot of people, vividly recall the shock at seeing Aerith meet her untimely demise so dramatically…

I believe my first job after joining SCE was to program a video converter of sorts that would take a movie file and apply filters to it. That also happened to be the first program I ever wrote professionally. The thing is, when I entered the team, I was probably the least useful member out of everyone there. I’m not exaggerating when I say that, either. I had no real electrical engineering skills to speak of whatsoever and I didn’t even know how to boot up Windows 3.1, let alone how to write any programs. Even now, I can’t help but wonder what people at Sony saw in me when they decided to hire me.

Luckily, I got the chance to learn how to program computers thanks to a training program that the company ran. The material was easy for me to grasp and I came away from that training feeling like I could program just about anything. After I was done with that training, I did a lot of odds and ends. I was put in charge of everything from inspecting CD emulators to model data converters, libc, and more. It was in the midst of that work, around 1998 — at least, I think it was around then — that all of us in that division were briefed on the next generation PlayStation hardware.

After that point, the research and development group was split into two teams. One team obviously continued to focus on the then-current PlayStation hardware, while the other one set their sights on the next generation. I knew that I, for one, as someone who always likes experiencing new things, wanted to work in the latter team. I think I interviewed to join them because I recall later being specifically assigned to it, something that really excited me.

Once I was brought onto the PlayStation 2 team, I was given the task of making PS1 games play on the new system. Back then, it was normal for your old games to not be able to run on newer consoles, but SCE wanted to buck that trend, which I thought was forward-thinking of them. Given how I had only been with the company for a few years at that point, too, I was really pleased that I was allowed to work on something so important.

When this decision to make the PS2 backwards compatible with PS1 games had been made, the plan was already for the PS2 to reuse the main processor on the PS1 as an input/output processor for the new hardware. The catch, however, was that none of the other hardware from the PS1 was, at that point, going to be included, meaning that the rest of it would have to be emulated with software. Having been involved with the software engineering side of things up until that point, it was up to me to write the emulator for the PS1’s SPU, or its sound hardware.

The PS2’s sound chip is structured into two parts: the core and the digital signal processor. A senior member of the team who worked specifically in sound engineering tackled the emulation work on the DSP side, while I focused my attention on the core. To that end, we took up shop in a room set up for us at a subcontractor and secluded ourselves as we got to work writing the necessary programming. There were no windows inside that room and I remember regularly arguing with the other engineer while we worked. It wasn’t all bad, though, as we became really close friends as a result of that time together.

I don’t remember quite how long we’d been working, but one day, everything was upended unceremoniously. As it turned out, the PS1’s sound chip was going to be included as part of the PS2’s internals after all, meaning that all of our work was thrown out of the window.

The SPU emulator that we had been writing was rendered useless, leaving our roles up in the air since the adoption of the PS1’s sound chip didn’t come at the expense of the PS2’s own new sound processor. We speculated about what would come next, like, say, potentially writing test vectors for that new sound processor. My next assignment, however, came as a huge surprise.

Specifically, I was put in charge of emulating the PS1’s graphics processor, a request that utterly baffled me. Someone else was already supposed to be taking care of that and when I asked what was going on, I was told that they were quitting the company and that it was on me to pick up where they left off, no ifs, ands, or buts. Suffice it to say, after doing sound work up until that point, switching gears to the graphics side of things was quite the shift. But that didn’t ultimately matter, as I wasn’t given much of a say one way or the other. Like it or not, I had to accept the order, even if the whole ordeal was nothing short of confusing.

That’s not to say that I thought it was going to be an impossible hill to climb, however. In my mind, I view emulators as a sort of converter in and of themselves, ones that primarily take orders designed for old processors and translate them into ones that the new target processor can understand and execute. In that sense, even if sound and graphics hardware have their fair share of differences, in the end, they’re both still fundamentally sending commands. All an emulator is doing is changing the shape and flow of those commands. So long as an emulator is fully tested, it should all work out in the end, even if that’s obviously the really tough part in practice.

By the time that I inherited the GPU emulation work, the previous person in charge had thankfully already laid down a basic framework, so I didn’t have to start completely from scratch. My first order of business was to therefore get up to speed on the GPU specifications for both the PS1 and PS2. After that, I set about implementing missing functions as I initially tried to focus on reprogramming the PS1’s GPU commands.

The first PS1 game that booted up in the PS2’s emulator was Ridge Racer. As a launch title for the PS1, it felt pretty profound that out of all the games in the system’s library to be chosen as the very first target to get up and running, it was Ridge Racer that was chosen for that honor. I pondered the significance of it being a first of sorts once again for the PS2 as I turned the device on.

That being said, the initial results were hardly perfect, to put it very, very kindly. The race queen who appears at the start of every race, for instance, was rendered as a mosaic rather than a proper sprite. Plus, when you’d complete a lap, the screen turned pink. Still, I was just pleased to see the game running at all. Even if the only thing that was actually being emulated was the GPU, that’s when I knew it was going to be possible to achieve PS1 backwards compatibility on the PS2 with that level of software emulation.

Early in the morning on March 2, 1999, I was standing behind the stage curtains at the Tokyo International Forum, where the PlayStation 2 was going to be officially unveiled to the world later that day at the PlayStation Meeting 1999. My role was to perform a live demonstration of the console’s backwards compatibility with the PS1 once the functionality was announced during the presentation.

I had been on standby since the night before to prepare for the event. Several months had passed since Ridge Racer first booted up and progress on the GPU emulator had come a long way. A number of PS1 games were now able to run on it, with Crash Bandicoot: Warped being the best of the bunch. For that reason, it was chosen as the game to show off the PS2’s backwards compatibility. There was only one problem: sometimes it froze in emulation.

It goes without saying that there’d be big trouble if the game locked in the middle of the demo in front of such a large audience. Unfortunately, I hadn’t nailed down what was causing these freezes to happen. All I could figure out was that as long as Crash kept moving, the game remained stable for whatever reason. Knowing that, I stayed awake all night, endlessly playing the game on development PS2 hardware. Luckily, I wasn’t alone in this endeavor, as I had one other person on hand to help play through the game with me. The gameplay feed in our monitor was also set up such that it could be shown off on the big screen on stage during the conference with the flick of a switch. As you might expect, I screwed around with that switch and had a fun time with it. As for why we simply couldn’t start playing the morning of the announcement, that was because there was a chance the emulator itself wouldn’t load and there wouldn’t be enough time to fix it right then and there. As a result, as surprising as it might sound, it was therefore logistically safer to simply keep the system running all night once it had booted up.

Thankfully, we made it through that night without incident. The system stayed operational as the big show was approaching that day. It can’t be understated how important of an event it was, either. Sony CEO Nobuyuki Idei himself was in attendance to offer his support. Tech demos were rolled out that showed off the power of the PS2’s Emotion Engine and Graphics Synthesizer. From behind the curtains, I didn’t have a great view of what was happening, but I could tell that people were definitely responding to it and cheering. Everything was going according to plan. Then, soon enough, it was time for the backwards compatibility reveal.

Believe it not, I honestly don’t remember much of what happened in that moment. The plan during the Crash Bandicoot demo was for me to play the game as normal, leaping over obstacles and proceeding deeper and deeper into the stage. But when it came time to play the game in earnest, I really struggled with it and kept running into one particular obstacle in the stage I just couldn’t get past. From there, my memory is a complete blank. I can’t tell you whether I managed to get my act together or not.

Evidently, though, things seemed to pan out all right in the end because the announcement was greeted with applause despite my bad showing of it. All told, the event was a great success.

The PlayStation 2 was eventually released in Japan on March 4, 2000. Work on the PS1 emulator was mostly completed around New Year’s, if I’m not mistaken. In the end, there were a handful of games that just wouldn’t run properly, resulting in us compiling a public blacklist of PS1 games that players wouldn’t be able to play on the system.

After the Japanese hardware launch came the ones in North America and Europe, whose respective PS1 games the emulator naturally also supported. Right before their releases, I went to Sony’s American and European offices to assist with debugging work, which was the first time I ever went abroad. The PS2 ultimately wasn’t 100 percent backwards compatible with the PS1 back catalog, but it nevertheless supported nearly all of it. When I look back on it now, that assignment is probably the most important one I’ve ever had in my career.

Ken Kutaragi set a high bar for us at his team, telling us to always measure the quality of our work based on whether it was truly the absolute best in class globally. When I think about what I’ve done in my own lifetime that meets that goal, the first thing that comes to mind is the work I did on the PS1 backwards compatibility. That’s how proud I am of it.

To be absolutely clear, I couldn’t have possibly done it alone and had a lot of people help me along the way. In the end, if it hadn’t been me who pulled it off, somebody else would have. Regardless, the fact I was able to see such a huge project through to the very end is something I take great pride in. I can only hope I have another opportunity to do something similar again in my lifetime.