Difference between revisions of "000ec5b8 - 000ec760"
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...") |
m |
||
(One intermediate revision by the same user not shown) | |||
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 = cursor placement? | ||
+ | |||
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 #cursor? |
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 #cursor * 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 #cursor * 0x10 + 0xa |
− | 000ec6d8: 00431021 addu r2,r2,r3 | + | 000ec6d8: 00431021 addu r2,r2,r3 #menu graphic X + cursor X placement |
− | 000ec6dc: a6420036 sh r2,0x0036(r18) | + | 000ec6dc: a6420036 sh r2,0x0036(r18) #store cursor in 0x4e/0xCA stack |
− | 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) |
Latest revision as of 02:05, 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 = 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