FF6 Hacking
Patch: Restored Ability Names (Update) - Printable Version

+- FF6 Hacking (https://www.ff6hacking.com/forums)
+-- Forum: Hacks, Resources and Tutorials (https://www.ff6hacking.com/forums/forum-1.html)
+--- Forum: Jidoor Auction House (https://www.ff6hacking.com/forums/forum-4.html)
+---- Forum: Patches, Bugfixes, Tweaks (https://www.ff6hacking.com/forums/forum-15.html)
+---- Thread: Patch: Restored Ability Names (Update) (/thread-3141.html)

Pages: 1 2 3 4 5 6


Patch: Restored Ability Names (Update) - SilentEnigma - 02-19-2016

author: SilentEnigma (updates), Angelo26 (original implementation)
current version: 2.1 (2023-11-01)
Download


Hi folks,

With Madsiur's approval I have made a big update to Angelo's Final Fantasy VI: Restored Ability Names patch, with the following new features:
  • Moved battle scripts to the FE block in the expanded portion of the ROM (workaround found by Dr. Meat for a bug in the original patch)
  • Realigned the Spell/Learn Rate list in the Esper submenu.
  • Space optimization:  Returned special ability names (Lore, Dance, etc.) to their original location on the ROM.
  • Version compatible with Imzogelmo's Multi-Steal Fix is now available.
  • All of Angelo's name choices are retained.
 
This ought to make it much simpler for people to apply Angelo's patch and use it in their personal projects.

Additional modifications:
  • Returned spell description window to its original height. All default descriptions now fit properly again.
  • Esper names, LV/HP/MP, etc. rearranged in submenus and the airship menu for (in my opinion) a more natural-looking alignment. Several name changes vs. Angelo's version (e.x. Efreet -> Ifrit, Regene -> Regen, ...)
  • The placement of class names can be modded to be a bit less intrusive vs. how they were designed for the original game. I'm pretty sure they are just a novelty for most players, so instead of putting them in nearly every menu and cluttering everything up, class names are instead relegated to the Status page. They also have been renamed where appropriate.
Of course, any of my own naming choices can be easily modified using WindHex and the FF3 battle encoding table:
  • C2/ADE0 - C2/AF10 for status effects
  • E6/FBAD - E6/FBFC for in-battle Magitek menu items
  • F2 bank for just about everything else.
...And let me know if anyone has any trouble with the patch. Although I don't think I introduced any new bugs, testing has not been comprehensive.

New in version 2.x:
  • Previous "Basic" & "Full" variants merged
  • Class name placement mod relegated to an addendum patch
  • Added Blitz Screen by @"Leet Sketcher"
  • Added item description expansion patch from the Description Expansion Megapack (Tool descriptions restored to their original glory)
  • MP cost display added in upper right corner for the Esper list, similar to the Magic spell list
  • Miscellaneous ability name corrections after comprehensive review
  • Reverted a few out-of-scope tweaks from the earlier patch
  • Patch now updates enemy special attack names
  • Removed compatibility with Imzogelmo's Multi-Steal-Fix (Use Multi-Steal-Fix Simplified Edition instead.)
  • Added patches for unheadered ROMs

See the readme and name comparison doc for more details.


RE: Patch: Restored Ability Names (Update) - madsiur - 02-19-2016

These are pretty cool changes. I agree that class names are a bit intrusive and having them in a single but most appropriate spot is a good idea. I think for anyone using this credits to both Angelo and silentenigma would be welcome.


RE: Patch: Restored Ability Names (Update) - SilentEnigma - 02-20-2016

Madsiur, I found a small visual flaw in my patch (I'd forgotten to realign the cursor along with the spells list in the Esper menu). Everything should be fixed now.

If you want to update the hosted file, the updated patch can be found here. Thanks!


RE: Patch: Restored Ability Names (Update) - Kugawattan - 03-13-2016

Hi! Um, I seem to have a small issue using this patch. It is a problem with my ROM and not the patch itself: I seem to have issues installing it on my currently-under-progress hack.
I've been working for quite a while on my hack, and just now I've decided to use this patch (not being able to use usME to edit he names scared me). I apply it, and it seems to run just fine, until I checked out the WoB map...
[Image: crossover_crisis__ean__00000_by_kugawattan-d9v4vej.bmp]
It is completely blank white. I can still encounter monsters, check the menu, everything else seems to be fine. A quick look at the Level Editor brings me this message...

"System.ArgumentOutOfRangeException: The value of '15' is not valid for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'.
Name of the parameter: Value
   in System.Windows.Forms.NumericUpDown.set_Value(Decimal value)
   in FF3LE.Levels.InitializeSubtile()
   in FF3LE.Levels.InitializeTile()
   in FF3LE.Levels.RefreshLevel_ProgressChanged(Object sender, ProgressChangedEventArgs e)
   in System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs e)
   in System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)"

Now, the WoB map is the only thing apparently affected. This doesn't happen on a clean rom, so I obviously messed something up. Thing is, I can't figure out what did I do. I not done any asm, and mostly limited myself to small event edits, not changing anything if I didn't know what it did. 

Do you (or anyone for that matter) know what can cause this to happen, and how can I fix this? For the record, installing Angelo's patch also causes this for me. Thanks in advance.


RE: Patch: Restored Ability Names (Update) - madsiur - 03-13-2016

(03-13-2016, 08:39 PM)Kugawattan Wrote: Hi! Um, I seem to have a small issue using this patch. It is a problem with my ROM and not the patch itself.

This is right. I'm wondering why you post here... You seem to have a tile graphic problem.

1) Apply the patch to a clean ROM and produce an IPS report. If WOB is garbage; the problem is the patch.
2) Use a backup of your hack that is working. Create a patch of your hack. Apply the patch to a clean ROM and produce a IPS report.
3) Apply the name patch to your working hack and produce a report.
4) Cross reference report #2 and #3 (and maybe #1 as well though it should be very similar if not the same to #3) for offset ranges that are the same.
5) Check all three reports for changes in the following ranges (headered values). It is normal ranges will be affected on report #2 if you modified the WOB for your hack:

Edit: Note that the actual code handling map is located in bank $EE I think. You might want to look for changes there too.

Code:
2E9D14    2E9F13    MAP  World of Balance Tile Properties
2ED634    2F134E    MAP  World of Balance Map Data
2F134F    2F344F    GFX  World of Balance Tile Graphics
2FE69B    2FEAB2    MAP  World of Balance Miniature Map
12EE00    12EEFF    PAL  World of Balance Palettes



RE: Patch: Restored Ability Names (Update) - Kugawattan - 03-13-2016

Dunno. Felt this would be a good place since this patch gave me issues.

World map of clean ROM is fine.

IPS Reports:

1) Namepatch to clean ROM report
http://pastebin.com/tW5YSi9Y

2) Hack to clean ROM report
http://pastebin.com/dYxR5jTk

3) Namepatch to Hack report
http://pastebin.com/LVSvNV09

Found conflicts between 2 and 3
Code:
021C46
021C66
02B08B
02B103
033A1A
035E5B
0CE800
0D0200
0F8602    
0F8906    
0F8C94    
0F8CEB    
0F9033  
0F9134    
0F9549
0F9CB0
11F327
11F628    
11F679
11F7C2  
11F814
18D0A0
18D156
2EB41E
2F4C46
300200  
3101FF  
3201FE
3E0200



RE: Patch: Restored Ability Names (Update) - SilentEnigma - 03-16-2016

Kugawattan, it looks like your hack expands the ROM, right? Angelo's hack expands it as well, and the only way to do that in an IPS patch is to write data to the whole expanded section - so a lot of your stuff was probably overwritten by filler bytes because of that. The solution would be to restore your hack data in the expanded section of the ROM (offset 300200 and up) from a backup after you've applied Angelo's patch.

I also see you listed a conflict at 3201FE, (a.k.a. F2/01FE) - that's where spell name data is stored from Angelo's hack... not to mention the other conflicts. So I think your troubles are just beginning with this, and they probably go beyond the world map issue. It's probably going to take studying both hacks in detail, relocating Angelo's expanded data, and assembly hacking in order to fix everything. And at that rate, you'd probably be better off implementing this hack yourself from scratch.

Good luck on whatever you decide, sorry for my lack of optimism!


RE: Patch: Restored Ability Names (Update) - seibaby - 04-13-2016

Hey, @silentenigma, you wouldn't happen to have an assembly source file for this? I'd love to take a look. I'm currently elbow-deep in an exploration of C3 and it would be a big help.


RE: Patch: Restored Ability Names (Update) - SilentEnigma - 04-17-2016

Hey seibaby, are you looking for a full disassembly of the C3 bank for the patched ROM? Because I've included most of the highlights for this hack in the readme - I'm guessing you've seen that. DUDE could probably get the job done for you if you want a full disassembly.


RE: Patch: Restored Ability Names (Update) - DrakeyC - 08-21-2018

To get around the lack of MP cost for Espers in the menu, I decided to hijack the Esper bonus string, since my hack doesn't use Esper bonuses.

Code:
Fork: Draw esper bonus message
C3/5A29: E220    SEP #$20       ; 8-bit A
C3/5A2B: BF006ED8 LDA $D86E00,X  ; Esper bonus
C3/5A2F: C9FF    CMP #$FF       ; None?
C3/5A31: F034    BEQ $5A67      ; Blank if so
C3/5A33: 8D0242  STA $4202      ; Set multiplicand
C3/5A36: A909    LDA #$09       ; Text length
C3/5A38: 8D0342  STA $4203      ; Set multiplier
C3/5A3B: A01347  LDY #$4713     ; Tilemap ptr
C3/5A3E: 201935  JSR $3519      ; Set pos, WRAM
C3/5A41: A600    LDX $00        ; Char index: 0
C3/5A43: BFF75CC3 LDA $C35CF7,X  ; "At..." char
C3/5A47: 8D8021  STA $2180      ; Add to string
C3/5A4A: E8      INX            ; Point to next
C3/5A4B: E00E00  CPX #$000E     ; Done all 14?
C3/5A4E: D0F3    BNE $5A43      ; Loop if not
C3/5A50: AE1642  LDX $4216      ; Index product
C3/5A53: A00900  LDY #$0009     ; Letters: 9
[b]C3/5A56: BFAEFECF LDA $CFFEAE,X  ; Bonus char[/b]
C3/5A5A: 8D8021  STA $2180      ; Add to string
C3/5A5D: E8      INX            ; Point to next
C3/5A5E: 88      DEY            ; One less left
C3/5A5F: D0F5    BNE $5A56      ; Loop till last
C3/5A61: 9C8021  STZ $2180      ; End string
C3/5A64: 4CD97F  JMP $7FD9      ; Draw string

Fork: Blank esper bonus message
C3/5A67: A01347  LDY #$4713     ; Tilemap ptr
C3/5A6A: 201935  JSR $3519      ; Set pos, WRAM
C3/5A6D: A01700  LDY #$0017     ; Letters: 23
C3/5A70: A28B9E  LDX #$9E8B     ; 7E/9E8B
C3/5A73: 8E8121  STX $2181      ; Set WRAM LBs
C3/5A76: A9FF    LDA #$FF       ; Space char
C3/5A78: 8D8021  STA $2180      ; Add to string
C3/5A7B: 88      DEY            ; One less left
C3/5A7C: D0FA    BNE $5A78      ; Loop till last
C3/5A7E: 9C8021  STZ $2180      ; End string
C3/5A81: 4CD97F  JMP $7FD9      ; Draw 23 spaces

At the bolded line, C3/5A56, I jump to an empty spot in the C3 bank to try and implement the Esper MP cost code in some measure. Here's the entirety of that code, but I don't use all of it.

Code:
Draw esper's name and MP cost
C3/5509: A5E6    LDA $E6        ; BG1 write row
C3/550B: 1A      INC A          ; Go 1 row down
C3/550C: 209F80  JSR $809F      ; Compute map ptr
C3/550F: C220    REP #$20       ; 16-bit A
C3/5511: 8A      TXA            ; ...
C3/5512: 8F899E7E STA $7E9E89    ; Set position
C3/5516: E220    SEP #$20       ; 8-bit A
C3/5518: 7B      TDC            ; Clear A
C3/5519: A5E5    LDA $E5        ; Esper slot
C3/551B: AA      TAX            ; Index it
C3/551C: BF899D7E LDA $7E9D89,X  ; Esper in slot
C3/5520: C9FF    CMP #$FF       ; None?
C3/5522: F039    BEQ $555D      ; Blank if so
C3/5524: 207455  JSR $5574      ; Choose palette
C3/5527: 206784  JSR $8467      ; Load name
C3/552A: 7B      TDC            ; ...
C3/552B: A5E5    LDA $E5        ; Esper slot
C3/552D: AA      TAX            ; Index it
C3/552E: BF899D7E LDA $7E9D89,X  ; Esper in slot
C3/5532: 18      CLC            ; Prepare ADC
C3/5533: 6936    ADC #$36       ; Get attack ID
C3/5535: 200D51  JSR $510D      ; Define MP cost
C3/5538: 48      PHA            ; Memorize it
C3/5539: A2939E  LDX #$9E93     ; 7E/9E93
C3/553C: 8E8121  STX $2181      ; Set WRAM LBs
C3/553F: A9C7    LDA #$C7       ; Char: "…"
C3/5541: 8D8021  STA $2180      ; Add to string
C3/5544: 68      PLA            ; MP cost
C3/5545: 20E004  JSR $04E0      ; Turn into text
C3/5548: A5F7    LDA $F7        ; Hundreds digit
C3/554A: 8D8021  STA $2180      ; Add to string
C3/554D: A5F8    LDA $F8        ; Tens digit
C3/554F: 8D8021  STA $2180      ; Add to string
C3/5552: A5F9    LDA $F9        ; Ones digit
C3/5554: 8D8021  STA $2180      ; Add to string
C3/5557: 9C8021  STZ $2180      ; End string
C3/555A: 4CD97F  JMP $7FD9      ; Draw string

Unfortunately these efforts have been unsuccessful, the ID for the Espers isn't called properly and the code defaults to Ramuh's MP costs for all the Espers.

Does anyone have an idea for what to do?