mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-22 07:55:41 -04:00
Decompile mpCalculateLockIfLastWinnerOrLoser
This commit is contained in:
@@ -561,7 +561,7 @@ glabel var7f1a863c
|
||||
.L0f01c588:
|
||||
/* f01c588: 1621fff0 */ bne $s1,$at,.L0f01c54c
|
||||
/* f01c58c: 24630e70 */ addiu $v1,$v1,0x0e70
|
||||
/* f01c590: 0fc63005 */ jal func0f18c014
|
||||
/* f01c590: 0fc63005 */ jal mpCalculateLockIfLastWinnerOrLoser
|
||||
/* f01c594: 00000000 */ nop
|
||||
/* f01c598: 0fc66d50 */ jal func0f19b540
|
||||
/* f01c59c: 00000000 */ nop
|
||||
@@ -2114,7 +2114,7 @@ glabel var7f1a863c
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func0f18c014();
|
||||
// mpCalculateLockIfLastWinnerOrLoser();
|
||||
// func0f19b540();
|
||||
// }
|
||||
//
|
||||
|
||||
+33
-67
@@ -838,8 +838,8 @@ glabel func0f188210
|
||||
/* f1882dc: 0fc6256f */ jal mpSetWeaponSet
|
||||
/* f1882e0: 00002025 */ or $a0,$zero,$zero
|
||||
.L0f1882e4:
|
||||
/* f1882e4: 3c02800b */ lui $v0,%hi(g_MpLockPlayerNum)
|
||||
/* f1882e8: 2442cc20 */ addiu $v0,$v0,%lo(g_MpLockPlayerNum)
|
||||
/* f1882e4: 3c02800b */ lui $v0,%hi(g_MpLockInfo)
|
||||
/* f1882e8: 2442cc20 */ addiu $v0,$v0,%lo(g_MpLockInfo)
|
||||
/* f1882ec: 2403ffff */ addiu $v1,$zero,-1
|
||||
/* f1882f0: 3c04800a */ lui $a0,%hi(g_Vars)
|
||||
/* f1882f4: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
|
||||
@@ -1276,8 +1276,8 @@ glabel func0f1885e4
|
||||
/* f1888d4: 1490ffcf */ bne $a0,$s0,.L0f188814
|
||||
/* f1888d8: 24c60004 */ addiu $a2,$a2,0x4
|
||||
.L0f1888dc:
|
||||
/* f1888dc: 3c11800b */ lui $s1,%hi(g_MpLockPlayerNum)
|
||||
/* f1888e0: 2631cc20 */ addiu $s1,$s1,%lo(g_MpLockPlayerNum)
|
||||
/* f1888dc: 3c11800b */ lui $s1,%hi(g_MpLockInfo)
|
||||
/* f1888e0: 2631cc20 */ addiu $s1,$s1,%lo(g_MpLockInfo)
|
||||
/* f1888e4: a22d0001 */ sb $t5,0x1($s1)
|
||||
/* f1888e8: a23f0002 */ sb $ra,0x2($s1)
|
||||
/* f1888ec: 3c19800b */ lui $t9,%hi(g_MpSetup+0x88)
|
||||
@@ -5204,9 +5204,9 @@ bool mpSetLock(s32 locktype, s32 playernum)
|
||||
g_MpSetupSaveFile.locktype = locktype;
|
||||
|
||||
if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_RANDOM) {
|
||||
g_MpLockPlayerNum = mpChooseRandomLockPlayer();
|
||||
g_MpLockInfo.lockedplayernum = mpChooseRandomLockPlayer();
|
||||
} else {
|
||||
g_MpLockPlayerNum = playernum;
|
||||
g_MpLockInfo.lockedplayernum = playernum;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -5219,7 +5219,7 @@ u32 mpGetLockType(void)
|
||||
|
||||
u32 mpGetLockPlayerNum(void)
|
||||
{
|
||||
return g_MpLockPlayerNum;
|
||||
return g_MpLockInfo.lockedplayernum;
|
||||
}
|
||||
|
||||
bool mpIsPlayerLockedOut(u32 playernum)
|
||||
@@ -5228,64 +5228,30 @@ bool mpIsPlayerLockedOut(u32 playernum)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (g_MpLockPlayerNum == playernum) {
|
||||
if (g_MpLockInfo.lockedplayernum == playernum) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f18c014
|
||||
/* f18c014: 3c04800b */ lui $a0,%hi(g_MpSetup+0x88)
|
||||
/* f18c018: 9084cc10 */ lbu $a0,%lo(g_MpSetup+0x88)($a0)
|
||||
/* f18c01c: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* f18c020: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f18c024: 14810007 */ bne $a0,$at,.L0f18c044
|
||||
/* f18c028: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f18c02c: 3c03800b */ lui $v1,%hi(g_MpLockPlayerNum)
|
||||
/* f18c030: 2463cc20 */ addiu $v1,$v1,%lo(g_MpLockPlayerNum)
|
||||
/* f18c034: 80620001 */ lb $v0,0x1($v1)
|
||||
/* f18c038: 04400002 */ bltz $v0,.L0f18c044
|
||||
/* f18c03c: 00000000 */ nop
|
||||
/* f18c040: a0620000 */ sb $v0,0x0($v1)
|
||||
.L0f18c044:
|
||||
/* f18c044: 3c03800b */ lui $v1,%hi(g_MpLockPlayerNum)
|
||||
/* f18c048: 24010002 */ addiu $at,$zero,0x2
|
||||
/* f18c04c: 14810005 */ bne $a0,$at,.L0f18c064
|
||||
/* f18c050: 2463cc20 */ addiu $v1,$v1,%lo(g_MpLockPlayerNum)
|
||||
/* f18c054: 80620002 */ lb $v0,0x2($v1)
|
||||
/* f18c058: 04420003 */ bltzl $v0,.L0f18c068
|
||||
/* f18c05c: 80620000 */ lb $v0,0x0($v1)
|
||||
/* f18c060: a0620000 */ sb $v0,0x0($v1)
|
||||
.L0f18c064:
|
||||
/* f18c064: 80620000 */ lb $v0,0x0($v1)
|
||||
.L0f18c068:
|
||||
/* f18c068: 24010005 */ addiu $at,$zero,0x5
|
||||
/* f18c06c: 04420011 */ bltzl $v0,.L0f18c0b4
|
||||
/* f18c070: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f18c074: 1081000e */ beq $a0,$at,.L0f18c0b0
|
||||
/* f18c078: 3c0e800b */ lui $t6,%hi(g_MpSetup+0x16)
|
||||
/* f18c07c: 95cecb9e */ lhu $t6,%lo(g_MpSetup+0x16)($t6)
|
||||
/* f18c080: 240f0001 */ addiu $t7,$zero,0x1
|
||||
/* f18c084: 004fc004 */ sllv $t8,$t7,$v0
|
||||
/* f18c088: 01d8c824 */ and $t9,$t6,$t8
|
||||
/* f18c08c: 17200008 */ bnez $t9,.L0f18c0b0
|
||||
/* f18c090: 2408ffff */ addiu $t0,$zero,-1
|
||||
/* f18c094: a0680002 */ sb $t0,0x2($v1)
|
||||
/* f18c098: 80690002 */ lb $t1,0x2($v1)
|
||||
/* f18c09c: 0fc62fba */ jal mpChooseRandomLockPlayer
|
||||
/* f18c0a0: a0690001 */ sb $t1,0x1($v1)
|
||||
/* f18c0a4: 3c03800b */ lui $v1,%hi(g_MpLockPlayerNum)
|
||||
/* f18c0a8: 2463cc20 */ addiu $v1,$v1,%lo(g_MpLockPlayerNum)
|
||||
/* f18c0ac: a0620000 */ sb $v0,0x0($v1)
|
||||
.L0f18c0b0:
|
||||
/* f18c0b0: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f18c0b4:
|
||||
/* f18c0b4: 27bd0018 */ addiu $sp,$sp,0x18
|
||||
/* f18c0b8: 03e00008 */ jr $ra
|
||||
/* f18c0bc: 00000000 */ nop
|
||||
);
|
||||
void mpCalculateLockIfLastWinnerOrLoser(void)
|
||||
{
|
||||
if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_LASTWINNER && g_MpLockInfo.lastwinner >= 0) {
|
||||
g_MpLockInfo.lockedplayernum = g_MpLockInfo.lastwinner;
|
||||
}
|
||||
|
||||
if (g_MpSetupSaveFile.locktype == MPLOCKTYPE_LASTLOSER && g_MpLockInfo.lastloser >= 0) {
|
||||
g_MpLockInfo.lockedplayernum = g_MpLockInfo.lastloser;
|
||||
}
|
||||
|
||||
if (g_MpLockInfo.lockedplayernum >= 0
|
||||
&& g_MpSetupSaveFile.locktype != MPLOCKTYPE_CHALLENGE
|
||||
&& (g_MpSetup.chrslots & (1 << g_MpLockInfo.lockedplayernum)) == 0) {
|
||||
g_MpLockInfo.lastwinner = g_MpLockInfo.lastloser = -1;
|
||||
g_MpLockInfo.lockedplayernum = mpChooseRandomLockPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel mpIsTrackUnlocked
|
||||
@@ -5514,8 +5480,8 @@ glabel func0f18c4c0
|
||||
/* f18c524: 00000000 */ nop
|
||||
.L0f18c528:
|
||||
/* f18c528: 16a0001e */ bnez $s5,.L0f18c5a4
|
||||
/* f18c52c: 3c16800b */ lui $s6,%hi(g_MpLockPlayerNum)
|
||||
/* f18c530: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockPlayerNum)
|
||||
/* f18c52c: 3c16800b */ lui $s6,%hi(g_MpLockInfo)
|
||||
/* f18c530: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockInfo)
|
||||
.L0f18c534:
|
||||
/* f18c534: 0c004b70 */ jal random
|
||||
/* f18c538: 00000000 */ nop
|
||||
@@ -5547,8 +5513,8 @@ glabel func0f18c4c0
|
||||
/* f18c59c: 10000073 */ b .L0f18c76c
|
||||
/* f18c5a0: 00031242 */ srl $v0,$v1,0x9
|
||||
.L0f18c5a4:
|
||||
/* f18c5a4: 3c16800b */ lui $s6,%hi(g_MpLockPlayerNum)
|
||||
/* f18c5a8: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockPlayerNum)
|
||||
/* f18c5a4: 3c16800b */ lui $s6,%hi(g_MpLockInfo)
|
||||
/* f18c5a8: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockInfo)
|
||||
/* f18c5ac: 00008025 */ or $s0,$zero,$zero
|
||||
.L0f18c5b0:
|
||||
/* f18c5b0: 0c004b70 */ jal random
|
||||
@@ -5621,9 +5587,9 @@ glabel func0f18c4c0
|
||||
/* f18c69c: 00409825 */ or $s3,$v0,$zero
|
||||
/* f18c6a0: 0fc63080 */ jal func0f18c200
|
||||
/* f18c6a4: 00000000 */ nop
|
||||
/* f18c6a8: 3c16800b */ lui $s6,%hi(g_MpLockPlayerNum)
|
||||
/* f18c6a8: 3c16800b */ lui $s6,%hi(g_MpLockInfo)
|
||||
/* f18c6ac: 00408025 */ or $s0,$v0,$zero
|
||||
/* f18c6b0: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockPlayerNum)
|
||||
/* f18c6b0: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockInfo)
|
||||
.L0f18c6b4:
|
||||
/* f18c6b4: 0c004b70 */ jal random
|
||||
/* f18c6b8: 00000000 */ nop
|
||||
@@ -5658,9 +5624,9 @@ glabel func0f18c4c0
|
||||
/* f18c724: 0fc63065 */ jal mpGetTrackNumAtSlotIndex
|
||||
/* f18c728: 02602025 */ or $a0,$s3,$zero
|
||||
/* f18c72c: 00024080 */ sll $t0,$v0,0x2
|
||||
/* f18c730: 3c16800b */ lui $s6,%hi(g_MpLockPlayerNum)
|
||||
/* f18c730: 3c16800b */ lui $s6,%hi(g_MpLockInfo)
|
||||
/* f18c734: 01024023 */ subu $t0,$t0,$v0
|
||||
/* f18c738: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockPlayerNum)
|
||||
/* f18c738: 26d6cc20 */ addiu $s6,$s6,%lo(g_MpLockInfo)
|
||||
/* f18c73c: 00084040 */ sll $t0,$t0,0x1
|
||||
/* f18c740: 3c038008 */ lui $v1,%hi(g_MpTracks)
|
||||
/* f18c744: aec20004 */ sw $v0,0x4($s6)
|
||||
|
||||
+1
-1
@@ -20315,7 +20315,7 @@ u8 g_ActiveMenuMpBotCommands[16] = {0};
|
||||
struct mpsetup g_MpSetup = {0};
|
||||
struct savefile_setup g_MpSetupSaveFile = {0};
|
||||
u32 var800acc1c = 0;
|
||||
s8 g_MpLockPlayerNum = 0;
|
||||
struct mplockinfo g_MpLockInfo = {0};
|
||||
u32 var800acc24 = 0;
|
||||
u32 var800acc28[18] = {0};
|
||||
u32 var800acc70 = 0;
|
||||
|
||||
@@ -61,7 +61,7 @@ bool mpSetLock(s32 locktype, s32 playernum);
|
||||
u32 mpGetLockType(void);
|
||||
u32 mpGetLockPlayerNum(void);
|
||||
bool mpIsPlayerLockedOut(u32 playernum);
|
||||
void func0f18c014(void);
|
||||
void mpCalculateLockIfLastWinnerOrLoser(void);
|
||||
bool mpIsTrackUnlocked(s32 tracknum);
|
||||
s32 mpGetTrackSlotIndex(s32 tracknum);
|
||||
s32 mpGetTrackNumAtSlotIndex(s32 slotindex);
|
||||
|
||||
@@ -817,7 +817,7 @@ extern struct mpplayer g_MpPlayers[6];
|
||||
extern u8 g_ActiveMenuMpBotCommands[16];
|
||||
extern struct mpsetup g_MpSetup;
|
||||
extern struct savefile_setup g_MpSetupSaveFile;
|
||||
extern s8 g_MpLockPlayerNum;
|
||||
extern struct mplockinfo g_MpLockInfo;
|
||||
extern u32 var800acc28[18];
|
||||
extern u32 var800acc70;
|
||||
extern u32 var800acc74;
|
||||
|
||||
@@ -6398,4 +6398,10 @@ struct var8009d510 {
|
||||
/*0x40*/ u32 unk40;
|
||||
};
|
||||
|
||||
struct mplockinfo {
|
||||
s8 lockedplayernum;
|
||||
s8 lastwinner;
|
||||
s8 lastloser;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user