ROM hacking
ROM hacking is the process of modifying a ROM image or ROM file to change or alter the contents contained within, usually of a video game to alter the game's graphics, dialogue, levels, gameplay, or other elements.
ROM hacking is usually done by technically inclined video game fans, often created as a fun way of playing the original games by redesigning the old game with new graphics, levels, items, mechanics and other features while keeping the core gameplay the same, in effect creating either an improved or an entirely different version of the original game. In general, they are typically done to improve an old game of importance, as a creative outlet, or to essentially make new games using the old game's engine.
ROM hacking is generally accomplished through use of a hex editor 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 a games console.
Fan translation is another 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 were much stricter in the United States than in Japan or Europe; randomizers are also available for certain games, which are designed to shuffle entity placements from within the games; some hacks are also created to unlock or reimplement features that exist in the game's code but are not used in-game, especially when rediscovering and restoring old beta content that was hidden away from the game's final release. 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, a message board, and often have an IRC channel. Several hacking groups and individuals have also created guides for beginners to get into grips with ROM hacking for the first time, such as the Rom Hacking Bible for the NES that was written in the mid-to-late 1990s, as well as guides designed for those who wanted to learn how to add or change things from start to finish.There are many sites on the internet dedicated to world of ROM hacking, with each of them focusing on several hacks and translations of games across multiple series, franchises and platforms. One of the most popular sites dedicated to ROM hacking of video games was ROMhacking.net, which first went online in late 2005. From its inception up until 2024, it served as a hub related to all things ROM hacking, hosting a repository of hacks, translations, utilities, documents, and patches for many well-known and obscure video games from the third generation up to the seventh generation. ROMhacking.com was the immediate predecessor of ROMhacking.net, which launched five years earlier in 2000 as "The Whirlpool" and was briefly renamed as ROMhacking.org between 2001 and 2002 before returning to its original name afterwards and then went offline in late 2004.
, ROMhacking.net has been relegated into being a read-only news site for ROM hacking projects after transitioning into the new format on that day after nearly 20 years of hosting on the site due to various reasons beyond the site's control; its former database and files have been archived on the Internet Archive on the same day of the announcement. New submissions were also permanently closed on the same day as well, and all downloads on the site will remain available for as long as the site maintainers can handle. The spiritual successor to ROMhacking.net, Romhack.ing, was launched as an alpha release on 15 August 2024, two weeks after ROMhacking.net transitioned into the read-only format, and then opened for public registration on 1 March 2025.
Methods
Having been created by many different programmers or programming teams, ROM data can be very diverse.Hex editing
One of the most basic skills of ROM hacking is hex editing, which refers to directly modifying the hexadecimal data of a video game using a hex editor. A hex editor is one of the most fundamental tools in any ROM hacker's repertoire, and is typically used for editing text, editing other data for which the structure is known, 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 to tell what byte values correspond to the letters 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 which a suitably equipped hex editor can facilitate editing.
A hex editor is the tool of choice for editing things such as character/item properties if the structure and location of this data are known and there is no game-specific editor for the game that can edit this information. Some intrepid hackers also perform [|level editing] with a hex editor, but this is extremely difficult.
Graphics editing
Another basic hacking skill is [|graphics hacking], which is changing the appearance of the game's environments, characters, fonts, or other such things. The format of graphics data varies from console to console, but most of the early ones store graphics in tiles, which are 8x8-pixel units of 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, which can graphically display the ROM data, as well as finding and editing tiles.Graphics hacks can range from simple edits to "porting" characters from one game to another, to full-blown thematic changes.
More sophisticated graphics hacking involves changing more than just tiles and colors, but also on how the tiles are arranged, or tile groups generated, giving more flexibility and control over the final appearance. This is accomplished through hex editing or a specialized tool. An example of this approach was the incomplete Pokémon Torzach, a Pokémon FireRed hack that attempts to add a whole new generation of Pokémon and tiles to the game. Though the hack has long since been discontinued, it was able to achieve some desirable results with the tools that were currently available at the time. Super Mario Land 2 DX: 6 Golden Coins is another example, which is an enhanced version of the original game that notably added full-color support to the game as well as some quality-of-life improvements such as fixes with screen flickering issues from the original game.
Palette editing
Another common form of hacking is palette hacking, where color values are modified to change the colors a player sees in the game ; Palette values are commonly stored in Hex. 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 slightly more complicated with Super NES games as well as games for other systems, which store absolute RGB color values. Palette editors are usually simple and often are with level editors or game-specific graphics editors.Level editing
One of the most 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. 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 hacking, the game can take on a very different look and feel.Data editing
A core component of many hacks is editing data such as character, item, and enemy properties. This is usually done either "by hand" 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, etc. This can be done to make the game easier or harder or to create new scenarios for the player to face.Assembly hacking
The most powerful, and arguably the most difficult, hacking technique is editing the game's actual code, a process called assembly hacking or ASM hacking. There is no set pattern for assembly hacking, as the code varies widely from game to game, but most skilled assembly hackers either use an emulator equipped with a built-in debugger or tracer, or run the ROM through a disassembler, then analyze the code and modify it using a hex editor or assembler according to their needs. While quite challenging compared to the relatively simple methods listed above, "anything" is possible with assembly hacking, usually within the limitations of the hardware and software of the gaming platform. This can range from altering enemy AI to changing how graphics are generated. If the developers used a typed language, a hacker may be able to compile their code for the game in the same language if they have access to a proper compiler. One such example would be using C to hack Nintendo 64 games, since MIPS-GCC can compile code for the Nintendo 64.Music hacking
A relatively uncommon method of ROM hacking is music hacking, which is replacing music tracks of a game with new ones, or in some cases modifying the data of music tracks directly via tools such as a hex editor. Music hacks are relatively rare, due to the wide variety of ways games store music data as well as the difficulties in composing new music. As music hacking is very uncommon, many hacks do not have any ported/composed music added in. Despite this, some hacks such as the most recent Super Mario World hacks for example utilize this approach to include custom-made music tracks, sometimes even having new instruments that are not found in the original game. Other games that have utilized music hacking as part of their research and hacking communities include the NES Mega Man games, Final Fantasy VI, and the Mega Drive Sonic the Hedgehog games.As many Game Boy Advance games use the M4A Engine for music, the program SapTapper can be used to hack Game Boy Advance music data. Various other utilities were created to work with the engine such as . Another instance of the same engine being used between games is on the Nintendo 64 where most games use the same format; albeit with different sound banks for each game. A utility known as the was created to edit the sequences that the majority of Nintendo 64 games use, however it does not cover first-party N64 titles that use a slightly different engine such as Super Mario 64.
The Sega Mega Drive has a handful of games using a first-party sound engine commonly known as "SMPS" for composing music and sound effects, which has been offered in both 68000 and Z80-based versions. The sound engine, leveraging both the YM2612 and SN76489 sound chips of the console, was predominantly used in a wide variety of Japanese-developed games for the system, with some games providing modified versions of the sound engine tailored to a specific game. It has gained decades of research and reverse engineering by many hackers, which led to the creation of various utilities that can alter and create music for games using the SMPS engine ; many of the compositions and arrangements made under the SMPS engine had eventually made their way onto the Steam Workshop.