News

Fixing a Metroid Prime Issue Meant Putting a GameCube Dev Kit in a Freezer

0
In order to remedy an issue involving certain GameCube CPUs, Metroid Prime devs needed to put a dev kit in a freezer

To honor Metroid Prime‘s 20th anniversary, former Retro Studios
Senior Engineer Zoid Kirsch started sharing stories about the game’s development. However, the latest tale comes from another member of the team. Technical Lead Engineer Jack Mathews took to Twitter to talk about how fixing one Metroid Prime issue meant sticking a GameCube dev kit in a freezer.

The reason for a freezer getting involved in game development is due to certain GameCube CPU being fault and not playing Metroid Prime properly. In order to update the code, the team needed to address the issue on a dev kit with that CPU. However, there was only one, and it could only be properly tested if the unit was freezing. In the end, the team fixed it and Nintendo sent out another copy of the game to people who called support.

Here’s Mathews’ full story, compiled from the full eight-tweet thread.

Metroid Prime Game Dev Story – The One Where We Fridged a GameCube.

Shortly after Prime shipped, Nintendo told us that a “bad batch” of GameCube CPU’s shipped, and apparently Prime was the only game that misbehaved on them. We saw videos and it was clear what was going on.

All animated objects were freaking out. I’ll get into the techy reasons later, but the point was we needed to actually slow down some of our code, because it was running too fast for these CPUs to handle! We needed to be able to test this, but Nintendo only had one dev kit with this CPU. We couldn’t detect the CPU, and if we slowed it down too much, the game’s framerate would tank. If we didn’t slow it down enough, it would glitch. Even worse, we had to burn disks for this kit. So each test was hours. Even weirder was to see the problem, the kit had to be cold. Like, freezer cold. So we literally had to put the kit in the freezer, test the game for 15 minutes tops, then start all over. It was crazy.

We literally were running the kit from the break room freezer to the TV, and loading save games as fast as possible to as many places as possible in 15 minutes, then trying new code, re-freezing, and back. I’ll never forget it.

Techy stuff: Our skinning used the locked cache DMA to read in data and the write gather pipeline to write it out. Most of the Nintendo samples used the locked cache for both read and write, so my method was a bit faster. But it also hit memory bandwidth limits. As I recall, the issue was that the write gather pipe on these broken CPU’s wouldn’t stall when it was full or properly report its status, so we had to keep inserting NOPs in the code to slow it down just enough to stop stalls from happening, but not so much to slow down the game.

In case you were wondering, when someone called support about this animation problem, Nintendo actually sent them a new game disc with this updated code! That’s how we did “patches” back in the old days!

Metroid Prime is available for the GameCube. Metroid Prime Trilogy can be played on the Wii and Wii U.

Jenni Lada
Jenni is Editor-in-Chief at Siliconera and has been playing games since getting access to her parents' Intellivision as a toddler. She continues to play on every possible platform and loves all of the systems she owns. (These include a PS4, Switch, Xbox One, WonderSwan Color and even a Vectrex!) You may have also seen her work at GamerTell, Cheat Code Central, Michibiku and PlayStation LifeStyle.