ROM hacking: Difference between revisions

Content deleted Content added
Tags: Mobile edit Mobile web edit Advanced mobile edit
m Reverted 1 edit by 208.54.234.251 (talk) to last revision by Cyberlink420
 
(29 intermediate revisions by 10 users not shown)
Line 1:
{{short description|Editing technique for video games}}
{{About|modifications to ROM images of video games|video games unofficially produced by hobbyists for closed systems|Homebrew (video games)}}
 
'''ROM hacking''' (short for '''Read-only memory hacking''') is the process of [[Modding|modifying]] a [[ROM image|ROM image or ROM file]] to alter the contents contained within them, usually of a [[video game]] to alter the game's [[graphics]], [[dialogue]], levels[[Level (video games)|level]]s, [[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 essentially make ''new'', unofficial games using the old game's engine. ROM hacks typically redesign 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.
 
ROM [[Hacker (hobbyist)|hacking]] is generally accomplished through use of a [[hex editor]] (a program for editing non-textual data) and various specialized tools such as [[tile-based video game|tile]] editors, and game-specific tools which are generally used for editing levels, items, and the like, although more advanced tools such as [[assembly language|assemblers]] and [[debugger]]s are occasionally used. Once ready, they are usually [[#Distribution|distributed]] on the [[Internet]] for others to play on an [[Console emulator|emulator]] or a games console.<ref name="dictionary">{{cite web|url=http://www.romhacking.net/dictionary/?page=dictionary|title=Dictionary of ROM hacking terms|website=ROMhacking.net}}</ref>
 
Many ROM hacks today are typically created as a fun way of playing the original games, as they typically redesign the game with new mechanics, graphics, levels, and other features while keeping most if not all of the items the same, effectively creating either an improved or an entirely different version of the original games. Some hacks are also created to unlock and/or reimplement features that existed in the game's code but are not utilized in-game, especially for when rediscovering or restoring old beta content that was hidden away from the final game's release.
[[Fan translation of video games|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.<ref>{{Cite web|title=The BIG List of Video Game Randomizers|url=https://www.debigare.com/randomizers/|access-date=2020-07-10|website=Guillaume Fortin-Debigaré|language=en}}</ref> Although much of the method applies to both types of hacking, this article focuses on "creative hacking" such as editing game levels.
 
[[Fan translation of video games|Fan translation]] (known as "translation hacking" within the ROM hacking community) is aanother 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[[Speedrunning|randomizers]] wellare asalso randomizersavailable for certain games, which are designed to shuffle entity placements from within the games.<ref>{{Cite web|title=The BIG List of Video Game Randomizers|url=https://www.debigare.com/randomizers/|access-date=2020-07-10|website=Guillaume Fortin-Debigaré|language=en}}</ref> Although much of the method applies to both types of hacking, this article focuses on "creative hacking" such as editing game levels.
 
==Communities==
<!-- Deleted image removed: [[File:Comparebrownred.PNG|frame|Screenshots comparing the world maps in ''[[Pokémon Red]]'' (original game, left) and ''Pokémon Brown'' (hacked game, right) {{ffdc|1=Comparebrownred.PNG|log=2013 December 20}}]] -->
 
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 an [[Internet Relay Chat|IRC]] channel. Several hacking groups have also created guides that aims to help othersbeginners get into grips with ROM hacking for the first time, such asincluding the legendary "Rom Hacking Bible" for the [[Nintendo Entertainment System|NES]] written in the mid-to-late 1990s,<ref>{{Cite web |title=NES - Rom Hacking Bible - NES - By SeRiAlKLR - GameFAQs |url=https://gamefaqs.gamespot.com/nes/916386-nes/faqs/2948 |access-date=2024-08-05 |website=gamefaqs.gamespot.com}}</ref> as well as guides that are designed for learningthose that 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 site focusing on several hacks and translations of several different games across multiple series, franchises and platforms. One of the most popular sites devoteddedicated to the ROM hacking of video games was {{Anchor|Romhacking.net}}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 of video game consoles|third generation]] up to the [[Seventh generation of video game consoles|seventh generation]]. ItsROMhacking.com was the immediate predecessor wasof ROMhacking.comnet, awhich similarlaunched ROMfive hacking-orientedyears site that launchedearlier 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.<ref>{{cite web |title=The Legacy - ROMhacking.com/ROMhacking.org |url=https://www.romhacking.net/about/#romhackcom |website=ROMhacking.net |access-date=27 August 2024}}</ref><ref>{{Cite web|url=https://romhack.ing/help/about|title=Help - About|website=RHDI|access-date=2 April 2025}}</ref>
 
As of August 1, {{asof|2024|8|1}}, ROMhacking.net hasis transitionednow overrelegated 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, with; its former database and files beinghave been archived on the [[Internet Archive]]. Newon submissionsthe onsame day of the siteannouncement. New submissions were also permanently closed on the same day ofas the announcementwell, and all downloads will remain available on the site will remain available for as long as the site maintainers can handle.<ref>{{cite news |author1=Joshua Wolens |date=2 August 2024 |title=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 |url=https://www.pcgamer.com/gaming-industry/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/ |access-date=2 August 2024 |work=PC Gamer |language=en}}</ref><ref>{{cite news |author1=Catherine Lewis |title=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" |url=https://www.gamesradar.com/games/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/ |access-date=2 August 2024 |work=gamesradar |date=2 August 2024 |language=en}}</ref><ref>{{cite web |last1=McWhertor |first1=Michael |title=The best ROM hack website is shutting down after nearly 20 years |url=https://www.polygon.com/24211944/romhacking-net-closure-internet-archive-downloads |website=Polygon |access-date=2 August 2024 |date=2 August 2024}}</ref><ref name="rhdn_readonly">{{cite web |title=Site: ROMhacking.net Moves to News Only, Database and File Archive Released to Internet Archive |url=https://www.romhacking.net/forum/index.php?topic=39405.0 |website=ROMhacking.net |access-date=27 August 2024}}</ref> The spiritual successor to ROMhacking.net, {{Anchor|Romhack.ing}}Romhack.ing (RHDI), was launched as an alpha release on 15 August 2024 and opened for registration on 1 March 2025.
 
==Methods==
Line 31 ⟶ 34:
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 in [[Tile-based video game|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 (such as [http://segaretro.org/Tile_Layer_Pro ''Tile Layer''] or [https://github.com/toruzz/TileMolester ''Tile Molester'']), which can graphically display the ROM data, as well as finding and editing tiles.
 
Graphics hacks can range from simple edits (such as giving [[Mario]] an [[afro]] or [[Luigi (character)|Luigi]] a [[golf club]]) to "porting" characters from one game to another (such as creating [[pixelation|pixelated]] ("retro-styled") sprites of later generation [[List of Pokémon|Pokémon]] for use inwith Generation I-V Pokémon games<ref>{{Cite web |last= |date=2019-04-13 |title=Pokemon Rom Hacks List: GBC, GBC & NDS - PokemonCoders |url=https://www.pokemoncoders.com/pokemon-rom-hacks/ |access-date=2023-03-08 |website=PokemonCoders |language=en-US}}</ref>), 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).
 
ExamplesMore ofsophisticated graphics hackshacking includeinvolves 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). An example of this approach was the incomplete ''Pokémon Torzach'', a hack of [[Pokémon FireRed]] whichhack of that attempts to add a whole new generation of Pokémon and tiles to the game,. It was able to achieve some desirable results with the tools that were currently available at the time.<ref name="Pokemon FireRed ROM Hacks">{{cite web |title=Pokemon FireRed ROM Hacks |url=https://www.pokemoncoders.com/pokemon-fire-red-rom-hacks/ |website=PokemonCoders.com|date=11 March 2019 }}</ref> and ''Super Mario Land 2 DX: 6 Golden Coins'' is another example of graphics hacking, which is an enhanced version of the [[Super Mario Land 2: 6 Golden Coins|original game]] whichthat added, among others, full-color support (the original game only supportedwas greyscale-only) as well asand some quality-of-life improvements, such as fixes with screen flickering issues from the original game.<ref>{{Cite web|url=https://arstechnica.com/gaming/2017/12/a-christmas-gift-from-game-boy-rom-hackers-super-mario-land-2-in-color/|title=A Christmas gift from Game Boy ROM hackers: ''Super Mario Land 2'' in color|last=Machkovech|first=Sam|date=25 December 2017|website=Ars Technica|access-date=18 February 2023}}</ref>
<!-- Deleted image removed: [[File:Advance map screen.png|left|thumb|225px|Screenshot of Advance Map, an editor for Pokémon games for the GBA]] -->
 
===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 (this often goes hand-in-hand with [[#Graphics editing|graphics hacking]]); Palette values are commonly stored in [[Hexadecimal|Hex]]. This is fairly easy for [[Nintendo Entertainment System|NES]] games, the graphics of which use a pre-defined set of colors among which a game selects (using a [[YIQ]]-based color palette); palette hacking in this case entails changing which of those colors are selected. The matter is slightly more complicated with [[Super Nintendo Entertainment System|Super NES]] games as well as games for other systems (which includedincludes [[Sega Genesis|Sega Mega Drive (Genesis)]] games), which store absolute [[RGB]] color values. Palette editors are usually simple and often are with level editors or game-specific graphics editors.
 
===Level editing===
Line 52 ⟶ 53:
===Assembly 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|assembly]]", referring to the low-level programming language that gets executed by the CPU).<ref name="dictionary"/> There is no set pattern for ASM hacking, as the code varies widely from game to game, but most skilled ASM hackers either use an [[Console emulator|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 ASM hacking, usually within the limitslimitations of the hardware and software of the gaming platform. This can range from altering enemy [[Game artificial intelligence|AI]] to changing how graphics are generated. If the developers used a [[Programming language#Typed versus untyped languages|typed 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 (programming language)|C]] to hack [[Nintendo 64]] games, since [[MIPS architecture|MIPS]]-[[GNU Compiler Collection|GCC]] can compile code for the Nintendo 64.<ref>{{cite web|url=https://code.google.com/p/vg64tools/source/browse/#svn/n64/z64actor/trunk |title=vg64tools - Project Hosting on Google Code |access-date=2009-09-09}}</ref><ref>{{cite web |url=http://sites.google.com/site/messiaen64/pong_of_death |title=Super Mario 64: Pong Of Death (messiaen) |access-date=2009-09-09 |archive-date=2011-10-10 |archive-url=https://web.archive.org/web/20111010104312/http://sites.google.com/site/messiaen64/pong_of_death |url-status=dead }}</ref>
 
===Music hacking===
Line 59 ⟶ 60:
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 as [https://web.archive.org/web/20160306150654/http://www.pokemonhackersonline.com/showthread.php?t=120-Wataru-Kun-s-Ultimate-Pok-mon-Music-Hacking-Guide Sappy 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 for each game. A utility known as the [https://github.com/jombo23/N64-Tools/tree/master/N64MidiTool N64 Midi Tool] 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]]''.
 
Several games forOn the [[Sega Genesis|Sega Mega Drive (Genesis)]]<ref>{{cite, web|url=https://vgmpf.com/Wiki/index.php?title=Mega_Drive/Genesis_Sound_Driver_List|title=Megaseveral Drive/Genesisgames Soundmade Driverfor List|website=Videothe Gamesystem Musichad Preservationits Foundation}}</ref>music usedand sound effects created under a single sound engine commonly known as "SMPS" (andalso known as "Sound-Source" by some developers), which has been offered in both [[Motorola 68000|68000]] and [[Zilog Z80|Z80]]-based versions.<ref>{{cite web|url=https://vgmpf.com/Wiki/index.php?title=Mega_Drive/Genesis_Sound_Driver_List#Sega|title=Mega Drive/Genesis Sound Driver List|website=Video Game Music Preservation Foundation}}</ref><ref name="smps">{{cite web|url=http://segaretro.org/SMPS|title=SMPS|website=Sega Retro}}</ref> ItThis 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 (including Sega's first-party games),<ref name="smps" /> with some games providing modified versions of the sound engine tailored forto a specific game. ItThe SMPS engine has been researched for decades by many hackers.,<ref>{{cite web|url=http://forums.sonicretro.org/index.php?showtopic=32473|title=Valley Bell's SMPS Research|website=Sonic and Sega Retro Message Board|date=December 31, 2013}}</ref> Today,which manyled toolsto the creation of arevarious availableutilities<ref>{{cite web|url=http://info.sonicretro.org/Sonic_Hacking_Utilities#Sound_Editors|title=Sonic Hacking Utilities|website=Sonic Retro}}</ref> tothat can alter theand create music of(and gamessound thateffects) for games useusing the SMPS engine (most notably the ''Sonic the Hedgehog'' games in particular); many of the compositions and arrangements made under the SMPS engine had eventually made their way intoonto the [[Steam Workshop]].<ref name="steamworkshopsmd">{{cite web|url=http://steamcommunity.com/workshop/about/?appid=34270|title=Steam Workshop :: SEGA Mega Drive & Genesis Classics|website=steamcommunity.com}}</ref>
 
===ROM expansion===
Line 70 ⟶ 71:
A more recent patching format, the APS patching system, has also been developed by a devoted Game Boy Advance ROM hacker.<ref>{{cite web|url=http://www.pokecommunity.com/member.php?u=28656|title=The PokéCommunity Forums - View Profile: HackMew|website=www.pokecommunity.com|date=27 June 2006 }}</ref> Compared to other patching formats, the APS system is more space efficient, is reversible, and is faster than its predecessor.<ref>{{cite web|url=http://www.pokecommunity.com/showpost.php?p=2488977&postcount=1&highlight#A-Ptch|title= Newest patching format, APS, recently released|website=www.pokecommunity.com|date= 20 May 2007}}</ref>
 
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 has ''changed'' in the ROM, hence distributing it does not usually distribute parts of the original game. In{{Citation thisneeded context,span|date=September patches2024|reason=A usuallyclaim containedof user-madelegality codewithout changessource|This topractice thewould gamehave andalso not the original game’s copyrighted code, which would havepotentially eliminated any copyright issues that may occur with distributing unofficial patches for games.{{Citationthe needed|date=SeptemberROMs 2024|reason=A claim of legality without sourcethemselves.}} A patch is also normally drastically smaller than thea full ROM image (an NES ROM can run anywhere from 8&nbsp;KB to 2&nbsp;MB; a Super NES ROM can run from 256&nbsp;KB to 6&nbsp;MB; and Mega Drive (Genesis) ROMs can run from 512&nbsp;KB to 4&nbsp;MB).
 
In a novel example of legal distribution, Sega released a [[Steam (service)|Steam]]-based virtual hub for its previous collection of Mega Drive (Genesis) games, entitled ''[[Sega Mega Drive Classic Collection#Sega Mega Drive Classics Hub|Sega Mega Drive Classics Hub]]''. The ''Hub'', 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.<ref>{{cite web | url = http://www.eurogamer.net/articles/2016-04-29-modders-are-already-having-fun-with-sega-mega-drive-classics-on-steam | title = Modders are already having fun with Sega Mega Drive classics on Steam | first = Wesley | last = Yin-Poole | date = April 29, 2016 | access-date = May 3, 2016 | work = [[Eurogamer]] }}</ref><ref name="steamworkshopsmd" />
 
==Usage==
Line 81 ⟶ 82:
 
<!-- This paragraph isn't here to list every single game that has been hacked, just the most commonly hacked ones. -->
Of these, popular games to play are popular games to hack; many hacks have been released of games of the ''[[Sonic the Hedgehog (series)|Sonic the Hedgehog]]'' series, ''[[Mario (franchise)|Mario]]'' series (including ''[[Mario Bros.]]'', ''[[Super Mario Bros.]]'', ''[[Super Mario Bros. 2]]'', ''[[Super Mario Bros. 3]]'', ''[[Super Mario Land]]'', ''[[Super Mario Land 2: 6 Golden Coins]]'', ''[[Super Mario 64]]'' and ''[[Super Mario World]]''), ''[[Mario Kart]]'' series (including ''[[Super Mario Kart]]'', ''[[Mario Kart Wii]]'', ''[[Mario Kart 7]]'', and ''[[Mario Kart DS]]''), ''[[Pokémon (video game series)|Pokémon]]'' series, ''[[Chip's Challenge]]'', ''[[Castlevania]]'', ''[[Final Fantasy (video game)|Final Fantasy]]'', ''[[The Legend of Zelda (video game)|The Legend of Zelda]]'', ''[[Mega Man (franchise)|Mega Man]]'' series, ''[[Fire Emblem]]'' series, ''[[EarthBound]]'', ''[[Super Metroid]]'', and many others.
 
A notable hacked arcade game was ''[[Street Fighter II: Rainbow Edition]]'', which featured increased game speed and new special moves. The success of this game prompted Capcom to release ''[[Street Fighter II: Hyper Fighting]]'' as an official response.