diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index 766ed3836..9d3cab5ef 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -576,7 +576,7 @@ void func0f02e9a0(struct chrdata *chr, f32 arg1) chr->sleep = fsleep; - if (func0001db94(chr->model) && !chr->aibot) { + if (modelIsAnimMerging(chr->model) && !chr->aibot) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrStandChooseAnimation(chr, arg1); @@ -693,7 +693,7 @@ void chrKneel(struct chrdata *chr) chr->actiontype = ACT_KNEEL; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrKneelChooseAnimation(chr); @@ -723,7 +723,7 @@ void chrStartAlarm(struct chrdata *chr) chr->actiontype = ACT_STARTALARM; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrStartAlarmChooseAnimation(chr); @@ -764,7 +764,7 @@ void chrThrowGrenade(struct chrdata *chr, s32 hand, s32 needsequip) chr->act_throwgrenade.needsequip = needsequip; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrThrowGrenadeChooseAnimation(chr); @@ -816,7 +816,7 @@ void chrDoSurprisedOneHand(struct chrdata *chr) chr->act_surprised.type = 1; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrSurprisedChooseAnimation(chr); @@ -834,7 +834,7 @@ void chrDoSurprisedSurrender(struct chrdata *chr) chr->act_surprised.type = 2; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrSurprisedChooseAnimation(chr); @@ -849,7 +849,7 @@ void chrDoSurprisedLookAround(struct chrdata *chr) chr->act_surprised.type = 3; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrSurprisedChooseAnimation(chr); @@ -892,7 +892,7 @@ void chrSurrender(struct chrdata *chr) chr->actiontype = action; chr->sleep = action; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrSurrenderChooseAnimation(chr); @@ -957,7 +957,7 @@ void chrSidestep(struct chrdata *chr, bool side) chr->act_sidestep.side = side; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrSidestepChooseAnimation(chr); @@ -994,7 +994,7 @@ void chrJumpOut(struct chrdata *chr, bool side) chr->act_jumpout.side = side; chr->sleep = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrJumpOutChooseAnimation(chr); @@ -1052,7 +1052,7 @@ void chrRunToPos(struct chrdata *chr, struct coord *pos) chr->act_runpos.unk038 = 30; // float chr->act_runpos.unk040 = 0; - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { chr->hidden |= CHRHFLAG_NEEDANIM; } else { chrRunPosChooseAnimation(chr); @@ -1689,7 +1689,7 @@ glabel chrAttackWalk /* f0309e0: 8fa80068 */ lw $t0,0x68($sp) /* f0309e4: a2200008 */ sb $zero,0x8($s1) /* f0309e8: ae2b0018 */ sw $t3,0x18($s1) -/* f0309ec: 0c0076e5 */ jal func0001db94 +/* f0309ec: 0c0076e5 */ jal modelIsAnimMerging /* f0309f0: a228004e */ sb $t0,0x4e($s1) /* f0309f4: 10400006 */ beqz $v0,.L0f030a10 /* f0309f8: 00000000 */ nop @@ -2043,7 +2043,7 @@ glabel chrAttackRoll /* f030f90: 8fab0078 */ lw $t3,0x78($sp) /* f030f94: a2200008 */ sb $zero,0x8($s1) /* f030f98: 8e240020 */ lw $a0,0x20($s1) -/* f030f9c: 0c0076e5 */ jal func0001db94 +/* f030f9c: 0c0076e5 */ jal modelIsAnimMerging /* f030fa0: a22b003e */ sb $t3,0x3e($s1) /* f030fa4: 10400006 */ beqz $v0,.L0f030fc0 /* f030fa8: 00000000 */ nop @@ -2145,7 +2145,7 @@ glabel func0f030ff8 /* f0310fc: c7a40050 */ lwc1 $f4,0x50($sp) /* f031100: 8e040020 */ lw $a0,0x20($s0) /* f031104: e7a0002c */ swc1 $f0,0x2c($sp) -/* f031108: 0c0076e5 */ jal func0001db94 +/* f031108: 0c0076e5 */ jal modelIsAnimMerging /* f03110c: afa60028 */ sw $a2,0x28($sp) /* f031110: 8fa60028 */ lw $a2,0x28($sp) /* f031114: 10400006 */ beqz $v0,.L0f031130 @@ -2574,7 +2574,7 @@ glabel var7f1a8d18 /* f031818: 8e2b02d4 */ lw $t3,0x2d4($s1) /* f03181c: 55600020 */ bnezl $t3,.L0f0318a0 /* f031820: 8fbf002c */ lw $ra,0x2c($sp) -/* f031824: 0c0076e5 */ jal func0001db94 +/* f031824: 0c0076e5 */ jal modelIsAnimMerging /* f031828: 8e240020 */ lw $a0,0x20($s1) /* f03182c: 10400006 */ beqz $v0,.L0f031848 /* f031830: 02202025 */ or $a0,$s1,$zero @@ -9437,7 +9437,7 @@ s32 chrGoToPos(struct chrdata *chr, struct coord *pos, s16 *room, u32 flags) } if (chr->act_gopos.waydata.mode != WAYMODE_CHEAP - && func0001db94(chr->model) && !chr->aibot) { + && modelIsAnimMerging(chr->model) && !chr->aibot) { chr->hidden |= CHRHFLAG_NEEDANIM; return true; } else { @@ -9906,7 +9906,7 @@ glabel var7f1a8dd0 /* f038e9c: 24010006 */ addiu $at,$zero,0x6 /* f038ea0: 11c1000a */ beq $t6,$at,.L0f038ecc /* f038ea4: 00000000 */ nop -/* f038ea8: 0c0076e5 */ jal func0001db94 +/* f038ea8: 0c0076e5 */ jal modelIsAnimMerging /* f038eac: 8e640020 */ lw $a0,0x20($s3) /* f038eb0: 10400006 */ beqz $v0,.L0f038ecc /* f038eb4: 00000000 */ nop @@ -12344,7 +12344,7 @@ glabel var7f1a8f08 /* f03c14c: 000e7a80 */ sll $t7,$t6,0xa /* f03c150: 05e1000c */ bgez $t7,.L0f03c184 /* f03c154: 00000000 */ nop -/* f03c158: 0c0076e5 */ jal func0001db94 +/* f03c158: 0c0076e5 */ jal modelIsAnimMerging /* f03c15c: 8c840020 */ lw $a0,0x20($a0) /* f03c160: 144001cf */ bnez $v0,.L0f03c8a0 /* f03c164: 02002025 */ or $a0,$s0,$zero @@ -12862,7 +12862,7 @@ void chrTickKneel(struct chrdata *chr) { chr->sleep = 0; - if ((chr->hidden & CHRHFLAG_NEEDANIM) && func0001db94(chr->model) == 0) { + if ((chr->hidden & CHRHFLAG_NEEDANIM) && modelIsAnimMerging(chr->model) == 0) { chrKneelChooseAnimation(chr); chr->hidden &= ~CHRHFLAG_NEEDANIM; } @@ -12871,7 +12871,7 @@ void chrTickKneel(struct chrdata *chr) void chrTickAnim(struct chrdata *chr) { if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -12921,7 +12921,7 @@ u32 var800683b8 = 0xbf800000; void chrTickSurrender(struct chrdata *chr) { if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -13534,7 +13534,7 @@ void chrTickSidestep(struct chrdata *chr) struct model *model = chr->model; if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -13553,7 +13553,7 @@ void chrTickJumpOut(struct chrdata *chr) struct model *model = chr->model; if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -13581,7 +13581,7 @@ void chrTickStartAlarm(struct chrdata *chr) struct model *model = chr->model; if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -13601,7 +13601,7 @@ void chrTickStartAlarm(struct chrdata *chr) void chrTickSurprised(struct chrdata *chr) { if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -19226,7 +19226,7 @@ glabel var7f1a91e0 /* f043020: 000e7a80 */ sll $t7,$t6,0xa /* f043024: 05e3001b */ bgezl $t7,.L0f043094 /* f043028: 8e08002c */ lw $t0,0x2c($s0) -/* f04302c: 0c0076e5 */ jal func0001db94 +/* f04302c: 0c0076e5 */ jal modelIsAnimMerging /* f043030: 8e040020 */ lw $a0,0x20($s0) /* f043034: 144000e5 */ bnez $v0,.L0f0433cc /* f043038: 02002025 */ or $a0,$s0,$zero @@ -19489,7 +19489,7 @@ glabel chrTickAttackRoll /* f0433f0: 000fc280 */ sll $t8,$t7,0xa /* f0433f4: 0703000e */ bgezl $t8,.L0f043430 /* f0433f8: 8fa90048 */ lw $t1,0x48($sp) -/* f0433fc: 0c0076e5 */ jal func0001db94 +/* f0433fc: 0c0076e5 */ jal modelIsAnimMerging /* f043400: 8c840020 */ lw $a0,0x20($a0) /* f043404: 5440014c */ bnezl $v0,.L0f043938 /* f043408: 8fbf001c */ lw $ra,0x1c($sp) @@ -19915,7 +19915,7 @@ void chrTickThrowGrenade(struct chrdata *chr) f32 frame2; if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -20285,7 +20285,7 @@ glabel chrTickAttackWalk /* f044238: 000fc280 */ sll $t8,$t7,0xa /* f04423c: 0701000c */ bgez $t8,.L0f044270 /* f044240: 00000000 */ nop -/* f044244: 0c0076e5 */ jal func0001db94 +/* f044244: 0c0076e5 */ jal modelIsAnimMerging /* f044248: 8e040020 */ lw $a0,0x20($s0) /* f04424c: 544000d8 */ bnezl $v0,.L0f0445b0 /* f044250: 8fbf002c */ lw $ra,0x2c($sp) @@ -20748,7 +20748,7 @@ void chrTickRunPos(struct chrdata *chr) f32 fVar7; if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -23008,7 +23008,7 @@ void chrTickGoPos(struct chrdata *chr) chr->act_gopos.flags &= ~(GOPOSFLAG_DUCK | GOPOSFLAG_80); if (chr->hidden & CHRHFLAG_NEEDANIM) { - if (func0001db94(chr->model)) { + if (modelIsAnimMerging(chr->model)) { return; } @@ -23297,7 +23297,7 @@ glabel chrTickPatrol /* f0473f0: 000fc280 */ sll $t8,$t7,0xa /* f0473f4: 0703000d */ bgezl $t8,.L0f04742c /* f0473f8: 02002025 */ or $a0,$s0,$zero -/* f0473fc: 0c0076e5 */ jal func0001db94 +/* f0473fc: 0c0076e5 */ jal modelIsAnimMerging /* f047400: 8c840020 */ lw $a0,0x20($a0) /* f047404: 54400099 */ bnezl $v0,.L0f04766c /* f047408: 8fbf0024 */ lw $ra,0x24($sp) diff --git a/src/include/lib/lib_1a500.h b/src/include/lib/lib_1a500.h index 54d834b56..e6354c338 100644 --- a/src/include/lib/lib_1a500.h +++ b/src/include/lib/lib_1a500.h @@ -60,7 +60,7 @@ f32 func0001d288(struct model *model); u32 func0001d320(void); u32 func0001d4fc(void); u32 func0001d62c(void); -u32 func0001db94(struct model *model); +bool modelIsAnimMerging(struct model *model); void func0001dbfc(struct model *model, s32 arg1, u32 arg2, f32 arg3, f32 arg4, f32 arg5); void modelSetAnimation(struct model *model, s16 animnum, s32 flip, f32 fstartframe, f32 arg4, f32 arg5); u32 func0001dd90(void); diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index 78da48b07..dc9be6edd 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -4099,36 +4099,15 @@ glabel var7005444c /* 1db90: 27bd00c0 */ addiu $sp,$sp,0xc0 ); -GLOBAL_ASM( -glabel func0001db94 -/* 1db94: 50800017 */ beqzl $a0,.L0001dbf4 -/* 1db98: 00001025 */ or $v0,$zero,$zero -/* 1db9c: 8c820020 */ lw $v0,0x20($a0) -/* 1dba0: 50400014 */ beqzl $v0,.L0001dbf4 -/* 1dba4: 00001025 */ or $v0,$zero,$zero -/* 1dba8: 844e0002 */ lh $t6,0x2($v0) -/* 1dbac: 51c00011 */ beqzl $t6,.L0001dbf4 -/* 1dbb0: 00001025 */ or $v0,$zero,$zero -/* 1dbb4: c4400054 */ lwc1 $f0,0x54($v0) -/* 1dbb8: 44802000 */ mtc1 $zero,$f4 -/* 1dbbc: 3c013f80 */ lui $at,0x3f80 -/* 1dbc0: 46002032 */ c.eq.s $f4,$f0 -/* 1dbc4: 00000000 */ nop -/* 1dbc8: 4503000a */ bc1tl .L0001dbf4 -/* 1dbcc: 00001025 */ or $v0,$zero,$zero -/* 1dbd0: 44813000 */ mtc1 $at,$f6 -/* 1dbd4: 00000000 */ nop -/* 1dbd8: 46003032 */ c.eq.s $f6,$f0 -/* 1dbdc: 00000000 */ nop -/* 1dbe0: 45030004 */ bc1tl .L0001dbf4 -/* 1dbe4: 00001025 */ or $v0,$zero,$zero -/* 1dbe8: 03e00008 */ jr $ra -/* 1dbec: 24020001 */ addiu $v0,$zero,0x1 -/* 1dbf0: 00001025 */ or $v0,$zero,$zero -.L0001dbf4: -/* 1dbf4: 03e00008 */ jr $ra -/* 1dbf8: 00000000 */ nop -); +bool modelIsAnimMerging(struct model *model) +{ + if (model && model->anim && model->anim->animnum2 + && model->anim->fracmerge != 0 && model->anim->fracmerge != 1) { + return true; + } + + return false; +} GLOBAL_ASM( glabel func0001dbfc