Difference between revisions of "Formula 64 or Jump Base XA / YA"
Jump to navigation
Jump to search
m |
|||
Line 1: | Line 1: | ||
− | + | No Parameters - Returns Nothing | |
− | 00185e94: 3c038019 lui r3,0x8019 | + | |
− | 00185e98: 906338d8 lbu r3,0x38d8(r3) | + | 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 | + | - Fists : XA = PA and YA = PA*Brave% |
− | 00185ea4: 00431021 addu r2,r2,r3 | + | - Else : XA = PA and YA = WP |
− | 00185ea8: 00021080 sll r2,r2,0x02 | + | -------------------------------------------------------------------------------- |
− | 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) | + | 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 | + | 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) | + | 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) | + | 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 | + | 00185ec4: 00000000 nop | |
− | 00185ee0: 00431021 addu r2,r2,r3 | + | 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 | + | 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) | + | 00185ed8: 00000000 nop | |
− | 00185ef4: 00000000 nop | + | 00185edc: 00031040 sll r2,r3,0x01 |{{f/std|PA * 2}} |
− | 00185ef8: 90420036 lbu r2,0x0036(r2) | + | 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) | + | 00185ee8: 00021043 sra r2,r2,0x01 |{{f/std|<nowiki>r2 = Attacker's PA * 3 / 2</nowiki>}} |
− | 00185f04: 14800018 bne r4,r0,0x00185f68 | + | 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) | + | 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) | + | 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) | + | 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 | + | 00185f0c: 3c028019 lui r2,0x8019 | |
− | 00185f28: 00001812 mflo 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 | + | 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 | + | 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 | + | 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) | + | 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) | + | 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) | + | 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 | + | 0018ac54: [[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)