Page 1 of 1

[Not64] Add Gameshark support for 60FPS game hacks / cheats and other improvements

Posted: Tue Jun 30, 2020 1:51 am
by lzer0
There are a few handful of cheats in the form of Lag Fix, no frameskip, Unlock 60FPS and framerate fixes that this emulator could greatly benefit with. The problem is, it can't as there isn't any built-in support for cheats.

For example, in abitalive's modded Mario Kart 64, with 4 multiplayer Vs. splitscreen, the emulator can properly handle fixed 30FPS, so chances are highly likely it can also handle 60FPS hacks on games that normally are 30FPS, such as Mario Kart itself, Diddy Kong Racing, Banjo Kazooie, Banjo Tooie, Star Fox 64, Excitebike 64, Bomberman Hero, just to name a few that have stable 60FPS hacks.

60FPS Cheats code source list 1 and other improvements

60FPS Cheats code source list 2 and other improvements

Mario Kart 64 60FPS and Enable Music in 3/4 Multiplayer Splitscreen: ... ostcount=4

This cheat for Mario Kart 64 isn't listed anywhere, it lets you disable (remove) or make invisible (hide) mini-bomb karts in multiplayer versus match races. Only in actual races, the ones on Battle Mode are left untouched. ... -254385931

I tested them on Project64 and they work correctly, they also work on Mupen64Plus, since Wii64 and Not64 are forks of the latter, they should work too on the Wii.
Unfortunately, due to the lack of cheats support in Wii64/Not64, we can't make use of these improvements on the Wii.

EDIT1: Found out a tool that inject the gameshark codes into a ROM (Mario Kart 64) and tested in the Wii with Not64, it works wonders!
60FPS Single Player works FLAWLESSLY
60FPS 2 Player Grand Prix lags, it falls back to 40-35FPS on tracks loaded with lots of objects, like MMF, BC and specially DKJP.
60FPS 2 Player Versus runs near 50-60FPS, on most tracks. Haven't tested all tracks yet. Might get better results with anti-aliasing disabled. Need more testing to post more results.
30FPS 3/4 multiplayer works FLAWLESSLY
EDIT3: It seems that disabling anti-aliasing doesn't improve the framerate. But it looks better.

EDIT2: Choco Mountain is the only track in 2-Player Versus that runs full@60FPS without dropping a single frame!!!
Other tracks in 2-Player Versus that on average runs mostly @60FPS with few frame drops (min 50FPS): Luigi Raceway, Toad's Turnpike, Frappe Snowland, Mario Raceway...
This list is under construction as I am testing first with anti-aliasing disabled (via gameshark), then run again the same tracks with anti-aliasing enabled (game default) to see if the difference is worth it. ... e-injector
The tool is specifically made for use with Mario Kart 64, but anyways it was exactly what I was looking for.
Too bad I can't test 60FPS Banjo Kazooie/Tooie on the Wii yet. Some day I will...

Tracks are ordered in the same cup and order of appearance

2-Player Versus@60FPS
(Mushroom Cup) LR@50+++, MMF@39+, KTB@52+, KD@40+
(Flower Cup) TT@54++++, FS@48+++, CM@60+++++, MR@50+++
(Star Cup) WS@57++++, SL@57++++, RRy@52+++, BC@54++++
(Special Cup) DKJP@40+, YV @52+++, BB@50+++, RRd@57++++
All tracks on 2P Versus reach 60FPS unless stated otherwise.

4-player Versus@30FPS
Instead, I use the Speed Multiplier next to the VI count, on some tracks I include them.
(Note: 60VIS=30FPS)

LR: 0.9-1x
KD: 39.6@0.7x-0.8x


WS: 58@1.0x
SL: 54@0.9-1.0x
RR: 48@08-1.0x
BC: 57@1.0x

DKJP: 45@0.8-1.0x
YV: 57@1.0x
BB: 51.3@0.-1.0x
RR: 57@1.0x
All tracks on 4P reach 60VIs (30FPS) unless stated otherwise.

Note1: + sign means the actual framerate, the more + the higher the average framerate. So higher is better.
Note2: @(number) means the lowest framerate, but it doesn't mean that track will go at said rate all the time, Luigi Raceway is mostly 60FPS with few slowdowns that can drop the framerate to 49.8FPS, keep in mind that the fixed FPS codes forces the pacing to a fixed speed and prevents the emulator from frameskipping so all frames are actually rendered.
More info on this: ... tches.html
This is why I want the disable bomb codes to work with this patch as its the only missing feature that can only make work through gameshark.

MMF and DKJP being the only exception that it lags even on 1P Grand Prix, BC is rendered a lot better and far more playable than the N64 console and the virtual console release.

Tests made by myself, on actual Wii.
Note4: I actually made a separate post regarding playable 60FPS Mario Kart 64 in Wii. I will upload some videos of the comparisons between Not64 glN64 and Wii64 Rice when I get some time to do it.

Re: [Not64] Add support for 60FPS game hacks / cheats and other improvements

Posted: Thu Jul 16, 2020 3:49 am
by lzer0
Update to this post: Since then I have tried to inject Gamesharks codes into a ROM, then inject the ROM into a WAD to try if it would actually load the game with cheats through WAD VC. Also tried Accio Hacks but to no avail no method works to load Gameshark cheats into the WAD.

Through Mario Kart 64 Game Shark Code Injector to WAD Injector:
Tested with Mario Kart 64 ROM and Mario Kart 64 WAD, but due to 1KB increase in file size it threw this error: "ROM file too large to inject to the selected entry, exiting!!!" and failed.
Then I used Super Smash Bros. as the base WAD. It actually creates the WAD without throwing errors. I proceeded to install the VC WAD with the ROM with cheats.
Result: It gets stuck at the classic controller screen. Even with no Gameshark codes actually injected, it would just stay frozen there forever. Doesn't work.

Through actual custom ASM instructions included in custom Mario Kart mods:
So again I tried with abitalive's mod, and CPU uses human items mod, since their method to build the game doesn't increase the file size, it actually fits in Mario Kart 64 as the base WAD.
On the WAD injected with abitalive's mod, the Nintendo logo would spin as usual, just to get stuck with a white screen and stays frozen there. Doesn't work.
With the CPU uses human items mod injected into the WAD, the game would actually load properly and I tried a 1P Grand Prix race, I could get past the first item rows and a little after the game frozen out and got stuck there. However, I played time trials and Versus/Battles without involving CPU racers and these modes doesn't freeze but the point of the CPU mod is playing the GP which is unplayable on the injected WAD. It must be noted that on the original hardware, I mean, the real Nintendo 64 through an Everdrive, I could play the abitalives' and CPU uses human items both mods runs properly on the actual console. My guess is that the VC WAD isn't unable to handle the Custom ASM where the games tried to loads it and just freezes there. So this doesn't work either.

Through Accio Hacks:
It seems that the cheat codes use by wads are entirely different than those on the real N64 with Gameshark. So I don't know and I doubt that Gameshark could be actually converted into Gecko Codes since there is a big probability that the WAD Gecko Code Cheats points to different addresses for different purposes than those intended on the original ROM. Technically it should be possible to dig the contents of the WAD through Dolphin or another tool, but that type of knowledge isn't available to everyone so this won't work if you are expecting to inject actual useful codes like 60FPS Hacks, Framerate Fixes, Lagfixes and Widescreen Hacks because these type of codes aren't availables on Gecko Codes database.

Conclusion: There is no viable way to play 60FPS N64 game hacks on the Wii, until Wii&Not 64 are given proper Gameshark support, the only game that can be played at 60FPS and whatever hacks you would like to add it is Mario Kart 64 because of the code injector that was specifically made by some user for the CPU uses human items mod.