Portrait loading routine

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

Formation Screen Portrait Loading 0x0010cab0: Portrait loading routine

# ATTACK.OUT: Portrait loading routine (ATTACK.OUT)

	00059af0: Get Party Data Pointer
	0005a8a4: Get Job Data Pointer
	000eaa50: 000eaa50 - 000eabc8

0010cab0: 27bdffe0 addiu r29,r29,0xffe0			
0010cab4: afb20018 sw r18,0x0018(r29)			
0010cab8: 00a09021 addu r18,r5,r0
0010cabc: afbf001c sw r31,0x001c(r29)			
0010cac0: afb10014 sw r17,0x0014(r29)			
0010cac4: 0c0166bc jal 0x00059af0			Get Party Data Pointer
0010cac8: afb00010 sw r16,0x0010(r29)			

0010cacc: 00408021 addu r16,r2,r0
0010cad0: 92050000 lbu r5,0x0000(r16)			Load Sprite Set
0010cad4: 00000000 nop
0010cad8: 2ca20080 sltiu r2,r5,0x0080			Set if not generic
0010cadc: 14400026 bne r2,r0,0x0010cb78			Branch if special unit
0010cae0: 00051040 sll r2,r5,0x01			Shift left 1 bits (*0x2) (*2)

0010cae4: 34020080 ori r2,r0,0x0080			
0010cae8: 14a2000a bne r5,r2,0x0010cb14			Branch if  not male
0010caec: 34020081 ori r2,r0,0x0081			
0010caf0: 92020002 lbu r2,0x0002(r16)			Load job
0010caf4: 00000000 nop
0010caf8: 2443ffb6 addiu r3,r2,0xffb6			job - 4a
0010cafc: 00032040 sll r4,r3,0x01			Shift left 1 bits (*0x2) (*2)
0010cb00: 3403005d ori r3,r0,0x005d			r3 = (0x5D) 93
0010cb04: 14430013 bne r2,r3,0x0010cb54			Branch if  != 5D (93)
0010cb08: 24850060 addiu r5,r4,0x0060
0010cb0c: 080432d5 j 0x0010cb54			
0010cb10: 2485005e addiu r5,r4,0x005e

0010cb14: 14a2000a bne r5,r2,0x0010cb40			Branch if 0xCC != 
0010cb18: 00000000 nop
0010cb1c: 92020002 lbu r2,0x0002(r16)			Load job
0010cb20: 00000000 nop
0010cb24: 2443ffb6 addiu r3,r2,0xffb6			job - 4a
0010cb28: 00032040 sll r4,r3,0x01			0x37* 0x4 (* 4)
0010cb2c: 3403005d ori r3,r0,0x005d			r3 = (0x5D) 93
0010cb30: 14430008 bne r2,r3,0x0010cb54			Branch if  != 5D (93)
0010cb34: 24850061 addiu r5,r4,0x0061
0010cb38: 080432d5 j 0x0010cb54			
0010cb3c: 2485005f addiu r5,r4,0x005f
0010cb40: 92040002 lbu r4,0x0002(r16)			Load job
0010cb44: 0c016a29 jal 0x0005a8a4			Get Job Data Pointer
0010cb48: 00000000 nop
0010cb4c: 00408821 addu r17,r2,r0
0010cb50: 9045002d lbu r5,0x002d(r2)			Load ???
0010cb54: 92030002 lbu r3,0x0002(r16)			Load job
0010cb58: 3402005b ori r2,r0,0x005b			r2 = (0x5B) 91
0010cb5c: 14620002 bne r3,r2,0x0010cb68			Branch if  != 5B (91)
0010cb60: 3402005c ori r2,r0,0x005c			r2 = (0x5C) 92
0010cb64: 34050082 ori r5,r0,0x0082			r5 = (0x82) 130
0010cb68: 14620003 bne r3,r2,0x0010cb78			Branch if  != 5C (92)
0010cb6c: 00051040 sll r2,r5,0x01			Shift left 1 bits (*0x2) (*2)
0010cb70: 34050083 ori r5,r0,0x0083			r5 = (0x83) 131
0010cb74: 00051040 sll r2,r5,0x01			82 (130)* 0x4 (* 4)
0010cb78: 92030000 lbu r3,0x0000(r16)			Load Sprite Set
0010cb7c: 3c018019 lui r1,0x8019			
0010cb80: 00220821 addu r1,r1,r2
0010cb84: 9425a8b8 lhu r5,-0x5748(r1)			Load portrait + palette
0010cb88: 14600002 bne r3,r0,0x0010cb94			Branch if  != 0x0
0010cb8c: 34020082 ori r2,r0,0x0082			r2 = (0x82) 130
0010cb90: 00002821 addu r5,r0,r0
0010cb94: 14620006 bne r3,r2,0x0010cbb0			Branch if  != 82 (130)
0010cb98: 30a20300 andi r2,r5,0x0300			0 & 0x300
0010cb9c: 9222002e lbu r2,0x002e(r17)			Load ???
0010cba0: 00000000 nop
0010cba4: 00021280 sll r2,r2,0x0a			Shift left 10 bits (*0x400) (*1024)
0010cba8: 00a22825 or r5,r5,r2			r5 = 0
0010cbac: 30a20300 andi r2,r5,0x0300			 | 0 & 0x300
0010cbb0: 14400003 bne r2,r0,0x0010cbc0			Branch if  | 0 & 0x300 != 0x0
0010cbb4: 00000000 nop
0010cbb8: 0c03aa94 jal 0x000eaa50			000eaa50 - 000eabc8
0010cbbc: 02402021 addu r4,r18,r0
0010cbc0: 8fbf001c lw r31,0x001c(r29)			Load Stack + 0x1C
0010cbc4: 8fb20018 lw r18,0x0018(r29)			Load Stack + 0x18
0010cbc8: 8fb10014 lw r17,0x0014(r29)			Load Stack + 0x14
0010cbcc: 8fb00010 lw r16,0x0010(r29)			Load Stack + 0x10
0010cbd0: 27bd0020 addiu r29,r29,0x0020			
0010cbd4: 03e00008 jr r31			Jump to Address
0010cbd8: 00000000 nop