From 9a541e5c6bd8b99ee664c23b24805d172e6d891d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 19 Jan 2020 10:34:39 +1000 Subject: [PATCH] Attempt to decompile mpIsTrackUnlocked --- src/game/game_187770.c | 20 ++++++++++ src/include/constants.h | 19 ++++----- src/include/game/game_187770.h | 2 +- src/include/types.h | 2 +- src/setup/setup_020df0.c | 72 +++++++++++++++++----------------- 5 files changed, 68 insertions(+), 47 deletions(-) diff --git a/src/game/game_187770.c b/src/game/game_187770.c index d11d49071..22db2b193 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -5584,6 +5584,26 @@ glabel mpIsTrackUnlocked /* f18c134: 00601025 */ or $v0,$v1,$zero ); +// Mismatch because the compiler optimises out the unlocked variable +//bool mpIsTrackUnlocked(s32 tracknum) +//{ +// s16 stageindex = g_MpTracks[tracknum].unlockstage; +// bool unlocked = false; +// u32 i; +// +// if (stageindex < 0 || stageindex >= NUM_SOLONORMALSTAGES) { +// return true; +// } +// +// for (i = 0; i != 3; i++) { +// if (g_SoloSaveFile.besttimes[stageindex][i]) { +// return true; +// } +// } +// +// return unlocked; +//} + s32 mpGetTrackSlotIndex(s32 tracknum) { s32 i; diff --git a/src/include/constants.h b/src/include/constants.h index 835a2114e..2f237d1f3 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -552,15 +552,16 @@ #define MPSCENARIO_KINGOFTHEHILL 4 #define MPSCENARIO_CAPTURETHECASE 5 -#define NUM_AICOMMANDS 481 -#define NUM_CHALLENGES 30 -#define NUM_CHEATS 42 -#define NUM_FIRESLOTS 20 -#define NUM_MPBOTCOMMANDS 14 -#define NUM_MPTRACKS 42 -#define NUM_SOLOSTAGES 21 -#define NUM_STAGES 90 -#define NUM_WEAPONS 94 +#define NUM_AICOMMANDS 481 +#define NUM_CHALLENGES 30 +#define NUM_CHEATS 42 +#define NUM_FIRESLOTS 20 +#define NUM_MPBOTCOMMANDS 14 +#define NUM_MPTRACKS 42 +#define NUM_SOLONORMALSTAGES 17 +#define NUM_SOLOSTAGES 21 +#define NUM_STAGES 90 +#define NUM_WEAPONS 94 // obj->flags #define OBJECTFLAG0_00000001 0x00000001 // Not used in scripts diff --git a/src/include/game/game_187770.h b/src/include/game/game_187770.h index ede0445ce..318345a88 100644 --- a/src/include/game/game_187770.h +++ b/src/include/game/game_187770.h @@ -62,7 +62,7 @@ u32 mpGetLockType(void); u32 mpGetLockPlayerNum(void); u32 func0f18bfd8(void); u32 func0f18c014(void); -bool mpIsTrackUnlocked(s32 arg0); +bool mpIsTrackUnlocked(s32 tracknum); s32 mpGetTrackSlotIndex(s32 tracknum); s32 mpGetTrackNumAtSlotIndex(s32 slotindex); s32 func0f18c200(void); diff --git a/src/include/types.h b/src/include/types.h index dea574212..376870cdf 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2884,7 +2884,7 @@ struct mptrack { u16 audioid : 7; u16 duration : 9; s16 name; - s16 unlockcategory; + s16 unlockstage; }; struct stageoverviewentry { diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index 9f786e4e9..9105eb06d 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -12170,7 +12170,7 @@ u32 var80087a6c = 0x0000002c; // 2da90 struct mptrack g_MpTracks[NUM_MPTRACKS] = { - // Audio ID, duration, name, unlock category + // Audio ID, duration, name, unlock after stage /*0x00*/ { 0x3a, 160, 0x587c, -1 }, /*0x01*/ { 0x3b, 170, 0x587d, -1 }, /*0x02*/ { 0x3d, 170, 0x587e, -1 }, @@ -12178,41 +12178,41 @@ struct mptrack g_MpTracks[NUM_MPTRACKS] = { /*0x04*/ { 0x3f, 200, 0x5880, -1 }, /*0x05*/ { 0x40, 197, 0x5881, -1 }, /*0x06*/ { 0x0d, 120, 0x5882, -1 }, - /*0x07*/ { 0x09, 120, 0x5883, 0 }, - /*0x08*/ { 0x10, 120, 0x5884, 0 }, - /*0x09*/ { 0x12, 120, 0x5885, 1 }, - /*0x0a*/ { 0x13, 120, 0x5886, 1 }, - /*0x0b*/ { 0x02, 120, 0x5887, 2 }, - /*0x0c*/ { 0x11, 120, 0x5888, 2 }, - /*0x0d*/ { 0x0c, 120, 0x5889, 3 }, - /*0x0e*/ { 0x27, 120, 0x588a, 3 }, - /*0x0f*/ { 0x0e, 120, 0x588b, 4 }, - /*0x10*/ { 0x28, 120, 0x588c, 4 }, - /*0x11*/ { 0x0f, 120, 0x588d, 5 }, - /*0x12*/ { 0x29, 120, 0x588e, 5 }, - /*0x13*/ { 0x14, 120, 0x588f, 6 }, - /*0x14*/ { 0x2a, 120, 0x5890, 6 }, - /*0x15*/ { 0x16, 120, 0x5891, 7 }, - /*0x16*/ { 0x32, 120, 0x5892, 7 }, - /*0x17*/ { 0x06, 120, 0x5893, 8 }, - /*0x18*/ { 0x33, 120, 0x5894, 8 }, - /*0x19*/ { 0x17, 120, 0x5895, 9 }, - /*0x1a*/ { 0x34, 120, 0x5896, 9 }, - /*0x1b*/ { 0x18, 120, 0x5897, 10 }, - /*0x1c*/ { 0x35, 120, 0x5898, 10 }, - /*0x1d*/ { 0x1d, 120, 0x5899, 11 }, - /*0x1e*/ { 0x1e, 120, 0x589a, 11 }, - /*0x1f*/ { 0x1c, 120, 0x589b, 12 }, - /*0x20*/ { 0x36, 120, 0x589c, 12 }, - /*0x21*/ { 0x07, 120, 0x589d, 13 }, - /*0x22*/ { 0x37, 120, 0x589e, 13 }, - /*0x23*/ { 0x04, 120, 0x589f, 14 }, - /*0x24*/ { 0x24, 120, 0x58a0, 14 }, - /*0x25*/ { 0x1f, 120, 0x58a1, 15 }, - /*0x26*/ { 0x20, 120, 0x58a2, 15 }, - /*0x27*/ { 0x21, 120, 0x58a3, 16 }, - /*0x28*/ { 0x38, 120, 0x58a4, 16 }, - /*0x29*/ { 0x58, 120, 0x58a5, 16 }, + /*0x07*/ { 0x09, 120, 0x5883, SOLOSTAGEINDEX_DEFECTION }, + /*0x08*/ { 0x10, 120, 0x5884, SOLOSTAGEINDEX_DEFECTION }, + /*0x09*/ { 0x12, 120, 0x5885, SOLOSTAGEINDEX_INVESTIGATION }, + /*0x0a*/ { 0x13, 120, 0x5886, SOLOSTAGEINDEX_INVESTIGATION }, + /*0x0b*/ { 0x02, 120, 0x5887, SOLOSTAGEINDEX_EXTRACTION }, + /*0x0c*/ { 0x11, 120, 0x5888, SOLOSTAGEINDEX_EXTRACTION }, + /*0x0d*/ { 0x0c, 120, 0x5889, SOLOSTAGEINDEX_VILLA }, + /*0x0e*/ { 0x27, 120, 0x588a, SOLOSTAGEINDEX_VILLA }, + /*0x0f*/ { 0x0e, 120, 0x588b, SOLOSTAGEINDEX_CHICAGO }, + /*0x10*/ { 0x28, 120, 0x588c, SOLOSTAGEINDEX_CHICAGO }, + /*0x11*/ { 0x0f, 120, 0x588d, SOLOSTAGEINDEX_G5BUILDING }, + /*0x12*/ { 0x29, 120, 0x588e, SOLOSTAGEINDEX_G5BUILDING }, + /*0x13*/ { 0x14, 120, 0x588f, SOLOSTAGEINDEX_INFILTRATION }, + /*0x14*/ { 0x2a, 120, 0x5890, SOLOSTAGEINDEX_INFILTRATION }, + /*0x15*/ { 0x16, 120, 0x5891, SOLOSTAGEINDEX_RESCUE }, + /*0x16*/ { 0x32, 120, 0x5892, SOLOSTAGEINDEX_RESCUE }, + /*0x17*/ { 0x06, 120, 0x5893, SOLOSTAGEINDEX_ESCAPE }, + /*0x18*/ { 0x33, 120, 0x5894, SOLOSTAGEINDEX_ESCAPE }, + /*0x19*/ { 0x17, 120, 0x5895, SOLOSTAGEINDEX_AIRBASE }, + /*0x1a*/ { 0x34, 120, 0x5896, SOLOSTAGEINDEX_AIRBASE }, + /*0x1b*/ { 0x18, 120, 0x5897, SOLOSTAGEINDEX_AIRFORCEONE }, + /*0x1c*/ { 0x35, 120, 0x5898, SOLOSTAGEINDEX_AIRFORCEONE }, + /*0x1d*/ { 0x1d, 120, 0x5899, SOLOSTAGEINDEX_CRASHSITE }, + /*0x1e*/ { 0x1e, 120, 0x589a, SOLOSTAGEINDEX_CRASHSITE }, + /*0x1f*/ { 0x1c, 120, 0x589b, SOLOSTAGEINDEX_PELAGIC }, + /*0x20*/ { 0x36, 120, 0x589c, SOLOSTAGEINDEX_PELAGIC }, + /*0x21*/ { 0x07, 120, 0x589d, SOLOSTAGEINDEX_DEEPSEA }, + /*0x22*/ { 0x37, 120, 0x589e, SOLOSTAGEINDEX_DEEPSEA }, + /*0x23*/ { 0x04, 120, 0x589f, SOLOSTAGEINDEX_DEFENSE }, + /*0x24*/ { 0x24, 120, 0x58a0, SOLOSTAGEINDEX_DEFENSE }, + /*0x25*/ { 0x1f, 120, 0x58a1, SOLOSTAGEINDEX_ATTACKSHIP }, + /*0x26*/ { 0x20, 120, 0x58a2, SOLOSTAGEINDEX_ATTACKSHIP }, + /*0x27*/ { 0x21, 120, 0x58a3, SOLOSTAGEINDEX_SKEDARRUINS }, + /*0x28*/ { 0x38, 120, 0x58a4, SOLOSTAGEINDEX_SKEDARRUINS }, + /*0x29*/ { 0x58, 120, 0x58a5, SOLOSTAGEINDEX_SKEDARRUINS }, }; // 2db8c