hacking_faq

Differences

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

Link to this comparison view

Next revision
Previous revision
hacking_faq [2017/04/08 22:59]
madsiur created
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 inprove the Q&A, topics, documents, links and forum threads suggestions. If you ever see a broken link here, fix it or please notify someone.+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.
  
-==== {{wiki:hfaq:faq.png}} ====+---- 
 +===== FAQ =====
  
-**Q: What is a header and how can I add or remove it ?**+Here are the most asked questions and common interrogations of anyone starting hacking FF6.
  
-A: A header is 0x200 bytes of padding at the beginning of the ROM. There's not really a functional difference between a headered and an unheadered ROM, but you have to take into account the extra bytes when you are hacking. We suggest you use none and apply one only when you are applying a patch requiring one or use an editor requiring one. It will simplify your life. You can add / remove headers with an utility like [[http://www.romhacking.net/utilities/841/]SNEStuff]]. 
  
 +----
  
-**Q: After applying a patch, my game crash! What have I done wrong ?**+=== 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. 
 +---- 
 + 
 +=== What is a header and how can I add or remove it ? === 
 + 
 +A header is 0x200 bytes of padding at the beginning of the ROM. There's not really a functional difference between a headered and an unheadered ROM, but you have to take into account the extra bytes when you are hacking. We suggest you use none and apply one only when you are applying a patch requiring one or use an editor requiring one. It will simplify your life. You can add / remove headers with an utility like {{ff3:ff3us:util:misc:snestuff1.21.zip|SNEStuff}}. 
 + 
 +---- 
 + 
 +=== After applying a patch, my game crash! What have I done wrong ? ===
  
 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! 
  
 +----
  
-**Q: How can I expand my ROM and will expansion affect anything else ?**+=== What is an offset, ROM address and SNES address ===
  
-A: [[http://www.romhacking.net/utilities/841/|SNEStuff]] or [[ff3:ff3us:util:misc:le114.zip|Lunar Expand]] can do ROM expansion. Expansion basically only add more space for codedata or graphicsThe ROM area beyond 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 case by case thing but there are always a way to work in ExHiROM and utilities that exist to do so.+Both terms are equivalentOne can refer to a ROM address by the term offsetit is the address you see in the hex editorHowever SNES address is different. The two more common ways the ROM cartridge are mapped to memory are called LoROM and HiROMIn 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 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]]
  
 +----
  
-**Q: What is Hex? don't understand it, please help! **+=== How can expand my ROM and what does expansion affect ? ===
  
-Hex stands for hexadecimalwhich 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 15You 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 systemA step further would be to understand Binary (base 2).+{{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 codedata or graphics. The most common expansion is from 24Mbit to 32Mbit. This add 16 new banks which is enough for most projectsFF3usME 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 specificitySome utilities (like assemblersmight 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.
  
 +----
  
-**Q: Where is located the code performing task X ?**+=== What is HexI don't understand it, please help! ===
  
-A: All the game code has been disassembled and partially documented into text files called bank disassemblies. The disassemblies links are on the [[ff3:ff3us:doc:game|document page]]Bank $C0 regroup mainly the regular map code and bank $C1 regroup the code of the visual and graphics of the battle screen. Bank $C2 is divided into two partsfirst is the battle engine while second half is a continuation of bank $C1Bank $C3 regroup the menu code while bank $EE has to do with overworld maps and movementsFinallybank $C5 is the bridge between the game and the SPC-700 (sound). There is also a compressed code block related to the intro that is stored in RAM (bank $7E) and code related to HDMA stored in bank $D4.+Hex stands for hexadecimal, which is a base 16 numeral system while our decimal system is on base 10If we break down this moreHexadecimal is based on Binary System which is used partially when looking at byte bitsIn one simple sentence, in the Hexadecimal system, letters A to F cover the missing digit needed to go to 15You can search online for BinaryDecimal and Hexadecimal systems and find documents like {{rh:counting.pdf|this one}}. There is also [[https://www.ff6hacking.com/forums/thread-2312.html|forum thread]] with more resources.
  
 +----
  
-**Q: How can I learn assembly and where do I start ?**+=== Where is located the code performing task X ===
  
-A: 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 memorywhich each game has mapped its own wayOne approach to learn ASM is understanding 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 [[http://www.romhacking.net/utilities/794/|bass]] or [[ff3:ff3us:util:start|xkas]]. There are more assemblers but these two are popular ones.+All the game code has been disassembled and partially documented into text files called bank disassembliesThe disassemblies links are on the [[ff3:ff3us:doc:game|document page]]. Bank $C0 regroup mainly the regular map code and bank $C1 regroup the code of the visual and graphics of the battle screen. Bank $C2 is divided into two parts, first is the battle engine while second half is continuation of bank $C1. Bank $C3 regroup the menu code while bank $EE has to do with overworld maps and movements. Finallybank $C5 is the bridge between the game and the SPC-700 (sound)There is also compressed code block related to the intro that is stored in RAM (bank $7E) and code related to HDMA stored in bank $D4.
  
 +----
  
-**Q: Which utility can edit data X ?**+=== How can I learn assembly and where do I start ===
  
-A: Check out the [[ff3:ff3us:util:start]utility page]]For general SNES graphicsYY-CHR is a popular editorFor hex editing, HxD is a good all purpose editor and Windhex32 has table support (to edit text). All these can be found [[rh:utilities]here]]. As for recommended editor for regular hack (with no data expansion)we recommend FF3usME for any general data, character sprite, animation data menu backgrounds and BRR samples. FF3SE is good for portraits, monster sprites and esper sprites. Anything map related should be done with FF6LE Rogue (which require an expanded ROM). Avoid Zone Doctor as it has higher chances of ROM corruption. For chests, FF6LE Rogue or FF6MDE are good (which can also do animation data)For compressed graphicsPeer Sprite Viewer in junction with YY-CHR is the way to go (see compressed data list [[ff3:ff3us:doc:asm:other:compression]here]]). For music, there is specific process that make things fasterrefer to the music section down below. For specific palettes 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 reference and no binary executableIf you are on Mac, FF6Tools is the only FF6 specific editor you can use. For assembly, we recommend for debugging bsnes+ or SNES9x Debugger. For assembling code[[http://www.romhacking.net/utilities/794/]bass]] and [[ff3:ff3us:util:start]xkas]] are good+There is no particular way to processHoweverALL the information you need is in the ASM / SNES resources links belowYou'll need to get bit familiar with the FF6 disassemblies, which are readable code text filesAt the same time, the [[ff3:ff3us:doc:asm|RAM map]] will be of great help since coding involve most of the time reading from / writing to memorywhich each game has mapped its own way. One approach to learn ASM is understanding small block of FF6 code and try to modify it to get different result, and code bigger blocks as you improveAn hex editor can do simple edits but for any edit of significant sizeyou 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.
  
 +----
  
-**Q: Which data require Hex Editing ?**+=== Which utility can edit data ===
  
-Anything code related can be done with hex editor though working with an assembler is faster for medium / large editsEvents and Battle Events should be done with a hex editorZone Doctor has an event editor but it can corrupt your ROMAnimation data can be edited with FF3usME or FF6MDE but animation scripts must be hex editedThis is valid for battle event and attack animation scripts. Song instruments must be changed with a hex editorSome text need to be edited with a hex editor and depending which text it is you'll need specific table (available [[ff3:ff3us:doc:game]here]]). A good Hex editor with table support is Windhex. Any OAM data must be hex edited as well as any data table scattered in the code banks. Finallysome specific data require hex editing, if you don't find something in the editors mentioned in previous question, check the [[ff3:ff3us:doc:asm:rom_map|ROM Map]], the data you are looking for might not be supported with the existing editors. Anything in the ROM can be hex editedusing the proper editor will cut off on mistakes and fasten your hack progress!+A: Check out the [[utility|utility page]]. For general SNES graphics, [[rh:utilities:yychr|YY-CHR]] is 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 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 portraitsmonster 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. 
  
-**Q: Where is data X located in the ROM ?**+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.  
 + 
 +---- 
 + 
 +=== Which data require Hex Editing ? === 
 + 
 +Anything code related can be done with a hex editor though working with an assembler is faster for medium / large edits. Events and Battle Events should be done with a hex editor. Zone Doctor has an event editor but it can corrupt your ROM. Animation data can be edited with [[ff3:ff3us:util:ff3usme|FF3usME]] or {{ff3:ff3us:util:data:ff6mde_1.72.zip|FF6MDE}} but animation scripts must be hex edited. This is valid for battle event and attack animation scripts. Song instruments must be changed with a hex editor. Some text need to be edited with a hex editor and depending which text it is you'll need a specific table (available [[ff3:ff3us:doc:game|here]]). A good all purpose hex editor is {{rh:util:hex:hxd_1.7.7.0.zip|HxD}} while a good one with table support is {{rh:util:hex:windhex.zip|Windhex}}. Any OAM data must be hex edited as well as any data table scattered in the code banks. Finally, some specific data require hex editing, if you don't find something in the editors mentioned in previous question, check the [[ff3:ff3us:doc:asm:rom_map|ROM Map]], the data you are looking for might not be supported with the existing editors. Anything in the ROM can be hex edited, using the proper editor will cut off on mistakes and fasten your hack progress! 
 + 
 +---- 
 + 
 +=== Where is data X located in the ROM ? ===
  
 Check out the [[ff3:ff3us:doc:asm:rom_map|ROM Map]]. It is not 100% completed but most data known up to now are listed there. There are good chance what you want to edit can be edited with one or many editors (see previous questions). Check out the [[ff3:ff3us:doc:asm:rom_map|ROM Map]]. It is not 100% completed but most data known up to now are listed there. There are good chance what you want to edit can be edited with one or many editors (see previous questions).
  
 +----
  
-**Q: Is it possible / easy to expand data X ?**+=== Is it possible / easy to expand data X ? ===
  
-A: It depends. Some things like item or spell numbers would be hard to properly expand because they would require a rewrite of many ASM functions. Some other things like some graphics or text only require to move the data and change a few pointers in order to be expanded. Note that when you expand and move something, you usually break the editor that can edit the data, unless the editor is made to support the expansion. Some simple expansions are possible with FF3usME and there are other editors that can expand specific data. Existing expansion projects are listed [[ff3:ff3us:patches:expansions|here]], but what is possible is not limited to this list. It's also always good to plan expansions at the beginning of development.+It depends. Some things like item or spell numbers would be hard to properly expand because they would require a rewrite of many ASM functions. Some other things like some graphics or text only require to move the data and change a few pointers in order to be expanded. Note that when you expand and move something, you usually break the editor that can edit the data, unless the editor is made to support the expansion. Some simple expansions are possible with [[ff3:ff3us:util:ff3usme|FF3usME]] and there are other editors that can expand specific data. Existing expansion projects are listed [[ff3:ff3us:patches:expansions|here]], but what is possible is not limited to this list. It's also always good to plan expansions at the beginning of development.
  
 +----
  
-**Q: Where can I find patches and which ones do you recommend for my project ?**+=== Where can I find patches and which ones do you recommend for my project ? ===
  
-A: There are many place for patches but most of them can be found on our [[http://www.ff6hacking.com/forums/forumdisplay.php?fid=15|patch section]], on [[http://www.romhacking.net/?page=hacks&genre=&platform=&game=302&category=&perpage=20&title=&author=&hacksearch=Go|RHDN]], on [[http://slickproductions.org/ff6patches.php|Slick Productions]] and on some other webpages mentioned in our [[ff3:links|external links section]]. Now depending on the nature of your project, some patches will be more suitable than others. It's your task to read on them and ask questions if some point are unclear. Concerning FF3us bugs, [[http://www.ff6hacking.com/forums/showthread.php?tid=3253|C.V. Reynolds Compilation]] include most bugfixes in one patch and is updated regularly. We recommend it over Darkmage's project that had some problems in the most recent versions of his compilation. Finally for music we have a [[http://www.ff6hacking.com/forums/showthread.php?tid=2558|whole section]] dedicated to songs from other games. Those are not patches but binary data you need to copy in the ROM manually to replace any song you want.+There are many place for patches but most of them can be found on our [[https://www.ff6hacking.com/forums/forumdisplay.php?fid=15|patch section]], on [[http://www.romhacking.net|RHDN]], on [[http://slickproductions.org/ff6patches.php|Slick Productions]] and on some other webpages mentioned in our [[ff3:links|external links section]]. Now depending on the nature of your project, some patches will be more suitable than others. It's your task to read on them and ask questions if some point are unclear. Concerning FF3us bugs, [[http://www.ff6hacking.com/forums/showthread.php?tid=3253|C.V. Reynolds Compilation]] include most bugfixes in one patch and is updated regularly. We recommend it over Darkmage's project that had some problems in the most recent versions of his compilation. Finally for music we have a [[https://www.ff6hacking.com/forums/showthread.php?tid=2558|whole section]] dedicated to songs from other games. Those are not patches but binary data you need to copy in the ROM manually to replace any song you want.
  
 +----
  
-**Q: Should I make my hack on the SNES, GBA or PC version ?**+=== Should I make my hack on the SNES, GBA or Steam version ? ===
  
-A: 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}}.
  
 +----
  
-**Q: I can't find info X or my question was not fully answered! What can I do ?**+=== I can't find info X or my question was not fully answered! What can I do ? ===
  
-You can try rephrasing your question or try to explain in detail which difficulty you encounter. We are also not the sole resource online. While we try our best to answer every question, you might want to look elsewhere. [[http://slickproductions.org/forum/index.php|Slick Forums]] regroup good FF6 hackers ( and FF4 hackers too!), some that visit here. [[http://mnrogar.slickproductions.org/phpBB3/index.php|Mnrogar's Den]] has some nice info too but you can't register. You can also try [[http://www.romhacking.net/forum/|RHDN]] for general hacking or FF6 hacking questions. There is also our [[https://discordapp.com/invite/FFAHavK|Discord chat]] where you can get some help, most of the time you will have someone that can answer you.+You can try rephrasing your question or try to explain in detail which difficulty you encounter. There is also our [[https://discordapp.com/invite/FFAHavK|Discord chat]] where you can get some help, most of the time there will be someone there that can answer you. We are also not the sole resource online. While we try our best to answer every question, you might want to look elsewhere. [[http://slickproductions.org/forum/index.php|Slick Forums]] regroup good FF6 hackers (and FF4 hackers too!), some that visit here. [[http://mnrogar.slickproductions.org/phpBB3/index.php|Mnrogar's Den]] has some nice info too but you can't register and it act more as an archive forum, most members having moved to Slick Forums. You can also try [[http://www.romhacking.net/forum/|RHDN]] for general hacking or FF6 hacking questions. 
  
 +----
  
-{{wiki:hfaq:asm.png}}+===== Resources ===== 
 + 
 +Here is a list of resources categorized by type of hacking task. 
 + 
 +---- 
 + 
 +==== 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.
  
-[[ff3:ff3us:doc:snes|Assembly & SNES technical resources]]\\ +  * [[ff3:ff3us:doc:snes|Assembly & SNES technical resources]]\\ 
-[[ff3:ff3us:doc:snes:opcode|65816 Opcodes list]] (Hatzen08)\\ +  [[ff3:ff3us:doc:snes:opcode|65816 Opcodes list]] (Hatzen08)\\ 
-[[http://assassin17.brinkster.net/thegun.htm|65816 Opcodes detailed]] (TheGun)\\ +  [[https://www.ff6hacking.com/misc/resources/thegun.htm|65816 Opcodes detailed]] (TheGun)\\ 
-[[https://wiki.superfamicom.org/snes/show/Registers|SNES Registers]]\\ +  [[https://wiki.superfamicom.org/snes/show/Registers|SNES Registers]]\\ 
-[[http://www.ff6hacking.com/forums/showthread.php?tid=3120|SNES / GBA Coding Sticky Thread]]\\+  [[https://www.ff6hacking.com/forums/showthread.php?tid=3120|SNES / GBA Coding Sticky Thread]]\\
  
 +----
  
-{{wiki:hfaq:events.png}}+==== 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.
  
-[[http://www.angelfire.com/al2/imzogelmo/patches.html|Event Dump and Event commands list]] (Imzogelmo)\\ +  * {{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:asm:codes:event_codes|Event Commands]] (Yousei)\\ +  * {{ff3:ff3us:doc:game:event-commands.zip|Event Command List}} (Imzogelmo)\\ 
-[[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:movement_codes|Movement Codes]] (Yousei)\\ +  * [[ff3:ff3us:doc:asm:codes:event_codes|Event Commands]] (Yousei)\\ 
-[[ff3:ff3us:doc:asm:codes:overworld_character_script|Overworld Character Commands]] (Yousei)\\ +  * [[ff3:ff3us:doc:asm:codes:movement_codes|Movement Codes]] (Yousei)\\ 
-[[ff3:ff3us:doc:asm:codes:overworld_vehicle_script|Overworld Vehicles Commands]] (Yousei)\\ +  [[ff3:ff3us:doc:asm:codes:overworld_character_script|Overworld Character Commands]] (Yousei)\\ 
-[[ff3:ff3us:doc:game:ff6_event_editing_tutorial.zip|Event Tutorial]] (xJCSx(a bit outdated)\\ +  [[ff3:ff3us:doc:asm:codes:overworld_vehicle_script|Overworld Vehicles Commands]] (Yousei)\\ 
-[[http://www.ff6hacking.com/forums/showthread.php?tid=523|All Things Event Hacking]]\\+  [[ff3:ff3us:tutorial:events|Event Hacking Tutorials]] (Lockirby2
 +  [[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/ULJUZUF7BVI|How to Make Space for Events]] (madsiur)
  
 +----
  
-{{wiki:hfaq:be.png}}+==== 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.
  
-[[ff3:ff3us:doc:game:battleeventscripts.zip|Battle Events Scripts]] (Everything)\\ +  * {{ff3:ff3us:doc:game:battleeventscripts.zip|Battle Events Scripts}} (Everything)\\ 
-[[ff3:ff3us:doc:game:battleeventsscripts.zip|Battle Events Scripts]] (madsiur)\\ +  * {{ff3:ff3us:doc:game:battleeventsscripts.zip|Battle Events Scripts}} (madsiur)\\ 
-[[ff3:ff3us:doc:asm:codes:battle_event_codes|Battle Event Commands]] (Everything)\\ +  [[ff3:ff3us:doc:asm:codes:battle_event_codes|Battle Event Commands]] (Everything)\\ 
-[[ff3:ff3us:doc:asm:codes:battle_animation_script|Animations Commands]] (Everything)\\ +  [[ff3:ff3us:doc:asm:codes:battle_animation_script|Animations Commands]] (Everything)\\ 
-[[http://www.ff6hacking.com/forums/showthread.php?tid=1049|All About Battle Events]] (outdated)\\+  [[https://www.ff6hacking.com/forums/showthread.php?tid=1049|All About Battle Events]] (outdated)\\ 
 + 
 +---- 
 + 
 +==== AI Scripting ==== 
 + 
 +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. 
 + 
 +  * {{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)\\ 
 + 
 +----
  
 +==== Animations ====
  
-{{wiki:hfaq:ai.png}}+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
  
-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.+  * {{ff3:ff3us:doc:game:battle_anim_script.zip|Animations Scripts}} (Everything)\\ 
 +  * [[ff3:ff3us:doc:asm:codes:battle_animation_script|Animations Commands]] (Everything)\\ 
 +  * [[ff3:ff3us:doc:asm:fmt:attack_animation_data|Animation Data Format]]\\
  
-[[http://www.rpglegion.com/ff6/hack/command.htm|Monster Commands Script Guide]] (Terii Senshi)\\ +----
-[[ff3:ff3us:doc:game:ff6scripting.zip|AI Scripting Document]] (BTB)\\ +
-[[http://masterzed.cavesofnarshe.com/ff3.html|Enemy Commands Script Documents]] (Master Zed)\\+
  
 +==== Spriting ====
  
-{{wiki:hfaq:anim.png}}+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.
  
-Animations can be edited with FF3usME or FF6MDEThey 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. +  * {{ff3:ff3us:doc:game:palette_locs.zip|Overworld palette assignation guide}} (Runelancer)\\ 
 +  * [[ff3:ff3us:tutorial:sprites|Editing Character Sprites and Portraits]] (madsiur)\\ 
 +  * [[ff3:ff3us:tutorial:external|External Pixel Art Tutorial List]]\\
  
-[[ff3:ff3us:doc:game:battle_anim_script.zip|Animations Scripts]] (Everything)\\ +----
-[[ff3:ff3us:doc:asm:codes:battle_animation_script|Animations Commands]] (Everything)\\ +
-[[ff3:ff3us:doc:asm:fmt:attack_animation_data|Animation Data Format]]\\+
  
 +==== Music ====
  
-{{wiki:hfaq:spriting.png}}+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.
  
-Character sprites can be imported / exported with FF3SE or FF3usME or FF3se (now incorporated in FF3usME). FF3usME has the spritesheet format that is the most used. There is certain color order to respect in the sprite in order to make a good import.+  * {{ff3:ff3us:doc:game:ff6_music_chart.zip|Music Commands}} (MetroidQuest)\\ 
 +  * {{ff3:ff3us:doc:game:song-scripts.zip|Song Scripts}} (Everything)\\ 
 +  * [[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 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=1958|How to add more songs]] (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)\\
  
-[[ff3:ff3us:doc:game:palette_locs.zip|Overworld palette assignation guide]] (Runelancer)\\ +----
-[[http://www.ff6hacking.com/forums/showthread.php?tid=667|Palette order tutorial]] (Sutebenukun)\\ +
-[[http://www.ff6hacking.com/forums/showthread.php?tid=730|Palette Editing Tutorial]] (Poco Loco)\\+
  
 +==== Sound ====
  
-{{wiki:hfaq:music.png}}+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.
  
-The SNES use BRR samples to play music, meaning a single sample will play an array of notesThe samples can be replaced with FF3usME or even inserted manuallySongs are composed in data proper to FF6 that is then read and transmitted to the SPC-700You 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: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)\\
  
-[[ff3:ff3us:doc:asm:codes:music_codes|Music Commands]]\\ +----
-[[ff3:ff3us:doc:game:ff6_music_chart.zip|Music Commands]] (MetroidQuest)\\ +
-[[ff3:ff3us:doc:asm:list:instruments|Instrument List]]\\ +
-[[ff3:ff3us:doc:asm:fmt:instrument_sets|Instrument set Format]]\\ +
-[[http://www.ff6hacking.com/forums/showthread.php?tid=493|FFVI Music Hacking]] (Gi Nattak)\\ +
-[[http://www.ff6hacking.com/forums/showthread.php?tid=2710|How to add more instruments]] (Gi Nattak)\\ +
-[[http://www.ff6hacking.com/forums/showthread.php?tid=1958|How to add more songs]] (Gi Nattak)\\ +
-[[http://www.ff6hacking.com/forums/showthread.php?tid=1941|Injecting Music with RS3exTool2]] (Gi Nattak)\\+
  
-{{wiki:hfaq:misc.png}}+==== Misc ====
  
-[[http://www.ff6hacking.com/forums/showthread.php?tid=3204]How to edit compressed graphics]] (madsiur)\\ +  * [[ff3:ff3us:tutorial:compressed|How to edit compressed graphics]] (madsiur)\\ 
-[[http://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.1491692364.txt.gz
  • Last modified: 5 years ago
  • (external edit)