Users browsing this thread: 1 Guest(s)
Runic to Shock

#1
Posts: 367
Threads: 38
Thanks Received: 149
Thanks Given: 96
Joined: Feb 2017
Reputation: 22
Status
None
Hi there. Total noob to Final Fantasy VI hacking, so I apologize if I break an unwritten forum custom here. I just finished an FFT Hack (Final Fantasy Tactics: Emergence), and before I put away my romhacking hat for a little bit, I wanted to do a very quick mod of FFVI as well.

The project is pretty small in scope. I'm essentially just taking the famous "General Leo Edition" hack and applying most of HatZen08's gameplay improvement hacks posted over on Romhacking.net. There are two changes that I'd like to make that the current utilities don't cover though, so I was wondering if someone has already made these. I've tried searching the forums, but haven't come up with anything.

1. Runic to Shock
One of my major changes is giving the 'Runic' ability to Leo, and giving Celes the 'Jump' command as her special ability. This naturally "dummies out" the DragoonBoots, but I would like to change them into a more useful relic. How hard would it be to give the DragoonBoots relic the ability to change 'Runic' into 'Shock', much like the Fake Mustache turns 'Sketch' into 'Control'? Ideally, 'Shock' would do a check for a Runic-enabled weapon as well, but that's not mission critical. Note that there will be no need for an ability that changes 'Attack' into 'Jump', so that can be overwritten if there's a need.

2. Item to Throw
In the General Leo Edition, Shadow dies in Leo's place. I would like to change the now-useless Sprint Shoes into a relic that changes the 'Item' command to 'Throw'. Ideally, this relic would also grant the equipper the "Dog Block"/Interceptor status. Of the two changes, this one is less important for me, so if it's only possible to do one command switch-out, 'Runic'->'Shock' is by far more important.
  Find
Quote  

#2
Posts: 110
Threads: 4
Thanks Received: 15
Thanks Given: 1
Joined: Jan 2012
Reputation: 4
Status
None
Not sure how familiar you are with assembly (of any sort), but both of these will involve some. You'd need to modify the existing swap tables (and probably expand, depending on what else you're doing involving commands) which are found in bank C2, and I think possibly C3.
  Find
Quote  

#3
Posts: 367
Threads: 38
Thanks Received: 149
Thanks Given: 96
Joined: Feb 2017
Reputation: 22
Status
None
(02-18-2017, 07:20 PM)dn Wrote: Not sure how familiar you are with assembly (of any sort), but both of these will involve some. You'd need to modify the existing swap tables (and probably expand, depending on what else you're doing involving commands) which are found in bank C2, and I think possibly C3.

Not familiar at all, but there's no time like the present.
  Find
Quote  

#4
Posts: 3,799
Threads: 270
Thanks Received: 761
Thanks Given: 389
Joined: Oct 2011
Reputation: 63
Status
Tissue-aware
As dn pointed out, to make a replacement, just edit one entry in each of these two table.

Code:
(Data - commands that can be replaced with other commands thanks to Relics)

C2/5452: 05   (Steal)
C2/5453: 0F   (Slot)
C2/5454: 0D   (Sketch)
C2/5455: 02   (Magic)
C2/5456: 00   (Fight)


(Data - commands that can replace above commands due to Relics)

C2/5457: 06   (Capture)
C2/5458: 18   (GP Rain)
C2/5459: 0E   (Control)
C2/545A: 17   (X-Magic)
C2/545B: 16   (Jump)

If you want to add entries, you need to relocate in bank $C2 preferably the two tables and edit the following code. Note that there is a free space block starting at C2/6469 but General Leo Edition maybe use part of it due to patches and such.

Code:
C2/53AB: A9 04        LDA #$04
C2/53AD: 85 EE        STA $EE        (start checking Bit 2 of variable $11D6)
C2/53AF: BF 52 54 C2  LDA $C25452,X  (commands that can be changed FROM)
C2/53B3: C3 01        CMP $01,S      (is current command one of those commands?)
C2/53B5: D0 0D        BNE $53C4      (branch if not)
C2/53B7: AD D6 11     LDA $11D6     (check Battle Effects 1 byte.
                                     Bit 2 = Fight -> Jump, Bit 3 = Magic -> X-Magic,
                                     Bit 4 = Sketch -> Control, Bit 5 = Slot -> GP Rain,
                                     Bit 6 = Steal -> Capture)
                
C2/53BA: 24 EE        BIT $EE
C2/53BC: F0 06        BEQ $53C4
C2/53BE: BF 57 54 C2  LDA $C25457,X   (commands to change TO)
C2/53C2: 83 01        STA $01,S       (replace command on stack)

To make a proper expansion, you'll need an item data bit. The existing swaps are on byte 10 ($11D6) but there is a free spot on byte 11 ($11D7:1). You'll need to tweak the above code to check for $11D7 as well:

Code:
(battle effects 1 and "status effects 2".  latter is nothing to do with status ailments.
11D6:
01: Increase Preemptive Atk chance  10: Sketch -> Control
02: Prevent Back/Pincer attacks     20: Slot -> GP Rain
    (this won't work for battles
     where back/pincer are forced)
04: Fight -> Jump                   40: Steal -> Capture
08: Magic -> X-Magic                80: Jump continuously

11D7:
01: Increase Steal Rate         10: 100% Hit Rate
02: --                          20: Halve MP Consumption
04: Increase Sketch Rate        40: Reduce MP Consumption to 1
08: Increase Control Rate       80: Raise Vigor
  Find
Quote  
[-] The following 1 user says Thank You to madsiur for this post:
  • PowerPanda (02-21-2017)

#5
Posts: 141
Threads: 1
Thanks Received: 54
Thanks Given: 10
Joined: Oct 2015
Reputation: 16
Status
None
$11D7 Bit 1 isn't free; it's reserved for single/double Earring determination.
Quote  

#6
Posts: 367
Threads: 38
Thanks Received: 149
Thanks Given: 96
Joined: Feb 2017
Reputation: 22
Status
None
So let's say I were to just replace "Fight" with "Runic". Would that ruin the Offering "X-Fight"? I don't see it anywhere in the tables.

Well... I feel like I jumped in the deep end here. Tongue

Let's assume I'm not doing the Item->Throw, since that is a level beyond where I want to go. If I were to ONLY do the first patch, as far as I can tell I would just need to edit the following lines:

Quote:Change
C2/5456: 00   (Fight)
To
C2/5456: 11   (Runic)

and Change
C2/545B: 16   (Jump)
to
C2/545B: 27   (Shock)

C2/53B7 and 11D6 just reference the change above, so since I'm editing the DragoonBoots, they should keep their coding from the Fight->Jump command and not need to be edited, right?

So that's a 4-bit change to the rom. I know WHAT I need to change, but I am lost as to how to do it. Would anyone be willing to help with this one? It seems awfully silly to go through the steep learning curve of assembly for such a small change. (note: I'm still trying and looking this up, but help would be appreciated.)

Nevermind, I got it. I was struggling because I couldn't see the code itself. Once I found the SNES Professional ASM Development Kit, and was actually able to SEE the code, it was a pretty easy switch. It just took me almost 2 hours to find that program. The DragonBoots relic now changes Runic to Shock. I'll put out an IPS after a bit of testing.

(for posterity's sake, I was incorrect in the lines I was changing. I forgot to convert to hexadecimal. The changes should be:
Quote:Change
C2/5456: 00   (Fight)
To
C2/5456: 0B   (Runic)

and Change
C2/545B: 16   (Jump)
to
C2/545B: 1B   (Shock)
  Find
Quote  
[-] The following 1 user says Thank You to PowerPanda for this post:
  • Turbotastic (02-20-2017)

#7
Posts: 89
Threads: 11
Thanks Received: 17
Thanks Given: 55
Joined: Dec 2015
Reputation: 3
Status
Debrave
You figured it out!

While there was a similar thread about Runic and Shock, your explanation is also very helpful and clear.

Also, thank you for the link to the tool.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite