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 [2017/09/02 17:50]
madsiur [FAQ]
hacking_faq [2019/02/12 11:18] (current)
Line 1: Line 1:
-====== Hacking FAQ ======+======= Hacking FAQ =======
  
-==== 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.
  
 ---- ----
-==== FAQ ====+===== FAQ =====
  
 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 34: Line 48:
 === What is Hex? I don't understand it, please help! === === What is Hex? I don't understand it, please help! ===
  
-Hex stands for hexadecimal, which is a base 16 numeral system while our decimal system is on base 10. In one simple sentence, letters A to F cover the missing digit needed to go to 15. You can google "hexadecimal system" and will get nice results like [[https://simple.wikipedia.org/wiki/Hexadecimal_numeral_system|this one]]. There are also [[https://www.youtube.com/watch?v=POaAAtxIELg|videos]] explaining the Hexadecimal system. A step further would be to understand Binary (base 2).+Hex stands for hexadecimal, which is a base 16 numeral system while our decimal system is on base 10. If we break down this more, Hexadecimal is based on Binary System which is used partially when looking at a byte bits. In one simple sentence, in the Hexadecimal system, letters A to F cover the missing digit needed to go to 15. You can search online for Binary, Decimal and Hexadecimal systems and find documents like {{rh:counting.pdf|this one}}. There is also [[https://www.ff6hacking.com/forums/thread-2312.html|a forum thread]] with more resources.
  
 ---- ----
Line 46: Line 60:
 === How can I learn assembly and where do I start ? === === How can I learn assembly and where do I start ? ===
  
-There is no particular way to process. However, ALL the information you need is in the ASM / SNES resources links below. You'll need to get a bit familiar with the FF6 disassemblies, which are readable code text files. At the same time, the [[ff3:ff3us:doc:asm|RAM map]] will be of a great help since coding involve most of the time reading from / writing to memory, which each game has mapped its own way. One approach to learn ASM is understanding a small block of FF6 code and try to modify it to get a different result, and code bigger blocks as you improve. An hex editor can do simple edits but for any edit of significant size, you might want to try an assembler like {{ff3:ff3us:util:asm:bass_v14.tar.gz|bass}} or {{ff3:ff3us:util:asm:xkas_v06.zip|xkas}}. There are more assemblers but these two are popular ones.+There is no particular way to process. However, ALL the information you need is in the ASM / SNES resources links below. You'll need to get a bit familiar with the FF6 disassemblies, which are readable code text files. At the same time, the [[ff3:ff3us:doc:asm|RAM map]] will be of a great help since coding involve most of the time reading from / writing to memory, which each game has mapped its own way. One approach to learn ASM is understanding a small block of FF6 code and try to modify it to get a different result, and code bigger blocks as you improve. An hex editor can do simple edits but for any edit of significant size, you might want to try an assembler like {{ff3:ff3us:util:asm:bass_v14.tar.gz|bass}}{{ff3:ff3us:util:asm:xkas_v06.zip|xkas}} or {{ff3:ff3us:util:asm:asar_1.36.zip|asar}}. There are more assemblers but these two are popular ones.
  
 ---- ----
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, {{ff3:ff3us:util:gfx:yy-chr20120407_en.zip|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 {{ff3:ff3us:util:gfx:yy-chr20120407_en.zip|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. 
  
-You should **avoid** the all purpose editor FF3Edit avaible elsewhere on the internet as it has high chances of ROM corruption. This is why we only have the source code available as a reference and no binary executable. If you are on Mac, [[ff3:ff3us:util:ff6tools|FF6Tools]] is the only FF6 specific editor you can use. For assembly, we recommend for debugging {{ff3:ff3us:util:asm:bsnes-plus-0.73-3a.7z|bsnes+}} or {{ff3:ff3us:util:asm:snes9x1.51.ep10r2.7z|SNES9x Debugger}}. For assembling code, {{ff3:ff3us:util:asm:bass_v14.tar.gz|bass}} and {{ff3:ff3us:util:asm:xkas_v06.zip|xkas}} are good. +You should **avoid** the all purpose editor FF3Edit avaible elsewhere on the internet as it has high chances of ROM corruption. This is why we only have the source code available as a reference and no binary executable. If you are on Mac, [[ff3:ff3us:util:ff6tools|FF6Tools]] is the only FF6 specific editor you can use. For assembly, we recommend for debugging {{ff3:ff3us:util:asm:bsnes-plus-0.73-3a.7z|bsnes+}} or {{ff3:ff3us:util:asm:snes9x1.51.ep10r2.7z|SNES9x Debugger}}. For assembling code, {{ff3:ff3us:util:asm:bass_v14.tar.gz|bass}}{{ff3:ff3us:util:asm:xkas_v06.zip|xkas}} or {{ff3:ff3us:util:asm:asar_1.36.zip|asar}} are good. 
  
 ---- ----
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}}.
  
 ---- ----
Line 96: Line 110:
 ---- ----
  
-==== Resources ====+===== Resources =====
  
 Here is a list of resources categorized by type of hacking task. Here is a list of resources categorized by type of hacking task.
Line 102: Line 116:
 ---- ----
  
-=== Assembly ===+==== Assembly ====
  
 This is the base of changes involving the battle system, menu changes or special things like custom event commands. All expansions also require ASM changes. This is the base of changes involving the battle system, menu changes or special things like custom event commands. All expansions also require ASM changes.
Line 114: Line 128:
 ---- ----
  
-=== Events ===+==== Events ====
  
 Events govern how the game progress and all govern all the cut-scenes. There are roughly 256 event commands with parameters. Those commands are aggregated in the event data detailed in the event dump document. Another part of the event system are event bits. They play some sort of milestone, like "event X happened" so other portions of the game can be accessed or triggered. The masking of map NPCs use the same system. Events govern how the game progress and all govern all the cut-scenes. There are roughly 256 event commands with parameters. Those commands are aggregated in the event data detailed in the event dump document. Another part of the event system are event bits. They play some sort of milestone, like "event X happened" so other portions of the game can be accessed or triggered. The masking of map NPCs use the same system.
  
   * {{ff3:ff3us:doc:game:event-script.zip|Event Dump}} (Imzogelmo / Novalia Spirit)\\   * {{ff3:ff3us:doc:game:event-script.zip|Event Dump}} (Imzogelmo / Novalia Spirit)\\
-  * {{ff3:ff3us:doc:game:command_list.zip|Event command list}} (Lockirby2)\\ +  * {{ff3:ff3us:doc:game:command_list.zip|Event Command List}} (Lockirby2)\\ 
-  * {{ff3:ff3us:doc:game:event-commands.zip|Event Dump}} (Imzogelmo)\\ +  * {{ff3:ff3us:doc:game:event-commands.zip|Event Command List}} (Imzogelmo)\\
-  * [[ff3:ff3us:doc:asm:codes:event_codes|Event Commands]] (Yousei)\\+
   * {{ff3:ff3us:doc:game:ff6_snes_event_bits.zip|Event Bits Document}} (Novalia Spirit)\\   * {{ff3:ff3us:doc:game:ff6_snes_event_bits.zip|Event Bits Document}} (Novalia Spirit)\\
 +  * [[ff3:ff3us:doc:asm:codes:event_codes|Event Commands]] (Yousei)\\
   * [[ff3:ff3us:doc:asm:codes:movement_codes|Movement Codes]] (Yousei)\\   * [[ff3:ff3us:doc:asm:codes:movement_codes|Movement Codes]] (Yousei)\\
   * [[ff3:ff3us:doc:asm:codes:overworld_character_script|Overworld Character Commands]] (Yousei)\\   * [[ff3:ff3us:doc:asm:codes:overworld_character_script|Overworld Character Commands]] (Yousei)\\
   * [[ff3:ff3us:doc:asm:codes:overworld_vehicle_script|Overworld Vehicles Commands]] (Yousei)\\   * [[ff3:ff3us:doc:asm:codes:overworld_vehicle_script|Overworld Vehicles Commands]] (Yousei)\\
-  * {{ff3:ff3us:doc:game:ff6_event_editing_tutorial.zip|Event Tutorial}} (xJCSx) (a bit outdated)\\+  * [[ff3:ff3us:tutorial:events|Event Hacking Tutorials]] (Lockirby2)
   * [[https://www.ff6hacking.com/forums/showthread.php?tid=523|All Things Event Hacking Thread]]\\   * [[https://www.ff6hacking.com/forums/showthread.php?tid=523|All Things Event Hacking Thread]]\\
   * [[https://youtu.be/XUsn2Y6yYp0|Basic Video Event Tutorial]] (madsiur)   * [[https://youtu.be/XUsn2Y6yYp0|Basic Video Event Tutorial]] (madsiur)
 +  * [[https://youtu.be/ULJUZUF7BVI|How to Make Space for Events]] (madsiur)
  
 ---- ----
  
-=== Battle Events ===+==== Battle Events ====
  
 Battle Events are completely separated from the regular events. They have their own animation system (shared with Attacks Animations). The animations and character movements are animation scripts called in the battle event scripts. Battle Events are completely separated from the regular events. They have their own animation system (shared with Attacks Animations). The animations and character movements are animation scripts called in the battle event scripts.
Line 144: Line 159:
 ---- ----
  
-=== AI Scripting ===+==== AI Scripting ====
  
-AI scripting is done with FF3usME. It consist mainly of commands, sub-commands and conditional "if" statements. The vanilla monster scripts are the best source on "how to do thing X" in a script.+AI scripting is done with [[ff3:ff3us:util:ff3usme|FF3usME]]. It consist mainly of commands, sub-commands and conditional "if" statements. The vanilla monster scripts are the best source on "how to do thing X" in a script.
  
-  * [[http://www.rpglegion.com/ff6/hack/command.htm|Monster Commands Script Guide]] (Terii Senshi)\\ 
   * {{ff3:ff3us:doc:game:btb-ff6-docs.zip|AI Scripting Document}} (BTB)\\   * {{ff3:ff3us:doc:game:btb-ff6-docs.zip|AI Scripting Document}} (BTB)\\
 +  * [[http://www.rpglegion.com/ff6/hack/command.htm|Monster Commands Script Guide]] (Terii Senshi)\\
   * [[http://masterzed.cavesofnarshe.com/ff3.html|Enemy Commands Script Documents]] (Master Zed)\\   * [[http://masterzed.cavesofnarshe.com/ff3.html|Enemy Commands Script Documents]] (Master Zed)\\
  
 ---- ----
  
-=== Animations ===+==== Animations ====
  
 Animations can be edited with [[ff3:ff3us:util:ff3usme|FF3usME]] or FF6MDE. They regroup spell animation but also battle animations. Battle events and attack animations share the same animation system but Attack animations have a 8 or 14 bytes data that tells the palettes, sound effect and animation scripts.  Animations can be edited with [[ff3:ff3us:util:ff3usme|FF3usME]] or FF6MDE. They regroup spell animation but also battle animations. Battle events and attack animations share the same animation system but Attack animations have a 8 or 14 bytes data that tells the palettes, sound effect and animation scripts. 
Line 164: Line 179:
 ---- ----
  
-=== Spriting ===+==== Spriting ====
  
-Character sprites can be imported / exported with FF3SE or [[ff3:ff3us:util:ff3usme|FF3usME]] or FF3SpriteEd (now incorporated in FF3usME). [[ff3:ff3us:util:ff3usme|FF3usME]] has the spritesheet format that is the most used. There is a certain color order to respect in the sprite in order to make a good import.+Character sprites can be imported / exported with [[ff3:ff3us:util:ff3se|FF3SE]] or [[ff3:ff3us:util:ff3usme|FF3usME]] or [[ff3:ff3us:util:ff3spriteed|FF3SpriteEd]] (now incorporated in FF3usME). [[ff3:ff3us:util:ff3usme|FF3usME]] has the spritesheet format that is the most used. There is a certain color order to respect in the sprite in order to make a good import.
  
-  * [[ff3:ff3us:tutorial:sprites|Editing Character Sprites and Portraits]] (madsiur)\\ 
   * {{ff3:ff3us:doc:game:palette_locs.zip|Overworld palette assignation guide}} (Runelancer)\\   * {{ff3:ff3us:doc:game:palette_locs.zip|Overworld palette assignation guide}} (Runelancer)\\
-  * [[https://www.ff6hacking.com/forums/showthread.php?tid=667|Palette order tutorial]] (Sutebenukun)\\+  * [[ff3:ff3us:tutorial:sprites|Editing Character Sprites and Portraits]] (madsiur)\\ 
 +  * [[ff3:ff3us:tutorial:external|External Pixel Art Tutorial List]]\\
  
 ---- ----
  
-=== Music ===+==== Music ====
  
-The SNES use BRR samples to play music, meaning a single sample will play an array of notes. The samples can be replaced with FF3usME or even inserted manually. Songs are composed in data proper to FF6 that is then read and transmitted to the SPC-700. You can change manually a song data, but it can be a tedious operation since you need to keep the 8 channels of the song coordinated at any time. There is also a technique involving a RS3 editor to convert a MML file to FF6 compatible song data.+Songs are composed in data proper to FF6 that is then read and transmitted to the SPC-700. You can change manually a song data, but it can be a tedious operation since you need to keep the 8 channels of the song coordinated at any time. There is also a technique involving a RS3 editor to convert a MML file to FF6 compatible song data.
  
-  * [[ff3:ff3us:doc:asm:codes:music_codes|Music Commands]]\\ 
   * {{ff3:ff3us:doc:game:ff6_music_chart.zip|Music Commands}} (MetroidQuest)\\   * {{ff3:ff3us:doc:game:ff6_music_chart.zip|Music Commands}} (MetroidQuest)\\
-  * [[ff3:ff3us:doc:asm:list:instruments|Instrument List]]\\ +  * {{ff3:ff3us:doc:game:song-scripts.zip|Song Scripts}} (Everything)\\ 
-  * [[ff3:ff3us:doc:asm:fmt:instrument_sets|Instrument set Format]]\\+  * [[ff3:ff3us:doc:asm:list:music|Song List]]\\ 
 +  * [[ff3:ff3us:doc:asm:codes:music_codes|Music Commands]]\\ 
 +  * [[ff3:ff3us:music:mmlcommands|MML Commands]]\\ 
 +  * [[ff3:ff3us:tutorial:music:songdata|Insert a Song Hack in the Game]](madsiur)\\ 
 +  * [[https://www.ff6hacking.com/forums/showthread.php?tid=2558|Available Song Hacks]]\\
   * [[https://www.ff6hacking.com/forums/showthread.php?tid=493|FFVI Music Hacking]] (Gi Nattak)\\   * [[https://www.ff6hacking.com/forums/showthread.php?tid=493|FFVI Music Hacking]] (Gi Nattak)\\
-  * [[https://www.ff6hacking.com/forums/showthread.php?tid=2710|How to add more instruments]] (Gi Nattak)\\ 
   * [[https://www.ff6hacking.com/forums/showthread.php?tid=1958|How to add more songs]] (Gi Nattak)\\   * [[https://www.ff6hacking.com/forums/showthread.php?tid=1958|How to add more songs]] (Gi Nattak)\\
   * [[https://www.ff6hacking.com/forums/showthread.php?tid=1941|Injecting Music with RS3exTool2]] (Gi Nattak)\\   * [[https://www.ff6hacking.com/forums/showthread.php?tid=1941|Injecting Music with RS3exTool2]] (Gi Nattak)\\
 +  * [[https://youtu.be/TCspUozcHLs|Making FF7 Boss Theme for FF6! (part 1)]] (Jackimus)\\
 +  * [[https://youtu.be/UoOTuIysO2k|Making FF7 Boss Theme for FF6! (part 2)]] (Jackimus)\\
 +
 +----
 +
 +==== Sound ====
 +
 +The SNES use BRR samples as music instruments, meaning a single sample will play an array of notes with different pitch and duration. The samples can be replaced with [[ff3:ff3us:util:ff3usme|FF3usME]] or inserted manually. Each sample have a specific ADSR, Pitch and Loop data aside of the BRR data. As for SFX they are generated from simpler BRR samples and each SFX has a two scripts, similar to the concept of a song music data.
 +
 +  * {{ff3:ff3us:doc:game:sound-effect-scripts.zip|Sound Effect Scripts}} (Everything)\\
 +  * [[ff3:ff3us:doc:asm:list:sfx|Sound Effect List]]\\
 +  * [[ff3:ff3us:doc:asm:list:instruments|BRR Sample List (instruments)]]\\
 +  * [[ff3:ff3us:doc:asm:fmt:instrument_sets|Instrument set Format]]\\
 +  * [[ff3:ff3us:music:brrsamples|Squaresoft BRR Database]]\\
 +  * [[https://www.ff6hacking.com/forums/showthread.php?tid=2710|How to add more instruments]] (Gi Nattak)\\
  
 ---- ----
  
-=== Misc ===+==== Misc ====
  
-  * [[https://www.ff6hacking.com/forums/showthread.php?tid=3204|How to edit compressed graphics]] (madsiur)\\+  * [[ff3:ff3us:tutorial:compressed|How to edit compressed graphics]] (madsiur)\\
   * [[https://www.ff6hacking.com/forums/showthread.php?tid=3200|How to edit tileset graphics]] (madsiur)\\   * [[https://www.ff6hacking.com/forums/showthread.php?tid=3200|How to edit tileset graphics]] (madsiur)\\
  • hacking_faq.1504374626.txt.gz
  • Last modified: 5 years ago
  • (external edit)