N64 Corruption Guide

This page includes a transcript of the N64 Corruption Guide by Weinerless Steve, first published on October 3, 2015 and last updated on July 5, 2016.

N64 Corruption Guide
First of all, if you're brand new to corrupting, you might want to start with NES, then move onto SNES, instead of starting here.

If you're going to use the corruption settings I gave here without changing them in any way, credit me directly and/or link the guide. If you're going to find your own corruptions and are just using the corruptions linked as assistance, it would be nice but I don't care if I'm credited.

I'll be going over how to corrupt N64 games with the Vinesauce corruptor, which you can find here: Vinesauce ROM Corruptor. If that version doesn't fit your screen, try the NTG56 edit. If you're getting "Attempt to Open File Failed" errors, try version 1.0.0. You can also corrupt N64 games using only a save state, gameshark codes, or actual cartridge tilting, but I'll only go over the save state method and I'll do that quickly. If you're having issues, especially when corrupting decompressed ROMs, it might help to try an older version of the corruptor.

As mentioned above, you'll need the vinesauce corruptor, and you'll also need Project64. I use version 1.6 because 2.0 doesn't use save states. You can find both versions here: http://www.pj64-emu.com/downloads/project64/binaries/.

First, we'll go over the corruptor method, which is what I use for N64 corruption as well as Vinny. I've made a tier list of what roms work well and what roms don't below, and you can use that to pick a game to try for your first corruptions. This is an example of a corruption of Elmo's Letter Adventure, which is pretty standard in terms of values.



The start byte should be above roughly 102000 no matter what N64 game you're corrupting, anything below will cause a permanent loop error because you're corrupting crucial data in the ROM. The best way to find values that work is the set the end byte to the end of the rom and the start byte to around 102000, and if you're getting errors, bring the values of the start and end byte closer together (I like to use intervals of 100000 just to make things move quicker, but you might want to try increasing the start byte just a bit first) until you get a working corruption. If you're not seeing any sort of corruption now, move the start byte closer to the beginning or vice versa until you find the largest value that works. It is possible to corrupt a specific section of the game, like the corruptions of Mario's face, by using a very small range and not needing savestates. Unless you know what you're doing, that requires a lot of guesswork.

Next, unless you're corrupting a game like Mario Party, Goldeneye or Ocarina of Time, which are special cases, you'll want the "corrupt every" value between about 1 and 50. These values are so low because everything crucial to the game working is already loaded because you're using a save state. As you probably already know, going closer to 1 will give more severe corruptions but will crash more often and vice versa. You might be tempted to try corrupting every few hundredth byte to try and get load screens to work, but you'll end up with little visible corruption and probably disappointment. The best place to start when you're first corrupting a ROM is around 25.

Except with some special cases, the "Add to _____ byte" and "Shift Right _____ bytes" values aren't any different from regular corruption. In a game like Ocarina of Time, this controls how far above or below the ground the character is, and in a game like Mario Party, it controls what text characters replace corrupted text.

Now, we move on the making the save states. You'll want to turn the corruption off before you do this part. You can make these in cutscenes or gameplay, as long as either is not pre-rendered. Avoid making them before load screens, or on menu screens. It's best to experiment to see what save states work in what games, and what save states don't really show much corruption, and go from there. To save a save state as a file, you go into System>Save As... in Project64 and save the state somewhere where you'll be able to easily find it later. To load these states, you go to System>Load... in PJ64. Unless you've managed to find a value range where the game doesn't crash at or near startup, you'll have to load these states every single time. Keep in mind that like the Sesame Street corruptions, you'll sometimes have to interact with an NPC before you see the effects of a corruption.

There's a couple of special cases, and these are text corruption and what I call "object corruption" which is what you saw in the Ocarina of Time corruptions. Corrupting text, which is when some text characters are replaced with other text characters, like Mario Party, is very similar except that you'll only see results in "corrupt every" values between 1 and about 13. Object corruption is different in that in any "corrupt every" value above 1-2, you'll get a jittery character that looks the same every time and is only funny the first time IMO. Corrupting every 1-2th byte will freeze often the character in a distorted position, creating much more interesting corruption especially when combined with the corrupted head bob of games like Perfect Dark and Goldeneye, and the face corruptions of games like Ocarina Of Time, which become more and more obvious the lower the "corrupt every" value is.

There's an easier way to do this that doesn't require the corruptor, but you can't save corruptions, it lacks variety, and gives you less control than a corruptor. Simply make a save state of a game you want to corrupt, start a different game, and then load that state. It's a lot simpler but it has it's downsides.

Addendum: Decompressed ROM Corruption
This section is for the use of decompressors, which are what's being used in the latest Super Mario 64 corruptions.

There are two decompressors out there for N64: SM64 ROM extender, which can be found here: http://qubedstudios.rustedlogic.net/Mario64Tools.htm and ZDEC, which is for Majora's Mask and Ocarina of Time, found here: http://ootmods.webs.com/downloads

The instructions and the download for ZDEC are at the bottom of the page. You need the right version of Super Mario 64, which is Super Mario 64 (U) [!]. If you're not sure you have the right ROM, try a corruption and see if it works as intended. I'm not sure which Zelda ROM is the right one though. If you're having trouble with these, PM me.

You can find example corruptions for each, as well as a rough mapping of the SM64 values here: http://www.dropbox.com/sh/0x8n01kqwmmlel6/HyptNZP3Bc

To run these with project 64, you're going to have to open up Project64, and go into Options>Settings>Advanced>Default Memory Size, and change the value given there to 8MB. Otherwise, you'll just get a black screen because the emulator doesn't have enough memory to map in.

Decompression of ROMs spaces out the ROM in question, making it much easier to access a specific part of a ROM that you are trying to reach, and giving access to greater parts of the ROM. You're looking to find the parts of the ROM that control textures, models, or anything else desired, and isolate this part to get the result you want with as few crashes as possible. I tend to look for specific parts in blocks of 100,000 at a time (such as corrupting from 900K to 1M) and widening or shortening the range to get better results. You'll want to have the "corrupt every" higher with these, with the 75-120 range being optimal in most cases. Depending on what part I'm trying to corrupt, I've been as low as 45 or as high as 160.

Unlike the model corruptions, which we've been doing earlier in the guide, most of these are activated by loading screens. If you're trying to load a texture scrambling corruption, for instance, you'd be best off using a save state that takes you to the screen before the place you want to see corrupted. You're not really aiming for every single load screen to work, but you want enough where you're able to see the results of your corruption without it being too unstable. Music corruptions can be an exception to this rule, but this is a rule you usually need to follow.

I've included a small text file with the ROMs and examples that shows some of my findings for ranges in SM64 decompressed, which may help give an idea of how ROMs work.

Tier List
(slightly dated, doesn't apply to RTC)

Sesame Street
Elmo's Letter Adventure

These, and everything else in High Tier, is exactly what I sent to Vinny for when he streamed. This is partially to encourage you to experiment with them but partially because I'm kind of lazy:

https://www.dropbox.com/sh/idnk0nzx0hdktf0/DTt5Vezfzn

Elmo's Number Journey

https://www.dropbox.com/sh/bl5tk0fn2g2xf6e/WtygHw4YfN

Perfect Dark
https://www.dropbox.com/sh/8210223azlyie0b/WYb6WNMWYf

Super Mario 64
(character movement corruptions)

https://www.dropbox.com/sh/lagac9vj7xw4lhu/spiDPotgye

(face corruptions)

https://www.dropbox.com/sh/lfaxy26nvkk1sk9/Vji8jfRe5Z

(You need the right version of the NA ROM for the face corruptions. I can't give links but look for Super Mario 64 (U) [!] if you want to find it yourself)

Conker's Bad Fur Day
https://www.dropbox.com/sh/964szb9frfqt3kp/2GTg0esdDV

Donkey Kong 64
https://www.dropbox.com/sh/o0n337gqt5mjqs9/J6MtMENySV

Legend of Zelda: Ocarina of Time
https://www.dropbox.com/sh/jl147aectlhvvoo/UCSfeVXf-_

Winback - Covert Operations
https://www.dropbox.com/sh/wepsggdchbxa6ly/PcujoV0AEn (save state + rom only) (all credit goes to Cr1tikal)

Mid-High Tier
(have the potential for high tier corruptions with variety but crash too frequently)

Super Smash Bros.
https://www.dropbox.com/sh/oksl86wsdfvb8ff/rfnCkkSbch


 * 007 - The World Is Not Enough

Mid Tier
(may be repetitive, lack variety, have already been explored to the full extent by others)


 * Earthworm Jim 3D
 * Goldeneye 007
 * Mario Party
 * WCW-NWO Revenge
 * WWF No Mercy
 * Diddy Kong Racing
 * Fifa '99
 * Mortal Kombat 4
 * Powerpuff Girls: Chemical X-Traction

Low Tier
(crash frequently/always or show little to no corruption)


 * 1080 Snowboarding
 * Banjo Kazooie
 * Blues Brothers 2000
 * Excitebike 64
 * Hercules- The Legendary Journeys
 * Jet Force Gemini
 * Kirby 64
 * Mario Golf
 * Mario Kart 64
 * Mario Party 2+3
 * NFL Blitz
 * Nightmare Creatures
 * Paperboy 64
 * PGA European Tour
 * Pilotwings 64
 * Pokemon Snap
 * Pokemon Stadium
 * Polaris Snocross
 * Scooby Doo- Classic Creep Capers
 * South Park
 * Tom Clancy's Rainbow Six
 * Toy Story 2
 * Turok - Dinosaur Hunter
 * Wave Race 64

Closing Remarks
The corruptions given above were sent directly to Vinny when he did the corruptions of these games, and many of these corruptions made it into videos of his. If you are going to make videos of these corruptions, which is perfectly acceptable, I would prefer you use the corruptions as starting points to find your own or at the very least link the guide.

Keep in mind that just because a game is low tier doesn't mean it's guaranteed to not work, I may have not tapped into the full potential of some of the games in here.

Thanks to Vinny for playing my corruptions on stream and making videos of them, Nephieliem for finding the corruptions of Mario's face, Cr1tikal for the WinBack corruptions, Rikerz for making the corruptor, Smellyfeetyouhave for the Zelda decompressor corruptions and the concept of using the decompressors with corruption, Apocalypse Rebel for helping with the Smash Bros corruptions, NTG56 for the Vinesauce corruptor edit, and the Vinesauce community for the support along the way.