diff --git a/src/include/lib/anim.h b/src/include/lib/anim.h index 75dfa243c..aa9c7a799 100644 --- a/src/include/lib/anim.h +++ b/src/include/lib/anim.h @@ -18,7 +18,7 @@ u8 anim00023ab0(s16 animnum, s32 framenum); void anim00023d0c(void); void anim00023d38(s16 animnum); u32 anim00023f50(u8 *arg0, u8 arg1, u32 arg2); -u32 anim00023fe0(void); +u32 anim00023fe0(u8 *arg0, u8 arg1, u32 arg2); void anim00024050(s32 arg0, s32 arg1, struct modeltype *arg2, s32 animnum, u32 arg4, struct coord *arg5, struct coord *arg6, struct coord *arg7); u32 anim0002485c(s32 arg0, s32 arg1, struct modeltype *arg2, s16 animnum, s32 loopframe, s16 *arg5, s32 arg6); f32 anim00024b64(u32 arg0, u32 arg1, struct modeltype *arg2, s16 animnum, u32 arg4, struct coord *coord, u32 arg6); diff --git a/src/lib/anim.c b/src/lib/anim.c index fef545e87..0fbd4b6a6 100644 --- a/src/lib/anim.c +++ b/src/lib/anim.c @@ -712,38 +712,16 @@ glabel anim00023f50 // return result; //} -GLOBAL_ASM( -glabel anim00023fe0 -/* 23fe0: 27bdffe8 */ addiu $sp,$sp,-24 -/* 23fe4: afbf0014 */ sw $ra,0x14($sp) -/* 23fe8: afa5001c */ sw $a1,0x1c($sp) -/* 23fec: 0c008fd4 */ jal anim00023f50 -/* 23ff0: 93a5001f */ lbu $a1,0x1f($sp) -/* 23ff4: 93a3001f */ lbu $v1,0x1f($sp) -/* 23ff8: 8fbf0014 */ lw $ra,0x14($sp) -/* 23ffc: 3044ffff */ andi $a0,$v0,0xffff -/* 24000: 28610010 */ slti $at,$v1,0x10 -/* 24004: 10200010 */ beqz $at,.L00024048 -/* 24008: 27bd0018 */ addiu $sp,$sp,0x18 -/* 2400c: 246e001f */ addiu $t6,$v1,0x1f -/* 24010: 240f0001 */ addiu $t7,$zero,0x1 -/* 24014: 01cfc004 */ sllv $t8,$t7,$t6 -/* 24018: 3045ffff */ andi $a1,$v0,0xffff -/* 2401c: 00b8c824 */ and $t9,$a1,$t8 -/* 24020: 13200009 */ beqz $t9,.L00024048 -/* 24024: 24080010 */ addiu $t0,$zero,0x10 -/* 24028: 01034823 */ subu $t1,$t0,$v1 -/* 2402c: 240a0001 */ addiu $t2,$zero,0x1 -/* 24030: 012a5804 */ sllv $t3,$t2,$t1 -/* 24034: 256cffff */ addiu $t4,$t3,-1 -/* 24038: 006c6804 */ sllv $t5,$t4,$v1 -/* 2403c: 00ad2025 */ or $a0,$a1,$t5 -/* 24040: 308fffff */ andi $t7,$a0,0xffff -/* 24044: 01e02025 */ or $a0,$t7,$zero -.L00024048: -/* 24048: 03e00008 */ jr $ra -/* 2404c: 00801025 */ or $v0,$a0,$zero -); +u32 anim00023fe0(u8 *arg0, u8 arg1, u32 arg2) +{ + u16 result = anim00023f50(arg0, arg1, arg2); + + if (arg1 < 16 && (result & 1 << (arg1 + 31))) { + result |= (1 << (16 - arg1)) - 1 << arg1; + } + + return result; +} GLOBAL_ASM( glabel anim00024050