Calculate Targeting for Menu Types

From Final Fantasy Hacktics Wiki
Revision as of 00:09, 28 November 2012 by Choto (talk | contribs) (Created page with " Calculate Targeting for Menu Types 0017aaf8: 27bdffc8 addiu r29,r29,0xffc8 0017aafc: 27a50010 addiu r5,r29,0x0010 r5 = Stack Pointer + 0x10 0017ab00: afbf0034 sw r31,0x0...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Calculate Targeting for Menu Types
0017aaf8: 27bdffc8 addiu r29,r29,0xffc8
0017aafc: 27a50010 addiu r5,r29,0x0010		r5 = Stack Pointer + 0x10
0017ab00: afbf0034 sw r31,0x0034(r29)
0017ab04: afb20030 sw r18,0x0030(r29)
0017ab08: afb1002c sw r17,0x002c(r29)
0017ab0c: 0c01788b jal 0x0005e22c		Transfer Attacker/Self ID? Through Mount Data
0017ab10: afb00028 sw r16,0x0028(r29)
0017ab14: 93a30010 lbu r3,0x0010(r29)		Load Unit's Attacker/Self ID?
0017ab18: 00000000 nop
0017ab1c: 2c620015 sltiu r2,r3,0x0015
0017ab20: 10400042 beq r2,r0,0x 0017ac2c		Branch if Unit doesn't exist
0017ab24: 34110001 ori r17,r0,0x0001		r17 = 1
0017ab28: 000310c0 sll r2,r3,0x03		ID * 8
0017ab2c: 00431023 subu r2,r2,r3		ID * 7
0017ab30: 00021180 sll r2,r2,0x06		ID * 448
0017ab34: 3c038019 lui r3,0x8019
0017ab38: 246308cc addiu r3,r3,0x08cc
0017ab3c: 00432021 addu r4,r2,r3		r4 = Unit's Data Pointer
0017ab40: 90830001 lbu r3,0x0001(r4)		Load Unit's ID
0017ab44: 340200ff ori r2,r0,0x00ff		r2 = FF
0017ab48: 10620038 beq r3,r2,0x 0017ac2c		Branch if Unit doesn't exist
0017ab4c: 34020006 ori r2,r0,0x0006		r2 = 6
0017ab50: 93a3001a lbu r3,0x001a(r29)		Load Unit's ?
0017ab54: 00000000 nop
0017ab58: 14620006 bne r3,r2,0x 0017ab74		Branch if not using an ability with a target-specific animation?
0017ab5c: 00000000 nop
0017ab60: 93a2001b lbu r2,0x001b(r29)		Load Unit's Target ID?
0017ab64: 00000000 nop
0017ab68: 2c420015 sltiu r2,r2,0x0015
0017ab6c: 10400041 beq r2,r0,0x 0017ac74		Branch if Unit doesn't exist
0017ab70: 2402ffff addiu r2,r0,0xffff		r2 = -1
0017ab74: 93a20011 lbu r2,0x0011(r29)		Load Unit's Skillset of Used Ability
0017ab78: 3c018006 lui r1,0x8006
0017ab7c: 00220821 addu r1,r1,r2
0017ab80: 90235cb4 lbu r3,0x5cb4(r1)		Load Ability's Action Menu ID
0017ab84: 00000000 nop
0017ab88: 2c620010 sltiu r2,r3,0x0010
0017ab8c: 1040001e beq r2,r0,0x 0017ac08		Branch if Menu doesn't exist
0017ab90: 00031080 sll r2,r3,0x02		ID * 4
0017ab94: 3c018017 lui r1,0x8017
0017ab98: 00220821 addu r1,r1,r2
0017ab9c: 8c2240a8 lw r2,0x40a8(r1)		Load Menu's Code Pointer
0017aba0: 00000000 nop
0017aba4: 00400008 jr r2
0017aba8: 00000000 nop
  • Default/Monster*
0017abac: 97b00012 lhu r16,0x0012(r29)		Load Unit's Last Attack ID
0017abb0: 0805eb05 j 0x 0017ac14
0017abb4: 34020001 ori r2,r0,0x0001		r2 = 1
  • Item/Weapon Inventory/Attack/Jump/Charge*
0017abb8: 0805eb04 j 0x 0017ac10
0017abbc: 34110002 ori r17,r0,0x0002		r17 = 2; r2 = 1
  • Arithmeticks*
0017abc0: 0c05ed34 jal 0x 0017b4d0		Calculator Routine
0017abc4: 27a40010 addiu r4,r29,0x0010		r4 = Stack Pointer + 0x10
0017abc8: 00409021 addu r18,r2,r0		r18 = Hit Counter
0017abcc: 0805eb04 j 0x 0017ac10
0017abd0: 00008821 addu r17,r0,r0		r17 = 0; r2 = 1
  • Elements*
0017abd4: 0c05fcb6 jal 0x 0017f2d8		Get Elemental Ability ID
0017abd8: 00000000 nop
0017abdc: 0805eb04 j 0x 0017ac10			r17 = 1; r2 = 1
0017abe0: 00408021 addu r16,r2,r0		Ability ID = Elemental Ability
  • Katana Inventory*
0017abe4: 93a20018 lbu r2,0x0018(r29)		Load Unit's Used Item/Equip ID
0017abe8: 00000000 nop
0017abec: 2442ffda addiu r2,r2,0xffda		ID - 0x26
0017abf0: 2c42000a sltiu r2,r2,0x000a
0017abf4: 1040001f beq r2,r0,0x 0017ac74		Branch if Used Item/Equip isn't a katana
0017abf8: 2402ffff addiu r2,r0,0xffff		r2 = -1
0017abfc: 93a20018 lbu r2,0x0018(r29)		Load Unit's Used Item/Equip ID
0017ac00: 0805eb04 j 0x 0017ac10
0017ac04: 24500026 addiu r16,r2,0x0026		Ability ID = Used Item/Equip ID + 0x26
  • Defend/Change Equipment/Unknown1/Blank*
0017ac08: 0805eb1d j 0x 0017ac74
0017ac0c: 34020002 ori r2,r0,0x0002		r17 = 1; r2 = 2
0017ac10: 34020001 ori r2,r0,0x0001		r2 = 1
0017ac14: 1622000c bne r17,r2,0x 0017ac48	Branch if r17 != 1
0017ac18: 34020002 ori r2,r0,0x0002		r2 = 2
0017ac1c: 3202ffff andi r2,r16,0xffff		r2 = Ability ID
0017ac20: 2c420170 sltiu r2,r2,0x0170
0017ac24: 14400003 bne r2,r0,0x 0017ac34		Branch if Ability is an Ability
0017ac28: 00000000 nop
0017ac2c: 0805eb1d j 0x 0017ac74			(Unknown2 starts here)
0017ac30: 2402ffff addiu r2,r0,0xffff		r2 = -1
0017ac34: a7b00012 sh r16,0x0012(r29)
0017ac38: 0c05ee1d jal 0x 0017b874		Calculate Targeting Data
0017ac3c: 27a40010 addiu r4,r29,0x0010		r4 = Stack Pointer
0017ac40: 00409021 addu r18,r2,r0		r18 = Target Counter
0017ac44: 34020002 ori r2,r0,0x0002		r2 = 2
0017ac48: 16220004 bne r17,r2,0x 0017ac5c	Branch if r17 != 2
0017ac4c: 00000000 nop
0017ac50: 0c05eded jal 0x 0017b7b4		Disable Green Panel on all but Target's Tile
0017ac54: 27a40010 addiu r4,r29,0x0010		r4 = Stack Pointer
0017ac58: 00409021 addu r18,r2,r0
0017ac5c: 16400003 bne r18,r0,0x 0017ac6c	Branch if r18 != 0 (1 or -1)
0017ac60: 00121027 nor r2,r0,r18		r2 = 0 or -2
0017ac64: 0805eb1d j 0x 0017ac74
0017ac68: 34020001 ori r2,r0,0x0001		r2 = 1
0017ac6c: 2c420001 sltiu r2,r2,0x0001		r2 = 1 if r18 = -1
0017ac70: 00021023 subu r2,r0,r2		r2 = -1 (again) if r18 = -1
0017ac74: 8fbf0034 lw r31,0x0034(r29)		(r2 = 0 if r18 = 1)
0017ac78: 8fb20030 lw r18,0x0030(r29)
0017ac7c: 8fb1002c lw r17,0x002c(r29)
0017ac80: 8fb00028 lw r16,0x0028(r29)
0017ac84: 27bd0038 addiu r29,r29,0x0038
0017ac88: 03e00008 jr r31
0017ac8c: 00000000 nop