From 59137e94f94a8f14cb3c7726f2f7516c0d158a25 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 28 Oct 2021 12:14:08 +1000 Subject: [PATCH] Decompile dmenuNavigateLeft --- src/game/debug1.c | 103 +++++++++++++++------------------------------- 1 file changed, 33 insertions(+), 70 deletions(-) diff --git a/src/game/debug1.c b/src/game/debug1.c index 8593a9dd1..1499b8834 100644 --- a/src/game/debug1.c +++ b/src/game/debug1.c @@ -164,73 +164,36 @@ void dmenuNavigateRight(void) } } -GLOBAL_ASM( -glabel dmenuNavigateLeft -/* f119174: 3c038008 */ lui $v1,0x8008 -/* f119178: 8c638134 */ lw $v1,-0x7ecc($v1) -/* f11917c: 3c078008 */ lui $a3,0x8008 -/* f119180: 24e78120 */ addiu $a3,$a3,-32480 -/* f119184: 8ce20000 */ lw $v0,0x0($a3) -/* f119188: 8c640000 */ lw $a0,0x0($v1) -/* f11918c: 3c058008 */ lui $a1,0x8008 -/* f119190: 0044082a */ slt $at,$v0,$a0 -/* f119194: 50200017 */ beqzl $at,.NB0f1191f4 -/* f119198: 0044082a */ slt $at,$v0,$a0 -/* f11919c: 8ca58130 */ lw $a1,-0x7ed0($a1) -/* f1191a0: 00002025 */ or $a0,$zero,$zero -/* f1191a4: 24a5ffff */ addiu $a1,$a1,-1 -/* f1191a8: 18a00005 */ blez $a1,.NB0f1191c0 -/* f1191ac: 00000000 */ sll $zero,$zero,0x0 -/* f1191b0: 24840001 */ addiu $a0,$a0,0x1 -.NB0f1191b4: -/* f1191b4: 0085082a */ slt $at,$a0,$a1 -/* f1191b8: 5420fffe */ bnezl $at,.NB0f1191b4 -/* f1191bc: 24840001 */ addiu $a0,$a0,0x1 -.NB0f1191c0: -/* f1191c0: 18800026 */ blez $a0,.NB0f11925c -/* f1191c4: 00047080 */ sll $t6,$a0,0x2 -/* f1191c8: 006e2821 */ addu $a1,$v1,$t6 -/* f1191cc: 8caffffc */ lw $t7,-0x4($a1) -/* f1191d0: 004fc021 */ addu $t8,$v0,$t7 -/* f1191d4: acf80000 */ sw $t8,0x0($a3) -/* f1191d8: 8ca60000 */ lw $a2,0x0($a1) -/* f1191dc: 0306082a */ slt $at,$t8,$a2 -/* f1191e0: 1420001e */ bnez $at,.NB0f11925c -/* f1191e4: 24c8ffff */ addiu $t0,$a2,-1 -/* f1191e8: 03e00008 */ jr $ra -/* f1191ec: ace80000 */ sw $t0,0x0($a3) -/* f1191f0: 0044082a */ slt $at,$v0,$a0 -.NB0f1191f4: -/* f1191f4: 14200008 */ bnez $at,.NB0f119218 -/* f1191f8: 00002825 */ or $a1,$zero,$zero -/* f1191fc: 00602025 */ or $a0,$v1,$zero -/* f119200: 8c890004 */ lw $t1,0x4($a0) -.NB0f119204: -/* f119204: 24a50001 */ addiu $a1,$a1,0x1 -/* f119208: 24840004 */ addiu $a0,$a0,0x4 -/* f11920c: 0049082a */ slt $at,$v0,$t1 -/* f119210: 5020fffc */ beqzl $at,.NB0f119204 -/* f119214: 8c890004 */ lw $t1,0x4($a0) -.NB0f119218: -/* f119218: 00055080 */ sll $t2,$a1,0x2 -/* f11921c: 006a2021 */ addu $a0,$v1,$t2 -/* f119220: 8c8bfffc */ lw $t3,-0x4($a0) -/* f119224: 24adfffe */ addiu $t5,$a1,-2 -/* f119228: 004b6023 */ subu $t4,$v0,$t3 -/* f11922c: 05a00004 */ bltz $t5,.NB0f119240 -/* f119230: acec0000 */ sw $t4,0x0($a3) -/* f119234: 8c8ffff8 */ lw $t7,-0x8($a0) -/* f119238: 018fc021 */ addu $t8,$t4,$t7 -/* f11923c: acf80000 */ sw $t8,0x0($a3) -.NB0f119240: -/* f119240: 8c82fffc */ lw $v0,-0x4($a0) -/* f119244: 8cf90000 */ lw $t9,0x0($a3) -/* f119248: 2448ffff */ addiu $t0,$v0,-1 -/* f11924c: 0322082a */ slt $at,$t9,$v0 -/* f119250: 14200002 */ bnez $at,.NB0f11925c -/* f119254: 00000000 */ sll $zero,$zero,0x0 -/* f119258: ace80000 */ sw $t0,0x0($a3) -.NB0f11925c: -/* f11925c: 03e00008 */ jr $ra -/* f119260: 00000000 */ sll $zero,$zero,0x0 -); +void dmenuNavigateLeft(void) +{ + s32 i; + + // First group + if (g_DMenuSelectedOption < g_DMenuCurOffsets[0]) { + s32 i; + + for (i = 0; i < g_DMenuNumGroups - 1; i++); + + if (i > 0) { + g_DMenuSelectedOption += g_DMenuCurOffsets[i - 1]; + + if (g_DMenuSelectedOption >= g_DMenuCurOffsets[i]) { + g_DMenuSelectedOption = g_DMenuCurOffsets[i] - 1; + } + } + return; + } + + // Any other group + for (i = 0; g_DMenuSelectedOption >= g_DMenuCurOffsets[i]; i++); + + g_DMenuSelectedOption -= g_DMenuCurOffsets[i - 1]; + + if (i - 2 >= 0) { + g_DMenuSelectedOption += g_DMenuCurOffsets[i - 2]; + } + + if (g_DMenuSelectedOption >= g_DMenuCurOffsets[i - 1]) { + g_DMenuSelectedOption = g_DMenuCurOffsets[i - 1] - 1; + } +}