Users browsing this thread: 1 Guest(s)
A Guide to Ability Learning
(07-10-2020, 10:46 PM)madsiur Wrote:So I have been at this for a week, and I.....have no idea what I'm doing. I appreciate your help on this, but I don't think I made much leeway on this.(07-09-2020, 03:00 PM)Mutteo Wrote: Is there a way to set Dance Learning by Level Up ONLY? I wanted to give this ability to Locke, but I didn't want him to learn them via the Battle Maps.
Yes. You would need to check if the character is Mog in the natural magic/swtech/blitz learning function ($C0A17F) then add some code somewhere where is free space where you would jump to if the character is mog. Basically it would work like natural magic but you have two tables of 8 entries, one for the levels where the dance are learned and one for the dances IDs. You first check mog's level, if it match to one of the levels in the table you load the corresponding dance and turn the corresponding bit of that dance ID in $7E1D4C (in a similar way to $C25EED). You'd also need to NOP $C25EE5-$C25EFA to not learn dances the normal way.
I actually did not know of a NOP command. Honestly I tend to glance over words like BEQ or JSR in the coding. Anyway I was trying to do research on NOP commands and from my observation the byte is $EA. So I started by trying to change the first byte in every code of the Mog Dances, since commands strings I saw started with that byte.
Code:
C2/5EE5: EA 0A 30 LDA $300A
C2/5EE8: EA 16 BMI $5F00
C2/5EEA: EA E2 11 LDX $11E2 (get combat background)
C2/5EED: EA 5B 8E ED LDA $ED8E5B,X (get corresponding dance #)
Of course even if I did manage it correctly, I was unable to figure out how to change the dances to level up. The first problem is adding a new line of code to this
Code:
Who learns what at level up
C0/A182: C900 CMP #$00 (is character Terra? note there's no need for this CMP here)
C0/A184: F010 BEQ $A196 (branch if so)
C0/A186: C906 CMP #$06 (is character Celes?)
C0/A188: F02E BEQ $A1B8 (branch if so)
C0/A18A: C902 CMP #$02 (is character Cyan?)
C0/A18C: F04C BEQ $A1DA (branch if so)
C0/A18E: C905 CMP #$05 (is character Sabin?)
C0/A190: D003 BNE $A195 (branch if not)
C0/A192: 4C01A2 JMP $A201
C0/A195: 60 RTS
Code:
Who learns what at recruitment
C2/61B9: C9 00 CMP #$00 (is it character #0, Terra?)
C2/61C0: C9 06 CMP #$06 (is it character #6, Celes?)
C2/61C7: C9 02 CMP #$02 (if it character #2, Cyan?)
C2/61E3: C9 05 CMP #$05 (is it character #5, Sabin?)
I was able to find Terra's natural magic data at ECE3C0-ECE3DF as well as Celes's, Sabin's, and Cyan's. Using FF3USME I was able to make the comparison about each byte controlling the Level and Magic ID, which was about the only thing I was able to understand, though finding out which line of code is supposed to direct to this code of magic data I couldn't say. Even if I did, I am also left with the issue that Dance Abilities are different from individual spells so I could not find where the index is kept on them.
You mentioned to me the Dance ID is $7E1D4C, but when I went to look for it on HXD, the number was too high. So then I thought maybe I need to subtract $C00000 to it and it's I found the number to be $-41E2B4, and that can't be right.
Sigh, I am the fails...
(07-11-2020, 10:39 PM)GrayShadows Wrote: If dances are listed in the order they're learned, as with Blitz and SwdTech, it's doable with only one 8-entry table of levels at which you learn a new dance. Blitz and SwdTech reference only their level-at-which-learned table in C2, for leveling up after combat, and the recruitment/level averaging code in C0 references that same table and a shared bitfield table (C0/A22C) that you could also use for learning Dances.I think so? I know the dances are organized in the same place in the command window. Of course knowing where anything is located is another story.
« Next Oldest | Next Newest »
Users browsing this thread: 1 Guest(s)