Jump to content

ROM hacking

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Vystrix Nexoth (talk | contribs) at 02:36, 13 November 2004 (first (incomplete) version). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
File:Zelda-challenge sword.png
Screenshot of Zelda Challenge: Outlands

ROM hacking is the process of modifying a video game ROM image to alter the game's graphics, dialogue, levels, gameplay, or other things. This is generally accomplished through use of a hex editor (a program that edits files on a binary level) and various specialized tools such as Tile editors, and game-specific tools which are generally used for editing levels, items, and the like.

ROM hacks are usually distributed on the Internet once ready, for play on an emulator.

Fan translation (known as "translation hacking" in the ROM hacking community) is a type of ROM hacking; this article, however, focuses on "non-translation hacking" such as editing game levels.

Etymology

As ROMs were never designed to facilitate modification, one has to "hack" into it, hence the term "ROM hacking". Some in the ROM hacking community object to this term due to its perceived association with cracking; however, the term has been deeply engrained in the vast majority of those in the ROM hacking scene, and doesn't appear to be changing anytime soon.

The spelling of the term varies; many use "romhacking" or "rom hacking", some use "ROMHacking" or "ROMhacking", and others, when contextually appropriate, simply use "hacking". Sometimes the term "h4x0r1ng" (or variants) is used as a parody of l33t sp33k.

Communities

Many ROM hackers form or join groups, for various reasons, such as for web space to host distributed hacks and/or screenshots, for the support or collaboration of/with other members of the group, for privelaged status on the group's message board (if it has one), or just for the comraderie. Many hackers, however, choose to go solo. Not all group members are necessarily ROM hackers themselves; some have "retired" from the craft, others offer services such as website and/or message board administration, and some simply offer guidance to aspiring ROM hackers.

Most hacking groups offer web space for hosting hacks and screenshots (sometimes only hosting hacks by the group's members, sometimes hosting most any hack), a message board, and often have an IRC channel. Attaining membership generally involves making a request to a high-ranking member of the group, and/or being invited by such a member.

Inter-group relationships are generally peaceful, although events such as hackers leaving/joining a group, switching groups, or breaking formal relationships can cause strife.

Methodology

As ROMs were not designed to be edited, there aren't really any standardized ways of hacking, but some of the more generally-accepted methods and utilities are described here.

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, for editing other data for which the structure is known (for example, item properties), and ASM hacking.

Editing text is one of the most basic forms of hacking. Not all games store their text in ASCII form, though, and for this, some specialized hex editors have been developed, which can be told what byte values correspond to what letter(s) of the alphabet, to facilitate text editing; a file that defines these byte=letter relationships is called a "table" file. Other games use simple text compression techniques (such as Dual-Tile Encoding or DTE, in which certain combinations of two or more letters are encoded as one byte) which a suitably-equipped hex editor can facilitate editing.

Another common form of hacking is Palette hacking, where color values are modified to change the colors a player sees in the game (this often goes hand-in-hand with Graphics hacking). This is fairly easy for NES games, the graphics of which use a pre-defined set of colors among which a game selects; palette hacking in this case entails changing which of those colors are selected. The matter is more complicated with Super NES games, which store absolute RGB color values.

And a hex editor is the tool of choice for editing things such as character/item properties, if the structure and location of this data is known and there's no game-specific editor for the game that can edit this information. Some intrepid hackers also perform level editing with a hex editor, although one would be hard-pressed to find someone (including those who have done it) who consider it easy.