Decompile mpInitPresetFeatures
This commit is contained in:
parent
c4c6c6a9b7
commit
cfbb99c9d1
|
|
@ -114,7 +114,7 @@ u16 var80087ce4[] = {
|
|||
|
||||
u8 g_NumMpSimulantChrs = 0;
|
||||
|
||||
struct simskill g_SimSkills[] = {
|
||||
struct simdifficulty g_SimDifficulties[] = {
|
||||
{ 90, 0.26175770163536, 0.52351540327072, 600, 10, 0.69802051782608, 0.34901025891304, 1000 },
|
||||
{ 60, 0.12215359508991, 0.24430719017982, 360, 10, 0.49733963608742, 0.13960410654545, 1000 },
|
||||
{ 30, 0.069802053272724, 0.13960410654545, 180, 4, 0.34901025891304, 0.08725256472826, 1500 },
|
||||
|
|
|
|||
|
|
@ -12,77 +12,27 @@
|
|||
#include "gvars/gvars.h"
|
||||
#include "types.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f00b210
|
||||
/* f00b210: 27bdfdf8 */ addiu $sp,$sp,-520
|
||||
/* f00b214: afb2001c */ sw $s2,0x1c($sp)
|
||||
/* f00b218: afb00014 */ sw $s0,0x14($sp)
|
||||
/* f00b21c: afb30020 */ sw $s3,0x20($sp)
|
||||
/* f00b220: afb10018 */ sw $s1,0x18($sp)
|
||||
/* f00b224: 3c108009 */ lui $s0,%hi(g_MpChallenges)
|
||||
/* f00b228: 3c128009 */ lui $s2,%hi(g_MpChallenges+0x9)
|
||||
/* f00b22c: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* f00b230: 265284c1 */ addiu $s2,$s2,%lo(g_MpChallenges+0x9)
|
||||
/* f00b234: 261084b8 */ addiu $s0,$s0,%lo(g_MpChallenges)
|
||||
/* f00b238: 00008825 */ or $s1,$zero,$zero
|
||||
/* f00b23c: 27b30038 */ addiu $s3,$sp,0x38
|
||||
.L0f00b240:
|
||||
/* f00b240: a2000004 */ sb $zero,0x4($s0)
|
||||
/* f00b244: a2000005 */ sb $zero,0x5($s0)
|
||||
/* f00b248: a2000006 */ sb $zero,0x6($s0)
|
||||
/* f00b24c: a2000007 */ sb $zero,0x7($s0)
|
||||
/* f00b250: a2000008 */ sb $zero,0x8($s0)
|
||||
/* f00b254: 02202025 */ or $a0,$s1,$zero
|
||||
/* f00b258: 02602825 */ or $a1,$s3,$zero
|
||||
/* f00b25c: 0fc66e96 */ jal mpLoadChallenge
|
||||
/* f00b260: 240601ca */ addiu $a2,$zero,0x1ca
|
||||
/* f00b264: 00402025 */ or $a0,$v0,$zero
|
||||
/* f00b268: 02402825 */ or $a1,$s2,$zero
|
||||
/* f00b26c: 24060010 */ addiu $a2,$zero,0x10
|
||||
/* f00b270: 0fc66f53 */ jal mpForceUnlockSimulantFeatures2
|
||||
/* f00b274: 02203825 */ or $a3,$s1,$zero
|
||||
/* f00b278: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f00b27c: 2a21001e */ slti $at,$s1,0x1e
|
||||
/* f00b280: 2610001a */ addiu $s0,$s0,0x1a
|
||||
/* f00b284: 1420ffee */ bnez $at,.L0f00b240
|
||||
/* f00b288: 2652001a */ addiu $s2,$s2,0x1a
|
||||
/* f00b28c: 0fc636df */ jal mpGetNumPresets
|
||||
/* f00b290: 00008825 */ or $s1,$zero,$zero
|
||||
/* f00b294: 18400017 */ blez $v0,.L0f00b2f4
|
||||
/* f00b298: 00117080 */ sll $t6,$s1,0x2
|
||||
/* f00b29c: 01d17023 */ subu $t6,$t6,$s1
|
||||
/* f00b2a0: 3c0f8008 */ lui $t7,%hi(g_MpPresets)
|
||||
/* f00b2a4: 25ef7b6c */ addiu $t7,$t7,%lo(g_MpPresets)
|
||||
/* f00b2a8: 000e70c0 */ sll $t6,$t6,0x3
|
||||
/* f00b2ac: 01cf8021 */ addu $s0,$t6,$t7
|
||||
/* f00b2b0: 26120008 */ addiu $s2,$s0,0x8
|
||||
/* f00b2b4: 8e040004 */ lw $a0,0x4($s0)
|
||||
.L0f00b2b8:
|
||||
/* f00b2b8: 02602825 */ or $a1,$s3,$zero
|
||||
/* f00b2bc: 0fc66e45 */ jal mpLoadConfig
|
||||
/* f00b2c0: 240601ca */ addiu $a2,$zero,0x1ca
|
||||
/* f00b2c4: 00402025 */ or $a0,$v0,$zero
|
||||
/* f00b2c8: 02402825 */ or $a1,$s2,$zero
|
||||
/* f00b2cc: 24060010 */ addiu $a2,$zero,0x10
|
||||
/* f00b2d0: 0fc66f53 */ jal mpForceUnlockSimulantFeatures2
|
||||
/* f00b2d4: 2407ffff */ addiu $a3,$zero,-1
|
||||
/* f00b2d8: 26310001 */ addiu $s1,$s1,0x1
|
||||
/* f00b2dc: 26100018 */ addiu $s0,$s0,0x18
|
||||
/* f00b2e0: 0fc636df */ jal mpGetNumPresets
|
||||
/* f00b2e4: 26520018 */ addiu $s2,$s2,24
|
||||
/* f00b2e8: 0222082a */ slt $at,$s1,$v0
|
||||
/* f00b2ec: 5420fff2 */ bnezl $at,.L0f00b2b8
|
||||
/* f00b2f0: 8e040004 */ lw $a0,0x4($s0)
|
||||
.L0f00b2f4:
|
||||
/* f00b2f4: 0fc66bf7 */ jal mpDetermineUnlockedFeatures
|
||||
/* f00b2f8: 00000000 */ nop
|
||||
/* f00b2fc: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* f00b300: 8fb00014 */ lw $s0,0x14($sp)
|
||||
/* f00b304: 8fb10018 */ lw $s1,0x18($sp)
|
||||
/* f00b308: 8fb2001c */ lw $s2,0x1c($sp)
|
||||
/* f00b30c: 8fb30020 */ lw $s3,0x20($sp)
|
||||
/* f00b310: 03e00008 */ jr $ra
|
||||
/* f00b314: 27bd0208 */ addiu $sp,$sp,0x208
|
||||
/* f00b318: 00000000 */ nop
|
||||
/* f00b31c: 00000000 */ nop
|
||||
);
|
||||
void mpInitPresetFeatures(void)
|
||||
{
|
||||
struct mpconfigfull *mpconfig;
|
||||
u8 buffer[0x1ca];
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 30; i++) {
|
||||
g_MpChallenges[i].availability = 0;
|
||||
g_MpChallenges[i].completions[0] = 0;
|
||||
g_MpChallenges[i].completions[1] = 0;
|
||||
g_MpChallenges[i].completions[2] = 0;
|
||||
g_MpChallenges[i].completions[3] = 0;
|
||||
|
||||
mpconfig = mpLoadChallenge(i, buffer, 0x1ca);
|
||||
mpForceUnlockConfigFeatures(&mpconfig->config, g_MpChallenges[i].unlockfeatures, 16, i);
|
||||
}
|
||||
|
||||
for (i = 0; i < mpGetNumPresets(); i++) {
|
||||
mpconfig = mpLoadConfig(g_MpPresets[i].confignum, buffer, 0x1ca);
|
||||
mpForceUnlockConfigFeatures(&mpconfig->config, g_MpPresets[i].requirefeatures, 16, -1);
|
||||
}
|
||||
|
||||
mpDetermineUnlockedFeatures();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4008,7 +4008,7 @@ s32 menuhandlerMpChangeSimulantType(u32 operation, struct menuitem *item, union
|
|||
s32 count = 0;
|
||||
s32 simtypeindex = mpGetSimTypeIndex(
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].base.simtype,
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].skill);
|
||||
g_MpSimulants[g_Menus[g_MpPlayerNum].data.mpsetup.slotindex].difficulty);
|
||||
|
||||
for (i = 0; i < simtypeindex; i++) {
|
||||
if (mpIsFeatureUnlocked(g_MpSimulantTypes[i].requirefeature)) {
|
||||
|
|
@ -5901,8 +5901,8 @@ glabel var7f1b82dc
|
|||
/* f17f340: 0fc63377 */ jal func0f18cddc
|
||||
/* f17f344: 00000000 */ nop
|
||||
/* f17f348: 3c02800b */ lui $v0,%hi(g_MpSimulants)
|
||||
/* f17f34c: 3c04800b */ lui $a0,%hi(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f17f350: 2484c798 */ addiu $a0,$a0,%lo(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f17f34c: 3c04800b */ lui $a0,%hi(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f17f350: 2484c798 */ addiu $a0,$a0,%lo(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f17f354: 2442c538 */ addiu $v0,$v0,%lo(g_MpSimulants)
|
||||
/* f17f358: 24030001 */ addiu $v1,$zero,0x1
|
||||
.L0f17f35c:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
bool func0f190260(struct chrdata *chr)
|
||||
{
|
||||
return chr->blurdrugamount >= g_SimSkills[chr->aibot->simulant->skill].blurdrugamount;
|
||||
return chr->blurdrugamount >= g_SimDifficulties[chr->aibot->simulant->difficulty].blurdrugamount;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
|
|
@ -400,7 +400,7 @@ glabel mpChrReset
|
|||
// chr->cshield = 8;
|
||||
// }
|
||||
//
|
||||
// if (aibot->simulant->skill == SIMSKILL_DARK) {
|
||||
// if (aibot->simulant->difficulty == SIMDIFF_DARK) {
|
||||
// aibot->unk064 &= ~1;
|
||||
//
|
||||
// if (func0f198278()) {
|
||||
|
|
@ -2842,10 +2842,10 @@ glabel var7f1b8f44
|
|||
/* f192b3c: c46400ac */ lwc1 $f4,0xac($v1)
|
||||
/* f192b40: c4a60044 */ lwc1 $f6,0x44($a1)
|
||||
/* f192b44: 00077940 */ sll $t7,$a3,0x5
|
||||
/* f192b48: 3c018008 */ lui $at,%hi(g_SimSkills+0x10)
|
||||
/* f192b48: 3c018008 */ lui $at,%hi(g_SimDifficulties+0x10)
|
||||
/* f192b4c: 46062202 */ mul.s $f8,$f4,$f6
|
||||
/* f192b50: 002f0821 */ addu $at,$at,$t7
|
||||
/* f192b54: c42a7d24 */ lwc1 $f10,%lo(g_SimSkills+0x10)($at)
|
||||
/* f192b54: c42a7d24 */ lwc1 $f10,%lo(g_SimDifficulties+0x10)($at)
|
||||
/* f192b58: 44809000 */ mtc1 $zero,$f18
|
||||
/* f192b5c: 46085002 */ mul.s $f0,$f10,$f8
|
||||
/* f192b60: 4612003c */ c.lt.s $f0,$f18
|
||||
|
|
@ -2860,10 +2860,10 @@ glabel var7f1b8f44
|
|||
/* f192b80: 8c78011c */ lw $t8,0x11c($v1)
|
||||
.L0f192b84:
|
||||
/* f192b84: c46c01d4 */ lwc1 $f12,0x1d4($v1)
|
||||
/* f192b88: 3c088008 */ lui $t0,%hi(g_SimSkills)
|
||||
/* f192b88: 3c088008 */ lui $t0,%hi(g_SimDifficulties)
|
||||
/* f192b8c: 44985000 */ mtc1 $t8,$f10
|
||||
/* f192b90: 44809000 */ mtc1 $zero,$f18
|
||||
/* f192b94: 25087d14 */ addiu $t0,$t0,%lo(g_SimSkills)
|
||||
/* f192b94: 25087d14 */ addiu $t0,$t0,%lo(g_SimDifficulties)
|
||||
/* f192b98: 46805020 */ cvt.s.w $f0,$f10
|
||||
/* f192b9c: 0007c940 */ sll $t9,$a3,0x5
|
||||
/* f192ba0: 03283021 */ addu $a2,$t9,$t0
|
||||
|
|
@ -7356,13 +7356,13 @@ glabel var7f1b8fc8
|
|||
/* f196d54: 51c0003f */ beqzl $t6,.L0f196e54
|
||||
/* f196d58: a460003c */ sh $zero,0x3c($v1)
|
||||
/* f196d5c: 8e4f0004 */ lw $t7,0x4($s2)
|
||||
/* f196d60: 3c0d8008 */ lui $t5,%hi(g_SimSkills)
|
||||
/* f196d60: 3c0d8008 */ lui $t5,%hi(g_SimDifficulties)
|
||||
/* f196d64: 8e58011c */ lw $t8,0x11c($s2)
|
||||
/* f196d68: 91f90048 */ lbu $t9,0x48($t7)
|
||||
/* f196d6c: 02802025 */ or $a0,$s4,$zero
|
||||
/* f196d70: 00194940 */ sll $t1,$t9,0x5
|
||||
/* f196d74: 01a96821 */ addu $t5,$t5,$t1
|
||||
/* f196d78: 91ad7d14 */ lbu $t5,%lo(g_SimSkills)($t5)
|
||||
/* f196d78: 91ad7d14 */ lbu $t5,%lo(g_SimDifficulties)($t5)
|
||||
/* f196d7c: 030d082a */ slt $at,$t8,$t5
|
||||
/* f196d80: 54200034 */ bnezl $at,.L0f196e54
|
||||
/* f196d84: a460003c */ sh $zero,0x3c($v1)
|
||||
|
|
@ -7580,12 +7580,12 @@ glabel var7f1b8fc8
|
|||
/* f19708c: 11800015 */ beqz $t4,.L0f1970e4
|
||||
/* f197090: 00000000 */ nop
|
||||
/* f197094: 8e4f0004 */ lw $t7,0x4($s2)
|
||||
/* f197098: 3c188008 */ lui $t8,%hi(g_SimSkills)
|
||||
/* f197098: 3c188008 */ lui $t8,%hi(g_SimDifficulties)
|
||||
/* f19709c: 8e4e011c */ lw $t6,0x11c($s2)
|
||||
/* f1970a0: 91f90048 */ lbu $t9,0x48($t7)
|
||||
/* f1970a4: 00194940 */ sll $t1,$t9,0x5
|
||||
/* f1970a8: 0309c021 */ addu $t8,$t8,$t1
|
||||
/* f1970ac: 93187d14 */ lbu $t8,%lo(g_SimSkills)($t8)
|
||||
/* f1970ac: 93187d14 */ lbu $t8,%lo(g_SimDifficulties)($t8)
|
||||
/* f1970b0: 01d8082a */ slt $at,$t6,$t8
|
||||
/* f1970b4: 1420000b */ bnez $at,.L0f1970e4
|
||||
/* f1970b8: 00000000 */ nop
|
||||
|
|
@ -7726,12 +7726,12 @@ glabel var7f1b8fc8
|
|||
/* f1972ac: 11a00034 */ beqz $t5,.L0f197380
|
||||
/* f1972b0: 00000000 */ nop
|
||||
/* f1972b4: 8e4b0004 */ lw $t3,0x4($s2)
|
||||
/* f1972b8: 3c198008 */ lui $t9,%hi(g_SimSkills)
|
||||
/* f1972b8: 3c198008 */ lui $t9,%hi(g_SimDifficulties)
|
||||
/* f1972bc: 8e4a011c */ lw $t2,0x11c($s2)
|
||||
/* f1972c0: 916c0048 */ lbu $t4,0x48($t3)
|
||||
/* f1972c4: 000c7940 */ sll $t7,$t4,0x5
|
||||
/* f1972c8: 032fc821 */ addu $t9,$t9,$t7
|
||||
/* f1972cc: 93397d14 */ lbu $t9,%lo(g_SimSkills)($t9)
|
||||
/* f1972cc: 93397d14 */ lbu $t9,%lo(g_SimDifficulties)($t9)
|
||||
/* f1972d0: 0159082a */ slt $at,$t2,$t9
|
||||
/* f1972d4: 1420002a */ bnez $at,.L0f197380
|
||||
/* f1972d8: 00000000 */ nop
|
||||
|
|
|
|||
|
|
@ -565,9 +565,9 @@ void mpPerformSanityChecks(void)
|
|||
g_MpSetup.chrslots &= 0x000f;
|
||||
|
||||
for (i = 0; i != MAX_SIMULANTS; i++) {
|
||||
g_MpSimulants[i].skill = g_MpSimulantSkillsPerNumPlayers[i * 4 + numplayers - 1];
|
||||
g_MpSimulants[i].difficulty = g_MpSimulantDifficultiesPerNumPlayers[i * 4 + numplayers - 1];
|
||||
|
||||
if (g_MpSimulants[i].skill != SIMSKILL_DISABLED) {
|
||||
if (g_MpSimulants[i].difficulty != SIMDIFF_DISABLED) {
|
||||
g_MpSetup.chrslots |= 1 << (i + 4);
|
||||
}
|
||||
}
|
||||
|
|
@ -937,15 +937,15 @@ s32 mpForceUnlockSetupFeatures(struct mpsetup *setup, u8 *array, s32 len)
|
|||
return index;
|
||||
}
|
||||
|
||||
void mpForceUnlockSimulantFeatures2(struct mpsetupwrapper *wrapper, u8 *array, s32 len, s32 arg3)
|
||||
void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s32 challengeindex)
|
||||
{
|
||||
s32 index = mpForceUnlockSetupFeatures(&wrapper->setup, array, len);
|
||||
s32 index = mpForceUnlockSetupFeatures(&config->setup, array, len);
|
||||
s32 featurenum;
|
||||
s32 numplayers;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
s32 simtype = mpGetSimTypeIndex(wrapper->things[i].simskill, SIMSKILL_NORMAL);
|
||||
s32 simtype = mpGetSimTypeIndex(config->simulants[i].type, SIMDIFF_NORMAL);
|
||||
|
||||
if (simtype >= 0) {
|
||||
featurenum = g_MpSimulantTypes[simtype].requirefeature;
|
||||
|
|
@ -955,8 +955,8 @@ void mpForceUnlockSimulantFeatures2(struct mpsetupwrapper *wrapper, u8 *array, s
|
|||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < 4; j++) {
|
||||
simtype = mpGetSimTypeIndex(0, wrapper->things[i].simtypes[j]);
|
||||
for (numplayers = 0; numplayers < 4; numplayers++) {
|
||||
simtype = mpGetSimTypeIndex(0, config->simulants[i].difficulties[numplayers]);
|
||||
|
||||
if (simtype >= 0) {
|
||||
featurenum = g_MpSimulantTypes[simtype].requirefeature;
|
||||
|
|
@ -967,16 +967,16 @@ void mpForceUnlockSimulantFeatures2(struct mpsetupwrapper *wrapper, u8 *array, s
|
|||
}
|
||||
}
|
||||
|
||||
if (wrapper->things[i].mpbodynum <= MPBODY_DJBOND) {
|
||||
featurenum = g_MpBodies[wrapper->things[i].mpbodynum].requirefeature;
|
||||
if (config->simulants[i].mpbodynum <= MPBODY_DJBOND) {
|
||||
featurenum = g_MpBodies[config->simulants[i].mpbodynum].requirefeature;
|
||||
|
||||
if (featurenum) {
|
||||
index = mpForceUnlockFeature(featurenum, array, index, len);
|
||||
}
|
||||
}
|
||||
|
||||
if (wrapper->things[i].mpheadnum <= MPHEAD_WINNER) {
|
||||
featurenum = g_MpHeads[wrapper->things[i].mpheadnum].requirefeature;
|
||||
if (config->simulants[i].mpheadnum <= MPHEAD_WINNER) {
|
||||
featurenum = g_MpHeads[config->simulants[i].mpheadnum].requirefeature;
|
||||
|
||||
if (featurenum) {
|
||||
index = mpForceUnlockFeature(featurenum, array, index, len);
|
||||
|
|
@ -984,15 +984,15 @@ void mpForceUnlockSimulantFeatures2(struct mpsetupwrapper *wrapper, u8 *array, s
|
|||
}
|
||||
}
|
||||
|
||||
if (arg3 >= 25) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_SIMSKILL_DARK, array, index, len);
|
||||
} else if (arg3 >= 20) {
|
||||
if (challengeindex >= 25) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_SIMDIFF_DARK, array, index, len);
|
||||
} else if (challengeindex >= 20) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_STAGE_CARPARK, array, index, len);
|
||||
} else if (arg3 > 14) {
|
||||
} else if (challengeindex >= 15) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_4D, array, index, len);
|
||||
}
|
||||
|
||||
if (arg3 > 9) {
|
||||
if (challengeindex >= 10) {
|
||||
index = mpForceUnlockFeature(MPFEATURE_8BOTS, array, index, len);
|
||||
}
|
||||
|
||||
|
|
@ -1010,7 +1010,7 @@ void mpForceUnlockSimulantFeatures(void)
|
|||
|
||||
for (i = 0; i < 8; i++) {
|
||||
// Force unlock the simulant type
|
||||
s32 simtypeindex = mpGetSimTypeIndex(g_MpSimulants[i].base.simtype, SIMSKILL_NORMAL);
|
||||
s32 simtypeindex = mpGetSimTypeIndex(g_MpSimulants[i].base.simtype, SIMDIFF_NORMAL);
|
||||
|
||||
if (simtypeindex >= 0) {
|
||||
s32 featurenum = g_MpSimulantTypes[simtypeindex].requirefeature;
|
||||
|
|
@ -1020,8 +1020,8 @@ void mpForceUnlockSimulantFeatures(void)
|
|||
}
|
||||
}
|
||||
|
||||
// Force unlock the simulant skill
|
||||
simtypeindex = mpGetSimTypeIndex(SIMTYPE_GENERAL, g_MpSimulants[i].skill);
|
||||
// Force unlock the simulant difficulty
|
||||
simtypeindex = mpGetSimTypeIndex(SIMTYPE_GENERAL, g_MpSimulants[i].difficulty);
|
||||
|
||||
if (simtypeindex >= 0) {
|
||||
s32 featurenum = g_MpSimulantTypes[simtypeindex].requirefeature;
|
||||
|
|
|
|||
|
|
@ -747,7 +747,7 @@ void func0f1881d4(s32 index)
|
|||
g_MpSimulants[index].base.headnum = 0;
|
||||
g_MpSimulants[index].base.bodynum = 0;
|
||||
g_MpSimulants[index].base.simtype = SIMTYPE_GENERAL;
|
||||
g_MpSimulants[index].skill = SIMSKILL_DISABLED;
|
||||
g_MpSimulants[index].difficulty = SIMDIFF_DISABLED;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
|
|
@ -3118,25 +3118,25 @@ u32 table_0x2d678[] = {
|
|||
|
||||
// 2d74c
|
||||
struct mpsimulanttype g_MpSimulantTypes[] = {
|
||||
// type, skill, name, body, require feature
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_MEAT, L_MISC(88), MPBODY_DD_GUARD, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_EASY, L_MISC(89), MPBODY_DD_SECGUARD, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_NORMAL, L_MISC(90), MPBODY_DD_SHOCK_INF, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_HARD, L_MISC(91), MPBODY_DDSHOCK, MPFEATURE_SIMSKILL_HARD },
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_PERFECT, L_MISC(92), MPBODY_STRIPES, MPFEATURE_SIMSKILL_PERFECT },
|
||||
{ SIMTYPE_GENERAL, SIMSKILL_DARK, L_MISC(93), MPBODY_MOORE, MPFEATURE_SIMSKILL_DARK },
|
||||
{ SIMTYPE_PEACE, SIMSKILL_NORMAL, L_MISC(94), MPBODY_DD_LABTECH, 0 },
|
||||
{ SIMTYPE_SHIELD, SIMSKILL_NORMAL, L_MISC(95), MPBODY_G5_SWAT_GUARD, 0 },
|
||||
{ SIMTYPE_ROCKET, SIMSKILL_NORMAL, L_MISC(96), MPBODY_G5_GUARD, 0 },
|
||||
{ SIMTYPE_KAZE, SIMSKILL_NORMAL, L_MISC(97), MPBODY_PRES_SECURITY, 0 },
|
||||
{ SIMTYPE_FIST, SIMSKILL_NORMAL, L_MISC(98), MPBODY_PELAGIC_GUARD, 0 },
|
||||
{ SIMTYPE_PREY, SIMSKILL_NORMAL, L_MISC(99), MPBODY_DDSHOCK, 0 },
|
||||
{ SIMTYPE_COWARD, SIMSKILL_NORMAL, L_MISC(100), MPBODY_PRESIDENT, 0 },
|
||||
{ SIMTYPE_JUDGE, SIMSKILL_NORMAL, L_MISC(101), MPBODY_STEWARD, 0 },
|
||||
{ SIMTYPE_FEUD, SIMSKILL_NORMAL, L_MISC(102), MPBODY_NSA_LACKEY, 0 },
|
||||
{ SIMTYPE_SPEED, SIMSKILL_NORMAL, L_MISC(103), MPBODY_MRBLONDE, 0 },
|
||||
{ SIMTYPE_TURTLE, SIMSKILL_NORMAL, L_MISC(104), MPBODY_CARRINGTON, 0 },
|
||||
{ SIMTYPE_VENGE, SIMSKILL_NORMAL, L_MISC(105), MPBODY_ALASKAN_GUARD, 0 },
|
||||
// type, difficulty, name, body, require feature
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_MEAT, L_MISC(88), MPBODY_DD_GUARD, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_EASY, L_MISC(89), MPBODY_DD_SECGUARD, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_NORMAL, L_MISC(90), MPBODY_DD_SHOCK_INF, 0 },
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_HARD, L_MISC(91), MPBODY_DDSHOCK, MPFEATURE_SIMDIFF_HARD },
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_PERFECT, L_MISC(92), MPBODY_STRIPES, MPFEATURE_SIMDIFF_PERFECT },
|
||||
{ SIMTYPE_GENERAL, SIMDIFF_DARK, L_MISC(93), MPBODY_MOORE, MPFEATURE_SIMDIFF_DARK },
|
||||
{ SIMTYPE_PEACE, SIMDIFF_NORMAL, L_MISC(94), MPBODY_DD_LABTECH, 0 },
|
||||
{ SIMTYPE_SHIELD, SIMDIFF_NORMAL, L_MISC(95), MPBODY_G5_SWAT_GUARD, 0 },
|
||||
{ SIMTYPE_ROCKET, SIMDIFF_NORMAL, L_MISC(96), MPBODY_G5_GUARD, 0 },
|
||||
{ SIMTYPE_KAZE, SIMDIFF_NORMAL, L_MISC(97), MPBODY_PRES_SECURITY, 0 },
|
||||
{ SIMTYPE_FIST, SIMDIFF_NORMAL, L_MISC(98), MPBODY_PELAGIC_GUARD, 0 },
|
||||
{ SIMTYPE_PREY, SIMDIFF_NORMAL, L_MISC(99), MPBODY_DDSHOCK, 0 },
|
||||
{ SIMTYPE_COWARD, SIMDIFF_NORMAL, L_MISC(100), MPBODY_PRESIDENT, 0 },
|
||||
{ SIMTYPE_JUDGE, SIMDIFF_NORMAL, L_MISC(101), MPBODY_STEWARD, 0 },
|
||||
{ SIMTYPE_FEUD, SIMDIFF_NORMAL, L_MISC(102), MPBODY_NSA_LACKEY, 0 },
|
||||
{ SIMTYPE_SPEED, SIMDIFF_NORMAL, L_MISC(103), MPBODY_MRBLONDE, 0 },
|
||||
{ SIMTYPE_TURTLE, SIMDIFF_NORMAL, L_MISC(104), MPBODY_CARRINGTON, 0 },
|
||||
{ SIMTYPE_VENGE, SIMDIFF_NORMAL, L_MISC(105), MPBODY_ALASKAN_GUARD, 0 },
|
||||
};
|
||||
|
||||
// 2d7dc
|
||||
|
|
@ -5662,11 +5662,11 @@ glabel func0f18c984
|
|||
/* f18c9e0: 3c14800b */ lui $s4,%hi(g_MpSimulants)
|
||||
/* f18c9e4: 90f90000 */ lbu $t9,0x0($a3)
|
||||
/* f18c9e8: 2694c538 */ addiu $s4,$s4,%lo(g_MpSimulants)
|
||||
/* f18c9ec: 3c0a800b */ lui $t2,%hi(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18c9ec: 3c0a800b */ lui $t2,%hi(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18c9f0: 00007012 */ mflo $t6
|
||||
/* f18c9f4: 028ef021 */ addu $s8,$s4,$t6
|
||||
/* f18c9f8: 305100ff */ andi $s1,$v0,0xff
|
||||
/* f18c9fc: 254ac798 */ addiu $t2,$t2,%lo(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18c9fc: 254ac798 */ addiu $t2,$t2,%lo(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18ca00: 00104880 */ sll $t1,$s0,0x2
|
||||
/* f18ca04: 8fa6005c */ lw $a2,0x5c($sp)
|
||||
/* f18ca08: 012a2021 */ addu $a0,$t1,$t2
|
||||
|
|
@ -5775,9 +5775,9 @@ glabel func0f18cb60
|
|||
/* f18cb74: 25efc538 */ addiu $t7,$t7,%lo(g_MpSimulants)
|
||||
/* f18cb78: 000e7080 */ sll $t6,$t6,0x2
|
||||
/* f18cb7c: 01cf1021 */ addu $v0,$t6,$t7
|
||||
/* f18cb80: 3c19800b */ lui $t9,%hi(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18cb80: 3c19800b */ lui $t9,%hi(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18cb84: a0450048 */ sb $a1,0x48($v0)
|
||||
/* f18cb88: 2739c798 */ addiu $t9,$t9,%lo(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18cb88: 2739c798 */ addiu $t9,$t9,%lo(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18cb8c: 0004c080 */ sll $t8,$a0,0x2
|
||||
/* f18cb90: 03193021 */ addu $a2,$t8,$t9
|
||||
/* f18cb94: 24020004 */ addiu $v0,$zero,0x4
|
||||
|
|
@ -5880,13 +5880,13 @@ bool mpIsSimSlotEnabled(s32 slot)
|
|||
return true;
|
||||
}
|
||||
|
||||
s32 mpGetSimTypeIndex(s32 type, s32 skill)
|
||||
s32 mpGetSimTypeIndex(s32 type, s32 difficulty)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (type == SIMTYPE_GENERAL) {
|
||||
for (i = 0; i < ARRAYCOUNT(g_MpSimulantTypes); i++) {
|
||||
if (g_MpSimulantTypes[i].skill == skill) {
|
||||
if (g_MpSimulantTypes[i].difficulty == difficulty) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -6847,7 +6847,7 @@ glabel func0f18dac0
|
|||
/* f18db78: 00000000 */ nop
|
||||
);
|
||||
|
||||
u32 mpGetNumPresets(void)
|
||||
s32 mpGetNumPresets(void)
|
||||
{
|
||||
return NUM_MPPRESETS;
|
||||
}
|
||||
|
|
@ -6941,8 +6941,8 @@ glabel func0f18dcec
|
|||
/* f18dd58: 1738fff8 */ bne $t9,$t8,.L0f18dd3c
|
||||
/* f18dd5c: ad01fffc */ sw $at,-0x4($t0)
|
||||
/* f18dd60: 8f210000 */ lw $at,0x0($t9)
|
||||
/* f18dd64: 3c09800b */ lui $t1,%hi(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18dd68: 2537c798 */ addiu $s7,$t1,%lo(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18dd64: 3c09800b */ lui $t1,%hi(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18dd68: 2537c798 */ addiu $s7,$t1,%lo(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18dd6c: 3c11800b */ lui $s1,%hi(g_MpSimulants)
|
||||
/* f18dd70: 2631c538 */ addiu $s1,$s1,%lo(g_MpSimulants)
|
||||
/* f18dd74: 02e0a825 */ or $s5,$s7,$zero
|
||||
|
|
@ -7120,11 +7120,11 @@ glabel func0f18df5c
|
|||
/* f18dfd8: 24050015 */ addiu $a1,$zero,0x15
|
||||
/* f18dfdc: 96ae0016 */ lhu $t6,0x16($s5)
|
||||
/* f18dfe0: 3c11800b */ lui $s1,%hi(g_MpSimulants)
|
||||
/* f18dfe4: 3c14800b */ lui $s4,%hi(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18dfe4: 3c14800b */ lui $s4,%hi(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18dfe8: 31cf000f */ andi $t7,$t6,0xf
|
||||
/* f18dfec: aea2000c */ sw $v0,0xc($s5)
|
||||
/* f18dff0: a6af0016 */ sh $t7,0x16($s5)
|
||||
/* f18dff4: 2694c798 */ addiu $s4,$s4,%lo(g_MpSimulantSkillsPerNumPlayers)
|
||||
/* f18dff4: 2694c798 */ addiu $s4,$s4,%lo(g_MpSimulantDifficultiesPerNumPlayers)
|
||||
/* f18dff8: 2631c538 */ addiu $s1,$s1,%lo(g_MpSimulants)
|
||||
/* f18dffc: 00009025 */ or $s2,$zero,$zero
|
||||
/* f18e000: 24160006 */ addiu $s6,$zero,0x6
|
||||
|
|
|
|||
|
|
@ -17126,7 +17126,7 @@ struct mpchr *var800ac500[MAX_MPCHRS] = {NULL};
|
|||
s32 g_MpNumPlayers = 0;
|
||||
u32 var800ac534 = 0;
|
||||
struct mpsim g_MpSimulants[MAX_SIMULANTS] = {0};
|
||||
u8 g_MpSimulantSkillsPerNumPlayers[32] = {0};
|
||||
u8 g_MpSimulantDifficultiesPerNumPlayers[32] = {0};
|
||||
struct mpplayer g_MpPlayers[6] = {0};
|
||||
u8 g_ActiveMenuMpBotCommands[16] = {0};
|
||||
struct mpsetup g_MpSetup = {0};
|
||||
|
|
|
|||
|
|
@ -1788,10 +1788,10 @@
|
|||
#define MPFEATURE_WEAPON_SHIELD 0x16
|
||||
#define MPFEATURE_WEAPON_CLOAKINGDEVICE 0x17
|
||||
#define MPFEATURE_WEAPON_COMBATBOOST 0x18
|
||||
#define MPFEATURE_SIMSKILL_HARD 0x19
|
||||
#define MPFEATURE_SIMSKILL_PERFECT 0x1a
|
||||
#define MPFEATURE_SIMDIFF_HARD 0x19
|
||||
#define MPFEATURE_SIMDIFF_PERFECT 0x1a
|
||||
#define MPFEATURE_1B 0x1b
|
||||
#define MPFEATURE_SIMSKILL_DARK 0x1c
|
||||
#define MPFEATURE_SIMDIFF_DARK 0x1c
|
||||
#define MPFEATURE_SLOWMOTION 0x1d
|
||||
#define MPFEATURE_ONEHITKILLS 0x1e
|
||||
#define MPFEATURE_1F 0x1f
|
||||
|
|
@ -1985,14 +1985,6 @@
|
|||
#define MPSCENARIO_KINGOFTHEHILL 4
|
||||
#define MPSCENARIO_CAPTURETHECASE 5
|
||||
|
||||
#define MPSIMDIFF_MEAT 0
|
||||
#define MPSIMDIFF_EASY 1
|
||||
#define MPSIMDIFF_NORMAL 2
|
||||
#define MPSIMDIFF_HARD 3
|
||||
#define MPSIMDIFF_PERFECT 4
|
||||
#define MPSIMDIFF_DARK 5
|
||||
#define MPSIMDIFF_OFF 6
|
||||
|
||||
#define MPTEAM_0 0
|
||||
#define MPTEAM_1 1
|
||||
#define MPTEAM_2 2
|
||||
|
|
@ -2695,13 +2687,13 @@
|
|||
#define SIGHT_MAIAN 6
|
||||
#define SIGHT_NONE 7
|
||||
|
||||
#define SIMSKILL_MEAT 0
|
||||
#define SIMSKILL_EASY 1
|
||||
#define SIMSKILL_NORMAL 2
|
||||
#define SIMSKILL_HARD 3
|
||||
#define SIMSKILL_PERFECT 4
|
||||
#define SIMSKILL_DARK 5
|
||||
#define SIMSKILL_DISABLED 6
|
||||
#define SIMDIFF_MEAT 0
|
||||
#define SIMDIFF_EASY 1
|
||||
#define SIMDIFF_NORMAL 2
|
||||
#define SIMDIFF_HARD 3
|
||||
#define SIMDIFF_PERFECT 4
|
||||
#define SIMDIFF_DARK 5
|
||||
#define SIMDIFF_DISABLED 6
|
||||
|
||||
#define SIMTYPE_GENERAL 0
|
||||
#define SIMTYPE_PEACE 1
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ extern struct mptrack g_MpTracks[NUM_MPTRACKS];
|
|||
extern struct mppreset g_MpPresets[NUM_MPPRESETS];
|
||||
extern u32 g_TeamColours[MAX_TEAMS];
|
||||
extern u8 g_NumMpSimulantChrs;
|
||||
extern struct simskill g_SimSkills[];
|
||||
extern struct simdifficulty g_SimDifficulties[];
|
||||
extern u32 g_MpBotCommands[NUM_MPBOTCOMMANDS];
|
||||
extern u32 var80087e2c;
|
||||
extern u32 var80087e50;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
void func0f00b210(void);
|
||||
void mpInitPresetFeatures(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ bool mpIsChallengeCompletedByAnyChrWithNumPlayersBySlot(s32 slot, s32 numplayers
|
|||
struct mpconfigfull *mpLoadConfig(s32 confignum, u8 *buffer, s32 len);
|
||||
s32 mpForceUnlockFeature(s32 featurenum, u8 *array, s32 tail, s32 len);
|
||||
s32 mpForceUnlockSetupFeatures(struct mpsetup *mpsetup, u8 *array, s32 len);
|
||||
void mpForceUnlockSimulantFeatures2(struct mpsetupwrapper *wrapper, u8 *array, s32 len, s32 arg3);
|
||||
void mpForceUnlockConfigFeatures(struct mpconfig *config, u8 *array, s32 len, s32 challengeindex);
|
||||
void mpForceUnlockSimulantFeatures(void);
|
||||
void func0f19c1cc(void);
|
||||
char *mpGetCurrentChallengeDescription(void);
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ void mpRemoveSimulant(s32 index);
|
|||
bool mpHasSimulants(void);
|
||||
u32 func0f18cc8c(void);
|
||||
bool mpIsSimSlotEnabled(s32 slot);
|
||||
s32 mpGetSimTypeIndex(s32 type, s32 skill);
|
||||
s32 mpGetSimTypeIndex(s32 type, s32 difficulty);
|
||||
u32 func0f18cddc(void);
|
||||
s32 mpPlayerGetIndex(struct chrdata *chr);
|
||||
struct chrdata *mpGetChrFromPlayerIndex(s32 index);
|
||||
|
|
@ -103,7 +103,7 @@ u32 func0f18d5c4(void);
|
|||
void func0f18d9a4(char *arg0, char *buffer, u32 *arg2);
|
||||
s32 func0f18d9fc(void *arg0, s32 arg1, s32 arg2, u16 arg3);
|
||||
s32 func0f18dac0(void *arg0, s32 arg1, s32 arg2, u16 arg3);
|
||||
u32 mpGetNumPresets(void);
|
||||
s32 mpGetNumPresets(void);
|
||||
bool mpIsPresetUnlocked(s32 presetnum);
|
||||
s32 mpGetNumUnlockedPresets(void);
|
||||
char *mpGetPresetNameBySlot(s32 slot);
|
||||
|
|
|
|||
|
|
@ -818,11 +818,11 @@ extern struct mpchr *var800ac500[MAX_MPCHRS];
|
|||
extern s32 g_MpNumPlayers;
|
||||
extern struct mpsim g_MpSimulants[MAX_SIMULANTS];
|
||||
|
||||
// Elements 0-3 are skill levels for simulant 0 when there's 1/2/3/4 players
|
||||
// Elements 4-7 are skill levels for simulant 1 when there's 1/2/3/4 players
|
||||
// Elements 0-3 are difficulty levels for simulant 0 when there's 1/2/3/4 players
|
||||
// Elements 4-7 are difficulty levels for simulant 1 when there's 1/2/3/4 players
|
||||
// ...
|
||||
// Elements 28-31 are skill levels for simulant 7 when there's 1/2/3/4 players
|
||||
extern u8 g_MpSimulantSkillsPerNumPlayers[32];
|
||||
// Elements 28-31 are difficulty levels for simulant 7 when there's 1/2/3/4 players
|
||||
extern u8 g_MpSimulantDifficultiesPerNumPlayers[32];
|
||||
|
||||
extern struct mpplayer g_MpPlayers[6];
|
||||
extern u8 g_ActiveMenuMpBotCommands[16];
|
||||
|
|
|
|||
|
|
@ -3086,7 +3086,7 @@ struct mphead {
|
|||
|
||||
struct mpsimulanttype {
|
||||
/*0x00*/ u8 type;
|
||||
/*0x01*/ u8 skill;
|
||||
/*0x01*/ u8 difficulty;
|
||||
/*0x02*/ u16 name;
|
||||
/*0x04*/ u16 body;
|
||||
/*0x06*/ u8 requirefeature;
|
||||
|
|
@ -4399,7 +4399,7 @@ struct mpplayer {
|
|||
|
||||
struct mpsim {
|
||||
/*0x00*/ struct mpchr base;
|
||||
/*0x48*/ u8 skill;
|
||||
/*0x48*/ u8 difficulty;
|
||||
};
|
||||
|
||||
struct missionconfig {
|
||||
|
|
@ -4532,8 +4532,8 @@ struct challenge {
|
|||
/*0x05*/ u8 completions[4];
|
||||
|
||||
// Array of features which will become unlocked once the challenge is
|
||||
// available. Seems to be unused though, as all arrays are empty.
|
||||
// Maybe it's populated at runtime?
|
||||
// available. The array is automatically populated at runtime based on what
|
||||
// features the challenge uses.
|
||||
/*0x09*/ u8 unlockfeatures[16];
|
||||
};
|
||||
|
||||
|
|
@ -5000,7 +5000,7 @@ struct propdefinition {
|
|||
u16 scale;
|
||||
};
|
||||
|
||||
struct simskill {
|
||||
struct simdifficulty {
|
||||
u8 unk00;
|
||||
f32 unk04;
|
||||
f32 unk08;
|
||||
|
|
@ -5799,22 +5799,15 @@ struct menuinputs {
|
|||
};
|
||||
|
||||
struct mpconfigsim {
|
||||
u16 mphead;
|
||||
u8 mpbody;
|
||||
u8 type;
|
||||
u8 mpheadnum;
|
||||
u8 mpbodynum;
|
||||
u8 team;
|
||||
u8 difficulties[4]; // per player count
|
||||
};
|
||||
|
||||
struct mpconfig {
|
||||
/*0x00*/ char name[12];
|
||||
/*0x0c*/ u32 options;
|
||||
/*0x10*/ u8 scenario;
|
||||
/*0x11*/ u8 stage;
|
||||
/*0x12*/ u8 timelimit; // minus 1, 60 = no limit
|
||||
/*0x13*/ u8 scorelimit; // minus 1, 100 = no limit
|
||||
/*0x14*/ u16 teamscorelimit; // minus 1, 400 = no limit
|
||||
/*0x16*/ u16 unk16;
|
||||
/*0x18*/ u8 weapons[16];
|
||||
struct mpsetup setup;
|
||||
struct mpconfigsim simulants[8];
|
||||
};
|
||||
|
||||
|
|
@ -6658,17 +6651,4 @@ struct var80067e6c {
|
|||
f32 value;
|
||||
};
|
||||
|
||||
struct mpsetupwrapperthing {
|
||||
/*0x28*/ u8 simskill;
|
||||
/*0x29*/ u8 mpheadnum;
|
||||
/*0x2a*/ u8 mpbodynum;
|
||||
/*0x2b*/ u8 unk2b;
|
||||
/*0x2c*/ u8 simtypes[4];
|
||||
};
|
||||
|
||||
struct mpsetupwrapper {
|
||||
struct mpsetup setup;
|
||||
struct mpsetupwrapperthing things[8];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -517,7 +517,7 @@ glabel mainInit
|
|||
/* d9b4: 24040006 */ addiu $a0,$zero,0x6
|
||||
/* d9b8: 0c0033be */ jal func0000cef8
|
||||
/* d9bc: 00000000 */ nop
|
||||
/* d9c0: 0fc02c84 */ jal func0f00b210
|
||||
/* d9c0: 0fc02c84 */ jal mpInitPresetFeatures
|
||||
/* d9c4: 00000000 */ nop
|
||||
/* d9c8: 0fc5db77 */ jal func0f176ddc
|
||||
/* d9cc: 00000000 */ nop
|
||||
|
|
@ -767,7 +767,7 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400";
|
|||
// memResetPool(8);
|
||||
// memResetPool(6);
|
||||
// func0000cef8();
|
||||
// func0f00b210();
|
||||
// mpInitPresetFeatures();
|
||||
// func0f176ddc();
|
||||
// func000034d0();
|
||||
// loadTextureList();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue