Difference between revisions of "Project64"

From OoT Randomizer Wiki
m (Need additional assistance?: fix discord link)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<span style="font-size:x-small">'''by Tyrus'''</span>
+
<span style="font-size:x-small">'''Originally written by Tyrus'''</span>
 +
 
 +
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. '''<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>'''
 +
 
 +
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.
 +
 
 +
If you want to try to use or race with Project64 1.6 or 1.7 anyway, you can [[#Pause Framebuffer Speed Fix|fix the pause menu delay]] without using a cheat which is allowed for races.
 +
 
 +
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 [[#Unhandled Exception Error|fix unhandled exception error]] and [[#Pause Framebuffer Speed Fix|fix the pause menu delay]] steps for each and every newly randomized ROM you use on all versions of Project64, and [[#Crash Mitigations|crash mitigations]] on Project64 2.x'''''.
  
 
[https://www.pj64-emu.com/ Download Project64]
 
[https://www.pj64-emu.com/ Download Project64]
Line 5: Line 13:
 
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”.
 
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”.
  
'''''You will have to follow these steps for every new ROM you use!'''''</br>
+
== Unhandled Exception Error ==
'''''This guide targets Project64 v2.x which is not suitable for SRL racing!'''''
 
 
 
=== Enable Cheats ===
 
  
 
Open the ROM. You will get this error message:
 
Open the ROM. You will get this error message:
Line 26: Line 31:
 
[[File:PJ64 4.png]]
 
[[File:PJ64 4.png]]
  
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.
+
== Pause Framebuffer Speed Fix ==
  
=== Unhandled Exception Error ===
+
Open the ROM Settings window using <code>Ctrl+T</code> and set "Counter Factor" to "1". This setting is not well tested at the moment. Use at your own risk.
  
Click 'Config: THE LEGEND OF ZELDA'. If it’s not there, load up the ROM and look again.
+
== Crash Mitigation (2.x Only) ==
  
[[File:PJ64 5.png]]
+
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).
  
 
Where it says 'Memory size' go ahead and change that to 8 MB, deselect '32bit Engine' and then click 'apply' and 'OK'.
 
Where it says 'Memory size' go ahead and change that to 8 MB, deselect '32bit Engine' and then click 'apply' and 'OK'.
  
=== Crash Mitigation ===
+
[[File:PJ64 5.png]]
  
Click the + next to "config: THE LEGEND OF ZELDA"
+
Now click the + next to "config: THE LEGEND OF ZELDA" and then click "Recompiler" (as seen in the image below)
 
 
[[File:PJ64 Setup Step 3.png]]
 
  
 
Deselect 'Cache', 'PI DMA', 'Start changed' and 'TLB unmapping'. Select 'Protect memory' and then click 'apply' and 'OK'.
 
Deselect 'Cache', 'PI DMA', 'Start changed' and 'TLB unmapping'. Select 'Protect memory' and then click 'apply' and 'OK'.
  
=== Pause Framebuffer Emulation Speed Cheat ===
+
[[File:PJ64 Setup Step 3.png]]
 
 
[[File:PJ64 6.png]]
 
 
 
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)
 
 
 
[[File:PJ64 7.png]]
 
 
 
Then click 'Add cheat' and it should appear on the left. Tick the cheat, then close out of that menu.
 
 
 
[[File:PJ64 8.png]]
 
  
=== Change Graphics Plugin (Optional but recommended) ===
+
== Change Graphics Plugin (2.x Only Without Additional Setup) (Optional but recommended) ==
  
 
Press <code>Ctrl + T</code> and click 'Plugins' and change the Video (graphics) plugin to 'Glide64 for PJ64'. Click 'Apply' and then 'OK'.
 
Press <code>Ctrl + T</code> and click 'Plugins' and change the Video (graphics) plugin to 'Glide64 for PJ64'. Click 'Apply' and then 'OK'.
Line 62: Line 55:
 
[[File:PJ64 9.gif]]
 
[[File:PJ64 9.gif]]
  
=== Restart Project64 ===
+
== Restart Project64 ==
  
 
Once you have completed these steps, restart Project64 and open up your ROM.
 
Once you have completed these steps, restart Project64 and open up your ROM.
  
=== Configure Controller ===
+
== Configure Controller ==
  
 
Click ‘Options’ and ‘Configure controller plugin’
 
Click ‘Options’ and ‘Configure controller plugin’
Line 104: Line 97:
 
[[File:Project64 Save File Management.png|RTENOTITLE]]
 
[[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.
+
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? ==
 
== 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.
+
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 18:07, 29 December 2019

Originally written by Tyrus

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.

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.

If you want to try to use or race with Project64 1.6 or 1.7 anyway, you can fix the pause menu delay without using a cheat which is allowed for races.

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 fix unhandled exception error and fix the pause menu delay steps for each and every newly randomized ROM you use on all versions of Project64, and crash mitigations on Project64 2.x.

Download Project64

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”.

Unhandled Exception Error

Open the ROM. You will get this error message:

PJ64 1.png

Click 'OK' and another error message will pop up:

PJ64 2.png

Click 'OK' once more, and then press Ctrl + T The following menu will appear:

PJ64 3.png

Untick 'Hide advanced settings' Then click on the 'Advanced' menu that just showed up.

PJ64 4.png

Pause Framebuffer Speed Fix

Open the ROM Settings window using Ctrl+T and set "Counter Factor" to "1". This setting is not well tested at the moment. Use at your own risk.

Crash Mitigation (2.x Only)

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).

Where it says 'Memory size' go ahead and change that to 8 MB, deselect '32bit Engine' and then click 'apply' and 'OK'.

PJ64 5.png

Now click the + next to "config: THE LEGEND OF ZELDA" and then click "Recompiler" (as seen in the image below)

Deselect 'Cache', 'PI DMA', 'Start changed' and 'TLB unmapping'. Select 'Protect memory' and then click 'apply' and 'OK'.

PJ64 Setup Step 3.png

Change Graphics Plugin (2.x Only Without Additional Setup) (Optional but recommended)

Press Ctrl + T and click 'Plugins' and change the Video (graphics) plugin to 'Glide64 for PJ64'. Click 'Apply' and then 'OK'.

PJ64 9.gif

Restart Project64

Once you have completed these steps, restart Project64 and open up your ROM.

Configure Controller

Click ‘Options’ and ‘Configure controller plugin’

PJ64 11.png

Here is where you setup your controller binds.

For xbox controller users:

  • 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.

PJ64 10.png

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.

For users of any other controller my only recommendation is to check out the multitude of other guides on the Internet.

If you want to use a mouse, for some reason, tick 'N64 Mouse'.

ADDITIONAL HOTKEYS:

  • Toggle limit fps (fast forward): f4
  • Toggle pause: f2
  • Save State: f5
  • Load State: f7

Required: Managing your Save data!

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

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 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.