Patch: Restored Ability Names (Update)
02-19-2016, 07:38 PM
(This post was last modified: 11-01-2023, 03:15 PM by SilentEnigma.)
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:
This ought to make it much simpler for people to apply Angelo's patch and use it in their personal projects.
Additional modifications:
New in version 2.x:
See the readme and name comparison doc for more details.
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.
- C2/ADE0 - C2/AF10 for status effects
- E6/FBAD - E6/FBFC for in-battle Magitek menu items
- F2 bank for just about everything else.
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.
The following 5 users say Thank You to SilentEnigma for this post:
• DrMeat (09-16-2016), FF6Fanatic (06-19-2016), Gi Nattak (02-29-2016), Kusanagi_999 (10-28-2020),SenioritaAeslnd (03-09-2016)
• DrMeat (09-16-2016), FF6Fanatic (06-19-2016), Gi Nattak (02-29-2016), Kusanagi_999 (10-28-2020),
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.
02-20-2016, 08:32 PM
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!
If you want to update the hosted file, the updated patch can be found here. Thanks!
03-13-2016, 08:39 PM
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...
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.
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...
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.
Step forward, spriters! We are also responsible to make hacks look new and fresh, we are no less important than code or ASM hackers! CHARGE!!
(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
03-13-2016, 10:00 PM
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
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
Step forward, spriters! We are also responsible to make hacks look new and fresh, we are no less important than code or ASM hackers! CHARGE!!
03-16-2016, 09:25 PM
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!
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!
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.
04-17-2016, 01:08 AM
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.
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.
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.
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?
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?
« Next Oldest | Next Newest »
Users browsing this thread: 1 Guest(s)