Title: Restored Ability Names Authors: Angelo26 (2011-2015), SilentEnigma (2016-), Version: 2.1 Release Date: 2023-11-01 Applies to: Final Fantasy III (v1.0) (U) NOTE: This patch will expand your ROM to 32Mbits. Archive Contents ------------------------------- readme.txt = this file RestoredAbilityNames_H.ips = main patch for unmodified headered ROMs RestoredAbilityNames_NH.ips = main patch for unmodified unheadered ROMs extras\ FF3us_RAN_Menu.tbl = table file for field menu text FieldMainClassRemoval_H.ips = addendum for removing class names from the main menu (headered) FieldMainClassRemoval_NH.ips = addendum for removing class names from the main menu (unheadered) RAN_Name_Comparison.txt = name comparison document ROM Addresses ------------------------------- C1/5FCA 5FDE-5FE0 5FF4 6008-600A 601B 6032-6034 64F9 6500 65A4 65B5 65C0-65C2 65D1 65DC-65DE 65E9 65F4-65F6 660C-6611 661C-661E 6661-6666 6671-6673 6689-668E 6699-669B 6ABE 6ACC 6ADD 6AEE-6AF0 6B1E 6B2F-6B31 8280 8287-8289 973C 9747-9751 9763 9839 C2/1A46-1A47 1A66-1A6E 2D8A-2D8B ADE1-ADE5 ADFF-AE07 AE27-AE36 AE45-AE4B AE63-AE7F AE8B-AE91 AF03-AF09 BB24 BB30-BB32 BB4E BB5A-BB5C BB67 DDD6 E037-E03D E04E-E054 E05B E091 C3/20F4-20F5 2805 289E-289F 28DC-28DD 28E7-28E8 2982-2983 2996-299A 3307 3353 339F 33EB 3497-349A 34AE-34AF 34F0-34FA 3509 371B-3721 381A 4BE4-4BF3 4F12 4FB6-4FC0 5028 5053 5267-5271 5296 52C1 5329-5333 5461-5465 54FB-5505 5538-5539 555E 55E1-55E9 55F5-5619 5646-5647 5683-56BA 56DF-5729 57AE 57C2-57CC 57F1 5845 5991-599B 59B5 59BD-59C7 5A06 5AFA-5B1F 5BA4-5BA7 5BC1-5C1A 5C23-5C39 5C5B-5C61 5CBA-5CC2 5CEA-5CF5 6056 625C 6282-6285 62F0-62F2 62F8 6315 798B-7995 79CF-79EE 8309-8317 8A41 8E28-8E2E C33B-C340 C3DF FA4C-FA5F FBEF-FC1F FC77-FCDA C4/8750-87BE 8CC0-8CCE 8E70-8E8E 8F70-8F9E 905B-905D 9B52-9B61 9B68-9B77 9B7F-9B8D CC/E600-FE19 CD/0005-FFFF CE/0000-EFBA CF/3A87-3B5A 8402-86FE 8706-8A8A 8A94-8AE4 8AEB-8E2C 8E33-8F23 8F34-933D 9349-9A9C 9AB0-C047 DFE0-E1DF E3AA-F44F FC21-FCDF FE5E-FE6E FFA2-FFAC D0/D032-D1FE D2CC-D2CF D306-D309 D34D-D350 D3BF-D3C2 D68A-F0CA F0D5-FC79 D1/F127-F132 F1FE-F202 F2AD-F2AF F428-F434 F479-F486 F549-F636 F651-F735 F74C-F750 F8CA-F99E D8/CADF-CE50 CEA0-CEA5 CEB5-CEBA CECA-CED7 CF41-CF4E CF56-CF5B CF6F CF9E-CFEA E6/F9B7-FA15 ED/6401-674D 6754-6D2B 6D44-7786 77A8-7A67 7A72-7C9E EE/B21E-B225 EF/4A46-9D16 Free Space Used ------------------------------- C3/FA4C - C3/FA5F (20 bytes) C3/FBEF - C3/FBFF (17 bytes) C3/FC05 - C3/FC1F (27 bytes) C3/FC77 - C3/FCDA (100 bytes) TABLE OF CONTENTS ------------------------------- 0. Description 1. Installation 2. Relevant Offsets & Disassembly 3. Credits 4. Revision History 5. Legal ________________________________________________________________________________ 0. DESCRIPTION ________________________________________________________________________________ This hack is a continuation of the "Restored Ability Names" project formerly authored by Angelo26. From Angelo26's original post on ff6hacking.com: "This patch attempts to clean the naming convention of FF3us and adapts it to the convention of the newer games, in terms of ability names." (https://www.ff6hacking.com/forums/thread-1127.html) The following names are updated: - Magic Spells (up to 9 letters) - Espers (up to 12 letters) - Blitz, Magitek, Dance, Bushido (up to 13 letters) - Lore (up to 15 letters) - Other Abilities (up to 16 letters) > Dance abilities > Slot > Enemy Spells > Desperation Attacks > Interceptor > Esper attacks > Enemy Specials - Commands - Status Effects - Elements - GP changed to Gil - Character classes restored from FF6j (up to 12 letters) The above changes affect ability lists, dialog, ability descriptions, item descriptions, and a few item names. Abilities related to SKEAN-type items are not renamed. Other changes included in this hack: - Battle scripts moved to the FE block in the expanded area of the ROM > Scripts moved using the FF3usME utility (LordJ) > Fixes the Mag Roader / Wild Cat script bug - Battle small captions moved to the FC block in the expanded area of the ROM - Spell/Learn Rate list realigned in the Esper menu - Esper names, LV/HP/MP, etc. rearranged in submenus and the Linuep menu to accommodate the expanded Esper names - Character class names displayed on the Status page - Blitz names displayed in the field menu via "Blitz Screen" (leet Sketcher) - Esper MP cost displayed in the upper right corner of the Esper list, similar to the Magic spell list - Added item description expansion patch from "Description Expansion Megapack" (SilentEnigma); Item descriptions now start at F3/2000 NOTES: You will not be able to use FF3usME to make further changes to ability names. To edit these names after applying the patch: 1) Open the ROM in a hex editor with table support (e.g. WindHex) 2) Load the included "FF3us_RAN_Menu.tbl" table for FF3us 3) Search the F2 bank for the desired name text: > For unheadered ROMs, the F2 bank starts at file offset 0x320000 > For headered ROMs, the F2 bank starts at file offset 0x320200 4) You can then edit the name entries manually See the name comparison document "RAN_Name_Comparison.txt" for more details on the updated ability names and their locations in the ROM. ________________________________________________________________________________ 1. INSTALLATION ________________________________________________________________________________ This hack applies to FF3us 1.0 for SNES "Final Fantasy III (v1.0) (U)" ONLY. Both headered (3,146,240 bytes) and unheadered (3,145,728 bytes) ROMs are supported. This patch will expand your ROM to 32 Mbits. Any data already in the expanded section of the ROM will be overwritten! Installation steps: 1. Use an IPS patch utility to apply the compatible main patch "RestoredAbilityNames_*.ips" to your ROM. 2. If desired, apply the addendum "FieldMainClassesRemoval_*.ips". This add-on hides the character class names on the field main menu screen. Class names will still be displayed on the Status screen. NOTE: This hack is incompatible with Imzogelmo's "Multi-Steal-Fix" patch. Use "Multi-Steal-Fix Simplified Edition" (SilentEnigma) instead. ________________________________________________________________________________ 2. RELEVANT OFFSETS & DISASSEMBLY ________________________________________________________________________________ Contents: a. Main Patch "Restored Ability Names" b. Addendum "Field Main Class Removal" ================================================== a. MAIN PATCH "RESTORED ABILITY NAMES" ================================================== Applies to RestoredAbilityNames*.ips ------------------------------- Magic Spells ; Battle Original (discontinuous): C1/601A: A9 07 LDA #$07 ; 7 = spell name length C1/6031: BF 68 F5 E6 LDA $E6F568,X ; Load Spell name X C1/65A3: A9 07 LDA #$07 C1/65E8: A9 07 LDA #$07 ; 7 = spell name length C1/65F3: BF 67 F5 E6 LDA $E6F567,X ; Load Spell name X C1/6B1D: A9 07 LDA #$07 C1/6B2E: BF 67 F5 E6 LDA $E6F567,X ; Load spell name X C1/8280: 08 ; Cursor Position for Battle Spell List Modified (discontinuous): C1/601A: A9 09 LDA #$09 ; 9 = spell name length C1/6031: BF 01 00 F2 LDA $F20001,X ; Load Spell name X C1/65A3: A9 09 LDA #$09 C1/65E8: A9 09 LDA #$09 ; 9 = spell name length C1/65F3: BF 00 00 F2 LDA $F20000,X ; Load Spell name X C1/6B1D: A9 09 LDA #$09 C1/6B2E: BF 00 00 F2 LDA $F20000,X ; Load spell name X C1/8280: 00 ; Cursor Position for Battle Spell List ; Field Original (discontinuous): C3/4FB5: A0 07 00 LDY #$0007 ; spell letter length C3/4FBA: A0 67 F5 LDY #$F567 ; spell name address C3/4FBF: A9 E6 LDA #$E6 ; spell name bank C3/5052: A2 92 9E LDX #$9E92 ; position of spell progress C3/5AF9: A2 92 9E LDX #$9E92 ; space b/t start of spell name and ':' C3/5027: A0 0B 00 LDY #$000B Modified (discontinuous): C3/4FB5: A0 09 00 LDY #$0009 ; spell letter length C3/4FBA: A0 00 00 LDY #$0000 ; spell name address C3/4FBF: A9 F2 LDA #$F2 ; spell name bank C3/5052: A2 94 9E LDX #$9E94 ; position of spell progress C3/5AF9: A2 94 9E LDX #$9E94 ; space b/t start of spell name and ':' C3/5027: A0 0D 00 LDY #$000D ------------------------------- Espers ;Battle Original (discontinuous): C1/5FF3: A9 08 LDA #$08 ; 8 = Esper name length C1/6007: BF E1 F6 E6 LDA $E6F6E1,X ; Load Esper name X C1/65D0: A9 08 LDA #$08 ; 8 = Esper name length C1/65DB: BF E1 F6 E6 LDA $E6F6E1,X ; Load Esper name X C1/6688: A9 08 LDA #$08 C1/668D: A9 08 LDA #$08 ; from C1/6686)(Sets name length? C1/6698: BF E1 F6 E6 LDA $E6F6E1,X ; Loads Esper name X C2/E091: 04 03 TSB $03 ; Change the 04 bit Modified (discontinuous): C1/5FF3: A9 0C LDA #$0C ; 12 = Esper name length C1/6007: BF E6 01 F2 LDA $F201E6,X ; Load Esper name X C1/65D0: A9 0C LDA #$0C ; 12 = Esper name length C1/65DB: BF E6 01 F2 LDA $F201E6,X ; Load Esper name X C1/6688: A9 0C LDA #$0C C1/668D: A9 0C LDA #$0C ; from C1/6686 (Sets name length?) C1/6698: BF E6 01 F2 LDA $F201E6,X ; Loads Esper name X C2/E091: 02 03 ; Change the 04 bit ;Field Original (discontinuous): C3/34F0: 0A ASL A C3/34F1: 0A ASL A C3/34F2: 0A ASL A C3/34F4: A0 08 00 LDY #$0008 ; Esper name length C3/34F7: BF E1 F6 E6 LDA $E6F6E1,X ; Load Esper name C3/3508: A0 08 00 LDY #$0008 C3/4F12: 37 42 ; Level position, sub menu C3/54FA: A0 08 00 LDY #$0008 ; Esper name length C3/54FF: A0 E1 F6 LDY #$F6E1 ; Esper name address C3/5504: A9 E6 LDA #$E6 ; Esper name bank C3/555D: A0 0C 00 LDY #$000C ; Esper name 8 chars, +1 space +3 MP cost C3/5991: 10 70 ; Cursor at esper name C3/5993: 18 7C ; Cursor at spell name C3/5995: 18 88 ; Cursor at spell name C3/5997: 18 94 ; Cursor at spell name C3/5999: 18 A0 ; Cursor at spell name C3/599B: 18 AC ; Cursor at spell name C3/59BD: 0A ASL A C3/59BE: 0A ASL A C3/59BF: 0A ASL A C3/59C1: A0 08 00 LDY #$0008 ; Indirectly says below is 8 chars long C3/59C4: BF E1 F6 E6 LDA $E6F6E1,X ; Load Esper X's name C3/5A05: A2 05 00 LDX #$0005 ; Pos. of spell names in learn rate window C3/5CC2: 2D 42 8B 95 00 ; Position of and word "LV" C3/5CEA: 23 44 8B 9E 9A AB A7 C5 91 9A AD 9E 00 ; 2 bytes pos. + "Learn rate" C3/6055: A0 B1 39 LDY #$39B1 ; Position of Esper name status menu C3/7993: A0 5B 3B LDY #$3B5B ; Position of Esper name, Linuep menu Modified (discontinuous): C3/34F0: 20 B7 FC JSR $FCB7 ; New subroutine C3/FCB7 C3/34F4: A0 0C 00 LDY #$000C ; Esper name length C3/34F7: BF E6 01 F2 LDA $F201E6,X ; Load Esper name C3/3508: A0 0C 00 LDY #$000C C3/4F12: 41 42 ; Level position, sub menu C3/54FA: A0 0C 00 LDY #$000C ; Esper name length C3/54FF: A0 E6 01 LDY #$01E6 ; Esper name address C3/5504: A9 F2 LDA #$F2 ; Esper name bank C3/555D: A0 10 00 LDY #$0010 ; Esper name 12 chars, +1 space +3 MP cost C3/5991: 08 70 ; Cursor at esper name C3/5993: 10 7C ; Cursor at spell name C3/5995: 10 88 ; Cursor at spell name C3/5997: 10 94 ; Cursor at spell name C3/5999: 10 A0 ; Cursor at spell name C3/599B: 10 AC ; Cursor at spell name C3/59B4: A0 0F 44 LDY #$440F C3/59BD: 20 B7 FC JSR $FCB7 ; New subroutine C3/FCB7 C3/59C1: A0 0C 00 LDY #$000C ; Indirectly says below is 12 chars long C3/59C4: BF E6 01 F2 LDA $F201E6,X ; Load Esper X's name C3/5A05: A2 04 00 LDX #$0004 ; Pos. of spell names in learn rate window C3/5CC2: 37 42 8B 95 00 ; Position of and word "LV" C3/5CEA: 1F 44 FF FF FF FF FF 91 9A AD 9E FF 00 ; 2 bytes pos. + "Rate" C3/6055: A0 AD 39 LDY #$39AD ; Position of Esper name status menu C3/7993: A0 51 3B LDY #$3B51 ; Position of Esper name, Linuep menu New Subroutine C3/FCB7: ; Multiply A by 0x0C ; Executes when the "skills" menu is opened: C3/FCB7: C2 20 REP #$20 C3/FCB9: 48 PHA C3/FCBA: 0A ASL C3/FCBB: 0A ASL C3/FCBC: 0A ASL C3/FCBD: 85 E0 STA $E04D C3/FCBF: 68 PLA C3/FCC0: 18 CLC C3/FCC1: 0A ASL C3/FCC2: 0A ASL C3/FCC3: 65 E0 ADC $E0 C3/FCC5: AA TAX C3/FCC6: E2 20 SEP #$20 C3/FCC8: 60 RTS ------------------------------- Major Abilities Original (discontinuous) C1/5FC9: A9 0A LDA #$0A ; 10 = attack name length C1/5FDD: BF B9 F7 E6 LDA $E6F7B9,X ; Load attack name X C1/65B4: A9 0A LDA #$0A ; 10 = attack name length C1/65BF: BF B9 F7 E6 LDA $E6F7B9,X ; Load attack name X C1/6ADC: A9 0A LDA #$0A ; 10 = attack name length C1/6AED: BF B9 F7 E6 LDA $E6F7B9,X ; Load attack name X Modified (discontinuous) C1/5FC9: A9 10 LDA #$10 ; 16 = attack name length C1/5FDD: BF 5E 03 F2 LDA $F2035E,X ; Load attack name X C1/65B4: A9 10 LDA #$10 ; 16 = attack name length C1/65BF: BF 5E 03 F2 LDA $F2035E,X ; Load attack name X C1/6ADC: A9 10 LDA #$10 ; 16 = attack name length C1/6AED: BF 5E 03 F2 LDA $F2035E,X ; Load attack name X ------------------------------- Blitz Leet Sketcher's "Blitz Screen" modifies the following offsets: C3/2805, C3/289E - C3/289F, C3/28E7 - C3/28E8, C3/2982 - C3/2983, C3/2999 - C3/299A, C3/55E1 - C3/55E9, C3/55F5 - C3/5619, C3/5646 - C3/5647, C3/5683 - C3/56BA, C3/56DF - C3/5729, C3/5BA4 - C3/5BA7, C3/5BC1 - C3/5C1A Blitz Screen: C3/55FA: A9 04 LDA #$04 ; If Y index is even... C3/55FC: 90 02 BCC $5600 ; (+2) ...draw on left... C3/55FE: 69 0D ADC #$0D ; ...otherwise, right Modified: C3/55FA: A9 02 LDA #$02 ; If Y index is even... C3/55FC: 90 02 BCC $5600 ; (+2) ...draw on left... C3/55FE: 69 0E ADC #$0E ; ...otherwise, right Blitz Screen: C3/5691: A0 0A 00 LDY #$000A ; Blitz name length Modified: C3/5691: A0 0E 00 LDY #$000E ; Blitz name length Blitz Screen: C3/569A: 65 E0 ADC $E0 Modified: C3/569A: 0A ASL A ; Now index multiplication is by 16, not 10 C3/569B: EA NOP Blitz Screen: C3/569D: BF 31 F8 E6 LDA $E6F831,X ; Load Blitz name character Modified: C3/569D: BF 1E 04 F2 LDA $F20420,X ; Load Blitz name character Blitz Screen: C3/56A4: A9 24 LDA #$24 ; cyan text color Modified: C3/56A4: A9 20 LDA #$20 ; default text color ; Color & orientation for Blitz input codes Original: C3/5C20: 00 00 97 20 98 20 8B 20 91 20 D6 20 D4 A0 D6 60 ; default color C3/5C30: D5 20 D6 C0 D4 20 D6 A0 D5 60 48 5C 51 5C 59 5C ; default color Modified: C3/5C20: 00 00 97 24 98 24 8B 24 91 24 D6 24 D4 A4 D6 64 ; cyan color C3/5C30: D5 24 D6 C4 D4 24 D6 A4 D5 64 48 5C 51 5C 59 5C ; cyan color ------------------------------- Magitek Abilities Data address range for battle menu display: E6/FBAD - E6/FBFC Original (discontinuous): C1/64F8: A9 0A LDA #$0A C1/64FF: A9 0A LDA #$0A ; 10 = Magitek attack name length C1/650A: BF AD F9 E6 LDA $E6F9AD,X ; Loads Magitek attack name X C1/8289: 10 ; Cursor pos., left half of Magitek list C1/828A: 78 ; Cursor pos., right half of Magitek list C2/E04D: 05 04 ORA $04 ; Pos. for left list of Magitek Atk Menu C2/E053: 05 03 ORA $03 ; Pos. for right list of Magitek Atk Menu Modified (discontinuous): C1/64F8: A9 0A LDA #$0A C1/64FF: A9 0A LDA #$0A ; 10 = Magitek attack name length C1/650A: BF AD F9 E6 LDA $E6F9AD,X ; Loads Magitek attack name X C1/8289: 10 ; Cursor pos., left half of Magitek list C1/828A: 78 ; Cursor pos., right half of Magitek list C2/E04D: 05 04 ORA $04 ; Pos. for left list of Magitek Atk Menu C2/E053: 05 03 ORA $03 ; Pos. for right list of Magitek Atk Menu ------------------------------- Lore Abilities ; Battle Original (discontinuous): C1/6660: A9 0A LDA #$0A C1/6665: A9 0A LDA #$0A ; from C1/665E (10 = lore name length C1/6670: BF FD F9 E6 LDA $E6F9FD,X ; Load Lore name X Modified (discontinuous): C1/6660: A9 10 LDA #$10 C1/6665: A9 10 LDA #$10 ; from C1/665E (16 = lore name length) C1/6670: BF 00 07 F2 LDA $F20700,X ; Load Lore name X ; Field Original (discontinuous): C3/5266: A0 0A 00 LDY #$000A ; lore name length C3/526B: A0 FD F9 LDY #$F9FD ; lore name address C3/5270: A9 E6 LDA #$E6 ; lore name bank C3/5295: A2 95 9E LDX #$9E95 ; position of ... in lore menu C3/52C0: A0 0E 00 LDY #$000E ; 14 letters to erase Modified (discontinuous): C3/5266: A0 10 00 LDY #$0010 ; lore name length C3/526B: A0 00 07 LDY #$0700 ; lore name address C3/5270: A9 F2 LDA #$F2 ; lore name bank C3/5295: A2 9A 9E LDX #$9E9A ; position of ... in lore menu C3/52C0: A0 14 00 LDY #$0014 ; 20 letters to erase ------------------------------- Esper Attacks Original (discontinuous): C2/BB4D: A9 0A LDA #$0A ; Esper attack name length C2/BB59: BF 8F FE E6 LDA $E6FE8F,X ; Esper attack names C2/BB66: C0 0A 00 CPY #$000A ; Esper attack name length Modified (discontinuous): C2/BB4D: A9 10 LDA #$10 ; Esper attack name length C2/BB59: BF 4E 0E F2 LDA $F20E4E,X ; Esper attack names C2/BB66: C0 10 00 CPY #$0010 ; Esper attack name length ------------------------------- Dance ; Battle Original (discontinuous): C1/660B: A9 0C LDA #$0C C1/6610: A9 0C LDA #$0C ; 12 = Dance name length C1/661B: BF 9D FF E6 LDA $E6FF9D,X ; Load Mog's Dance name X C1/8287: 10 ; Cursor positioning, left col. of dances C1/8288: 80 ; Cursor positioning, right col. of dances C2/E05B: 04 04 TSB $04 ; Position of Left list of Dances Modified (discontinuous): C1/660B: A9 0D LDA #$0D C1/6610: A9 0D LDA #$0D ; 12 = Dance name length C1/661B: BF FE F0 F2 LDA $F20FFE,X ; Load Mog's Dance name X C1/8287: 00 ; Cursor positioning, left col. of dances C1/8288: 78 ; Cursor positioning, right col. of dances C2/E05B: 02 04 TSB $02 ; Position of Left list of Dances ; Field Original (discontinuous): C3/57AD: A2 03 00 LDX #$0003 ; X position of left half of Dance C3/57B8: A2 11 00 LDX #$0011 ; X position of right half of Dance C3/57C1: A0 0C 00 LDY #$000C ; Dance name length C3/57C6: A0 9D FF LDY #$FF9D ; Dance address C3/57CB: A9 E6 LDA #$E6 ; Dance bank C3/57F0: A0 0C 00 LDY #$000C ; length of dance names to erase Modified (discontinuous): C3/57AD: A2 02 00 LDX #$0002 ; X position of left half of Dance C3/57B8: A2 11 00 LDX #$0011 ; X position of right half of Dance C3/57C1: A0 0D 00 LDY #$000D ; Dance name length C3/57C6: A0 FE 0F LDY #$0FFE ; Dance address C3/57CB: A9 F2 LDA #$F2 ; Dance bank C3/57F0: A0 0D 00 LDY #$000D ; length of dance names to erase ------------------------------- Bushido (SwdTech) Abilities ; Battle (discontinuous): Original: C2/BB23: A9 0C LDA #$0C ; SwdTech name length C2/BB2F: BF 40 3C CF LDA $CF3C40,X ; SwdTech names Modified: C2/BB23: A9 0D LDA #$0D ; SwdTech name length C2/BB2F: BF 67 10 F2 LDA $F21067,X ; SwdTech names ; Field Original: C3/5328: A0 0C 00 LDY #$000C ; SwdTech name length C3/532B: 84 EB STY $EB C3/532D: A0 40 3C LDY #$3C40 ; SwdTech address C3/5330: 84 EF STY $EF C3/5332: A9 CF LDA #$CF ; SwdTech bank Modified: C3/5328: A0 0D 00 LDY #$000D ; SwdTech name length C3/532B: 84 EB STY $EB ; (NO CHANGE) C3/532D: A0 40 3C LDY #$3C40 ; SwdTech address C3/5330: 84 EF STY $EF ; (NO CHANGE) C3/5332: A9 F2 LDA #$F2 ; SwdTech bank Special Ability Categories (SwdTech -> Bushido) Data address range: C3/5C50 - C3/5CC1 ------------------------------- Width of magic spell name window in field menu (using spell) Original: C3/5845: 07 02 Modified: C3/5845: 09 02 ------------------------------- Width of item name window in field menu (using item) Original: C3/8A41: 0D 02 Modified: C3/8A41: 0C 02 ------------------------------- Enemy Special Attacks (Managed by FF3usME) Special attacks now up to 16 characters long, loaded from FD/0000 Original: C1/973B: A9 CF LDA #$CF ... C1/9747: 85 10 STA $10 C1/9749: 0A ASL A C1/974A: 0A ASL A C1/974B: 18 CLC C1/974C: 65 10 ADC $10 C1/974E: 18 CLC C1/974F: 69 D0 D0 ADC #$D0D0 ... C1/9762: C0 0A 00 CPY #$000A Modified: C1/973B: A9 FD LDA #$FD ... C1/9747: 0A ASL A C1/9748: 0A ASL A C1/9749: 0A ASL A C1/974A: 18 CLC C1/974B: 69 00 00 ADC #$0000 C1/974E: EA NOP C1/974F: EA NOP C1/9750: EA NOP C1/9751: EA NOP ... C1/9762: C0 10 00 CPY #$00100 ------------------------------- Character Classes Original (discontinuous) C3/3497: 65 E7 ADC $E7 ; executes when displaying status icon(s) C3/3499: 85 E7 STA $E7 ; executes when displaying status icon(s) C3/3306: A0 27 39 LDY #$3927 ; Class name position - field main menu C3/3352: A0 A7 3A LDY #$3AA7 ; Class name position - field main menu C3/339E: A0 27 3C LDY #$3C27 ; Class name position - field main menu C3/33EA: A0 A7 3D LDY #$3DA7 ; Class name position - field main menu C3/4DA0: CB 59 1C 05 C3/4DA8: 8B 58 1C 03 C3/4DAC: CB 61 1C 05 C3/4DB8: 8B 60 1C 03 ; window for Esper & Spell descriptions C3/4EED: A0 DD 42 LDY #$42DD C3/79CF: 6D 3A 8B 95 00 ; position of and word "LV", Linuep menu C3/79E6: 77 3A ; level's position, Linuep menu Modified (discontinuous) C3/3497: 22 40 60 F2 JSL $F26040 ; New subroutine F2/6040 C3/3306: A0 59 39 LDY #$3959 ; Class name position - field main menu C3/3352: A0 D9 3A LDY #$3AD9 ; Class name position - field main menu C3/339E: A0 59 3C LDY #$3C59 ; Class name position - field main menu C3/33EA: A0 D9 3D LDY #$3DD9 ; Class name position - field main menu C3/4DA0: 8B 59 1C 06 ; window for character portrait and stats C3/4DA8: 8B 58 1C 02 ; window for Esper and Spell descriptions C3/4DAC: 8B 61 1C 06 ; window for character portrait and stats C3/4DB8: 8B 60 1C 02 ; window for Esper and Spell descriptions C3/4EED: A0 DD 41 LDY #$41DD C3/79CF: 7B 3A 8B 95 00 ; position of and word "LV", Linuep menu C3/79E6: 81 3A ; level's position, Linuep menu Original: C3/625B: A0 9D 39 LDY #$399D ; Position of class name on status screen Modified: C3/625B: A0 CF 39 LDY #$39CF ; Position of class name on status screen Original: C3/6282: F0 5D BEQ $62E1 ; Branch if no status effect C3/6284: 64 F1 STZ $F1 Modified: C3/6282: 4C EF FB JMP $FBEF ; new subroutine C3/FBEF C3/6285: EA NOP Original: C3/6314: E0 08 00 CPX #$0008 ; 8 = max class name length + 1 (blank) Modified C3/6314: E0 0D 00 CPX #$000D ; 13 = max class name length + 1 (blank) Original: C3/62EF: BF 1B 37 C3 LDA $C3371B,X ; location of "KO " C3/62F3: 8D 80 21 STA $2180 C3/62F6: E8 INX C3/62F7: E0 08 00 CPX #$0008 Modified: C3/62EF: BF F3 5F F2 LDA $F25FF3,X ; location of "KO " C3/62F3: 8D 80 21 STA $2180 C3/62F6: E8 INX C3/62F7: E0 0D 00 CPX #$000D ; 13 = max job name length + 1 New Data F2/5FF3: ; elongated "KO" string F2/5FF3: 8A B4 FE FE FE FE FE FE FE FE FE FE FF ; "KO " Original: C3/34AD: 4C E5 34 JMP $34E5 ; Skip class name Modified: C3/34AD: 4C 4C FA JMP $FA4C ; New subroutine for displaying class name New Subroutine C3/FA4C: C3/FA4C: A5 26 LDA $26 ; menu state C3/FA4E: C9 04 CMP #$04 ; field main menu C3/FA50: F0 0B BEQ $FA5D C3/FA52: C9 15 CMP #$15 ; save confirmation menu C3/FA54: F0 07 BEQ $FA5D C3/FA56: C9 22 CMP #$22 ; load confirmation menu C3/FA58: F0 03 BEQ $FA5D C3/FA5A: 4C E5 34 JMP $34E5 ; Skip class name C3/FA5D: 4C EF FB JMP $FBEF ; Display class name Subroutine C3/FBEF: C3/FBEF: F0 05 BEQ $FBF6 ; Branch if no status effect (a la C3/6282) C3/FBF1: 64 F1 STZ $F1 ; Operation from C3/6284 C3/FBF3: 4C 86 62 JMP $6286 ; Return to status effect check C3/FBF6: B9 00 00 LDA $0000,Y C3/FBF9: 22 00 60 F2 JSL $F26000 ; New subroutine F2/6000 for class names C3/FBFD: 4C 05 35 JMP $3505 New Subroutine F2/6000: F2/6000: C2 20 REP #$20 F2/6002: B9 00 00 LDA $0000,Y F2/6005: 29 FF 00 AND #$00FF F2/6008: 0A ASL A F2/6009: AA TAX F2/600A: BF 80 60 F2 LDA $F26080,X ; class name pointer table F2/600E: AA TAX F2/600F: A0 10 00 LDY #$0010 F2/6012: A9 00 00 LDA #$0000 F2/6015: E2 20 SEP #$20 F2/6017: BF 00 00 F2 LDA $F20000,X ; class name base offset F2/601B: F0 09 BEQ $6026 F2/601D: 8D 80 21 STA $2180 F2/6020: E8 INX F2/6021: 88 DEY F2/6022: F0 0E BEQ $6032 F2/6024: 80 F1 BRA $6017 F2/6026: C8 INY F2/6027: 88 DEY F2/6028: F0 08 BEQ $6032 F2/602A: A9 FF LDA #$FF F2/602C: 8D 80 21 STA $2180 F2/602F: 88 DEY F2/6030: D0 FA BNE $602C F2/6032: 9C 80 21 STZ $2180 F2/6035: 6B RTL New Subroutine F2/6040: ; Executes when displaying status icon(s) F2/6040: 48 PHA F2/6041: A5 E8 LDA $E8 F2/6043: C9 38 CMP #$38 F2/6045: F0 02 BEQ $6049 F2/6047: 80 0F BRA $6058 F2/6049: A5 E7 LDA $E7 F2/604B: C9 82 CMP #$82 F2/604D: 90 09 BCC $6058 F2/604F: A9 46 LDA #$46 F2/6051: 85 E8 STA $E8 F2/6053: 68 PLA F2/6054: A9 70 LDA #$70 F2/6056: 80 04 BRA $605C F2/6058: 68 PLA F2/6059: 18 CLC F2/605A: 65 E7 ADC $E7 ; moved original C3/3497 F2/605C: 85 E7 STA $E7 ; moved original C3/3499 F2/605E: 6B RTL ------------------------------- Commands Data address range: D8/CEA0 - D8/CF71 ------------------------------- Status Effects Data address range: C2/ADE0 - C2/AF10, C3/371B - C3/3722 ------------------------------- Currency (GP to Gil) Original (discontinuous): C3/3817: 77 7E 86 A9 00 ; "Gp" C3/C338: 41 7A 86 8F 00 ; "GP" C3/C33D: 2B 7B 86 8F 00 ; "GP" Modified (discontinuous): C3/3817: 77 7E 86 D0 00 ; "Gil" C3/C338: 41 7A 86 D0 00 ; "Gil" C3/C33D: 2B 7B 86 D0 00 ; "Gil" Original: ; "You need more GP!" C3/C3CE: 1F 79 C3/C3D0: 98 A8 AE FF A7 9E 9E 9D FF A6 A8 AB 9E FF 86 8F C3/C3E0: BE 00 Modified: ; "You need more Gil!" C3/C3CE: 1F 79 C3/C3D0: 98 A8 AE FF A7 9E 9E 9D FF A6 A8 AB 9E FF 86 D0 C3/C3E0: BE 00 ------------------------------- Skills menu Original (discontinuous): C3/4DA0: CB 59 1C 05 ; window for character portrait and stats C3/4DA8: 8B 58 1C 03 ; window for Esper and Spell descriptions C3/4DAC: CB 61 1C 05 ; window for character portrait and stats C3/4DB8: 8B 60 1C 03 ; window for Esper & Spell descriptions Modified (discontinuous): C3/4DA0: 8B 59 1C 06 ; window for character portrait and stats C3/4DA8: 8B 58 1C 02 ; window for Esper and Spell descriptions C3/4DAC: 8B 61 1C 06 ; window for character portrait and stats C3/4DB8: 8B 60 1C 02 ; window for Esper and Spell descriptions Original: C3/5CC2: 2D 42 8B 95 00 ; Position of and word "LV" Modified: C3/5CC2: 9D 42 8B 95 00 ; Position of and word "LV" Original: C3/4F12: 37 42 ; Level position Modified: C3/4F12: A5 42 ; Level position ------------------------------- Control menu text length & window size Original: C2/DDD6: 0C 08 ; Relm's Control window dimensions (12 x 8) Modified: C2/DDD6: 12 08 ; Relm's Control window dimensions (18 x 8) Original: C1/6ACB: A9 07 LDA #$07 ; blank control command length Modified: C1/6ACB: A9 09 LDA #$09 ; blank control command length ; (must match magic spell name length) Original: C1/6ABD: A9 03 LDA #$03 ; spaces after spells Modified: C1/6ABD: A9 07 LDA #$07 ; spaces after spells ------------------------------- Esper menu Growth Rate label Original: C3/5AFF: A9 C1 LDA #$C1 ; Char: ":" C3/5B01: 8D 80 21 STA $2180 ; Add to string C3/5B04: A9 FF LDA #$FF ; Space char C3/5B06: 8D 80 21 STA $2180 ; Add to string C3/5B09: 8D 80 21 STA $2180 ; Add to string C3/5B0C: A9 D7 LDA #$D7 ; Char: "×" C3/5B0E: 8D 80 21 STA $2180 ; Add to string C3/5B11: A5 E0 LDA $E0 ; Learning rate C3/5B13: 20 E0 04 JSR $04E0 ; Turn into text C3/5B16: A5 F8 LDA $F8 ; Tens digit C3/5B18: 8D 80 21 STA $2180 ; Add to string C3/5B1B: A5 F9 LDA $F9 ; Ones digit C3/5B1D: 8D 80 21 STA $2180 ; Add to string Modified: C3/5AFF: A9 01 LDA #$01 ; Submenu I.D. for "Skills" C3/5B01: 20 C9 FC JSR $FCC9 ; New subroutine $FCC9 C3/5B04: 8D 80 21 STA $2180 ; Add to string C3/5B07: A9 D7 LDA #$D7 ; Char: "×" C3/5B09: 8D 80 21 STA $2180 ; Add to string C3/5B0C: A5 E0 LDA $E0 ; Learning rate C3/5B0E: 20 E0 04 JSR $04E0 ; Turn into text C3/5B11: A5 F8 LDA $F8 ; Tens digit C3/5B13: 8D 80 21 STA $2180 ; Add to string C3/5B16: A5 F9 LDA $F9 ; Ones digit C3/5B18: 8D 80 21 STA $2180 ; Add to string C3/5B1B: A9 00 LDA #$00 ; Submenu I.D. for "Items" C3/5B1D: 20 C9 FC JSR $FCC9 ; New subroutine $FCC9 New Subroutine C3/FCC9: ; Conditionally append ": " to growth rate string; then load Space char value C3/FCC9: CD 2C 02 CMP $0220 ; Compare submenu I.D. to accumulator C3/FCCC: D0 0A BNE $FCD8 ; If not equal, skip appending string C3/FCCE: A9 C1 LDA #$C1 ; Char: ":" C3/FCD0: 8D 80 21 STA $2180 ; Add to string C3/FCD3: A9 FF LDA #$FF ; Space char C3/FCD5: 8D 80 21 STA $2180 ; Add to string C3/FCD8: A9 FF LDA #$FF ; Space char C3/FCDA: 60 RTS ; Return ------------------------------- Lineup menu Original: C3/798A: 20 27 34 JSR $3427 ; Show status effect & set font color white Modified C3/798A: 20 A9 34 JSR $3427 ; Set font color white (skip status effect) Original: C3/798D: A0 DB 3A LDY #$3ADB ; character name position Modified: C3/798D: A0 5B 3A LDY #$3A5B ; character name position Original: C3/7993: A0 5B 3B LDY #$3B5B ; Position of Esper name Modified: C3/7993: A0 6B 3A LDY #$3A6B ; Position of Esper name Original: C3/79CF: 6D 3A 8B 95 00 ; position of and word "LV" C3/79D4: ED 3A 87 8F 00 ; Position of and word "HP" C3/79D9: 6D 3B 8C 8F 00 ; Position of and word "MP" C3/79DE: FB 3A C0 00 ; Position of and "/" (HP) C3/79E2: 7B 3B C0 00 ; Position of and "/" (MP) C3/79E6: 77 3A ; level's position C3/79E8: F3 3A ; Position of current HP C3/79EA: FD 3A ; Position of total HP C3/79EC: 73 3B ; Position of current MP C3/79EE: 7D 3B ; Position of toal MP Modified: C3/79CF: DB 3A 8B 95 00 ; position of and word "LV C3/79D4: EB 3A 87 8F 00 ; Position of and word "HP" C3/79D9: 6B 3B 8C 8F 00 ; Position of and word "MP" C3/79DE: F9 3A C0 00 ; Position of and "/" (HP) C3/79E2: 79 3B C0 00 ; Position of and "/" (MP) C3/79E6: E3 3A ; level's position C3/79E8: F1 3A ; Position of current HP C3/79EA: FB 3A ; Position of total HP C3/79EC: 71 3B ; Position of current MP C3/79EE: 7B 3B ; Position of toal MP ------------------------------- Ability list cursor positions Original: C3/4BE4: 08 74 78 74 ; Field menu Dance/Blitz/SwdTech cursor positions row 1 C3/4BE8: 08 8C 78 8C ; Field menu Dance/Blitz/SwdTech cursor positions row 2 C3/4BEC: 08 A4 78 A4 ; Field menu Dance/Blitz/SwdTech cursor positions row 3 C3/4BF0: 08 BC 78 BC ; Field menu Dance/Blitz/SwdTech cursor positions row 4 Modified: C3/4BE4: 00 73 78 73 ; Field menu Dance/Blitz cursor positions row 1 C3/4BE8: 00 8B 78 8B ; Field menu Dance/Blitz cursor positions row 2 C3/4BEC: 00 A3 78 A3 ; Field menu Dance/Blitz cursor positions row 3 C3/4BF0: 00 BB 78 BB ; Field menu Dance/Blitz cursor positions row 4 Original: C3/2995: 20 D4 4B JSR $4BD4 ; Set cursor position for SwdTech list Modified: C3/2995: 20 05 FC JSR $FC05 ; Jump to new subroutine C3/FC05 Original: C3/20F3: 20 D7 4B JSR $4BD7 ; Set cursor position for SwdTech list Modified: C3/20F3: 20 08 FC JSR $FC08 ; Jump to new subroutine C3/FC08 New Subroutine C3/FC05 - set up cursor positions for SwdTech list: C3/FC05: 20 2D 07 JSR $072D C3/FC08: A0 10 FC LDY #$FC10 ; alt entry from C3/20F3 C3/FC0B: 84 E7 STY $E7 C3/FC0D: 4C 40 06 JMP $0640 New Data: C3/FC10: 08 73 78 73 ; Field menu SwdTech cursor positions row 1 C3/FC14: 08 8B 78 8B ; Field menu SwdTech cursor positions row 2 C3/FC18: 08 A3 78 A3 ; Field menu SwdTech cursor positions row 3 C3/FC1C: 08 BB 78 BB ; Field menu SwdTech cursor positions row 4 ------------------------------- Displaying Esper MP cost (like magic) in Ability menu Original: C3/5460: A0 A7 5C LDY #$5CA7 ; Address of the word "Espers" C3/5463: 20 F9 02 JSR $02F9 Modified: C3/5460: A0 87 5C LDY #$5C87 ; Address of the string "MP<...>" C3/5463: 20 77 FC JSR $FC77 ; Jump to new subroutine C3/FC77 Blitz Screen: C3/5BE8: A9 01 LDA #$01 ; New lookup offset for Esper description C3/5BEA: 80 0E BRA $5BFA ; Set up C3/572A call with loaded offset Modified: C3/5BE8: 4C 7A FC JMP $FC7A ; Jump to new subroutine C3/FC7A C3/5BEB: EA NOP New subroutine C3/FC77 C3/FC77: 20 F9 02 JSR $02F9 ; moved original C3/5463 ; Update MP string C3/FC7A: C2 20 REP #$20 ; 16 bit memory/accum. ; entry from C3/5BE8 C3/FC7C: A9 BD 81 LDA #$81BD C3/FC7F: 8F 89 9E 7E STA $7E9E89 C3/FC83: E2 20 SEP #$20 ; 8 bit memory/accum. C3/FC85: A2 8B 9E LDX #$9E8B C3/FC88: 8E 81 21 STX $2181 C3/FC8B: A9 20 LDA #$20 C3/FC8D: 85 29 STA $29 C3/FC8F: 7B TDC C3/FC90: A5 4B LDA $4B ; Current cursor index in list C3/FC92: AA TAX C3/FC93: 18 CLC ; Display MP Cost C3/FC94: BF 89 9D 7E LDA $7E9D89,X C3/FC98: 30 02 BMI $FC9C C3/FC9A: 69 36 ADC #$36 C3/FC9C: 20 0D 51 JSR $510D C3/FC9F: 20 45 55 JSR $5545 ; For displaying MP cost C3/FCA2: 7B TDC ; Make sure B register is clear C3/FCA3: A9 01 LDA #$01 ; New lookup offset for Esper description C3/FCA5: 4C FA 5B JMP $5BFA ; Set up C3/572A call with loaded offset Original: C3/5538: 48 PHA C3/5539: A2 93 9E LDX #$9E93 C3/553C: 8E 81 21 STX $2181 C3/553F: A9 C7 LDA #$C7 ; The '...' character in the font C3/5541: 8D 80 21 STA $2180 C3/5544: 68 PLA Modified: C3/5538: 80 20 BRA $555A ; Don't print MP cost by Esper name C3/553A: 93 9E STA ($9E,S),Y ; Fragment of original C3/5539 instruction Original: C3/28DB: 20 FD 0E JSR $0EFD Modified: C3/28DB: 20 A8 FC JSR $FCA8 ; Jump to new subroutine C3/FCA8 New subroutine C3/FCA8: C3/FCA8: 20 FD 0E JSR $0EFD ; moved original C3/28DB C3/FCAB: AD 1E 02 LDA $021E ; frame counter C3/FCAE: 6A ROR A C3/FCAF: 90 03 BCC $FCB4 ; check alternates each frame C3/FCB1: 4C 75 0F JMP $0F75 ; set up/queue update to MP value C3/FCB4: 4C 91 A9 JMP $A991 ; clear description if button pressed, etc. ------------------------------- Large Font Affected data: C4/905B - C4/905D, C4/9B52 - C4/9B8D Index Symbol ----- ------ 0x7B ll 0x7C ñ 0x7D ir ------------------------------- Small Font Data address range: C4/7FC0 - C4/8FBF Index range Original Modified ----------- -------- -------- 0x79 - 0x7E itek Mi 0x7F e 0xD0 il 0xEB - 0xEC il 0xFB ll (unused) 0xFC ñ 0xFD ir (unused) ------------------------------- Field/Town Dialog Script Data address range: CC/E600 - CE/D08F ------------------------------- Monster Battle Scripts (Managed by FF3usME) Monster battle scripts now loaded from FE/0000 Data address range: CF/8400 - CF/86FF Original (discontinuous): C2/1A46: 87 CF C2/1A66: 87 CF C2/1A6D: 87 CF C2/2D8A: 87 CF Modified: C2/1A46: 00 FE C2/1A66: 00 FE C2/1A6D: 00 FE C2/2D8A: 00 FE ------------------------------- Item Descriptions Data address range: C3/8309 - C3/8317 Item descriptions start at F3/2000, 96 bytes per entry ------------------------------- Battle Small Captions (Managed by FF3usME) Battle small captions now loaded from FC/0000 Data address range: CF/DFE0 - CF/E1DF Original: C1/9838: A9 CF LDA #$CF ; Battle small captions bank Modified: C1/9838: A9 FC LDA #$FC ; Battle small captions bank ------------------------------- Battle Large Captions (Managed by FF3usME) Data address range: D0/D000 - D0FCFF ------------------------------- Attack Messages (Managed by FF3usME) Data address range: D1F200 - D1F99F, D1F9A0 - D1FB9F ================================================== b. ADDENDUM "FIELD MAIN CLASS REMOVAL" ================================================== Applies to addendum patch FieldMainClassRemoval_*.ips Restored Ability Names: C3/34AD: 4C 4C FA JMP $FA4C ; New subroutine for printing class names Reverted (original): C3/34AD: 4C E5 34 JMP $34E5 ; Bypass class name display ________________________________________________________________________________ 3. CREDITS ________________________________________________________________________________ Original Hack (2011-2015): Angelo26 ....... Author MetroidQuest ... Code on class names James McPhee ... Data organization in the expanded ROM Gi Nattak ...... Testing & bug reporting Updated Hack (2016-): SilentEnigma ... Author Imzogelmo ...... Disassembly of banks C1 and C3 LordJ .......... FF3usME & "Monster Battle Scripts hack", "Various Text hacks" Dr. Meat ....... Found a workaround for the original patch's battle script compatibility issue Gi Nattak ...... Resolved a bug in Imzogelmo's patch Leet Sketcher .. "Blitz Screen" patch author Special Thanks: Madsiur, for endorsing the author's usurpation of Angelo26's hack Antamaru: - for identifying the Item submenu bugs through v1.1 and v1.2 - for identifying the class name length bug through v1.3 - for identifying the Control menu window width bug through v1.4 DrakeyC, for his helpful solution proposal for the Item submenu bug in v1.1 ________________________________________________________________________________ 4. REVISION HISTORY ________________________________________________________________________________ 2016-02-19: Version 1.0 released 2016-02-20: Version 1.1 released - Fixed the cursor position at the list of Espers' spells 2019-03-03: Version 1.2 released. - Fixed the position of the growth rate string in the Item submenu 2019-11-27: Version 1.3 released. - Increased the width of the field menu's magic spell name window to properly fit 'Poisona' - Increased the width of the use-item-name window (default-sized window wider than necessary) 2020-05-17: Version 1.4 released. - Fixed bug in the "Full" variant causing class names longer than 7 characters not to clear fully whenever the player switches the status screen to a character with active status effects. - Status effect names & class names in the "Full" variant now take fewer liberties. 2020-06-02: Version 1.5 released. - Fixed the width of the Control command menu in battle. 2020-10-10: Version 1.6 released. - Removed occasional status effect display in "Full" variant's Lineup menu. (overlapped with relocated character name) - Moved Esper name, HP, & MP left by 8 pixels in "Full" variant's Lineup menu. 2022-05-05: Version 2.0 released. - Previous "Basic" & "Full" variants merged: > Main patch includes class names on the field main menu > Other changes previously assigned to the "Full" variant retained - Included addendum "FieldMainClassRemoval" for removing class names from field main menu - Added "Blitz Screen" (Leet Sketcher) - Added item description expansion patch from "Description Expansion Megapack" (SilentEnigma) - MP cost display added in upper right corner for Esper list - Miscellaneous ability name corrections after comprehensive review - Reverted "BIGGS" to "VICKS" - Patch now updates enemy special attack names - Reverted undocumented changes to field menu commands (restored all-caps) > starting at C3/8D1D: USE/ARRANGE/RARE > starting at C3/A308: EQUIP/REMOVE/EQUIP/OPTIMUM/RMOVE/EMPTY/EQUIP/REMOVE > starting at C3/C326: BUY SELL EXIT - Added table files and name comparison document to archive - Added patches for unheadered ROMs 2023-11-01: Version 2.1 released - Fixed misaligned "KO" label in the field menu status screen - Updated for compatibility with Madsiur's "Mastered Esper Icon Hack" (v1.1) - Removed support for compatibility with Imzogelmo's "Multi-Steal-Fix" ________________________________________________________________________________ 5. LEGAL ________________________________________________________________________________ Copyright (C) 2020, 2022, 2023 David R. Thompson (SilentEnigma). The copyright holder ("author") permits the free use of the attributed work referenced by this document exclusively for non-commercial purposes, provided that the following conditions are met: 1. The author and all contributors credited in this readme document shall be given credit for their respective contributions wherever the attributed work is reused, redistributed, or modified. 2. This readme document shall accompany any of the files comprising the attributed work wherever they are redistributed in unmodified form. The work(s) and file(s) distributed with this document are provided "AS-IS", WITHOUT ANY WARRANTY. The author shall not be held responsible for any damages related to the use of work(s) and file(s) distributed with this document. FINAL FANTASY is a registered trademark of Square Enix Holdings Co., Ltd. FINAL FANTASY VI (C) 1994, 2006, 2014, 2022 SQUARE ENIX CO., LTD. The author of this document makes no claim to FINAL FANTASY VI or any intellectual property contained therein.