diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index 89e0dd579..9262562ed 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -8516,42 +8516,23 @@ bool mpHasSimulants(void) return false; } -GLOBAL_ASM( -glabel func0f18cc8c -/* f18cc8c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f18cc90: afbf0014 */ sw $ra,0x14($sp) -/* f18cc94: 0fc67244 */ jal mpIsFeatureUnlocked -/* f18cc98: 24040040 */ addiu $a0,$zero,0x40 -/* f18cc9c: 10400003 */ beqz $v0,.L0f18ccac -/* f18cca0: 3c04800b */ lui $a0,%hi(g_MpSetup+0x16) -/* f18cca4: 10000002 */ b .L0f18ccb0 -/* f18cca8: 24030008 */ addiu $v1,$zero,0x8 -.L0f18ccac: -/* f18ccac: 24030004 */ addiu $v1,$zero,0x4 -.L0f18ccb0: -/* f18ccb0: 24020004 */ addiu $v0,$zero,0x4 -/* f18ccb4: 9484cb9e */ lhu $a0,%lo(g_MpSetup+0x16)($a0) -/* f18ccb8: 2405000c */ addiu $a1,$zero,0xc -/* f18ccbc: 240e0001 */ addiu $t6,$zero,0x1 -.L0f18ccc0: -/* f18ccc0: 004e7804 */ sllv $t7,$t6,$v0 -/* f18ccc4: 008fc024 */ and $t8,$a0,$t7 -/* f18ccc8: 13000002 */ beqz $t8,.L0f18ccd4 -/* f18cccc: 24420001 */ addiu $v0,$v0,0x1 -/* f18ccd0: 2463ffff */ addiu $v1,$v1,-1 -.L0f18ccd4: -/* f18ccd4: 5445fffa */ bnel $v0,$a1,.L0f18ccc0 -/* f18ccd8: 240e0001 */ addiu $t6,$zero,0x1 -/* f18ccdc: 18600003 */ blez $v1,.L0f18ccec -/* f18cce0: 8fbf0014 */ lw $ra,0x14($sp) -/* f18cce4: 10000002 */ b .L0f18ccf0 -/* f18cce8: 24020001 */ addiu $v0,$zero,0x1 -.L0f18ccec: -/* f18ccec: 00001025 */ or $v0,$zero,$zero -.L0f18ccf0: -/* f18ccf0: 03e00008 */ jr $ra -/* f18ccf4: 27bd0018 */ addiu $sp,$sp,0x18 -); +bool mpHasUnusedBotSlots(void) +{ + s32 numvacant = mpIsFeatureUnlocked(MPFEATURE_8BOTS) ? 8 : 4; + s32 i; + + for (i = 4; i < 12; i++) { + if (g_MpSetup.chrslots & (1 << i)) { + numvacant--; + } + } + + if (numvacant > 0) { + return true; + } + + return false; +} bool mpIsSimSlotEnabled(s32 slot) { diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index f1dd0191c..08e1499ca 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -5773,7 +5773,7 @@ s32 menuhandlerMpAddSimulant(s32 operation, struct menuitem *item, union handler menuPushDialog(&g_MpAddSimulantMenuDialog); break; case MENUOP_CHECKDISABLED: - if (func0f18cc8c() == 0) { + if (mpHasUnusedBotSlots() == 0) { return true; } } diff --git a/src/include/game/mplayer/mplayer.h b/src/include/game/mplayer/mplayer.h index 21a4fdd89..1745deb40 100644 --- a/src/include/game/mplayer/mplayer.h +++ b/src/include/game/mplayer/mplayer.h @@ -89,7 +89,7 @@ void mpSetBotDifficulty(s32 botnum, s32 difficulty); s32 mpGetNumSimulants(void); void mpRemoveSimulant(s32 index); bool mpHasSimulants(void); -u32 func0f18cc8c(void); +bool mpHasUnusedBotSlots(void); bool mpIsSimSlotEnabled(s32 slot); s32 mpGetSimTypeIndex(s32 type, s32 difficulty); void func0f18cddc(void);