mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-21 07:42:19 -04:00
Decompile scenarioScenarioMenuHandler
This commit is contained in:
@@ -1258,7 +1258,7 @@ s32 mpForceUnlockSetupFeatures(struct mpsetup *setup, u8 *array, s32 len)
|
||||
|
||||
// Force unlock the scenario
|
||||
if (setup->scenario <= MPSCENARIO_CAPTURETHECASE) {
|
||||
s32 featurenum = g_MpScenarioOverviews[setup->scenario].unlockfeature;
|
||||
s32 featurenum = g_MpScenarioOverviews[setup->scenario].requirefeature;
|
||||
|
||||
if (featurenum) {
|
||||
index = mpForceUnlockFeature(featurenum, array, index, len);
|
||||
@@ -1330,7 +1330,7 @@ void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s3
|
||||
} else if (challengeindex >= 20) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_STAGE_CARPARK, array, index, len);
|
||||
} else if (challengeindex >= 15) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_4D, array, index, len);
|
||||
index = mpForceUnlockFeature(MPFEATURE_SCENARIO_PAC, array, index, len);
|
||||
}
|
||||
|
||||
if (challengeindex >= 10) {
|
||||
@@ -1342,7 +1342,7 @@ void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s3
|
||||
}
|
||||
|
||||
if (challengeindex >= 15) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_4D, array, index, len);
|
||||
index = mpForceUnlockFeature(MPFEATURE_SCENARIO_PAC, array, index, len);
|
||||
}
|
||||
|
||||
if (challengeindex >= 20) {
|
||||
@@ -1623,7 +1623,7 @@ bool mpIsFeatureUnlockedByPlayer(u32 numplayers, s32 featurenum)
|
||||
return (g_MpFeaturesUnlocked[featurenum] & (2 << numplayers)) != 0;
|
||||
}
|
||||
|
||||
bool func0f19c96c(s32 featurenum)
|
||||
bool mpIsFeatureUnlockedByDefault(s32 featurenum)
|
||||
{
|
||||
if (featurenum) {
|
||||
return false;
|
||||
|
||||
+58
-58
@@ -3993,26 +3993,26 @@ struct mphead g_MpBeauHeads[NUM_MPBEAUHEADS] = {
|
||||
struct mphead g_MpHeads[75] = {
|
||||
// head, require feature
|
||||
{ /*0x00*/ HEAD_DARK_COMBAT, 0 },
|
||||
{ /*0x01*/ HEAD_DARK_FROCK, MPFEATURE_41 },
|
||||
{ /*0x02*/ HEAD_DARKAQUA, MPFEATURE_45 },
|
||||
{ /*0x01*/ HEAD_DARK_FROCK, MPFEATURE_CHR_CI },
|
||||
{ /*0x02*/ HEAD_DARKAQUA, MPFEATURE_CHR_PELAGIC },
|
||||
{ /*0x03*/ HEAD_DARK_SNOW, MPFEATURE_4A },
|
||||
{ /*0x04*/ HEAD_ELVIS, MPFEATURE_3D },
|
||||
{ /*0x05*/ HEAD_ELVIS_GOGS, MPFEATURE_3D },
|
||||
{ /*0x04*/ HEAD_ELVIS, MPFEATURE_CHR_ELVIS },
|
||||
{ /*0x05*/ HEAD_ELVIS_GOGS, MPFEATURE_CHR_ELVIS },
|
||||
{ /*0x06*/ HEAD_CARRINGTON, 0 },
|
||||
{ /*0x07*/ HEAD_MRBLONDE, MPFEATURE_38 },
|
||||
{ /*0x07*/ HEAD_MRBLONDE, MPFEATURE_CHR_MRBLONDE },
|
||||
{ /*0x08*/ HEAD_CASSANDRA, 0 },
|
||||
{ /*0x09*/ HEAD_TRENT, MPFEATURE_35 },
|
||||
{ /*0x0a*/ HEAD_JONATHAN, MPFEATURE_3A },
|
||||
{ /*0x09*/ HEAD_TRENT, MPFEATURE_CHR_TRENT },
|
||||
{ /*0x0a*/ HEAD_JONATHAN, MPFEATURE_CHR_INFILTRATION },
|
||||
{ /*0x0b*/ HEAD_VD, 0 },
|
||||
{ /*0x0c*/ HEAD_PRESIDENT, MPFEATURE_41 },
|
||||
{ /*0x0c*/ HEAD_PRESIDENT, MPFEATURE_CHR_CI },
|
||||
{ /*0x0d*/ HEAD_DDSHOCK, 0 },
|
||||
{ /*0x0e*/ HEAD_BIOTECH, MPFEATURE_3C },
|
||||
{ /*0x0f*/ HEAD_DDSNIPER, MPFEATURE_34 },
|
||||
{ /*0x10*/ HEAD_A51FACEPLATE, MPFEATURE_3A },
|
||||
{ /*0x0e*/ HEAD_BIOTECH, MPFEATURE_CHR_BIOTECH },
|
||||
{ /*0x0f*/ HEAD_DDSNIPER, MPFEATURE_CHR_VILLACHRS },
|
||||
{ /*0x10*/ HEAD_A51FACEPLATE, MPFEATURE_CHR_INFILTRATION },
|
||||
{ /*0x11*/ HEAD_SECRETARY, 0 },
|
||||
{ /*0x12*/ HEAD_FEM_GUARD, MPFEATURE_32 },
|
||||
{ /*0x13*/ HEAD_FEM_GUARD2, MPFEATURE_32 },
|
||||
{ /*0x14*/ HEAD_MAIAN_S, MPFEATURE_3D },
|
||||
{ /*0x12*/ HEAD_FEM_GUARD, MPFEATURE_CHR_FEMGUARD },
|
||||
{ /*0x13*/ HEAD_FEM_GUARD2, MPFEATURE_CHR_FEMGUARD },
|
||||
{ /*0x14*/ HEAD_MAIAN_S, MPFEATURE_CHR_ELVIS },
|
||||
{ /*0x15*/ HEAD_JON, 0 },
|
||||
{ /*0x16*/ HEAD_BEAU1, 0 },
|
||||
{ /*0x17*/ HEAD_ROSS, 0 },
|
||||
@@ -4106,62 +4106,62 @@ struct botprofile g_BotProfiles[] = {
|
||||
struct mpbody g_MpBodies[NUM_MPBODIES] = {
|
||||
// global body ID, name, head, require feature
|
||||
/*0x00*/ { BODY_DARK_COMBAT, L_OPTIONS_016, HEAD_DARK_COMBAT, 0 },
|
||||
/*0x01*/ { BODY_DARK_TRENCH, L_OPTIONS_017, HEAD_DARK_COMBAT, MPFEATURE_46 },
|
||||
/*0x02*/ { BODY_DARK_FROCK, L_OPTIONS_018, HEAD_DARK_FROCK, MPFEATURE_41 },
|
||||
/*0x03*/ { BODY_DARK_RIPPED, L_OPTIONS_019, HEAD_DARK_FROCK, MPFEATURE_41 },
|
||||
/*0x04*/ { BODY_DARK_AF1, L_OPTIONS_020, HEAD_DARK_COMBAT, MPFEATURE_3F },
|
||||
/*0x05*/ { BODY_DARK_LEATHER, L_MPWEAPONS_156, HEAD_DARK_COMBAT, MPFEATURE_37 },
|
||||
/*0x06*/ { BODY_DARK_NEGOTIATOR, L_MPWEAPONS_157, HEAD_DARK_COMBAT, MPFEATURE_34 },
|
||||
/*0x07*/ { BODY_DARKWET, L_OPTIONS_021, HEAD_DARKAQUA, MPFEATURE_45 },
|
||||
/*0x08*/ { BODY_DARKAQUALUNG, L_OPTIONS_022, HEAD_DARKAQUA, MPFEATURE_45 },
|
||||
/*0x01*/ { BODY_DARK_TRENCH, L_OPTIONS_017, HEAD_DARK_COMBAT, MPFEATURE_CHR_JOTRENCH },
|
||||
/*0x02*/ { BODY_DARK_FROCK, L_OPTIONS_018, HEAD_DARK_FROCK, MPFEATURE_CHR_CI },
|
||||
/*0x03*/ { BODY_DARK_RIPPED, L_OPTIONS_019, HEAD_DARK_FROCK, MPFEATURE_CHR_CI },
|
||||
/*0x04*/ { BODY_DARK_AF1, L_OPTIONS_020, HEAD_DARK_COMBAT, MPFEATURE_CHR_AF1 },
|
||||
/*0x05*/ { BODY_DARK_LEATHER, L_MPWEAPONS_156, HEAD_DARK_COMBAT, MPFEATURE_CHR_G5 },
|
||||
/*0x06*/ { BODY_DARK_NEGOTIATOR, L_MPWEAPONS_157, HEAD_DARK_COMBAT, MPFEATURE_CHR_VILLACHRS },
|
||||
/*0x07*/ { BODY_DARKWET, L_OPTIONS_021, HEAD_DARKAQUA, MPFEATURE_CHR_PELAGIC },
|
||||
/*0x08*/ { BODY_DARKAQUALUNG, L_OPTIONS_022, HEAD_DARKAQUA, MPFEATURE_CHR_PELAGIC },
|
||||
/*0x09*/ { BODY_DARKSNOW, L_OPTIONS_023, HEAD_DARK_SNOW, MPFEATURE_4A },
|
||||
/*0x0a*/ { BODY_DARKLAB, L_OPTIONS_024, HEAD_DARK_COMBAT, MPFEATURE_3A },
|
||||
/*0x0b*/ { BODY_THEKING, L_OPTIONS_025, HEAD_ELVIS, MPFEATURE_3D },
|
||||
/*0x0c*/ { BODY_ELVIS1, L_OPTIONS_026, HEAD_ELVIS, MPFEATURE_3D },
|
||||
/*0x0d*/ { BODY_ELVISWAISTCOAT, L_MPWEAPONS_158, HEAD_ELVIS, MPFEATURE_3D },
|
||||
/*0x0a*/ { BODY_DARKLAB, L_OPTIONS_024, HEAD_DARK_COMBAT, MPFEATURE_CHR_INFILTRATION },
|
||||
/*0x0b*/ { BODY_THEKING, L_OPTIONS_025, HEAD_ELVIS, MPFEATURE_CHR_ELVIS },
|
||||
/*0x0c*/ { BODY_ELVIS1, L_OPTIONS_026, HEAD_ELVIS, MPFEATURE_CHR_ELVIS },
|
||||
/*0x0d*/ { BODY_ELVISWAISTCOAT, L_MPWEAPONS_158, HEAD_ELVIS, MPFEATURE_CHR_ELVIS },
|
||||
/*0x0e*/ { BODY_CARRINGTON, L_OPTIONS_027, HEAD_CARRINGTON, 0 },
|
||||
/*0x0f*/ { BODY_CARREVENINGSUIT, L_OPTIONS_028, HEAD_CARRINGTON, MPFEATURE_41 },
|
||||
/*0x10*/ { BODY_MRBLONDE, L_OPTIONS_029, HEAD_MRBLONDE, MPFEATURE_38 },
|
||||
/*0x0f*/ { BODY_CARREVENINGSUIT, L_OPTIONS_028, HEAD_CARRINGTON, MPFEATURE_CHR_CI },
|
||||
/*0x10*/ { BODY_MRBLONDE, L_OPTIONS_029, HEAD_MRBLONDE, MPFEATURE_CHR_MRBLONDE },
|
||||
/*0x11*/ { BODY_CASSANDRA, L_OPTIONS_030, HEAD_CASSANDRA, 0 },
|
||||
/*0x12*/ { BODY_TRENT, L_OPTIONS_031, HEAD_TRENT, MPFEATURE_35 },
|
||||
/*0x12*/ { BODY_TRENT, L_OPTIONS_031, HEAD_TRENT, MPFEATURE_CHR_TRENT },
|
||||
/*0x13*/ { BODY_JONATHAN, L_OPTIONS_032, HEAD_JONATHAN, MPFEATURE_4C },
|
||||
/*0x14*/ { BODY_CILABTECH, L_OPTIONS_033, 1000, 0 },
|
||||
/*0x15*/ { BODY_CIFEMTECH, L_OPTIONS_034, 1000, 0 },
|
||||
/*0x16*/ { BODY_CISOLDIER, L_OPTIONS_035, 1000, 0 },
|
||||
/*0x17*/ { BODY_DDSHOCK, L_OPTIONS_036, HEAD_DDSHOCK, 0 },
|
||||
/*0x18*/ { BODY_FEM_GUARD, L_OPTIONS_037, 1000, MPFEATURE_32 },
|
||||
/*0x18*/ { BODY_FEM_GUARD, L_OPTIONS_037, 1000, MPFEATURE_CHR_FEMGUARD },
|
||||
/*0x19*/ { BODY_DD_SECGUARD, L_OPTIONS_038, 1000, 0 },
|
||||
/*0x1a*/ { BODY_DD_GUARD, L_OPTIONS_039, 1000, 0 },
|
||||
/*0x1b*/ { BODY_DD_SHOCK_INF, L_OPTIONS_040, 1000, 0 },
|
||||
/*0x1c*/ { BODY_SECRETARY, L_OPTIONS_041, 1000, 0 },
|
||||
/*0x1d*/ { BODY_OFFICEWORKER, L_OPTIONS_042, 1000, MPFEATURE_33 },
|
||||
/*0x1e*/ { BODY_OFFICEWORKER2, L_OPTIONS_043, 1000, MPFEATURE_33 },
|
||||
/*0x1f*/ { BODY_NEGOTIATOR, L_OPTIONS_044, 1000, MPFEATURE_34 },
|
||||
/*0x20*/ { BODY_DDSNIPER, L_OPTIONS_045, HEAD_DDSNIPER, MPFEATURE_34 },
|
||||
/*0x21*/ { BODY_G5_GUARD, L_OPTIONS_046, 1000, MPFEATURE_37 },
|
||||
/*0x22*/ { BODY_G5_SWAT_GUARD, L_OPTIONS_047, 1000, MPFEATURE_37 },
|
||||
/*0x23*/ { BODY_CIAGUY, L_OPTIONS_048, 1000, MPFEATURE_39 },
|
||||
/*0x24*/ { BODY_FBIGUY, L_OPTIONS_049, 1000, MPFEATURE_39 },
|
||||
/*0x25*/ { BODY_AREA51GUARD, L_OPTIONS_050, 1000, MPFEATURE_3A },
|
||||
/*0x26*/ { BODY_A51TROOPER, L_OPTIONS_051, 1000, MPFEATURE_3A },
|
||||
/*0x27*/ { BODY_A51AIRMAN, L_OPTIONS_052, 1000, MPFEATURE_3A },
|
||||
/*0x28*/ { BODY_OVERALL, L_OPTIONS_053, 1000, MPFEATURE_3A },
|
||||
/*0x29*/ { BODY_STRIPES, L_OPTIONS_054, 1000, MPFEATURE_44 },
|
||||
/*0x2a*/ { BODY_LABTECH, L_OPTIONS_055, 1000, MPFEATURE_3B },
|
||||
/*0x2b*/ { BODY_FEMLABTECH, L_OPTIONS_056, 1000, MPFEATURE_3B },
|
||||
/*0x2c*/ { BODY_DD_LABTECH, L_OPTIONS_057, 1000, MPFEATURE_3B },
|
||||
/*0x2d*/ { BODY_BIOTECH, L_OPTIONS_058, HEAD_BIOTECH, MPFEATURE_3C },
|
||||
/*0x2e*/ { BODY_ALASKAN_GUARD, L_OPTIONS_059, 1000, MPFEATURE_3E },
|
||||
/*0x2f*/ { BODY_PILOTAF1, L_OPTIONS_060, 1000, MPFEATURE_3F },
|
||||
/*0x30*/ { BODY_STEWARD, L_OPTIONS_061, 1000, MPFEATURE_3F },
|
||||
/*0x31*/ { BODY_STEWARDESS, L_OPTIONS_062, 1000, MPFEATURE_3F },
|
||||
/*0x32*/ { BODY_STEWARDESS_COAT, L_OPTIONS_063, 1000, MPFEATURE_3F },
|
||||
/*0x33*/ { BODY_PRESIDENT, L_OPTIONS_064, HEAD_PRESIDENT, MPFEATURE_41 },
|
||||
/*0x34*/ { BODY_NSA_LACKEY, L_OPTIONS_065, 1000, MPFEATURE_36 },
|
||||
/*0x35*/ { BODY_PRES_SECURITY, L_OPTIONS_066, 1000, MPFEATURE_43 },
|
||||
/*0x36*/ { BODY_PRESIDENT_CLONE2, L_OPTIONS_067, HEAD_PRESIDENT, MPFEATURE_42 },
|
||||
/*0x37*/ { BODY_PELAGIC_GUARD, L_OPTIONS_068, 1000, MPFEATURE_45 },
|
||||
/*0x38*/ { BODY_MAIAN_SOLDIER, L_OPTIONS_069, HEAD_MAIAN_S, MPFEATURE_3D },
|
||||
/*0x1d*/ { BODY_OFFICEWORKER, L_OPTIONS_042, 1000, MPFEATURE_CHR_OFFICEWORKER },
|
||||
/*0x1e*/ { BODY_OFFICEWORKER2, L_OPTIONS_043, 1000, MPFEATURE_CHR_OFFICEWORKER },
|
||||
/*0x1f*/ { BODY_NEGOTIATOR, L_OPTIONS_044, 1000, MPFEATURE_CHR_VILLACHRS },
|
||||
/*0x20*/ { BODY_DDSNIPER, L_OPTIONS_045, HEAD_DDSNIPER, MPFEATURE_CHR_VILLACHRS },
|
||||
/*0x21*/ { BODY_G5_GUARD, L_OPTIONS_046, 1000, MPFEATURE_CHR_G5 },
|
||||
/*0x22*/ { BODY_G5_SWAT_GUARD, L_OPTIONS_047, 1000, MPFEATURE_CHR_G5 },
|
||||
/*0x23*/ { BODY_CIAGUY, L_OPTIONS_048, 1000, MPFEATURE_CHR_CIAFBI },
|
||||
/*0x24*/ { BODY_FBIGUY, L_OPTIONS_049, 1000, MPFEATURE_CHR_CIAFBI },
|
||||
/*0x25*/ { BODY_AREA51GUARD, L_OPTIONS_050, 1000, MPFEATURE_CHR_INFILTRATION },
|
||||
/*0x26*/ { BODY_A51TROOPER, L_OPTIONS_051, 1000, MPFEATURE_CHR_INFILTRATION },
|
||||
/*0x27*/ { BODY_A51AIRMAN, L_OPTIONS_052, 1000, MPFEATURE_CHR_INFILTRATION },
|
||||
/*0x28*/ { BODY_OVERALL, L_OPTIONS_053, 1000, MPFEATURE_CHR_INFILTRATION },
|
||||
/*0x29*/ { BODY_STRIPES, L_OPTIONS_054, 1000, MPFEATURE_CHR_STRIPES },
|
||||
/*0x2a*/ { BODY_LABTECH, L_OPTIONS_055, 1000, MPFEATURE_CHR_LABTECH },
|
||||
/*0x2b*/ { BODY_FEMLABTECH, L_OPTIONS_056, 1000, MPFEATURE_CHR_LABTECH },
|
||||
/*0x2c*/ { BODY_DD_LABTECH, L_OPTIONS_057, 1000, MPFEATURE_CHR_LABTECH },
|
||||
/*0x2d*/ { BODY_BIOTECH, L_OPTIONS_058, HEAD_BIOTECH, MPFEATURE_CHR_BIOTECH },
|
||||
/*0x2e*/ { BODY_ALASKAN_GUARD, L_OPTIONS_059, 1000, MPFEATURE_CHR_ALASKANGUARD },
|
||||
/*0x2f*/ { BODY_PILOTAF1, L_OPTIONS_060, 1000, MPFEATURE_CHR_AF1 },
|
||||
/*0x30*/ { BODY_STEWARD, L_OPTIONS_061, 1000, MPFEATURE_CHR_AF1 },
|
||||
/*0x31*/ { BODY_STEWARDESS, L_OPTIONS_062, 1000, MPFEATURE_CHR_AF1 },
|
||||
/*0x32*/ { BODY_STEWARDESS_COAT, L_OPTIONS_063, 1000, MPFEATURE_CHR_AF1 },
|
||||
/*0x33*/ { BODY_PRESIDENT, L_OPTIONS_064, HEAD_PRESIDENT, MPFEATURE_CHR_CI },
|
||||
/*0x34*/ { BODY_NSA_LACKEY, L_OPTIONS_065, 1000, MPFEATURE_CHR_NSALACKEY },
|
||||
/*0x35*/ { BODY_PRES_SECURITY, L_OPTIONS_066, 1000, MPFEATURE_CHR_PRESSECURITY },
|
||||
/*0x36*/ { BODY_PRESIDENT_CLONE2, L_OPTIONS_067, HEAD_PRESIDENT, MPFEATURE_CHR_PRESCLONE },
|
||||
/*0x37*/ { BODY_PELAGIC_GUARD, L_OPTIONS_068, 1000, MPFEATURE_CHR_PELAGIC },
|
||||
/*0x38*/ { BODY_MAIAN_SOLDIER, L_OPTIONS_069, HEAD_MAIAN_S, MPFEATURE_CHR_ELVIS },
|
||||
/*0x39*/ { BODY_CONNERY, L_OPTIONS_070, 1000, MPFEATURE_8BOTS },
|
||||
/*0x3a*/ { BODY_MOORE, L_OPTIONS_070, 1000, MPFEATURE_8BOTS },
|
||||
/*0x3b*/ { BODY_DALTON, L_OPTIONS_070, 1000, MPFEATURE_8BOTS },
|
||||
|
||||
+106
-255
@@ -5695,262 +5695,113 @@ struct mpscenario g_MpScenarios[6] = {
|
||||
};
|
||||
|
||||
struct mpscenariooverview g_MpScenarioOverviews[] = {
|
||||
// Full name, short name, unlock flags?
|
||||
{ L_MPMENU_246, L_MPMENU_253, 0x00, false }, // "Combat", "Combat"
|
||||
{ L_MPMENU_247, L_MPMENU_254, 0x20, false }, // "Hold the Briefcase", "Briefcase"
|
||||
{ L_MPMENU_248, L_MPMENU_255, 0x4e, false }, // "Hacker Central", "Hacker"
|
||||
{ L_MPMENU_249, L_MPMENU_256, 0x4d, false }, // "Pop a Cap", "Pop"
|
||||
{ L_MPMENU_250, L_MPMENU_257, 0x1f, true }, // "King of the Hill", "Hill"
|
||||
{ L_MPMENU_251, L_MPMENU_258, 0x21, true }, // "Capture the Case", "Capture"
|
||||
// Full name, short name, require feature, team only
|
||||
{ L_MPMENU_246, L_MPMENU_253, 0, false }, // "Combat", "Combat"
|
||||
{ L_MPMENU_247, L_MPMENU_254, MPFEATURE_SCENARIO_HTB, false }, // "Hold the Briefcase", "Briefcase"
|
||||
{ L_MPMENU_248, L_MPMENU_255, MPFEATURE_SCENARIO_HTM, false }, // "Hacker Central", "Hacker"
|
||||
{ L_MPMENU_249, L_MPMENU_256, MPFEATURE_SCENARIO_PAC, false }, // "Pop a Cap", "Pop"
|
||||
{ L_MPMENU_250, L_MPMENU_257, MPFEATURE_SCENARIO_KOH, true }, // "King of the Hill", "Hill"
|
||||
{ L_MPMENU_251, L_MPMENU_258, MPFEATURE_SCENARIO_CTC, true }, // "Capture the Case", "Capture"
|
||||
};
|
||||
|
||||
u32 var8008716c = 0x00000000;
|
||||
u32 var80087170 = 0x50f40000; // "Free for All!"
|
||||
u32 var80087174 = 0x00000004;
|
||||
u32 var80087178 = 0x50f50000; // "-Teamwork-"
|
||||
struct scenariogroup {
|
||||
s32 startindex;
|
||||
u16 textid;
|
||||
};
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel menuhandler00185068
|
||||
.late_rodata
|
||||
glabel var7f1b8964
|
||||
.word menuhandler00185068+0xa8 # f185110
|
||||
glabel var7f1b8968
|
||||
.word menuhandler00185068+0x224 # f18528c
|
||||
glabel var7f1b896c
|
||||
.word menuhandler00185068+0xf4 # f18515c
|
||||
glabel var7f1b8970
|
||||
.word menuhandler00185068+0x260 # f1852c8
|
||||
glabel var7f1b8974
|
||||
.word menuhandler00185068+0x27c # f1852e4
|
||||
glabel var7f1b8978
|
||||
.word menuhandler00185068+0x15c # f1851c4
|
||||
glabel var7f1b897c
|
||||
.word menuhandler00185068+0x1c4 # f18522c
|
||||
.text
|
||||
/* f185068: 27bdffb0 */ addiu $sp,$sp,-80
|
||||
/* f18506c: 3c0e8008 */ lui $t6,%hi(var8008716c)
|
||||
/* f185070: afbf002c */ sw $ra,0x2c($sp)
|
||||
/* f185074: afb50028 */ sw $s5,0x28($sp)
|
||||
/* f185078: afb40024 */ sw $s4,0x24($sp)
|
||||
/* f18507c: afb30020 */ sw $s3,0x20($sp)
|
||||
/* f185080: afb2001c */ sw $s2,0x1c($sp)
|
||||
/* f185084: afb10018 */ sw $s1,0x18($sp)
|
||||
/* f185088: afb00014 */ sw $s0,0x14($sp)
|
||||
/* f18508c: 25ce716c */ addiu $t6,$t6,%lo(var8008716c)
|
||||
/* f185090: 8dc10000 */ lw $at,0x0($t6)
|
||||
/* f185094: 27b30040 */ addiu $s3,$sp,0x40
|
||||
/* f185098: 00c0a825 */ or $s5,$a2,$zero
|
||||
/* f18509c: ae610000 */ sw $at,0x0($s3)
|
||||
/* f1850a0: 8dd90004 */ lw $t9,0x4($t6)
|
||||
/* f1850a4: 00009025 */ or $s2,$zero,$zero
|
||||
/* f1850a8: 24140001 */ addiu $s4,$zero,0x1
|
||||
/* f1850ac: ae790004 */ sw $t9,0x4($s3)
|
||||
/* f1850b0: 8dc10008 */ lw $at,0x8($t6)
|
||||
/* f1850b4: 3c02800a */ lui $v0,%hi(g_Vars+0x4b0)
|
||||
/* f1850b8: 2489ffff */ addiu $t1,$a0,-1
|
||||
/* f1850bc: ae610008 */ sw $at,0x8($s3)
|
||||
/* f1850c0: 8dd9000c */ lw $t9,0xc($t6)
|
||||
/* f1850c4: ae79000c */ sw $t9,0xc($s3)
|
||||
/* f1850c8: 90a80001 */ lbu $t0,0x1($a1)
|
||||
/* f1850cc: 51000009 */ beqzl $t0,.L0f1850f4
|
||||
/* f1850d0: 2d210007 */ sltiu $at,$t1,0x7
|
||||
/* f1850d4: 8c42a470 */ lw $v0,%lo(g_Vars+0x4b0)($v0)
|
||||
/* f1850d8: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f1850dc: 50400004 */ beqzl $v0,.L0f1850f0
|
||||
/* f1850e0: 0000a025 */ or $s4,$zero,$zero
|
||||
/* f1850e4: 54410003 */ bnel $v0,$at,.L0f1850f4
|
||||
/* f1850e8: 2d210007 */ sltiu $at,$t1,0x7
|
||||
/* f1850ec: 0000a025 */ or $s4,$zero,$zero
|
||||
.L0f1850f0:
|
||||
/* f1850f0: 2d210007 */ sltiu $at,$t1,0x7
|
||||
.L0f1850f4:
|
||||
/* f1850f4: 10200098 */ beqz $at,.L0f185358
|
||||
/* f1850f8: 00094880 */ sll $t1,$t1,0x2
|
||||
/* f1850fc: 3c017f1c */ lui $at,%hi(var7f1b8964)
|
||||
/* f185100: 00290821 */ addu $at,$at,$t1
|
||||
/* f185104: 8c298964 */ lw $t1,%lo(var7f1b8964)($at)
|
||||
/* f185108: 01200008 */ jr $t1
|
||||
/* f18510c: 00000000 */ nop
|
||||
/* f185110: 3c108008 */ lui $s0,%hi(g_MpScenarioOverviews)
|
||||
/* f185114: 3c118008 */ lui $s1,%hi(var8008716c)
|
||||
/* f185118: 2631716c */ addiu $s1,$s1,%lo(var8008716c)
|
||||
/* f18511c: 26107148 */ addiu $s0,$s0,%lo(g_MpScenarioOverviews)
|
||||
.L0f185120:
|
||||
/* f185120: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f185124: 92040004 */ lbu $a0,0x4($s0)
|
||||
/* f185128: 50400008 */ beqzl $v0,.L0f18514c
|
||||
/* f18512c: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f185130: 56800005 */ bnezl $s4,.L0f185148
|
||||
/* f185134: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* f185138: 920a0005 */ lbu $t2,0x5($s0)
|
||||
/* f18513c: 55400003 */ bnezl $t2,.L0f18514c
|
||||
/* f185140: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f185144: 26520001 */ addiu $s2,$s2,0x1
|
||||
.L0f185148:
|
||||
/* f185148: 26100006 */ addiu $s0,$s0,0x6
|
||||
.L0f18514c:
|
||||
/* f18514c: 1611fff4 */ bne $s0,$s1,.L0f185120
|
||||
/* f185150: 00000000 */ nop
|
||||
/* f185154: 10000080 */ b .L0f185358
|
||||
/* f185158: aeb20000 */ sw $s2,0x0($s5)
|
||||
/* f18515c: 3c108008 */ lui $s0,%hi(g_MpScenarioOverviews)
|
||||
/* f185160: 3c118008 */ lui $s1,%hi(var8008716c)
|
||||
/* f185164: 2631716c */ addiu $s1,$s1,%lo(var8008716c)
|
||||
/* f185168: 26107148 */ addiu $s0,$s0,%lo(g_MpScenarioOverviews)
|
||||
.L0f18516c:
|
||||
/* f18516c: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f185170: 92040004 */ lbu $a0,0x4($s0)
|
||||
/* f185174: 5040000f */ beqzl $v0,.L0f1851b4
|
||||
/* f185178: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f18517c: 56800005 */ bnezl $s4,.L0f185194
|
||||
/* f185180: 8eac0000 */ lw $t4,0x0($s5)
|
||||
/* f185184: 920b0005 */ lbu $t3,0x5($s0)
|
||||
/* f185188: 5560000a */ bnezl $t3,.L0f1851b4
|
||||
/* f18518c: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f185190: 8eac0000 */ lw $t4,0x0($s5)
|
||||
.L0f185194:
|
||||
/* f185194: 564c0006 */ bnel $s2,$t4,.L0f1851b0
|
||||
/* f185198: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* f18519c: 0fc5b9f1 */ jal langGet
|
||||
/* f1851a0: 96040000 */ lhu $a0,0x0($s0)
|
||||
/* f1851a4: 1000006e */ b .L0f185360
|
||||
/* f1851a8: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
/* f1851ac: 26520001 */ addiu $s2,$s2,0x1
|
||||
.L0f1851b0:
|
||||
/* f1851b0: 26100006 */ addiu $s0,$s0,0x6
|
||||
.L0f1851b4:
|
||||
/* f1851b4: 1611ffed */ bne $s0,$s1,.L0f18516c
|
||||
/* f1851b8: 00000000 */ nop
|
||||
/* f1851bc: 10000067 */ b .L0f18535c
|
||||
/* f1851c0: 00001025 */ or $v0,$zero,$zero
|
||||
/* f1851c4: 3c108008 */ lui $s0,%hi(g_MpScenarioOverviews)
|
||||
/* f1851c8: 26107148 */ addiu $s0,$s0,%lo(g_MpScenarioOverviews)
|
||||
/* f1851cc: 00008825 */ or $s1,$zero,$zero
|
||||
/* f1851d0: 24130006 */ addiu $s3,$zero,0x6
|
||||
.L0f1851d4:
|
||||
/* f1851d4: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f1851d8: 92040004 */ lbu $a0,0x4($s0)
|
||||
/* f1851dc: 5040000d */ beqzl $v0,.L0f185214
|
||||
/* f1851e0: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f1851e4: 56800005 */ bnezl $s4,.L0f1851fc
|
||||
/* f1851e8: 8eb80000 */ lw $t8,0x0($s5)
|
||||
/* f1851ec: 920d0005 */ lbu $t5,0x5($s0)
|
||||
/* f1851f0: 55a00008 */ bnezl $t5,.L0f185214
|
||||
/* f1851f4: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f1851f8: 8eb80000 */ lw $t8,0x0($s5)
|
||||
.L0f1851fc:
|
||||
/* f1851fc: 16580003 */ bne $s2,$t8,.L0f18520c
|
||||
/* f185200: 3c01800b */ lui $at,%hi(g_MpSetup+0x10)
|
||||
/* f185204: 10000005 */ b .L0f18521c
|
||||
/* f185208: a031cb98 */ sb $s1,%lo(g_MpSetup+0x10)($at)
|
||||
.L0f18520c:
|
||||
/* f18520c: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* f185210: 26310001 */ addiu $s1,$s1,0x1
|
||||
.L0f185214:
|
||||
/* f185214: 1633ffef */ bne $s1,$s3,.L0f1851d4
|
||||
/* f185218: 26100006 */ addiu $s0,$s0,0x6
|
||||
.L0f18521c:
|
||||
/* f18521c: 0fc61521 */ jal scenarioInit
|
||||
/* f185220: 00000000 */ nop
|
||||
/* f185224: 1000004d */ b .L0f18535c
|
||||
/* f185228: 00001025 */ or $v0,$zero,$zero
|
||||
/* f18522c: 3c108008 */ lui $s0,%hi(g_MpScenarioOverviews)
|
||||
/* f185230: 26107148 */ addiu $s0,$s0,%lo(g_MpScenarioOverviews)
|
||||
/* f185234: 00008825 */ or $s1,$zero,$zero
|
||||
/* f185238: 24130006 */ addiu $s3,$zero,0x6
|
||||
.L0f18523c:
|
||||
/* f18523c: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f185240: 92040004 */ lbu $a0,0x4($s0)
|
||||
/* f185244: 5040000d */ beqzl $v0,.L0f18527c
|
||||
/* f185248: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f18524c: 16800004 */ bnez $s4,.L0f185260
|
||||
/* f185250: 3c0e800b */ lui $t6,%hi(g_MpSetup+0x10)
|
||||
/* f185254: 920f0005 */ lbu $t7,0x5($s0)
|
||||
/* f185258: 55e00008 */ bnezl $t7,.L0f18527c
|
||||
/* f18525c: 26310001 */ addiu $s1,$s1,0x1
|
||||
.L0f185260:
|
||||
/* f185260: 91cecb98 */ lbu $t6,%lo(g_MpSetup+0x10)($t6)
|
||||
/* f185264: 562e0004 */ bnel $s1,$t6,.L0f185278
|
||||
/* f185268: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* f18526c: 1000003a */ b .L0f185358
|
||||
/* f185270: aeb20000 */ sw $s2,0x0($s5)
|
||||
/* f185274: 26520001 */ addiu $s2,$s2,0x1
|
||||
.L0f185278:
|
||||
/* f185278: 26310001 */ addiu $s1,$s1,0x1
|
||||
.L0f18527c:
|
||||
/* f18527c: 1633ffef */ bne $s1,$s3,.L0f18523c
|
||||
/* f185280: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f185284: 10000035 */ b .L0f18535c
|
||||
/* f185288: 00001025 */ or $v0,$zero,$zero
|
||||
/* f18528c: 24190002 */ addiu $t9,$zero,0x2
|
||||
/* f185290: 12800009 */ beqz $s4,.L0f1852b8
|
||||
/* f185294: aeb90000 */ sw $t9,0x0($s5)
|
||||
/* f185298: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f18529c: 2404001f */ addiu $a0,$zero,0x1f
|
||||
/* f1852a0: 5440002e */ bnezl $v0,.L0f18535c
|
||||
/* f1852a4: 00001025 */ or $v0,$zero,$zero
|
||||
/* f1852a8: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f1852ac: 24040021 */ addiu $a0,$zero,0x21
|
||||
/* f1852b0: 5440002a */ bnezl $v0,.L0f18535c
|
||||
/* f1852b4: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f1852b8:
|
||||
/* f1852b8: 8ea80000 */ lw $t0,0x0($s5)
|
||||
/* f1852bc: 2509ffff */ addiu $t1,$t0,-1
|
||||
/* f1852c0: 10000025 */ b .L0f185358
|
||||
/* f1852c4: aea90000 */ sw $t1,0x0($s5)
|
||||
/* f1852c8: 8eaa0000 */ lw $t2,0x0($s5)
|
||||
/* f1852cc: 000a58c0 */ sll $t3,$t2,0x3
|
||||
/* f1852d0: 026b6021 */ addu $t4,$s3,$t3
|
||||
/* f1852d4: 0fc5b9f1 */ jal langGet
|
||||
/* f1852d8: 95840004 */ lhu $a0,0x4($t4)
|
||||
/* f1852dc: 10000020 */ b .L0f185360
|
||||
/* f1852e0: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
/* f1852e4: 8ead0000 */ lw $t5,0x0($s5)
|
||||
/* f1852e8: 3c108008 */ lui $s0,%hi(g_MpScenarioOverviews)
|
||||
/* f1852ec: 26107148 */ addiu $s0,$s0,%lo(g_MpScenarioOverviews)
|
||||
/* f1852f0: 000dc0c0 */ sll $t8,$t5,0x3
|
||||
/* f1852f4: 02787821 */ addu $t7,$s3,$t8
|
||||
/* f1852f8: 8dee0000 */ lw $t6,0x0($t7)
|
||||
/* f1852fc: 00008825 */ or $s1,$zero,$zero
|
||||
/* f185300: 59c00015 */ blezl $t6,.L0f185358
|
||||
/* f185304: aeb20008 */ sw $s2,0x8($s5)
|
||||
.L0f185308:
|
||||
/* f185308: 0fc67244 */ jal mpIsFeatureUnlocked
|
||||
/* f18530c: 92040004 */ lbu $a0,0x4($s0)
|
||||
/* f185310: 50400008 */ beqzl $v0,.L0f185334
|
||||
/* f185314: 8ea80000 */ lw $t0,0x0($s5)
|
||||
/* f185318: 56800005 */ bnezl $s4,.L0f185330
|
||||
/* f18531c: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* f185320: 92190005 */ lbu $t9,0x5($s0)
|
||||
/* f185324: 57200003 */ bnezl $t9,.L0f185334
|
||||
/* f185328: 8ea80000 */ lw $t0,0x0($s5)
|
||||
/* f18532c: 26520001 */ addiu $s2,$s2,0x1
|
||||
.L0f185330:
|
||||
/* f185330: 8ea80000 */ lw $t0,0x0($s5)
|
||||
.L0f185334:
|
||||
/* f185334: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f185338: 26100006 */ addiu $s0,$s0,0x6
|
||||
/* f18533c: 000848c0 */ sll $t1,$t0,0x3
|
||||
/* f185340: 02695021 */ addu $t2,$s3,$t1
|
||||
/* f185344: 8d4b0000 */ lw $t3,0x0($t2)
|
||||
/* f185348: 022b082a */ slt $at,$s1,$t3
|
||||
/* f18534c: 1420ffee */ bnez $at,.L0f185308
|
||||
/* f185350: 00000000 */ nop
|
||||
/* f185354: aeb20008 */ sw $s2,0x8($s5)
|
||||
.L0f185358:
|
||||
/* f185358: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f18535c:
|
||||
/* f18535c: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
.L0f185360:
|
||||
/* f185360: 8fb00014 */ lw $s0,0x14($sp)
|
||||
/* f185364: 8fb10018 */ lw $s1,0x18($sp)
|
||||
/* f185368: 8fb2001c */ lw $s2,0x1c($sp)
|
||||
/* f18536c: 8fb30020 */ lw $s3,0x20($sp)
|
||||
/* f185370: 8fb40024 */ lw $s4,0x24($sp)
|
||||
/* f185374: 8fb50028 */ lw $s5,0x28($sp)
|
||||
/* f185378: 03e00008 */ jr $ra
|
||||
/* f18537c: 27bd0050 */ addiu $sp,$sp,0x50
|
||||
);
|
||||
s32 scenarioScenarioMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
struct scenariogroup groups[] = {
|
||||
{ 0, L_MPMENU_244 }, // "Free for All!"
|
||||
{ 4, L_MPMENU_245 }, // "-Teamwork-"
|
||||
};
|
||||
|
||||
s32 i;
|
||||
s32 count = 0;
|
||||
bool teamgame = true;
|
||||
|
||||
if (item->param) {
|
||||
if (g_Vars.mpquickteam == MPQUICKTEAM_PLAYERSONLY || g_Vars.mpquickteam == MPQUICKTEAM_PLAYERSANDSIMS) {
|
||||
teamgame = false;
|
||||
}
|
||||
}
|
||||
|
||||
switch (operation) {
|
||||
case MENUOP_GETOPTIONCOUNT:
|
||||
for (i = 0; i < ARRAYCOUNT(g_MpScenarioOverviews); i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature)
|
||||
&& (teamgame || g_MpScenarioOverviews[i].teamonly == false)) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
data->list.value = count;
|
||||
break;
|
||||
case MENUOP_GETOPTIONTEXT:
|
||||
for (i = 0; i < ARRAYCOUNT(g_MpScenarioOverviews); i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature)
|
||||
&& (teamgame || g_MpScenarioOverviews[i].teamonly == false)) {
|
||||
if (count == data->list.value) {
|
||||
return (s32)langGet(g_MpScenarioOverviews[i].name);
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MENUOP_SET:
|
||||
for (i = 0; i < ARRAYCOUNT(g_MpScenarioOverviews); i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature)
|
||||
&& (teamgame || g_MpScenarioOverviews[i].teamonly == false)) {
|
||||
if (count == data->list.value) {
|
||||
g_MpSetup.scenario = i;
|
||||
break;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
scenarioInit();
|
||||
break;
|
||||
case MENUOP_GETOPTIONVALUE:
|
||||
for (i = 0; i < ARRAYCOUNT(g_MpScenarioOverviews); i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature)
|
||||
&& (teamgame || g_MpScenarioOverviews[i].teamonly == false)) {
|
||||
if (i == g_MpSetup.scenario) {
|
||||
data->list.value = count;
|
||||
break;
|
||||
}
|
||||
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPCOUNT:
|
||||
data->list.value = 2;
|
||||
|
||||
if (!teamgame || (!mpIsFeatureUnlocked(MPFEATURE_SCENARIO_KOH) && !mpIsFeatureUnlocked(MPFEATURE_SCENARIO_CTC))) {
|
||||
data->list.value--;
|
||||
}
|
||||
break;
|
||||
case MENUOP_GETOPTGROUPTEXT:
|
||||
return (s32)langGet(groups[data->list.value].textid);
|
||||
case MENUOP_GETGROUPSTARTINDEX:
|
||||
for (i = 0; i < groups[data->list.value].startindex; i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpScenarioOverviews[i].requirefeature)
|
||||
&& (teamgame || g_MpScenarioOverviews[i].teamonly == false)) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
data->list.groupstartindex = count;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 menuhandlerMpOpenOptions(s32 operation, struct menuitem *item, union handlerdata *data)
|
||||
{
|
||||
@@ -6586,7 +6437,7 @@ void scenarioCallback38(s16 arg0, s32 *arg1, s32 *arg2, s32 *arg3)
|
||||
}
|
||||
|
||||
struct menuitem g_MpScenarioMenuItems[] = {
|
||||
{ MENUITEMTYPE_LIST, 0, 0x00020040, 0x00000078, 0x0000004d, menuhandler00185068 },
|
||||
{ MENUITEMTYPE_LIST, 0, 0x00020040, 0x00000078, 0x0000004d, scenarioScenarioMenuHandler },
|
||||
{ MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
|
||||
};
|
||||
|
||||
@@ -6600,7 +6451,7 @@ struct menudialog g_MpScenarioMenuDialog = {
|
||||
};
|
||||
|
||||
struct menuitem g_MpQuickTeamScenarioMenuItems[] = {
|
||||
{ MENUITEMTYPE_LIST, 1, 0x00020040, 0x00000078, 0x0000004d, menuhandler00185068 },
|
||||
{ MENUITEMTYPE_LIST, 1, 0x00020040, 0x00000078, 0x0000004d, scenarioScenarioMenuHandler },
|
||||
{ MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL },
|
||||
};
|
||||
|
||||
|
||||
+27
-27
@@ -2501,9 +2501,9 @@
|
||||
#define MPFEATURE_BOTDIFF_DARK 0x1c
|
||||
#define MPFEATURE_SLOWMOTION 0x1d
|
||||
#define MPFEATURE_ONEHITKILLS 0x1e
|
||||
#define MPFEATURE_1F 0x1f
|
||||
#define MPFEATURE_20 0x20
|
||||
#define MPFEATURE_21 0x21
|
||||
#define MPFEATURE_SCENARIO_KOH 0x1f
|
||||
#define MPFEATURE_SCENARIO_HTB 0x20
|
||||
#define MPFEATURE_SCENARIO_CTC 0x21
|
||||
#define MPFEATURE_22 0x22
|
||||
#define MPFEATURE_STAGE_CARPARK 0x23
|
||||
#define MPFEATURE_STAGE_COMPLEX 0x24
|
||||
@@ -2520,35 +2520,35 @@
|
||||
#define MPFEATURE_2F 0x2f
|
||||
#define MPFEATURE_STAGE_FORTRESS 0x30
|
||||
#define MPFEATURE_31 0x31
|
||||
#define MPFEATURE_32 0x32
|
||||
#define MPFEATURE_33 0x33
|
||||
#define MPFEATURE_34 0x34
|
||||
#define MPFEATURE_35 0x35
|
||||
#define MPFEATURE_36 0x36
|
||||
#define MPFEATURE_37 0x37
|
||||
#define MPFEATURE_38 0x38
|
||||
#define MPFEATURE_39 0x39
|
||||
#define MPFEATURE_3A 0x3a
|
||||
#define MPFEATURE_3B 0x3b
|
||||
#define MPFEATURE_3C 0x3c
|
||||
#define MPFEATURE_3D 0x3d
|
||||
#define MPFEATURE_3E 0x3e
|
||||
#define MPFEATURE_3F 0x3f
|
||||
#define MPFEATURE_CHR_FEMGUARD 0x32
|
||||
#define MPFEATURE_CHR_OFFICEWORKER 0x33
|
||||
#define MPFEATURE_CHR_VILLACHRS 0x34
|
||||
#define MPFEATURE_CHR_TRENT 0x35
|
||||
#define MPFEATURE_CHR_NSALACKEY 0x36
|
||||
#define MPFEATURE_CHR_G5 0x37
|
||||
#define MPFEATURE_CHR_MRBLONDE 0x38
|
||||
#define MPFEATURE_CHR_CIAFBI 0x39
|
||||
#define MPFEATURE_CHR_INFILTRATION 0x3a
|
||||
#define MPFEATURE_CHR_LABTECH 0x3b
|
||||
#define MPFEATURE_CHR_BIOTECH 0x3c
|
||||
#define MPFEATURE_CHR_ELVIS 0x3d
|
||||
#define MPFEATURE_CHR_ALASKANGUARD 0x3e
|
||||
#define MPFEATURE_CHR_AF1 0x3f
|
||||
#define MPFEATURE_8BOTS 0x40 // also unlocks the 4 Bonds
|
||||
#define MPFEATURE_41 0x41
|
||||
#define MPFEATURE_42 0x42
|
||||
#define MPFEATURE_43 0x43
|
||||
#define MPFEATURE_44 0x44
|
||||
#define MPFEATURE_45 0x45
|
||||
#define MPFEATURE_46 0x46
|
||||
#define MPFEATURE_47 0x47
|
||||
#define MPFEATURE_48 0x48
|
||||
#define MPFEATURE_CHR_CI 0x41
|
||||
#define MPFEATURE_CHR_PRESCLONE 0x42
|
||||
#define MPFEATURE_CHR_PRESSECURITY 0x43
|
||||
#define MPFEATURE_CHR_STRIPES 0x44
|
||||
#define MPFEATURE_CHR_PELAGIC 0x45
|
||||
#define MPFEATURE_CHR_JOTRENCH 0x46
|
||||
#define MPFEATURE_CHR_JOSNOW 0x47
|
||||
#define MPFEATURE_CHR_JONATHAN 0x48
|
||||
#define MPFEATURE_49 0x49
|
||||
#define MPFEATURE_4A 0x4a
|
||||
#define MPFEATURE_4B 0x4b
|
||||
#define MPFEATURE_4C 0x4c
|
||||
#define MPFEATURE_4D 0x4d
|
||||
#define MPFEATURE_4E 0x4e
|
||||
#define MPFEATURE_SCENARIO_PAC 0x4d
|
||||
#define MPFEATURE_SCENARIO_HTM 0x4e
|
||||
#define MPFEATURE_WEAPON_LASER 0x4f
|
||||
|
||||
#define MPHEAD_DARK_COMBAT 0x00
|
||||
|
||||
@@ -103,7 +103,7 @@ bool scenarioPacRadar2(Gfx **gdl, struct prop *prop);
|
||||
s32 mpOptionsMenuDialog(s32 operation, struct menudialog *dialog, union handlerdata *data);
|
||||
char *mpMenuTextScenarioShortName(struct menuitem *item);
|
||||
char *mpMenuTextScenarioName(struct menuitem *item);
|
||||
s32 menuhandler00185068(s32 operation, struct menuitem *item, union handlerdata *data);
|
||||
s32 scenarioScenarioMenuHandler(s32 operation, struct menuitem *item, union handlerdata *data);
|
||||
void mpCreateMatchStartHudmsgs(void);
|
||||
Gfx *scenarioRenderHud(Gfx *gdl);
|
||||
void scenarioCalculatePlayerScore(struct mpchrconfig *mpchr, s32 chrnum, s32 *arg2, s32 *arg3);
|
||||
|
||||
+2
-2
@@ -4690,8 +4690,8 @@ struct mpscenario {
|
||||
struct mpscenariooverview {
|
||||
u16 name;
|
||||
u16 shortname;
|
||||
u8 unlockfeature;
|
||||
u8 unk05;
|
||||
u8 requirefeature;
|
||||
u8 teamonly;
|
||||
};
|
||||
|
||||
struct mparena {
|
||||
|
||||
Reference in New Issue
Block a user