Users browsing this thread: 1 Guest(s)
Patch: Restored Ability Names (Update)

#1
Posts: 22
Threads: 4
Thanks Received: 15
Thanks Given: 5
Joined: Feb 2016
Reputation: 0
Status
None
author: silentenigma
Download
website

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:

 - Moves 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)
 - Realigns 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.

I've also included a version with a few 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 appearance of class names has been revamped 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 to match with actual recurring FF classes.

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,
and the 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.
Quote  
[-] The following 4 users say Thank You to silentenigma for this post:
  • DrMeat (09-16-2016), FF6Fanatic (06-19-2016), Gi Nattak (02-29-2016), SenioritaAeslnd (03-09-2016)

#2
Posts: 3,674
Threads: 267
Thanks Received: 700
Thanks Given: 299
Joined: Oct 2011
Reputation: 60
Status
Faith
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.
  Find
Quote  

#3
Posts: 22
Threads: 4
Thanks Received: 15
Thanks Given: 5
Joined: Feb 2016
Reputation: 0
Status
None
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!
Quote  

#4
Posts: 378
Threads: 94
Thanks Received: 23
Thanks Given: 30
Joined: Jul 2013
Reputation: 11
Status
Charmed
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.


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!!
Quote  

#5
Posts: 3,674
Threads: 267
Thanks Received: 700
Thanks Given: 299
Joined: Oct 2011
Reputation: 60
Status
Faith
(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
  Find
Quote  

#6
Posts: 378
Threads: 94
Thanks Received: 23
Thanks Given: 30
Joined: Jul 2013
Reputation: 11
Status
Charmed
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


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!!
Quote  

#7
Posts: 22
Threads: 4
Thanks Received: 15
Thanks Given: 5
Joined: Feb 2016
Reputation: 0
Status
None
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!
Quote  

#8
Posts: 245
Threads: 18
Thanks Received: 109
Thanks Given: 42
Joined: Mar 2014
Reputation: 8
Status
None
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.
  Find
Quote  

#9
Posts: 22
Threads: 4
Thanks Received: 15
Thanks Given: 5
Joined: Feb 2016
Reputation: 0
Status
None
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.
Quote  

#10
Posts: 634
Threads: 12
Thanks Received: 33
Thanks Given: 81
Joined: Jan 2016
Reputation: 6
Status
None
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?
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite