hacking_faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
hacking_faq [2018/03/18 21:06]
madsiur [FAQ]
hacking_faq [2019/02/12 11:18] (current)
Line 3: Line 3:
 ===== Summary ===== ===== Summary =====
  
-This is a WIP FAQ and a WIP list of resources regrouped by themes. It contains wiki pages, documents, forum threads and external links. Nothing that is posted here is new, this page has as purpose to help newcomers to find information depending of what they are hacking. This list does also not contain everything (obviously). However, it should be enough to get someone started and progress in the right direction.+This is a FAQ and a list of resources regrouped by themes. It contains links to wiki pages, documents, forum threads and external links. Nothing that is posted here is new, this page has as purpose to help newcomers to find information depending of what they are hacking. This list does also not contain everything (obviously). However, it should be enough to get someone started and progress in the right direction.
  
-You are invited to improve the Q&A, topics, documents, links and forum threads suggestions. If you ever see a broken link here, fix it or please notify someone. This page for now has a [[https://www.ff6hacking.com/forums/showthread.php?tid=3428|Forum mirror]].+You are invited to improve the Q&A, topics, documents, links and forum threads suggestions. If you ever see a broken link here, fix it or please notify someone.
  
 ---- ----
Line 11: Line 11:
  
 Here are the most asked questions and common interrogations of anyone starting hacking FF6. Here are the most asked questions and common interrogations of anyone starting hacking FF6.
 +
  
 +----
 +
 +=== How can I apply a patch ? ===
 +
 +To apply a patch, you need a patcher with the good format. There are many patch format but most commons one are IPS and XDelta. Most patches are IPS format but that does not mean it is the best format, only one that has been used for a long time. One good format is BPS, an XDelta variant. It offer advantages over IPS and XDelta such as smaller patche size, checksum storing and infinitely sized files. To create or apply a patch, you can use {{rh:util:patch:beat-v01.zip|beat}} (BPS), {{rh:util:patch:floating.zip|Floating IPS}} (BPS / IPS) or {{rh:util:patch:lunar_ips_1.02.zip|Lunar IPS}}. You can also use the online patcher hosted here at [[https://www.ff6hacking.com/patcher/|ff6hacking.com/patcher/]], courtesy of Marc Roblero. Finaly there are other patching utilities on this [[rh:utilities|wiki page]].
 +
 +Another thing to know about patches is that in the SNES ROM hacking world, there are patches for ROMs with a header and patches for ROMs with no header, see below questions.
 ---- ----
  
Line 23: Line 31:
  
 A: If the game is violently crashing when you load the game or at another point, reach the first battle, etc., you are almost certainly applying the patch to the wrong ROM. There are two different versions of the game (1.0 and 1.1) that have minor differences. In addition, for each version of the game there are both headered and unheadered ROMs. You have to apply the patch to the same type of ROM that the creator used to make the patch. Usually the ROM you should use is specified in the readme or wherever you downloaded the patch from. Don't ignore this info!  A: If the game is violently crashing when you load the game or at another point, reach the first battle, etc., you are almost certainly applying the patch to the wrong ROM. There are two different versions of the game (1.0 and 1.1) that have minor differences. In addition, for each version of the game there are both headered and unheadered ROMs. You have to apply the patch to the same type of ROM that the creator used to make the patch. Usually the ROM you should use is specified in the readme or wherever you downloaded the patch from. Don't ignore this info! 
 +
 +----
 +
 +=== What is an offset, ROM address and SNES address ? ===
 +
 +Both terms are equivalent. One can refer to a ROM address by the term offset, it is the address you see in the hex editor. However a SNES address is different. The two more common ways the ROM cartridge are mapped to memory are called LoROM and HiROM. In the case of a FF6 cartridge we have a **HiROM + FastROM** ROM type. In a HiROM mapping occupies banks $40-$7D and $C0-$FF and HiROM games commonly access the ROM at banks $C0-$FF exclusively. In the case of FF6, since the ROM size is 24Mbit, the possible addresses are in the range of  $C00000-$EFFFFF. This mean address or offset $000000 in a hex editor is SNES address $C00000, $100000 is $D00000, etc. If you expand the ROM too 32Mbit, you add addresses $F00000-$FFFFFF. It is possible to expand beyond this point but then the address following $FFFFFF will be $400000, matching what is in the hex editor (see below question). If you want to know more details about SNES memory mapping, there are documents available on this [[ff3:ff3us:doc:snes|wiki page]]
  
 ---- ----
Line 28: Line 42:
 === How can I expand my ROM and what does expansion affect ? === === How can I expand my ROM and what does expansion affect ? ===
  
-{{ff3:ff3us:util:misc:snestuff1.21.zip|SNEStuff}} or {{ff3:ff3us:util:misc:le114.zip|Lunar Expand}} can do ROM expansion. Expansion basically only add more space for code, data or graphics. The ROM area beyond a 32Mbit expansion is called [[https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map#ExLoROM.2C_ExHiROM|ExHiROM]] which has some specificity. //Some// versions of //some// emulators may not play well with a ROM expanded beyond 32Mbit and some utilities (like assemblers) might not work as expected in ExHiROM. This is almost a case by case thing but there are always a way to work in ExHiROM and utilities that exist to do so.+{{ff3:ff3us:util:misc:snestuff1.21.zip|SNEStuff}} or {{ff3:ff3us:util:misc:le114.zip|Lunar Expand}} can do ROM expansion. Expansion basically only add more space for code, data or graphics. The most common expansion is from 24Mbit to 32Mbit. This add 16 new banks which is enough for most projects. FF3usME can do 28Mbit and 32Mbit expansions. The ROM mapping for an expansion bigger than 32Mbit is called [[https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map#ExLoROM.2C_ExHiROM|ExHiROM]] which has some specificity. Some utilities (like assemblers) might not work as expected with some assembly instructions whn using ExHiROM offsets. This is almost a case by case thing but there are always a way to work in ExHiROM and utilities that exist to do so.
  
 ---- ----
Line 52: Line 66:
 === Which utility can edit data X ? === === Which utility can edit data X ? ===
  
-A: Check out the [[ff3:ff3us:util:start|utility page]]. For general SNES graphics, [[rh:utilities:yychr|YY-CHR]] is a popular editor. For hex editing, {{rh:util:hex:hxd_1.7.7.0.zip|HxD}} is a good all purpose editor and {{rh:util:hex:windhex.zip|Windhex}} has table support (to edit text). As for recommended editor for a regular hack (with no data expansion), we recommend [[ff3:ff3us:util:ff3usme|FF3usME]] for any general data, character sprite, animation data menu backgrounds and BRR samples. [[ff3:ff3us:util:ff3se|FF3SE]] is good for portraits, monster sprites and esper sprites. +A: Check out the [[utility|utility page]]. For general SNES graphics, [[rh:utilities:yychr|YY-CHR]] is a popular editor. For hex editing, {{rh:util:hex:hxd_1.7.7.0.zip|HxD}} is a good all purpose editor and {{rh:util:hex:windhex.zip|Windhex}} has table support (to edit text). As for recommended editor for a regular hack (with no data expansion), we recommend [[ff3:ff3us:util:ff3usme|FF3usME]] for any general data, character sprite, animation data menu backgrounds and BRR samples. [[ff3:ff3us:util:ff3se|FF3SE]] is good for portraits, monster sprites and esper sprites. 
  
 Anything map related should be done with {{ff3:ff3us:util:maps:ff6le_rogue_2013-05-25.7z|FF6LE Rogue}} (which require an expanded ROM). Avoid Zone Doctor as it has higher chances of ROM corruption. For chests, {{ff3:ff3us:util:maps:ff6le_rogue_2013-05-25.7z|FF6LE Rogue}} or {{ff3:ff3us:util:data:ff6mde_1.72.zip|FF6MDE}} are good (which can also do animation data). For compressed graphics, {{ff3:ff3us:util:gfx:psv.7z|Peer Sprite Viewer}} in junction with [[rh:utilities:yychr|YY-CHR]] is the way to go (see compressed data list [[ff3:ff3us:doc:asm:other:compression|here]]). For music, there is a specific process that make things faster, refer to the music section down below. For specific palettes {{ff3:ff3us:util:gfx:snspal03.zip|SNESpal}} is a good tool.  Anything map related should be done with {{ff3:ff3us:util:maps:ff6le_rogue_2013-05-25.7z|FF6LE Rogue}} (which require an expanded ROM). Avoid Zone Doctor as it has higher chances of ROM corruption. For chests, {{ff3:ff3us:util:maps:ff6le_rogue_2013-05-25.7z|FF6LE Rogue}} or {{ff3:ff3us:util:data:ff6mde_1.72.zip|FF6MDE}} are good (which can also do animation data). For compressed graphics, {{ff3:ff3us:util:gfx:psv.7z|Peer Sprite Viewer}} in junction with [[rh:utilities:yychr|YY-CHR]] is the way to go (see compressed data list [[ff3:ff3us:doc:asm:other:compression|here]]). For music, there is a specific process that make things faster, refer to the music section down below. For specific palettes {{ff3:ff3us:util:gfx:snspal03.zip|SNESpal}} is a good tool. 
Line 84: Line 98:
 ---- ----
  
-=== Should I make my hack on the SNES, GBA or PC version ? ===+=== Should I make my hack on the SNES, GBA or Steam version ? ===
  
-The most documented version and the one that has most utilities for is the SNES version so in a way it is the easiest version to hack. The GBA version come second: there are [[ff6a:utils|a few utilities]] and a somewhat [[ff6a:ff6a|decent ROM map]]. However, there are no public code disassemblies. There are a good numbers of GBA patches, notably by [[ff6a:patches|Novalia Spirit]] and [[http://l33t5k37ch3r.altervista.org/|LeetSketcher]]. The Steam (PC) version has a few cosmetic mods but the FF6 Steam [[http://steamcommunity.com/groups/ff-modding/discussions/10/|modding group]] is not the most active and I'm not even sure if anybody atm does reverse engineering on the .exe file or unknown game data formats. One notable thing to mention is that the Steam version has a Japanese GBA ROM in the game binary blob used for some game data.+The most documented version and the one that has most utilities for is the SNES version so in a way it is the easiest version to hack. The GBA version come second: there are [[ff6a:utils|a few utilities]] and a somewhat [[ff6a:ff6a|decent ROM map]]. However, there are no public code disassemblies. There are a good numbers of GBA patches, notably by [[ff6a:patches|Novalia Spirit]] and [[http://l33t5k37ch3r.altervista.org/|LeetSketcher]]. The Steam version has a few cosmetic mods but the FF6 Steam [[http://steamcommunity.com/groups/ff-modding/discussions/10/|modding group]] is not the most active I've seen and I'm not even sure if anybody currently does reverse engineering on the game executable file or unknown game file / data formats. One notable thing to mention is that the Steam version has a Japanese GBA ROM in the game binary blob used for some game data so it's possible to edit a lot with a hex editor. The Steam version also has a file structure unpacker, available {{ff6a:utils:data:ffvi_explore_v0.5.zip|here}}.
  
 ---- ----
  • hacking_faq.1521407162.txt.gz
  • Last modified: 5 years ago
  • (external edit)