What's new

General Perfomance and System Requirements topic.

SeymourOmnis

New member
In this topic, you will find some useful information about which type of computer specifications you need to have in order to be able to enjoy Project 64 at 60 or more FPS. I will keep this topic updated.

Before I start, we need to understand some important things:

1. Emulation isn't perfect (though someday it will be), so this guide will adjust to the PJ64's random slowdown bugs and crashes. If you have complaints about this, complain outside this topic (although bug reporting is fine, as I will try to make a workaround).

2. The CPU (or processor) is what emulates and increases the FPS (frames per second, speed). It is the only thing that will actually increase the FPS, that is if you have a balanced computer.

3. Although much won't admit it, many games, at certain point, actually REQUIRE fast graphics processing, so if you have an integrated video card, your performance will slow down. So that means, that if you have a good graphics card, your fast processor will have no drawbacks when emulating the game. That also means that the FPS will stay the same going from a GeForce 6200 to a 8800GTX OC.

There are also some core PJ64 settings that can make your game faster, but less smooth (varies on some games) (Sumarized from the manual). These are:

Advanced Block Linking: It is one of the PJ64's optimization techniques. While some games need this option to be ON or OFF, having this ON will make your game faster, but less smooth.

Counter Factor: Now this is the option that trades smoothness vs speed. It is actually a pseudo frameskipping technique. Having it on 1, you will have a very smooth gameplay, but on 2 or more it will be faster. Having it on the max
(6) will give you the fastest gameplay, but the laggiest too. Use this option only if you're very desperated for speed. Also, again, this can vary with some games, and certain games won't be compatible with some CF settings.

Memory Size: This is the option choosing wether emulate the jumper pak (4MB) or the Expansion Pak (8MB). While some games need the 8MB and some gain from it, choosing 4MB will make your gameplay somehow faster.

Large Compile Buffer: Having this option checked or unchecked can make your game either faster or slower, it depends at the game. This is option is very similar to the memory size option, some games gain from it and others don't need it checked, and thus wasting resources.

Register Caching: This the most significant and efficient optimization technique and speed gain option. Having it checked will make your gameplay faster, but as always, it has one drawback: it can cause crashes. If you see that your game is crashing frequently, then disable this option to see what happens.

SP Hack: Another optimization technique, although not so great. When checked, you gain a 5% speed, but similar to register caching, it can cause crashes. For this option it is better to have it turned off, unless you are killing for speed.

I will not mention the others as they are very game dependant. It is very important that you mess around with the settings I mentioned above to squeeze the best speed out of the games.

If you have a fast computer and want the smoothest gameplay and super stable gameplay, then enable this options (performance may vary upon games).

Advanced Block Linking: Off
Counter Factor: 1
Memory Size: 8MB
Large Compile Buffer: Checked
Register Caching: Checked, unless it causes crashes.
SP Hack: Unchecked.

If you have a very slow computer, but want speed badly on PJ64, then enable this settings (performance may vary upon games)

Advanced Block Linking: On
Counter Factor: 2. More if you're desperated.
Memory Size: 4MB (8MB only if needed, or if the game gains from it).
Large Compile Buffer: Unchecked (unless the game needs it to be faster)
Register Caching: Checked.
SP Hack: Checked, unless it causes crashes (if you kill for speed)


Now that you know the basics, I'll start writing system requirements documentation about games:
 
Last edited:

Doomulation

?????????????????????????
Please note this. Many of the options you have listed are advanced and are often specific to games, and have therefore pre-default settings specified in the rom database (rdb). It is not recommended that you change them and you do so at your own risk. But do not come and complain here if your game crashes because you've modified these settings. It is best to leave them at default.

I fail to see how memory size can affect speed. Generally, it should be set a 4 MB, unless the game can use the expansion pack. This setting is also set automatically for you.
Counter Factor (or CF) is a tricky thing. It changes the actual timing and it is not any sort of frameskip. Please note this. Changing CF is not generally recommended because it can mess up your games pretty badly. It is best to leave it as it is. Usually CF2 is good, though some games want CF1. This is also a setting that is pre-default and exists in the rdb.

Most games, if not all, run perfectly fine on a 1 GHz+ processor. Some exceptions are Perfect Dark and Goldeneye. Integrated Graphics are not recommended. I am not exactly sure of the GPU requirements, but I think that a GF2+ or Radeon equivalent should work fine.

Again, it is best not to change these settings. And remember to put them at default before asking for help. The default settings have been tested by the PJ team and is considered to be the best settings for each individual game.
 

Tre

Oops. Died again.
Excellent guide, but I would be curious if you could add a little information about the following, because I have yet to figure these out:

"Use TLB", "Delay SI interrupt", and "RSP Audio Signal"

Also, are there any advantages to changing the "Self-modifying code method" to either of the following:

"Default", "None", "Cache", "Protect Memory", "Check Memory & Cache", "Change Memory & Cache" or "Check Memory Advance"

Also, I've noted that sometimes changing the RSP settings to allow for Audio lists to be sent to the plug in will kill the sound (especially in Jabo's Direct sound), and in some cases (with alternate plugins) will improve the sound and speed nicely. Have you noticed this, and why does it do this? Is it merely that it changes the workload of the emulator significantly to handle the audio op codes and thusly doesn't have to spend time processing it on it's own?

Also out of curiousity, is there a way to change the CPU core style from "Recompiler" to the "Interpreter" without making PJ64 crash and not work? I ask, because I've been playing around way too much with settings to find out just what can and can not be done.
 
OP
S

SeymourOmnis

New member
Please note this. Many of the options you have listed are advanced and are often specific to games, and have therefore pre-default settings specified in the rom database (rdb). It is not recommended that you change them and you do so at your own risk. But do not come and complain here if your game crashes because you've modified these settings. It is best to leave them at default.

Default aren't always the best settings. Also, if you change them and something bad happens, you can always choose the default option again. You can't always hide posibilites to other people, let them explore the settings, that way they can become smarter and more experienced.

I fail to see how memory size can affect speed. Generally, it should be set a 4 MB, unless the game can use the expansion pack. This setting is also set automatically for you.
Counter Factor (or CF) is a tricky thing. It changes the actual timing and it is not any sort of frameskip. Please note this. Changing CF is not generally recommended because it can mess up your games pretty badly. It is best to leave it as it is. Usually CF2 is good, though some games want CF1. This is also a setting that is pre-default and exists in the rdb.


According to the manual, having always the 8MB when not needed the game might become a bit slower. That says the manual.
Also, I never said that CF was a frameskipping methot, but rather a pseudo frameskipping method. And again, if people find incorrect settings, then they can change it back to normal.

Most games, if not all, run perfectly fine on a 1 GHz+ processor. Some exceptions are Perfect Dark and Goldeneye. Integrated Graphics are not recommended. I am not exactly sure of the GPU requirements, but I think that a GF2+ or Radeon equivalent should work fine.

If by "perfectly fine" you mean 45-50 FPS, then ok. And if you get to 60FPS in a game on a 1GHz processor, then consider it the max, and it will have slowdowns in workloaded parts. Also, some graphically intensive games like Goldeneye (on the fire war) and FIFA 98 need at least a FX-5200 to run "fine". If not, then prove me wrong. I just want you to play, with a geforce2 a multiplayer game on goldeneye with some rockets, and keep a constant 60FPS while shooting and receiving fire, the same with Fifa 98, when playing a match.

Again, it is best not to change these settings. And remember to put them at default before asking for help. The default settings have been tested by the PJ team and is considered to be the best settings for each individual game.

PJ64 team should know that every computer is different. Settings might work different for other people. Also, tell me, how is it the best to enable SP HACK on goldeneye? Unless you want your game crashing in a middle of a mission, I fail to see this setting "the best".
 
Last edited:
OP
S

SeymourOmnis

New member
Excellent guide, but I would be curious if you could add a little information about the following, because I have yet to figure these out:

"Use TLB", "Delay SI interrupt", and "RSP Audio Signal"

Also, are there any advantages to changing the "Self-modifying code method" to either of the following:

"Default", "None", "Cache", "Protect Memory", "Check Memory & Cache", "Change Memory & Cache" or "Check Memory Advance"

Also, I've noted that sometimes changing the RSP settings to allow for Audio lists to be sent to the plug in will kill the sound (especially in Jabo's Direct sound), and in some cases (with alternate plugins) will improve the sound and speed nicely. Have you noticed this, and why does it do this? Is it merely that it changes the workload of the emulator significantly to handle the audio op codes and thusly doesn't have to spend time processing it on it's own?

Also out of curiousity, is there a way to change the CPU core style from "Recompiler" to the "Interpreter" without making PJ64 crash and not work? I ask, because I've been playing around way too much with settings to find out just what can and can not be done.

Those settings appear in PJ64's manual. TLB is a feature used extensively on the N64, some games need it to actually run and some games don't need it at all. You can gain some performance by turning it off when not needed. The reason I didn't include this in my guide is because you never know when you will need it, and it can cause a crash if you're on the wrong side.

Delay SI Interrupt is a simple option that fixes some games that need it, like Cruis'n USA. It is rarely used by the RDB and doesn't involve performance gain or loss at all.

RSP Audio Signal, like DSI Interrupt, fixes some game's problems (sound). It is very specific, and doesn't involve performance gain or loss at all. It should only be enabled in certain games like in the other settings, that's why having it on can kill your sound, and in some cases it fixes it. It always depends on the game.

The self modifying code method option is very complicated and varies greatly upon games, it is the best to leave that option to the RDB.

About the recompiler and interpreter, sadly, PJ64 based his emulation on recompiler just to improve performance that interpreter lacks of, but interpreter is the most compatible. You just can't turn on or off interpreter whenever you like, because PJ64 rarely uses it (sadly) and it has problems even in running some games that only run in interpreter (like the n64 Star Wars games, excluding racer.).

Also, I greatly appreciate that you liked my FAQ!!!:bouncy: Thank you very much.
 
Last edited:

Tre

Oops. Died again.
Thank you for your reply, and I really should have read the manual more carefully. I'm looking forward to reading more of your information about how to tweek some games to run smoother. Though it is important for us all to remember anything we change can adversely affect the emulator if we're not 100% sure what we're doing.

I'm tempted to do similar with how to get the "most" out of Jabo's Direct3D8 1.6 plugin for people using onboard graphics adapters... like myself. I've managed to make OoT look almost exactly like the real thing just in tweeking the settings for it.
 
OP
S

SeymourOmnis

New member
Sytem Requirements of some games:

Goldeneye: If you thought that your fast PC pwns PJ64, then go and try goldeneye. Goldeneye is one of the most, if not, the game that requires most of a processor. I never reccomend exact specs, but, in order to run this game well (with some slowdowns), you need (I think) at least a 2.0ghz P4, or a 2500+ AMD athlon. You might want to avoid semprons or celerons with this game. There is also a high GPU requirement. What happens on the emulator when someone with a rocket launcher launches at you? A large amount of fire appears, making the game slow, even on a real N64. Well, with a good GPU, that fire rendering will not be anymore a bottleneck. Depending on the amount of fire that appears on the game, the amount of GPU power plays a role too. If you do an explosion maze, with remote mines, in multiplayer, you will get a very massive slowdown if you don't have a good GPU, not even a FX-5200 will be able to handle this at constant 60FPS.

If you think this is just pure bullcrap, then apply this patch to your v64 goldeneye rom: zSHARE - boom.ips

It is a modified runway level, make sure you enable the bond invincible code. In the very right of the level you will see a mtotorcycle, press B on it and a fire should start. Stay idle, if the framerate stays at constant 60FPS, then your GPU is good.


FIFA 98: Road to World Cup:

Always wondered why is this game so slow? It is slow because it's more GPU than CPU dependant (although having a better GPU won't increase framerates, if your GPU is already good). I can't run this game well on my Rdaeon 9000IGP, that is the equivalent (a far shot) of the Geforce 4. Maybe a FX-5200 could handle this game, but I don't know, maybe it requires someting more powerful (my 7600GS PCI-E can handle it at 80fps).
 
Last edited:

Doomulation

?????????????????????????
I very much doubt the whole GPU thing. Pretty much any card has the capability to render the graphics w/out slowdown. Anyhow, moving back to the subject:

CF is not frameskip of any kind, not even pseudo. I mentioned this because Cf is a tricky thing that changes how the emulator handles the console timing, which can speed up, but also cause crashes.

Self-modifying code can prevent crashes. The lower you set this, the better speed you'll get, but also more crashes. The RDB does a terrific job on choosing right setting for this one.

On Interpreter vs Recompiler: I suggest you leave it alone. Interpreter is slower than Recompiler and also most likely more buggy. Always use Recompiler. Pj will fall back on the interpreter if the recompiler fails.

And remember, these options aren't "hidden" from the user. They are there because certain games need them, and some not. They are put in advanced tabs so that users who know nothing about them should not change them.
Also, in Pj 1.7, some of these options might disappear due to a more stable core. The point is that some games need them and some not, which is why they exist. Otherwise they wouldn't be there.

I'll also add some other speed up tricks, listed in no apparent order:
1) Choose a HLE sound plugin (like Azimer's; one of the best). You'll need to toggle the option in the RSP plugin. You'll know since if you don't, you'll get no sound.
2) Use Hacktarux's HLE RSP plugin. Download it, and replace the rsp.dll file (you might want to make a backup first). It will give you a little speed boost.
3) Switch to another emulator such as 1964. 1964 was designed to run with lower requirements.
4) Switch plugins. Jabo's graphics plugin might not always be the fastest.
5) Buy a voodoo card and switch to Glide64.
 
OP
S

SeymourOmnis

New member
not only that, N64 has alot of trouble rendering any kind of fire (like in goldeneye or in MM), so you need to have a good graphics card to surpass that internal bottleneck.
 

squall_leonhart

The Great Gunblade Wielder
thats not an actual bottleneck, its becoz those cards don't have the required Blending and Rendering Caps required to render the colour properly,.. mostly becoz of a lack of pixel shaders but some things also require vertex shaders as well.
 
OP
S

SeymourOmnis

New member
that's true, but i'm talking about the real n64. The n64's video card doesn't have any type of vertex/pixel shaders, that's why even on the real n64 some graphics effects (such as the explosions on goldeneye and the fire effects in majora's mask) are rendered slowly.

It is very difficult to surpass internal slowdowns by emulation, that's why you must have very good hardware in order to surpass the internal slowdowns.

Also, a bit off post, but if anyone doesn't believe me about the very high goldeneye CPU requirement, then go and play in the El-Shaghira temple level (the last one) and let's see how fast it goes.
 

Doomulation

?????????????????????????
...Or play Banjo-Tooie and see how often it slows down. Though, I haven't verified it does this on emulators, but it does on the console (can verify for PAL at least).
 

Top