114

3D games like Super Mario 64 and Ocarina of Time are time-step-based physics simulators. Their basic design is based on the assumption that nothing goes above a certain speed. Each frame, Super Mario 64 calculates four time steps, in which it (among other things): moves Mario ¼ of the distance he's supposed to travel in that frame; then pushes Mario out of ...


76

The main point to understand is that the console is limited. RAM on the console itself is faster than memory on the cartridge (and the cartridge memory was usually read only, with a little non volatile for user data). So the game designers had to carefully consider how to use the precious, but faster, ram on the console, vs the slower rom on the cartridge....


72

In Super Mario Bros, you can access warp zones in three areas of the game. There are two of these that are important for the minus world glitch: the one at the end of World 1-2 (following the exit pipe) and the one at the end of World 4-2 (also following the exit pipe). The first warp zone takes you normally to World 2, 3, and 4, while the second one only ...


52

Warp zones exist at the end of some levels. In order to access them, you have to break through blocks at the top of the level, then run along the top until a secret area becomes visible. In order to access the warp zone below you, you have to fall through a gap at the right-most side of the level. The loading of the right-most wall is what triggers the ...


51

I wouldn't say "It's a very specific and subtle kind of behavior." I really think this is the case of undefined behavior that has been reproduced so many times from N64 launch to now that users have seen repeat behavior. In fact, sometimes cartridge tilting can actually delete your game save (Donkey Kong 64), and not just mess with the graphics (...


29

This is the pinout of a Nintendo 64 cartridge (from here). The Nintendo 64 used a multiplexed address/data bus with a three-stage access protocol: write the high word of the address you want to access, write the low word, then read the data, all going across the same 16 pins. This indirect access method means that program code needs to be run from the ...


29

The short answer is: These games are built on code which is supposed to simulate the laws of physics, at least for motion. But they are also games, which means that that code has to run fast enough for the game to be playable. To do that on the original hardware (which, after all, cannot run arbitrarily fast like nature does), the code author had to take ...


22

This is known as "Hall of Mirrors" effect. The Doom Fandom Wiki states: When the game renders the level to the screen, it draws it into a buffer, an area of memory. During gameplay, the previous contents of the buffer are overwritten by consecutive frames. However, if a player travels outside the level, there are no walls to draw, so Doom draws ...


19

I don't know if this is correct, but it seems to fit. The SNES sound chip is a full processor. It can run its own program and play sounds independently of the main processor. It is also possible for a Game Boy ROM to load a sound program into the SNES sound chip via the Super Game Boy. Animaniacs is one those games. While the way the SNES sound chip is ...


19

You probably don't encounter these glitches because you play the game as the developers intended. In Oblivion you can pickup plates and stuff to move or throw (which is the intended use), but if you place the plate below yourself while holding, you could jump on it making you and the object move up and then you could jump on it again and again (which kinda ...


16

Without analyzing the code I'd risk to say that the state of Mario consists of 2 different variables: big or small mario state big or small mario image When you're hit and you end a level, the game only updates one of the variables: mario state, and doesn't have time to update the other one, resulting in an inconsistency. This should not happen but it did....


14

No software is ever bug-free, and games are no exception. The reason most of these bugs seem so crazy is that they're complex and frequently require several things to go right (wrong?) at the same time, combinations of things that rarely make sense in the context of normal gameplay. A large portion of these exploits are discovered by people playing the game ...


12

The Gist Games on the N64 typically did not have a lot of memory to use. Instead of keeping all code and data loaded onto the cartridge at one time, it would typically keep some necessary game code loaded into memory, and would only load temporary game code or data when needed. This is seen with cartridge tilting on "The Legend of Zelda: Ocarina of Time" ...


10

This answer is based solely on the information here and the original Parallel Universe video. There is a part of the game's code that detects whether Mario is standing on the floor. This part of the code uses 16 bits to process Mario's position in the X, Y and Z direction (so 48 bits total, but 16 bits per direction). 16 bits is enough to store a number ...


10

Firstly, on the "difficulty" of programming a teleport routine: Teleporting an NPC when it gets stuck is actually a relatively straight-forward task to achieve. Identifying when an NPC has gotten caught is simple: you can calculate the Euclidian distance between the NPC and the player, and if it exceeds some threshold X, then you conclude that the ...


10

A good way to think about it is to consider board, card and tabletop games: A board game has rules: who goes first, what happens when you land on a space; and state: whose turn is it, where the pieces currently are, how much each player has. So does a card game like Magic the Gathering, and a tabletop role-playing game like Dungeons & Dragons has a lot ...


8

I'll be focusing first on the "How does anyone find that?" part of your question, but that will lead us to the "how did they get there" portion too: There are a few ways. Chance Some things will just happen by random chance. I have come across glitches in some games where I've fallen through the floor, for example. Often these funny ...


8

Since Ocarina of Time was mentioned, I'll say a little about that too, and things that aren't related to faulty collision detection. Many of the really game-breaking glitches in this game (i.e. which speedrunners would find useful) depend on the player doing two or more things simultaneously (or in quick succession), and the game doing unexpected things as a ...


7

I think it would be unlikely to work on computers, as opposed to consoles. The trick relies on corrupting values in RAM (by disrupting the DRAM refresh cycle) without also corrupting the game code; this worked in the arcade and on consoles, where the game code was held in ROM and could not be corrupted. But on a home computer, games were normally loaded ...


6

First, if you go to The Cutting Room Floor and browse awhile, you will discover that the binary images of many old ROM and cartridge based games have often have test code, unused code, debug code, partially overwritten code, and in some cases even messages and text-based source code. Why this code is not deleted and instead "skipped over" is beyond me - it'...


6

After looking at the posted videos, I think that OAM layout may be the cause of the Zelda right-to-left glitch, but not the Metroid top-to-bottom glitch. In Zelda if you frame step you can see at least one frame where the left half of Link is on the right hand side of the screen and his right half is on the left. The OAM accepts only 8 bits to specify ...


3

In programming, it's common for a seemingly benign oversight to result in wild behavior. (e.g. division by zero, infinite loops) Weird behavior still notoriously happens even in big-budget, more modern games by Bethesda. In SM64/OOT, the glitches tend to happen because A) the player is able to build up speed beyond the intended cap (backwards long jumping ...


1

Here is my theory: the N64 controller uses basically a UART protocol. The console (as instructed by the game code) sends a command to the controller and then receives a response. Because this is an asynchronous protocol, there's no required timing (like there would be in a SNES controller, which is synchronous). So the console will wait until it receives the ...


1

Many devices that may receive inputs at arbitrary times are designed to interrupt the processor whenever input arrives. When the interrupt is triggered, it will be disabled until code finishes processing it, but in many cases, the interrupt will be re-enabled as soon as processing on that particular input is complete. If something causes the interrupts to ...


1

(Just to be pedantic) It doesn't exist. What we see is just what happens to occupy the part of the rom that gets loaded into memory when using a bogus level number as input for the rom-offset lookup routine. Using another (but still invalid) level number, would either crash and freeze the system or drop Mario into another dysfunctional adventure. Another ...


Only top voted, non community-wiki answers of a minimum length are eligible