Difference between revisions of "Level up/down ability"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with " Level up/Down (ability) 0018c85c: 3c028019 lui r2,0x8019 0018c860: 8c422d90 lw r2,0x2d90(r2) target action 0018c864: 27bdffe8 addiu r29,r29,0xffe8 0018c868: afbf0010 sw ...")
 
m
 
Line 1: Line 1:
  Level up/Down (ability)
+
  No parameters
  0018c85c: 3c028019 lui r2,0x8019
+
  0018c860: 8c422d90 lw r2,0x2d90(r2) target action
+
Returns r2 = 0x01 if there is Lv alteration special flag (malus or bonus)
  0018c864: 27bdffe8 addiu r29,r29,0xffe8
+
        r2 = 0x00 if current action doesn't modify Unit Lv
  0018c868: afbf0010 sw r31,0x0010(r29)
+
---------------------------------------------------------------------------------
  0018c86c: 94430010 lhu r3,0x0010(r2) special flag
+
  0018c85c: 3c028019 lui r2,0x8019           |
  0018c870: 00000000 nop
+
  0018c860: 8c422d90 lw r2,0x2d90(r2)         |{{f/adr|Target Current Action (TCA) data pointer}}
  0018c874: 30620080 andi r2,r3,0x0080 level change byte
+
  0018c864: 27bdffe8 addiu r29,r29,-0x0018    |
  0018c878: 1040000c beq r2,r0,0x0018c8ac branch if not
+
  0018c868: afbf0010 sw r31,0x0010(r29)       |
  0018c87c: 30620100 andi r2,r3,0x0100 r2=81 if -1 level
+
  0018c86c: 94430010 lhu r3,0x0010(r2)       |{{f/load|Load TCA Specials flags}}
  0018c880: 3c028019 lui r2,0x8019
+
  0018c870: 00000000 nop                     |
  0018c884: 8c422d98 lw r2,0x2d98(r2) target data
+
  0018c874: 30620080 andi r2,r3,0x0080       |{{f/std|Check for Lv Bonus}}
  0018c888: 00000000 nop
+
  0018c878: 1040000c beq r2,r0,0x0018c8ac     {{f/Cond|If Lv bonus special flag is ON}}
  0018c88c: 90420022 lbu r2,0x0022(r2) load level
+
  0018c87c: 30620100 andi r2,r3,0x0100       |{{f/std|Check for Lv Malus}}
  0018c890: 00000000 nop
+
  0018c880: 3c028019 lui r2,0x8019               |{{f/std|}}
  0018c894: 24430001 addiu r3,r2,0x0001 lvl++
+
  0018c884: 8c422d98 lw r2,0x2d98(r2)             |{{f/adr|Target data pointer}}
  0018c898: 28620064 slti r2,r3,0x0064 set if less than 100
+
  0018c888: 00000000 nop                         |
  0018c89c: 1440000e bne r2,r0,0x0018c8d8 skip if lvl<100?
+
  0018c88c: 90420022 lbu r2,0x0022(r2)           |{{f/load|Load Target Lv}}
  0018c8a0: 00002821 addu r5,r0,r0
+
  0018c890: 00000000 nop                         |
  0018c8a4: 08063236 j 0x0018c8d8
+
  0018c894: 24430001 addiu r3,r2,0x0001           |{{f/std|<nowiki>r3 = Target Lv + 1</nowiki>}}
  0018c8a8: 34030063 ori r3,r0,0x0063 r3=99
+
  0018c898: 28620064 slti r2,r3,0x0064           |{{f/std|<nowiki>r2 = 0x01 if Target Lv < 100</nowiki>}}
  0018c8ac: 10400018 beq r2,r0,0x0018c910
+
  0018c89c: 1440000e bne r2,r0,0x0018c8d8         {{f/Cond|If Target new Lv is > 99}} /Else branch and store r3 as new Lv
  0018c8b0: 00001021 addu r2,r0,r0
+
  0018c8a0: 00002821 addu r5,r0,r0               |{{f/std|<nowiki>r5 = 0x00 (for Lv up routine)</nowiki>}}
  0018c8b4: 3c028019 lui r2,0x8019
+
  0018c8a4: 08063236 j 0x0018c8d8                     {{f/jump|jump and force unit Lv to 99}}
  0018c8b8: 8c422d98 lw r2,0x2d98(r2) target data
+
  0018c8a8: 34030063 ori r3,r0,0x0063                 |{{f/std|<nowiki>r3 = 99</nowiki>}}
  0018c8bc: 00000000 nop
+
  0018c8ac: 10400018 beq r2,r0,0x0018c910     {{f/Cond|If Lv Malus special flag is ON}} /Else branch to END
  0018c8c0: 90420022 lbu r2,0x0022(r2) load level
+
  0018c8b0: 00001021 addu r2,r0,r0           |{{f/std|<nowiki>r2 = 0x00</nowiki>}}
  0018c8c4: 00000000 nop
+
  0018c8b4: 3c028019 lui r2,0x8019               |{{f/std|}}
  0018c8c8: 2443ffff addiu r3,r2,0xffff -1 level
+
  0018c8b8: 8c422d98 lw r2,0x2d98(r2)             |{{f/adr|Target data pointer}}
  0018c8cc: 1c600002 bgtz r3,0x0018c8d8
+
  0018c8bc: 00000000 nop                         |
  0018c8d0: 34050001 ori r5,r0,0x0001
+
  0018c8c0: 90420022 lbu r2,0x0022(r2)           |{{f/load|Load Target Lv}}
  0018c8d4: 34030001 ori r3,r0,0x0001
+
  0018c8c4: 00000000 nop                         |
  0018c8d8: 3c028019 lui r2,0x8019
+
  0018c8c8: 2443ffff addiu r3,r2,0xffff           |{{f/std|<nowiki>r3 = Target Lv - 1</nowiki>}}
  0018c8dc: 8c42f5fc lw r2,-0x0a04(r2) load????
+
  0018c8cc: 1c600002 bgtz r3,0x0018c8d8           {{f/Cond|If Target new Lv is < 1}}
  0018c8e0: 00000000 nop
+
  0018c8d0: 34050001 ori r5,r0,0x0001             |{{f/std|<nowiki>r5 = 0x01</nowiki>}}
  0018c8e4: 1440000a bne r2,r0,0x0018c910 skip if????
+
  0018c8d4: 34030001 ori r3,r0,0x0001                 |{{f/std|Force r3 to 1 (Lv can't be 0)}}
  0018c8e8: 34020001 ori r2,r0,0x0001
+
  0018c8d8: 3c028019 lui r2,0x8019           |{{f/std|}}
  0018c8ec: 3c028019 lui r2,0x8019
+
  0018c8dc: 8c42f5fc lw r2,-0x0a04(r2)       |{{f/adr|Load Action State}}  0x8018f5fc
  0018c8f0: 8c422d98 lw r2,0x2d98(r2) target data
+
  0018c8e0: 00000000 nop                     |
  0018c8f4: 00000000 nop
+
  0018c8e4: 1440000a bne r2,r0,0x0018c910     {{f/Cond|If Action is been executed}} / Avoid if preview or AI simulation
  0018c8f8: a0430022 sb r3,0x0022(r2) store level
+
  0018c8e8: 34020001 ori r2,r0,0x0001         |{{f/std|<nowiki>r2 = 0x01</nowiki>}}
  0018c8fc: 3c048019 lui r4,0x8019
+
  0018c8ec: 3c028019 lui r2,0x8019               |{{f/std|}}
  0018c900: 8c842d98 lw r4,0x2d98(r4) target data
+
  0018c8f0: 8c422d98 lw r2,0x2d98(r2)             |{{f/adr|Target data pointer}}
  0018c904: 0c017684 jal 0x0005da10 level up section
+
  0018c8f4: 00000000 nop                         |
  0018c908: 00000000 nop
+
  0018c8f8: a0430022 sb r3,0x0022(r2)             |{{f/store|Store new Lv}}
  0018c90c: 34020001 ori r2,r0,0x0001
+
  0018c8fc: 3c048019 lui r4,0x8019               |
  0018c910: 8fbf0010 lw r31,0x0010(r29)
+
  0018c900: 8c842d98 lw r4,0x2d98(r4)             |{{f/adr|<nowiki>r4 = Target data pointer</nowiki>}}
 +
  0018c904: 0c017684 jal 0x0005da10               |{{f/jal|Level_Up_Section|Level_Up_Section}}
 +
  0018c908: 00000000 nop                         |
 +
  0018c90c: 34020001 ori r2,r0,0x0001             |{{f/std|<nowiki>r2 = 0x01</nowiki>}}
 +
  0018c910: 8fbf0010 lw r31,0x0010(r29)       END
 
  0018c914: 27bd0018 addiu r29,r29,0x0018
 
  0018c914: 27bd0018 addiu r29,r29,0x0018
 
  0018c918: 03e00008 jr r31
 
  0018c918: 03e00008 jr r31
 
  0018c91c: 00000000 nop
 
  0018c91c: 00000000 nop
 +
=== Return location ===
 +
'''Battle.bin'''
 +
0018c244: [[Attack_Finalisation_%26_Reaction_Flagging]]

Latest revision as of 20:16, 20 November 2022

No parameters

Returns r2 = 0x01 if there is Lv alteration special flag (malus or bonus)
        r2 = 0x00 if current action doesn't modify Unit Lv
---------------------------------------------------------------------------------
0018c85c: 3c028019 lui r2,0x8019            |
0018c860: 8c422d90 lw r2,0x2d90(r2)         |Target Current Action (TCA) data pointer
0018c864: 27bdffe8 addiu r29,r29,-0x0018    |
0018c868: afbf0010 sw r31,0x0010(r29)       |
0018c86c: 94430010 lhu r3,0x0010(r2)        |Load TCA Specials flags
0018c870: 00000000 nop                      |
0018c874: 30620080 andi r2,r3,0x0080        |Check for Lv Bonus
0018c878: 1040000c beq r2,r0,0x0018c8ac     #If Lv bonus special flag is ON
0018c87c: 30620100 andi r2,r3,0x0100        |Check for Lv Malus
0018c880: 3c028019 lui r2,0x8019                |
0018c884: 8c422d98 lw r2,0x2d98(r2)             |Target data pointer
0018c888: 00000000 nop                          |
0018c88c: 90420022 lbu r2,0x0022(r2)            |Load Target Lv
0018c890: 00000000 nop                          |
0018c894: 24430001 addiu r3,r2,0x0001           |r3 = Target Lv + 1
0018c898: 28620064 slti r2,r3,0x0064            |r2 = 0x01 if Target Lv < 100
0018c89c: 1440000e bne r2,r0,0x0018c8d8         #If Target new Lv is > 99 /Else branch and store r3 as new Lv
0018c8a0: 00002821 addu r5,r0,r0                |r5 = 0x00 (for Lv up routine)
0018c8a4: 08063236 j 0x0018c8d8                     >>jump and force unit Lv to 99
0018c8a8: 34030063 ori r3,r0,0x0063                 |r3 = 99
0018c8ac: 10400018 beq r2,r0,0x0018c910     #If Lv Malus special flag is ON /Else branch to END
0018c8b0: 00001021 addu r2,r0,r0            |r2 = 0x00
0018c8b4: 3c028019 lui r2,0x8019                |
0018c8b8: 8c422d98 lw r2,0x2d98(r2)             |Target data pointer
0018c8bc: 00000000 nop                          |
0018c8c0: 90420022 lbu r2,0x0022(r2)            |Load Target Lv
0018c8c4: 00000000 nop                          |
0018c8c8: 2443ffff addiu r3,r2,0xffff           |r3 = Target Lv - 1
0018c8cc: 1c600002 bgtz r3,0x0018c8d8           #If Target new Lv is < 1
0018c8d0: 34050001 ori r5,r0,0x0001             |r5 = 0x01
0018c8d4: 34030001 ori r3,r0,0x0001                 |Force r3 to 1 (Lv can't be 0)
0018c8d8: 3c028019 lui r2,0x8019            |
0018c8dc: 8c42f5fc lw r2,-0x0a04(r2)        |Load Action State  0x8018f5fc
0018c8e0: 00000000 nop                      |
0018c8e4: 1440000a bne r2,r0,0x0018c910     #If Action is been executed / Avoid if preview or AI simulation
0018c8e8: 34020001 ori r2,r0,0x0001         |r2 = 0x01
0018c8ec: 3c028019 lui r2,0x8019                |
0018c8f0: 8c422d98 lw r2,0x2d98(r2)             |Target data pointer
0018c8f4: 00000000 nop                          |
0018c8f8: a0430022 sb r3,0x0022(r2)             |Store new Lv
0018c8fc: 3c048019 lui r4,0x8019                |
0018c900: 8c842d98 lw r4,0x2d98(r4)             |r4 = Target data pointer
0018c904: 0c017684 jal 0x0005da10               |-->Level_Up_Section
0018c908: 00000000 nop                          |
0018c90c: 34020001 ori r2,r0,0x0001             |r2 = 0x01
0018c910: 8fbf0010 lw r31,0x0010(r29)       END
0018c914: 27bd0018 addiu r29,r29,0x0018
0018c918: 03e00008 jr r31
0018c91c: 00000000 nop

Return location

Battle.bin
0018c244: Attack_Finalisation_&_Reaction_Flagging