Attempt to decompile mpLoadConfig
This commit is contained in:
parent
6f69f7deb5
commit
f0522dbfcf
8
ld/pd.ld
8
ld/pd.ld
|
|
@ -27,6 +27,14 @@ SECTIONS
|
|||
_rspMicrocodeStart = 0x80059fe0;
|
||||
_rspMicrocodeStartPlusOne = 0x80059fe1;
|
||||
_rspMicrocodeEnd = 0x8005afe0;
|
||||
_mpconfigsSegmentRomStart = 0x7d0a40;
|
||||
_mpstringsESegmentRomStart = 0x007d1c20; _mpstringsESegmentRomEnd = 0x007d5320;
|
||||
_mpstringsJSegmentRomStart = 0x007d5320; _mpstringsJSegmentRomEnd = 0x007d8a20;
|
||||
_mpstringsPSegmentRomStart = 0x007d8a20; _mpstringsPSegmentRomEnd = 0x007dc120;
|
||||
_mpstringsGSegmentRomStart = 0x007dc120; _mpstringsGSegmentRomEnd = 0x007df820;
|
||||
_mpstringsFSegmentRomStart = 0x007df820; _mpstringsFSegmentRomEnd = 0x007e2f20;
|
||||
_mpstringsSSegmentRomStart = 0x007e2f20; _mpstringsSSegmentRomEnd = 0x007e6620;
|
||||
_mpstringsISegmentRomStart = 0x007e6620; _mpstringsISegmentRomEnd = 0x007e9d20;
|
||||
|
||||
#if VERSION >= VERSION_NTSC_FINAL
|
||||
_bssSegmentEnd = 0x7f1b99e0;
|
||||
|
|
|
|||
|
|
@ -559,55 +559,4 @@ u32 var800884a0 = 0x00000000;
|
|||
u32 var800884a4 = 0x00000000;
|
||||
u32 var800884a8 = 0x00000000;
|
||||
u32 var800884ac = 0x00000000;
|
||||
u32 g_MpChallengeIndex = 0;
|
||||
u32 var800884b4 = 0;
|
||||
|
||||
// 2e4d8
|
||||
struct challenge g_MpChallenges[NUM_CHALLENGES] = {
|
||||
{ L_OPTIONS(406), MPCONFIG_CHALLENGE01 }, // "Challenge 1"
|
||||
{ L_OPTIONS(407), MPCONFIG_CHALLENGE02 }, // "Challenge 2"
|
||||
{ L_OPTIONS(408), MPCONFIG_CHALLENGE03 }, // "Challenge 3"
|
||||
{ L_OPTIONS(409), MPCONFIG_CHALLENGE04 }, // "Challenge 4"
|
||||
{ L_OPTIONS(410), MPCONFIG_CHALLENGE05 }, // "Challenge 5"
|
||||
{ L_OPTIONS(411), MPCONFIG_CHALLENGE06 }, // "Challenge 6"
|
||||
{ L_OPTIONS(412), MPCONFIG_CHALLENGE07 }, // "Challenge 7"
|
||||
{ L_OPTIONS(413), MPCONFIG_CHALLENGE08 }, // "Challenge 8"
|
||||
{ L_OPTIONS(414), MPCONFIG_CHALLENGE09 }, // "Challenge 9"
|
||||
{ L_OPTIONS(415), MPCONFIG_CHALLENGE10 }, // "Challenge 10"
|
||||
{ L_OPTIONS(416), MPCONFIG_CHALLENGE11 }, // "Challenge 11"
|
||||
{ L_OPTIONS(417), MPCONFIG_CHALLENGE12 }, // "Challenge 12"
|
||||
{ L_OPTIONS(418), MPCONFIG_CHALLENGE13 }, // "Challenge 13"
|
||||
{ L_OPTIONS(419), MPCONFIG_CHALLENGE14 }, // "Challenge 14"
|
||||
{ L_OPTIONS(420), MPCONFIG_CHALLENGE15 }, // "Challenge 15"
|
||||
{ L_OPTIONS(421), MPCONFIG_CHALLENGE16 }, // "Challenge 16"
|
||||
{ L_OPTIONS(422), MPCONFIG_CHALLENGE17 }, // "Challenge 17"
|
||||
{ L_OPTIONS(423), MPCONFIG_CHALLENGE18 }, // "Challenge 18"
|
||||
{ L_OPTIONS(424), MPCONFIG_CHALLENGE19 }, // "Challenge 19"
|
||||
{ L_OPTIONS(425), MPCONFIG_CHALLENGE20 }, // "Challenge 20"
|
||||
{ L_OPTIONS(426), MPCONFIG_CHALLENGE21 }, // "Challenge 21"
|
||||
{ L_OPTIONS(427), MPCONFIG_CHALLENGE22 }, // "Challenge 22"
|
||||
{ L_OPTIONS(428), MPCONFIG_CHALLENGE23 }, // "Challenge 23"
|
||||
{ L_OPTIONS(429), MPCONFIG_CHALLENGE24 }, // "Challenge 24"
|
||||
{ L_OPTIONS(430), MPCONFIG_CHALLENGE25 }, // "Challenge 25"
|
||||
{ L_OPTIONS(431), MPCONFIG_CHALLENGE26 }, // "Challenge 26"
|
||||
{ L_OPTIONS(432), MPCONFIG_CHALLENGE27 }, // "Challenge 27"
|
||||
{ L_OPTIONS(433), MPCONFIG_CHALLENGE28 }, // "Challenge 28"
|
||||
{ L_OPTIONS(434), MPCONFIG_CHALLENGE29 }, // "Challenge 29"
|
||||
{ L_OPTIONS(435), MPCONFIG_CHALLENGE30 }, // "Challenge 30"
|
||||
};
|
||||
|
||||
u32 var800887c4 = 0x007d1c20;
|
||||
u32 var800887c8 = 0x007d5320;
|
||||
u32 var800887cc = 0x007d5320;
|
||||
u32 var800887d0 = 0x007d8a20;
|
||||
u32 var800887d4 = 0x007d8a20;
|
||||
u32 var800887d8 = 0x007dc120;
|
||||
u32 var800887dc = 0x007dc120;
|
||||
u32 var800887e0 = 0x007df820;
|
||||
u32 var800887e4 = 0x007df820;
|
||||
u32 var800887e8 = 0x007e2f20;
|
||||
u32 var800887ec = 0x007e2f20;
|
||||
u32 var800887f0 = 0x007e6620;
|
||||
u32 var800887f4 = 0x007e6620;
|
||||
u32 var800887f8 = 0x007e9d20;
|
||||
u32 var800887fc = 0x00000000;
|
||||
|
|
|
|||
|
|
@ -12010,11 +12010,11 @@ glabel var7f1b1e8c
|
|||
/* f0ecce4: 030fc023 */ subu $t8,$t8,$t7
|
||||
/* f0ecce8: 0018c100 */ sll $t8,$t8,0x4
|
||||
/* f0eccec: 00982021 */ addu $a0,$a0,$t8
|
||||
/* f0eccf0: 0fc670ac */ jal func0f19c2b0
|
||||
/* f0eccf0: 0fc670ac */ jal mpconfigGetDescription
|
||||
/* f0eccf4: 8c84ee20 */ lw $a0,%lo(g_MenuStack+0xe20)($a0)
|
||||
/* f0eccf8: 10000046 */ beqz $zero,.L0f0ece14
|
||||
/* f0eccfc: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f0ecd00: 0fc6709d */ jal mpIsVar800884b4NonZero
|
||||
/* f0ecd00: 0fc6709d */ jal mpIsChallengeLoaded
|
||||
/* f0ecd04: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f0ecd08: 14400012 */ bnez $v0,.L0f0ecd54
|
||||
/* f0ecd0c: 3c198007 */ lui $t9,%hi(g_MpPlayerNum)
|
||||
|
|
@ -12033,7 +12033,7 @@ glabel var7f1b1e8c
|
|||
/* f0ecd40: 354a5ace */ ori $t2,$t2,0x5ace
|
||||
/* f0ecd44: ac4a0850 */ sw $t2,0x850($v0)
|
||||
/* f0ecd48: 8c440844 */ lw $a0,0x844($v0)
|
||||
/* f0ecd4c: 0fc67091 */ jal mpCalculateVar800884b4
|
||||
/* f0ecd4c: 0fc67091 */ jal mpLoadAndStoreCurrentChallenge
|
||||
/* f0ecd50: 8c450848 */ lw $a1,0x848($v0)
|
||||
.L0f0ecd54:
|
||||
/* f0ecd54: 0fc670a2 */ jal func0f19c288
|
||||
|
|
|
|||
|
|
@ -3581,7 +3581,7 @@ glabel func0f0f37a4
|
|||
/* f0f37b4: 34215ace */ ori $at,$at,0x5ace
|
||||
/* f0f37b8: 55c10005 */ bnel $t6,$at,.L0f0f37d0
|
||||
/* f0f37bc: 44800000 */ mtc1 $zero,$f0
|
||||
/* f0f37c0: 0fc6709a */ jal mpResetVar800884b4
|
||||
/* f0f37c0: 0fc6709a */ jal mpClearCurrentChallenge
|
||||
/* f0f37c4: afa40018 */ sw $a0,0x18($sp)
|
||||
/* f0f37c8: 8fa40018 */ lw $a0,0x18($sp)
|
||||
/* f0f37cc: 44800000 */ mtc1 $zero,$f0
|
||||
|
|
@ -3757,7 +3757,7 @@ glabel var7f1b2948
|
|||
.L0f0f398c:
|
||||
/* f0f398c: 54610004 */ bnel $v1,$at,.L0f0f39a0
|
||||
/* f0f3990: 92020000 */ lbu $v0,0x0($s0)
|
||||
/* f0f3994: 0fc6709a */ jal mpResetVar800884b4
|
||||
/* f0f3994: 0fc6709a */ jal mpClearCurrentChallenge
|
||||
/* f0f3998: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f0f399c: 92020000 */ lbu $v0,0x0($s0)
|
||||
.L0f0f39a0:
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ bool menudialog4MbMainMenu(u32 operation, struct menu_dialog *dialog, struct men
|
|||
g_Vars.unk000490 = 2;
|
||||
g_Vars.mpquickteam = MPQUICKTEAM_5;
|
||||
g_Vars.unk00049c = 0;
|
||||
mpResetVar800884b4();
|
||||
mpClearCurrentChallenge();
|
||||
mpRemoveLock();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5202,7 +5202,7 @@ glabel func0f17e318
|
|||
s32 menuhandler0017e38c(u32 operation, struct menu_item *item, s32 *value)
|
||||
{
|
||||
if (operation == MENUOP_SET) {
|
||||
mpResetVar800884b4();
|
||||
mpClearCurrentChallenge();
|
||||
menuPopDialog();
|
||||
mpSetCurrentChallenge(g_MenuStack[g_MpPlayerNum].slotindex);
|
||||
}
|
||||
|
|
@ -5743,7 +5743,7 @@ glabel menudialog0017eb34
|
|||
/* f17eb98: 8c480000 */ lw $t0,0x0($v0)
|
||||
/* f17eb9c: 54a80017 */ bnel $a1,$t0,.L0f17ebfc
|
||||
/* f17eba0: 8fad0018 */ lw $t5,0x18($sp)
|
||||
/* f17eba4: 0fc6709d */ jal mpIsVar800884b4NonZero
|
||||
/* f17eba4: 0fc6709d */ jal mpIsChallengeLoaded
|
||||
/* f17eba8: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f17ebac: 14400012 */ bnez $v0,.L0f17ebf8
|
||||
/* f17ebb0: 3c098007 */ lui $t1,%hi(g_MpPlayerNum)
|
||||
|
|
@ -5762,7 +5762,7 @@ glabel menudialog0017eb34
|
|||
/* f17ebe4: 358c5ace */ ori $t4,$t4,0x5ace
|
||||
/* f17ebe8: ac4c0850 */ sw $t4,0x850($v0)
|
||||
/* f17ebec: 8c440844 */ lw $a0,0x844($v0)
|
||||
/* f17ebf0: 0fc67091 */ jal mpCalculateVar800884b4
|
||||
/* f17ebf0: 0fc67091 */ jal mpLoadAndStoreCurrentChallenge
|
||||
/* f17ebf4: 8c450848 */ lw $a1,0x848($v0)
|
||||
.L0f17ebf8:
|
||||
/* f17ebf8: 8fad0018 */ lw $t5,0x18($sp)
|
||||
|
|
@ -5786,7 +5786,7 @@ glabel menudialog0017eb34
|
|||
/* f17ec3c: 34215ace */ ori $at,$at,0x5ace
|
||||
/* f17ec40: 57010004 */ bnel $t8,$at,.L0f17ec54
|
||||
/* f17ec44: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f17ec48: 0fc6709a */ jal mpResetVar800884b4
|
||||
/* f17ec48: 0fc6709a */ jal mpClearCurrentChallenge
|
||||
/* f17ec4c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f17ec50: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f17ec54:
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ bool menudialogCombatSimulator(u32 operation, struct menu_dialog *dialog, struct
|
|||
g_Vars.unk000490 = 2;
|
||||
g_Vars.mpquickteam = MPQUICKTEAM_5;
|
||||
g_Vars.unk00049c = 0;
|
||||
mpResetVar800884b4();
|
||||
mpClearCurrentChallenge();
|
||||
mpRemoveLock();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,43 @@
|
|||
#include "lib/lib_12dc0.h"
|
||||
#include "types.h"
|
||||
|
||||
u32 g_MpChallengeIndex = 0;
|
||||
void *g_MpCurrentChallengeConfig = NULL;
|
||||
|
||||
// 2e4d8
|
||||
struct challenge g_MpChallenges[NUM_CHALLENGES] = {
|
||||
{ L_OPTIONS(406), MPCONFIG_CHALLENGE01 }, // "Challenge 1"
|
||||
{ L_OPTIONS(407), MPCONFIG_CHALLENGE02 }, // "Challenge 2"
|
||||
{ L_OPTIONS(408), MPCONFIG_CHALLENGE03 }, // "Challenge 3"
|
||||
{ L_OPTIONS(409), MPCONFIG_CHALLENGE04 }, // "Challenge 4"
|
||||
{ L_OPTIONS(410), MPCONFIG_CHALLENGE05 }, // "Challenge 5"
|
||||
{ L_OPTIONS(411), MPCONFIG_CHALLENGE06 }, // "Challenge 6"
|
||||
{ L_OPTIONS(412), MPCONFIG_CHALLENGE07 }, // "Challenge 7"
|
||||
{ L_OPTIONS(413), MPCONFIG_CHALLENGE08 }, // "Challenge 8"
|
||||
{ L_OPTIONS(414), MPCONFIG_CHALLENGE09 }, // "Challenge 9"
|
||||
{ L_OPTIONS(415), MPCONFIG_CHALLENGE10 }, // "Challenge 10"
|
||||
{ L_OPTIONS(416), MPCONFIG_CHALLENGE11 }, // "Challenge 11"
|
||||
{ L_OPTIONS(417), MPCONFIG_CHALLENGE12 }, // "Challenge 12"
|
||||
{ L_OPTIONS(418), MPCONFIG_CHALLENGE13 }, // "Challenge 13"
|
||||
{ L_OPTIONS(419), MPCONFIG_CHALLENGE14 }, // "Challenge 14"
|
||||
{ L_OPTIONS(420), MPCONFIG_CHALLENGE15 }, // "Challenge 15"
|
||||
{ L_OPTIONS(421), MPCONFIG_CHALLENGE16 }, // "Challenge 16"
|
||||
{ L_OPTIONS(422), MPCONFIG_CHALLENGE17 }, // "Challenge 17"
|
||||
{ L_OPTIONS(423), MPCONFIG_CHALLENGE18 }, // "Challenge 18"
|
||||
{ L_OPTIONS(424), MPCONFIG_CHALLENGE19 }, // "Challenge 19"
|
||||
{ L_OPTIONS(425), MPCONFIG_CHALLENGE20 }, // "Challenge 20"
|
||||
{ L_OPTIONS(426), MPCONFIG_CHALLENGE21 }, // "Challenge 21"
|
||||
{ L_OPTIONS(427), MPCONFIG_CHALLENGE22 }, // "Challenge 22"
|
||||
{ L_OPTIONS(428), MPCONFIG_CHALLENGE23 }, // "Challenge 23"
|
||||
{ L_OPTIONS(429), MPCONFIG_CHALLENGE24 }, // "Challenge 24"
|
||||
{ L_OPTIONS(430), MPCONFIG_CHALLENGE25 }, // "Challenge 25"
|
||||
{ L_OPTIONS(431), MPCONFIG_CHALLENGE26 }, // "Challenge 26"
|
||||
{ L_OPTIONS(432), MPCONFIG_CHALLENGE27 }, // "Challenge 27"
|
||||
{ L_OPTIONS(433), MPCONFIG_CHALLENGE28 }, // "Challenge 28"
|
||||
{ L_OPTIONS(434), MPCONFIG_CHALLENGE29 }, // "Challenge 29"
|
||||
{ L_OPTIONS(435), MPCONFIG_CHALLENGE30 }, // "Challenge 30"
|
||||
};
|
||||
|
||||
/**
|
||||
* @cmd 0185
|
||||
*/
|
||||
|
|
@ -358,7 +395,7 @@ glabel func0f19afdc
|
|||
/* f19afdc: 27bdffc8 */ addiu $sp,$sp,-56
|
||||
/* f19afe0: afb1001c */ sw $s1,0x1c($sp)
|
||||
/* f19afe4: 3c118009 */ lui $s1,%hi(g_MpChallenges)
|
||||
/* f19afe8: 3c028009 */ lui $v0,%hi(var800887c4)
|
||||
/* f19afe8: 3c028009 */ lui $v0,0x8009
|
||||
/* f19afec: afbf0034 */ sw $ra,0x34($sp)
|
||||
/* f19aff0: afb60030 */ sw $s6,0x30($sp)
|
||||
/* f19aff4: afb5002c */ sw $s5,0x2c($sp)
|
||||
|
|
@ -366,7 +403,7 @@ glabel func0f19afdc
|
|||
/* f19affc: afb30024 */ sw $s3,0x24($sp)
|
||||
/* f19b000: afb20020 */ sw $s2,0x20($sp)
|
||||
/* f19b004: afb00018 */ sw $s0,0x18($sp)
|
||||
/* f19b008: 244287c4 */ addiu $v0,$v0,%lo(var800887c4)
|
||||
/* f19b008: 244287c4 */ addiu $v0,$v0,-30780
|
||||
/* f19b00c: 263184b8 */ addiu $s1,$s1,%lo(g_MpChallenges)
|
||||
.L0f19b010:
|
||||
/* f19b010: 2631001a */ addiu $s1,$s1,0x1a
|
||||
|
|
@ -445,8 +482,8 @@ glabel func0f19afdc
|
|||
/* f19b118: 3c198009 */ lui $t9,%hi(g_MpChallenges)
|
||||
/* f19b11c: 273984b8 */ addiu $t9,$t9,%lo(g_MpChallenges)
|
||||
/* f19b120: 0018c0c0 */ sll $t8,$t8,0x3
|
||||
/* f19b124: 3c038009 */ lui $v1,%hi(var800887c4)
|
||||
/* f19b128: 246387c4 */ addiu $v1,$v1,%lo(var800887c4)
|
||||
/* f19b124: 3c038009 */ lui $v1,0x8009
|
||||
/* f19b128: 246387c4 */ addiu $v1,$v1,-30780
|
||||
/* f19b12c: 03198821 */ addu $s1,$t8,$t9
|
||||
/* f19b130: 92220004 */ lbu $v0,0x4($s1)
|
||||
.L0f19b134:
|
||||
|
|
@ -462,8 +499,8 @@ glabel func0f19afdc
|
|||
/* f19b154: 5623fff7 */ bnel $s1,$v1,.L0f19b134
|
||||
/* f19b158: 92220004 */ lbu $v0,0x4($s1)
|
||||
.L0f19b15c:
|
||||
/* f19b15c: 3c168009 */ lui $s6,%hi(var800887c4)
|
||||
/* f19b160: 26d687c4 */ addiu $s6,$s6,%lo(var800887c4)
|
||||
/* f19b15c: 3c168009 */ lui $s6,0x8009
|
||||
/* f19b160: 26d687c4 */ addiu $s6,$s6,-30780
|
||||
.L0f19b164:
|
||||
/* f19b164: 3c118009 */ lui $s1,%hi(g_MpChallenges)
|
||||
/* f19b168: 0000a025 */ or $s4,$zero,$zero
|
||||
|
|
@ -1007,6 +1044,36 @@ glabel func0f19b800
|
|||
/* f19b910: 27bd0028 */ addiu $sp,$sp,0x28
|
||||
);
|
||||
|
||||
extern u32 _mpstringsESegmentRomStart;
|
||||
extern u32 _mpstringsJSegmentRomStart;
|
||||
extern u32 _mpstringsPSegmentRomStart;
|
||||
extern u32 _mpstringsGSegmentRomStart;
|
||||
extern u32 _mpstringsFSegmentRomStart;
|
||||
extern u32 _mpstringsSSegmentRomStart;
|
||||
extern u32 _mpstringsISegmentRomStart;
|
||||
extern u32 _mpstringsESegmentRomEnd;
|
||||
extern u32 _mpstringsJSegmentRomEnd;
|
||||
extern u32 _mpstringsPSegmentRomEnd;
|
||||
extern u32 _mpstringsGSegmentRomEnd;
|
||||
extern u32 _mpstringsFSegmentRomEnd;
|
||||
extern u32 _mpstringsSSegmentRomEnd;
|
||||
extern u32 _mpstringsISegmentRomEnd;
|
||||
|
||||
u32 *var800887c4 = &_mpstringsESegmentRomStart;
|
||||
u32 *var800887c8 = &_mpstringsESegmentRomEnd;
|
||||
u32 *var800887cc = &_mpstringsJSegmentRomStart;
|
||||
u32 *var800887d0 = &_mpstringsJSegmentRomEnd;
|
||||
u32 *var800887d4 = &_mpstringsPSegmentRomStart;
|
||||
u32 *var800887d8 = &_mpstringsPSegmentRomEnd;
|
||||
u32 *var800887dc = &_mpstringsGSegmentRomStart;
|
||||
u32 *var800887e0 = &_mpstringsGSegmentRomEnd;
|
||||
u32 *var800887e4 = &_mpstringsFSegmentRomStart;
|
||||
u32 *var800887e8 = &_mpstringsFSegmentRomEnd;
|
||||
u32 *var800887ec = &_mpstringsSSegmentRomStart;
|
||||
u32 *var800887f0 = &_mpstringsSSegmentRomEnd;
|
||||
u32 *var800887f4 = &_mpstringsISegmentRomStart;
|
||||
u32 *var800887f8 = &_mpstringsISegmentRomEnd;
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel mpLoadConfig
|
||||
/* f19b914: 27bdfe38 */ addiu $sp,$sp,-456
|
||||
|
|
@ -1015,8 +1082,8 @@ glabel mpLoadConfig
|
|||
/* f19b920: afa501cc */ sw $a1,0x1cc($sp)
|
||||
/* f19b924: 0fc5b9b5 */ jal langGetLanguageId
|
||||
/* f19b928: afa601d0 */ sw $a2,0x1d0($sp)
|
||||
/* f19b92c: 3c0f8009 */ lui $t7,%hi(var800887c4)
|
||||
/* f19b930: 25ef87c4 */ addiu $t7,$t7,%lo(var800887c4)
|
||||
/* f19b92c: 3c0f8009 */ lui $t7,0x8009
|
||||
/* f19b930: 25ef87c4 */ addiu $t7,$t7,-30780
|
||||
/* f19b934: afa20050 */ sw $v0,0x50($sp)
|
||||
/* f19b938: 25e80030 */ addiu $t0,$t7,0x30
|
||||
/* f19b93c: 27ae0018 */ addiu $t6,$sp,0x18
|
||||
|
|
@ -1094,12 +1161,59 @@ glabel mpLoadConfig
|
|||
/* f19ba54: 00000000 */ sll $zero,$zero,0x0
|
||||
);
|
||||
|
||||
s32 mpLoadChallenge(s32 challengeindex, char *buffer, s32 len)
|
||||
// Mismatch because the arguments to an addu instruction are swapped.
|
||||
// It's the addu for calculating &bank[confignum].
|
||||
//struct mpconfigfull *mpLoadConfig(s32 confignum, u8 *buffer, s32 len)
|
||||
//{
|
||||
// struct mpconfigfull *mpconfig;
|
||||
// u8 buffer2[sizeof(struct mpstrings) + 40];
|
||||
// struct mpstrings *loadedstrings;
|
||||
// struct mpstrings *bank;
|
||||
// u32 language_id = langGetLanguageId();
|
||||
// extern struct mpconfig _mpconfigsSegmentRomStart[];
|
||||
// extern struct mpstrings _mpstringsESegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsJSegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsPSegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsGSegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsFSegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsSSegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsISegmentRomStart;
|
||||
// extern struct mpstrings _mpstringsESegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsJSegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsPSegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsGSegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsFSegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsSSegmentRomEnd;
|
||||
// extern struct mpstrings _mpstringsISegmentRomEnd;
|
||||
//
|
||||
// struct mpstrings *banks[][2] = {
|
||||
// { &_mpstringsESegmentRomStart, &_mpstringsESegmentRomEnd },
|
||||
// { &_mpstringsJSegmentRomStart, &_mpstringsJSegmentRomEnd },
|
||||
// { &_mpstringsPSegmentRomStart, &_mpstringsPSegmentRomEnd },
|
||||
// { &_mpstringsGSegmentRomStart, &_mpstringsGSegmentRomEnd },
|
||||
// { &_mpstringsFSegmentRomStart, &_mpstringsFSegmentRomEnd },
|
||||
// { &_mpstringsSSegmentRomStart, &_mpstringsSSegmentRomEnd },
|
||||
// { &_mpstringsISegmentRomStart, &_mpstringsISegmentRomEnd },
|
||||
// };
|
||||
//
|
||||
// // Load mpconfigs
|
||||
// mpconfig = func0000d488(buffer, &_mpconfigsSegmentRomStart[confignum], sizeof(struct mpconfig));
|
||||
//
|
||||
// // Load mpstrings
|
||||
// bank = banks[language_id][0];
|
||||
// loadedstrings = func0000d488(buffer2, &bank[confignum], sizeof(struct mpstrings));
|
||||
//
|
||||
// mpconfig->strings = *loadedstrings;
|
||||
//
|
||||
// return mpconfig;
|
||||
//}
|
||||
|
||||
struct mpconfigfull *mpLoadChallenge(s32 challengeindex, u8 *buffer, s32 len)
|
||||
{
|
||||
return mpLoadConfig(g_MpChallenges[challengeindex].confignum, buffer, len);
|
||||
}
|
||||
|
||||
s32 mpGetNthAvailableChallengeSomething(s32 n, char *buffer, s32 len)
|
||||
struct mpconfigfull *mpGetNthAvailableChallengeSomething(s32 n, u8 *buffer, s32 len)
|
||||
{
|
||||
s32 numavailable = 0;
|
||||
s32 challengeindex;
|
||||
|
|
@ -1117,7 +1231,7 @@ s32 mpGetNthAvailableChallengeSomething(s32 n, char *buffer, s32 len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
s32 mpLoadCurrentChallenge(char *buffer, s32 len)
|
||||
struct mpconfigfull *mpLoadCurrentChallenge(u8 *buffer, s32 len)
|
||||
{
|
||||
return mpLoadChallenge(g_MpChallengeIndex, buffer, len);
|
||||
}
|
||||
|
|
@ -1592,7 +1706,7 @@ void func0f19c190(void)
|
|||
void func0f19c1cc(void)
|
||||
{
|
||||
s32 i;
|
||||
char buffer[458];
|
||||
u8 buffer[458];
|
||||
|
||||
func0f18dcec(mpLoadCurrentChallenge(buffer, 458));
|
||||
mpSetLock(MPLOCKTYPE_CHALLENGE, 5);
|
||||
|
|
@ -1607,27 +1721,27 @@ s32 mpRemoveLock(void)
|
|||
return mpSetLock(MPLOCKTYPE_NONE, 0);
|
||||
}
|
||||
|
||||
void mpCalculateVar800884b4(char *buffer, s32 len)
|
||||
void mpLoadAndStoreCurrentChallenge(u8 *buffer, s32 len)
|
||||
{
|
||||
var800884b4 = mpLoadCurrentChallenge(buffer, len);
|
||||
g_MpCurrentChallengeConfig = mpLoadCurrentChallenge(buffer, len);
|
||||
}
|
||||
|
||||
void mpResetVar800884b4(void)
|
||||
void mpClearCurrentChallenge(void)
|
||||
{
|
||||
var800884b4 = 0;
|
||||
g_MpCurrentChallengeConfig = NULL;
|
||||
}
|
||||
|
||||
bool mpIsVar800884b4NonZero(void)
|
||||
bool mpIsChallengeLoaded(void)
|
||||
{
|
||||
return var800884b4 != 0;
|
||||
return g_MpCurrentChallengeConfig != NULL;
|
||||
}
|
||||
|
||||
const char var7f1b9174[] = "";
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f19c288
|
||||
/* f19c288: 3c038009 */ lui $v1,%hi(var800884b4)
|
||||
/* f19c28c: 8c6384b4 */ lw $v1,%lo(var800884b4)($v1)
|
||||
/* f19c288: 3c038009 */ lui $v1,%hi(g_MpCurrentChallengeConfig)
|
||||
/* f19c28c: 8c6384b4 */ lw $v1,%lo(g_MpCurrentChallengeConfig)($v1)
|
||||
/* f19c290: 3c027f1c */ lui $v0,%hi(var7f1b9174)
|
||||
/* f19c294: 24429174 */ addiu $v0,$v0,%lo(var7f1b9174)
|
||||
/* f19c298: 10600003 */ beqz $v1,.L0f19c2a8
|
||||
|
|
|
|||
|
|
@ -16,9 +16,5 @@ extern u32 var80087eb0;
|
|||
extern u32 var80088490;
|
||||
extern u32 var80088494;
|
||||
extern u32 var800884a4;
|
||||
extern u32 g_MpChallengeIndex;
|
||||
extern u32 var800884b4;
|
||||
extern struct challenge g_MpChallenges[NUM_CHALLENGES];
|
||||
extern u32 var800887c4;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,20 +3,24 @@
|
|||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
extern u32 g_MpChallengeIndex;
|
||||
extern void *g_MpCurrentChallengeConfig;
|
||||
extern struct challenge g_MpChallenges[NUM_CHALLENGES];
|
||||
|
||||
bool ai0176(void);
|
||||
u32 func0f19ab70(void);
|
||||
void func0f19afdc(void);
|
||||
void func0f19b540(void);
|
||||
char *mpGetChallengeNameBySlot(s32 slot);
|
||||
u32 func0f19b800(void);
|
||||
s32 mpLoadConfig(s16 arg0, char *buffer, s32 len);
|
||||
struct mpconfigfull *mpLoadConfig(s32 confignum, u8 *buffer, s32 len);
|
||||
u32 func0f19bb50(void);
|
||||
u32 func0f19bb98(void);
|
||||
u32 func0f19bd4c(void);
|
||||
u32 func0f19bfa0(void);
|
||||
void func0f19c1cc(void);
|
||||
u32 func0f19c288(void);
|
||||
u32 func0f19c2b0(void);
|
||||
char *mpconfigGetDescription(struct mpconfigfull *mpconfig);
|
||||
bool mpIsChallengeCompleteForEndscreen(void);
|
||||
bool aiMpInitSimulants(void);
|
||||
void func0f19ab40(void);
|
||||
|
|
@ -26,14 +30,14 @@ s32 mpGetNumAvailableChallenges(void);
|
|||
char *mpChallengeGetName(s32 challengeindex);
|
||||
void mpSetCurrentChallenge(s32 slotnum);
|
||||
s32 mpGetCurrentChallengeIndex(void);
|
||||
s32 mpLoadChallenge(s32 challengeindex, char *buffer, s32 len);
|
||||
s32 mpGetNthAvailableChallengeSomething(s32 n, char *buffer, s32 len);
|
||||
s32 mpLoadCurrentChallenge(char *buffer, s32 len);
|
||||
struct mpconfigfull *mpLoadChallenge(s32 challengeindex, u8 *buffer, s32 len);
|
||||
struct mpconfigfull *mpGetNthAvailableChallengeSomething(s32 n, u8 *buffer, s32 len);
|
||||
struct mpconfigfull *mpLoadCurrentChallenge(u8 *buffer, s32 len);
|
||||
void func0f19c190(void);
|
||||
s32 mpRemoveLock(void);
|
||||
void mpCalculateVar800884b4(char *buffer, s32 len);
|
||||
void mpResetVar800884b4(void);
|
||||
bool mpIsVar800884b4NonZero(void);
|
||||
void mpLoadAndStoreCurrentChallenge(u8 *buffer, s32 len);
|
||||
void mpClearCurrentChallenge(void);
|
||||
bool mpIsChallengeLoaded(void);
|
||||
s32 mpGetNumChallengesAvailable(s32 mpchrnum);
|
||||
char *mpChallengeGetNameWithArg(s32 arg0, s32 challengeindex);
|
||||
bool func0f19c3bc(s32 mpchrnum, s32 index, s32 numplayers);
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ u32 mpGetNumPresets(void);
|
|||
bool mpIsPresetUnlocked(s32 presetnum);
|
||||
s32 mpGetNumUnlockedPresets(void);
|
||||
char *mpGetPresetNameBySlot(s32 slot);
|
||||
void func0f18dcec(s32 arg0);
|
||||
void func0f18dcec(struct mpconfigfull *mpconfig);
|
||||
u32 func0f18dec4(void);
|
||||
u32 func0f18df5c(void);
|
||||
u32 func0f18e16c(void);
|
||||
|
|
|
|||
|
|
@ -5647,4 +5647,9 @@ struct mpstrings {
|
|||
char aibotnames[8][15];
|
||||
};
|
||||
|
||||
struct mpconfigfull {
|
||||
struct mpconfig config;
|
||||
struct mpstrings strings;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue