for more info: Video Interface@64brew
special greetings to Roadhouse of High Society
Now... no need for paladin (& sound issuessee 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
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.
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.
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)
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:
Hello @thunder_gun1 and sorry for the late response.
Nice to see that you've successfully made a code ! 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 ! 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
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 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...
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
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
(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
Bad news
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 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
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.
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.
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.
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
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
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
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.
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
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
Nintendo's expected Summer showcase is here, offering up plenty of new announcements and exciting reveals. Let's see what they have in store in the latest Nintendo...
Continuing with the great news of Pokémon Platinum getting a native unofficial PC port just a few days ago, today, yet another classic title from the franchise has...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
When you talk about 3DS emulation, most people would jump to Citra. As the defacto choice since its first release it's seen tremendous success, and even after its...
What once seemed like a far off dream, and after many, many community restarts throughout the years, the elusive Mother 1 / EarthBound Beginnings Remake, which is a...
A whole hour of PlayStation content is on the way, thanks to the latest State of Play showcase. Headlining the stream will be Marvel's Wolverine, alongside a...
For the first time in 13 years, the Call of Duty series will again return to Nintendo's consoles. Set to launch on the 23rd of October, the latest release, Modern...
Back in April we covered the ROM hacking efforts to add fifth-generation animated sprites to third generation Pokemon games. It remains a thoroughly impressive...
With very little in the way of announcement, Valve has today increased the price of the Steam Deck but some fairly considerable margins. Both of the available models...
Nintendo's expected Summer showcase is here, offering up plenty of new announcements and exciting reveals. Let's see what they have in store in the latest Nintendo...
Seemingly out of nowhere a PC port for Pokemon Platinum has surfaced online, bundled alongside the source code for those interested in building and developing it for...
With rumours circulating about a Nintendo Direct in the coming days and weeks, fans are left speculating and hoping as to what might be included. At the centre of all...
The latest in a growing number of native PC ports, Paper Mario ReCut got its first pre-release build earlier this week. Based on the N64 recompilation toolchain, the...
A whole hour of PlayStation content is on the way, thanks to the latest State of Play showcase. Headlining the stream will be Marvel's Wolverine, alongside a...
After much speculation and rumour, the fabled Nintendo Direct is upon us. Set to go live tomorrow, the 9th of June, at 3pm in the UK, it'll feature 50 minutes of...
For the first time in 13 years, the Call of Duty series will again return to Nintendo's consoles. Set to launch on the 23rd of October, the latest release, Modern...
Following an investigation over misleading commercial practices, today Nintendo has been imposed a fine of 35 million euros related to the controller malfunctions...
Continuing with the great news of Pokémon Platinum getting a native unofficial PC port just a few days ago, today, yet another classic title from the franchise has...