NTSC games on PAL N64 rolling video / shifted colours fix

for more info: Video Interface@64brew
special greetings to Roadhouse of High Society

Now... no need for paladin (& sound issues see threadmark, please download latest version) or a RGB mod... do this:
Hex edit the rom, search for 00000C150C150C15 & replace all instances with 00170C690C6F0C6D
Usually this is enough, but on some tvs you also need to do this:
search for 03E5223900 replace with 04541E3A00
key word "some TVs". as such, my personal pattern, "opt" does not automatically patch this; nor the pal2ntsc reverse ones,
Remember to fix CRC or the game will not boot. (I use rn64crc2)
If the game's compressed (ex. no pattern found) or you aren't using a copier / flashcard, you can easily create a GameShark code.
Dump the ram & search for the aforementioned values. As an example, here's the code that I made for Densha De Go. It is pretty long, since patching only a few video tables just crashed the output (tv: no video but could hear the audio)

Note: Why continuous write? Well, If I remember correctly the injector does not support F1 (write once at boot) cheat codes.
Everdrive does... but everdrive also needs "enable codes". Here's a simplified version of the code, for use with an everdrive.
F105BD20 2400 ---> enable code, thanks Shogun of gamehacking.org
F1074306 0C4D --| only video table used
F1074308 0C4D --| htotal patch taken from n64opt.json
F107430A 0C4D --| and uses F1 write once instead of 81 continuous

Anyway... the long code is below.

#VIBURST
8107425C 0454
8107425E 1E3A
810742AC 0454
810742AE 1E3A
810742FC 0454
810742FE 1E3A
8107434C 0454
8107434E 1E3A
8107439C 0454
8107439E 1E3A
810743EC 0454
810743EE 1E3A
8107443C 0454
8107443E 1E3A
8107448C 0454
8107448E 1E3A
810744DC 0454
810744DE 1E3A
8107452C 0454
8107452E 1E3A
8107457C 0454
8107457E 1E3A
810745CC 0454
810745CE 1E3A
8107461C 0454
8107461E 1E3A
8107466C 0454
8107466E 1E3A
810753DC 0454
810753DE 1E3A
8107580C 0454
8107580E 1E3A
#VIBURST_END

#HSYNC
81074264 0017
81074266 0C69
81074268 0C6F
8107426A 0C6D
810742B4 0017
810742B6 0C69
810742B8 0C6F
810742BA 0C6D
81074304 0017
81074306 0C69
81074308 0C6F
8107430A 0C6D
81074354 0017
81074356 0C69
81074358 0C6F
8107435A 0C6D
810743A4 0017
810743A6 0C69
810743A8 0C6F
810743AA 0C6D
810743F4 0017
810743F6 0C69
810743F8 0C6F
810743FA 0C6D
81074444 0017
81074446 0C69
81074448 0C6F
8107444A 0C6D
81074494 0017
81074496 0C69
81074498 0C6F
8107449A 0C6D
810744E4 0017
810744E6 0C69
810744E8 0C6F
810744EA 0C6D
81074534 0017
81074536 0C69
81074538 0C6F
8107453A 0C6D
81074584 0017
81074586 0C69
81074588 0C6F
8107458A 0C6D
810745D4 0017
810745D6 0C69
810745D8 0C6F
810745DA 0C6D
81074624 0017
81074626 0C69
81074628 0C6F
8107462A 0C6D
81074674 0017
81074676 0C69
81074678 0C6F
8107467A 0C6D
810753E4 0017
810753E6 0C69
810753E8 0C6F
810753EA 0C6D
81075814 0017
81075816 0C69
81075818 0C6F
8107581A 0C6D
#HSYNC_END

I attached a json file in order to automate the process with Garey27's Binary-AutoPatcher (you can find it on GitHub) - Big Endian (z64) input file

edit: added pal game to ntsc patterns zip for ntsc console users that have the opposite problem.
hint: if you're trying to make a pal2ntsc code/manual hex edit... search also for 00150C690C6F0C6E to patch, not only 0017...0C6D!
edit: added optimized ntsc2pal pattern zip
edit: added opt&n64 files in single zip, like the one for NTSC consoles. now includes audio fix by @LaminGaming - see threadmark for RAM patching.
edit: while the method works with most TVs, there are a few in which this fix will not be effective.
 

Attachments

Last edited by Fabax01,
  • Love
Reactions: hippy dave
Man thank you so much! With that i finally could fix the problem that my upscaler didn't want to take the Output signal of the original NTSC roms on my RGB modded PAL N64. While weirdly on my other old flatscreen with Scart input it perfectly works even without the patch. It seems like that the TV does something different than the upscaler.

I made a powershell script that automated the process of patching all the rooms in the folder, put them in an extra folder and also rename them without the ".patched" afterwards. Then I let the checksum checker run over them et voila, all of them worked, no matter if US or JP.

For anyone who wants to use it: Put the files of the patcher, the n64 json script and also the powershellscript in the same folder as your roms. Then start the powershell-script. After it's done, all the patched roms should be in the "patched" folder.

Thank you again!
 

Attachments

Last edited by Tommy_Tc,
  • Like
Reactions: Fabax01
This has worked great for most games. However, it doesn't seem to work with Goldeneye, with rn64crc just saying the CRC is OK rather than UPDATED. I do mainly use the PAL Goldeneye but i'm trying to play Goldfinger 64 and still getting the ghosting, if anyone has a way to fix this for Goldeneye specifically I'd really appreciate it.

Is there also a way to apply this fix to N64DD games?

And a fun quirk I've noticed is that the Neversoft games (Spider-Man and THPS) do work with this fix, but the ghosting remains in the menus, it goes away in game so it's not a dealbreaker.
 
This has worked great for most games. However, it doesn't seem to work with Goldeneye, with rn64crc just saying the CRC is OK rather than UPDATED. I do mainly use the PAL Goldeneye but i'm trying to play Goldfinger 64 and still getting the ghosting, if anyone has a way to fix this for Goldeneye specifically I'd really appreciate it.

Is there also a way to apply this fix to N64DD games?

And a fun quirk I've noticed is that the Neversoft games (Spider-Man and THPS) do work with this fix, but the ghosting remains in the menus, it goes away in game so it's not a dealbreaker.
What's the issue with N64DD? Black screen?
I think N64DD conversion do not use a common CIC, at least not one that rn64crc2 knows about (it's old software, after all...)
I no longer have it, but "n64.py" should be able to correctly recalculate checksum. Game should boot then.
---
About "Goldeneye" - OK = probably means that the patcher changed nothing (as in, pattern not found).
99% sure goldeneye is compressed. Can't seem to find the video tables by manually looking with an hex editor.
Please make a cheat code by looking where the video tables are located in RAM... like I did for Densha De Go
(check thread, use good old "nemu" or newer debug-enabled pj64 as your emulator of choice.)
Either then add the code to your ED64 or if you have another flashcard you can integrate the code inside the ROM using n64_gameshark_code_injector.
---
Re: Neversoft - interesting.... maybe "menu mode" video tables are loaded from compressed area?
As in, patcher can't find them -> patches only tables used by "game mode".
If this is the issue, cheat code method should also fix these Neversoft games...
 
With N64DD the games run fine but still have the ghosting, it just seems as though the patcher doesn't work with them.

With Goldeneye, I'm quite new to this stuff so i'll give it a go, though I'm currently on Summercart 64 and apparently that doesn't take Gamesharm codes yet. I also tried other methods such as changing the region of the rom with Info64 but no luck
 
With N64DD the games run fine but still have the ghosting, it just seems as though the patcher doesn't work with them.

With Goldeneye, I'm quite new to this stuff so i'll give it a go, though I'm currently on Summercart 64 and apparently that doesn't take Gamesharm codes yet. I also tried other methods such as changing the region of the rom with Info64 but no luck
Hmm... Try the code injector then. A friend with a ED64+ (which is a clone, stuck on ver 1.x, a version that doesn't support enabling game shark codes from the everdrive interface) had success enabling my Densha de go 64 code with it...
"Mini"-tutorial to make the n64 cheat:
Load rom (I used NEMU. PJ64 is way, way faster if you know what you're doing, but let's use NEMU for the sake of a "simple" explanation.)
Plugins -> Search memory.
Search value -> 00000C15, hex 32 BITS ALIGNED
Click on the results to verify (did we find 00000C150C150C15? Let's proceed.)
Focus on the last 6 numbers of the address, ignore the initial double zeros
append "81" to the address ex.
000269d4 -> 810269d4
& add what we'll write to the location AKA 00170C690C6F0C6D (pal values of: 5bit leap pattern, total duration minus one of a line in 1/4 pixels, leap a & b - the alternative duration of 1st or 2nd vsync line in 1/4 pixels)
There's no way to do 32 bit write, only 16 bit so we'll split the numbers in groups of 4.
(0017) (0C69) (0C6F) (0C6D)
Example (partial):
810269D4 0017
Now we add +2 to find next address to write to:
810269D6 0C69
& then...
810269D8 0C6F
finally...
810269DA 0C6D
hint: why A? in hex 9+1 = A, A+1 = B, B+1 = C, and so on until "F". F+1 = 10.
---
Example (full):
#GOLDENEYE PALFIX
810269D4 0017
810269D6 0C69
810269D8 0C6F
810269DA 0C6D
---
Repeat for all the other addresses found during SEARCH, add to code (check main post, see densha de go for example of long, full cheat)
////////////////
OPTIONAL:
You may also want to adjust VI_BURST (or/and "Timing", see NEMU register page) if there are still issues.
Search value -> 03E52239, hex 32 BITS ALIGNED
Same method as before...
ex. Address is 000269CC -> 810269CC
hint: verify that number of correct results match - as in, if you found 5 00000C150C150C15 there will be 5 03E52239, as it's a part of a video table. If, as an example, search returns 6 results, it means that one is extra data and not part of a video table... so double check location of data, you'll see that the correct ones are "near" each 00000C150C150C15 result.
We need to write 04541E3A
So... again, let's split in groups of 4, (0454) (1E3A)
Example (partial):
810269CC 0454
We do +2
810259CE 1E3A
--
Example (full):
#GOLDENEYE VIBURST
810269CC 0454
810259CE 1E3A
---
Repeat for all the other addresses found during SEARCH, add to code (check main post, see densha de go for example of long, full cheat)
Re: 64DD
Sorry - can't help you there.
Never cared much for 64DD, but a few years ago the common method was to use converted roms (z64 extension)
Seems like the "Summercart" expects 64DD disc drive images... Even if you could patch these images (by the way, I'm not sure why you couldn't... a simple search with an hex editor in one of them reveals clear video tables...)
I think the game wouldn't boot if you don't fix the checksum... which rn64crc2 cannot do, as I said before.
Not for the disk images, nor for the zoinkity conversions.
If they one day implement GS codes in the summercart (I don't think n64 code injector works with dd conversions), you could craft a cheat code, exactly in the same way as one for a compressed, cart game (using PJ64, I think it supports DD games nowadays)
 
Last edited by Fabax01,
Thanks so much for the detailed reply, I'll give this a go at the weekend when I have time. I'm assuming it's one of those things that looks less complicated when you actually do it and even then it doesn't look so bad
 
So my attempt almost worked. I put Goldfinger 64 into NEMU and made the code, and it didn't work, giving me errors on NEMU and PJ64 and blackscreening on my SC64. Out of curiousity I applied the code to a stock US Goldeneye rom and it actually worked, at least on NEMU and PJ64. So i'm unsure if it's just the romhacks being weird (I tried Goldfinger and Tomorrow Never Dies) or an error on my part with me being new to this, but props to your tutorial for actually getting me some success as someone who's never done this before, if I come across any more compressed roms this will work a treat.
For reference, this is my code:

#VIBURST
810269CC 0454
810269CE 1E3A
81026A1C 0454
81026A1E 1E3A
81026A6C 0454
81026A6E 1E3A
81026ABC 0454
81026ABE 1E3A
81026B0C 0454
81026B0E 1E3A
81026B5C 0454
81026B5E 1E3A
81026BAC 0454
81026BAE 1E3A
81026BFC 0454
81026BFE 1E3A
81026C4C 0454
81026C4E 1E3A
81026C9C 0454
81026C9E 1E3A
81026CEC 0454
81026CEE 1E3A
81026D3C 0454
81026D3E 1E3A
81026D8C 0454
81026D8E 1E3A
81026DDC 0454
81026DDE 1E3A
#VIBURST_END

#HSYNC
810269D4 0017
810269D6 0C69
810269D8 0C6F
810269DA 0C6D
81026A24 0017
81026A26 0C69
81026A28 0C6F
81026A2A 0C6D
81026A74 0017
81026A76 0C69
81026A78 0C6F
81026A7A 0C6D
81026AC4 0017
81026AC6 0C69
81026AC8 0C6F
81026ACA 0C6D
81026B14 0017
81026B16 0C69
81026B18 0C6F
81026B1A 0C6D
81026B64 0017
81026B66 0C69
81026B68 0C6F
81026B6A 0C6D
81026BB4 0017
81026BB6 0C69
81026BB8 0C6F
81026BBA 0C6D
81026C04 0017
81026C06 0C69
81026C08 0C6F
81026C0A 0C6D
81026C54 0017
81026C56 0C69
81026C58 0C6F
81026C5A 0C6D
81026CA4 0017
81026CA6 0C69
81026CA8 0C6F
81026CAA 0C6D
81026CF4 0017
81026CF6 0C69
81026CF8 0C6F
81026CFA 0C6D
81026D44 0017
81026D46 0C69
81026D48 0C6F
81026D4A 0C6D
81026D94 0017
81026D96 0C69
81026D98 0C6F
81026D9A 0C6D
81026DE4 0017
81026DE6 0C69
81026DE8 0C6F
81026DEA 0C6D
#HSYNC_END
 
Last edited by thunder_gun1,
  • Like
Reactions: Fabax01
Hello @thunder_gun1 and sorry for the late response.
Nice to see that you've successfully made a code :grog:! I've tested it on real hardware (injected retail usa goldeneye) and it works.
Don't worry - it is not the fault of your code, but of the code injector. Doesn't work with these hackroms...
You can easily verify this by simply pressing "patch" without inserting any cheats.
Retail goldeneye will boot, "Goldfinger" will not. Try contacting the author, maybe they can sort out a solution.
 
Hello @thunder_gun1 and sorry for the late response.
Nice to see that you've successfully made a code :grog:! I've tested it on real hardware (injected retail usa goldeneye) and it works.
Don't worry - it is not the fault of your code, but of the code injector. Doesn't work with these hackroms...
You can easily verify this by simply pressing "patch" without inserting any cheats.
Retail goldeneye will boot, "Goldfinger" will not. Try contacting the author, maybe they can sort out a solution.

Glad to hear the code works on your end too, and thanks again for putting such a good guide together. While it doesn't get the game working it's quite comforting knowing it isn't my fault haha. I'll try contacting them too
 
Glad to hear the code works on your end too, and thanks again for putting such a good guide together. While it doesn't get the game working it's quite comforting knowing it isn't my fault haha. I'll try contacting them too
Bad news :mellow:
I did a closer inspection (this time) using headphones.
Rare must've optimized the hell out of Goldeneye between PAL & NTSC ver.

Minimal patch that you can do in games to fix rolling video is to change only 0000--->0C15<---0C150C15
PAL = 0C69
PAL_M = 0C12
Not that I suggest patching only H_TOTAL without touching leap and all (you'll have screen glitches, such as shaking...) but the image will, at least, not roll. Useful to know if you need to do a quick - does the tv sync? - test.

Well, if you edit this in any way in Goldeneye the audio will become kinda fucky...
So your code works..! but you get bad audio instead. Sorry, never happened in other games...
At least it's not like "paladin", which forces 50Hz, inherently causing audio issues in ALL games.
---
BTW, I have tested "Spider-Man", my hunch was correct.
You'll find a lonely 00000C150C150C15 in RAM :P even when it's patched with the tool.
And the menu uses NTSC video table (you can check from the register page in Nemu) and switches to PAL when in game.
"OK, I'll make a code!" there's a catch - spider man still doesn't work with the injector, so guess you're out of luck...
 
Last edited by Fabax01,
That's actually crazy, trust me to find a bunch of games that end up being really weird to fix haha. Tbf with Spider-Man and THPS3 I can live with the graphics being weird in the menus so it isn't a big issue. The one curiousity I have now is that sketchy ebay sellers have repro carts of Goldfinger and Tomorrow Never Dies and advertise them as PAL. I wonder if they have the ghosting too or if they've done something else to them. I don't think it's worth spending £40 on a cart to find out though
Post automatically merged:

So it seems to be a Rare thing. I tried running the patcher on Banzo-Kazooie (I was wanting to play Nostalgia 64) and the same thing happened. I haven't deep-dived or tried to make a code with it since it'd probably lead to the same result as Goldeneye, but it seems Rare really like to compress their games :rofl2:
 
Last edited by thunder_gun1,
Hello,

here's a bit of "experimentation"...
Any expert feel free to chime in if I got something wrong.

"lines per field" = VI_V_SYNC_REG (value /2)
"dots per line" = VI_H_SYNC_REG (value +1)/4
"pixel clock" = videoclock /4

PAL video clock: 49656530Hz
PAL color subcarrier: 4433618.75Hz
PAL chroma period formula: 4433618.75/x=(49656530/4)/1/(3178/4) = 283.75

  • default video modes:
[email protected] reported by ossc users.
(49656530/4)=x*313*(3178/4) --> x = 49.920409283472Hz

[email protected] reported by ossc users.
(49656530/4)=x*312.5*(3178/4) --> x = 50.000281938326Hz

here's what happens when you try to play a NTSC game on a PAL console without patching!
(49656530/4)=x*263*(3094/4) --> x = 61.02Hz

  • ntsc2pal optimized

refresh rate:
(49656530/4)=x*263*(3150/4) --> x = 59.93Hz
(49656530/4)=x*262.5*(3150/4) --> x = 60.05Hz


chroma:
4433618.75/x=(49656530/4)/263/(3150/4) --> result is 73968.75
4433618.75/x=(49656530/4)/525/(3150/4) --> result is 147656.25



  • swap (old method)
refresh rate:
(49656530/4)=x*263*(3178/4) --> x = 59.41Hz
(49656530/4)=x*262.5*(3178/4) --> x = 59.52Hz


chroma:
4433618.75/x=(49656530/4)/263/(3178/4) --> result is 74626.25
4433618.75/x=(49656530/4)/525/(3178/4) --> result is 148968.75


  • near ntsc:
If you are using composite... expect a lot of artifacts with this preset.
may be useful for RGB SCART and S-VIDEO users that want freq near ntsc console

I also did the same tests with s-video and had no issues, which is most likely because of chroma being separate from luma.

(49656530/4)=59.82*263*(y/4) --> y = 3156.27
progressive mode: 3156 nets 59.82Hz (or 3155, which results in 59.84Hz)
interlaced mode: 3156 nets 59.93Hz (or 3155, which results in 59.95Hz)
----


NTSC video clock: 48681812Hz
NTSC color subcarrier: 3579545Hz
NTSC chroma period formula: 3579545/x=(48681812/4)/1/(3094/4) = 227.5

  • default video modes:
[email protected] reported by ossc users.
(48681812/4)=x*263*(3094/4) --> x = 59.826097856516Hz

[email protected] reported by ossc users.
(48681812/4)=x*262.5*(3094/4) --> x = 59.940052328624Hz

here's what happens when you try to play a PAL game on NTSC console without patching!
(48681812/4)=x*313*(3178/4) --> x = 48.94Hz

  • swap. cannot test, only have PAL n64 at hand
refresh rate:
(48681812/4)=x*313*(3094/4) --> x = 50.26Hz
(48681812/4)=x*312.5*(3094/4) --> x = 50.34Hz


chroma:
3579545/x=(48681812/4)/313/(3094/4) --> result is 71207.5
3579545/x=(48681812/4)/625/(3094/4) --> result is 142187.5


  • pal2ntsc alternative. cannot test, only have PAL n64 at hand
refresh rate:
(48681812/4)=x*313*(3162/4) --> x = 49.18Hz
(48681812/4)=x*312.5*(3162/4) --> x = 49.26Hz


chroma:
3579545/x=(48681812/4)/313/(3162/4) --> result is 72772.5
3579545/x=(48681812/4)/625/(3162/4) --> result is 145312.5

  • near pal. cannot test, only have PAL n64 at hand
If you are using composite... expect a lot of artifacts with this preset.
may be useful for RGB SCART and S-VIDEO users that want freq near pal console

I also did the same tests with s-video and had no issues, which is most likely because of chroma being separate from luma.

(48681812/4)=49.92*313*(y/4) --> y = 3115.6
progressive mode: 3116 nets 49.91Hz (or 3115, which results in 49.93Hz)
interlaced mode: 3116 nets 49.99Hz (or 3115, which results in 50.01Hz)
 
Last edited by Fabax01,
rareware audio fix by lamingaming
Bad news :mellow:
I did a closer inspection (this time) using headphones.
Rare must've optimized the hell out of Goldeneye between PAL & NTSC ver.

Minimal patch that you can do in games to fix rolling video is to change only 0000--->0C15<---0C150C15
PAL = 0C69
PAL_M = 0C12
Not that I suggest patching only H_TOTAL without touching leap and all (you'll have screen glitches, such as shaking...) but the image will, at least, not roll. Useful to know if you need to do a quick - does the tv sync? - test.

Well, if you edit this in any way in Goldeneye the audio will become kinda fucky...
So your code works..! but you get bad audio instead. Sorry, never happened in other games...
At least it's not like "paladin", which forces 50Hz, inherently causing audio issues in ALL games.
---
BTW, I have tested "Spider-Man", my hunch was correct.
You'll find a lonely 00000C150C150C15 in RAM :P even when it's patched with the tool.
And the menu uses NTSC video table (you can check from the register page in Nemu) and switches to PAL when in game.
"OK, I'll make a code!" there's a catch - spider man still doesn't work with the injector, so guess you're out of luck...
After some thorough testing, I think I figured out how to fix the audio for Rare games. By comparing the RDRAM of Diddy Kong Racing in both NTSC and PAL modes, I discovered some bytes that were different between them. Looking at these bytes in a programmer calculator shows the video clock rates: 02E6D354 is 48681812Hz (NTSC) and 02F5B2D2 is 49656530Hz (PAL). The audio seems to be using the video clock to control its speed, hence why there's either distortion or it isn't being slowed down to sync up with the video, e.g. the DK rap in DK64.

Simply swapping these video clocks around fixes the audio with every NTSC Rare game I've tried, except for Banjo-Kazooie v1.1 and Banjo-Tooie. For those games, they have two sets of these bytes for some reason. Changing the first one crashes the game, and the other is the one that's supposed to work (this is the case for Banjo-Kazooie v1.0). But no matter what I tried I couldn't get them to work.

As an example, here's some code I created for Banjo-Kazooie v1.0:
81277128 02F5
8127712A B2D2

Also, I wanted to talk about my findings with video tables as well. For the most part, every game only ever requires one of these tables to be changed in order to work, so that helps to mitigate having to create a big list of codes lol.

I can even simplify my code down further if I use a repeater code, using Banjo v1.0 as another example:
50000302 0000
80275C97 0053

However, there are some that require multiple tables, around two or three depending on the game. An easy way to check this is to look at the VI registers in an emulator at 0xA4400000. The video table seems to change primarily when the resolution changes, i.e. 240p to 480i and vice versa, but not always.

Edit: After doing a memory search with 02E6 and D354 separately, I found other instances of those values. Changing these values fixed the audio for Banjo-Kazooie v1.1 and Banjo-Tooie.

Edit 2: I realised the audio is still incorrect for the other refresh rates, use these instead:

02FAFE22 for 59.41Hz
02F44533 for 59.94Hz

Also, for 59.83Hz, I recommend using 02F5B5F8 instead of 02F5B2D2. As the refresh is actually 59.825Hz rather than 59.826Hz that the NTSC N64 outputs. This is because each scanline has to consist of 3156 VCLK cycles. In order to match the refresh for NTSC, it would need to be 3155.95 VCLK cycles, which isn't possible, as it has to be a whole number when converted to hex. So rounding it up to 3156 is the closest you can get. The same thing happens with PAL on NTSC, 3115.62 has to be rounded up to 3116, making the refresh 49.91Hz instead of 49.92Hz.

Here's the ones for PAL on NTSC:

02F1E241 for 49.19Hz
02E6EA9F for 49.91Hz
02E1ABD7 for 50.27Hz

Maths:

49656530/313/3178 = 49.9204092835
49656530/263/3156 = 59.8251263813
3094/48681812*49656530 = 3155.9487518665
49656530/263/3155.9487518665 = 59.8260978565

48681812/263/3094 = 59.8260978565
48681812/313/3116 = 49.9142957917
3178/49656530*48681812 = 3115.6183997553
48681812/313/3115.6183997553 = 49.9204092835

3094/3178*49656530 = 48344022.6
3116/3178*49656530 = 48687774.5
3162/3178*49656530 = 49406528.6
3150/3094*48681812 = 49562930.8
3156/3094*48681812 = 49657336.4
3178/3094*48681812 = 50003490.2

48344023 = 02E1ABD7
48687775 = 02E6EA9F
49406529 = 02F1E241
49562931 = 02F44533
49657336 = 02F5B5F8
50003490 = 02FAFE22

These GameShark codes are for NTSC-U Rareware games on the PAL N64. They are needed to change the video refresh rate from 61.02Hz to 59.83Hz and fix audio issues that occur as a result of this change. I've also included master codes for some games in order for the codes to work on an everdrive, in my case, the EverDrive-64 X5 by Krikzz.

PATCHING PROCESS

For the video fix, search and replace all instances of 0C150C150C15 with 0C530C530C53. The amount of video tables can vary per game, but in most cases only one table actually needs to be changed. An easy way to check this is to look at the VI registers in an emulator. Also, to help avoid creating a big list of codes, I recommend using repeater codes alongside them that simply repeats the process whilst having less codes overall.

For the audio fix, replacing 02E6D354 with 02F5B5F8 will work in almost all cases, except for some games that require other values to be changed in the same way as a ROM patch. For these values, they can be structured differently depending on the game, so doing a wildcard search for either 02E6????D354 or 02E6????????????????????D354 is the best way to locate them. Also, unlike the first method (which uses 81 opcode), you might have to set the opcode to F1 in some cases.

Banjo-Kazooie
v1.0

50000302 0000
80275A0F 0053
50000302 0000
80275C97 0053
50000302 0000
802775E7 0053
81277128 02F5
8127712A B5F8
v1.1
50000302 0000
8027496F 0053
50000302 0000
80274A97 0053
50000302 0000
80276437 0053
8123F7D2 02F5
8123F7DE B5F8

Banjo-Tooie
50000302 0000
8003F49F 0053
50000302 0000
8003F4F7 0053
50000302 0000
80041667 0053
810125FE 02F5
8101260A B5F8

Blast Corps
v1.0

50000E50 0000
80306DD7 0053
50000E50 0000
80306DD9 0053
50000E50 0000
80306DDB 0053
50000302 0000
80307757 0053
81306D8C 02F5
81306D8E B5F8
v1.1
50000E50 0000
80306E87 0053
50000E50 0000
80306E89 0053
50000E50 0000
80306E8B 0053
50000302 0000
80307807 0053
81306E3C 02F5
81306E3E B5F8

Conker's Bad Fur Day
50000302 0000
8002ABA7 0053
50000302 0000
8002BEE7 0053
8102BDE8 02F5
8102BDEA B5F8

Diddy Kong Racing
v1.0

50000E50 0000
800E3917 0053
50000E50 0000
800E3919 0053
50000E50 0000
800E391B 0053
50000302 0000
800E4637 0053
50000302 0000
800E4727 0053
810E4878 02F5
810E487A B5F8
v1.1
50000E50 0000
800E3EA7 0053
50000E50 0000
800E3EA9 0053
50000E50 0000
800E3EAB 0053
50000302 0000
800E4BC7 0053
50000302 0000
800E4CB7 0053
810E4E08 02F5
810E4E0A B5F8

Dinosaur Planet
50000E50 0000
80096CE7 0053
50000E50 0000
80096CE9 0053
50000E50 0000
80096CEB 0053
50000302 0000
80098047 0053
81096C48 02F5
81096C4A B5F8

Donkey Kong 64
FF5FAE00 0000
50000E50 0000
8000EF37 0053
50000E50 0000
8000EF39 0053
50000E50 0000
8000EF3B 0053
50000302 0000
800102C7 0053
810100A8 02F5
810100AA B5F8

GoldenEye 007
50000E50 0000
800269D7 0053
50000E50 0000
800269D9 0053
50000E50 0000
800269DB 0053
50000302 0000
80028337 0053
8102804C 02F5
8102804E B5F8

Jet Force Gemini
50000450 0000
800A9B67 0053
50000450 0000
800A9B69 0053
50000450 0000
800A9B6B 0053
810A9F18 02F5
810A9F1A B5F8

Killer Instinct Gold
v1.0/v1.1

50000E50 0000
800066E7 0053
50000E50 0000
800066E9 0053
50000E50 0000
800066EB 0053
50000302 0000
80007097 0053
8100705C 02F5
8100705E B5F8
v1.2
50000E50 0000
800066D7 0053
50000E50 0000
800066D9 0053
50000E50 0000
800066DB 0053
50000302 0000
80007087 0053
8100704C 02F5
8100704E B5F8

Mickey's Speedway USA
50000450 0000
80080547 0053
50000450 0000
80080549 0053
50000450 0000
8008054B 0053
810808F8 02F5
810808FA B5F8

Perfect Dark
v1.0/v1.1

FF72C5A0 0000
50000E50 0000
8005F727 0053
50000E50 0000
8005F729 0053
50000E50 0000
8005F72B 0053
50000302 0000
800612F7 0053
8105CF68 02F5
8105CF6A B5F8
These GameShark codes are for NTSC-J Rareware games on the PAL N64. They are needed to change the video refresh rate from 61.02Hz to 59.83Hz and fix audio issues that occur as a result of this change. I've also included master codes for some games in order for the codes to work on an everdrive, in my case, the EverDrive-64 X5 by Krikzz.

PATCHING PROCESS

For the video fix, search and replace all instances of 0C150C150C15 with 0C530C530C53. The amount of video tables can vary per game, but in most cases only one table actually needs to be changed. An easy way to check this is to look at the VI registers in an emulator. Also, to help avoid creating a big list of codes, I recommend using repeater codes alongside them that simply repeats the process whilst having less codes overall.

For the audio fix, replacing 02E6D354 with 02F5B5F8 will work in almost all cases, except for some games that require other values to be changed in the same way as a ROM patch. For these values, they can be structured differently depending on the game, so doing a wildcard search for either 02E6????D354 or 02E6????????????????????D354 is the best way to locate them. Also, unlike the first method (which uses 81 opcode), you might have to set the opcode to F1 in some cases.

Banjo to Kazooie no Daibouken
50000302 0000
8027496F 0053
50000302 0000
80274A97 0053
50000302 0000
80276437 0053
8123F7D2 02F5
8123F7DE B5F8

Banjo to Kazooie no Daibouken 2
50000302 0000
8003EC3F 0053
50000302 0000
8003EC97 0053
50000302 0000
80040E07 0053
8101256E 02F5
8101257A B5F8

Blastdozer
50000E50 0000
80307117 0053
50000E50 0000
80307119 0053
50000E50 0000
8030711B 0053
50000302 0000
80307A97 0053
813070CC 02F5
813070CE B5F8

Diddy Kong Racing
50000E50 0000
800E5477 0053
50000E50 0000
800E5479 0053
50000E50 0000
800E547B 0053
50000302 0000
800E6197 0053
50000302 0000
800E6287 0053
810E63D8 02F5
810E63DA B5F8

Donkey Kong 64
FF5F8600 0000
50000E50 0000
8000F1F7 0053
50000E50 0000
8000F1F9 0053
50000E50 0000
8000F1FB 0053
50000302 0000
80010587 0053
81010368 02F5
8101036A B5F8

GoldenEye 007
50000E50 0000
80026A17 0053
50000E50 0000
80026A19 0053
50000E50 0000
80026A1B 0053
50000302 0000
80028377 0053
8102808C 02F5
8102808E B5F8

Mickey no Racing Challenge USA
50000450 0000
80080647 0053
50000450 0000
80080649 0053
50000450 0000
8008064B 0053
810809F8 02F5
810809FA B5F8

Perfect Dark
FF74FF90 0000
50000E50 0000
8005F5E7 0053
50000E50 0000
8005F5E9 0053
50000E50 0000
8005F5EB 0053
50000302 0000
800611B7 0053
810611F8 02F5
810611FA B5F8

Star Twins
50000450 0000
800A9A77 0053
50000450 0000
800A9A79 0053
50000450 0000
800A9A7B 0053
810A9E28 02F5
810A9E2A B5F8
These GameShark codes are for PAL Rareware games on the NTSC N64. They are needed to change the video refresh rate from 48.94Hz to 49.91Hz and fix audio issues that occur as a result of this change. I've also included master codes for some games in order for the codes to work on an everdrive, in my case, the EverDrive-64 X5 by Krikzz.

PATCHING PROCESS

For the video fix, search and replace all instances of 00170C690C6F0C6D and 00150C690C6F0C6E with 00000C2B0C2B0C2B. The amount of video tables can vary per game, but in most cases only one table actually needs to be changed. An easy way to check this is to look at the VI registers in an emulator. Also, to help avoid creating a big list of codes, I recommend using repeater codes alongside them that simply repeats the process whilst having less codes overall.

For the audio fix, replacing 02F5B2D2 with 02E6EA9F will work in almost all cases, except for some games that require other values to be changed in the same way as a ROM patch. For these values, they can be structured differently depending on the game, so doing a wildcard search for either 02F5????B2D2 or 02F5????????????B2D2 is the best way to locate them. Also, unlike the first method (which uses 81 opcode), you might have to set the opcode to F1 in some cases.

Banjo-Kazooie
802758BD 0000
50000302 0000
802758BF 002B
80275A35 0000
50000302 0000
80275A37 002B
80277295 0000
50000302 0000
80277297 002B
8124076A 02E6
8124076E EA9F

Banjo-Tooie
8003EBCD 0000
50000302 0000
8003EBCF 002B
8003ECC5 0000
50000302 0000
8003ECC7 002B
80040CF5 0000
50000302 0000
80040CF7 002B
81012536 02E6
8101254A EA9F

Blast Corps
802FDB55 0000
50000302 0000
802FDB57 002B
802FDBA5 0000
50000302 0000
802FDBA7 002B
50000E50 0000
80306D35 0000
50000E50 0000
80306D37 002B
50000E50 0000
80306D39 002B
50000E50 0000
80306D3B 002B
803072A5 0000
50000302 0000
803072A7 002B
812DC2EA 02E6
812DC2EE EA9F

Conker's Bad Fur Day
8002AEE5 0000
50000302 0000
8002AEE7 002B
8002AF35 0000
50000302 0000
8002AF37 002B
8002C195 0000
50000302 0000
8002C197 002B
8102C138 02E6
8102C13A EA9F

Diddy Kong Racing
v1.0

50000E50 0000
800E3E05 0000
50000E50 0000
800E3E07 002B
50000E50 0000
800E3E09 002B
50000E50 0000
800E3E0B 002B
800E4715 0000
50000302 0000
800E4717 002B
800E4805 0000
50000302 0000
800E4807 002B
810E4908 02E6
810E490A EA9F
v1.1
50000E50 0000
800E4395 0000
50000E50 0000
800E4397 002B
50000E50 0000
800E4399 002B
50000E50 0000
800E439B 002B
800E4CA5 0000
50000302 0000
800E4CA7 002B
800E4D95 0000
50000302 0000
800E4D97 002B
810E4E98 02E6
810E4E9A EA9F

Donkey Kong 64
FF5F3E00 0000
8000E099 0000
50000302 0000
8000E09B 002B
8000E0E9 0000
50000302 0000
8000E0EB 002B
50000E50 0000
8000F615 0000
50000E50 0000
8000F617 002B
50000E50 0000
8000F619 002B
50000E50 0000
8000F61B 002B
50000E50 0000
8000FED5 0000
50000E50 0000
8000FED7 002B
50000E50 0000
8000FED9 002B
50000E50 0000
8000FEDB 002B
800104A5 0000
50000302 0000
800104A7 002B
81010328 02E6
8101032A EA9F

GoldenEye 007
50000E50 0000
800228A5 0000
50000E50 0000
800228A7 002B
50000E50 0000
800228A9 002B
50000E50 0000
800228AB 002B
80023B15 0000
50000302 0000
80023B17 002B
8100D776 02E6
8100D77A EA9F

Jet Force Gemini
800A9D45 0000
50000302 0000
800A9D47 002B
50000350 0000
800AA015 0000
50000302 0000
800AA017 002B
50000302 0000
800AA067 002B
50000302 0000
800AA0B7 002B
810AA198 02E6
810AA19A EA9F

Killer Instinct Gold
50000E50 0000
80006B55 0000
50000E50 0000
80006B57 002B
50000E50 0000
80006B59 002B
50000E50 0000
80006B5B 002B
800070F5 0000
50000302 0000
800070F7 002B
8100706C 02E6
8100706E EA9F

Mickey's Speedway USA
800807E5 0000
50000302 0000
800807E7 002B
50000350 0000
80080AB5 0000
50000302 0000
80080AB7 002B
50000302 0000
80080B07 002B
50000302 0000
80080B57 002B
81080C38 02E6
81080C3A EA9F

Perfect Dark
FF730000 0000
50000E50 0000
8005F835 0000
50000E50 0000
8005F837 002B
50000E50 0000
8005F839 002B
50000E50 0000
8005F83B 002B
50000E50 0000
800600F5 0000
50000E50 0000
800600F7 002B
50000E50 0000
800600F9 002B
50000E50 0000
800600FB 002B
80060F05 0000
50000302 0000
80060F07 002B
810519CA 02E6
810519CE EA9F

Edit 3: Thought to give an update on the audio fix. It turns out that it isn't just Rare games that have audio issues, but also other games that appeared to be fine initially before further inspection.

After testing with and without the fix, and comparing with their PAL counterparts, I've found that all non-Rare games either have correct tempo with incorrect pitch or incorrect tempo and pitch. Neither creates distortion like the majority of Rare's games, so that's why it was hard to tell initially. Now knowing this, I've created more codes for the rest of my games, and also created a list below if anyone wants to have them.

007 The World Is Not Enough
F10A9240 2400
F10A6804 1000
50000E50 0000
800CFED7 0053
50000E50 0000
800CFED9 0053
50000E50 0000
800CFEDB 0053
50000302 0000
800D1177 0053
810D1078 02F5
810D107A B5F8

F-Zero X
50000E50 0000
800D1D17 0053
50000E50 0000
800D1D19 0053
50000E50 0000
800D1D1B 0053
50000302 0000
800D3007 0053
810D1CE8 02F5
810D1CEA B5F8

Mario Golf
F10B1670 2400
50000E50 0000
800C8287 0053
50000E50 0000
800C8289 0053
50000E50 0000
800C828B 0053
50000302 0000
800C9587 0053
810C9468 02F5
810C946A B5F8

Mario Kart 64
50000E50 0000
800EA637 0053
50000E50 0000
800EA639 0053
50000E50 0000
800EA63B 0053
50000302 0000
800EB567 0053
810EB438 02F5
810EB43A B5F8

Mario Party
50000E50 0000
800C6587 0053
50000E50 0000
800C6589 0053
50000E50 0000
800C658B 0053
50000302 0000
800C77E7 0053
810C7728 02F5
810C772A B5F8

Mario Party 2
F10ADD80 2400
50000E50 0000
800CDF27 0053
50000E50 0000
800CDF29 0053
50000E50 0000
800CDF2B 0053
50000302 0000
800CF447 0053
810CF0A8 02F5
810CF0AA B5F8

Mario Party 3
F10824D0 2400
50000E50 0000
800A2E17 0053
50000E50 0000
800A2E19 0053
50000E50 0000
800A2E1B 0053
50000302 0000
800A4127 0053
810A3FA8 02F5
810A3FAA B5F8

Mario Tennis
F1300290 3C01
F1300292 A005
F1300298 03E0
F130029A 0008
F130029C AC20
F130029E 86A0
50000302 0000
8005B557 0053
8105B648 02F5
8105B64A B5F8

Paper Mario
DE025C00 0000
F106C6B0 2400
50000E50 0000
800946B7 0053
50000E50 0000
800946B9 0053
50000E50 0000
800946BB 0053
50000302 0000
80095837 0053
810958F8 02F5
810958FA B5F8

Pilotwings 64
50000E50 0000
8024B7E7 0053
50000E50 0000
8024B7E9 0053
50000E50 0000
8024B7EB 0053
50000302 0000
8024C4B7 0053
8124C17C 02F5
8124C17E B5F8

Quake
50000E50 0000
8006F8A7 0053
50000E50 0000
8006F8A9 0053
50000E50 0000
8006F8AB 0053
50000302 0000
80070AE7 0053
8106F848 02F5
8106F84A B5F8

Quake II
F0000319 0078
50000E50 0000
8006C157 0053
50000E50 0000
8006C159 0053
50000E50 0000
8006C15B 0053
50000302 0000
8006CF87 0053
8106BE18 02F5
8106BE1A B5F8

Rayman 2: The Great Escape
EE000000 0000
50000E50 0000
8001A3B7 0053
50000E50 0000
8001A3B9 0053
50000E50 0000
8001A3BB 0053
50000302 0000
8001B0F7 0053
50000302 0000
8001B147 0053
F10040CE 02F5
F10040DA B5F8

Star Fox 64
v1.0

50000302 0000
800C3867 0053
810C3998 02F5
810C399A B5F8
v1.1
50000302 0000
800C7CE7 0053
810C7E18 02F5
810C7E1A B5F8

Star Wars Episode I: Racer
EE000000 0000
50000E50 0000
800A69D7 0053
50000E50 0000
800A69D9 0053
50000E50 0000
800A69DB 0053
50000302 0000
800A8087 0053
810A7B48 02F5
810A7B4A B5F8

Super Mario 64
50000E50 0000
80335027 0053
50000E50 0000
80335029 0053
50000E50 0000
8033502B 0053
50000302 0000
80335AB7 0053
81335A2C 02F5
81335A2E B5F8

Super Smash Bros.
F10396B0 2400
50000302 0000
8003D4C7 0053
50000302 0000
800404DF 0053
50000302 0000
80044EFF 0053
50000302 0000
80044F4F 0053
8103D3F8 02F5
8103D3FA B5F8

The Legend of Zelda: Majora's Mask
F1080228 2400
F1096820 2400
FF050000 0000
50000302 0000
80097557 0053
50000302 0000
80097EC7 0053
50000302 0000
80097FD7 0053
50000302 0000
8009B257 0053
50000302 0000
801DF0E7 0053
81097E58 02F5
81097E5A B5F8

The Legend of Zelda: Ocarina of Time
v1.0/v1.1

F10004E4 2400
EE000000 0000
50000302 0000
800063D7 0053
50000302 0000
80007CE7 0053
81006358 02F5
8100635A B5F8
v1.2
F10004E4 2400
EE000000 0000
50000302 0000
80006957 0053
50000302 0000
80008317 0053
810068D8 02F5
810068DA B5F8

Turok: Dinosaur Hunter
v1.0

50000E50 0000
800EE457 0053
50000E50 0000
800EE459 0053
50000E50 0000
800EE45B 0053
50000302 0000
800EF687 0053
810EF288 02F5
810EF28A B5F8
v1.1/v1.2
50000E50 0000
800EE5A7 0053
50000E50 0000
800EE5A9 0053
50000E50 0000
800EE5AB 0053
50000302 0000
800EF7D7 0053
810EF3D8 02F5
810EF3DA B5F8

Turok: Rage Wars
v1.0

50000302 0000
800D3107 0053
50000E50 0000
800D31F7 0053
50000E50 0000
800D31F9 0053
50000E50 0000
800D31FB 0053
810D3F00 02F5
810D3F02 B5F8
v1.1
50000302 0000
800D8487 0053
50000E50 0000
800D8577 0053
50000E50 0000
800D8579 0053
50000E50 0000
800D857B 0053
810D9280 02F5
810D9282 B5F8

Turok 2: Seeds of Evil
v1.0

50000302 0000
800B7B07 0053
50000E50 0000
800B7BF7 0053
50000E50 0000
800B7BF9 0053
50000E50 0000
800B7BFB 0053
810B8900 02F5
810B8902 B5F8
v1.1
50000302 0000
800B9DC7 0053
50000E50 0000
800B9EB7 0053
50000E50 0000
800B9EB9 0053
50000E50 0000
800B9EBB 0053
810BABC0 02F5
810BABC2 B5F8

Turok 3: Shadow of Oblivion
F10DD2EC 2400
EE000000 0000
50000E50 0000
8010BE37 0053
50000E50 0000
8010BE39 0053
50000E50 0000
8010BE3B 0053
50000302 0000
80110707 0053
8110BC40 02F5
8110BC42 B5F8

Wave Race 64: Kawasaki Jet Ski
v1.0

50000E50 0000
800E8467 0053
50000E50 0000
800E8469 0053
50000E50 0000
800E846B 0053
50000302 0000
800E8EE7 0053
810E8E3C 02F5
810E8E3E B5F8
v1.1
50000E50 0000
800E86E7 0053
50000E50 0000
800E86E9 0053
50000E50 0000
800E86EB 0053
50000302 0000
800E9167 0053
810E90BC 02F5
810E90BE B5F8

Yoshi's Story
DE000400 0000
EE000000 0000
50000E50 0000
800AAC77 0053
50000E50 0000
800AAC79 0053
50000E50 0000
800AAC7B 0053
50000302 0000
800ABA47 0053
810AAC48 02F5
810AAC4A B5F8

Edit 4: To help automate the process for ROM patches, I've created some json files with search patterns for both NTSC and PAL to use with the Binary-AutoPatcher by Garey27. You can't patch every game, however, so here's a list of games to avoid:

Banjo-Kazooie
Banjo-Tooie
Blast Corps
GoldenEye 007
Mario Tennis
Perfect Dark
Super Smash Bros.
Turok: Dinosaur Hunter
 

Attachments

Last edited by LaminGaming,
  • Like
Reactions: Fabax01
After some thorough testing, I think I figured out how to fix the audio for Rare games. By comparing the RDRAM of Diddy Kong Racing in both NTSC and PAL modes, I discovered some bytes that were different between them, I then looked at these bytes in a programmer calculator and realised they are the video clock rates: 02E6D354 is 48681812Hz (NTSC) and 02F5B2D2 is 49656530Hz (PAL).

Simply swapping these around fixes the audio with every NTSC Rare game I've tried, except for Banjo-Kazooie v1.1 and Banjo-Tooie. For those games, they have two sets of these bytes for some reason. Changing the first one crashes the game, and the other is the one that's supposed to work (this is the case for Banjo-Kazooie v1.0). But no matter what I tried I couldn't get them to work.

As an example, here's some code I created for Banjo-Kazooie v1.0:
81277128 02F5
8127712A B2D2

Also, I wanted to talk about my findings with video tables as well. For the most part, every game only ever requires one of these tables to be changed in order to work, so that helps to mitigate having to create a big list of codes lol.

I can even simplify my code down further if I use a repeater code, using Banjo v1.0 as another example:
50000302 0000
80275C97 0053

However, there are some that require multiple tables, around two or three depending on the game. An easy way to check this is to look at the VI registers in an emulator at 0xA4400000. The video table seems to change primarily when the resolution changes, i.e. 240p to 480i and vice versa, but not always.
Added as a threadmark, thanks^^
Re videotables:
yep, most games use only one! In fact, you NEED to trim down the search to only the ones being used if ex. you have an everdrive, since max codes in use is limited (iirc 20 at a time? And you gotta enable master codes too!)
I did update the main post with a shorter densha de go code after I verified that the other are not used for anything.
Still, I do prefer a "hard patch" vs "ram patch" approach if possible, too lazy to check which ones are in use / are not in use (see RE2 + scaler resolution nightmares...)
Who knows if the N64 games do stuff like the ones on PS, with their well known "sudden switch to 480i for menus / videos at the end of the game" xD
 
  • Like
Reactions: LaminGaming
Added as a threadmark, thanks^^
Re videotables:
yep, most games use only one! In fact, you NEED to trim down the search to only the ones being used if ex. you have an everdrive, since max codes in use is limited (iirc 20 at a time? And you gotta enable master codes too!)
I did update the main post with a shorter densha de go code after I verified that the other are not used for anything.
Still, I do prefer a "hard patch" vs "ram patch" approach if possible, too lazy to check which ones are in use / are not in use (see RE2 + scaler resolution nightmares...)
Who knows if the N64 games do stuff like the ones on PS, with their well known "sudden switch to 480i for menus / videos at the end of the game" xD
Yeah, on my everdrive it's limited to 34 codes per game, which isn't enough, so using a repeater code would be the only way to get all of them to fit, and even that isn't enough for some games. That's why I decided to focus only on the video tables that were being used when making codes. For me, doing a ram patch is preferable, as there are some games that can only be patched that way anyway, so doing it to the rest made more sense.

Also, with the audio fix, I think a ram patch is the only option, I don't know if a rom patch is possible. I did try it, but it didn't work. So maybe there's something else that needs changing. That might explain why neither Banjo-Kazooie v1.1 or Banjo-Tooie would work.
 
My assumptions about Banjo-Kazooie v1.1 and Banjo-Tooie were correct, something else was controlling it. After doing a memory search with both 02E6 and D354, I found other instances of those values. Changing these values fixed the audio for those games.

Updated codes:

Banjo-Kazooie v1.1
8123F7D2 02F5
8123F7DE B2D2

Banjo-Tooie
810125FE 02F5
8101260A B2D2

I can also confirm that it's possible to do a ROM patch depending on the game.
 
Man thank you so much! With that i finally could fix the problem that my upscaler didn't want to take the Output signal of the original NTSC roms on my RGB modded PAL N64. While weirdly on my other old flatscreen with Scart input it perfectly works even without the patch. It seems like that the TV does something different than the upscaler.


More people really need to understand this... In order for a PAL N64 to properly play NTSC U/J region games, it NEEDS a crystal swap. RGB only solves the color encoding (RGB is free from NTSC/PAL encoding).

Otherwise the refresh will be something like 59.5Hz instead of near 60Hz. Slightly too slow. The refresh being off will be problematic for most setups (other than CRTs which don't care and show the true refresh as is)

Scalers might not like that because it's too far below what it can buffer (you scaler might not even have buffering, so it just fails). Buffering frames = scrolling stutters and input lag, coming from the fact that old consoles aren't exactly the 60Hz that the TV refreshes at. To completely get rid of the "once every few seconds stutter" and improve lag you will need a Tink5x/4k with VRR (variable refreshrate, done through Freesync) and a compatible Freesync TV/monitor. Only then do you get the exact refresh match of the console. NES and SNES for example need a TV that displays 60.1Hz in order to be perfectly fluid. Without VRR these have a stutter frame every few seconds.

Additionally there are some timing sensitive things in games that can have bugs due to playing at the wrong refresh, there are a few confirmed cases of this for the N64 but I forget exactly what they were.

Sega Saturn and PS1 also has this problem, for those you need a DFO chip (dual frequency oscillator, gives correct crystal speeds). No such mod exists for N64 that I've seen, so you'll need to replace the crystal completely instead and have perfect NTSC-U/J games only.

How to swap the crystal of the N64, ignore the PIF swap since you can bypass the region check with a flashcart. But the crystal swap is an absolute must.
Guide below:
https://www.pimyretro.org/converting-a-pal-nintendo-64-motherboard-to-ntsc/

Locate the U7 chip, cut the pin7 trace and wire pin7 to pin4. (Please don't lift leg pins as the guide says, you risk breaking them, simply just cut the trace instead). Then replace the crystal with a proper 4.31818 Mhz crystal.

Also:
Cut the trace for the "P" labeled jumper on the back, bridge the "N" jumper next to it instead. (PAL and NTSC video encoding), this is for non-RGB use, so you get NTSC video encoding.
 
Thought to give an update on the audio fix. It turns out that it isn't just Rare games that have audio issues, but also other games that appeared to be fine initially before further inspection.

After testing with and without the fix, and comparing with their PAL counterparts, I've found that all non-Rare games either have correct tempo with incorrect pitch or incorrect tempo and pitch. Neither creates distortion like the majority of Rare's games, so that's why it was hard to tell initially. Now knowing this, I've created more codes for the rest of my games, and also created a list below if anyone wants to have them.

007 The World Is Not Enough
810D1078 02F5
810D107A B2D2

F-Zero X
810D1CE8 02F5
810D1CEA B2D2

Mario Golf
810C9468 02F5
810C946A B2D2

Mario Kart 64
810EB438 02F5
810EB43A B2D2

Mario Party
810C7728 02F5
810C772A B2D2

Mario Party 2
810CF0A8 02F5
810CF0AA B2D2

Mario Party 3
810A3FA8 02F5
810A3FAA B2D2

Mario Tennis
8105B648 02F5
8105B64A B2D2

Paper Mario
810958F8 02F5
810958FA B2D2

Pilotwings 64
8124C17C 02F5
8124C17E B2D2

Quake
8106F848 02F5
8106F84A B2D2

Quake II
8106BE18 02F5
8106BE1A B2D2

Rayman 2: The Great Escape
F10040CE 02F5
F10040DA B2D2

Star Fox 64
v1.0
810C3998 02F5
810C399A B2D2
v1.1
810C7E18 02F5
810C7E1A B2D2

Star Wars Episode I: Racer
810A7B48 02F5
810A7B4A B2D2

Super Mario 64
81335A2C 02F5
81335A2E B2D2

Super Smash Bros.
8103D3F8 02F5
8103D3FA B2D2

The Legend of Zelda: Majora's Mask
81097E58 02F5
81097E5A B2D2

The Legend of Zelda: Ocarina of Time
v1.0/v1.1
81006358 02F5
8100635A B2D2
v1.2
810068D8 02F5
810068DA B2D2

Turok: Dinosaur Hunter
v1.0
810EF288 02F5
810EF28A B2D2
v1.1/v1.2
810EF3D8 02F5
810EF3DA B2D2

Turok: Rage Wars
v1.0
810D3F00 02F5
810D3F02 B2D2
v1.1
810D9280 02F5
810D9282 B2D2

Turok 2: Seeds of Evil
v1.0
810B8900 02F5
810B8902 B2D2
v1.1
810BABC0 02F5
810BABC2 B2D2

Turok 3: Shadow of Oblivion
8110BC40 02F5
8110BC42 B2D2

Wave Race 64: Kawasaki Jet Ski
v1.0
810E8E3C 02F5
810E8E3E B2D2
v1.1
810E90BC 02F5
810E90BE B2D2

Yoshi's Story
810AAC48 02F5
810AAC4A B2D2
 
Last edited by LaminGaming,
  • Like
Reactions: Fabax01

Site & Scene News

Popular threads in this forum