Linux Gaming: Nintendo 64 Emulation - Part 2

Part 1 of this article introduced the latest version of the Nintendo 64 emulator for Linux and compared its performance on all of the current ODROID boards. This second part presents an overview of some of the more popular Nintendo 64 games, including Mario Kart, Mario Party, Paper Mario, Star Fox, Star Wars, Starcraft, Super Mario, Super Smash Bros, and Legend of Zelda.

Mario Kart 64

Mario Kart is very well-known franchise from Nintendo as a racing game, starring the most famous characters from Nintendo like Mario, Luigi, Peach, Yoshi, Donkey Kong, Bowser and others. One of the big benefits of this game is that you can play it with up to 4 players at the same time. I'm not really a fan of the series, especially the Nintendo 64 version, which is graphically poor in my opinion. Although the N64 is known for its 3D capabilities, Mario Kart 64 uses mostly 2D sprites, which don’t look good. The only 3D elements of the game are the ground that you are driving on, and some obstacles and bridges, which makes the game very unattractive to play.

U3

When I first ran the game without frameskip, it was rather laggy. Since the game mostly uses old 2D sprites, it really made me wonder why this game needs so much CPU power. However, once I activated frame skipping, it worked fine on the U3. There is some small delay in the sound while using the menu, but nothing that's really troublesome. In-game racing works fine without lags or slowdowns, and multiplayer with several controllers is working perfectly as well.

C1

While the menu is slow, the in-game experience is good and seems to work at full speed using the Rice plugin. It's definitely playable, although you get a much better experience on the U3 or XU3 rather than the C1. When I re-tested it using glide64mk2, the game ran fine, although it had some glitches with the shadows and ground textures.

XU3

Mario Kart 64 had no issues on the XU3. It ran at full speed and could easily be controlled with an the XBox 360 controller.

Mario Party

Mario Party is a type of board game in which you play with or against up to 4 players in different kinds of mini-games. The game is quite fun, although sometimes I have a hard time figuring out the controls for certain mini-games. It's probably suited for all ages, from small children to adults as a party game, or just to have some fun.

Figure 2 - Mario Party

U3

The U3 experience was flawless, and the game ran at full speed without any issues. I saw a flickering screen on the split screen of one mini-game once, but the moment the action started, it was gone and therefore fully playable.

C1 - rice plugin

The menu was a little slow at first, and when I was actually on the map to select a game, I was rewarded with a very fluent movement, like in Mario Kart. However, when I tried to start a game I only saw a white screen. I heard everything running in the background, and clicking buttons triggered certain actions which I could hear, but I could not see anything besides a blank screen. When I tried again with a different game mode, I was able to see a few parts of the game, but major parts were missing, and the moment that I started a mini-game, I only got a black screen.

C1 - glide64mk2

While the game didn’t run using the rice plugin, it worked fine with glide64mk2, although it was a little slow. Most scenes in game are full speed, so I consider this game playable under glide64mk2 in 16-bit.

XU3

The XU3 had no issues at all playing this game. It ran smoothly, which was not surprising considering that it also ran well on the U3. Overall, the gaming experience was quite nice.

Paper Mario

Paper Mario is a mix between a jump and run game like Super Mario and an RPG game like Final Fantasy. It has nice graphics, and although the world is 3D, Mario himself is only 2D. He's actually a paper figure. The gameplay is very unique and is really fun to play. It's hard to describe, but you should definitely give this one a try!

Figure 3 - Paper Mario

U3

The U3 experience for Paper Mario is really good. I encountered a few graphical issues with shadow, fonts and speech bubbles. I could not read what the stars were saying, but that's about as bad as it gets. I could still read everything else, so it didn’t actually interfere with game play. The overall speed was very good, and I enjoyed the game a lot on the U3.

C1 - rice plugin

The experience on the C1 is hard to describe. At first, the game was not working at all. After a laggy introduction, the main menu did not show up. After 10 or 15 minutes, another type of introduction seemed to show up, which was basically just a scrolling background picture. Another 10 to 20 minutes later, the picture changed again and suddenly I saw the start menu. I created a new save state and started a new game. Again, I was presented with a single background picture. It seems the game is not working at all on the C1, or it might take hours for it to start. The C1 should be able to play the game in rather a decent speed, but unfortunately, the faulty drivers and graphics support prevent the system from working properly.

C1 - glide64mk2

This game works with glide64mk2 at full speed. Similar to the U3, it has glitches with the shadows and ground textures, but besides that, the game is running very well.

XU3

The libretro core did a very good job with this game. None of the U3 glitches with glide64mk2 could be seen. The shadows were perfect, speech bubbles were fine, and I could read what the stars were saying. The overall speed was perfect as well. I really like playing this game on the XU3.

Star Fox 64

Star Fox 64 is a remake of the Super Famicom/SNES game Star Fox, which was one of the first 3D space shooters. The N64 version was famous for its very good graphics and especially for its voice acting. The often funny lines of your comrades through the radio, the intense battles, and the good graphics make this game really fun to play.

Figure 4 - Star Fox 64

U3

The game runs very well on the U3. It had some slow downs on the galaxy map where you select the mission, and the shadows are too dark. The lighting does not work correctly which means the game is very dark in some scenes. Besides that, the game works perfectly well at full speed.

C1 - rice plugin

The C1 does well with this game. The rice video plugin looks a lot better when rendering shadows than the glide64mk2 on the U3, so the scenes are not as dark. Besides that, the performance of the C1 is slower than on the U3, and the mission briefing is slightly laggy. While the U3 has a slowdown on the Galaxy map where you can select your mission, the C1 hangs very badly, but since it's just for selecting your mission it doesn’t affect game play that much. When you're finally on the hunt and shooting through the game, the game runs at full speed without issues, and is actually nice to play on the C1.

C1 - glide64mk2

Similar to the U3, the gaming experience is rather good. It's about the same speed as on the U3 and has the same issues with the shadow, but besides that, the gaming experience is nice and only slows down on the galaxy map.

XU3

As usual, the XU3 experience is the best. The game runs smoothly, but slows down on the galaxy map. The graphics look great on the XU3, and the game runs very smoothly.

Star Wars Episode 1 – Racer

I played this game many years ago on the PC with my 3DFX Voodoo graphics card, which used the “glide” that's included in some of the graphic plugins for mupen64plus. The game is about the Pod Racer in Episode 1 of Star Wars. It's a very fast racing game with nice graphics and destroyable objects, and you can upgrade your pod to make it faster or easier to handle. This game actually uses the memory expansion pak on the N64 which improved the graphics, and the rumble pak is also supported. However, the N64 version doesn’t compare to the PC version in terms of graphics, and is also missing the multiplayer mode, although it's still a nice racing game.

Figure 5 - Star Wars Episode 1 – Racer

U3

The experience on the U3 is very good. The game runs fluently and quickly, and doesn't seem to have glitches. Some of the shadows are too dark, but that’s something you only experience in the menu.

C1 - rice plugin

Once again, the C1 has issues with this game related to the rice video plugin, since the same issues happen on the U3 when the video plugin is switched to rice. The picture was distorted and cut off in some scenes. The game works perfectly fine using glide64mk2 at full speed with no issues.

XU3

The game works very well on the XU3. I finally figured out how to use the booster, and I also saw a two player option. It seems that if the game finds more than one controller connected, it offers a multiplayer option. The gaming experience was flawless and at full speed.

Star Wars: Rogue Squadron

This is named as one of the best N64 games ever made, where you fly an X-Wing to right against the evil Empire. I played the game on the PC when it came out, and it was quite fun. I was looking forward to trying it on the ODROID. I've read that this game requires the memory expansion pack in order to launch. However, no matter what I tried, I wasn't able to get this game to work on any platform or with any graphics plugin. Both the mupen64plus and libretro core emulators either crashed or stopped responding.

Picture 6 - Star Wars: Rogue Squadron

StarCraft 64

StarCraft is a very famous RTS game. It's one of the best strategy games ever made, and is still played in professional gaming tournaments. The Nintendo 64 game is a very good remake with reduced graphics, stripped videos, and minimal music. It's a nice strategy game, and I found it interesting that I was able to play it on a Nintendo 64 emulator.

Picture 7 - StarCraft 64

U3

The game runs surprisingly well on the U3. There are some speed issues on the menu, but as soon as you are in the game, it works well, although the sound is a little bit delayed, especially in bigger battles. You can hear units die after they have already disappeared from the screen.

C1 - rice plugin

StarCraft 64 ran surprisingly well on the C1. It seems to work best using the rice video plugin. However, when using the glide64mk2 plugin, the menu is so slow that you can't select the mission that you want to play. Therefore, the game is not playable under glide64mk2. The in-game speed would probably be fine, but since I couldn't get past the menu, there is no way to tell.

XU3

I actually had a lot of issues getting StarCraft 64 to run on the XU3. The game was very laggy at first, and switching from glide64 to rice or gln64 exhibited strange issues. Rice and gln64 were really fast on the XU3 menu, and everything was full speed. But both rice and gln64 had major graphical problems, which made the game unplayable. After some investigation on the slowdown of glide64, I found out that reducing the rendering resolution increased the speed. The game is displayed in 1080p no matter which resolution you choose, but the resolution at which the characters and objects are rendered can be changed on the XU3. I found that using a resolution of 800x600 or below gave the best performance.

Super Mario 64

Super Mario 64 was the launch title for the N64, and what a launch title it was! This game boosted the N64 to the top of its class by showing what the console was capable of, and once again, made Mario the star of the Nintendo franchise.

Figure 8 - Super Mario 64

U3

On the U3, Mario 64 has some glitches with shadows, textures and lighting, but besides that, the game runs at full speed.

C1 - rice plugin

Mario 64 seems to be running a little below full speed on the C1, but it is still playable with the rice graphics plugin. The speed is slightly better with glide64mk2 than with the rice plugin, but it occasionally drops below full speed. It also has the same issues as the U3 glide64mk2 plugin with rendering ground textures and shadows.

XU3

The game is running fine on the XU3, with no issues or glitches.

Super Smash Bros

This game introduced a new genre of brawler games. It was a major success on the N64, and led to a lot of sequels. You can choose between famous Nintendo characters such as Mario, Yoshi, Princess Peach and many more, and fight against other characters.

Figure 9 - Super Smash Bros

U3

The gaming experience for Super Smash Bros on the U3 with mupen64plus and glide64mk2 plugin is very nice. Even the menu is working at a decent speed. There are some glitches with shadow and text, but nothing serious, and only the text issue is noticeable.

C1 - rice plugin

The game was too slow under rice to be playable. The menu, introduction, and gameplay were laggy. However, Super Smash Bros runs much better with the glide64mk2 plugin, and you can actually play it full speed, although it has the same glitches as the U3 version.

XU3

While in the menu, there is some lagging and slow downs, but the game runs perfectly fine otherwise. It was really fun to play.

The Legend of Zelda: Majora's Mask

I don't know much about the Legend of Zelda games on the N64, but I do know that this game involves having 72 hours to save the world, and you have different masks to help you in your cause. You can use the “Ocarina of Time” to travel back in time and start the 72 hours over and over again until you finished the game.

Figure 10 - The Legend of Zelda: Majora's Mask

U3

Although the game speed is very good, the glide64mk2 plugin once again has issues with being too dark. Since it can't do the blurry effect, the game stays at full speed the entire time. However, because it's too dark, it's sometimes hard to find a way, but it’s not as dark as it is when played on the XU3, where nothing is visible. I consider this fully playable.

C1 - rice plugin

The game worked surprisingly well on the ODROID-C1 with the rice plugin. There were no graphical issues, but the introduction and some scenes were slightly laggy. Overall, the game is very playable on C1 with the rice plugin.

C1 - glide64mk2

The game runs at nearly full speed, but suffers from the same darkness issue as the U3. Rice is probably the best plugin for use with this game when played on the ODROID-C1.

XU3

The overall experience of the game is quite good. When there are cutscenes with the blurring effect, the game slows down and becomes laggy. However, since only occurs in cutscenes, the gameplay is fine. However, there's another issue which is related to glide plugin, which is that the graphics are too dark, makes it hard to figure out which way to go. It got so dark that I switched to the gln64 plugin, which had some minor glitches with the ground, but otherwise worked perfectly at full speed. It was not so dark that you couldn't see where to go, so using gln64 as a plugin for this game worked great.

The Legend of Zelda: Ocarina of Time

This is the predecessor of Majora's Mask. I actually had a hard time enjoying the game, but I know that it is supposed to get better over time, and there must be a reason why so many have it on their top 10 list, so I gave it a try.

Figure 11 - The Legend of Zelda: Ocarina of Time

U3

Generally the game works fine and is at full speed, with some minor issues with shadows and ground textures. In some places, it is too dark, but it is still fully playable.

C1 - rice plugin

Similar to the other Legend of Zelda game, this one works very nicely on the ODROID-C1 using the rice plugin. With the glide64mk2 plugin, the game was not entirely full speed, and exhibits the typical ground texture and shadow issues.

XU3

The experience on the XU3 is superb. I didn’t see any glitches or slow downs so far, although I didn’t get very far in the game. It's a really nice experience.

High Resolution Textures

After trying out different games, I checked on what else could be done with the emulators, and I found out that there are some high resolution texture packs that offer much better graphics. I tried a few of them to see what they look like in order determine if they would work on the ODROIDs. Mupen64plus standalone emulator offers the possibility to use high resolution textures for N64 games which can improve gaming experience by giving a new look to the games, but this option is not available for other emulators.

Figure 12 - Super Mario 64 with standard textures

Figure 13 - Super Mario 64 with high resolution textures

To use the high resolution textures, download them from http://bit.ly/1Jvpahr and copy them to the directory ~/.local/share/mupen64plus/hires_texture/. Some of the textures are complete rewrites of the game graphics. Make sure to place the textures in a folder with the “short name” of the game in capital letters. For example, Mario 64 is “SUPER MARIO 64”, and Mario Kart 64 is “MARIOKART64”.

Figure 14 - Complete remake of the Mario 64 textures

Conclusion

Nintendo 64 emulation is generally working very well on ODROID devices, especially on the U3 and XU3. The C1 has a lot of issues which prevent it from offering the same gaming experience as on the other ODROID devices. The rice plugin, which works without having to change color depth settings on your image, has major issues with many games, but does a rather good job on other games. The glide64mk2 plugin only works under 16-bit, and although most games are running nicely, the ones that do run better with the rice plugin require a reboot in order to be able to use it, since rice isn't working with 16-bit. This leaves me rather unsatisfied, since I always had to reboot the entire ODROID in order to switch between different graphics plugins on the C1. The U3 and XU3 can do this without rebooting the entire system, which makes it much easier to switch between the plugins. Also, using 16-bit color depth prevents different applications such as XBMC from running properly, which causes you to choose a emulator frontend that actually supports 16-bit mode, or else you are forced to start N64 games through a Terminal window. This all makes me believe that C1 is not really suitable for N64, at least under Linux. I think that the best way to play N64 games on the C1 is probably through the Android app or a highly modified version using fbdev drivers and some scripts that are able to switch color depths and applications to run. That setup would be very inconvenient and certainly not suitable for beginners. The U3 and XU3 both measure up very well when it comes to N64 emulation. Being able to switch between graphic cores easily is a big benefit over the C1. N64 games seem to need some occasional tweaking, and if you look at the configuration options for either glide64mk2 or rice on the mupen64plus standalone emulator, there are a lot of options to choose from. The XU3 is the only board that can use libretro core of mupen64plus with Retroarch at the moment. It integrates the controllers very nicely, and you can easily adapt your gamepad layout to your own needs and have various controllers supported. Also, the XU3 has extra CPU power, which often make the difference between full speed or “nearly” full speed. The U3 does a very good job in emulating N64 games, and being able to use high resolution textures in mupen64plus is really a cool thing to have.

Be the first to comment

Leave a Reply