From d74a0297a8a7664f2d53b9dc7c6e7b7564776d2f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 2 Jan 2020 19:39:06 +1000 Subject: [PATCH] Decompile menuhandlerMpWeaponSlot --- src/game/game_176d70.c | 69 ++++++++++------------------------ src/game/game_187770.c | 20 +++++----- src/include/constants.h | 1 + src/include/game/game_176d70.h | 2 +- src/include/game/game_187770.h | 8 ++-- 5 files changed, 35 insertions(+), 65 deletions(-) diff --git a/src/game/game_176d70.c b/src/game/game_176d70.c index dd2929c0d..f5cbc1a50 100644 --- a/src/game/game_176d70.c +++ b/src/game/game_176d70.c @@ -3390,62 +3390,31 @@ glabel menuhandlerMpControlStyle /* f179570: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel menuhandlerMpWeaponSlot -/* f179574: 27bdffe8 */ addiu $sp,$sp,-24 -/* f179578: 24010001 */ addiu $at,$zero,0x1 -/* f17957c: afbf0014 */ sw $ra,0x14($sp) -/* f179580: 1081000a */ beq $a0,$at,.L0f1795ac -/* f179584: 00a03825 */ or $a3,$a1,$zero -/* f179588: 24010003 */ addiu $at,$zero,0x3 -/* f17958c: 1081000c */ beq $a0,$at,.L0f1795c0 -/* f179590: 24010006 */ addiu $at,$zero,0x6 -/* f179594: 1081000e */ beq $a0,$at,.L0f1795d0 -/* f179598: 24010007 */ addiu $at,$zero,0x7 -/* f17959c: 50810012 */ beql $a0,$at,.L0f1795e8 -/* f1795a0: 8ce4000c */ lw $a0,0xc($a3) -/* f1795a4: 10000015 */ beqz $zero,.L0f1795fc -/* f1795a8: 00001025 */ or $v0,$zero,$zero -.L0f1795ac: -/* f1795ac: 0fc622f5 */ jal func0f188bd4 -/* f1795b0: afa60020 */ sw $a2,0x20($sp) -/* f1795b4: 8fa60020 */ lw $a2,0x20($sp) -/* f1795b8: 1000000f */ beqz $zero,.L0f1795f8 -/* f1795bc: acc20000 */ sw $v0,0x0($a2) -.L0f1795c0: -/* f1795c0: 0fc6230f */ jal func0f188c3c -/* f1795c4: 8cc40000 */ lw $a0,0x0($a2) -/* f1795c8: 1000000d */ beqz $zero,.L0f179600 -/* f1795cc: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1795d0: -/* f1795d0: 8ce4000c */ lw $a0,0xc($a3) -/* f1795d4: 0fc62346 */ jal func0f188d18 -/* f1795d8: 8cc50000 */ lw $a1,0x0($a2) -/* f1795dc: 10000007 */ beqz $zero,.L0f1795fc -/* f1795e0: 00001025 */ or $v0,$zero,$zero -/* f1795e4: 8ce4000c */ lw $a0,0xc($a3) -.L0f1795e8: -/* f1795e8: 0fc62365 */ jal func0f188d94 -/* f1795ec: afa60020 */ sw $a2,0x20($sp) -/* f1795f0: 8fa60020 */ lw $a2,0x20($sp) -/* f1795f4: acc20000 */ sw $v0,0x0($a2) -.L0f1795f8: -/* f1795f8: 00001025 */ or $v0,$zero,$zero -.L0f1795fc: -/* f1795fc: 8fbf0014 */ lw $ra,0x14($sp) -.L0f179600: -/* f179600: 27bd0018 */ addiu $sp,$sp,0x18 -/* f179604: 03e00008 */ jr $ra -/* f179608: 00000000 */ sll $zero,$zero,0x0 -); +char *menuhandlerMpWeaponSlot(u32 operation, struct menu_item *item, s32 *value) +{ + switch (operation) { + case MENUOP_GETOPTIONCOUNT: + *value = mpGetNumWeaponOptions(); + break; + case MENUOP_GETOPTIONTEXT: + return mpGetWeaponLabel(*value); + case MENUOP_SET: + mpSetWeaponSlot(item->right, *value); + break; + case MENUOP_GETOPTIONVALUE: + *value = mpGetWeaponSlot(item->right); + } + + return 0; +} GLOBAL_ASM( glabel func0f17960c /* f17960c: 27bdffe8 */ addiu $sp,$sp,-24 /* f179610: afbf0014 */ sw $ra,0x14($sp) -/* f179614: 0fc62365 */ jal func0f188d94 +/* f179614: 0fc62365 */ jal mpGetWeaponSlot /* f179618: 90840001 */ lbu $a0,0x1($a0) -/* f17961c: 0fc6230f */ jal func0f188c3c +/* f17961c: 0fc6230f */ jal mpGetWeaponLabel /* f179620: 00402025 */ or $a0,$v0,$zero /* f179624: 8fbf0014 */ lw $ra,0x14($sp) /* f179628: 27bd0018 */ addiu $sp,$sp,0x18 diff --git a/src/game/game_187770.c b/src/game/game_187770.c index bfd82b942..47fa0873a 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -1721,7 +1721,7 @@ u32 func0f188bcc(void) } GLOBAL_ASM( -glabel func0f188bd4 +glabel mpGetNumWeaponOptions /* f188bd4: 27bdffd8 */ addiu $sp,$sp,-40 /* f188bd8: afb20020 */ sw $s2,0x20($sp) /* f188bdc: afb00018 */ sw $s0,0x18($sp) @@ -1753,7 +1753,7 @@ glabel func0f188bd4 ); GLOBAL_ASM( -glabel func0f188c3c +glabel mpGetWeaponLabel /* f188c3c: 27bdffd8 */ addiu $sp,$sp,-40 /* f188c40: afb20020 */ sw $s2,0x20($sp) /* f188c44: afb00018 */ sw $s0,0x18($sp) @@ -1819,7 +1819,7 @@ glabel func0f188c3c ); GLOBAL_ASM( -glabel func0f188d18 +glabel mpSetWeaponSlot /* f188d18: 27bdffd8 */ addiu $sp,$sp,-40 /* f188d1c: afb20020 */ sw $s2,0x20($sp) /* f188d20: afb1001c */ sw $s1,0x1c($sp) @@ -1857,7 +1857,7 @@ glabel func0f188d18 ); GLOBAL_ASM( -glabel func0f188d94 +glabel mpGetWeaponSlot /* f188d94: 27bdffd8 */ addiu $sp,$sp,-40 /* f188d98: 3c0e800b */ lui $t6,%hi(g_MpSetup) /* f188d9c: afb30020 */ sw $s3,0x20($sp) @@ -2399,7 +2399,7 @@ glabel func0f1892dc /* f1894d4: 2401000d */ addiu $at,$zero,0xd /* f1894d8: 54410017 */ bnel $v0,$at,.L0f189538 /* f1894dc: 2401000c */ addiu $at,$zero,0xc -/* f1894e0: 0fc622f5 */ jal func0f188bd4 +/* f1894e0: 0fc622f5 */ jal mpGetNumWeaponOptions /* f1894e4: 00000000 */ sll $zero,$zero,0x0 /* f1894e8: afa20034 */ sw $v0,0x34($sp) /* f1894ec: 00008025 */ or $s0,$zero,$zero @@ -2414,7 +2414,7 @@ glabel func0f1892dc /* f18950c: 00000000 */ sll $zero,$zero,0x0 /* f189510: 0007000d */ break 0x7 .L0f189514: -/* f189514: 0fc62346 */ jal func0f188d18 +/* f189514: 0fc62346 */ jal mpSetWeaponSlot /* f189518: 00000000 */ sll $zero,$zero,0x0 /* f18951c: 26100001 */ addiu $s0,$s0,0x1 /* f189520: 24010006 */ addiu $at,$zero,0x6 @@ -2426,7 +2426,7 @@ glabel func0f1892dc .L0f189538: /* f189538: 5441001c */ bnel $v0,$at,.L0f1895ac /* f18953c: 8fbf001c */ lw $ra,0x1c($sp) -/* f189540: 0fc622f5 */ jal func0f188bd4 +/* f189540: 0fc622f5 */ jal mpGetNumWeaponOptions /* f189544: 00000000 */ sll $zero,$zero,0x0 /* f189548: 2458fffe */ addiu $t8,$v0,-2 /* f18954c: afb80030 */ sw $t8,0x30($sp) @@ -2443,16 +2443,16 @@ glabel func0f1892dc /* f189574: 00000000 */ sll $zero,$zero,0x0 /* f189578: 0007000d */ break 0x7 .L0f18957c: -/* f18957c: 0fc62346 */ jal func0f188d18 +/* f18957c: 0fc62346 */ jal mpSetWeaponSlot /* f189580: 00000000 */ sll $zero,$zero,0x0 /* f189584: 26100001 */ addiu $s0,$s0,0x1 /* f189588: 24010005 */ addiu $at,$zero,0x5 /* f18958c: 1601fff1 */ bne $s0,$at,.L0f189554 /* f189590: 00000000 */ sll $zero,$zero,0x0 -/* f189594: 0fc622f5 */ jal func0f188bd4 +/* f189594: 0fc622f5 */ jal mpGetNumWeaponOptions /* f189598: 00000000 */ sll $zero,$zero,0x0 /* f18959c: 02002025 */ or $a0,$s0,$zero -/* f1895a0: 0fc62346 */ jal func0f188d18 +/* f1895a0: 0fc62346 */ jal mpSetWeaponSlot /* f1895a4: 2445ffff */ addiu $a1,$v0,-1 .L0f1895a8: /* f1895a8: 8fbf001c */ lw $ra,0x1c($sp) diff --git a/src/include/constants.h b/src/include/constants.h index 81a8e00a1..72095a3e2 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -463,6 +463,7 @@ #define MENUOP_GETOPTIONCOUNT 1 #define MENUOP_GETOPTIONTEXT 3 #define MENUOP_SET 6 +#define MENUOP_GETOPTIONVALUE 7 #define MENUOP_GET 8 #define MENUOP_GETSLIDER 9 #define MENUOP_CHECKDISABLED 12 diff --git a/src/include/game/game_176d70.h b/src/include/game/game_176d70.h index 16ad4f90f..d5f7fd0b8 100644 --- a/src/include/game/game_176d70.h +++ b/src/include/game/game_176d70.h @@ -261,6 +261,6 @@ s32 menuhandlerMpTeamsEnabled(u32 operation, struct menu_item *item, s32 *value) s32 menuhandlerMpThreeTeams(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerMpTime(u32, u32, u32 *); s32 menuhandlerMpTwoTeams(u32 operation, struct menu_item *item, s32 *value); -s32 menuhandlerMpWeaponSlot(u32, u32, u32 *); +char *menuhandlerMpWeaponSlot(u32 operation, struct menu_item *item, s32 *value); #endif diff --git a/src/include/game/game_187770.h b/src/include/game/game_187770.h index 016410119..351e69139 100644 --- a/src/include/game/game_187770.h +++ b/src/include/game/game_187770.h @@ -20,10 +20,10 @@ u32 func0f1885e4(void); u32 func0f188930(void); u32 func0f188a84(void); u32 func0f188bcc(void); -u32 func0f188bd4(void); -u32 func0f188c3c(void); -u32 func0f188d18(void); -u32 func0f188d94(void); +u32 mpGetNumWeaponOptions(void); +char *mpGetWeaponLabel(s32 weapon_id); +void mpSetWeaponSlot(s32 slot, s32 weapon_id); +s32 mpGetWeaponSlot(s32 slot); u32 func0f188e24(void); u32 func0f188ed4(void); u32 func0f188f9c(void);