From 91865cc796c199bbd0fe2c2d4014232902303a63 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 4 Jan 2020 20:58:02 +1000 Subject: [PATCH] Decompile mpIsOptionAvailable --- src/game/game_1999b0.c | 42 ++++++++++++++++------------------ src/gvars/gvars.c | 2 +- src/include/game/game_1999b0.h | 2 +- src/include/gvars/gvars.h | 2 +- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/game/game_1999b0.c b/src/game/game_1999b0.c index d6cc8f2ad..0721d4968 100644 --- a/src/game/game_1999b0.c +++ b/src/game/game_1999b0.c @@ -1901,10 +1901,10 @@ glabel func0f19afdc /* f19b2dc: 2a610004 */ slti $at,$s3,0x4 /* f19b2e0: 1420ffa0 */ bnez $at,.L0f19b164 /* f19b2e4: 00000000 */ sll $zero,$zero,0x0 -/* f19b2e8: 3c14800b */ lui $s4,%hi(var800accc8) -/* f19b2ec: 3c16800b */ lui $s6,%hi(var800accc8) -/* f19b2f0: 26d6ccc8 */ addiu $s6,$s6,%lo(var800accc8) -/* f19b2f4: 2694ccc8 */ addiu $s4,$s4,%lo(var800accc8) +/* f19b2e8: 3c14800b */ lui $s4,%hi(g_MpAvailableOptions) +/* f19b2ec: 3c16800b */ lui $s6,%hi(g_MpAvailableOptions) +/* f19b2f0: 26d6ccc8 */ addiu $s6,$s6,%lo(g_MpAvailableOptions) +/* f19b2f4: 2694ccc8 */ addiu $s4,$s4,%lo(g_MpAvailableOptions) /* f19b2f8: 00009825 */ or $s3,$zero,$zero /* f19b2fc: 24110010 */ addiu $s1,$zero,0x10 .L0f19b300: @@ -2001,8 +2001,8 @@ glabel func0f19afdc /* f19b43c: 3c088008 */ lui $t0,%hi(mpweaponstable) /* f19b440: 25087268 */ addiu $t0,$t0,%lo(mpweaponstable) /* f19b444: 0019c840 */ sll $t9,$t9,0x1 -/* f19b448: 3c11800b */ lui $s1,%hi(var800accc8) -/* f19b44c: 2631ccc8 */ addiu $s1,$s1,%lo(var800accc8) +/* f19b448: 3c11800b */ lui $s1,%hi(g_MpAvailableOptions) +/* f19b44c: 2631ccc8 */ addiu $s1,$s1,%lo(g_MpAvailableOptions) /* f19b450: 03288021 */ addu $s0,$t9,$t0 /* f19b454: 96090004 */ lhu $t1,0x4($s0) .L0f19b458: @@ -2967,8 +2967,8 @@ glabel func0f19bfa0 /* f19c134: 10200008 */ beqz $at,.L0f19c158 /* f19c138: 3c0c800b */ lui $t4,%hi(var800acca0) /* f19c13c: 258ccca0 */ addiu $t4,$t4,%lo(var800acca0) -/* f19c140: 3c03800b */ lui $v1,%hi(var800accc8) -/* f19c144: 2463ccc8 */ addiu $v1,$v1,%lo(var800accc8) +/* f19c140: 3c03800b */ lui $v1,%hi(g_MpAvailableOptions) +/* f19c144: 2463ccc8 */ addiu $v1,$v1,%lo(g_MpAvailableOptions) /* f19c148: 020c1021 */ addu $v0,$s0,$t4 .L0f19c14c: /* f19c14c: 24420001 */ addiu $v0,$v0,0x1 @@ -2995,9 +2995,9 @@ GLOBAL_ASM( glabel func0f19c190 /* f19c190: 27bdffe8 */ addiu $sp,$sp,-24 /* f19c194: 3c02800b */ lui $v0,%hi(var800acca0) -/* f19c198: 3c03800b */ lui $v1,%hi(var800accc8) +/* f19c198: 3c03800b */ lui $v1,%hi(g_MpAvailableOptions) /* f19c19c: afbf0014 */ sw $ra,0x14($sp) -/* f19c1a0: 2463ccc8 */ addiu $v1,$v1,%lo(var800accc8) +/* f19c1a0: 2463ccc8 */ addiu $v1,$v1,%lo(g_MpAvailableOptions) /* f19c1a4: 2442cca0 */ addiu $v0,$v0,%lo(var800acca0) .L0f19c1a8: /* f19c1a8: 24420001 */ addiu $v0,$v0,0x1 @@ -3584,19 +3584,17 @@ glabel func0f19c6bc /* f19c90c: 27bd0028 */ addiu $sp,$sp,0x28 ); +bool mpIsOptionAvailable(s32 option) +{ + if (option == 0) { + return true; + } + + return ((g_MpAvailableOptions[option] & 1) != 0); +} + GLOBAL_ASM( -glabel mpIsOptionAvailable -/* f19c910: 14800003 */ bnez $a0,.L0f19c920 -/* f19c914: 3c02800b */ lui $v0,0x800b -/* f19c918: 03e00008 */ jr $ra -/* f19c91c: 24020001 */ addiu $v0,$zero,0x1 -.L0f19c920: -/* f19c920: 00441021 */ addu $v0,$v0,$a0 -/* f19c924: 9042ccc8 */ lbu $v0,-0x3338($v0) -/* f19c928: 304e0001 */ andi $t6,$v0,0x1 -/* f19c92c: 000e102b */ sltu $v0,$zero,$t6 -/* f19c930: 03e00008 */ jr $ra -/* f19c934: 00000000 */ sll $zero,$zero,0x0 +glabel func0f19c938 /* f19c938: 14a00003 */ bnez $a1,.L0f19c948 /* f19c93c: 3c0e800b */ lui $t6,0x800b /* f19c940: 03e00008 */ jr $ra diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 46b58cf3c..ae07003ae 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -30801,7 +30801,7 @@ u32 var800accb8 = 0; u32 var800accbc = 0; u32 var800accc0 = 0; u32 var800accc4 = 0; -u32 var800accc8 = 0; +u8 g_MpAvailableOptions[4] = {0}; // This is one *byte* per option, and length is unknown u32 var800acccc = 0; u32 var800accd0 = 0; u32 var800accd4 = 0; diff --git a/src/include/game/game_1999b0.h b/src/include/game/game_1999b0.h index 842c415cb..f301f7426 100644 --- a/src/include/game/game_1999b0.h +++ b/src/include/game/game_1999b0.h @@ -59,6 +59,6 @@ u32 func0f19c47c(void); u32 func0f19c4b8(void); u32 func0f19c53c(void); u32 func0f19c6bc(void); -s32 mpIsOptionAvailable(s32 arg0); +bool mpIsOptionAvailable(s32 option); #endif diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index a8026e33d..b70f22233 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -858,7 +858,7 @@ extern u32 var800acc70; extern u32 var800acc74; extern u32 var800acc80; extern u32 var800acca0; -extern u32 var800accc8; +extern u8 g_MpAvailableOptions[]; extern u32 var800acd20; extern u32 var800ad158; extern u32 var800ad1a0;