ROM hacking: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Add: date, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Jay8g | #UCB_toolbar
Line 33:
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 incomplete ''Pokémon Torzach'', a hack of [[Pokémon FireRed]] which attempts to add a whole new generation of Pokémon and tiles to the game,<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'', an enhanced version of the [[Super Mario Land 2: 6 Golden Coins|original game]] which added, among others, full-color support (the original game only supported greyscale) andas well as 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]] -->
 
Line 50:
===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 limits of the hardware and the software of the gaming platform,. This can rangingrange 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===
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, however, such as the most recent ''[[Super Mario World]]'' hacks 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 NES ''[[Mega Man]]'' games, ''[[Final Fantasy VI]]'', and the Mega Drive (Genesis) ''[[Sonic the Hedgehog]]'' games.
 
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 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.<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 used the SMPS engine (most notably the ''Sonic the Hedgehog'' games in particular); many of them 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>