ROM hacking
![]() | This article is actively undergoing a major edit for a little while. To help avoid edit conflicts, please do not edit this page while this message is displayed. This page was last edited at 02:36, 13 November 2004 (UTC) (20 years ago) – this estimate is cached, . Please remove this template if this page hasn't been edited for a significant time. If you are the editor who added this template, please be sure to remove it or replace it with {{Under construction}} between editing sessions. |
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.