Attempt to decompile mpChooseTrack

This commit is contained in:
Ryan Dwyer 2022-01-09 10:54:15 +10:00
parent 4167ec8c89
commit 35ec39d188
4 changed files with 95 additions and 8 deletions

View File

@ -611,7 +611,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
s32 i;
if (g_Vars.normmplayerisrunning) {
return mpChooseRandomTrack();
return mpChooseTrack();
}
i = 0;
@ -619,7 +619,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
while (g_StageTracks[i].stagenum) {
if (g_StageTracks[i].stagenum == stagenum) {
if (g_StageTracks[i].primarytrack == -1) {
return mpChooseRandomTrack();
return mpChooseTrack();
}
return g_StageTracks[i].primarytrack;
@ -628,7 +628,7 @@ s32 stageGetPrimaryTrack(s32 stagenum)
i++;
}
return mpChooseRandomTrack();
return mpChooseTrack();
}
s32 stageGetAmbientTrack(s32 stagenum)

View File

@ -276,7 +276,7 @@ void mpInit(void)
}
}
g_MpLockInfo.unk04 = 0xffffffff;
g_MpLockInfo.unk04 = -1;
}
// Assign aibot commands to active menu slots
@ -7499,7 +7499,7 @@ s32 mpGetCurrentTrackSlotNum(void)
#if VERSION >= VERSION_PAL_FINAL
GLOBAL_ASM(
glabel mpChooseRandomTrack
glabel mpChooseTrack
/* f18d564: 27bdffc8 */ addiu $sp,$sp,-56
/* f18d568: afbf0034 */ sw $ra,0x34($sp)
/* f18d56c: afb60030 */ sw $s6,0x30($sp)
@ -7713,7 +7713,7 @@ glabel mpChooseRandomTrack
);
#else
GLOBAL_ASM(
glabel mpChooseRandomTrack
glabel mpChooseTrack
/* f18c4c0: 27bdffc8 */ addiu $sp,$sp,-56
/* f18c4c4: afbf0034 */ sw $ra,0x34($sp)
/* f18c4c8: afb60030 */ sw $s6,0x30($sp)
@ -7917,6 +7917,93 @@ glabel mpChooseRandomTrack
);
#endif
// Mismatch: goal uses shifting to calculate the offset into g_MpTracks
// while the below uses multu.
//s32 mpChooseTrack(void)
//{
// s32 i;
// s32 tracknum;
//
// if (mpGetUsingMultipleTunes()) {
// s32 numunlocked = mpGetNumUnlockedTracks();
// s32 numselected = 0;
//
// // 508
// for (i = 0; i < numunlocked; i++) {
// if (mpIsMultiTrackSlotEnabled(i)) {
// numselected++;
// }
// }
//
// // 528
// if (numselected == 0) {
// do {
// tracknum = mpGetTrackNumAtSlotIndex(random() % numunlocked);
// } while (tracknum == g_MpLockInfo.unk04);
//
// // 568
// g_MpLockInfo.unk04 = tracknum;
// g_MusicLife60 = g_MpTracks[tracknum].duration * PALDOWN(60);
//
// return g_MpTracks[tracknum].musicnum;
// }
//
// // 5a4
// do {
// s32 selectionindex = random() % numselected;
// s32 selectioncount = 0;
// tracknum = -1; // s3
//
// // 5d8
// for (i = 0; i < numunlocked; i++) {
// if (mpIsMultiTrackSlotEnabled(i)) {
// if (selectionindex == selectioncount) {
// tracknum = i;
// }
//
// selectioncount++;
// }
// }
//
// // 608
// if (tracknum == -1) {
// g_MusicLife60 = g_MpTracks[0].duration * PALDOWN(60);
// return g_MpTracks[0].musicnum;
// }
//
// // 634
// tracknum = mpGetTrackNumAtSlotIndex(tracknum);
// } while (numselected > 1 && tracknum == g_MpLockInfo.unk04);
//
// // 654
// g_MpLockInfo.unk04 = tracknum;
// g_MusicLife60 = g_MpTracks[tracknum].duration * PALDOWN(60);
//
// return g_MpTracks[tracknum].musicnum;
// }
//
// // 690
// tracknum = mpGetCurrentTrackSlotNum();
//
// if (tracknum < 0) {
// s32 numunlocked = mpGetNumUnlockedTracks();
//
// do {
// tracknum = mpGetTrackNumAtSlotIndex(random() % numunlocked);
// } while (tracknum == g_MpLockInfo.unk04);
//
// g_MpLockInfo.unk04 = tracknum;
// g_MusicLife60 = g_MpTracks[tracknum].duration * PALDOWN(60);
// return g_MpTracks[tracknum].musicnum;
// }
//
// tracknum = mpGetTrackNumAtSlotIndex(tracknum);
// g_MpLockInfo.unk04 = tracknum;
// g_MusicLife60 = g_MpTracks[g_MpLockInfo.unk04].duration * PALDOWN(60);
//
// return g_MpTracks[tracknum].musicnum;
//}
struct mpchrconfig *mpGetChrConfigBySlotNum(s32 slot)
{
s32 count = 0;

View File

@ -79,7 +79,7 @@ void mpDisableAllMultiTracks(void);
void mpRandomiseMultiTracks(void);
void mpSetTrackToRandom(void);
s32 mpGetCurrentTrackSlotNum(void);
u32 mpChooseRandomTrack(void);
s32 mpChooseTrack(void);
struct mpchrconfig *mpGetChrConfigBySlotNum(s32 slot);
s32 mpGetChrIndexBySlotNum(s32 slot);
s32 mpGetNumChrs(void);

View File

@ -6133,7 +6133,7 @@ struct mplockinfo {
s8 lastwinner;
s8 lastloser;
s8 unk03;
s32 unk04; // might not be part of struct
s32 unk04;
};
struct var8009da60 {