Content deleted Content added
No edit summary |
Various changes Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
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, usually of a [[video game]] to 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 essentially make ''new'', unofficial games using the old game's engine.
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 are typically created as a fun way of playing the original games, as they typically redesign the game with new mechanics, graphics, 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
==Communities==
Line 14 ⟶ 15:
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 others get into grips with ROM hacking for the first time, such as the legendary "Rom Hacking Bible" for the 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 for learning 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
ROMhacking.net has since transitioned over into being a read-only news site for ROM hacking projects after nearly 20 years of hosting on August 1, 2024 due to various reasons beyond the site's control, with its former database and files being archived on the [[Internet 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 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>
Line 33 ⟶ 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]] 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
<!-- 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
===Level editing===
Line 54 ⟶ 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
===Music hacking===
Line 61 ⟶ 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]]''.
On the Sega Mega Drive (Genesis), several games made for the system<ref>{{cite web|url=https://vgmpf.com/Wiki/index.php?title=Mega_Drive/Genesis_Sound_Driver_List|title=Mega Drive/Genesis Sound Driver List|website=Video Game Music Preservation Foundation}}</ref> had its music and sound effects created under a single sound engine commonly known as "SMPS" (also known as "Sound-Source" by some developers), which has been offered in both [[Motorola 68000|68000]] and [[Zilog Z80|Z80]]-based versions.<ref name="smps">{{cite web|url=http://segaretro.org/SMPS|title=SMPS|website=Sega Retro}}</ref>
===ROM expansion===
Line 72 ⟶ 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. {{Citation needed span|date=September 2024|reason=A claim of legality without source|In this context, the patches
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>
|