Decompile cameraDoAnimation

This commit is contained in:
Ryan Dwyer 2020-11-01 17:49:00 +10:00
parent 989f0139eb
commit e2eb20ce23
13 changed files with 59 additions and 91 deletions

View File

@ -5142,7 +5142,7 @@ glabel var7f1ad8e4
// // b478
// cancycleweapons = true;
//
// if (g_Vars.tickmode == TICKMODE_6) {
// if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
// cancycleweapons = false;
// }
//

View File

@ -3723,7 +3723,7 @@ void func0f0220ec(struct chrdata *chr, s32 arg1, s32 arg2)
{
struct model *model = chr->model;
if (g_Vars.tickmode == TICKMODE_6) {
if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
if (chr->prop->type == PROPTYPE_PLAYER) {
chr->hidden &= ~CHRHFLAG_KEEP_CORPSE;
}

View File

@ -2294,7 +2294,7 @@ void func0f0035c0(void)
void func0f00372c(void)
{
if (g_Vars.tickmode != var80061458) {
if (TICKMODE_6 == g_Vars.tickmode && TICKMODE_6 != var80061458) {
if (TICKMODE_CUTSCENE == g_Vars.tickmode && TICKMODE_CUTSCENE != var80061458) {
func0f003444();
} else if (TICKMODE_1 == g_Vars.tickmode && TICKMODE_1 != var80061458) {
func0f0035c0();

View File

@ -2077,7 +2077,7 @@ glabel var7f1a863c
// if (var80062940 == 0 && g_Vars.stagenum == STAGE_CITRAINING) {
// g_PlayersWithControl[0] = false;
//
// if (g_Vars.lvframenum > 30 && g_Vars.tickmode != TICKMODE_6) {
// if (g_Vars.lvframenum > 30 && g_Vars.tickmode != TICKMODE_CUTSCENE) {
// g_Menus[0].unk83c = 0;
// g_Menus[1].unk83c = 0;
// g_Menus[2].unk83c = 0;

View File

@ -20997,7 +20997,7 @@ void currentPlayerTickInventory(bool triggeron)
}
}
if (g_Vars.tickmode == TICKMODE_6) {
if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
triggeron = false;
g_Vars.currentplayer->hands[1].unk063c = 0;
g_Vars.currentplayer->hands[0].unk063c = 0;

View File

@ -4317,7 +4317,7 @@ glabel var7f1ad5cc
void func0f0ba010(void)
{
setTickMode(TICKMODE_6);
setTickMode(TICKMODE_CUTSCENE);
var80070744 = 0;
setMoveModeForAllPlayers(MOVEMODE_CUTSCENE);
func0f0c1d20();
@ -4327,65 +4327,33 @@ void func0f0ba010(void)
var8009de2c = -1;
var80070764 = 1;
func0f11dcb0(1);
g_Vars.in_cutscene = g_Vars.tickmode == TICKMODE_6 && var8009de10 < animGetNumFrames(var8009de18) - 1;
g_Vars.in_cutscene = g_Vars.tickmode == TICKMODE_CUTSCENE && var8009de10 < animGetNumFrames(g_CameraAnimNum) - 1;
g_Vars.unk0004e2 = 0;
}
GLOBAL_ASM(
glabel cameraDoAnimation
/* f0ba0d4: 3c0e8006 */ lui $t6,%hi(var800624a4)
/* f0ba0d8: 8dce24a4 */ lw $t6,%lo(var800624a4)($t6)
/* f0ba0dc: 27bdffe8 */ addiu $sp,$sp,-24
/* f0ba0e0: afbf0014 */ sw $ra,0x14($sp)
/* f0ba0e4: 15c00004 */ bnez $t6,.L0f0ba0f8
/* f0ba0e8: afa40018 */ sw $a0,0x18($sp)
/* f0ba0ec: 3c0f800a */ lui $t7,%hi(g_Vars+0x4d3)
/* f0ba0f0: 81efa493 */ lb $t7,%lo(g_Vars+0x4d3)($t7)
/* f0ba0f4: 11e00008 */ beqz $t7,.L0f0ba118
.L0f0ba0f8:
/* f0ba0f8: 3c18800a */ lui $t8,%hi(g_Vars+0x4cc)
/* f0ba0fc: 8f18a48c */ lw $t8,%lo(g_Vars+0x4cc)($t8)
/* f0ba100: 3c19800a */ lui $t9,%hi(var8009de24)
/* f0ba104: 13000004 */ beqz $t8,.L0f0ba118
/* f0ba108: 00000000 */ nop
/* f0ba10c: 8f39de24 */ lw $t9,%lo(var8009de24)($t9)
/* f0ba110: 5720001c */ bnezl $t9,.L0f0ba184
/* f0ba114: 8fbf0014 */ lw $ra,0x14($sp)
.L0f0ba118:
/* f0ba118: 0c004f75 */ jal contDisableTemporarily
/* f0ba11c: 00000000 */ nop
/* f0ba120: 3c02800a */ lui $v0,%hi(g_Vars+0x2ac)
/* f0ba124: 8c42a26c */ lw $v0,%lo(g_Vars+0x2ac)($v0)
/* f0ba128: 24030006 */ addiu $v1,$zero,0x6
/* f0ba12c: 3c01800a */ lui $at,%hi(var8009de24)
/* f0ba130: 10620005 */ beq $v1,$v0,.L0f0ba148
/* f0ba134: 00000000 */ nop
/* f0ba138: 44802000 */ mtc1 $zero,$f4
/* f0ba13c: ac20de24 */ sw $zero,%lo(var8009de24)($at)
/* f0ba140: 3c01800a */ lui $at,%hi(var8009de28)
/* f0ba144: e424de28 */ swc1 $f4,%lo(var8009de28)($at)
.L0f0ba148:
/* f0ba148: 50620004 */ beql $v1,$v0,.L0f0ba15c
/* f0ba14c: 87a8001a */ lh $t0,0x1a($sp)
/* f0ba150: 0fc2e17e */ jal func0f0b85f8
/* f0ba154: 00000000 */ nop
/* f0ba158: 87a8001a */ lh $t0,0x1a($sp)
.L0f0ba15c:
/* f0ba15c: 3c09800a */ lui $t1,%hi(g_Vars+0x284)
/* f0ba160: 8d29a244 */ lw $t1,%lo(g_Vars+0x284)($t1)
/* f0ba164: 3c01800a */ lui $at,%hi(var8009de18)
/* f0ba168: a428de18 */ sh $t0,%lo(var8009de18)($at)
/* f0ba16c: 8d2a19c8 */ lw $t2,0x19c8($t1)
/* f0ba170: 51400004 */ beqzl $t2,.L0f0ba184
/* f0ba174: 8fbf0014 */ lw $ra,0x14($sp)
/* f0ba178: 0fc2e804 */ jal func0f0ba010
/* f0ba17c: 00000000 */ nop
/* f0ba180: 8fbf0014 */ lw $ra,0x14($sp)
.L0f0ba184:
/* f0ba184: 27bd0018 */ addiu $sp,$sp,0x18
/* f0ba188: 03e00008 */ jr $ra
/* f0ba18c: 00000000 */ nop
);
void cameraDoAnimation(s16 animnum)
{
if ((!var800624a4 && g_Vars.unk0004d3 == 0)
|| g_Vars.in_cutscene == 0
|| var8009de24 == 0) {
contDisableTemporarily();
if (g_Vars.tickmode != TICKMODE_CUTSCENE) {
var8009de24 = 0;
var8009de28 = 0;
}
if (g_Vars.tickmode != TICKMODE_CUTSCENE) {
func0f0b85f8();
}
g_CameraAnimNum = animnum;
if (g_Vars.currentplayer->haschrbody) {
func0f0ba010();
}
}
}
GLOBAL_ASM(
glabel func0f0ba190
@ -4401,30 +4369,30 @@ glabel var7f1ad5d8
/* f0ba194: 27bdff60 */ addiu $sp,$sp,-160
/* f0ba198: ac24de2c */ sw $a0,%lo(var8009de2c)($at)
/* f0ba19c: afbf0024 */ sw $ra,0x24($sp)
/* f0ba1a0: 3c04800a */ lui $a0,%hi(var8009de18)
/* f0ba1a0: 3c04800a */ lui $a0,%hi(g_CameraAnimNum)
/* f0ba1a4: 0c008dda */ jal animGetNumFrames
/* f0ba1a8: 8484de18 */ lh $a0,%lo(var8009de18)($a0)
/* f0ba1a8: 8484de18 */ lh $a0,%lo(g_CameraAnimNum)($a0)
/* f0ba1ac: 244effff */ addiu $t6,$v0,-1
/* f0ba1b0: 3c04800a */ lui $a0,%hi(var8009de18)
/* f0ba1b0: 3c04800a */ lui $a0,%hi(g_CameraAnimNum)
/* f0ba1b4: afae0034 */ sw $t6,0x34($sp)
/* f0ba1b8: 0c008f4e */ jal func00023d38
/* f0ba1bc: 8484de18 */ lh $a0,%lo(var8009de18)($a0)
/* f0ba1c0: 3c04800a */ lui $a0,%hi(var8009de18)
/* f0ba1c4: 8484de18 */ lh $a0,%lo(var8009de18)($a0)
/* f0ba1bc: 8484de18 */ lh $a0,%lo(g_CameraAnimNum)($a0)
/* f0ba1c0: 3c04800a */ lui $a0,%hi(g_CameraAnimNum)
/* f0ba1c4: 8484de18 */ lh $a0,%lo(g_CameraAnimNum)($a0)
/* f0ba1c8: 0c008eac */ jal func00023ab0
/* f0ba1cc: 8fa50034 */ lw $a1,0x34($sp)
/* f0ba1d0: 0c008f43 */ jal func00023d0c
/* f0ba1d4: a3a2007b */ sb $v0,0x7b($sp)
/* f0ba1d8: 93af007b */ lbu $t7,0x7b($sp)
/* f0ba1dc: 3c068008 */ lui $a2,%hi(stagethinglist_221b4)
/* f0ba1e0: 3c07800a */ lui $a3,%hi(var8009de18)
/* f0ba1e0: 3c07800a */ lui $a3,%hi(g_CameraAnimNum)
/* f0ba1e4: 27b80094 */ addiu $t8,$sp,0x94
/* f0ba1e8: 27b90088 */ addiu $t9,$sp,0x88
/* f0ba1ec: 27a8007c */ addiu $t0,$sp,0x7c
/* f0ba1f0: afa8001c */ sw $t0,0x1c($sp)
/* f0ba1f4: afb90018 */ sw $t9,0x18($sp)
/* f0ba1f8: afb80014 */ sw $t8,0x14($sp)
/* f0ba1fc: 84e7de18 */ lh $a3,%lo(var8009de18)($a3)
/* f0ba1fc: 84e7de18 */ lh $a3,%lo(g_CameraAnimNum)($a3)
/* f0ba200: 24c6c194 */ addiu $a2,$a2,%lo(stagethinglist_221b4)
/* f0ba204: 00002025 */ or $a0,$zero,$zero
/* f0ba208: 00002825 */ or $a1,$zero,$zero
@ -4497,8 +4465,8 @@ glabel var7f1ad5dc
.L0f0ba2f4:
/* f0ba2f4: a7a0010c */ sh $zero,0x10c($sp)
.L0f0ba2f8:
/* f0ba2f8: 3c12800a */ lui $s2,%hi(var8009de18)
/* f0ba2fc: 2652de18 */ addiu $s2,$s2,%lo(var8009de18)
/* f0ba2f8: 3c12800a */ lui $s2,%hi(g_CameraAnimNum)
/* f0ba2fc: 2652de18 */ addiu $s2,$s2,%lo(g_CameraAnimNum)
/* f0ba300: 0c008f4e */ jal func00023d38
/* f0ba304: 86440000 */ lh $a0,0x0($s2)
/* f0ba308: 0c008dda */ jal animGetNumFrames
@ -10488,7 +10456,7 @@ glabel var7f1ad6ac
// u32 playernum = g_Vars.currentplayernum;
//
// // dd28
// if (g_Vars.tickmode == TICKMODE_6) {
// if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
// struct chrdata *chr = eyespy->prop->chr;
// eyespy->initialised = false;
// eyespy->init = true;
@ -10569,12 +10537,12 @@ glabel var7f1ad6ac
// }
//
// // dfb8
// if (g_Vars.tickmode != TICKMODE_6) {
// if (g_Vars.tickmode != TICKMODE_CUTSCENE) {
// var80070764 = 0;
// }
//
// // dfc8
// if (g_Vars.tickmode == TICKMODE_6) {
// if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
// s32 i;
//
// func0f0b8ba0();

View File

@ -2491,17 +2491,17 @@ glabel var7f1b7868
/* f16a364: 00000000 */ nop
/* f16a368: 8e6d04b4 */ lw $t5,0x4b4($s3)
/* f16a36c: 2401004e */ addiu $at,$zero,0x4e
/* f16a370: 3c04800a */ lui $a0,%hi(var8009de18)
/* f16a370: 3c04800a */ lui $a0,%hi(g_CameraAnimNum)
/* f16a374: 15a10095 */ bne $t5,$at,.L0f16a5cc
/* f16a378: 00008025 */ or $s0,$zero,$zero
/* f16a37c: 44800000 */ mtc1 $zero,$f0
/* f16a380: 8484de18 */ lh $a0,%lo(var8009de18)($a0)
/* f16a380: 8484de18 */ lh $a0,%lo(g_CameraAnimNum)($a0)
/* f16a384: 0c008dda */ jal animGetNumFrames
/* f16a388: e7a000c4 */ swc1 $f0,0xc4($sp)
/* f16a38c: 3c03800a */ lui $v1,%hi(var8009de10)
/* f16a390: 8c63de10 */ lw $v1,%lo(var8009de10)($v1)
/* f16a394: c7a000c4 */ lwc1 $f0,0xc4($sp)
/* f16a398: 3c0f800a */ lui $t7,%hi(var8009de18)
/* f16a398: 3c0f800a */ lui $t7,%hi(g_CameraAnimNum)
/* f16a39c: 2861005a */ slti $at,$v1,0x5a
/* f16a3a0: 10200009 */ beqz $at,.L0f16a3c8
/* f16a3a4: 2444ffff */ addiu $a0,$v0,-1
@ -2514,7 +2514,7 @@ glabel var7f1b7868
/* f16a3c0: 460a4403 */ div.s $f16,$f8,$f10
/* f16a3c4: 46109001 */ sub.s $f0,$f18,$f16
.L0f16a3c8:
/* f16a3c8: 85efde18 */ lh $t7,%lo(var8009de18)($t7)
/* f16a3c8: 85efde18 */ lh $t7,%lo(g_CameraAnimNum)($t7)
/* f16a3cc: 2401046c */ addiu $at,$zero,0x46c
/* f16a3d0: 2498ffe2 */ addiu $t8,$a0,-30
/* f16a3d4: 11e1000d */ beq $t7,$at,.L0f16a40c
@ -2649,8 +2649,8 @@ glabel var7f1b7868
/* f16a5c4: af2b0004 */ sw $t3,0x4($t9)
/* f16a5c8: 00409025 */ or $s2,$v0,$zero
.L0f16a5cc:
/* f16a5cc: 3c10800a */ lui $s0,%hi(var8009de18)
/* f16a5d0: 8610de18 */ lh $s0,%lo(var8009de18)($s0)
/* f16a5cc: 3c10800a */ lui $s0,%hi(g_CameraAnimNum)
/* f16a5d0: 8610de18 */ lh $s0,%lo(g_CameraAnimNum)($s0)
/* f16a5d4: 24010181 */ addiu $at,$zero,0x181
/* f16a5d8: 3c048008 */ lui $a0,%hi(var80084098)
/* f16a5dc: 12010011 */ beq $s0,$at,.L0f16a624

View File

@ -215,7 +215,7 @@ void musicStartAmbient(f32 arg0)
if (g_TemporaryAmbientTrack != -1) {
pass = true;
} else if (musicIsAnyPlayerInAmbientRoom()) {
if (g_Vars.tickmode != TICKMODE_6 && AMBIENTTRACK() != stageGetAmbientTrack(g_MusicStageNum)) {
if (g_Vars.tickmode != TICKMODE_CUTSCENE && AMBIENTTRACK() != stageGetAmbientTrack(g_MusicStageNum)) {
musicEnd(TRACKTYPE_AMBIENT);
musicStartTemporary(stageGetAmbientTrack(g_MusicStageNum));
return;
@ -238,7 +238,7 @@ bool musicIsAnyPlayerInAmbientRoom(void)
{
s32 i;
if (g_Vars.tickmode == TICKMODE_6) {
if (g_Vars.tickmode == TICKMODE_CUTSCENE) {
return false;
}

View File

@ -28341,7 +28341,7 @@ s32 objTick(struct prop *prop)
if (model->anim) {
if (g_Anims[model->anim->animnum].flags & 0x02) {
if (g_Vars.tickmode != TICKMODE_6
if (g_Vars.tickmode != TICKMODE_CUTSCENE
&& modelGetCurAnimFrame(model) >= modelGetNumAnimFrames(model) - 1) {
animTurnOff(model->anim);
model->anim = NULL;
@ -28356,7 +28356,7 @@ s32 objTick(struct prop *prop)
if (sp572) {
s32 iVar10 = g_Vars.lvupdate240;
if (g_Vars.tickmode == TICKMODE_6 && iVar10 > 0 && g_Vars.unk0004e2 > 0) {
if (g_Vars.tickmode == TICKMODE_CUTSCENE && iVar10 > 0 && g_Vars.unk0004e2 > 0) {
iVar10 += g_Vars.unk0004e2 * 4;
}
@ -34230,8 +34230,8 @@ glabel func0f0841dc
/* f084234: 80c6be3c */ lb $a2,%lo(propexplosiontypes+0x8)($a2)
/* f084238: 17210007 */ bne $t9,$at,.L0f084258
/* f08423c: 00a01825 */ or $v1,$a1,$zero
/* f084240: 3c08800a */ lui $t0,%hi(var8009de18)
/* f084244: 8508de18 */ lh $t0,%lo(var8009de18)($t0)
/* f084240: 3c08800a */ lui $t0,%hi(g_CameraAnimNum)
/* f084244: 8508de18 */ lh $t0,%lo(g_CameraAnimNum)($t0)
/* f084248: 240102d7 */ addiu $at,$zero,0x2d7
/* f08424c: 55010003 */ bnel $t0,$at,.L0f08425c
/* f084250: 8ca90018 */ lw $t1,0x18($a1)

View File

@ -16,7 +16,7 @@ void weatherTick(void)
{
if (!g_WeatherData
|| (g_StageIndex == STAGEINDEX_AIRBASE && g_Vars.currentplayer->cam_pos.z < -2000.0f)
|| (g_StageIndex == STAGEINDEX_G5BUILDING && g_Vars.tickmode != TICKMODE_6)) {
|| (g_StageIndex == STAGEINDEX_G5BUILDING && g_Vars.tickmode != TICKMODE_CUTSCENE)) {
return;
}

View File

@ -14807,7 +14807,7 @@ u32 var8009de08 = 0;
u32 var8009de0c = 0;
s32 var8009de10 = 0;
u32 var8009de14 = 0;
s16 var8009de18 = 0;
s16 g_CameraAnimNum = 0;
f32 var8009de1c = 0;
s32 var8009de20 = 0;
s32 var8009de24 = 0;

View File

@ -2869,7 +2869,7 @@
#define TICKMODE_3 3
#define TICKMODE_4 4
#define TICKMODE_5 5
#define TICKMODE_6 6
#define TICKMODE_CUTSCENE 6
#define TICKMODE_AUTOWALK 7
#define TILEFLAG_0020 0x0020

View File

@ -624,7 +624,7 @@ extern u32 var8009de08;
extern u32 var8009de0c;
extern s32 var8009de10;
extern u32 var8009de14;
extern s16 var8009de18;
extern s16 g_CameraAnimNum;
extern f32 var8009de1c;
extern s32 var8009de20;
extern s32 var8009de24;