Decompile currentPlayerSetMoveModeCutscene

This commit is contained in:
Ryan Dwyer 2020-04-05 12:19:02 +10:00
parent b565b1f959
commit 0f44e83438
11 changed files with 872 additions and 961 deletions

View File

@ -9589,7 +9589,7 @@ s32 g_MpTimeElapsed = 0;
s32 g_MpTimeLimit = 36000;
s32 g_MpScoreLimit = 10;
s32 g_MpTeamScoreLimit = 20;
s32 var80084034 = 0;
void *var80084034 = NULL;
s32 var80084038 = 0;
f32 g_Uptime = 0;
bool var80084040 = true;

View File

@ -20653,7 +20653,7 @@ glabel var7f1acb14
void func0f0a8c50(void)
{
if (g_Vars.currentplayer->unk0d0f_03 == 0) {
if (g_Vars.currentplayer->unk0638[0].unk0d0f_03 == 0) {
g_Vars.currentplayer->invertgunfunc = false;
}
}
@ -21292,29 +21292,29 @@ void func0f0a93e0(struct coord *coord)
{
struct player *player = g_Vars.currentplayer;
player->unk07f8.x = func0f0b12ec(0) + coord->x;
player->unk07f8.y = coord->y;
player->unk07f8.z = coord->z;
player->unk0638[0].unk07f8.x = func0f0b12ec(0) + coord->x;
player->unk0638[0].unk07f8.y = coord->y;
player->unk0638[0].unk07f8.z = coord->z;
player->unk0f9c.x = func0f0b12ec(1) + coord->x;
player->unk0f9c.y = coord->y;
player->unk0f9c.z = coord->z;
player->unk0638[1].unk07f8.x = func0f0b12ec(1) + coord->x;
player->unk0638[1].unk07f8.y = coord->y;
player->unk0638[1].unk07f8.z = coord->z;
}
void func0f0a9464(struct coord *coord)
{
struct player *player = g_Vars.currentplayer;
player->unk1338.x = player->unk0b94.x = coord->x;
player->unk1338.y = player->unk0b94.y = coord->y;
player->unk1338.z = player->unk0b94.z = coord->z;
player->unk0638[1].unk0b94.x = player->unk0638[0].unk0b94.x = coord->x;
player->unk0638[1].unk0b94.y = player->unk0638[0].unk0b94.y = coord->y;
player->unk0638[1].unk0b94.z = player->unk0638[0].unk0b94.z = coord->z;
}
void func0f0a9494(u32 operation)
{
switch (operation) {
case 0:
g_Vars.currentplayer->unk1490 = g_Vars.currentplayer->unk0cec = false;
g_Vars.currentplayer->unk0638[1].unk0cec = g_Vars.currentplayer->unk0638[0].unk0cec = false;
break;
case 1:
break;
@ -21330,16 +21330,16 @@ void func0f0a94d0(u32 operation, struct coord *a, struct coord *b)
if (a->x > -100000.0f && a->x < 100000.0f
&& a->y > -100000.0f && a->y < 100000.0f
&& a->z > -100000.0f && a->z < 100000.0f) {
player->unk0cec = true;
player->unk1490 = true;
player->unk0638[0].unk0cec = true;
player->unk0638[1].unk0cec = true;
player->unk1494.x = player->unk0cf0.x = a->x;
player->unk1494.y = player->unk0cf0.y = a->y;
player->unk1494.z = player->unk0cf0.z = a->z;
player->unk0638[1].unk0cf0.x = player->unk0638[0].unk0cf0.x = a->x;
player->unk0638[1].unk0cf0.y = player->unk0638[0].unk0cf0.y = a->y;
player->unk0638[1].unk0cf0.z = player->unk0638[0].unk0cf0.z = a->z;
player->unk14a0.x = player->unk0cfc.x = b->x;
player->unk14a0.y = player->unk0cfc.y = b->y;
player->unk14a0.z = player->unk0cfc.z = b->z;
player->unk0638[1].unk0cfc.x = player->unk0638[0].unk0cfc.x = b->x;
player->unk0638[1].unk0cfc.y = player->unk0638[0].unk0cfc.y = b->y;
player->unk0638[1].unk0cfc.z = player->unk0638[0].unk0cfc.z = b->z;
}
break;
case 1:

View File

@ -1995,7 +1995,7 @@ s8 weaponGetMaxFireRatePerTick(u32 weaponnum, u32 funcindex)
u32 currentPlayerGetSight(void)
{
struct weaponfunc *func = weaponGetFunctionById(g_Vars.currentplayer->unk0638, g_Vars.currentplayer->unk063b);
struct weaponfunc *func = weaponGetFunctionById(g_Vars.currentplayer->unk0638[0].unk0638, g_Vars.currentplayer->unk0638[0].unk063b);
if (func && (func->type & 0xff) == INVENTORYFUNCTYPE_CLOSE) {
return SIGHT_NONE;
@ -2005,7 +2005,7 @@ u32 currentPlayerGetSight(void)
return SIGHT_CLASSIC;
}
switch (g_Vars.currentplayer->unk0638) {
switch (g_Vars.currentplayer->unk0638[0].unk0638) {
case WEAPON_HORIZONSCANNER:
return SIGHT_NONE;
case WEAPON_NONE:

View File

@ -11,125 +11,29 @@
#include "lib/lib_317f0.h"
#include "types.h"
GLOBAL_ASM(
glabel currentPlayerSetMoveModeCutscene
/* f0c3620: 27bdffc8 */ addiu $sp,$sp,-56
/* f0c3624: afb40028 */ sw $s4,0x28($sp)
/* f0c3628: 3c14800a */ lui $s4,%hi(g_Vars)
/* f0c362c: 26949fc0 */ addiu $s4,$s4,%lo(g_Vars)
/* f0c3630: 8e8f0284 */ lw $t7,0x284($s4)
/* f0c3634: afbf0034 */ sw $ra,0x34($sp)
/* f0c3638: afb60030 */ sw $s6,0x30($sp)
/* f0c363c: afb5002c */ sw $s5,0x2c($sp)
/* f0c3640: afb30024 */ sw $s3,0x24($sp)
/* f0c3644: afb20020 */ sw $s2,0x20($sp)
/* f0c3648: afb1001c */ sw $s1,0x1c($sp)
/* f0c364c: afb00018 */ sw $s0,0x18($sp)
/* f0c3650: 240e0005 */ addiu $t6,$zero,0x5
/* f0c3654: adee01b0 */ sw $t6,0x1b0($t7)
/* f0c3658: 8e98006c */ lw $t8,0x6c($s4)
/* f0c365c: 0000a825 */ or $s5,$zero,$zero
/* f0c3660: 00002825 */ or $a1,$zero,$zero
/* f0c3664: 13000003 */ beqz $t8,.L0f0c3674
/* f0c3668: 00002025 */ or $a0,$zero,$zero
/* f0c366c: 10000001 */ beqz $zero,.L0f0c3674
/* f0c3670: 24050001 */ addiu $a1,$zero,0x1
.L0f0c3674:
/* f0c3674: 8e990068 */ lw $t9,0x68($s4)
/* f0c3678: 00001825 */ or $v1,$zero,$zero
/* f0c367c: 00001025 */ or $v0,$zero,$zero
/* f0c3680: 13200003 */ beqz $t9,.L0f0c3690
/* f0c3684: 00156880 */ sll $t5,$s5,0x2
/* f0c3688: 10000001 */ beqz $zero,.L0f0c3690
/* f0c368c: 24040001 */ addiu $a0,$zero,0x1
.L0f0c3690:
/* f0c3690: 8e880064 */ lw $t0,0x64($s4)
/* f0c3694: 028d9021 */ addu $s2,$s4,$t5
/* f0c3698: 2416ffff */ addiu $s6,$zero,-1
/* f0c369c: 11000003 */ beqz $t0,.L0f0c36ac
/* f0c36a0: 241307a4 */ addiu $s3,$zero,0x7a4
/* f0c36a4: 10000001 */ beqz $zero,.L0f0c36ac
/* f0c36a8: 24030001 */ addiu $v1,$zero,0x1
.L0f0c36ac:
/* f0c36ac: 8e890070 */ lw $t1,0x70($s4)
/* f0c36b0: 11200003 */ beqz $t1,.L0f0c36c0
/* f0c36b4: 00000000 */ sll $zero,$zero,0x0
/* f0c36b8: 10000001 */ beqz $zero,.L0f0c36c0
/* f0c36bc: 24020001 */ addiu $v0,$zero,0x1
.L0f0c36c0:
/* f0c36c0: 00435021 */ addu $t2,$v0,$v1
/* f0c36c4: 01445821 */ addu $t3,$t2,$a0
/* f0c36c8: 01656021 */ addu $t4,$t3,$a1
/* f0c36cc: 59800033 */ blezl $t4,.L0f0c379c
/* f0c36d0: 8fbf0034 */ lw $ra,0x34($sp)
/* f0c36d4: 8e4e0064 */ lw $t6,0x64($s2)
.L0f0c36d8:
/* f0c36d8: 00008825 */ or $s1,$zero,$zero
/* f0c36dc: add61c40 */ sw $s6,0x1c40($t6)
.L0f0c36e0:
/* f0c36e0: 8e4f0064 */ lw $t7,0x64($s2)
/* f0c36e4: 01f18021 */ addu $s0,$t7,$s1
/* f0c36e8: 8e040d84 */ lw $a0,0xd84($s0)
/* f0c36ec: 26100638 */ addiu $s0,$s0,0x638
/* f0c36f0: 50800009 */ beqzl $a0,.L0f0c3718
/* f0c36f4: 263107a4 */ addiu $s1,$s1,0x7a4
/* f0c36f8: 0c00cdfc */ jal func000337f0
/* f0c36fc: 00000000 */ sll $zero,$zero,0x0
/* f0c3700: 50400005 */ beqzl $v0,.L0f0c3718
/* f0c3704: 263107a4 */ addiu $s1,$s1,0x7a4
/* f0c3708: 0c00cec9 */ jal func00033b24
/* f0c370c: 8e04074c */ lw $a0,0x74c($s0)
/* f0c3710: ae00074c */ sw $zero,0x74c($s0)
/* f0c3714: 263107a4 */ addiu $s1,$s1,0x7a4
.L0f0c3718:
/* f0c3718: 1633fff1 */ bne $s1,$s3,.L0f0c36e0
/* f0c371c: a2000004 */ sb $zero,0x4($s0)
/* f0c3720: 8e98006c */ lw $t8,0x6c($s4)
/* f0c3724: 26b50001 */ addiu $s5,$s5,0x1
/* f0c3728: 26520004 */ addiu $s2,$s2,0x4
/* f0c372c: 13000003 */ beqz $t8,.L0f0c373c
/* f0c3730: 00002825 */ or $a1,$zero,$zero
/* f0c3734: 10000001 */ beqz $zero,.L0f0c373c
/* f0c3738: 24050001 */ addiu $a1,$zero,0x1
.L0f0c373c:
/* f0c373c: 8e990068 */ lw $t9,0x68($s4)
/* f0c3740: 00002025 */ or $a0,$zero,$zero
/* f0c3744: 00001825 */ or $v1,$zero,$zero
/* f0c3748: 13200003 */ beqz $t9,.L0f0c3758
/* f0c374c: 00001025 */ or $v0,$zero,$zero
/* f0c3750: 10000001 */ beqz $zero,.L0f0c3758
/* f0c3754: 24040001 */ addiu $a0,$zero,0x1
.L0f0c3758:
/* f0c3758: 8e880064 */ lw $t0,0x64($s4)
/* f0c375c: 11000003 */ beqz $t0,.L0f0c376c
/* f0c3760: 00000000 */ sll $zero,$zero,0x0
/* f0c3764: 10000001 */ beqz $zero,.L0f0c376c
/* f0c3768: 24030001 */ addiu $v1,$zero,0x1
.L0f0c376c:
/* f0c376c: 8e890070 */ lw $t1,0x70($s4)
/* f0c3770: 11200003 */ beqz $t1,.L0f0c3780
/* f0c3774: 00000000 */ sll $zero,$zero,0x0
/* f0c3778: 10000001 */ beqz $zero,.L0f0c3780
/* f0c377c: 24020001 */ addiu $v0,$zero,0x1
.L0f0c3780:
/* f0c3780: 00435021 */ addu $t2,$v0,$v1
/* f0c3784: 01445821 */ addu $t3,$t2,$a0
/* f0c3788: 01656021 */ addu $t4,$t3,$a1
/* f0c378c: 02ac082a */ slt $at,$s5,$t4
/* f0c3790: 5420ffd1 */ bnezl $at,.L0f0c36d8
/* f0c3794: 8e4e0064 */ lw $t6,0x64($s2)
/* f0c3798: 8fbf0034 */ lw $ra,0x34($sp)
.L0f0c379c:
/* f0c379c: 8fb00018 */ lw $s0,0x18($sp)
/* f0c37a0: 8fb1001c */ lw $s1,0x1c($sp)
/* f0c37a4: 8fb20020 */ lw $s2,0x20($sp)
/* f0c37a8: 8fb30024 */ lw $s3,0x24($sp)
/* f0c37ac: 8fb40028 */ lw $s4,0x28($sp)
/* f0c37b0: 8fb5002c */ lw $s5,0x2c($sp)
/* f0c37b4: 8fb60030 */ lw $s6,0x30($sp)
/* f0c37b8: 03e00008 */ jr $ra
/* f0c37bc: 27bd0038 */ addiu $sp,$sp,0x38
);
void currentPlayerSetMoveModeCutscene(void)
{
s32 i;
s32 j;
g_Vars.currentplayer->bondmovemode = MOVEMODE_CUTSCENE;
for (i = 0; i < PLAYERCOUNT(); i++) {
g_Vars.players[i]->joybutinhibit = 0xffffffff;
// @bug? Should this be < 2?
for (j = 0; j < 1; j++) {
struct player638 *thing = &g_Vars.players[i]->unk0638[j];
if (thing->unk0d84 && func000337f0(thing->unk0d84)) {
func00033b24(thing->unk0d84);
thing->unk0d84 = NULL;
}
thing->unk063c = 0;
}
}
}
GLOBAL_ASM(
glabel func0f0c37c0

View File

@ -625,7 +625,7 @@ void activemenuApply(s32 slot)
if (var80088804 != 0) {
uVar6 = func0f19d268(func0f19d250());
if (uVar6 == g_Vars.currentplayer->unk0638) {
if (uVar6 == g_Vars.currentplayer->unk0638[0].unk0638) {
pass = false;
}
}
@ -746,8 +746,8 @@ void activemenuGetSlotDetails(s32 slot, u32 *flags, char *label)
if (slot == 4) {
strcpy(label, langGet(L_MISC(171))); // "Function"
} else if (slot == 1 || slot == 7) {
prifunc = weaponGetFunction(&g_Vars.currentplayer->unk0638, 0);
secfunc = weaponGetFunction(&g_Vars.currentplayer->unk0638, 1);
prifunc = weaponGetFunction(&g_Vars.currentplayer->unk0638[0].unk0638, 0);
secfunc = weaponGetFunction(&g_Vars.currentplayer->unk0638[0].unk0638, 1);
if (slot == 1) {
if (!secfunc

View File

@ -269,7 +269,7 @@ void doBoostAndSlayerSfx(void)
func0f167b84(2, usingrocket);
}
if (g_Vars.lvupdate240 == 0 && var80084034 != 0 && func000337f0(var80084034)) {
if (g_Vars.lvupdate240 == 0 && var80084034 && func000337f0(var80084034)) {
func00033b24(var80084034);
}
}
@ -320,7 +320,7 @@ void func0f167e7c(s32 stagenum)
g_Vars.unk0004d6 = 0;
g_Vars.unk0004d7 = 0;
var80084034 = 0;
var80084034 = NULL;
func0f16d324();
func0f011124(true);
@ -5709,7 +5709,7 @@ glabel func0f16b96c
//
// // Sound alarm at 10 seconds remaining
// if (nexttime >= g_MpTimeLimit - 600
// && var80084034 == 0
// && var80084034 == NULL
// && !soloIsPaused()
// && nexttime < g_MpTimeLimit) {
// // 5dc
@ -5875,7 +5875,7 @@ void stageLoad(void)
{
func0f11dcb0(1);
if (var80084034 != 0 && func000337f0(var80084034)) {
if (var80084034 && func000337f0(var80084034)) {
func00033b24(var80084034);
}

View File

@ -1335,7 +1335,7 @@ u32 func0f1915b4(struct chrdata *chr)
return chr->aibot->unk020;
}
return g_Vars.players[propGetPlayerNum(chr->prop)]->unk0638;
return g_Vars.players[propGetPlayerNum(chr->prop)]->unk0638[0].unk0638;
}
u8 func0f191600(struct chrdata *chr)

View File

@ -280,7 +280,7 @@ extern s32 g_MpTimeElapsed;
extern s32 g_MpTimeLimit;
extern s32 g_MpScoreLimit;
extern s32 g_MpTeamScoreLimit;
extern s32 var80084034;
extern void *var80084034;
extern s32 var80084038;
extern f32 g_Uptime;
extern bool var80084040;

View File

@ -3,7 +3,7 @@
#include <ultra64.h>
#include "types.h"
u32 currentPlayerSetMoveModeCutscene(void);
void currentPlayerSetMoveModeCutscene(void);
void func0f0c37c0(void);
#endif

View File

@ -13,9 +13,9 @@ u32 func00033378(void);
u32 func00033390(void);
u32 func00033634(void);
u32 func0003364c(void);
u32 func000337f0(s32 arg0);
u32 func000337f0(void *arg0);
u32 func00033820(void);
void func00033b24(s32 arg0);
void func00033b24(void *arg0);
u32 func00033bc0(void);
u32 func00033c30(void);
u32 func00033cf0(void);

File diff suppressed because it is too large Load Diff