Wednesday, 28 September 2011

A look at the current situation of Nintendo 64 (N64) emulation in regards to the game 'GoldenEye 007'.

The Nintendo 64 was a more powerful console than the popular Playstation (PSX). Growing up with PC's I remember comparing from a visual point-of-view, the graphical quality of the PSX to a Matrox Mystique or Nvidia Riva TNT and the N64 to a 3DFX Voodoo2. The PC 3DFX Voodoo line of graphic cards were the 'king of the hill' back in those days. Likewise the N64 garnered the attention of gamers wanting higher resolution graphics than the PSX could provide. Things wouldn't change for a couple more years until the Playstation 2 (PS2) console and PC Nvidia Geforce graphic cards were released.

Unfortunately the N64 didn't have the market presence of the PSX, which can be seen by the difference in the total number of games released for each console. Regardless, there were a number of standout titles on the N64 and one of those was the 1997 'GoldenEye 007'. The game has had and still has a great number of fans even to this day. A search on Google will show a number of MODs that people have been involved in creating for various games over the years. Such is the devotion and power of nostalgia, that comes from memories of playing this game many years ago.

For some the chance to relive those memories again can become a possibility through emulation. For anyone that has looked at N64 emulation over the last ten years, you would have to say it has really been an uphill battle. I won't go into specifics as I assume anyone reading this will already have similar feelings about the situation. To make matters worse 'GoldenEye 007' is a really difficult game to emulate, both in accuracy and performance. I have been interested to see what the current situation in emulation is like after all this time. I have tried alot of emulators and plugins to see what can give the best 'GoldenEye 007' experience. The result has actually turned out clear cut as will be shown below.

Testing system;
PROCESSOR: Intel Pentium 4 (P4) 3.4GHz Extreme Edition
MEMORY: OCZ Technology 2GB RAM (High-Speed)
VISUALS: ATI Radeon HD4670 1GB (Only OpenGL v3 Upwards)
AUDIO: Creative Labs X-Fi Elite Pro
SYSTEM: Microsoft Windows XP SP3 32bit

Video Plugin;
The odd feature that only one plugin could do that no other plugin could do was showing the enemy bleed when shot. I remembered this while playing the original game and was surprised to find only 'Jabos' plugin could do this. Also the 'skybox' (sky with 'moving' clouds) is a feature that has been very hard to emulate. 'Jabos' plugin was one of only a few that could do this properly as well. So it was clear cut that 'Jabos' plugin had won that competition hands down.

Audio Plugin;
A major difficulty in the emulation process has been getting the audio right and with speed. The sound and timing has to be bang on as well as eliminating any pops or crackles that tend to creep in with emulation. In the end one plugin stood out above the rest, 'Alzimer's' HLE audio plugin while used in 'High Level Audio' mode. The fastest of all audio plugins had sound that was very true and with zero pops or crackles.

RSP Plugin;
The main difference between the two portable RSP plugins from the authors of Project64 and Mupen64 is that the Project64 RSP is built towards accuracy whereas the Mupen64 RSP is built towards speed. Your choice could be dictated by whether an RSP can start a particular game or not as normally they are very similar in performance. Although, when using 'Alzimer's' HLE audio plugin I found that only when combined with Mupen64 RSP plugin in 'High Level Audio' mode were all pops and crackles eliminated. The Project64 RSP plugin setup in an equivalent manner was very close only letting a few pops and crackles through with the NTSC version of this game, whereas the PAL version seemed fine. Understandable that the Mupen64 RSP would work best in this setup as the author's were Hacktarux and Alzimer.

Input Plugin;
There are alot of different ones to choose from and it is literary a matter of finding one that works with your controller and provides the features you need. The N-Rage plugin is probably the most predominant so I decided to use that. I had no problems setting up my controller and even the 'rumble' feature works as it should. Again should be noted that there are many plugins out there, even catering for those that want a keyboard/mouse 'first person shooter' setup.

Another difficult decision to make is between the three main N64 emulators; Project64, 1964, and Mupen64. All are mature, capable, and pack similar features. Due to the performance required for 'GoldenEye 007' speed would be the defining factor. Since we are using our own choice of plugins the only factor with the emulators will be how they emulate the 'core' of the Nintendo 64. Mupen64 suprisingly turned out to be the slowest and since not allowing customization of settings to the 'core', means you are stuck with that poor performance. 1964 was a bit quicker but had plenty of stability issues and must be quite buggy, often the game would lock up at anytime. Also, by default it would not play the 'in-game' demonstrations at the end of the intro, it would just replay the intro instead. To fix this I had to turn off "Assume 32bit" under ROM properties, which cut down the performance considerably. The 1964 emulator also struggled transmitting data between the core and any video plugin which can be seen by the 'dlists' performance stat. I even tried using the popular Glide64 plugin which would grind to a halt once reaching the games main menu. The Project64 core is slower than the 1964 core but without the "slow 'core to video plugin' implementation" issues. Unfortunately it is still not perfect, due to the slow core Project64 cannot maintain a high stable FPS at all times. The Project64 v1.7 emulator has strange performance hiccups in the core which could not be eliminated, these can be seen while playing the game or watching the game's intro sequence and therefore can't be recommended. By default the Project64 v1.6 core would also stutter a few times, but once you customize the settings you can make it noticeably stutter free. The 'Vertical Interupts' (VI/s) were rock solid which is what you want from an N64 emulator and the overall Frames Per Second (FPS) pumped out were 50% higher than with the other two emulators. This means that Project64 1.6 will give a smoother and better playing experience. Especially when utilising graphic enhancements like AA, AF, Super2xSAI, pixel shader effects, hires texture packs, and in high resolutions.

Winning setup;
Jabo's Direct3D8 v1.6.1 (latest version at this time)
Azimer's HLE Audio v0.56 WIP2 (latest version at this time)
Hacktarux/Azimer HLE RSP v0.2 (only the 2005 90KB release recommended)
N-Rage Input Plugin V2 v2.2 Final (latest version at this time)
Project64 v1.6 with Unofficial RDB v4.22 (latest version at this time)

Only issue I noticed with this setup was that even though 'Jabo's' video plugin was the best in this test you may still notice the odd geometry error creep in while playing.

1. Tests performed with Windows XP SP3 32bit
2. Modern graphic cards may not be fully compatible with older versions of OpenGL (pre OpenGL version v3.0). Since all N64 OpenGL video plugins are written for OpenGL v1.0 to v2.0 you may notice problems when using modern graphic cards. While using my OpenGL v3.0/v4.0 based graphic card I noticed crashing/reboots (BSOD) when exiting from fullscreen mode while testing OpenGL based video plugins. From my perspective that add's a bonus point to the Direct3D based 'Jabo' plugin.
3. Other computer setups may show different results or maybe fast enough to not notice certain issues.

The following were tested but had various issues;
Direct64, All forms of Rice video, 1964 video, Glide64, All other forms of Jabo video.
All forms of Jabo sound, 1964 audio, Zilmar Audio, TR64 audio, Schibo audio.
All forms of Project64, All forms of Mupen64, and the other forms of 1964; 1964mod, 1964Pistolgrip, 1964Ultrafast. It should be noted that these last three alternative forms of 1964 did not increase performance in my testing. Although the FPS readout may have changed, the game seemed to be playing at about half speed. In the land of Nintendo 64 emulation having stable 'Vertical Interupts per second' (VI/s) is more important than chasing a fixed maximum 'Frames per second' (FPS). I recommend only using the original and now open source 1964 versions.

Things I'll keep an eye on in the future;
Future progress with the 1964, Mupen64, Project64 and all different forms of these emulator's. Alzimer's audio, Jabo's sound plugin, Jabo's video plugin, Glide64 video plugin, and if any OpenGL version 3.0 or greater plugin is released.

No comments:

Post a Comment