ROM hacking is the process of modifying a ROM image or ROM file of a video game to alter the game's graphics, dialogue, levels, gameplay, and/or other elements. This is usually done by technically inclined video game fans to improve an old game of importance, as a creative outlet, or to make new, unofficial games using the old game's engine. ROM hacks either re-design a game for new, fun gameplay while keeping most if not all the items the same, or unlock/reimplement features that exist in the game's code but are not utilized in-game. ROM hacking is generally accomplished through use of a hex editor (a program for editing non-textual data) and various specialized tools such as tile editors, and game-specific tools which are generally used for editing levels, items, and the like, although more advanced tools such as assemblers and debuggers are occasionally used. Once ready, they are usually distributed on the Internet for others to play on an emulator or games console. Fan translation (known as "translation hacking" within the ROM hacking community) is a type of ROM hacking; there are also anti-censorship hacks that exist to restore a game to its original state, which is often seen with older games that were imported, as publishers' content policies for video games (most notably, Nintendo's) were much stricter in the United States than Japan or Europe; as well as randomizers for certain games which shuffle entity placements. Although much of the method applies to both types of hacking, this article focuses on "creative hacking" such as editing game levels. Communities Most hacking groups offer web space for hosting hacks and screenshots (sometimes only hosting hacks by the group's members, sometimes hosting almost any hack), a message board, and often have an IRC channel. Methods Having been created by many different programmers or programming teams, ROM data can be very diverse. Hex editing A hex editor is one of the most fundamental tools in any ROM hacker's repertoire. Hex editors are usually used for editing text, and for editing other data for which the structure is known (for example, item properties), and Assembly hacking. Editing text is one of the most basic forms of hacking. Many games do not store their text in ASCII form, and because of this, some specialized hex editors have been developed, which can be told what byte values correspond to what letter(s) of the alphabet,