Project64: Difference between revisions

From OoT Randomizer Wiki
(Randomizer v5.1 changes)
No edit summary
(51 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<span style="font-size:x-small">'''Originally written by Tyrus'''</span>


= '''Project64 Setup for OoT Randomizer''' =
Project64 is no doubt the most popular N64 emulator available. '''<span style="color:red">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.</span>''' Randomizer staff will support Project 64 '''v2.4.0-1161-g18d1867''' which was released on May 5, 2020 and versions newer than it. We will not directly support any previous version, including 2.3.2 which is the latest stable release. Make sure you download one of the nightly builds if you wish to use Project64 for the randomizer.


<span style="font-size:x-small">'''by Tyrus'''</span>
[https://www.pj64-emu.com/nightly-builds Download Project64 nightly build] '''v2.4.0-1161-g18d1867''' release on May 5, 2020 or newer. '''Make sure you download the ZIP. The installer can cause issues.'''


{{TOClimit|5}} &nbsp;
You can dismiss the nag screen without waiting 30 seconds by pressing the <kbd>Esc</kbd> key.


== Download: [https://www.pj64-emu.com/ https://www.pj64-emu.com/] ==
== Enable Protect Memory ==


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”.
Launch Project64, and in the menu bar navigate to <kbd><samp>Options</samp> ⇒ <samp>Settings...</samp></kbd> or press <kbd><kbd>Ctrl</kbd>+<kbd>T</kbd></kbd> to open the Settings menu.


<br/> <span style="font-size:medium">'''''You will have to follow these steps for every new ROM you use!'''''</span>
In the Settings menu expand the <samp>Options</samp> list on the left and look for a <samp>Defaults</samp> section, if <samp>Defaults</samp> isn't displayed on the left than click <samp>Options</samp> and untick <samp>Hide advanced settings</samp>. Now click <samp>Defaults</samp> on the left and then tick <samp>Protect memory</samp> on the right to enable it by default. This is required for Ocarina of Time to work correctly in Project64, but is not automatically used for Randomizer.


=== '''Step 1:''' ===
== Enable Unique Game Save Directory ==


Open the ROM. You will get this error message:<br/> &nbsp;[[File:PJ64 1.png|RTENOTITLE]]<br/> Click ‘Ok’ and *another* error message will pop up:<br/> &nbsp;[[File:PJ64 2.png|RTENOTITLE]]<br/> Click ‘Ok’ once more, and then press ctrl + t<br/> This menu will pop up:<br/> [[File:PJ64 3.png|315x213px|PJ64 3.png]]
By default, Project64 uses the same save for any rom of the same game, which means that it will re-use any earlier OoT or randomizer saves you have when starting a new seed. This can cause a number of issues, including game crashes. To fix this, go to <kbd><samp>Options</samp> ⇒ <samp>Settings...</samp></kbd> and under <samp>Options</samp> find the <samp>Advanced</samp> section. If <samp>Advanced</samp> isn't displayed on the left than click <samp>Options</samp> and untick <samp>Hide advanced settings</samp>. In here, tick <samp>Unique Game Save Directory</samp>. This will make sure every seed gets it's own game save folder.


Untick ‘Hide advanced settings’<br/> Then click on the ‘Advanced’ menu that just showed up.<br/> [[File:PJ64 4.png|408x270px|PJ64 4.png]]
== Configure Controller ==
First, take a look at the [[Controller Setup]] guide. Ensure your controller is calibrated, and if you are using one of the controllers with additional setups steps in that guide make sure you follow them.


Tick ‘Remember selected cheats’ because PJ64 needs gameshark cheat codes to run properly.
In the menu bar navigate to <kbd><samp>Options</samp> ⇒ <samp>Configure controller plugin...</samp></kbd> This is where you setup your controller binds.<sup>1</sup> The buttons on the left of a box refer to the button on an N64 controller and the box next to it displays which button on a controller is currently set for using it.


=== '''Step 2:''' ===
If you are using an Xbox controller, or any controller that is an XInput device, ensure you check <samp>XInput</samp> 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.


Click ‘Config: THE LEGEND OF ZELDA’<br/> If it’s not there, load up the ROM and look again.<br/> [[File:PJ64 5.png|RTENOTITLE]]
For other controllers and keyboard users, ensure <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''.


Where it says ‘Memory size’ go ahead and change that to 8 MB, deselect '32bit Engine' and then click ‘apply’ and ‘OK’.
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>.


=== '''Step 3:''' ===
<gallery>
 
File:PJ64 11.png|1. N-Rage Input configuration menu
'''Click the + next to "config: THE LEGEND OF ZELDA"'''
File:PJ64 10.png|2. XInput binds enabled
 
</gallery>
[[File:]]
 
Deselect 'Cache', 'PI DMA', 'Start changed' and 'TLB unmapping'. Select 'Protect memory' and then click ‘apply’ and ‘OK’.
 
=== '''Step 4:''' ===
 
[[File:PJ64 6.png|235x271px|PJ64 6.png]]Press ctrl + c and then click on the bar on the right of this window<br/> In the box below ‘Code: <address>’ paste&nbsp;: 801DA5CB 0002<br/> And name it something like ‘subscreen delay fix’ (The name doesn’t matter)<br/> [[File:PJ64 7.png|458x292px|PJ64 7.png]]
 
Then click ‘Add cheat’ and it should appear on the left.<br/> Tick the cheat, then close out of that menu.
 
[[File:PJ64 8.png|523x332px|PJ64 8.png]]<br/> &nbsp;
 
=== '''Step 5 (Optional but recommended):''' ===
 
Press ctrl + t and click ‘Plugins’ and change the Video (graphics) plugin to ‘Glide64 for PJ64’<br/> Click ‘Apply’ and then ‘OK’.
 
[[File:PJ64 9.gif|RTENOTITLE]]<br/> &nbsp;
 
=== '''Step 6:''' ===
 
Once you have completed these steps, restart Project64 and open up your ROM.
 
=== '''Step 7:''' ===
 
Click ‘Options’ and ‘Configure controller plugin’
 
[[File:PJ64 11.png|RTENOTITLE]]<br/> &nbsp;<br/> Here is where you setup your controller binds.
 
<br/> For xbox controller users:<br/> * In ‘Controller Pak’, untick ‘RawData’, and in the drop down menu, select ‘MemPak’.<br/> * Tick ‘XInput’, and your binds menu will look like this:<br/> The ‘XControls’ correspond to the buttons on your controller, and ‘N64’ is what they will be bound to in-game.
 
[[File:PJ64 10.png|RTENOTITLE]]<br/> For keyboard users-<br/> * I recommend setting Analogue stick range to 100%, and in ‘Devices’, set ‘Gamepad Deadzone’ to 5%.<br/> * These settings will make it easier to aim.
 
<br/> For users of any other controller-<br/> * My only recommendation is to check out the multitude of other guides on the Internet.
 
<br/> If you want to use a mouse, for some reason, tick ‘N64 Mouse’.
 
<br/> ADDITIONAL HOTKEYS:<br/> Toggle limit fps (fast forward): f4<br/> Toggle pause: f2<br/> Save State: f5<br/> Load State: f7
 
&nbsp;
 
= Important: Delete Your PJ64 Saves =
 
PJ64 uses the same `.sra` file for all OoT ROMS, regardless of if they're randomised or not. If you loaded a vanilla ROM before rando, you must delete `THE LEGEND OF ZELDA.sra` in `Program FIles/Project64/Save`. This is because some of the flags that rando changes are set in the SRAM, meaning that if you load a rando ROM from a vanilla flagged .sra, then some flags will break (leading to bugs such as infinite Shiek cutscene).
 
If you do not load a vanilla ROM before rando, you can just delete the save files in-game.
 
'''IF YOU HAVE ANY FURTHER ISSUES, ASK IN THE DISCORD!'''

Revision as of 15:08, 9 September 2020

Originally written by Tyrus

Project64 is no doubt the most popular N64 emulator available. 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. Randomizer staff will support Project 64 v2.4.0-1161-g18d1867 which was released on May 5, 2020 and versions newer than it. We will not directly support any previous version, including 2.3.2 which is the latest stable release. Make sure you download one of the nightly builds if you wish to use Project64 for the randomizer.

Download Project64 nightly build v2.4.0-1161-g18d1867 release on May 5, 2020 or newer. Make sure you download the ZIP. The installer can cause issues.

You can dismiss the nag screen without waiting 30 seconds by pressing the Esc key.

Enable Protect Memory

Launch Project64, and in the menu bar navigate to OptionsSettings... or press Ctrl+T to open the Settings menu.

In the Settings menu expand the Options list on the left and look for a Defaults section, if Defaults isn't displayed on the left than click Options and untick Hide advanced settings. Now click Defaults on the left and then tick Protect memory on the right to enable it by default. This is required for Ocarina of Time to work correctly in Project64, but is not automatically used for Randomizer.

Enable Unique Game Save Directory

By default, Project64 uses the same save for any rom of the same game, which means that it will re-use any earlier OoT or randomizer saves you have when starting a new seed. This can cause a number of issues, including game crashes. To fix this, go to OptionsSettings... and under Options find the Advanced section. If Advanced isn't displayed on the left than click Options and untick Hide advanced settings. In here, tick Unique Game Save Directory. This will make sure every seed gets it's own game save folder.

Configure Controller

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

In the menu bar navigate to OptionsConfigure controller plugin... This is where you setup your controller binds.1 The buttons on the left of a box refer to the button on an N64 controller and the box next to it displays which button on a controller is currently set for using it.

If you are using an Xbox controller, or any controller that is an XInput device, ensure you 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, ensure 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.

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