From 4f643025ab6fb96d094f0181814cb9992c26536b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 30 Jun 2020 19:46:36 +1000 Subject: [PATCH] Decompile animInitialise --- src/game/chr/chraicommands.c | 2 +- src/game/game_0125a0.c | 2 +- src/game/game_097ba0.c | 4 +-- src/game/game_0b28d0.c | 2 +- src/game/game_0b63b0.c | 2 +- src/game/game_0f09f0.c | 4 +-- src/include/lib/lib_1a500.h | 2 +- src/include/types.h | 14 +++++----- src/lib/lib_1a500.c | 52 ++++++++++++++++-------------------- 9 files changed, 39 insertions(+), 45 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 861f41ceb..d0039f985 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -5358,7 +5358,7 @@ bool aiObjectDoAnimation(void) fstartframe += var8009de20 * thing * 0.25f; } - func000230a0(obj->model->anim); + animInitialise(obj->model->anim); modelSetAnimation(obj->model, anim_id, 0, fstartframe, thing, 0); modelSetAnimScale(obj->model, func0f15c888() * obj->model->unk14 * 100.0f); } diff --git a/src/game/game_0125a0.c b/src/game/game_0125a0.c index 9b52cfb3a..2b0b155ab 100644 --- a/src/game/game_0125a0.c +++ b/src/game/game_0125a0.c @@ -106,7 +106,7 @@ glabel func0f012684 /* f0126c0: 0c008be9 */ jal func00022fa4 /* f0126c4: 26060494 */ addiu $a2,$s0,0x494 /* f0126c8: 8e2e0284 */ lw $t6,0x284($s1) -/* f0126cc: 0c008c28 */ jal func000230a0 +/* f0126cc: 0c008c28 */ jal animInitialise /* f0126d0: 8dc4047c */ lw $a0,0x47c($t6) /* f0126d4: 3c017f1b */ lui $at,%hi(var7f1a8280) /* f0126d8: c4368280 */ lwc1 $f22,%lo(var7f1a8280)($at) diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index be650e392..180db58fa 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -6864,7 +6864,7 @@ glabel func0f09ceac /* f09cf0c: ae000604 */ sw $zero,0x604($s0) /* f09cf10: ae140680 */ sw $s4,0x680($s0) /* f09cf14: ae00068c */ sw $zero,0x68c($s0) -/* f09cf18: 0c008c28 */ jal func000230a0 +/* f09cf18: 0c008c28 */ jal animInitialise /* f09cf1c: 02202025 */ or $a0,$s1,$zero /* f09cf20: 26520001 */ addiu $s2,$s2,0x1 /* f09cf24: ae1103a4 */ sw $s1,0x3a4($s0) @@ -12149,7 +12149,7 @@ glabel func0f0a1528 /* f0a17cc: 318d000f */ andi $t5,$t4,0xf /* f0a17d0: 0fc2af4c */ jal func0f0abd30 /* f0a17d4: a20d0639 */ sb $t5,0x639($s0) -/* f0a17d8: 0c008c28 */ jal func000230a0 +/* f0a17d8: 0c008c28 */ jal animInitialise /* f0a17dc: 02602025 */ or $a0,$s3,$zero /* f0a17e0: 8e040d84 */ lw $a0,0xd84($s0) /* f0a17e4: 50800008 */ beqzl $a0,.L0f0a1808 diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 937a0f542..86890bff6 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -566,7 +566,7 @@ glabel func0f0b2b64 /* f0b303c: 8faf003c */ lw $t7,0x3c($sp) /* f0b3040: 10400005 */ beqz $v0,.L0f0b3058 /* f0b3044: ade20020 */ sw $v0,0x20($t7) -/* f0b3048: 0c008c28 */ jal func000230a0 +/* f0b3048: 0c008c28 */ jal animInitialise /* f0b304c: 00402025 */ or $a0,$v0,$zero /* f0b3050: 10000008 */ b .L0f0b3074 /* f0b3054: 8fb9003c */ lw $t9,0x3c($sp) diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index e3b0a98e8..3bfaa7549 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -3436,7 +3436,7 @@ glabel var7f1ad5b4 /* f0b9004: 0c008be9 */ jal func00022fa4 /* f0b9008: 00003825 */ or $a3,$zero,$zero /* f0b900c: 8fa8005c */ lw $t0,0x5c($sp) -/* f0b9010: 0c008c28 */ jal func000230a0 +/* f0b9010: 0c008c28 */ jal animInitialise /* f0b9014: 8d040020 */ lw $a0,0x20($t0) /* f0b9018: 8fb9005c */ lw $t9,0x5c($sp) /* f0b901c: 24180100 */ addiu $t8,$zero,0x100 diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index f8c69beaf..6f8bbae75 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -3913,7 +3913,7 @@ glabel var7f1b2948 /* f0f3bd0: 0c008be9 */ jal func00022fa4 /* f0f3bd4: 24070001 */ addiu $a3,$zero,0x1 /* f0f3bd8: 26110084 */ addiu $s1,$s0,0x84 -/* f0f3bdc: 0c008c28 */ jal func000230a0 +/* f0f3bdc: 0c008c28 */ jal animInitialise /* f0f3be0: 02202025 */ or $a0,$s1,$zero /* f0f3be4: 24190100 */ addiu $t9,$zero,0x100 /* f0f3be8: a6190062 */ sh $t9,0x62($s0) @@ -3964,7 +3964,7 @@ glabel var7f1b2948 /* f0f3c98: 0c008be9 */ jal func00022fa4 /* f0f3c9c: 24070001 */ addiu $a3,$zero,0x1 /* f0f3ca0: 26110084 */ addiu $s1,$s0,0x84 -/* f0f3ca4: 0c008c28 */ jal func000230a0 +/* f0f3ca4: 0c008c28 */ jal animInitialise /* f0f3ca8: 02202025 */ or $a0,$s1,$zero /* f0f3cac: 24180100 */ addiu $t8,$zero,0x100 /* f0f3cb0: a6180062 */ sh $t8,0x62($s0) diff --git a/src/include/lib/lib_1a500.h b/src/include/lib/lib_1a500.h index 81ea29486..54d834b56 100644 --- a/src/include/lib/lib_1a500.h +++ b/src/include/lib/lib_1a500.h @@ -97,7 +97,7 @@ u32 func00022b68(void); void func00022d24(void *data); u32 func00022d50(void); u32 func00022fa4(void); -bool func000230a0(struct anim *anim); +void animInitialise(struct anim *anim); u32 func00023108(void); u32 func0002319c(void); u32 func00023314(void); diff --git a/src/include/types.h b/src/include/types.h index 85f2513ce..b18c031ce 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -117,24 +117,24 @@ struct anim { /*0x10*/ f32 frac; /*0x14*/ s16 framea; /*0x16*/ s16 frameb; - /*0x18*/ u32 endrame; + /*0x18*/ f32 endframe; /*0x1c*/ f32 speed; /*0x20*/ f32 newspeed; /*0x24*/ f32 oldspeed; /*0x28*/ f32 timespeed; /*0x2c*/ f32 elapsespeed; /*0x30*/ u32 frame2; - /*0x34*/ u32 frac2; + /*0x34*/ f32 frac2; /*0x38*/ u16 frame2a; /*0x3a*/ u16 frame2b; - /*0x3c*/ u32 endframe2; - /*0x40*/ u32 speed2; + /*0x3c*/ f32 endframe2; + /*0x40*/ f32 speed2; /*0x44*/ u32 newspeed2; /*0x48*/ u32 oldspeed2; - /*0x4c*/ u32 timespeed2; + /*0x4c*/ f32 timespeed2; /*0x50*/ u32 elapsespeed2; - /*0x54*/ u32 fracmerge; - /*0x58*/ u32 timemerge; + /*0x54*/ f32 fracmerge; + /*0x58*/ f32 timemerge; /*0x5c*/ u32 elapsemerge; /*0x60*/ f32 loopframe; /*0x64*/ f32 loopmerge; diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index aeed29fb4..78da48b07 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -10267,35 +10267,29 @@ glabel func00022fa4 /* 2309c: 27bd0020 */ addiu $sp,$sp,0x20 ); -GLOBAL_ASM( -glabel func000230a0 -/* 230a0: 44800000 */ mtc1 $zero,$f0 -/* 230a4: 3c01bf80 */ lui $at,0xbf80 -/* 230a8: 44811000 */ mtc1 $at,$f2 -/* 230ac: 3c013f80 */ lui $at,0x3f80 -/* 230b0: 44816000 */ mtc1 $at,$f12 -/* 230b4: a4800000 */ sh $zero,0x0($a0) -/* 230b8: a4800002 */ sh $zero,0x2($a0) -/* 230bc: a080000a */ sb $zero,0xa($a0) -/* 230c0: ac800068 */ sw $zero,0x68($a0) -/* 230c4: ac80006c */ sw $zero,0x6c($a0) -/* 230c8: ac800070 */ sw $zero,0x70($a0) -/* 230cc: a080000b */ sb $zero,0xb($a0) -/* 230d0: e4800010 */ swc1 $f0,0x10($a0) -/* 230d4: e4800028 */ swc1 $f0,0x28($a0) -/* 230d8: e4800034 */ swc1 $f0,0x34($a0) -/* 230dc: e480004c */ swc1 $f0,0x4c($a0) -/* 230e0: e4800054 */ swc1 $f0,0x54($a0) -/* 230e4: e4800058 */ swc1 $f0,0x58($a0) -/* 230e8: e4800080 */ swc1 $f0,0x80($a0) -/* 230ec: e4820018 */ swc1 $f2,0x18($a0) -/* 230f0: e482003c */ swc1 $f2,0x3c($a0) -/* 230f4: e48c001c */ swc1 $f12,0x1c($a0) -/* 230f8: e48c0040 */ swc1 $f12,0x40($a0) -/* 230fc: e48c0074 */ swc1 $f12,0x74($a0) -/* 23100: 03e00008 */ jr $ra -/* 23104: e48c0088 */ swc1 $f12,0x88($a0) -); +void animInitialise(struct anim *anim) +{ + anim->animnum = 0; + anim->animnum2 = 0; + anim->looping = 0; + anim->unk68 = 0; + anim->unk6c = 0; + anim->unk70 = NULL; + anim->average = 0; + anim->frac = 0; + anim->timespeed = 0; + anim->frac2 = 0; + anim->timespeed2 = 0; + anim->fracmerge = 0; + anim->timemerge = 0; + anim->timeplay = 0; + anim->endframe = -1; + anim->endframe2 = -1; + anim->speed = 1; + anim->speed2 = 1; + anim->playspeed = 1; + anim->animscale = 1; +} GLOBAL_ASM( glabel func00023108