Difference between revisions of "000ec5b8 - 000ec760"

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

Revision as of 01:03, 14 October 2022

r4 = menu data pointer
r5 = stack pointer
r6 = counter of previous routine (number of attempts to load some kind of menu?)
r7 = menu data 0x38? stack 0x110? number of menus deep?
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			#flag
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			#0x38??? * 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			#0x38 * 0x10 + 0xa
000ec6d8: 00431021 addu r2,r2,r3			#menu graphic X + 0x38 * 0x10 + 0xa (menu depth?)
000ec6dc: a6420036 sh r2,0x0036(r18)			#store in 0x36 + 0x18/0x94 (stack 0x4e or 0xca)
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