Difference between revisions of "Formula 64 or Jump Base XA / YA"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
Line 1: Line 1:
  Formula 64 or Jump Base XA / YA
+
  No Parameters - Returns Nothing
  00185e94: 3c038019 lui r3,0x8019
+
  00185e98: 906338d8 lbu r3,0x38d8(r3) Load Used Weapon
+
Set Ability XA and YA depending on Target weapon
  00185e9c: 00000000 nop
+
  - Spear : XA = 150% of PA and YA = WP
  00185ea0: 00031040 sll r2,r3,0x01 ID * 2
+
  - Fists : XA = PA and YA = PA*Brave%
  00185ea4: 00431021 addu r2,r2,r3 ID * 3
+
  - Else : XA = PA and YA = WP
  00185ea8: 00021080 sll r2,r2,0x02 ID * 12
+
--------------------------------------------------------------------------------
  00185eac: 3c018006 lui r1,0x8006
+
  00185e94: 3c038019 lui r3,0x8019           |
  00185eb0: 00220821 addu r1,r1,r2
+
  00185e98: 906338d8 lbu r3,0x38d8(r3)       |{{f/load|<nowiki>r3 = Current Ability used Weapon ID</nowiki>}}
  00185eb4: 90242ebd lbu r4,0x2ebd(r1) Used Weapon Type
+
  00185e9c: 00000000 nop                     |
  00185eb8: 3402000f ori r2,r0,0x000f
+
  00185ea0: 00031040 sll r2,r3,0x01           |{{f/std|ID * 2}}
  00185ebc: 308300ff andi r3,r4,0x00ff
+
  00185ea4: 00431021 addu r2,r2,r3           |{{f/std|ID * 3}}
  00185ec0: 1462000a bne r3,r2,0x00185eec Branch if not a Spear
+
  00185ea8: 00021080 sll r2,r2,0x02           |{{f/std|ID * 12}}
  00185ec4: 00000000 nop
+
  00185eac: 3c018006 lui r1,0x8006           |
  00185ec8: 3c028019 lui r2,0x8019
+
  00185eb0: 00220821 addu r1,r1,r2           |{{f/std|<nowiki>r1 = 0x80060000 + Weapon offset</nowiki>}}
  00185ecc: 8c422d94 lw r2,0x2d94(r2) Load Attacker's stats
+
  00185eb4: 90242ebd lbu r4,0x2ebd(r1)       |{{f/load|<nowiki>44 = Used Weapon Item type </nowiki>}} {{f/std| 0x800622b8 + 0x05 + Weapon offset}}
  00185ed0: 00000000 nop
+
  00185eb8: 3402000f ori r2,r0,0x000f         |{{f/std|<nowiki>r2 = 0x0f</nowiki>}}
  00185ed4: 90430036 lbu r3,0x0036(r2) Load PA
+
  00185ebc: 308300ff andi r3,r4,0x00ff       |{{f/std|<nowiki>r3 = Weapon Item Type (byte)</nowiki>}}
  00185ed8: 00000000 nop
+
  00185ec0: 1462000a bne r3,r2,0x00185eec     {{f/Cond|If Weapon is a Spear}}
  00185edc: 00031040 sll r2,r3,0x01 PA * 2
+
  00185ec4: 00000000 nop                         |
  00185ee0: 00431021 addu r2,r2,r3 PA * 3
+
  00185ec8: 3c028019 lui r2,0x8019               |
  00185ee4: 080617bf j 0x00185efc
+
  00185ecc: 8c422d94 lw r2,0x2d94(r2)             |{{f/adr|<nowiki>r2 = Attacker data pointer</nowiki>}}
  00185ee8: 00021043 sra r2,r2,0x01 PA * 3 / 2
+
  00185ed0: 00000000 nop                         |
  00185eec: 3c028019 lui r2,0x8019
+
  00185ed4: 90430036 lbu r3,0x0036(r2)           |{{f/load|<nowiki>r3 = Attacker's PA</nowiki>}}
  00185ef0: 8c422d94 lw r2,0x2d94(r2) Load Attacker's Stats
+
  00185ed8: 00000000 nop                         |
  00185ef4: 00000000 nop
+
  00185edc: 00031040 sll r2,r3,0x01               |{{f/std|PA * 2}}
  00185ef8: 90420036 lbu r2,0x0036(r2) Load PA
+
  00185ee0: 00431021 addu r2,r2,r3               |{{f/std|PA * 3}}
  00185efc: 3c018019 lui r1,0x8019
+
  00185ee4: 080617bf j 0x00185efc                 {{f/jump|Jump to store XA}}
  00185f00: a42238ce sh r2,0x38ce(r1) Store XA
+
  00185ee8: 00021043 sra r2,r2,0x01               |{{f/std|<nowiki>r2 = Attacker's PA * 3 / 2</nowiki>}}
  00185f04: 14800018 bne r4,r0,0x00185f68 Branch if the Attacker is holding  a weapon?
+
  00185eec: 3c028019 lui r2,0x8019           {{f/Cond|Else : Weapon is not a Spear}}
  00185f08: 00000000 nop
+
  00185ef0: 8c422d94 lw r2,0x2d94(r2)             |{{f/adr|<nowiki>r2 = Attacker data pointer</nowiki>}}
  00185f0c: 3c028019 lui r2,0x8019
+
  00185ef4: 00000000 nop                         |
  00185f10: 8c422d94 lw r2,0x2d94(r2) Load Attacker's stats
+
  00185ef8: 90420036 lbu r2,0x0036(r2)           |{{f/load|<nowiki>r3 = Attacker's PA</nowiki>}}
  00185f14: 3c038019 lui r3,0x8019
+
  00185efc: 3c018019 lui r1,0x8019           |
  00185f18: 846338ce lh r3,0x38ce(r3) Load XA
+
  00185f00: a42238ce sh r2,0x38ce(r1)         |{{f/store|<nowiki>Set Ability XA = PA or 150% of PA (if weapon is a spear)</nowiki>}}
  00185f1c: 90420024 lbu r2,0x0024(r2) Load Brave
+
  00185f04: 14800018 bne r4,r0,0x00185f68     {{f/Cond|If Weapon type is 0x00 (fists)}}
  00185f20: 00000000 nop
+
  00185f08: 00000000 nop                         |
  00185f24: 00620018 mult r3,r2 Brave * PA
+
  00185f0c: 3c028019 lui r2,0x8019               |
  00185f28: 00001812 mflo r3 Move to R3
+
  00185f10: 8c422d94 lw r2,0x2d94(r2)             |{{f/adr|<nowiki>r2 = Attacker data pointer</nowiki>}}
  00185f2c: 3c0251eb lui r2,0x51eb
+
  00185f14: 3c038019 lui r3,0x8019               |
  00185f30: 3442851f ori r2,r2,0x851f
+
  00185f18: 846338ce lh r3,0x38ce(r3)             |{{f/load|<nowiki>r3 = Ability XA</nowiki>}}
  00185f34: 00620018 mult r3,r2 PA * Brave * .33333334
+
  00185f1c: 90420024 lbu r2,0x0024(r2)           |{{f/load|<nowiki>r2 = Attacker's Current Brave</nowiki>}}
  00185f38: 3c048019 lui r4,0x8019
+
  00185f20: 00000000 nop                         |
  00185f3c: 248438d0 addiu r4,r4,0x38d0 Load XA
+
  00185f24: 00620018 mult r3,r2                   |{{f/std|Brave * PA}}
  00185f40: 00031fc3 sra r3,r3,0x1f
+
  00185f28: 00001812 mflo r3                     |{{f/std|<nowiki>r3 = Brave * PA</nowiki>}}
  00185f44: 00001010 mfhi r2 Move to R2
+
  00185f2c: 3c0251eb lui r2,0x51eb               |
  00185f48: 00021143 sra r2,r2,0x05
+
  00185f30: 3442851f ori r2,r2,0x851f             |{{f/std|<nowiki>r2 = 0x51eb851f</nowiki>}} {{f/std|<nowiki> = 0,32*2^32</nowiki>}}
  00185f4c: 00431823 subu r3,r2,r3
+
  00185f34: 00620018 mult r3,r2                   |{{f/std|PA * Brave * 0,32 * 2^32}}
  00185f50: 00031400 sll r2,r3,0x10
+
  00185f38: 3c048019 lui r4,0x8019               |
  00185f54: 14400008 bne r2,r0,0x00185f78
+
  00185f3c: 248438d0 addiu r4,r4,0x38d0           |{{f/adr|<nowiki>r4 = Current Ability YA data pointer</nowiki>}}
  00185f58: a4830000 sh r3,0x0000(r4) Store XA
+
  00185f40: 00031fc3 sra r3,r3,0x1f               |{{f/std|<nowiki>r3 = highest bit of r3 (used four rounding - should be 0)</nowiki>}}
  00185f5c: 24620001 addiu r2,r3,0x0001
+
  00185f44: 00001010 mfhi r2                     |{{f/std|<nowiki>r2 = PA * Brave * 0,32</nowiki>}}
  00185f60: 080617de j 0x00185f78
+
  00185f48: 00021143 sra r2,r2,0x05               |{{f/std|<nowiki>r2 = PA * Brave /100        (r2/32)</nowiki>}}
  00185f64: a4820000 sh r2,0x0000(r4)
+
  00185f4c: 00431823 subu r3,r2,r3               |{{f/std|<nowiki>r3 = PA * Brave/100 rounded</nowiki>}}
  00185f68: 3c028019 lui r2,0x8019
+
  00185f50: 00031400 sll r2,r3,0x10               |{{f/std|Move value in upper register part}}
  00185f6c: 90423902 lbu r2,0x3902(r2) Load WP
+
  00185f54: 14400008 bne r2,r0,0x00185f78         {{f/Cond|<nowiki>If PA*Brave% = 0x00</nowiki>}} /Else branch to END
  00185f70: 3c018019 lui r1,0x8019
+
  00185f58: a4830000 sh r3,0x0000(r4)             |{{f/store|<nowiki>Set Current Ability YA = PA*Brave%</nowiki>}}
  00185f74: a42238d0 sh r2,0x38d0(r1) Store YA
+
  00185f5c: 24620001 addiu r2,r3,0x0001               |{{f/std|<nowiki>r2 = 0x01</nowiki>}}
  00185f78: 03e00008 jr r31
+
  00185f60: 080617de j 0x00185f78                     {{f/jump|Jump to END}}
 +
  00185f64: a4820000 sh r2,0x0000(r4)                 |{{f/store|<nowiki>Set Current Ability YA = 0x01</nowiki>}}
 +
  00185f68: 3c028019 lui r2,0x8019           {{f/Cond|Else : Weapon is not fists}}
 +
  00185f6c: 90423902 lbu r2,0x3902(r2)       |{{f/load|<nowiki>r2 = Current Ability used Weapon Power (WP)</nowiki>}}
 +
  00185f70: 3c018019 lui r1,0x8019           |
 +
  00185f74: a42238d0 sh r2,0x38d0(r1)         |{{f/store|<nowiki>Set Current Ability YA = WP</nowiki>}}
 +
  00185f78: 03e00008 jr r31
 
  00185f7c: 00000000 nop
 
  00185f7c: 00000000 nop
 
+
=== Return locations ===
 
+
'''Battle.bin'''
== Return Locations ==
+
  0018ac54: [[64_Dmg_(PA_*_WP);_if_using_Spear_(PA_*_3/2_*_WP);_if_weaponless_(PA_*_Brave_/100_*_WP)]]
 
 
*Battle.bin
 
  0018ac4c: [[64 Dmg_(PA * WP); if using Spear (PA * 3/2 * WP); if weaponless (PA * Brave /100 * WP)]]
 

Revision as of 18:46, 28 April 2022

No Parameters - Returns Nothing

Set Ability XA and YA depending on Target weapon
 - Spear : XA = 150% of PA and YA = WP
 - Fists : XA = PA and YA = PA*Brave%
 - Else : XA = PA and YA = WP
--------------------------------------------------------------------------------
00185e94: 3c038019 lui r3,0x8019            |
00185e98: 906338d8 lbu r3,0x38d8(r3)        |r3 = Current Ability used Weapon ID
00185e9c: 00000000 nop                      |
00185ea0: 00031040 sll r2,r3,0x01           |ID * 2
00185ea4: 00431021 addu r2,r2,r3            |ID * 3
00185ea8: 00021080 sll r2,r2,0x02           |ID * 12
00185eac: 3c018006 lui r1,0x8006            |
00185eb0: 00220821 addu r1,r1,r2            |r1 = 0x80060000 + Weapon offset
00185eb4: 90242ebd lbu r4,0x2ebd(r1)        |44 = Used Weapon Item type   0x800622b8 + 0x05 + Weapon offset
00185eb8: 3402000f ori r2,r0,0x000f         |r2 = 0x0f
00185ebc: 308300ff andi r3,r4,0x00ff        |r3 = Weapon Item Type (byte)
00185ec0: 1462000a bne r3,r2,0x00185eec     #If Weapon is a Spear
00185ec4: 00000000 nop                          |
00185ec8: 3c028019 lui r2,0x8019                |
00185ecc: 8c422d94 lw r2,0x2d94(r2)             |r2 = Attacker data pointer
00185ed0: 00000000 nop                          |
00185ed4: 90430036 lbu r3,0x0036(r2)            |r3 = Attacker's PA
00185ed8: 00000000 nop                          |
00185edc: 00031040 sll r2,r3,0x01               |PA * 2
00185ee0: 00431021 addu r2,r2,r3                |PA * 3
00185ee4: 080617bf j 0x00185efc                 >>Jump to store XA
00185ee8: 00021043 sra r2,r2,0x01               |r2 = Attacker's PA * 3 / 2
00185eec: 3c028019 lui r2,0x8019            #Else : Weapon is not a Spear
00185ef0: 8c422d94 lw r2,0x2d94(r2)             |r2 = Attacker data pointer
00185ef4: 00000000 nop                          |
00185ef8: 90420036 lbu r2,0x0036(r2)            |r3 = Attacker's PA
00185efc: 3c018019 lui r1,0x8019            |
00185f00: a42238ce sh r2,0x38ce(r1)         |Set Ability XA = PA or 150% of PA (if weapon is a spear)
00185f04: 14800018 bne r4,r0,0x00185f68     #If Weapon type is 0x00 (fists)
00185f08: 00000000 nop                          |
00185f0c: 3c028019 lui r2,0x8019                |
00185f10: 8c422d94 lw r2,0x2d94(r2)             |r2 = Attacker data pointer
00185f14: 3c038019 lui r3,0x8019                |
00185f18: 846338ce lh r3,0x38ce(r3)             |r3 = Ability XA
00185f1c: 90420024 lbu r2,0x0024(r2)            |r2 = Attacker's Current Brave
00185f20: 00000000 nop                          |
00185f24: 00620018 mult r3,r2                   |Brave * PA
00185f28: 00001812 mflo r3                      |r3 = Brave * PA
00185f2c: 3c0251eb lui r2,0x51eb                |
00185f30: 3442851f ori r2,r2,0x851f             |r2 = 0x51eb851f  = 0,32*2^32
00185f34: 00620018 mult r3,r2                   |PA * Brave * 0,32 * 2^32
00185f38: 3c048019 lui r4,0x8019                |
00185f3c: 248438d0 addiu r4,r4,0x38d0           |r4 = Current Ability YA data pointer
00185f40: 00031fc3 sra r3,r3,0x1f               |r3 = highest bit of r3 (used four rounding - should be 0)
00185f44: 00001010 mfhi r2                      |r2 = PA * Brave * 0,32
00185f48: 00021143 sra r2,r2,0x05               |r2 = PA * Brave /100         (r2/32)
00185f4c: 00431823 subu r3,r2,r3                |r3 = PA * Brave/100 rounded
00185f50: 00031400 sll r2,r3,0x10               |Move value in upper register part
00185f54: 14400008 bne r2,r0,0x00185f78         #If PA*Brave% = 0x00 /Else branch to END
00185f58: a4830000 sh r3,0x0000(r4)             |Set Current Ability YA = PA*Brave%
00185f5c: 24620001 addiu r2,r3,0x0001               |r2 = 0x01
00185f60: 080617de j 0x00185f78                     >>Jump to END
00185f64: a4820000 sh r2,0x0000(r4)                 |Set Current Ability YA = 0x01
00185f68: 3c028019 lui r2,0x8019            #Else : Weapon is not fists
00185f6c: 90423902 lbu r2,0x3902(r2)        |r2 = Current Ability used Weapon Power (WP)
00185f70: 3c018019 lui r1,0x8019            |
00185f74: a42238d0 sh r2,0x38d0(r1)         |Set Current Ability YA = WP
00185f78: 03e00008 jr r31
00185f7c: 00000000 nop

Return locations

Battle.bin
0018ac54:  64_Dmg_(PA_*_WP);_if_using_Spear_(PA_*_3/2_*_WP);_if_weaponless_(PA_*_Brave_/100_*_WP)