- This article is about the out of bounds region in Generation IV specifically. For "void" regions in Generation V and Generation VI, see the corresponding sections of out of bounds.
The void is the name of the out of bounds region in Generation IV games, named as such for its pitch black appearance, and general ease of navigation in Pokémon Diamond and Pearl. The most important technical property of the void is that the map ID (which is a 2-byte integer that determines which city, town, route, or building the game thinks the player is in) is read from an invalid area of the MatrixLayout, potentially out of bounds for the RAM buffer. Notably, they may come from RAM regions, such as the Mapdata, that is changed by the act of entering a new map ID itself. By strategically rewriting those RAM regions, efficient voidroutes are found that allows the player to travel to any desired map ID. Travelling through voidroutes is known as void exploration, or voiding for short.
Once in the desired map ID, the player can either directly exploit its map scripts (for example in the Retire glitch), or save and reset to load the correct MatrixLayout for that map ID. All outdoor maps in Sinnoh share the same MatrixLayout, but the indoor maps all have their own MatrixLayouts. In an indoor MatrixLayout, the player can easily walk towards the "physical" indoor map, and for some maps, the player may be able to bypass the walls surrounding the walkable area from the outside. This is used, for example, to set up the Union Room wrong-warping glitch.
Another important aspect of the void is the player's coordinates in the MatrixLayout, which are internally represented by two 32-bit integers, but when saving the game, or storing a location to warp back later, the coordinates are saved as 16-bit integers, signed in the former case and unsigned in the latter case. Normally those are all the same, because valid coordinates are always inside the 0 – 32767 range. However, when exploring the void, the player can go to coordinates out of this range, and cause a "coordinate warp". For example:
- By using the Explorer Kit at (-2, -3), the player can later take a wrong warp to (65534, 65533).
- By saving the game at (65534, 65533) and resetting, the player can go back to (-2, -3).
This is commonly exploited by saving in a Fake Sinnoh (when the map ID corresponds to an outdoor map) to end up at the real place.
The void should not be confused with the abyss, which is a pitch black region created by tweaking. Although abysses are commonly used as an entry point into the void, they are not themselves out of bounds (and their glitchy properties only come from sections of the map not being properly loaded).
Accessing the void
In the English versions of Pokémon Diamond and Pearl and the latest Japanese versions, the only known way to initially access the void is tweaking. Usually tweaking is used to put the player on the wrong side of a door. By going through a door in the wrong direction, the player ends up in the void of the indoor map. From there, the player can get to different voids (i.e. different MatrixLayouts) by saving and resetting at suitable positions.
After accessing the void, the player can set up the Union Room wrong-warping glitch, which allows easier access to the void later.
A fake Sinnoh is a region of the void that is exactly a multiple of 65536 tiles away, in one or both cardinal directions, from the real Sinnoh region. Unlike other regions of the void, a fake Sinnoh is not pitch black; instead, the player can visually see the corresponding spot in the real Sinnoh, even though the player's map ID may not match the visual model. Saving and resetting in a fake Sinnoh, while having a map ID corresponding to any outdoor map, would cause an effect similar to a coordinate warp, putting the player at visually the same spot, but in the real Sinnoh. Other voids (i.e. voids for the indoor maps) also have "fake" versions of the real map.
The reason that the visual model "loops" every 65536 steps is that the coordinates of the camera have a precision of 1/65536 of a tile, and are saved as 32-bit integers. This means that the tile position of the camera corresponds to the high 16 bits of those 32-bit integers, and overflows after 65536 steps. Height changes are associated with the visual model, but tile collisions ("walls") are not, so the player can "walk through walls" in a fake Sinnoh.
The three fake Sinnohs with coordinate (65536, 0), (65536, 65536), and (0, 65536) have special importance, as they are easy to access with an actual coordinate warp (usually a Explorer Kit wrong warp) at negative coordinates. Furthermore:
- In the one at (65536, 0), the map ID comes from the Mapdata, so it is easy to manipulate.
- In the ones at (65536, 65536) and (0, 65536), the map ID comes from cutscene data. When booting up the game, if the player allows the intro cutscene to load (by waiting until the black and white "Pokémon" logo appears and the intro music plays), the game will write a lot of 16-bit numbers higher than 558 there, which becomes Jubilife City. This suffices for the purpose of saving and resetting to the real Sinnoh.
Therefore, many void routes can be made by simply following the "Explorer Kit wrong warp to fake Sinnoh — Save and Reset near desired destination" formula.
|This article or section is a stub. You can help Glitch City Wiki wiki by expanding it.|