Nintendo 64

Regions
This page focuses primarily on NTSC-U (USA) systems. The same principles apply to NTSC-J (Japan) and PAL (Europe/Australia) systems as well, but those regions are not specifically discussed here.

Game cartridge versions
N64 games sometimes contained bugs that were discovered after release. When the developers fixed a bug, they recompiled the software and generated a new ROM. This frequently (though not always) caused the addresses of game data and instructions to change in both ROM and RAM.

As a result, you typically need different GameShark codes for each version of a game (with the notable exception of several Perfect Dark assembly hacks). Using codes for the wrong version of a game will not work; it will either A) do nothing, or B) corrupt or crash the game.

Most N64 games only have one version (e.g., Super Mario 64 and GoldenEye); some games have two versions (e.g., Banjo-Kazooie and Perfect Dark); and a few games have three versions (e.g., Star Wars: Shadows of the Empire).

The three possible version numbers are:


 * v1.0 (unmarked on the back of the cart)
 * v1.1 (marked "A" on the back of the cart)
 * v1.2 (marked "B" on the back of the cart)

How do I know which game version I have?
You can find a game's version number in two places:


 * 1) Most reliable: In the game's ROM, the version number is stored as a single byte at offset 0x3F (the value will be 0, 1, or 2). You can make a backup copy of your physical game cartridge using a Sanni Cart Reader or a GameShark Pro with a working parallel port and a compatible PC (see below), and examine the dumped ROM file in a hex editor.
 * 2) Less reliable: On the back of the cartridge, there is a small, faint punch code. It is two random numbers, sometimes followed by "A" or "B". If the punch code is only two numbers, with no letter after it, the game is v1.0. If the two digit number has an "A" after it, it's v1.1, and if it has a "B" after it, it's v1.2. If you bought the game used, however, be aware that the outer shell of the cartridge may have been replaced by a previous owner, and might not match the actual version of the ROM inside it. The only way to know for sure is to make a backup copy of the game and examine the ROM. That said, punch codes can still be helpful when looking for a used game on sites like eBay.

For more information, see:


 * Perfect Dark Version Differences from The Cutting Room Floor
 * Zelda Version Differences from ZeldaSpeedRuns

Known cheat code websites

 * Project64 cheat database
 * RetroArch cheat database from libretro
 * GameShark.com (2004)
 * CodeTwink (2015)
 * CodeTwink (2018)
 * CodeTwink (live)
 * CMGSCCC (live)
 * HotCheats (2018)
 * Cheat Code Central
 * Super Cheats
 * GameGenie.com
 * Kai666
 * GameHacking.org
 * Video Game Cheats
 * NintendoCC
 * Viper
 * BSFree

Converting NTSC GameShark codes to PAL
See Converting cheat codes for information on how to convert NTSC codes to PAL and vice versa.

According to Parasyte & Misfire:"Some Xploder/Xplorer codes are encrypted, and some aren't. We're guessing that maybe only the 'official' ones are encrypted. Perhaps we'll find out more about this later, but at least we can encrypt/decrypt them."

Key codes
Note: GameShark v1.08 through v2.21 spell it as one word ("keycodes"), whereas the GameShark Pro v3.0 and later spell it as two words ("key codes"). Either spelling is correct, but for consistency, this wiki follows the convention of later GameShark versions and spells it as two words ("key codes").

What are GameShark key codes?
All official N64 games contain a CIC security chip designed to ensure that only licensed games can be played on the N64. This can prevent the GameShark from booting properly if the wrong game is inserted into it.

For NTSC games, there are 7 known CICs   : 6102, 6101, 6103, 6105, 6106, 8303, and 5101. The N64 console won't boot if the GameShark tries to use a CIC that's different than the one in the game cartridge. The number of CICs supported by each version of the GameShark varies; see the tables below for a comprehensive list.

Unfortunately, it was not possible for the GameShark to automatically detect which CIC to use on startup, because the GS firmware is not allowed to run until after the N64 console has verified the CIC - which can't happen until the GameShark decides which CIC to use. It's a chicken-or-the-egg problem.

To work around this security limitation from Nintendo, GameShark v1.08 and newer support key codes, which are hexadecimal codes that allow the user to tell the GameShark which CIC their game is using so that it can boot properly. GameShark v1.07 and earlier do not support key codes; they are hardcoded to work only with CIC-NUS-6101 and CIC-NUS-6102 games, and will not boot games with other CICs.

For a good overview of the purpose and function of the N64 CIC, watch Secrets of the Nintendo CIC Chip by Modern Vintage Gamer. For a technical deep dive, watch Reversing the Nintendo 64 CIC - REcon 2015.

How key codes work
Very little is known about what the GameShark actually does with key codes (i.e., what the 9- and 13-byte values are used for internally) or how they help the GameShark work with the game's CIC.

If you know more, please update this wiki!

Interestingly, every known firmware version ever released comes with completely different key codes for the same CICs (see the list below), which suggests that they are used for more than just selecting the right CIC. Furthermore, if key codes were only used to select a CIC, they would only need to be one byte long, but instead they're 9 and 13 bytes long (depending on the GS version). What are those extra bytes used for?

According to dlevere on the GameHacking forums:"Some games have added protection that prevents cheat devices from functioning. Key codes were first introduced on GS/AR version 1.08 to bypass some of these protections. They're present in all versions after that, as well. Due to these protections, some games will never work on an older version cheat device.""...""In devices v2.2 and higher, the key codes have an additional 32-Bit value attached to them. This is an additional special instruction, which is believed to set the default destination of the code engine. It was first required by Ocarina of Time. Xploder64 uses 'boot modes' in pretty much the same way GS/AR uses key codes."It is unclear how a 9 or 13 byte key code could contain enough information to bypass protections on newer games while still maintaining compatibility with older games. If you know more, please update this wiki!

How to use GameShark key codes
Key codes are supported by GameShark v1.08 and above.

To use them:


 * 1) Boot up the GameShark (v1.08 or newer) with a CIC-NUS-6101 or CIC-NUS-6102 based game
 * 2) *Star Fox 64, Super Mario 64, and most other games not made by Rare or Factor 5
 * 3) Select the correct key code from the GameShark onscreen menu
 * 4) *In v1.08, v1.09, and v2.0, you must press L+R at the main menu screen to display the key code menu
 * 5) Turn the console power off (do NOT use the N64's reset button - it only power cycles the game, it doesn't reset the CIC)
 * 6) Insert a game that matches the key code you just selected
 * 7) Turn the console power back on
 * 8) Select your cheat codes and start the game

Just before the game starts, the GameShark will automatically reset itself to the "Mario World 64 & Others" key code. The next time you turn on the GameShark, it will need a Mario key code game. To play a non-Mario key code game again, you must repeat the process of booting with Mario, selecting a key code, and restarting with the actual game.

Warning: When you select a key code, the GameShark will not boot up until a matching game is inserted. If you do not have the right game, you will not be able to boot up the GameShark. This is important to know when buying a used GameShark, as they may appear "broken", when in fact they're just stuck on a key code that doesn't match the game you're using. Before returning a seemingly bricked GameShark as defective, test it with one of each of the games that it has key codes for.

List of known GameShark key codes
The full list of key codes for all GameShark versions was originally documented in the N64 Keycodes thread on Hacking 101.

The key codes below have been copied verbatim from the GameShark UIs and ROMs. Every known GameShark firmware version comes with a different set of key codes. Note that the length and byte order of key codes changes between some GameShark versions.

Curiously, in every version of the GameShark v2.21 and up, the UI and firmware disagree on the byte order of key codes: The UI takes the last byte of the key code value stored in the firmware and moves it 4 bytes to the left when displaying it onscreen.

List of games for each key code
From the Game Security CIC List at Micro64:


 * Mario World 64 & Others (CIC-NUS-6101 and CIC-NUS-6102)
 * Star Fox 64
 * Super Mario 64
 * All other games not specifically listed below
 * Diddy, 1080, Banjo, Griffey (CIC-NUS-6103)
 * 1080 Snowboarding
 * Banjo Kazooie
 * Diddy Kong Racing
 * Excitebike 64
 * Ken Griffey Jr's Slugfest
 * Kirby 64: The Crystal Shards
 * Kobe Bryant in NBA Courtside
 * Major League Baseball featuring Ken Griffey Jr.
 * Paper Mario
 * Pocket Monsters Stadium (JPN)
 * Pokemon Snap
 * Pokemon Stadium
 * Pokemon Stadium 2
 * Super Smash Bros.
 * Yoshis, F-Zero, C'World (CIC-NUS-6106)
 * Cruis'n World
 * F-Zero X
 * Yoshi's Story
 * Zelda (CIC-NUS-6105)
 * Banjo-Tooie
 * Conker's Bad Fur Day
 * Donkey Kong 64
 * Jet Force Gemini
 * Legend of Zelda: Majora's Mask, The
 * Legend of Zelda: Ocarina of Time, The
 * Mickey's Speedway USA
 * Perfect Dark

List of known N64 GameShark versions
According to posts in the Krikzz forum, vspolaris, and Reddit, firmware versions 1.01, 1.02, 1.03, and 2.50 also exist, but I have not been able to verify them. The versions listed below are confirmed to exist.

GameShark v1.04
The v1.04 cartridge is the earliest confirmed version of the N64 GameShark.

If you have proof that earlier versions exist, please update this Wiki!

Confirmed supported features in v1.04:


 * Physical GS button
 * Allows the user to activate codes on demand instead of executing them continuously during gameplay
 * / cached write opcodes (e.g., "Unlimited Energy/Breath" in Super Mario 64)
 * / uncached write opcodes (e.g., "Walk Up Hills" in Super Mario 64)
 * / GS button write opcodes (e.g., "Press GS button for 99 coins" in Super Mario 64)

Confirmed unsupported features in v1.04:


 * Key codes
 * Only "Mario World 64 & Others" games that have a CIC-NUS-6102 security chip are supported; games with non-6102 CICs will not work
 * enabler opcode
 * / conditionals
 * Controller Pak (aka memory card) manager
 * GameShark v1.04 through v1.09 actually do have a "Memory Card Manager" screen, but it is non-functional. The v1.09 manual claims that it "allows you to view the contents of any memory card up to 1998 blocks in size," as well as "load, save and copy between memory cards" and "copy the game saves from inside your game cartridge onto memory cards." However, it does not appear to work in any of these versions; it only displays "No Smart Card Found", even when a working Controller Pak is present.
 * Datel/InterAct were originally planning to release "smart cards" to update the code list on GameSharks and enable the "Memory Card Manager" functionality, but they never did. According to the v1.09 manual: "The GameShark has a unique Smart card reader/writer slot at the rear of the unit. This slot will support a range of Smart cards including Ram, Rom and Flash Rom cards. These cards offer features including special game cheats and memory card support. Watch out for these exciting products as they become available for your GameShark. Full instructions for the use of this expansion port will be included with the new products." In addition, "GameShark has a built-in LED display. This feature too will be fully utilized with future products available for the Smart Card Port of your GameShark."

GameShark v1.05
TODO: Confirm feature support

v1.05 UI screenshot: https://imgur.com/a/GkrlW (Archive)

GameShark v1.06
TODO: Confirm feature support

v1.06 UI screenshot: https://imgur.com/a/ajzmc (Archive)

GameShark v1.07
TODO: Confirm feature support Bugs in the v1.07 UI:The N64 GameShark v1.07 firmware introduced two UI bugs that persisted up through (and including) v2.21, and were fixed in v3.0:


 * The "BUTTON" button label bug: Pressing the "Default On" button in the "Edit Code" screen causes the button's label text to toggle between 3 values: "Default On", "Button", and "Default Off". "Default On" causes the code to be automatically enabled every time that game is selected after rebooting, whereas "Default Off" causes the code to be automatically disabled by default. When the "Button" state is active, the opcode prefix is automatically changed from 80 to 88; when the "Default On" or "Default Off" states are active, the opcode prefixed is changed back to 80. Beyond that, the precise effects of the "Button" state are unknown.
 * Active cheat count bug: Activating a code that is normally disabled by default ("Default Off"), navigating to "New Code", and then canceling the new code without saving, will cause the previously-activated code to be silently disabled and removed from the active code list in memory (e.g., the "0002 cheat codes are on" counter will decrease by one). However, the cheat name will still be colored green in the UI, indicating that it is enabled, but in fact it is not; the code will not be active when the game is started.

These bugs are confirmed to exist in v1.07, v1.08, v1.09, v2.0, v2.1, and v2.21 firmwares. They are not present in v1.04, and they were fixed with the UI redesign in v3.0. It is not known whether they are present in v1.05 or v1.06.

GameShark v1.08
TODO: Confirm feature support

Bugs in v1.08:


 * v1.08 has the same UI bugs as v1.07.

GameShark v1.09
TODO: Confirm feature support

Bugs in v1.09:


 * v1.09 has the same UI bugs as v1.07.

GameShark v2.0 (March)
TODO: Confirm feature support

Firmware timestamp: 08:06 Mar 5 98

Bugs in v2.0 (March):


 * v2.0 (March) has the same UI bugs as v1.07.

GameShark v2.0 (April)
TODO: Confirm feature support

Firmware timestamp: 10:05 Apr 6 98

Bugs in v2.0 (April):


 * v2.0 (April) has the same UI bugs as v1.07.

GameShark v2.1
Confirmed supported features in v2.1:


 * 9-byte key codes
 * Later versions have 13-byte key codes
 * Controller Pak manager (aka "Memory Card Manager")
 * opcode to set executable entry point (e.g., "Must Be On" in 1080 Snowboarding, Banjo Kazooie, Diddy Kong Racing)
 * 8-bit conditional opcode (e.g., "Extra Points" in Aerofighters Assault and "Z Trigger Deathblow P1" in Mace - The Dark Ages)

Confirmed unsupported features in v2.1:


 * 16-bit conditional opcode (e.g., for cheats that are activated on-demand by pressing two buttons like L+R)

Bugs in v2.1:


 * v2.1 has the exact same UI bugs as v1.07.

GameShark v2.2
TODO: Confirm feature support

v2.2 UI screenshot: https://imgur.com/2Sa2NaR (Archive)

GameShark v2.21
All of the v2.2/v2.21 devices I've seen have a "V.2.2" sticker on the shell and run v2.21 firmware.

Confirmed supported features in v2.21:


 * 13-byte key codes
 * Earlier versions used 9-byte key codes

Confirmed unsupported features in v2.21:


 * 16-bit conditional opcode (e.g., for cheats that are activated on-demand by pressing two buttons at the same time, like L+R)

Bugs in v2.21:


 * v2.21 has the exact same UI bugs as v1.07.

GameShark Pro v3.0
v3.0 is the first N64 GameShark version to bear the "Pro" name. Unlike v3.1 and later versions, it does not have a parallel port in the back, but it does have a code generator (hence the "Pro" name). It is also the first GameShark version to have a sparkly shell (earlier versions had a solid matte black shell). Confirmed supported features in v3.0:


 * write once on boot opcode
 * E.g., "Hi Resolution Enable Code" for Perfect Dark on the GS v3.0-v3.21 from Neoseeker and Hot Cheats
 * repeater opcode
 * E.g., CMGSCCC clipping codes for Banjo-Tooie

GameShark Pro v3.10
TODO: Confirm feature support

GameShark Pro v3.20
Confirmed supported features in v3.20:


 * opcode to disable Expansion Pak
 * E.g., Perfect Dark codes from Hot Cheats

GameShark Pro v3.21
TODO: Confirm feature support

v3.21 UI screenshot: https://imgur.com/a/gnMme (Archive)

GameShark Pro v3.30 (March)
TODO: Confirm feature support

Firmware timestamp: 09:54 Mar 27 2000

GameShark Pro v3.30 (April)
TODO: Confirm feature support

Firmware timestamp: 15:56 Apr 4 2000

GameShark Pro v3.30 (neutered)
TODO: Confirm feature support

The final production run of GameSharks was labeled with the same version number as previous runs (v3.3) and contained the same firmware (v3.30 April), but Datel removed a number of hardware components to save costs (namely the 7-segment LED and the chip(s) for the parallel port).

As a result, these GameSharks do not have a working parallel port (i.e., they cannot be connected to a PC), and there is no numeric display to indicate a successful startup. All other features (including the built-in code generator) are still present and functional.

In addition, these carts have a solid matte black shell, whereas earlier carts (with a working parallel port) have sparkly black shells.

Xplorer 64 (aka Xploder 64)
Released in Europe only. Works with NTSC games/consoles as well as PAL.

The Xplorer 64 supports all of the same key codes as the GameShark Pro, but they are activated differently. Instead of using the controller to navigate an onscreen menu, you push a physical button (similar to the "GS button" on GameSharks) on the front of the Xplorer 64 a specific number of times to activate the key code you want. See the Xplorer64 manual and Boot Modes for more information.

Both versions of the Xplorer 64 have a parallel port in the back, similar to the GameShark Pro v3.1+. The PC utility software is available from NES World.

See the GameHacking wiki entry on the Xploder for more information.

Red version
TODO: Add photos and screenshots, and confirm which version is older/newer

Green version
TODO: Add photos and screenshots, and confirm which version is older/newer

Equalizer
See the GameHacking wiki entry for Equalizer, Equalizer Hacked, and n64koder for more information.

Game Buster
See the GameHacking wiki entry for Game Buster.

Opcode compatibility
Sources:


 * The Secrets of Professional GameShark Hacking
 * mezmorizen64
 * Kai666

Parallel port
The N64 GameShark Pro v3.1, v3.2, and v3.3* have a DB25 parallel port on the back that can be connected to a PC running Windows 98 SE** or Linux. This can be used to dump game ROMs, search/dump console RAM, upload homebrew games and software, download/upload cheat codes, reflash firmware, and a few other things.

* The final production run of the GameShark Pro v3.3 intentionally disabled the parallel port to reduce costs, so the parallel ports on those devices do not work.

** It is possible to use versions of Windows other than 98 SE, but it is much more difficult and error-prone. All of the utilities written in that era work well in Windows 98 SE without any modifications.

Connecting the parallel port of an N64 GameShark Pro to a modern PC
The simplest way to connect a GameShark Pro to a computer is to use an old Windows 98 PC with a built-in 25-pin parallel port and the software utilities written in that era. See How to backup ROMs from N64 cartridges for more information.

However, you can also do it with a Windows 98 VM on a modern desktop PC that has a 25-pin LPT parallel port (typically a PCI or PCIe card).

The GameShark Pro will only work with a PC that has a real LPT parallel port. Nearly all USB to parallel port adapters only support printers, and will not work with a GameShark. (The only known exception is a discontinued adapter containing a MosChip MCS7705.) From the SUNIX PAR5008RL product description:"Unlike USB to parallel adapters, SUNIX Remap Parallel Card function exactly likes a computer's native parallel port and provides a true LPT port in order for your PC to work properly with devices that require a LPT port for setup and configuration. For many legacy devices like parallel scanners, zip drives or other older parallel-port devices, they only work with a real parallel LPT port from a computer and in many cases can not work with virtual parallel ports provided from those USB to parallel port adapter cables to simulate parallel connection."

Windows 98 VM
You will need:


 * 1) Windows or Linux host PC with a real LPT DB-25 parallel port
 * 2) Verified: StarTech.com PEX1P: PCI Express Parallel Adapter Card - SPP/EPP/ECP - 1x DB25 IEEE 1284 PCIe Parallel Card (Amazon)
 * 3) Unverified: SUNIX PAR5008RL: PCI Remap Parallel card with real ECP/EPP/SPP/BPP communication LPT port
 * 4) High quality RS-232 DB-25 parallel extension cable (male to female)
 * 5) VMware Workstation Pro (verified) or possibly VMware Workstation Player (unverified)
 * 6) Windows 98 SE install CD
 * 7) GameShark N64 Utils
 * 8) GS Central
 * 9) Code Legends forum post

Copying files to and from the Windows 98 VM can be accomplished by simply dragging and dropping the files between the host and guest OS. Alternatively, you can run a FileZilla server on the host PC and a FileZilla 2.2.14b client in the Windows 98 VM.

See The Secrets of Professional GameShark Hacking and Adding GameShark Codes with PC Tutorial for instructions on using the software.

Linux
Alternatively, you can use the Nintendo 64 Remote Debugger by Parasyte. It's a brilliant pure C program that runs natively in Linux and can connect to the GameShark Pro and dump N64 game ROMs and GS firmware. It's more limited in terms of functionality than the official N64 GS Utils and GSCC, but it has the advantage of running on modern hardware without a VM. In addition, it's open source, so someone with the right skills and knowledge could easily add the missing functionality.

Manuals
Searchable flatbed scans of printed manuals:


 * [[Media:N64_GameShark_v1.09_manual.pdf]]
 * [[Media:N64_GameShark_Pro_v3.2_manual.pdf]]
 * [[Media:N64_GameShark_Pro_v3.3_manual.pdf]]

HTML transcriptions of printed manuals:


 * GameShark Pro v3.2 manual (gspro.htm)
 * Missing the last 5 pages (FAQ, warranty, and InterAct PC Link Cable order form)
 * Xplorer64 manual and Boot Modes

Software manuals:


 * Nintendo 64 Code Hacking Utilities (N64_Utils.pdf)
 * InterAct's official documentation for its Windows 95/98 PC software . Document version 1.35 (1st of March 2001)

Other manuals:


 * GameShark.com manuals from 2001 (archive is missing the N64 PDF)
 * GameShark.com manuals from 2004 (archive is missing the N64 PDF)

PC software
Utilities for the N64 GameShark Pro:


 * GSCentral
 * n64gameshark_pro_v3_3.zip
 * GSCentral File Mirror by darkspectorxp
 * GoldenEye Forever
 * n64gameshark_pro_v3_3.zip
 * Code Legends forum post
 * Xplorer 64 utilities
 * GBATemp.net
 * Kodewerx
 * gs_pro_utils.zip
 * gs_n64_crypt.zip
 * xploder64_utils.exe

Backing up and reflashing the GameShark firmware
GameShark Pro v3.1, v3.2, and v3.3 devices with a working parallel port can be backed up and upgraded (reflashed) by using the official N64 Utils and GSCC with a PC.

GameShark v1.08 and newer can be backed up and upgraded (reflashed) using the Sanni Cart Reader. It can reflash any N64 GameShark with SST 29LE010 EEPROMs, which is all GameSharks except v1.07 and earlier. Pre-built Sannis are available on Etsy and probably eBay. To make a backup copy of the GS firmware without reflashing it, start going through the "Flash GameShark" menu, but stop after it finishes making an automatic backup copy; do not proceed to select a firmware to reflash, and instead just turn off the Sanni once the backup is complete. The GS firmware will be backed up to, where   is an auto-incrementing integer (NOT the GameShark version).

Official GameShark firmware files released by Datel/InterAct are encrypted (e.g.,  from N64 Utils); they can be decrypted with gs_n64_crypt.zip from Kodewerx.

Perfect Trainer v1.0b is an alternate community-made firmware for hacking codes on some of the more advanced games made by Rare (primarily Perfect Dark, but also Banjo-Tooie and Donkey Kong 64).

Firmware storage
The GameShark firmware is stored along with the user's preferences (background, scrolling, sounds) and custom cheat code list in the two SST 29LE010 EEPROMs on the PCB. As a result, dumping a backup copy of the GS ROM will also copy the user's codes and settings. Similarly, upgrading/reflashing a GS will erase all of the user's cheat codes and settings, and replace them with the codes and settings from the backup ROM.

Note that every time you activate a key code, add/edit/delete cheats, or even activate/deactivate a cheat, the GameShark writes to the EEPROM. According to Wikipedia's EEPROM article, "An EEPROM has a limited life for erasing and reprogramming... In an EEPROM that is frequently reprogrammed, the life of the EEPROM is an important design consideration." In other words, every time you use a GameShark, you slightly shorten its usable lifespan.