Decompile mpplayerfileLoadWad

This commit is contained in:
Ryan Dwyer 2021-09-14 19:32:08 +10:00
parent f0a76a86d1
commit ac62088088
6 changed files with 109 additions and 274 deletions

View File

@ -1555,10 +1555,10 @@ void currentPlayerChooseBodyAndHead(s32 *bodynum, s32 *headnum, s32 *arg2)
}
if (g_Vars.normmplayerisrunning) {
if (g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum < func0f18bb1c()) {
if (g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum < mpGetNumHeads2()) {
*headnum = mpGetHeadId(g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum);
} else {
*headnum = g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum - func0f18bb1c();
*headnum = g_MpPlayers[g_Vars.currentplayerstats->mpindex].base.mpheadnum - mpGetNumHeads2();
if (arg2) {
*arg2 = true;

View File

@ -5300,7 +5300,7 @@ glabel var7f1b3c40pf
/* f0f4164: 01408825 */ move $s1,$t2
/* f0f4168: 0fc6330d */ jal mpGetBodyId
/* f0f416c: 316400ff */ andi $a0,$t3,0xff
/* f0f4170: 0fc632f0 */ jal func0f18bb1c
/* f0f4170: 0fc632f0 */ jal mpGetNumHeads2
/* f0f4174: afa20404 */ sw $v0,0x404($sp)
/* f0f4178: 0222082a */ slt $at,$s1,$v0
/* f0f417c: 10200005 */ beqz $at,.PF0f0f4194
@ -5310,13 +5310,13 @@ glabel var7f1b3c40pf
/* f0f418c: 1000000b */ b .PF0f0f41bc
/* f0f4190: afa20400 */ sw $v0,0x400($sp)
.PF0f0f4194:
/* f0f4194: 0fc632f0 */ jal func0f18bb1c
/* f0f4194: 0fc632f0 */ jal mpGetNumHeads2
/* f0f4198: 00000000 */ nop
/* f0f419c: 0fc52daa */ jal func0f14a9f8
/* f0f41a0: 02222023 */ subu $a0,$s1,$v0
/* f0f41a4: 0fc63302 */ jal mpGetBeauHeadId
/* f0f41a8: 304400ff */ andi $a0,$v0,0xff
/* f0f41ac: 0fc632f0 */ jal func0f18bb1c
/* f0f41ac: 0fc632f0 */ jal mpGetNumHeads2
/* f0f41b0: afa20400 */ sw $v0,0x400($sp)
/* f0f41b4: 02226823 */ subu $t5,$s1,$v0
/* f0f41b8: a20d05b0 */ sb $t5,0x5b0($s0)
@ -6902,7 +6902,7 @@ glabel var7f1b2948
/* f0f3a10: 01808825 */ or $s1,$t4,$zero
/* f0f3a14: 0fc62ee4 */ jal mpGetBodyId
/* f0f3a18: 31a400ff */ andi $a0,$t5,0xff
/* f0f3a1c: 0fc62ec7 */ jal func0f18bb1c
/* f0f3a1c: 0fc62ec7 */ jal mpGetNumHeads2
/* f0f3a20: afa20404 */ sw $v0,0x404($sp)
/* f0f3a24: 0222082a */ slt $at,$s1,$v0
/* f0f3a28: 10200005 */ beqz $at,.L0f0f3a40
@ -6912,13 +6912,13 @@ glabel var7f1b2948
/* f0f3a38: 1000000b */ b .L0f0f3a68
/* f0f3a3c: afa20400 */ sw $v0,0x400($sp)
.L0f0f3a40:
/* f0f3a40: 0fc62ec7 */ jal func0f18bb1c
/* f0f3a40: 0fc62ec7 */ jal mpGetNumHeads2
/* f0f3a44: 00000000 */ nop
/* f0f3a48: 0fc52a7e */ jal func0f14a9f8
/* f0f3a4c: 02222023 */ subu $a0,$s1,$v0
/* f0f3a50: 0fc62ed9 */ jal mpGetBeauHeadId
/* f0f3a54: 304400ff */ andi $a0,$v0,0xff
/* f0f3a58: 0fc62ec7 */ jal func0f18bb1c
/* f0f3a58: 0fc62ec7 */ jal mpGetNumHeads2
/* f0f3a5c: afa20400 */ sw $v0,0x400($sp)
/* f0f3a60: 02227823 */ subu $t7,$s1,$v0
/* f0f3a64: a20f05b0 */ sb $t7,0x5b0($s0)
@ -8511,7 +8511,7 @@ glabel var7f1b2948
/* f0f0554: 01808025 */ or $s0,$t4,$zero
/* f0f0558: 0fc6177a */ jal mpGetBodyId
/* f0f055c: 31a400ff */ andi $a0,$t5,0xff
/* f0f0560: 0fc6175d */ jal func0f18bb1c
/* f0f0560: 0fc6175d */ jal mpGetNumHeads2
/* f0f0564: afa2042c */ sw $v0,0x42c($sp)
/* f0f0568: 0202082a */ slt $at,$s0,$v0
/* f0f056c: 10200005 */ beqz $at,.NB0f0f0584
@ -8521,13 +8521,13 @@ glabel var7f1b2948
/* f0f057c: 1000000b */ beqz $zero,.NB0f0f05ac
/* f0f0580: afa20428 */ sw $v0,0x428($sp)
.NB0f0f0584:
/* f0f0584: 0fc6175d */ jal func0f18bb1c
/* f0f0584: 0fc6175d */ jal mpGetNumHeads2
/* f0f0588: 00000000 */ sll $zero,$zero,0x0
/* f0f058c: 0fc51472 */ jal func0f14a9f8
/* f0f0590: 02022023 */ subu $a0,$s0,$v0
/* f0f0594: 0fc6176f */ jal mpGetBeauHeadId
/* f0f0598: 304400ff */ andi $a0,$v0,0xff
/* f0f059c: 0fc6175d */ jal func0f18bb1c
/* f0f059c: 0fc6175d */ jal mpGetNumHeads2
/* f0f05a0: afa20428 */ sw $v0,0x428($sp)
/* f0f05a4: 02027823 */ subu $t7,$s0,$v0
/* f0f05a8: a22f05b0 */ sb $t7,0x5b0($s1)

View File

@ -6948,7 +6948,7 @@ void mpEndMatch(void)
func0f0f820c(NULL, -6);
}
s32 func0f18bb1c(void)
s32 mpGetNumHeads2(void)
{
return NUM_MPHEADS;
}
@ -8633,210 +8633,70 @@ glabel func0f18d238
/* f18d2b4: 27bd0028 */ addiu $sp,$sp,0x28
);
GLOBAL_ASM(
glabel func0f18d2b8
/* f18d2b8: 27bdffa8 */ addiu $sp,$sp,-88
/* f18d2bc: afb40024 */ sw $s4,0x24($sp)
/* f18d2c0: 0080a025 */ or $s4,$a0,$zero
/* f18d2c4: 00147080 */ sll $t6,$s4,0x2
/* f18d2c8: 01d47021 */ addu $t6,$t6,$s4
/* f18d2cc: 3c0f800b */ lui $t7,%hi(g_MpPlayers)
/* f18d2d0: afb50028 */ sw $s5,0x28($sp)
/* f18d2d4: afb30020 */ sw $s3,0x20($sp)
/* f18d2d8: afb00014 */ sw $s0,0x14($sp)
/* f18d2dc: 25efc7b8 */ addiu $t7,$t7,%lo(g_MpPlayers)
/* f18d2e0: 000e7140 */ sll $t6,$t6,0x5
/* f18d2e4: 00c08025 */ or $s0,$a2,$zero
/* f18d2e8: 00a09825 */ or $s3,$a1,$zero
/* f18d2ec: afbf002c */ sw $ra,0x2c($sp)
/* f18d2f0: 01cfa821 */ addu $s5,$t6,$t7
/* f18d2f4: 00a02025 */ or $a0,$a1,$zero
/* f18d2f8: afb2001c */ sw $s2,0x1c($sp)
/* f18d2fc: afb10018 */ sw $s1,0x18($sp)
/* f18d300: 02a02825 */ or $a1,$s5,$zero
/* f18d304: 0fc35539 */ jal savebufferReadString
/* f18d308: 24060001 */ addiu $a2,$zero,0x1
/* f18d30c: 02602025 */ or $a0,$s3,$zero
/* f18d310: 0fc354fe */ jal savebufferReadBits
/* f18d314: 2405001c */ addiu $a1,$zero,0x1c
/* f18d318: 12000037 */ beqz $s0,.L0f18d3f8
/* f18d31c: aea20068 */ sw $v0,0x68($s5)
/* f18d320: 02602025 */ or $a0,$s3,$zero
/* f18d324: 0fc354fe */ jal savebufferReadBits
/* f18d328: 24050007 */ addiu $a1,$zero,0x7
/* f18d32c: a2a2000f */ sb $v0,0xf($s5)
/* f18d330: 02602025 */ or $a0,$s3,$zero
/* f18d334: 0fc354fe */ jal savebufferReadBits
/* f18d338: 24050007 */ addiu $a1,$zero,0x7
/* f18d33c: a2a20010 */ sb $v0,0x10($s5)
/* f18d340: 02602025 */ or $a0,$s3,$zero
/* f18d344: 0fc355e7 */ jal func0f0d579c
/* f18d348: 27a50050 */ addiu $a1,$sp,0x50
/* f18d34c: 0fc62ec7 */ jal func0f18bb1c
/* f18d350: 00000000 */ nop
/* f18d354: 92b8000f */ lbu $t8,0xf($s5)
/* f18d358: 8fa60050 */ lw $a2,0x50($sp)
/* f18d35c: 0302082a */ slt $at,$t8,$v0
/* f18d360: 5420002f */ bnezl $at,.L0f18d420
/* f18d364: 02602025 */ or $a0,$s3,$zero
/* f18d368: 10c00021 */ beqz $a2,.L0f18d3f0
/* f18d36c: 97a70054 */ lhu $a3,0x54($sp)
/* f18d370: 10e0001f */ beqz $a3,.L0f18d3f0
/* f18d374: 3c02800a */ lui $v0,%hi(g_MenuData)
/* f18d378: 244219c0 */ addiu $v0,$v0,%lo(g_MenuData)
/* f18d37c: 80450668 */ lb $a1,0x668($v0)
/* f18d380: 28a1000b */ slti $at,$a1,0xb
/* f18d384: 10200025 */ beqz $at,.L0f18d41c
/* f18d388: 24b90001 */ addiu $t9,$a1,0x1
/* f18d38c: a0590668 */ sb $t9,0x668($v0)
/* f18d390: 80480668 */ lb $t0,0x668($v0)
/* f18d394: 2404000c */ addiu $a0,$zero,0xc
/* f18d398: 3c038007 */ lui $v1,%hi(g_MpPlayerNum)
/* f18d39c: 01040019 */ multu $t0,$a0
/* f18d3a0: 00004812 */ mflo $t1
/* f18d3a4: 00495021 */ addu $t2,$v0,$t1
/* f18d3a8: ad4605d8 */ sw $a2,0x5d8($t2)
/* f18d3ac: 804b0668 */ lb $t3,0x668($v0)
/* f18d3b0: 01640019 */ multu $t3,$a0
/* f18d3b4: 00006012 */ mflo $t4
/* f18d3b8: 004c6821 */ addu $t5,$v0,$t4
/* f18d3bc: a5a705dc */ sh $a3,0x5dc($t5)
/* f18d3c0: 804e0668 */ lb $t6,0x668($v0)
/* f18d3c4: 8c631448 */ lw $v1,%lo(g_MpPlayerNum)($v1)
/* f18d3c8: 01c40019 */ multu $t6,$a0
/* f18d3cc: 00007812 */ mflo $t7
/* f18d3d0: 004fc021 */ addu $t8,$v0,$t7
/* f18d3d4: a30305e0 */ sb $v1,0x5e0($t8)
/* f18d3d8: 80590668 */ lb $t9,0x668($v0)
/* f18d3dc: 03240019 */ multu $t9,$a0
/* f18d3e0: 00004012 */ mflo $t0
/* f18d3e4: 00484821 */ addu $t1,$v0,$t0
/* f18d3e8: 1000000c */ b .L0f18d41c
/* f18d3ec: a12305e1 */ sb $v1,0x5e1($t1)
.L0f18d3f0:
/* f18d3f0: 1000000a */ b .L0f18d41c
/* f18d3f4: a2a0000f */ sb $zero,0xf($s5)
.L0f18d3f8:
/* f18d3f8: 02602025 */ or $a0,$s3,$zero
/* f18d3fc: 0fc354fe */ jal savebufferReadBits
/* f18d400: 24050007 */ addiu $a1,$zero,0x7
/* f18d404: 02602025 */ or $a0,$s3,$zero
/* f18d408: 0fc354fe */ jal savebufferReadBits
/* f18d40c: 24050007 */ addiu $a1,$zero,0x7
/* f18d410: 02602025 */ or $a0,$s3,$zero
/* f18d414: 0fc355e7 */ jal func0f0d579c
/* f18d418: 27a50050 */ addiu $a1,$sp,0x50
.L0f18d41c:
/* f18d41c: 02602025 */ or $a0,$s3,$zero
.L0f18d420:
/* f18d420: 0fc354fe */ jal savebufferReadBits
/* f18d424: 24050008 */ addiu $a1,$zero,0x8
/* f18d428: aea20014 */ sw $v0,0x14($s5)
/* f18d42c: 02602025 */ or $a0,$s3,$zero
/* f18d430: 0fc354fe */ jal savebufferReadBits
/* f18d434: 24050014 */ addiu $a1,$zero,0x14
/* f18d438: aea20054 */ sw $v0,0x54($s5)
/* f18d43c: 02602025 */ or $a0,$s3,$zero
/* f18d440: 0fc354fe */ jal savebufferReadBits
/* f18d444: 24050014 */ addiu $a1,$zero,0x14
/* f18d448: aea20058 */ sw $v0,0x58($s5)
/* f18d44c: 02602025 */ or $a0,$s3,$zero
/* f18d450: 0fc354fe */ jal savebufferReadBits
/* f18d454: 24050013 */ addiu $a1,$zero,0x13
/* f18d458: aea2005c */ sw $v0,0x5c($s5)
/* f18d45c: 02602025 */ or $a0,$s3,$zero
/* f18d460: 0fc354fe */ jal savebufferReadBits
/* f18d464: 24050013 */ addiu $a1,$zero,0x13
/* f18d468: aea20060 */ sw $v0,0x60($s5)
/* f18d46c: 02602025 */ or $a0,$s3,$zero
/* f18d470: 0fc354fe */ jal savebufferReadBits
/* f18d474: 24050013 */ addiu $a1,$zero,0x13
/* f18d478: aea20064 */ sw $v0,0x64($s5)
/* f18d47c: 02602025 */ or $a0,$s3,$zero
/* f18d480: 0fc354fe */ jal savebufferReadBits
/* f18d484: 24050019 */ addiu $a1,$zero,0x19
/* f18d488: aea2006c */ sw $v0,0x6c($s5)
/* f18d48c: 02602025 */ or $a0,$s3,$zero
/* f18d490: 0fc354fe */ jal savebufferReadBits
/* f18d494: 2405000a */ addiu $a1,$zero,0xa
/* f18d498: aea20070 */ sw $v0,0x70($s5)
/* f18d49c: 02602025 */ or $a0,$s3,$zero
/* f18d4a0: 0fc354fe */ jal savebufferReadBits
/* f18d4a4: 2405001a */ addiu $a1,$zero,0x1a
/* f18d4a8: aea20074 */ sw $v0,0x74($s5)
/* f18d4ac: 02602025 */ or $a0,$s3,$zero
/* f18d4b0: 0fc354fe */ jal savebufferReadBits
/* f18d4b4: 2405001a */ addiu $a1,$zero,0x1a
/* f18d4b8: aea20078 */ sw $v0,0x78($s5)
/* f18d4bc: 02602025 */ or $a0,$s3,$zero
/* f18d4c0: 0fc354fe */ jal savebufferReadBits
/* f18d4c4: 24050014 */ addiu $a1,$zero,0x14
/* f18d4c8: aea2007c */ sw $v0,0x7c($s5)
/* f18d4cc: 02602025 */ or $a0,$s3,$zero
/* f18d4d0: 0fc354fe */ jal savebufferReadBits
/* f18d4d4: 2405001e */ addiu $a1,$zero,0x1e
/* f18d4d8: aea20080 */ sw $v0,0x80($s5)
/* f18d4dc: 02602025 */ or $a0,$s3,$zero
/* f18d4e0: 0fc354fe */ jal savebufferReadBits
/* f18d4e4: 24050012 */ addiu $a1,$zero,0x12
/* f18d4e8: aea20084 */ sw $v0,0x84($s5)
/* f18d4ec: 02602025 */ or $a0,$s3,$zero
/* f18d4f0: 0fc354fe */ jal savebufferReadBits
/* f18d4f4: 24050012 */ addiu $a1,$zero,0x12
/* f18d4f8: aea20088 */ sw $v0,0x88($s5)
/* f18d4fc: 02602025 */ or $a0,$s3,$zero
/* f18d500: 0fc354fe */ jal savebufferReadBits
/* f18d504: 24050012 */ addiu $a1,$zero,0x12
/* f18d508: aea2008c */ sw $v0,0x8c($s5)
/* f18d50c: 02602025 */ or $a0,$s3,$zero
/* f18d510: 0fc354fe */ jal savebufferReadBits
/* f18d514: 24050010 */ addiu $a1,$zero,0x10
/* f18d518: aea20090 */ sw $v0,0x90($s5)
/* f18d51c: 02602025 */ or $a0,$s3,$zero
/* f18d520: 0fc354fe */ jal savebufferReadBits
/* f18d524: 24050002 */ addiu $a1,$zero,0x2
/* f18d528: a2a20044 */ sb $v0,0x44($s5)
/* f18d52c: 02602025 */ or $a0,$s3,$zero
/* f18d530: 0fc354fe */ jal savebufferReadBits
/* f18d534: 2405000c */ addiu $a1,$zero,0xc
/* f18d538: a6a20048 */ sh $v0,0x48($s5)
/* f18d53c: 00008825 */ or $s1,$zero,$zero
/* f18d540: 24120005 */ addiu $s2,$zero,0x5
/* f18d544: 24100001 */ addiu $s0,$zero,0x1
.L0f18d548:
/* f18d548: 02602025 */ or $a0,$s3,$zero
.L0f18d54c:
/* f18d54c: 0fc354fe */ jal savebufferReadBits
/* f18d550: 24050001 */ addiu $a1,$zero,0x1
/* f18d554: 02802025 */ or $a0,$s4,$zero
/* f18d558: 02202825 */ or $a1,$s1,$zero
/* f18d55c: 02003025 */ or $a2,$s0,$zero
/* f18d560: 0fc6712e */ jal mpSetChallengeCompletedByPlayerWithNumPlayers
/* f18d564: 00403825 */ or $a3,$v0,$zero
/* f18d568: 26100001 */ addiu $s0,$s0,0x1
/* f18d56c: 5612fff7 */ bnel $s0,$s2,.L0f18d54c
/* f18d570: 02602025 */ or $a0,$s3,$zero
/* f18d574: 26310001 */ addiu $s1,$s1,0x1
/* f18d578: 2401001e */ addiu $at,$zero,0x1e
/* f18d57c: 5621fff2 */ bnel $s1,$at,.L0f18d548
/* f18d580: 24100001 */ addiu $s0,$zero,0x1
/* f18d584: 0fc66bf7 */ jal mpDetermineUnlockedFeatures
/* f18d588: 00000000 */ nop
/* f18d58c: 0fc62864 */ jal mpCalculatePlayerTitle
/* f18d590: 02a02025 */ or $a0,$s5,$zero
/* f18d594: 02602025 */ or $a0,$s3,$zero
/* f18d598: 0fc6346e */ jal func0f18d1b8
/* f18d59c: 02802825 */ or $a1,$s4,$zero
/* f18d5a0: 8fbf002c */ lw $ra,0x2c($sp)
/* f18d5a4: 8fb00014 */ lw $s0,0x14($sp)
/* f18d5a8: 8fb10018 */ lw $s1,0x18($sp)
/* f18d5ac: 8fb2001c */ lw $s2,0x1c($sp)
/* f18d5b0: 8fb30020 */ lw $s3,0x20($sp)
/* f18d5b4: 8fb40024 */ lw $s4,0x24($sp)
/* f18d5b8: 8fb50028 */ lw $s5,0x28($sp)
/* f18d5bc: 03e00008 */ jr $ra
/* f18d5c0: 27bd0058 */ addiu $sp,$sp,0x58
);
void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2)
{
struct maybesavelocation_2d8 thing;
u32 stack;
s32 i;
s32 j;
savebufferReadString(buffer, g_MpPlayers[playernum].base.name, 1);
g_MpPlayers[playernum].time = savebufferReadBits(buffer, 28);
if (arg2 != 0) {
g_MpPlayers[playernum].base.mpheadnum = savebufferReadBits(buffer, 7);
g_MpPlayers[playernum].base.mpbodynum = savebufferReadBits(buffer, 7);
func0f0d579c(buffer, &thing);
if (g_MpPlayers[playernum].base.mpheadnum >= mpGetNumHeads2()) {
if (thing.unk00 != 0 && thing.unk04 != 0) {
if (g_MenuData.unk668 < 11) {
g_MenuData.unk668++;
g_MenuData.unk5d8[g_MenuData.unk668].unk00 = thing.unk00;
g_MenuData.unk5d8[g_MenuData.unk668].unk04 = thing.unk04;
g_MenuData.unk5d8[g_MenuData.unk668].unk08 = g_MpPlayerNum;
g_MenuData.unk5d8[g_MenuData.unk668].unk09 = g_MpPlayerNum;
}
} else {
g_MpPlayers[playernum].base.mpheadnum = MPHEAD_DARK_COMBAT;
}
}
} else {
savebufferReadBits(buffer, 7);
savebufferReadBits(buffer, 7);
func0f0d579c(buffer, &thing);
}
g_MpPlayers[playernum].base.displayoptions = savebufferReadBits(buffer, 8);
g_MpPlayers[playernum].kills = savebufferReadBits(buffer, 20);
g_MpPlayers[playernum].deaths = savebufferReadBits(buffer, 20);
g_MpPlayers[playernum].gamesplayed = savebufferReadBits(buffer, 19);
g_MpPlayers[playernum].gameswon = savebufferReadBits(buffer, 19);
g_MpPlayers[playernum].gameslost = savebufferReadBits(buffer, 19);
g_MpPlayers[playernum].distance = savebufferReadBits(buffer, 25);
g_MpPlayers[playernum].accuracy = savebufferReadBits(buffer, 10);
g_MpPlayers[playernum].damagedealt = savebufferReadBits(buffer, 26);
g_MpPlayers[playernum].painreceived = savebufferReadBits(buffer, 26);
g_MpPlayers[playernum].headshots = savebufferReadBits(buffer, 20);
g_MpPlayers[playernum].ammoused = savebufferReadBits(buffer, 30);
g_MpPlayers[playernum].accuracymedals = savebufferReadBits(buffer, 18);
g_MpPlayers[playernum].headshotmedals = savebufferReadBits(buffer, 18);
g_MpPlayers[playernum].killmastermedals = savebufferReadBits(buffer, 18);
g_MpPlayers[playernum].survivormedals = savebufferReadBits(buffer, 16);
g_MpPlayers[playernum].base.controlmode = savebufferReadBits(buffer, 2);
g_MpPlayers[playernum].options = savebufferReadBits(buffer, 12);
for (i = 0; i < 30; i++) {
for (j = 1; j < 5; j++) {
mpSetChallengeCompletedByPlayerWithNumPlayers(playernum, i, j, savebufferReadBits(buffer, 1));
}
}
mpDetermineUnlockedFeatures();
mpCalculatePlayerTitle(&g_MpPlayers[playernum]);
func0f18d1b8(buffer, playernum);
}
GLOBAL_ASM(
glabel func0f18d5c4
@ -8877,13 +8737,13 @@ glabel func0f18d5c4
/* f18d648: 92050010 */ lbu $a1,0x10($s0)
/* f18d64c: 0fc354be */ jal savebufferOr
/* f18d650: 24060007 */ addiu $a2,$zero,0x7
/* f18d654: 0fc62ec7 */ jal func0f18bb1c
/* f18d654: 0fc62ec7 */ jal mpGetNumHeads2
/* f18d658: 00000000 */ nop
/* f18d65c: 9219000f */ lbu $t9,0xf($s0)
/* f18d660: 0322082a */ slt $at,$t9,$v0
/* f18d664: 5420000e */ bnezl $at,.L0f18d6a0
/* f18d668: a7a00040 */ sh $zero,0x40($sp)
/* f18d66c: 0fc62ec7 */ jal func0f18bb1c
/* f18d66c: 0fc62ec7 */ jal mpGetNumHeads2
/* f18d670: 00000000 */ nop
/* f18d674: 9208000f */ lbu $t0,0xf($s0)
/* f18d678: 27b10044 */ addiu $s1,$sp,0x44
@ -9206,7 +9066,7 @@ s32 mpplayerfileLoad(s32 playernum, s32 arg1, s32 arg2, u16 arg3)
g_MpPlayers[playernum].unk4c.unk00 = arg2;
g_MpPlayers[playernum].unk4c.unk04 = arg3;
func0f18d2b8(playernum, &buffer, 1);
mpplayerfileLoadWad(playernum, &buffer, 1);
func0f0d54c4(&buffer);
g_MpPlayers[playernum].handicap = 0x80;

View File

@ -2647,7 +2647,7 @@ glabel var7f1b814c
/* f17b520: 8c2e80f0 */ lw $t6,%lo(var7f1b80f0)($at)
/* f17b524: 01c00008 */ jr $t6
/* f17b528: 00000000 */ nop
/* f17b52c: 0fc62ec7 */ jal func0f18bb1c
/* f17b52c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b530: afa60038 */ sw $a2,0x38($sp)
/* f17b534: 8fa60038 */ lw $a2,0x38($sp)
/* f17b538: 100000bc */ b .L0f17b82c
@ -2672,7 +2672,7 @@ glabel var7f1b814c
/* f17b584: c46a0d64 */ lwc1 $f10,0xd64($v1)
/* f17b588: 46085000 */ add.s $f0,$f10,$f8
/* f17b58c: e4600d8c */ swc1 $f0,0xd8c($v1)
/* f17b590: 0fc62ec7 */ jal func0f18bb1c
/* f17b590: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b594: e4600d64 */ swc1 $f0,0xd64($v1)
/* f17b598: 8fa3003c */ lw $v1,0x3c($sp)
/* f17b59c: 0062082a */ slt $at,$v1,$v0
@ -2704,7 +2704,7 @@ glabel var7f1b814c
/* f17b604: 1000002e */ b .L0f17b6c0
/* f17b608: ac6c084c */ sw $t4,0x84c($v1)
.L0f17b60c:
/* f17b60c: 0fc62ec7 */ jal func0f18bb1c
/* f17b60c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b610: 00000000 */ nop
/* f17b614: 8faf003c */ lw $t7,0x3c($sp)
/* f17b618: 0fc52a7e */ jal func0f14a9f8
@ -2732,7 +2732,7 @@ glabel var7f1b814c
/* f17b670: 954acf06 */ lhu $t2,%lo(g_HeadsAndBodies+0x2)($t2)
/* f17b674: 358d0080 */ ori $t5,$t4,0x80
/* f17b678: a06d0df1 */ sb $t5,0xdf1($v1)
/* f17b67c: 0fc62ec7 */ jal func0f18bb1c
/* f17b67c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b680: ac6a084c */ sw $t2,0x84c($v1)
/* f17b684: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum)
/* f17b688: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6)
@ -2781,7 +2781,7 @@ glabel var7f1b814c
/* f17b730: 01ac6823 */ subu $t5,$t5,$t4
/* f17b734: 000d6900 */ sll $t5,$t5,0x4
/* f17b738: 002d0821 */ addu $at,$at,$t5
/* f17b73c: 0fc62ec7 */ jal func0f18bb1c
/* f17b73c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b740: a02be840 */ sb $t3,%lo(g_Menus+0x840)($at)
/* f17b744: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum)
/* f17b748: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6)
@ -2915,7 +2915,7 @@ glabel var7f1b814c
/* f17b520: 8c2e80f0 */ lw $t6,%lo(var7f1b80f0)($at)
/* f17b524: 01c00008 */ jr $t6
/* f17b528: 00000000 */ nop
/* f17b52c: 0fc62ec7 */ jal func0f18bb1c
/* f17b52c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b530: afa60038 */ sw $a2,0x38($sp)
/* f17b534: 8fa60038 */ lw $a2,0x38($sp)
/* f17b538: 100000bc */ b .L0f17b82c
@ -2940,7 +2940,7 @@ glabel var7f1b814c
/* f17b584: c46a0d64 */ lwc1 $f10,0xd64($v1)
/* f17b588: 46085000 */ add.s $f0,$f10,$f8
/* f17b58c: e4600d8c */ swc1 $f0,0xd8c($v1)
/* f17b590: 0fc62ec7 */ jal func0f18bb1c
/* f17b590: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b594: e4600d64 */ swc1 $f0,0xd64($v1)
/* f17b598: 8fa3003c */ lw $v1,0x3c($sp)
/* f17b59c: 0062082a */ slt $at,$v1,$v0
@ -2972,7 +2972,7 @@ glabel var7f1b814c
/* f17b604: 1000002e */ b .L0f17b6c0
/* f17b608: ac6c084c */ sw $t4,0x84c($v1)
.L0f17b60c:
/* f17b60c: 0fc62ec7 */ jal func0f18bb1c
/* f17b60c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b610: 00000000 */ nop
/* f17b614: 8faf003c */ lw $t7,0x3c($sp)
/* f17b618: 0fc52a7e */ jal func0f14a9f8
@ -3000,7 +3000,7 @@ glabel var7f1b814c
/* f17b670: 954acf06 */ lhu $t2,%lo(g_HeadsAndBodies+0x2)($t2)
/* f17b674: 358d0080 */ ori $t5,$t4,0x80
/* f17b678: a06d0df1 */ sb $t5,0xdf1($v1)
/* f17b67c: 0fc62ec7 */ jal func0f18bb1c
/* f17b67c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b680: ac6a084c */ sw $t2,0x84c($v1)
/* f17b684: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum)
/* f17b688: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6)
@ -3049,7 +3049,7 @@ glabel var7f1b814c
/* f17b730: 01ac6823 */ subu $t5,$t5,$t4
/* f17b734: 000d6900 */ sll $t5,$t5,0x4
/* f17b738: 002d0821 */ addu $at,$at,$t5
/* f17b73c: 0fc62ec7 */ jal func0f18bb1c
/* f17b73c: 0fc62ec7 */ jal mpGetNumHeads2
/* f17b740: a02be840 */ sb $t3,%lo(g_Menus+0x840)($at)
/* f17b744: 3c0e8007 */ lui $t6,%hi(g_MpPlayerNum)
/* f17b748: 8dce1448 */ lw $t6,%lo(g_MpPlayerNum)($t6)
@ -3183,7 +3183,7 @@ glabel var7f1b814c
/* f175cb0: 8c2e29e4 */ lw $t6,0x29e4($at)
/* f175cb4: 01c00008 */ jr $t6
/* f175cb8: 00000000 */ sll $zero,$zero,0x0
/* f175cbc: 0fc6175d */ jal func0f18bb1c
/* f175cbc: 0fc6175d */ jal mpGetNumHeads2
/* f175cc0: afa60038 */ sw $a2,0x38($sp)
/* f175cc4: 8fa60038 */ lw $a2,0x38($sp)
/* f175cc8: 100000b0 */ beqz $zero,.NB0f175f8c
@ -3208,7 +3208,7 @@ glabel var7f1b814c
/* f175d14: c46a0cc0 */ lwc1 $f10,0xcc0($v1)
/* f175d18: 46085000 */ add.s $f0,$f10,$f8
/* f175d1c: e4600ce8 */ swc1 $f0,0xce8($v1)
/* f175d20: 0fc6175d */ jal func0f18bb1c
/* f175d20: 0fc6175d */ jal mpGetNumHeads2
/* f175d24: e4600cc0 */ swc1 $f0,0xcc0($v1)
/* f175d28: 8fa3003c */ lw $v1,0x3c($sp)
/* f175d2c: 0062082a */ slt $at,$v1,$v0
@ -3240,7 +3240,7 @@ glabel var7f1b814c
/* f175d94: 1000002e */ beqz $zero,.NB0f175e50
/* f175d98: ac6c07a8 */ sw $t4,0x7a8($v1)
.NB0f175d9c:
/* f175d9c: 0fc6175d */ jal func0f18bb1c
/* f175d9c: 0fc6175d */ jal mpGetNumHeads2
/* f175da0: 00000000 */ sll $zero,$zero,0x0
/* f175da4: 8faf003c */ lw $t7,0x3c($sp)
/* f175da8: 0fc51472 */ jal func0f14a9f8
@ -3268,7 +3268,7 @@ glabel var7f1b814c
/* f175e00: 954af766 */ lhu $t2,-0x89a($t2)
/* f175e04: 358d0080 */ ori $t5,$t4,0x80
/* f175e08: a06d0d4d */ sb $t5,0xd4d($v1)
/* f175e0c: 0fc6175d */ jal func0f18bb1c
/* f175e0c: 0fc6175d */ jal mpGetNumHeads2
/* f175e10: ac6a07a8 */ sw $t2,0x7a8($v1)
/* f175e14: 3c0e8007 */ lui $t6,0x8007
/* f175e18: 8dce3af0 */ lw $t6,0x3af0($t6)
@ -3305,7 +3305,7 @@ glabel var7f1b814c
/* f175e90: 8faa003c */ lw $t2,0x3c($sp)
/* f175e94: 1000003d */ beqz $zero,.NB0f175f8c
/* f175e98: acca0000 */ sw $t2,0x0($a2)
/* f175e9c: 0fc6175d */ jal func0f18bb1c
/* f175e9c: 0fc6175d */ jal mpGetNumHeads2
/* f175ea0: 00000000 */ sll $zero,$zero,0x0
/* f175ea4: 3c0b8007 */ lui $t3,0x8007
/* f175ea8: 8d6b3af0 */ lw $t3,0x3af0($t3)

View File

@ -46,7 +46,7 @@ u32 func0f18a030(void);
void mpCalculatePlayerTitle(struct mpplayer *mpplayer);
void func0f18a56c(void);
void mpEndMatch(void);
s32 func0f18bb1c(void);
s32 mpGetNumHeads2(void);
s32 mpGetNumHeads(void);
s32 mpGetHeadId(u8 headnum);
s32 mpGetHeadRequiredFeature(u8 headnum);
@ -97,9 +97,9 @@ s32 mpPlayerGetIndex(struct chrdata *chr);
struct chrdata *mpGetChrFromPlayerIndex(s32 index);
s32 func0f18d074(s32 index);
s32 func0f18d0e8(s32 arg0);
u32 func0f18d1b8(void);
void func0f18d1b8(struct savebuffer *buffer, s32 playernum);
u32 func0f18d238(void);
void func0f18d2b8(s32 playernum, struct savebuffer *buffer, s32 arg2);
void mpplayerfileLoadWad(s32 playernum, struct savebuffer *buffer, s32 arg2);
u32 func0f18d5c4(void);
void mpplayerfileGetOverview(char *arg0, char *buffer, u32 *arg2);
s32 mpplayerfileSave(void *arg0, s32 arg1, s32 arg2, u16 arg3);

View File

@ -5320,6 +5320,16 @@ struct frdata {
/*0x47c*/ u32 unk47c;
};
struct menudata_5d8 {
s32 unk00;
u16 unk04;
u16 unk06;
u8 unk08;
u8 unk09;
u8 unk0a;
u8 unk0b;
};
struct menudata {
/*0x000*/ s32 count;
/*0x004*/ s32 root;
@ -5706,43 +5716,8 @@ struct menudata {
/*0x5d5*/ u8 unk5d5_06 : 1;
/*0x5d5*/ u8 unk5d5_07 : 1;
/*0x5d5*/ u8 unk5d5_08 : 1;
/*0x5d8*/ u32 unk5d8;
/*0x5dc*/ u32 unk5dc;
/*0x5e0*/ u32 unk5e0;
/*0x5e4*/ u32 unk5e4;
/*0x5e8*/ u32 unk5e8;
/*0x5ec*/ u32 unk5ec;
/*0x5f0*/ u32 unk5f0;
/*0x5f4*/ u32 unk5f4;
/*0x5f8*/ u32 unk5f8;
/*0x5fc*/ u32 unk5fc;
/*0x600*/ u32 unk600;
/*0x604*/ u32 unk604;
/*0x608*/ u32 unk608;
/*0x60c*/ u32 unk60c;
/*0x610*/ u32 unk610;
/*0x614*/ u32 unk614;
/*0x618*/ u32 unk618;
/*0x61c*/ u32 unk61c;
/*0x620*/ u32 unk620;
/*0x624*/ u32 unk624;
/*0x628*/ u32 unk628;
/*0x62c*/ u32 unk62c;
/*0x630*/ u32 unk630;
/*0x634*/ u32 unk634;
/*0x638*/ u32 unk638;
/*0x63c*/ u32 unk63c;
/*0x640*/ u32 unk640;
/*0x644*/ u32 unk644;
/*0x648*/ u32 unk648;
/*0x64c*/ u32 unk64c;
/*0x650*/ u32 unk650;
/*0x654*/ u32 unk654;
/*0x658*/ u32 unk658;
/*0x65c*/ u32 unk65c;
/*0x660*/ u32 unk660;
/*0x664*/ u32 unk664;
/*0x668*/ u8 unk668;
/*0x5d8*/ struct menudata_5d8 unk5d8[12];
/*0x668*/ s8 unk668;
/*0x669*/ u8 unk669[4];
/*0x66d*/ u8 unk66d;
/*0x66e*/ s8 unk66e; // index into 669