ROM hacking |
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 usually done by technically-inclined video game fans to breathe new life into a cherished old game, as a creative outlet, or to make essentially new games using an old game as a foundation.
ROM image 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. Once ready, they are usually #Distribution on the Internet for others to play on an Console emulator.
Fan translation (known as translation hacking in 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 censorship laws for video game games were much stricter in the United States than Japan or Europe. This article, however, focuses on creative 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 (mainly by those unfamiliar with ROM hacking); however, the term has been deeply ingrained in the vast majority of those in the ROM hacking scene, and doesn t appear to be changing any time 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 privileged status on the group s message board (if it has one), for the prestige associated with the group, or just for the camaraderie. 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 Internet Relay Chat channel. Attaining membership generally involves making a request to a high-ranking member of the group, and/or being invited by such a member. ROM hacking experience is usually a prerequisite for joining; how much depends on the group.
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 editing). This is fairly easy for Nintendo Entertainment System 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 Nintendo Entertainment System games, which store absolute RGB color values.
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 is no #Game-specific editors 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.
==Graphics editing==
Another basic hacking skill is graphics hacking, which is changing the appearance of the game s environs, characters, fonts, or other such things. The format of graphics data varies from console to console, but most of the early ones (NES, Super NES, Game Boy, etc) store graphics in tiles , which are 8x8-Pixel units of pixel data, which are arranged on-screen to produce the desired result. Editing these tiles is also possible with a hex editor, but is generally accomplished with a tile editor (such as Tile Layer or [http://www.stud.ntnu.no/~kenth/tm/ Tile Molester]), which can display the ROM data in a graphical way and let you find and edit tiles.
Graphics hacks can range from simple edits (such as giving Mario an afro) to porting characters from one game to another, to full-blown thematic changes (usually with accompanying palette changes; see above).
More sophisticated graphics hacking involves changing more than just tiles and colors, but also the way in which the tiles are arranged, or tile groups generated, giving more flexibility and control over the final appearance.
==Level editing==
One of the more popular forms of ROM hacking, level editing entails modifying or redesigning a game s levels or maps. This is almost exclusively done with an editor specially-tailored for a particular game (called a level editor ). Level edits can be done to make the game more challenging, to alter the flow of the game s plot, or just to give something new to an old game. Combined with extensive #Graphics editing, the game can take on a very different look and feel.
==Data editing==
A core component of many hacks (especially of Computer role-playing games) is editing data such as character, item, and enemy properties. This is usually done either by hand (with a hex editor) if the location and structure of the data is known, or with a game-specific editor that has this functionality. Through this, a hacker can alter how weapons work, how strong enemies are or how they act, and things like that. This can be done to make the game easier or harder, or to create new scenarios for the player to face.
==ASM hacking==
The most powerful, and arguably the most difficult, hacking technique is editing the game s actual code, a process called ASM hacking ( ASM means Assembly language , referring to the type of programming language used for early console games). There is no set pattern for ASM hacking, as the code varies widely from game to game, but most skilled ASM hackers use an Console emulator equipped with a built-in debugger to find code that affects whatever they re looking for, then analyze the code and modify it according to their needs. While quite challenging compared to the relatively-simple methods listed above, virtually anything is possible with ASM hacking, ranging from altering enemy Artificial intelligence to changing how graphics are generated.
==Music hacking==
Music hacks are relatively rare, due to the wide variety of ways games store music data (hence the difficulty in locating and modifying this data) and the difficulties in composing new music (or porting music from another game).
==ROM expansion==
Generally speaking, a ROM hacker cannot add content to a game, but merely change existing content. This limit can be overcome through ROM expansion , whereby the total size of the ROM image is increased, making room for more content and a larger game. The difficulty in doing this varies depending on the system (NES, etc) for which the game was made; performing ROM expansion on NES games is much more difficult due to how games have to cope with the limited resources (such as Random Access Memory) of the NES, whereas expanding a Super NES game is (relatively) straightforward. To utilize the added space, parts of the game code have to be modified or re-written (see ASM hacking above) so the game knows where to look. The Game Boy Advance is generally considered the easiest to expand.
A famed member of the Sonic the Hedgehog hacking community known as Stealth has created a tool called SonED 2 which does not expand the ROM, but splits the ROM up, allowing you to edit each level individually, then later merge them back together. This way, the conventional expansion method (which is to copy the new levels to the end of the ROM so other non-level data is not overwritten, thus bloating the original ROM) is not used, making ROM sizes smaller and hacks more flexible.
=Distribution=
Once a hack is completed (or an incomplete version is deemed suitable for an interim release) it is released onto the Internet for others to play. The generally-accepted way to do this is by making a patch (in IPS format) that can be applied to an unmodified ROM of the game that was hacked. This, and usually some form of documentation, is put in a ZIP file format and uploaded somewhere. IPS is a format for recording the differences between two binary files (in this case, between the unmodified and hacked ROMs) and is suitable for ROM hacks. It is not certain what IPS stands for, although International Patching System and Intelligent Patching System are commonly believed to be the case.
The purpose of distributing a hack in patch form is to avoid the legal aspects of distributing entire ROM images; the patch records only what has changed in the ROM, hence distributing it does not distribute parts of the original game. A patch is also smaller than the full ROM image (an NES ROM can run anywhere from 40KB-512KB; a Super NES ROM can (usually) go up to 4MB).
=Systems and Games=
The majority of ROM hacking is done on Nintendo Entertainment System games, since such games are smaller and relatively simple compared to games of more advanced consoles such as the Super Nintendo Entertainment System. Also, many ROM hackers grew up with the NES and its games, so they hold fonder memories for hackers than more contemporary games. Games for the Super NES and Nintendo Game Boy are also popular for hacking.
Of these, popular games to play are popular games to hack; many hacks have been released of EarthBound, Super Mario Bros., Super Mario World, Final Fantasy I, The Legend of Zelda, Mega Man, Pokémon, Sonic the Hedgehog 2, and many others.
=External links=
Some hacking groups, where you can find information about their hacks (and others) and links to other resources:
More information, including hack repositories, utilities, and information:
|
|