Find Free Party Slot

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
Find Free Party Slot
00059d5c: 27bdff90 addiu r29,r29,0xff90
00059d60: afb20068 sw r18,0x0068(r29)
00059d64: 00809021 addu r18,r4,r0		r18 = Save Formation Flag
00059d68: afb00060 sw r16,0x0060(r29)
00059d6c: 00008021 addu r16,r0,r0		Counter = 0
00059d70: afb10064 sw r17,0x0064(r29)
00059d74: 27b10010 addiu r17,r29,0x0010		r17 = Stack Pointer + 0x10
00059d78: afbf006c sw r31,0x006c(r29)
00059d7c: a0a00000 sb r0,0x0000(r5)		Store Stack Value = 0
00059d80: 0c0166bc jal 0x00059af0		Get Party Data Pointer
00059d84: 02002021 addu r4,r16,r0		r4 = Counter
00059d88: ae220000 sw r2,0x0000(r17)		Store Party Data Pointer
00059d8c: 26100001 addiu r16,r16,0x0001		Counter ++
00059d90: 2a020014 slti r2,r16,0x0014
00059d94: 1440fffa bne r2,r0,0x00059d80		Branch if Counter  < 0x14
00059d98: 26310004 addiu r17,r17,0x0004		Stack Pointer +=  4
00059d9c: 12400003 beq r18,r0,0x00059dac	Branch if Unit doesn't have Save  Formation Flag
00059da0: 34020010 ori r2,r0,0x0010		Party Counter = 0x10 (Guests)
00059da4: 0801676d j 0x00059db4
00059da8: 34050014 ori r5,r0,0x0014		Limit = 0x14
00059dac: 00001021 addu r2,r0,r0		Party Counter = 0
00059db0: 34050010 ori r5,r0,0x0010		Limit = 0x10
00059db4: 00408021 addu r16,r2,r0		r16 = Party Counter
00059db8: 0205102a slt r2,r16,r5
00059dbc: 1040000e beq r2,r0,0x00059df8		Branch if Party Counter >= Limit
00059dc0: 00101080 sll r2,r16,0x02		Party Counter * 4
00059dc4: 340400ff ori r4,r0,0x00ff		r4 = FF
00059dc8: 27a30010 addiu r3,r29,0x0010		r3 = Stack Pointer + 0x10
00059dcc: 00431821 addu r3,r2,r3
00059dd0: 8c620000 lw r2,0x0000(r3)		Load Unit's Party Data Pointer
00059dd4: 00000000 nop
00059dd8: 90420001 lbu r2,0x0001(r2)		Load Unit's Party ID
00059ddc: 00000000 no p
00059de0: 10440006 beq r2,r4,0x00059dfc		Branch if unit doesn't exist 
00059de4: 02001021 addu r2,r16,r0		Free Party ID = Party Counter
00059de8: 26100001 addiu r16,r16,0x0001		Party Counter ++
00059dec: 0205102a slt r2,r16,r5
00059df0: 1440fff7 bne r2,r0,0x00059dd0		Branch if Party Counter < Limit
00059df4: 24630004 addiu r3,r3,0x0004		Stack Pointer += 4
00059df8: 2402ffff addiu r2,r0,0xffff		Free Party ID = None
00059dfc: 8fbf006c lw r31,0x006c(r29)
00059e00: 8fb20068 lw r18,0x0068(r29)
00059e04: 8fb10064 lw r17,0x0064(r29)
00059e08: 8fb00060 lw r16,0x0060(r29)
00059e0c: 27bd0070 addiu r29,r29,0x0070
00059e10: 03e00008 jr r31
00059e14: 00000000 nop


Return Locations

00059c18: Add Unit to Party/Store Unit's Party Data
00059c4c: ^^^
001c6078: Routine at 1c6000