diff --git a/src/game/game_179060.c b/src/game/game_179060.c index ffc9aa02c..f38abaee8 100644 --- a/src/game/game_179060.c +++ b/src/game/game_179060.c @@ -4824,7 +4824,7 @@ glabel var7f1b8228 /* f17ddb0: 8cc90004 */ lw $t1,0x4($a2) /* f17ddb4: 15200003 */ bnez $t1,.L0f17ddc4 /* f17ddb8: 00000000 */ sll $zero,$zero,0x0 -/* f17ddbc: 0fc630e3 */ jal func0f18c38c +/* f17ddbc: 0fc630e3 */ jal mpSetTrackSlotEnabled /* f17ddc0: 00602025 */ or $a0,$v1,$zero .L0f17ddc4: /* f17ddc4: 3c02800a */ lui $v0,%hi(g_Vars) @@ -4852,7 +4852,7 @@ glabel var7f1b8228 /* f17de18: 10000052 */ beqz $zero,.L0f17df64 /* f17de1c: 00001025 */ or $v0,$zero,$zero .L0f17de20: -/* f17de20: 0fc630f9 */ jal func0f18c3e4 +/* f17de20: 0fc630f9 */ jal mpEnableAllMultiTracks /* f17de24: 00000000 */ sll $zero,$zero,0x0 /* f17de28: 3c02800a */ lui $v0,%hi(g_Vars) /* f17de2c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) @@ -4861,7 +4861,7 @@ glabel var7f1b8228 /* f17de38: 10000049 */ beqz $zero,.L0f17df60 /* f17de3c: ac4e0458 */ sw $t6,0x458($v0) .L0f17de40: -/* f17de40: 0fc63103 */ jal func0f18c40c +/* f17de40: 0fc63103 */ jal mpDisableAllMultiTracks /* f17de44: 00000000 */ sll $zero,$zero,0x0 /* f17de48: 3c02800a */ lui $v0,%hi(g_Vars) /* f17de4c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) @@ -4870,7 +4870,7 @@ glabel var7f1b8228 /* f17de58: 10000041 */ beqz $zero,.L0f17df60 /* f17de5c: ac4f0458 */ sw $t7,0x458($v0) .L0f17de60: -/* f17de60: 0fc6310c */ jal func0f18c430 +/* f17de60: 0fc6310c */ jal mpRandomiseMultiTracks /* f17de64: 00000000 */ sll $zero,$zero,0x0 /* f17de68: 3c02800a */ lui $v0,%hi(g_Vars) /* f17de6c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) diff --git a/src/game/gamefile.c b/src/game/gamefile.c index 1afb64f46..58b90b984 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -1404,7 +1404,7 @@ void func0f110b68(void) g_MpSetupSaveFile.teamnames[7][0] = '\0'; g_MpSetupSaveFile.tracknum = -1; - func0f18c3e4(); + mpEnableAllMultiTracks(); g_MpSetupSaveFile.usingmultipletunes = false; g_MpSetupSaveFile.unk89 = 0; g_MpSetupSaveFile.locktype = MPLOCKTYPE_NONE; diff --git a/src/game/mplayer.c b/src/game/mplayer.c index 97f1aa057..5fc76a93d 100644 --- a/src/game/mplayer.c +++ b/src/game/mplayer.c @@ -5460,79 +5460,52 @@ glabel func0f18c2b0 /* f18c300: 27bd0018 */ addiu $sp,$sp,0x18 ); -GLOBAL_ASM( -glabel func0f18c304 -/* f18c304: 27bdffe8 */ addiu $sp,$sp,-24 -/* f18c308: afbf0014 */ sw $ra,0x14($sp) -/* f18c30c: 0fc63065 */ jal mpGetTrackNumAtSlotIndex -/* f18c310: afa5001c */ sw $a1,0x1c($sp) -/* f18c314: 8fae001c */ lw $t6,0x1c($sp) -/* f18c318: 3c18800b */ lui $t8,%hi(g_MpSetup+0x28) -/* f18c31c: 2718cbb0 */ addiu $t8,$t8,%lo(g_MpSetup+0x28) -/* f18c320: 11c0000d */ beqz $t6,.L0f18c358 -/* f18c324: 304a0007 */ andi $t2,$v0,0x7 -/* f18c328: 000278c3 */ sra $t7,$v0,0x3 -/* f18c32c: 3c19800b */ lui $t9,%hi(g_MpSetup+0x28) -/* f18c330: 2739cbb0 */ addiu $t9,$t9,%lo(g_MpSetup+0x28) -/* f18c334: 31f800ff */ andi $t8,$t7,0xff -/* f18c338: 03191821 */ addu $v1,$t8,$t9 -/* f18c33c: 90680065 */ lbu $t0,0x65($v1) -/* f18c340: 30490007 */ andi $t1,$v0,0x7 -/* f18c344: 240a0001 */ addiu $t2,$zero,0x1 -/* f18c348: 012a6004 */ sllv $t4,$t2,$t1 -/* f18c34c: 010c6825 */ or $t5,$t0,$t4 -/* f18c350: 1000000a */ beqz $zero,.L0f18c37c -/* f18c354: a06d0065 */ sb $t5,0x65($v1) -.L0f18c358: -/* f18c358: 000270c3 */ sra $t6,$v0,0x3 -/* f18c35c: 31cf00ff */ andi $t7,$t6,0xff -/* f18c360: 01f81821 */ addu $v1,$t7,$t8 -/* f18c364: 90790065 */ lbu $t9,0x65($v1) -/* f18c368: 24090001 */ addiu $t1,$zero,0x1 -/* f18c36c: 01494004 */ sllv $t0,$t1,$t2 -/* f18c370: 01006027 */ nor $t4,$t0,$zero -/* f18c374: 032c6824 */ and $t5,$t9,$t4 -/* f18c378: a06d0065 */ sb $t5,0x65($v1) -.L0f18c37c: -/* f18c37c: 8fbf0014 */ lw $ra,0x14($sp) -/* f18c380: 27bd0018 */ addiu $sp,$sp,0x18 -/* f18c384: 03e00008 */ jr $ra -/* f18c388: 00000000 */ sll $zero,$zero,0x0 -); +void mpSetMultiTrackSlotEnabled(s32 slot, bool enable) +{ + s32 tracknum = mpGetTrackNumAtSlotIndex(slot); + u8 value = 1 << (tracknum & 7); + u8 index = tracknum >> 3; -void func0f18c38c(s32 slot) + if (enable) { + g_MpSetupSaveFile.multipletracknums[index] |= value; + } else { + g_MpSetupSaveFile.multipletracknums[index] &= ~value; + } +} + +void mpSetTrackSlotEnabled(s32 slot) { if (mpGetUsingMultipleTunes()) { - func0f18c304(slot, 1 - func0f18c2b0(slot)); + mpSetMultiTrackSlotEnabled(slot, 1 - func0f18c2b0(slot)); } else { g_MpSetupSaveFile.tracknum = mpGetTrackNumAtSlotIndex(slot); } } -void func0f18c3e4(void) +void mpEnableAllMultiTracks(void) { s32 i; for (i = 0; i != 6; i++) { - g_MpSetupSaveFile.unk8d[i] = -1; + g_MpSetupSaveFile.multipletracknums[i] = 0xff; } } -void func0f18c40c(void) +void mpDisableAllMultiTracks(void) { s32 i; for (i = 0; i != 6; i++) { - g_MpSetupSaveFile.unk8d[i] = 0; + g_MpSetupSaveFile.multipletracknums[i] = 0; } } -void func0f18c430(void) +void mpRandomiseMultiTracks(void) { s32 i; for (i = 0; i != 6; i++) { - g_MpSetupSaveFile.unk8d[i] = random(); + g_MpSetupSaveFile.multipletracknums[i] = random(); } } diff --git a/src/include/game/mplayer.h b/src/include/game/mplayer.h index ca05c6aa5..766107508 100644 --- a/src/include/game/mplayer.h +++ b/src/include/game/mplayer.h @@ -71,11 +71,11 @@ char *mpGetTrackName(s32 slotindex); void mpSetUsingMultipleTunes(bool enable); bool mpGetUsingMultipleTunes(void); u32 func0f18c2b0(s32 slot); -void func0f18c304(s32 slot, u32 arg1); -void func0f18c38c(s32 slot); -void func0f18c3e4(void); -void func0f18c40c(void); -void func0f18c430(void); +void mpSetMultiTrackSlotEnabled(s32 slot, bool enable); +void mpSetTrackSlotEnabled(s32 slot); +void mpEnableAllMultiTracks(void); +void mpDisableAllMultiTracks(void); +void mpRandomiseMultiTracks(void); void mpSetTrackToRandom(void); s32 mpGetCurrentTrackSlotNum(void); u32 func0f18c4c0(void); diff --git a/src/include/types.h b/src/include/types.h index e3e8d1f8f..233ea2a00 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4165,7 +4165,7 @@ struct savefile_setup { /*0x62*/ u8 usingmultipletunes; /*0x63*/ u8 unk8b; /*0x64*/ s8 tracknum; // -1 = random - /*0x8d*/ u8 unk8d[5]; + /*0x8d*/ u8 multipletracknums[5]; }; struct mpscenario {