ROM hacking: Difference between revisions

Content deleted Content added
Various changes, as well as changing "Sega Mega Drive/Genesis" (and its equivalents) to "Sega Mega Drive (Genesis)"
Line 1:
{{short description|Editing technique for video games}}
 
'''ROM hacking''' (short for '''Read-only memory hacking''') is the process of 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, 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 eithertypically re-designredesign 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>
Line 10:
<!-- 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. 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, onesuch of which wasas 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>
 
One of the most popular sites devoted to the ROM hacking of games was {{Anchor|Romhacking.net}}ROMhacking.net, which first went online in late 2005. ItAs a hub related to all things ROM hacking, it hosted 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]]. ItThe wasimmediate precededpredecessor byto itsROMhacking.net immediate predecessor,was ROMhacking.com, a similar ROM hacking-oriented site that launched in 2000 and 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> On August 1, 2024, the site's staff announced that ROMhacking.net will transition over into being a read-only news site for ROM hacking projects after nearly 20 years of hosting 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 untilfor as long as the site maintainers furthercan noticehandle.<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>
 
==Methods==
Line 38:
===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 included [[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 57:
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 for the [[Sega Genesis|Sega Mega Drive/ (Genesis)]]<ref>{{cite web|url=http://gdri.smspower.org/wiki/index.php/Mega_Drive/Genesis_Sound_Engine_List|title=Mega Drive/ (Genesis) Sound Driver List|website=GDRI (Game Developer Research Institute)}}</ref> used a sound engine commonly known as "SMPS", which has been offered in both [[Motorola 68000|68k]] and [[Zilog Z80|Z80]]-based versions.<ref>{{cite web|url=http://segaretro.org/SMPS|title=SMPS|website=Sega Retro|date=30 March 2024 }}</ref> This sound engineIt was predominantly used in a wide variety of Japanese-developed games for the system (including Sega's 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.<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}}</ref> Today, many tools are available<ref>{{cite web|url=http://info.sonicretro.org/Sonic_Hacking_Utilities#Sound_Editors|title=Sonic Hacking Utilities|website=Sonic Retro}}</ref> to alter the music of games that useduse the SMPS engine (most notably the ''Sonic the Hedgehog'' games in particular); many of themthese compositions and arrangements made under the SMPS engine had eventually made their way into the [[Steam Workshop]].<ref>{{cite web|url=http://steamcommunity.com/workshop/about/?appid=34270|title=Steam Workshop :: SEGA Mega Drive & Genesis Classics|website=steamcommunity.com}}</ref>
 
===ROM expansion===
 
Generally speaking, a ROM hacker cannot normally '''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, 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 the [[Multi-Memory Controller|mapper]] used 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 (see [[#Assembly hacking|Assembly hacking]] above) so the game knows where to look. Another type of ''ROM expansion'' that is fairly easy is [[Game Boy Advance]] ROMs. The ROMs themselves are generally small, but the memory space available sometimes exceeds it by multiples of up to 17.
 
==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 an [[unofficial patch]] (in IPS format or others) that can be applied to the unmodified ROM.<ref name="dictionary"/> This, and usually some form of documentation, is put in an archive file and uploaded somewhere. IPS is a format for [[File comparison|recording the differences]] between two binary files (in this case, between the unmodified and hacked ROMs) and is suitable for rom hacks.<ref>{{cite web |title=Pokemon Rom Hacks |url=https://www.inversegamer.com/best-pokemon-rom-hacks |website=InverseGamer.com |date=20 September 2020 |access-date=31 March 2021}}</ref> 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 "[[PlayStation]] Patch Format"). PPF is still used today, particularly to patch large files such as ISO [[CD-ROM]] images as well as [[Nintendo 64]] games. A new patch format, UPS, has also been developed by the ROM hacking community, designed to be the successor to IPS and PPF.<ref>{{cite web|url=http://www.romhacking.net/forum/index.php/topic,6059.0.html|title=New patching format, UPS, debuts today|website=www.romhacking.net|date=27 September 2023 }}</ref>
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> TheCompared 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 this casecontext, 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|date=September 2024|reason=A claim of legality without source}} A patch is also normally drastically smaller than the 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>
 
==Usage==
Line 76:
 
==Systems and games==
The majority of ROM hacking is done on [[Nintendo Entertainment System|NES]] and [[Super Nintendo Entertainment System|SNES]] games (including [[Sega Genesis|Sega Mega Drive/ (Genesis)]] games to an extent), since such games are small and simple compared to games of more advanced consoles such as the [[Nintendo 64]] or [[Nintendo DS]]. Games for the [[Game Boy]], [[Game Boy Color]] and [[Game Boy Advance]] are also popular for hacking, as well as games for the [[PlayStation (console)|PlayStation]] to 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.
 
<!-- 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 (most notablyincluding ''[[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.