000ec5b8 - 000ec760

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

r4 = menu data pointer
r5 = stack pointer
r6 = counter of previous routine (number of attempts to load some kind of menu?)
r7 = cursor placement?
000ec5b8: 3c02801d lui r2,0x801d
000ec5bc: 8c42d170 lw r2,-0x2e90(r2)			#(WORLD) Thread ID
000ec5c0: 3c038015 lui r3,0x8015
000ec5c4: 8c63327c lw r3,0x327c(r3)			#pointer to thread array
000ec5c8: 27bdffd8 addiu r29,r29,0xffd8
000ec5cc: afb10014 sw r17,0x0014(r29)
000ec5d0: 00808821 addu r17,r4,r0			#menu data pointer
000ec5d4: afb20018 sw r18,0x0018(r29)
000ec5d8: 00a09021 addu r18,r5,r0			#another pointer
000ec5dc: afb3001c sw r19,0x001c(r29)
000ec5e0: 00c09821 addu r19,r6,r0			#counter from above?
000ec5e4: afb40020 sw r20,0x0020(r29)
000ec5e8: 00e0a021 addu r20,r7,r0			#cursor?
000ec5ec: afbf0024 sw r31,0x0024(r29)
000ec5f0: afb00010 sw r16,0x0010(r29)
000ec5f4: 00021280 sll r2,r2,0x0a			#Thread ID
000ec5f8: 06800043 bltz r20,0x000ec708			#branch if flag = -1?
000ec5fc: 00438021 addu r16,r2,r3			#pointer to thread array + Thread ID * 0x400
000ec600: 3c038015 lui r3,0x8015
000ec604: 8c633318 lw r3,0x3318(r3)			#
000ec608: 34020001 ori r2,r0,0x0001
000ec60c: 14620003 bne r3,r2,0x000ec61c		#branch if 0x80153318 != 1
000ec610: 34020002 ori r2,r0,0x0002
000ec614: ae020054 sw r2,0x0054(r16)			#store 0x2 in thread pointer + 0x54
000ec618: ae000050 sw r0,0x0050(r16)			#clear thread 0x0050
000ec61c: 0c04004b jal 0x0010012c			0010012c - 00100160 load thread parameter 0x48 (0x24th thread param?)
000ec620: 00000000 nop
000ec624: 14400011 bne r2,r0,0x000ec66c		#branch if thread param 0x24 != 0
000ec628: 00000000 nop
000ec62c: 3c028015 lui r2,0x8015
000ec630: 8c42330c lw r2,0x330c(r2)			
000ec634: 00000000 nop
000ec638: 1440000c bne r2,r0,0x000ec66c		#branch if not 0
000ec63c: 00000000 nop
000ec640: 8e020054 lw r2,0x0054(r16)			#load thread param 0x2a
000ec644: 00000000 nop
000ec648: 10400014 beq r2,r0,0x000ec69c		#branch if 0
000ec64c: 00002021 addu r4,r0,r0
000ec650: 8e020050 lw r2,0x0050(r16)			#load thread param 0x28
000ec654: 00000000 nop
000ec658: 2842001b slti r2,r2,0x001b			
000ec65c: 1440000a bne r2,r0,0x000ec688		#branch if less than 0x1b
000ec660: 00000000 nop
000ec664: 0803b1a1 j 0x000ec684
000ec668: ae000054 sw r0,0x0054(r16)			#clear thread param 0x2a
000ec66c: 8e020054 lw r2,0x0054(r16)			#load thread param 0x2a
000ec670: 00000000 nop
000ec674: 14400009 bne r2,r0,0x000ec69c		#branch if not 0
000ec678: 34040001 ori r4,r0,0x0001
000ec67c: 34020002 ori r2,r0,0x0002
000ec680: ae020054 sw r2,0x0054(r16)			#store thread param 0x2a = 2
000ec684: ae000050 sw r0,0x0050(r16)			#clear thread param 0x28
000ec688: 8e020054 lw r2,0x0054(r16)			#load thread param 0x2a
000ec68c: 00000000 nop
000ec690: 14400002 bne r2,r0,0x000ec69c		#branch if not 0
000ec694: 34040001 ori r4,r0,0x0001
000ec698: 00002021 addu r4,r0,r0
000ec69c: 0c03b141 jal 0x000ec504			#r4 = 0 or 1 depending on above logic 000ec504 - 000ec5b4 (if 1, skips a break instruction)
000ec6a0: 00000000 nop
000ec6a4: 00402021 addu r4,r2,r0			#r4 = return
000ec6a8: 8e020050 lw r2,0x0050(r16)			#load thread param 0x28
000ec6ac: 3c038015 lui r3,0x8015
000ec6b0: 8c63326c lw r3,0x326c(r3)			#
000ec6b4: 2484fff4 addiu r4,r4,0xfff4			#r4 - 0xc
000ec6b8: 00431021 addu r2,r2,r3			#thread param 0x28 + 0x8015326c
000ec6bc: ae020050 sw r2,0x0050(r16)			#store thread param
000ec6c0: 96220008 lhu r2,0x0008(r17)			#load menu graphic width
000ec6c4: 00141900 sll r3,r20,0x04			#cursor * 0x10
000ec6c8: 00441021 addu r2,r2,r4			#menu graphic width + return - 0xc
000ec6cc: a6420034 sh r2,0x0034(r18)			#store in 0x34 + 0x94 or 0x18 stack (0x4c stack or 0xc8)
000ec6d0: 9622000a lhu r2,0x000a(r17)			#load menu graphic X
000ec6d4: 2463000a addiu r3,r3,0x000a			#cursor * 0x10 + 0xa
000ec6d8: 00431021 addu r2,r2,r3			#menu graphic X + cursor X placement
000ec6dc: a6420036 sh r2,0x0036(r18)			#store cursor in 0x4e/0xCA stack
000ec6e0: 96220008 lhu r2,0x0008(r17)			#load graphic menu width
000ec6e4: 00000000 nop
000ec6e8: 00441021 addu r2,r2,r4			#repeat above charade
000ec6ec: 24420002 addiu r2,r2,0x0002			#width* + 2
000ec6f0: a6420048 sh r2,0x0048(r18)			#store in 0x48 stack (and variance)
000ec6f4: 9622000a lhu r2,0x000a(r17)			#load menu graphic X
000ec6f8: 00000000 nop
000ec6fc: 00431021 addu r2,r2,r3
000ec700: 24420002 addiu r2,r2,0x0002			#+ 2
000ec704: a642004a sh r2,0x004a(r18)			#store in 0x4a stack (and variance)
000ec708: 3c038015 lui r3,0x8015
000ec70c: 8c63326c lw r3,0x326c(r3)
000ec710: 34020002 ori r2,r0,0x0002
000ec714: 14620002 bne r3,r2,0x000ec720		#branch if 0x8015326c is 0x2
000ec718: 02202021 addu r4,r17,r0			#menu data pointer
000ec71c: 00139840 sll r19,r19,0x01			#
000ec720: 26500018 addiu r16,r18,0x0018		#r16 = r18 + 0x18
000ec724: 02002821 addu r5,r16,r0			#parse stack + 0x18 + 0x18/0x94
000ec728: 0c03b1d9 jal 0x000ec764			#000ec764 - 000ec7b0 - moves a bunch of data from r4 to r5 (menu data to stack)
000ec72c: 02603021 addu r6,r19,r0			#parse counter * 2 (redundant)
000ec730: 02202021 addu r4,r17,r0			#menu data
000ec734: 02002821 addu r5,r16,r0			#stack + 0x18 + variance
000ec738: 0c03b1ed jal 0x000ec7b4			#000ec7b4 - 000ec950
000ec73c: 02603021 addu r6,r19,r0			#counter * 2
000ec740: 8fbf0024 lw r31,0x0024(r29)
000ec744: 8fb40020 lw r20,0x0020(r29)
000ec748: 8fb3001c lw r19,0x001c(r29)
000ec74c: 8fb20018 lw r18,0x0018(r29)
000ec750: 8fb10014 lw r17,0x0014(r29)
000ec754: 8fb00010 lw r16,0x0010(r29)
000ec758: 27bd0028 addiu r29,r29,0x0028
000ec75c: 03e00008 jr r31
000ec760: 00000000 nop