Jump to content

ROM hacking

From Wikipedia, the free encyclopedia
(Redirected fromROM hacker)

ROM hacking(short forRead-only memory hacking) is the process of modifying aROM image or ROM fileto alter the contents contained within them, usually of avideo gameto 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 an all-new, fun gameplay while keeping most if not all of the items the same, as well as unlocking and/or reimplementing features that existed in the game's code but are not utilized in-game.

ROMhackingis generally accomplished through use of ahex editor(a program for editing non-textual data) and various specialized tools such astileeditors, and game-specific tools which are generally used for editing levels, items, and the like, although more advanced tools such asassemblersanddebuggersare occasionally used. Once ready, they are usuallydistributedon theInternetfor others to play on anemulatoror a games console.[1]

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.[2]Although much of the method applies to both types of hacking, this article focuses on "creative hacking" such as editing game levels.

Communities

[edit]

Most hacking groups offer web space for hosting hacks and screenshots (sometimes only hosting hacks by the group's members and hosting almost any hack), a message board, and often have anIRCchannel. There are also many guides created by several hacking groups that aims to help others get into grips with ROM hacking for the first time, one of which was the legendary "Rom Hacking Bible" for the NES written in the mid-to-late 1990s.[3]

One of the most popular sites devoted to the ROM hacking of games wasROMhacking.net, which first went online in late 2005. It hosted a repository of hacks, translations, utilities, documents, and patches for many well-known and obscure video games from thethird generationup to theseventh generation.It was preceded by its immediate predecessor, ROMhacking.com, a similar ROM hacking-oriented site that launched in 2000 and went offline in late 2004.[4]On August 1, 2024, the site's staff announced that ROMhacking.net will transition over into being a read-only news site after nearly 20 years of hosting due to various reasons beyond the site's control, with its former database and files being archived on theInternet Archive.New submissions on the site were also permanently closed on the same day of the announcement, and all downloads will remain available on the site until further notice.[5][6][7][8]

Methods

[edit]

Having been created by many different programmers or programming teams, ROM data can be very diverse.

Hex editing

[edit]

Ahex editoris 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), andAssembly hacking.

Editing text is one of the most basic forms of hacking. Many games do not store their text inASCIIform, 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, 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 asbyte pair encoding,also calleddual tile encodingor DTE, in which certain combinations of two or more letters are encoded as one byte) 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 performlevel editingwith a hex editor, but this is extremely difficult (except on games whose level storage format closely resembles how it is presented in a hex editor).

Graphics editing

[edit]

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 (NES, Super NES, Game Boy, etc.) store graphics intiles,which are 8x8-pixelunits 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 (such asTile LayerorTile Molester), which can graphically display the ROM data, as well as finding and editing tiles.

Graphics hacks can range from simple edits (such as givingMarioanafroorLuigiagolf club) to "porting" characters from one game to another (such as creating pixelated "retro-styled" sprites of later generationPokémonfor use in Generation I-V Pokémon games[9]), to full-blown thematic changes (usually with accompanying palette changes; see below).

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 (either for a specific game or a specific system).

Examples of graphics hacks include the incompletePokémon Torzach,a hack ofPokémon FireRedwhich attempts to add a whole new generation of Pokémon and tiles to the game,[10]andSuper Mario Land 2 DX: 6 Golden Coins,an enhanced version of theoriginal gamewhich added, among others, full-color support (the original game only supported greyscale) and fixes with screen flickering issues from the original game.[11]

Palette editing

[edit]

Another common form of hacking ispalette hacking,where color values are modified to change the colors a player sees in the game (this often goes hand-in-hand withgraphics hacking); Palette values are commonly stored inHex.This is fairly easy forNESgames, the graphics of which use a pre-defined set of colors among which a game selects (using aYIQ-based color palette); palette hacking in this case entails changing which of those colors are selected. The matter is slightly more complicated withSuper NESgames as well as games for other systems (which includedSega Mega Drive/Genesisgames), which store absoluteRGBcolor values. Palette editors are usually simple and often are with level editors or game-specific graphics editors.

Level editing

[edit]

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 (called alevel 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 hacking, the game can take on a very different look and feel.

Data editing

[edit]

A core component of many hacks (especially ofrole-playing video 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, etc. This can be done to make the game easier or harder or to create new scenarios for the player to face.

Assembly hacking

[edit]

The most powerful, and arguably the most difficult, hacking technique is editing the game's actual code, a process calledASM hacking( "ASM" means "assembly",referring to the low-level programming language that gets executed by the CPU).[1]There is no set pattern for ASM hacking, as the code varies widely from game to game, but most skilled ASM hackers either use anemulatorequipped with a built-in debugger or tracer, or run the ROM through adisassembler,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,anythingis possible with ASM hacking within the limits of the hardware and the software of the gaming platform, ranging from altering enemyAIto changing how graphics are generated. If the developers used atyped language,the 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 hackNintendo 64games, sinceMIPS-GCCcan compile code for the Nintendo 64.[12][13]

Music hacking

[edit]

Music hacks are relatively rare in most hacks, due to the wide variety of ways games store music data (hence the difficulty in locating and modifying this data) as well as the difficulties in composing new music (or porting music from another game). As music cracking is very uncommon, many hacks do not have any ported/composed music added in. Exceptions exist, such as the most recentSuper Mario Worldhacks where new music can have new instruments not found in the original game. Other games that have music hacking as part of their research and hacking communities are the NESMega Mangames,Final Fantasy VI,and the Mega Drive (Genesis)Sonic the Hedgehoggames.

As many Game Boy Advance games use the M4A Engine (informally called "Sappy Driver" and officially known as "MusicPlayer2000" or MP2k) 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 asSappy 2006.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. A utility known as theN64 Midi Toolwas 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 asSuper Mario 64.

Several games for theSega Mega Drive/Genesis[14]used a sound engine commonly known as "SMPS", which has been offered in both68kandZ80-based versions.[15]This sound engine was predominantly used in a wide variety of Japanese-developed games for the system (including first-party games) with some games providing modified versions of the sound engine tailored for a specific game. It has been researched for decades by many hackers.[16]Today, many tools are available[17]to alter the music of games that used the SMPS engine (most notably theSonic the Hedgehoggames in particular); many of them had eventually made their way into theSteam Workshop.[18]

ROM expansion

[edit]

Generally speaking, a ROM hacker cannot normallyaddcontent to a game, but merelychangeexisting content. This limit can be overcome throughROM expansion,whereby the total size of the ROM image is increased, making room for more content and, in turn, a larger game. The difficulty in doing this varies depending on the system for which the game was made. For example, expanding an NES ROM may be difficult or even impossible due to themapperused by the game. For example, if a mapper allows 16 ROM banks and all of them are used, expanding the ROM further is impossible without somehow converting the game to another mapper, which could be easy or extremely difficult. On the other hand, expanding an SNES game (and even a Mega Drive/Genesis game for that matter) is (relatively) straightforward. To utilize the added space, parts of the game code have to be modified or rewritten (seeAssembly hackingabove) so the game knows where to look. Another type ofROM expansionthat is fairly easy isGame Boy AdvanceROMs. The ROMs themselves are generally small, but the memory space available sometimes exceeds it by multiples of up to 17.

Distribution

[edit]

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 anunofficial patch(in IPS format or others) that can be applied to the unmodified ROM.[1]This, and usually some form of documentation, is put in an archive file and uploaded somewhere. IPS is a format forrecording the differencesbetween two binary files (in this case, between the unmodified and hacked ROMs) and is suitable for rom hacks.[19]IPS is still used today for small patches—however, as ROMs became larger, this format became useless, leading to quite a few file formats being created—such as NINJA and PPF (also known as "PlayStationPatch Format "). PPF is still used today, particularly to patch large files such as ISOCD-ROMimages as well asNintendo 64games. A new patch format, UPS, has also been developed by the ROM hacking community, designed to be the successor to IPS and PPF.[20] A more recent patching format, the APS patching system, has also been developed by a devoted Game Boy Advance ROM hacker.[21]The APS system is more space efficient, is reversible, and is faster than its predecessor.[22]

The main purpose of distributing a hack in patch form is to avoid the legal aspects of distributing entire ROM images; the patch records only what haschangedin the ROM, hence distributing it does not usually distribute parts of the original game. In this case, patches usually contained user-made code changes to the game and not the original game’s copyrighted code, which would have eliminated any copyright issues that may occur with distributing unofficial patches for games.[citation needed]A patch is also normally drastically smaller than the full ROM image (an NES ROM can run anywhere from 8 KB to 2 MB; a Super NES ROM can run from 256 KB to 6 MB; and Mega Drive/Genesis ROMs can run from 512 KB to 4 MB).

In a novel example of legal distribution, Sega released aSteam-based virtual hub for its previous collection of Mega Drive/Genesis games, entitledSega Mega Drive Classics Hub.TheHub,besides allowing players to play emulated versions of these older games, takes advantage of Steam's support for user-created content through the Steam Workshop, officially allowing the distribution of ROM hacks of any of the offered games.[23]

Usage

[edit]

Patched ROMs are often played on emulators, however, it is possible to play patched ROMs on the original hardware.[24]The destination cartridge could be the original cartridge from which the initial unpatched ROM was pulled (which usually involves replacing the original ROM chip with a new one), or another compatible cartridge of the same type, such as flash cartridges. This is particularly popular forfan translations,homebrew games,prototypes, games for which ROM cartridges were never produced, or for games that require exact timing or other elements of the original hardware that are not available in emulators.

Systems and games

[edit]

The majority of ROM hacking is done onNESandSNESgames (includingSega Mega Drive/Genesisgames to an extent), since such games are small and simple compared to games of more advanced consoles such as theNintendo 64orNintendo DS.Games for theGame Boy,Game Boy ColorandGame Boy Advanceare also popular for hacking, as well as games for thePlayStationto a lesser extent. However, games intended for more recent consoles are not exempt from hacking, and as computers have become faster over time and more programs and utilities have been written, more PlayStation, Nintendo 64 and Nintendo DS hacks have emerged.

Of these, popular games to play are popular games to hack; many hacks have been released of games of theSonic the Hedgehogseries,Marioseries (includingMario Bros.,Super Mario Bros.,Super Mario Bros. 2,Super Mario Bros. 3,Super Mario Land,Super Mario Land 2: 6 Golden Coins,Super Mario 64andSuper Mario World),Mario Kartseries (most notablySuper Mario Kart,Mario Kart Wii,Mario Kart 7,andMario Kart DS),Pokémonseries,Chip's Challenge,Castlevania,Final Fantasy,The Legend of Zelda,Mega Manseries,Fire Emblemseries,EarthBound,Super Metroid,and many others.

A notable hacked arcade game wasStreet Fighter II: Rainbow Edition,which featured increased game speed and new special moves. The success of this game prompted Capcom to releaseStreet Fighter II: Hyper Fightingas an official response.

Your Sinclairmagazine published a monthly column called "Program Pitstop". This focused mainly oncheathacks for games, but also featured both a level map printer[25]for the originalGauntlet,as well as a full level editor[26]for the same game.

See also

[edit]

References

[edit]
  1. ^abc"Dictionary of ROM hacking terms".ROMhacking.net.
  2. ^"The BIG List of Video Game Randomizers".Guillaume Fortin-Debigaré.Retrieved2020-07-10.
  3. ^"NES - Rom Hacking Bible - NES - By SeRiAlKLR - GameFAQs".gamefaqs.gamespot.com.Retrieved2024-08-05.
  4. ^"The Legacy - ROMhacking.com/ROMhacking.org".ROMhacking.net.Retrieved27 August2024.
  5. ^Joshua Wolens (2 August 2024)."Founder takes down the Nexus Mods of romhacking after 20 years because 'lines were crossed' by 'a most dishonest and hate filled group,' but others tell a different story".PC Gamer.Retrieved2 August2024.
  6. ^Catherine Lewis (2 August 2024)."20-year-old romhack site that was a treasure trove of Pokemon fan games and JRPG translations winds down after achieving" almost everything it set out to do "".gamesradar.Retrieved2 August2024.
  7. ^McWhertor, Michael (2 August 2024)."The best ROM hack website is shutting down after nearly 20 years".Polygon.Retrieved2 August2024.
  8. ^"Site: ROMhacking.net Moves to News Only, Database and File Archive Released to Internet Archive".ROMhacking.net.Retrieved27 August2024.
  9. ^"Pokemon Rom Hacks List: GBC, GBC & NDS - PokemonCoders".PokemonCoders.2019-04-13.Retrieved2023-03-08.
  10. ^"Pokemon FireRed ROM Hacks".PokemonCoders.com.11 March 2019.
  11. ^Machkovech, Sam (25 December 2017)."A Christmas gift from Game Boy ROM hackers:Super Mario Land 2in color ".Ars Technica.Retrieved18 February2023.
  12. ^"vg64tools - Project Hosting on Google Code".Retrieved2009-09-09.
  13. ^"Super Mario 64: Pong Of Death (messiaen)".Archived fromthe originalon 2011-10-10.Retrieved2009-09-09.
  14. ^"Mega Drive/Genesis Sound Driver List".GDRI (Game Developer Research Institute).
  15. ^"SMPS".Sega Retro.30 March 2024.
  16. ^"Valley Bell's SMPS Research".Sonic and Sega Retro Message Board.
  17. ^"Sonic Hacking Utilities".Sonic Retro.
  18. ^"Steam Workshop:: SEGA Mega Drive & Genesis Classics".steamcommunity.com.
  19. ^"Pokemon Rom Hacks".InverseGamer.com.20 September 2020.Retrieved31 March2021.
  20. ^"New patching format, UPS, debuts today".www.romhacking.net.27 September 2023.
  21. ^"The PokéCommunity Forums - View Profile: HackMew".www.pokecommunity.com.27 June 2006.
  22. ^"Newest patching format, APS, recently released".www.pokecommunity.com.20 May 2007.
  23. ^Yin-Poole, Wesley (April 29, 2016)."Modders are already having fun with Sega Mega Drive classics on Steam".Eurogamer.RetrievedMay 3,2016.
  24. ^"Basic NES Reproduction".
  25. ^"World of Spectrum - Forced Redirect".www.worldofspectrum.org.
  26. ^"World of Spectrum - Forced Redirect".www.worldofspectrum.org.