Today we rewind back to 1999 to revisit one of gaming’s great technical achievements of the late 1990s: the Nintendo 64 port of ‘Resident Evil 2’.
In the great Playstation versus Nintendo 64 debate of the 1990s, those partisan to Sony’s camp would cite the inclusion of full motion video in some Playstation games as proof of the console’s supposed technical superiority. Unlike the architecturally homogeneous consoles of the present, the Playstation and Nintendo 64 were radically different machines but, to be fair, this really wasn’t an issue of one platform’s technological prowess over the other’s but rather Sony’s decision to use the high-capacity CD-ROM format instead of the low-capacity but speedy flash memory found in the Nintendo 64 cartridge.
But there is one notable exception to this rule: the Nintendo 64 port of Resident Evil 2. The version that found its way onto Nintendo’s console had all of the FMV cinematics of its disc-based console cousins.
Using the available codecs of the day, this was nothing short of a herculean task of *software compression and out-and-out clever visual trickery. While the Playstation version of Resident Evil 2 had the luxury of two discs — ample real estate for a game that came in at 1.2 GB — the team responsible for porting the Nintendo 64 version only had 64MB to work with, and they also had to include gamedata, textures and sounds into this claustrophobic environment. While there would certainly have to be shortcuts, and omissions, Angel Studios, the development company tasked with porting the game, had to preserve as much of the game as possible in the conversion: levels could not be cut, nor could the game’s length be shortened.
The Playstation did have one slight hardware advantage (aside from storage) over the Nintendo 64: a dedicated video decompression processor from MDeC. However, to counter this advantage the Nintendo 64 had two advantages: 4MB of RAM, instead of the Playstation’s 1MB, and a discrete RSP that could be programmed to run in parallel to the CPU (not entirely unlike GPGPU computing).
To further compound Angel Studios’ challenge, his team had to first convert the game’s code from the C it was written in for the Playstation to the Assembly language used for coding on the Nintendo 64. Surprisingly, Nintendo wasn’t all that helpful during the entire affair (something that many developers working on the platform complained about) as it reportedly refused to share its own in-house microcode tools with developers, and the basic tools available suffered from poor documentation and no provided debuggers.
Using the available codecs of the day, this was nothing short of a herculean task of *software compression and out-and-out clever visual trickery. While the Playstation version of Resident Evil 2 had the luxury of two discs — ample real estate for a game that came in at 1.2 GB — the team responsible for porting the Nintendo 64 version only had 64MB to work with, and they also had to include gamedata, textures and sounds into this claustrophobic environment. While there would certainly have to be shortcuts, and omissions, Angel Studios, the development company tasked with porting the game, had to preserve as much of the game as possible in the conversion: levels could not be cut, nor could the game’s length be shortened.
The Playstation did have one slight hardware advantage (aside from storage) over the Nintendo 64: a dedicated video decompression processor from MDeC. However, to counter this advantage the Nintendo 64 had two advantages: 4MB of RAM, instead of the Playstation’s 1MB, and a discrete RSP that could be programmed to run in parallel to the CPU (not entirely unlike GPGPU computing).
To further compound Angel Studios’ challenge, his team had to first convert the game’s code from the C it was written in for the Playstation to the Assembly language used for coding on the Nintendo 64. Surprisingly, Nintendo wasn’t all that helpful during the entire affair (something that many developers working on the platform complained about) as it reportedly refused to share its own in-house microcode tools with developers, and the basic tools available suffered from poor documentation and no provided debuggers.
The big squeeze
As Todd Meynink, one of Angel Studios’ lead developers on the project, explained in his October, 2000 postmortem on the game’s development process in Gamasutra , in order to fit everything on the cartridge the team had to obtain a 165:1 compression ratio with the FMVs. In a modern context the H.265 HVEC codec could make light work of this challenge (as it can scale up to 1000:1 for delivering 4K video), but when the game was being developed in early 1998 this codec wouldn’t be developed for another 15 years. This was an era of MPEG-1.
Meynink wrote in 2000:
To look at this challenge another way, let’s put it into numerical perspective. The original rendered frames of the video sequences were 320×160 pixels at 24-bit color = 153,600 bytes/frame. On the Nintendo 64 Resident Evil 2‘s approximately 15 minutes of 30Hz video make a grand total of 15 x 60 x 30 x 153,600 = 4,147,200,000 bytes of uncompressed data. Our budget on the cartridge was 25,165,824 bytes, so I had to achieve a compression ratio of 165:1. Worse still, I had to share this modicum of cartridge real estate with the movie audio.
Meynik’s solution to this was rather simple, and exploited the limits of detail the human eye could reasonably detect on an SD NTSC screen.
As he explained in the piece, one of the big things implemented that allowed every cutscene to be included was re-compressing the FMVs to run at 15Hz with interpolation rather than at 30Hz. In effect, every other frame was skipped. This would be noticeable on a PC, or in a console game at a much higher resolution, but difficult to detect on an NTSC SD screen with the gamer sitting some distance away. In addition, the source resolution of the FMVs were scaled down then resampled at a higher resolution when played back.
Meynik explained that his team saved space by recycling textures, 2D sprites and collision data. While this might make for a more bland looking scene, and limit the number of ways that characters could interact with one another or the environment, it was a necessity to meet the memory budget of the cartridge. The colour range was much less than the Playstation version, but as Meynik explained, the gaming compensated for this by tweaking the gamma correction. *But even if there was less overall diversity in textures and collision data because of this shortcut, the game still looked better because the extra RAM afforded by the expansion pack allowed for textures to be displayed at a higher resolution.
Audio was another issue. Meynik and his team reduced the overall library of audio, used MIDI samples instead of pre-recorded audio and put everything else through a hefty compression algorithm.
As he explained in the piece, one of the big things implemented that allowed every cutscene to be included was re-compressing the FMVs to run at 15Hz with interpolation rather than at 30Hz. In effect, every other frame was skipped. This would be noticeable on a PC, or in a console game at a much higher resolution, but difficult to detect on an NTSC SD screen with the gamer sitting some distance away. In addition, the source resolution of the FMVs were scaled down then resampled at a higher resolution when played back.
Meynik explained that his team saved space by recycling textures, 2D sprites and collision data. While this might make for a more bland looking scene, and limit the number of ways that characters could interact with one another or the environment, it was a necessity to meet the memory budget of the cartridge. The colour range was much less than the Playstation version, but as Meynik explained, the gaming compensated for this by tweaking the gamma correction. *But even if there was less overall diversity in textures and collision data because of this shortcut, the game still looked better because the extra RAM afforded by the expansion pack allowed for textures to be displayed at a higher resolution.
Audio was another issue. Meynik and his team reduced the overall library of audio, used MIDI samples instead of pre-recorded audio and put everything else through a hefty compression algorithm.
Was Mission: Compressible a success?
Resident Evil 2 was far from the first game to be ported from the Playstation to the Nintendo 64. But what makes it unique, is it was the first game to be ported between the platforms with relatively everything in tact. Previous games that made the port between the two consoles made sacrifices: a common one would be ripping out the FMV cinematics and replacing them with static illustrations and dialogue. Audio was also a victim of the race-to-compress, often with character dialogue being ripped out.
Courtesy of Lens of Truth, here are a few pictures directly comparing the game on the two consoles (you can take a look at the FMVs here):
Courtesy of Lens of Truth, here are a few pictures directly comparing the game on the two consoles (you can take a look at the FMVs here):
There are noticeable differences, and the Playstation’s graphics appear to be more crisp and detailed but the Nintendo 64’s look more smooth. Lens of Truth concludes that generally the Playstation version of the game looks better, but the Nintendo 64 version looks better than most ports.
This is why Resident Evil 2’s port to the Nintendo 64 is such an impressive technical achievement. Although, in the end, some of the ways Meynik and his team pulled this off are rather simple, the challenge of getting this game to jump the platform divide entirely is a hallmark to the days of radically different console architectures.
Read More: http://ift.tt/1h3Hzk9
via Hardware Forums http://ift.tt/1h3HywM
No comments:
Post a Comment