Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Project64: Difference between revisions

From OoT Randomizer Wiki
m Moved the SRL warning to the top.
m fix mention of Project64 as PJ64. PJ64 should only be used where it is displayed literally (n-rage for pj64).
 
(88 intermediate revisions by 8 users not shown)
Line 1: Line 1:
<span style="font-size:x-small">'''Originally written by Tyrus'''</span>
Project64 is no doubt the most popular N64 emulator available. Randomizer staff will support Project 64 '''3.0.0 or newer''' which was released on May 26, 2021. We will not directly support any previous version.


== '''''This guide targets Project64 v2.x which is not suitable for SRL racing!''''' ==
{{race rule|Only Project64 3.0 and newer are allowed and supported for racing. Version 2.0 - 2.3 are not allowed for racing. <!--Project64 1.6 may be used but will result in a poorer experience and will not be supported-->}}
Project64 v3.0.0 or newer as well as [[Bizhawk]] and [[Retroarch]] are the recommended emulators for racing.


Project64 is no doubt the most popular N64 emulator available. While you may think that this means it is the best emulator to use for Ocarina of Time Item Randomizer, you would unfortunately be mistaken. As racing is a large focus for the community you have to take stock of the rules of the racing websites which prohibit Project64 2.0 and higher, and don't allow cheats to be used which are necessary with Project64 to keep pausing the game from taking a long time.
[https://www.pj64-emu.com/public-releases Download Project64] '''v3.0.0 or newer'''


If you're thinking "I don't race anyway, so I don't have to worry," unfortunately you are incorrect once more. Project64 has quite a few issues that are either game-breaking, or annoying to deal with. First, Project64 targets emulation speed over emulation accuracy which means it will take shortcuts when reading the game code and make assumptions. Some of these assumptions are no longer valid for the code randomizer uses instead and so will behave incorrectly, and even go as far as to crash. It is for these reasons that Ocarina of Time Item Randomizer support and staff do not recommend using Project64 and refuse to support it outside of exceptional cases.
Please note that certain ads on the Project64 download page might lead you to download adware. Only wait for the download to start automatically or click ''Try again'' to start it.


The following settings for Project64 2.0+ seem to mitigate these issue as much as possible, but we do not guarantee you won't still run into issues. Issues with Project64 are not considered actual bugs for the randomizer and the developers are unlikely to try and fix these issues as many of them are unlikely to even be fixable without modification to Project64. All that being said, if you are using Project64 '''''You will have to complete [https://wiki.ootrandomizer.com/index.php?title=Project64#Unhandled_Exception_Error_.26_Crash_Mitigation both] of [https://wiki.ootrandomizer.com/index.php?title=Project64#Pause_Framebuffer_Emulation_Speed_Cheat these] steps for each and every newly randomized ROM you use!'''''
Version 3.0.1 changed the wording in many places. One of the major ones is changing <samp>Settings...</samp> in the <samp>Options</samp> menu, so when using 3.0 anywhere you see <kbd><samp>Options</samp> ⇒ <samp>Configuration</samp></kbd> look for <kbd><samp>Options</samp> ⇒ <samp>Settings...</samp></kbd> instead.


[https://www.pj64-emu.com/ Download Project64]
== Configure Controller ==
First, read the [[Controller Setup]] guide. Ensure the controller is calibrated, and if you are using one of the controllers with additional setups steps in that guide make sure you follow them.


To get rid of the donate box that you have to wait 30 seconds for, click ‘Enter notification code’ and type “thank you from project64”.
When using an Xbox controller, or any controller that is an XInput device, you must first go to <kbd><samp>Options</samp> ⇒ <samp>Configuration</samp> ⇒ <samp>Plugins</samp></kbd> and change the <kbd><samp>Input (controller) plugin</samp></kbd> from <kbd><samp>Project64 Input Plugin</samp></kbd> to <kbd><samp>N-Rage for PJ64</samp></kbd>. Then navigate to <kbd><samp>Options</samp> ⇒ <samp>Configure controller plugin...</samp></kbd> and check <kbd><samp>XInput</samp></kbd> at the top. This will change the bind menu to be more appropriate for your device.<sup>2</sup> The <samp>XControl</samp> column is the button on your controller, and the <samp>N64</samp> column is the button on the N64 controller you want it to use.


=== Enable Cheats ===
For other controllers and keyboard users, use the default <kbd><samp>Project64 Input Plugin</samp></kbd> or if N-Rage works better for you ensure that <samp>XInput</samp> does not have a check by it. Click on the button for the control you want to bind a button to and the menu will wait for you to press a button on the controller or a key on your keyboard to use for the button. ''You may need to change these again if you switch controllers''.


Open the ROM. You will get this error message:
===GameCube Controllers===
There is a common issue with GameCube controllers that happens if you are using Project64 Input Plugin and using its options that lets you bind all of the controls. Whenever you bind one of the triggers, if you press it all the way down until it clicks it will bind two controls in rapid succession. The GameCube controller works differently than modern controllers. L and R are both analog triggers and digital buttons. Since these are two distinct controls on the same physical button the input plugin accepts both. It is recommended you push these buttons only far enough that it registers instead of until it clicks.


[[File:PJ64 1.png]]
===Keyboard===
If you use a keyboard, you will also want to increase the <kbd><samp>Analog Stick</samp> ⇒ <samp>Range</samp></kbd> to <kbd>100%</kbd>.


Click 'OK' and another error message will pop up:
[[File:Project64KeyboardControls.jpg|560x315px]][[File:PJ64 10.png|560x315px]]


[[File:PJ64 2.png]]
== Recommended Settings ==


Click 'OK' once more, and then press <code>Ctrl + T</code> The following menu will appear:
=== Video (Graphics) Plugin ===


[[File:PJ64 3.png]]
The GlideN64 Plugin is recommended. To do this, launch Project64 and navigate to <kbd><samp>Options</samp> ⇒ <samp>Configuration</samp></kbd> or press <kbd><samp>Ctrl+T</samp></kbd> to open the Settings menu.  


Untick 'Hide advanced settings' Then click on the 'Advanced' menu that just showed up.
In the Settings menu, go to the <samp>Plugins</samp> section and change your <samp>Video (Graphics) Plugin</samp> to <samp>GlideN64</samp>. Click <samp>Apply</samp>.


[[File:PJ64 4.png]]
If your PC doesn't support this, you'll have to use the <samp>Project64 Video Plugin</samp> instead.  


Tick 'Remember selected cheats' because PJ64 needs gameshark cheat codes to emulate the pause framebuffer quicker if you are not using the GLideN64 plugin. If you can use the GLideN64 plugin, use a different emulator that is actually supported.
<samp>Jabo's Direct3D8 Plugin</samp> is not recommended.


=== Unhandled Exception Error & Crash Mitigation ===
== Optional Settings ==


Click 'Config: THE LEGEND OF ZELDA' as seen in the image below. If it’s not there, load up the ROM and look again (Press Ctrl + T after dismissing the 2 error messages).
=== Enable Save States ===


Where it says 'Memory size' go ahead and change that to 8 MB, deselect '32bit Engine' and then click 'apply' and 'OK'.
{{race rule|Save states are not allowed to be loaded while racing. Please ensure you do not set up keybinds you may hit on accident during a race.}}
To enable save states, launch Project64 and navigate to <kbd><samp>Options</samp> ⇒ <samp>Configuration</samp></kbd> or press <kbd><samp>Ctrl+T</samp></kbd> to open the Settings menu.  


[[File:PJ64 5.png]]
In the Settings menu, click <samp>Options</samp> and untick <samp>Hide advanced settings</samp>. Click <samp>Apply</samp>.


Now click the + next to "config: THE LEGEND OF ZELDA" and then click "Recompiler" (as seen in the image below)
You should now be able to utilize save states while running the game by navigating to <kbd><samp>System</samp></kbd>.


Deselect 'Cache', 'PI DMA', 'Start changed' and 'TLB unmapping'. Select 'Protect memory' and then click 'apply' and 'OK'.
=== Pause/Unpause Emulation when Window is not Active ===


[[File:PJ64 Setup Step 3.png]]
In the Settings menu, expand the {{menuItem|Options/Configuration}} list on the left-hand side and tick the box for {{menuItem|Pause emulation when window is not active}} section to have the emulation pause completely when the window is not active. This prevents the game from even running and communication with the game from outside applications when the window is not active, so you may not want it to be on. If that is a problem you will want to ensure you untick {{menuItem|Pause emulation when window is not active}}.  


=== Pause Framebuffer Emulation Speed Cheat ===
{{kbd|Click Apply}} to save the setting. If you were running a game when you changed this setting you will need to go to the  {{menuItem|System}} menu and {{kbd|Click Resume}} to continue playing.


[[File:PJ64 6.png]]
=== Remove the FPS Cap ===


Press <code>Ctrl + C</code> and then click on the bar on the right of this window. In the box below 'Code: <address>' paste: <code>801DA5CB 0002</code> And name it something like 'subscreen delay fix' (The name doesn't matter)
{{race rule|Unlimited FPS is not allowed for racing.  Please ensure you do not set up keybinds you may hit on accident during a race.}}
To remove the FPS cap, launch Project64 and navigate to <kbd><samp>Options</samp> ⇒ <samp>Configuration</samp></kbd> or press <kbd><samp>Ctrl+T</samp></kbd> to open the Settings menu.


[[File:PJ64 7.png]]
In the Settings menu, click <samp>Options</samp> and untick <samp>Hide advanced settings</samp>. Click <samp>Apply</samp>.


Then click 'Add cheat' and it should appear on the left. Tick the cheat, then close out of that menu.
You should now be able to remove the FPS Cap by loading a ROM, navigating to <kbd><samp>System</samp></kbd> and clicking on <samp>Limit FPS</samp>. Alternatively, you can just press F4 on your keyboard.


[[File:PJ64 8.png]]
=== Resize Emulator Window ===


=== Change Graphics Plugin (Optional but recommended) ===
Go to <kbd><samp>Options</samp> ⇒ <samp>Configure Graphics Plugin</samp></kbd> and change the <samp>Windowed Resolution</samp> to whatever you prefer.


Press <code>Ctrl + T</code> and click 'Plugins' and change the Video (graphics) plugin to 'Glide64 for PJ64'. Click 'Apply' and then 'OK'.
=== Show ROMs in ROM List ===


[[File:PJ64 9.gif]]
Right-click anywhere on the white screen and click on <kbd><samp>Choose ROM Directory...</kbd></samp> Select the respective folder that your ROMs are in.


=== Restart Project64 ===
=== Texture Packs ===


Once you have completed these steps, restart Project64 and open up your ROM.
{{race rule|Texture packs are not allowed for races. Disable them before participating.}}
The following link will let you set up texture packs for [https://wiki.ootrandomizer.com/index.php?title=HiRes_Texture_Packs Project64 v3.0.0 or newer]


=== Configure Controller ===
=== Required Settings for Racing ===


Click ‘Options’ and ‘Configure controller plugin’
If you wish to partake in our community's races, then don't forgot to also configure the settings mentioned [[Racing#Project64|here]].


[[File:PJ64 11.png]]
== Troubleshooting ==


Here is where you setup your controller binds.
=== Alt+Tabbing Crashes in Full-Screen Mode ===


For xbox controller users:
Use the [[#Video_(Graphics)_Plugin|GlideN64 Video Plugin]]. If your PC doesn't support that plugin, you'll have to be aware to hit the "Escape" key on your keyboard before Alt+Tabbing.  
* In ‘Controller Pak’, untick ‘RawData’, and in the drop down menu, select ‘MemPak’.
* Tick ‘XInput’, and your binds menu will look like this: The ‘XControls’ correspond to the buttons on your controller, and ‘N64’ is what they will be bound to in-game.


[[File:PJ64 10.png]]
Alternatively, you could also play in Windowed Mode. Navigate to <kbd><samp>Options</samp> ⇒ <samp>Configure Graphics Plugin...</samp></kbd> and adjust the Windowed Resolution accordingly. Click <samp>Save and Close</samp>.


For keyboard users I recommend setting Analogue stick range to 100%, and in ‘Devices’, set ‘Gamepad Deadzone’ to 5%. These settings will make it easier to aim.
=== Screen Flicker when Streaming ===


For users of any other controller my only recommendation is to check out the multitude of other guides on the Internet.
If using the [[#Video_(Graphics)_Plugin|GlideN64 Video Plugin]], go to <kbd><samp>Options</samp> ⇒ <samp>Configure Graphics Plugin...</samp></kbd>. In the "Video" tab, check the "Overscan" box. Click <samp>Save and Close</samp>.


If you want to use a mouse, for some reason, tick 'N64 Mouse'.
=== Error: uCode crc not found in INI, using currently selected uCode ===


ADDITIONAL HOTKEYS:
This error is caused by Project64 using Project64-video not being able to find the <samp>Video.rdb</samp> file that should be in the <samp>Config</samp> directory in the Project64 folder. Double check that this file is in the right location. Also ensure you are not running Project64 from the zip file as it cannot see any of its required files and will throw strange errors like this one when it can't find them.
* Toggle limit fps (fast forward): f4
* Toggle pause: f2
* Save State: f5
* Load State: f7


== Required: Managing your Save data! ==
If you still get the error, make sure you're using [https://www.pj64-emu.com/public-releases Project64 v3.0.0 or newer]. If your current <samp>Video (Graphics) Plugin</samp> is not already <samp>GlideN64</samp>, then change to that one. [[#Video_(Graphics)_Plugin|You can read here how to swap plugins]]. If that doesn't work, try the <samp>Project64 Video Plugin</samp>. If even this doesn't fix the issue, you can try <samp>Jabo's Direct3D8 Plugin</samp> as a last resort.
 
=== Old versions of Project64 ===
 
Old versions of Project64 use the same '.sra' file for all OoT ROMS, regardless of if they're randomised or not. If you've loaded a vanilla ROM before loading a randomized ROM, then you must first delete 'THE LEGEND OF ZELDA.sra' in 'C:\Program FIles\Project64\Save'. ''Failure to do so will result in numerous gameplay bugs''.
 
If you do not load a vanilla ROM before loading a randomized ROM, you can just delete the save files in-game.
 
=== Project64 v2.3.2 ===
 
[[File:Project64 Save File Management.png|RTENOTITLE]]
 
Tick 'Unique game save directory' to avoid having to mess with the Save Files stored on your computer's HDD when switching to another Ocarina of Time ROM.
 
== Need additional assistance? ==
 
If you have any further issues, seek additional assistance on the [https://discord.gg/ootrandomizer: Discord server]. Keep in mind Project64 is not a supported emulator and you likely won't get as much, nor as quality help as you would if you were using one of the supported emulators.

Latest revision as of 23:28, 5 October 2023

Project64 is no doubt the most popular N64 emulator available. Randomizer staff will support Project 64 3.0.0 or newer which was released on May 26, 2021. We will not directly support any previous version.

This is an important racing rule! If you do not follow it, you may be disqualified from a race.

Reason: Only Project64 3.0 and newer are allowed and supported for racing. Version 2.0 - 2.3 are not allowed for racing.

Project64 v3.0.0 or newer as well as Bizhawk and Retroarch are the recommended emulators for racing.

Download Project64 v3.0.0 or newer

Please note that certain ads on the Project64 download page might lead you to download adware. Only wait for the download to start automatically or click Try again to start it.

Version 3.0.1 changed the wording in many places. One of the major ones is changing Settings... in the Options menu, so when using 3.0 anywhere you see OptionsConfiguration look for OptionsSettings... instead.

Configure Controller

First, read the Controller Setup guide. Ensure the controller is calibrated, and if you are using one of the controllers with additional setups steps in that guide make sure you follow them.

When using an Xbox controller, or any controller that is an XInput device, you must first go to OptionsConfigurationPlugins and change the Input (controller) plugin from Project64 Input Plugin to N-Rage for PJ64. Then navigate to OptionsConfigure controller plugin... and check XInput at the top. This will change the bind menu to be more appropriate for your device.2 The XControl column is the button on your controller, and the N64 column is the button on the N64 controller you want it to use.

For other controllers and keyboard users, use the default Project64 Input Plugin or if N-Rage works better for you ensure that XInput does not have a check by it. Click on the button for the control you want to bind a button to and the menu will wait for you to press a button on the controller or a key on your keyboard to use for the button. You may need to change these again if you switch controllers.

GameCube Controllers

There is a common issue with GameCube controllers that happens if you are using Project64 Input Plugin and using its options that lets you bind all of the controls. Whenever you bind one of the triggers, if you press it all the way down until it clicks it will bind two controls in rapid succession. The GameCube controller works differently than modern controllers. L and R are both analog triggers and digital buttons. Since these are two distinct controls on the same physical button the input plugin accepts both. It is recommended you push these buttons only far enough that it registers instead of until it clicks.

Keyboard

If you use a keyboard, you will also want to increase the Analog StickRange to 100%.

Recommended Settings

Video (Graphics) Plugin

The GlideN64 Plugin is recommended. To do this, launch Project64 and navigate to OptionsConfiguration or press Ctrl+T to open the Settings menu.

In the Settings menu, go to the Plugins section and change your Video (Graphics) Plugin to GlideN64. Click Apply.

If your PC doesn't support this, you'll have to use the Project64 Video Plugin instead.

Jabo's Direct3D8 Plugin is not recommended.

Optional Settings

Enable Save States

This is an important racing rule! If you do not follow it, you may be disqualified from a race.

Reason: Save states are not allowed to be loaded while racing. Please ensure you do not set up keybinds you may hit on accident during a race.

To enable save states, launch Project64 and navigate to OptionsConfiguration or press Ctrl+T to open the Settings menu.

In the Settings menu, click Options and untick Hide advanced settings. Click Apply.

You should now be able to utilize save states while running the game by navigating to System.

Pause/Unpause Emulation when Window is not Active

In the Settings menu, expand the Options/Configuration list on the left-hand side and tick the box for Pause emulation when window is not active section to have the emulation pause completely when the window is not active. This prevents the game from even running and communication with the game from outside applications when the window is not active, so you may not want it to be on. If that is a problem you will want to ensure you untick Pause emulation when window is not active.

Click Apply to save the setting. If you were running a game when you changed this setting you will need to go to the System menu and Click Resume to continue playing.

Remove the FPS Cap

This is an important racing rule! If you do not follow it, you may be disqualified from a race.

Reason: Unlimited FPS is not allowed for racing. Please ensure you do not set up keybinds you may hit on accident during a race.

To remove the FPS cap, launch Project64 and navigate to OptionsConfiguration or press Ctrl+T to open the Settings menu.

In the Settings menu, click Options and untick Hide advanced settings. Click Apply.

You should now be able to remove the FPS Cap by loading a ROM, navigating to System and clicking on Limit FPS. Alternatively, you can just press F4 on your keyboard.

Resize Emulator Window

Go to OptionsConfigure Graphics Plugin and change the Windowed Resolution to whatever you prefer.

Show ROMs in ROM List

Right-click anywhere on the white screen and click on Choose ROM Directory... Select the respective folder that your ROMs are in.

Texture Packs

This is an important racing rule! If you do not follow it, you may be disqualified from a race.

Reason: Texture packs are not allowed for races. Disable them before participating.

The following link will let you set up texture packs for Project64 v3.0.0 or newer

Required Settings for Racing

If you wish to partake in our community's races, then don't forgot to also configure the settings mentioned here.

Troubleshooting

Alt+Tabbing Crashes in Full-Screen Mode

Use the GlideN64 Video Plugin. If your PC doesn't support that plugin, you'll have to be aware to hit the "Escape" key on your keyboard before Alt+Tabbing.

Alternatively, you could also play in Windowed Mode. Navigate to OptionsConfigure Graphics Plugin... and adjust the Windowed Resolution accordingly. Click Save and Close.

Screen Flicker when Streaming

If using the GlideN64 Video Plugin, go to OptionsConfigure Graphics Plugin.... In the "Video" tab, check the "Overscan" box. Click Save and Close.

Error: uCode crc not found in INI, using currently selected uCode

This error is caused by Project64 using Project64-video not being able to find the Video.rdb file that should be in the Config directory in the Project64 folder. Double check that this file is in the right location. Also ensure you are not running Project64 from the zip file as it cannot see any of its required files and will throw strange errors like this one when it can't find them.

If you still get the error, make sure you're using Project64 v3.0.0 or newer. If your current Video (Graphics) Plugin is not already GlideN64, then change to that one. You can read here how to swap plugins. If that doesn't work, try the Project64 Video Plugin. If even this doesn't fix the issue, you can try Jabo's Direct3D8 Plugin as a last resort.