#include #include "constants.h" #include "game/prop.h" #include "game/game_1531a0.h" #include "game/bg.h" #include "bss.h" #include "lib/dma.h" #include "lib/memp.h" #include "lib/mtx.h" #include "lib/anim.h" #include "lib/lib_2f490.h" #include "lib/libc/ll.h" #include "data.h" #include "types.h" u8 *var8009a870; u8 **var8009a874; s16 *var8009a878; s16 *var8009a87c; u8 *var8009a880; u8 *var8009a884; s32 *var8009a888; s16 *var8009a88c; s32 *var8009a890; s16 var8009a894; struct animsummary *var8009a898; u32 var8005f000 = 0; s32 var8005f004 = 0; s16 g_NumAnimations = 0; struct animsummary *g_Anims = NULL; u8 *var8005f010 = NULL; s16 *var8005f014 = NULL; s32 var8005f018 = 176; s32 var8005f01c = 608; bool g_AnimHostEnabled = false; u8 *g_AnimHostSegment = NULL; extern u8 _animationsTableRomStart; extern u8 _animationsTableRomEnd; void animsInit(void) { s32 i; u32 *ptr; u32 tablelen = ALIGN64(&_animationsTableRomEnd - &_animationsTableRomStart); ptr = mempAlloc(tablelen, MEMPOOL_PERMANENT); dmaExec(ptr, (s32)&_animationsTableRomStart, tablelen); g_NumAnimations = var8009a894 = ptr[0]; g_Anims = var8009a898 = (struct animsummary *)&ptr[1]; var8005f01c = 1; var8005f018 = 1; for (i = 0; i < g_NumAnimations; i++) { if (g_Anims[i].headerlen > var8005f01c) { var8005f01c = g_Anims[i].headerlen; } if (g_Anims[i].bytesperframe > var8005f018) { var8005f018 = g_Anims[i].bytesperframe; } } var8005f01c = ALIGN16(var8005f01c + 34); var8005f018 = ALIGN16(var8005f018 + 34); var8005f010 = mempAlloc(ALIGN64(g_NumAnimations), MEMPOOL_PERMANENT); var8005f014 = mempAlloc(ALIGN64(g_NumAnimations * 2), MEMPOOL_PERMANENT); var8009a870 = mempAlloc(ALIGN64(var8005f018 * 0x20), MEMPOOL_PERMANENT); var8009a874 = mempAlloc(0x80, MEMPOOL_PERMANENT); var8009a878 = mempAlloc(0x40, MEMPOOL_PERMANENT); var8009a87c = mempAlloc(0x40, MEMPOOL_PERMANENT); var8009a880 = mempAlloc(0x40, MEMPOOL_PERMANENT); var8009a884 = mempAlloc(ALIGN64(var8005f01c * 40), MEMPOOL_PERMANENT); var8009a888 = mempAlloc(0xc0, MEMPOOL_PERMANENT); var8009a88c = mempAlloc(0x80, MEMPOOL_PERMANENT); var8009a890 = mempAlloc(0xc0, MEMPOOL_PERMANENT); animsInitTables(); g_AnimHostSegment = NULL; g_AnimHostEnabled = false; } void animsInitTables(void) { s32 i; for (i = 0; i < g_NumAnimations; i++) { var8005f010[i] = 0xff; var8005f014[i] = 0; } for (i = 0; i < 32; i++) { var8009a878[i] = 0; var8009a87c[i] = 0; var8009a880[i] = 0; } for (i = 0; i < 40; i++) { var8009a88c[i] = 0; var8009a890[i] = -2; } } void anim0002373c(void) { g_NumAnimations = var8009a894; g_Anims = var8009a898; g_AnimHostEnabled = false; } s32 animGetNumFrames(s16 animnum) { return g_Anims[animnum].numframes; } bool animHasFrames(s16 animnum) { return animnum < g_NumAnimations && g_Anims[animnum].numframes > 0; } s32 animGetNumAnimations(void) { return g_NumAnimations; } extern u8 _animationsSegmentRomStart; u8 *animDma(u8 *dst, u32 segoffset, u32 len) { if (g_AnimHostEnabled) { bcopy(&g_AnimHostSegment[segoffset], dst, len); return dst; } return dmaExecWithAutoAlign(dst, (u32)&_animationsSegmentRomStart + segoffset, len); } s32 anim0002384c(s16 animnum, s32 frame) { u8 *ptr = (u8 *)(var8009a888[var8005f010[animnum]] + g_Anims[animnum].headerlen - 2); s32 result = frame; while (true) { s16 value1 = ptr[0] << 8 | ptr[1]; s16 value2; if (value1 < 0) { break; } value2 = ptr[-2] << 8 | ptr[-1]; ptr -= 4; if (value1 <= frame) { if (value2 < frame) { result = result - value2 + value1 - 1; } else { result = -1; break; } } } return result; } bool anim00023908(s16 animnum, s32 frame, s32 *frameptr) { u8 *ptr = (u8 *)(var8009a888[var8005f010[animnum]] + g_Anims[animnum].headerlen - 2); s32 result = frame; bool ret = true; while (true) { s16 value1 = ptr[0] << 8 | ptr[1]; if (value1 >= 0) { s16 value2 = ptr[-2] << 8 | ptr[-1]; ptr -= 4; if (value1 <= frame) { if (value2 < frame) { result = result - value2 + value1 - 1; continue; } result = result - frame + value1; ret = false; break; } } else { break; } } *frameptr = result; return ret; } bool anim000239e0(s16 animnum, s32 frame) { u8 *ptr = (u8 *)(var8009a888[var8005f010[animnum]] + g_Anims[animnum].headerlen - 2); if (g_Anims[animnum].flags & ANIMFLAG_04) { while (true) { s16 value1 = ptr[0] << 8 | ptr[1]; if (value1 < 0) { break; } ptr -= 4; } ptr -= 2; } while (true) { s16 value2 = ptr[0] << 8 | ptr[1]; if (value2 < 0) { break; } if (value2 == frame) { return true; } ptr -= 2; } return false; } GLOBAL_ASM( glabel anim00023ab0 /* 23ab0: 27bdffc0 */ addiu $sp,$sp,-64 /* 23ab4: afb10018 */ sw $s1,0x18($sp) /* 23ab8: 00048c00 */ sll $s1,$a0,0x10 /* 23abc: 00117403 */ sra $t6,$s1,0x10 /* 23ac0: afb00014 */ sw $s0,0x14($sp) /* 23ac4: afa40040 */ sw $a0,0x40($sp) /* 23ac8: 3c06800a */ lui $a2,%hi(var8009a878) /* 23acc: 3c08800a */ lui $t0,%hi(var8009a87c) /* 23ad0: 00a08025 */ or $s0,$a1,$zero /* 23ad4: 01c08825 */ or $s1,$t6,$zero /* 23ad8: afbf001c */ sw $ra,0x1c($sp) /* 23adc: 2407ffff */ addiu $a3,$zero,-1 /* 23ae0: afa5002c */ sw $a1,0x2c($sp) /* 23ae4: 2508a87c */ addiu $t0,$t0,%lo(var8009a87c) /* 23ae8: 8cc6a878 */ lw $a2,%lo(var8009a878)($a2) /* 23aec: 24040020 */ addiu $a0,$zero,0x20 /* 23af0: 00001025 */ or $v0,$zero,$zero /* 23af4: 00001825 */ or $v1,$zero,$zero .L00023af8: /* 23af8: 84cf0000 */ lh $t7,0x0($a2) /* 23afc: 24c60002 */ addiu $a2,$a2,0x2 /* 23b00: 562f0009 */ bnel $s1,$t7,.L00023b28 /* 23b04: 24420001 */ addiu $v0,$v0,0x1 /* 23b08: 8d180000 */ lw $t8,0x0($t0) /* 23b0c: 0303c821 */ addu $t9,$t8,$v1 /* 23b10: 872a0000 */ lh $t2,0x0($t9) /* 23b14: 560a0004 */ bnel $s0,$t2,.L00023b28 /* 23b18: 24420001 */ addiu $v0,$v0,0x1 /* 23b1c: 10000004 */ b .L00023b30 /* 23b20: 00403825 */ or $a3,$v0,$zero /* 23b24: 24420001 */ addiu $v0,$v0,0x1 .L00023b28: /* 23b28: 1444fff3 */ bne $v0,$a0,.L00023af8 /* 23b2c: 24630002 */ addiu $v1,$v1,0x2 .L00023b30: /* 23b30: 04e00007 */ bltz $a3,.L00023b50 /* 23b34: 3c02800a */ lui $v0,%hi(var8009a880) /* 23b38: 3c0c800a */ lui $t4,%hi(var8009a880) /* 23b3c: 8d8ca880 */ lw $t4,%lo(var8009a880)($t4) /* 23b40: 240b0001 */ addiu $t3,$zero,0x1 /* 23b44: 01876821 */ addu $t5,$t4,$a3 /* 23b48: 1000006a */ b .L00023cf4 /* 23b4c: a1ab0000 */ sb $t3,0x0($t5) .L00023b50: /* 23b50: 3c078006 */ lui $a3,%hi(var8005f000) /* 23b54: 8ce7f000 */ lw $a3,%lo(var8005f000)($a3) /* 23b58: 8c42a880 */ lw $v0,%lo(var8009a880)($v0) /* 23b5c: 00112400 */ sll $a0,$s1,0x10 /* 23b60: 00114880 */ sll $t1,$s1,0x2 /* 23b64: 00477021 */ addu $t6,$v0,$a3 /* 23b68: 91cf0000 */ lbu $t7,0x0($t6) /* 23b6c: 00047403 */ sra $t6,$a0,0x10 /* 23b70: 3c0c8006 */ lui $t4,%hi(g_Anims) /* 23b74: 11e0000c */ beqz $t7,.L00023ba8 /* 23b78: 01c02025 */ or $a0,$t6,$zero /* 23b7c: 24e70001 */ addiu $a3,$a3,0x1 .L00023b80: /* 23b80: 04e10004 */ bgez $a3,.L00023b94 /* 23b84: 30f8001f */ andi $t8,$a3,0x1f /* 23b88: 13000002 */ beqz $t8,.L00023b94 /* 23b8c: 00000000 */ nop /* 23b90: 2718ffe0 */ addiu $t8,$t8,-32 .L00023b94: /* 23b94: 0058c821 */ addu $t9,$v0,$t8 /* 23b98: 932a0000 */ lbu $t2,0x0($t9) /* 23b9c: 03003825 */ or $a3,$t8,$zero /* 23ba0: 5540fff7 */ bnezl $t2,.L00023b80 /* 23ba4: 24e70001 */ addiu $a3,$a3,0x1 .L00023ba8: /* 23ba8: 8d8cf00c */ lw $t4,%lo(g_Anims)($t4) /* 23bac: 01314823 */ subu $t1,$t1,$s1 /* 23bb0: 00094880 */ sll $t1,$t1,0x2 /* 23bb4: 01891821 */ addu $v1,$t4,$t1 /* 23bb8: 906b000b */ lbu $t3,0xb($v1) /* 23bbc: 02002825 */ or $a1,$s0,$zero /* 23bc0: 27a6002c */ addiu $a2,$sp,0x2c /* 23bc4: 316d0004 */ andi $t5,$t3,0x4 /* 23bc8: 51a0000c */ beqzl $t5,.L00023bfc /* 23bcc: 94660002 */ lhu $a2,0x2($v1) /* 23bd0: afa7003c */ sw $a3,0x3c($sp) /* 23bd4: 0c008e42 */ jal anim00023908 /* 23bd8: afa90028 */ sw $t1,0x28($sp) /* 23bdc: 3c0f8006 */ lui $t7,%hi(g_Anims) /* 23be0: 8deff00c */ lw $t7,%lo(g_Anims)($t7) /* 23be4: 8fa90028 */ lw $t1,0x28($sp) /* 23be8: 3c08800a */ lui $t0,%hi(var8009a87c) /* 23bec: 2508a87c */ addiu $t0,$t0,%lo(var8009a87c) /* 23bf0: 8fa7003c */ lw $a3,0x3c($sp) /* 23bf4: 01e91821 */ addu $v1,$t7,$t1 /* 23bf8: 94660002 */ lhu $a2,0x2($v1) .L00023bfc: /* 23bfc: 8fac002c */ lw $t4,0x2c($sp) /* 23c00: 3c0a8006 */ lui $t2,%hi(var8005f018) /* 23c04: 10c0001b */ beqz $a2,.L00023c74 /* 23c08: 00000000 */ nop /* 23c0c: 00cc0019 */ multu $a2,$t4 /* 23c10: 3c0d8006 */ lui $t5,%hi(var8005f018) /* 23c14: 8dadf018 */ lw $t5,%lo(var8005f018)($t5) /* 23c18: 94780008 */ lhu $t8,0x8($v1) /* 23c1c: 8c790004 */ lw $t9,0x4($v1) /* 23c20: 3c0f800a */ lui $t7,%hi(var8009a870) /* 23c24: 8defa870 */ lw $t7,%lo(var8009a870)($t7) /* 23c28: 03195021 */ addu $t2,$t8,$t9 /* 23c2c: afa7003c */ sw $a3,0x3c($sp) /* 23c30: 00005812 */ mflo $t3 /* 23c34: 014b2821 */ addu $a1,$t2,$t3 /* 23c38: 00000000 */ nop /* 23c3c: 00ed0019 */ multu $a3,$t5 /* 23c40: 00007012 */ mflo $t6 /* 23c44: 01cf2021 */ addu $a0,$t6,$t7 /* 23c48: 0c008dfa */ jal animDma /* 23c4c: 00000000 */ nop /* 23c50: 8fa7003c */ lw $a3,0x3c($sp) /* 23c54: 3c18800a */ lui $t8,%hi(var8009a874) /* 23c58: 8f18a874 */ lw $t8,%lo(var8009a874)($t8) /* 23c5c: 0007c880 */ sll $t9,$a3,0x2 /* 23c60: 3c08800a */ lui $t0,%hi(var8009a87c) /* 23c64: 03196021 */ addu $t4,$t8,$t9 /* 23c68: ad820000 */ sw $v0,0x0($t4) /* 23c6c: 1000000c */ b .L00023ca0 /* 23c70: 2508a87c */ addiu $t0,$t0,%lo(var8009a87c) .L00023c74: /* 23c74: 8d4af018 */ lw $t2,%lo(var8005f018)($t2) /* 23c78: 3c0d800a */ lui $t5,%hi(var8009a870) /* 23c7c: 3c0f800a */ lui $t7,%hi(var8009a874) /* 23c80: 00ea0019 */ multu $a3,$t2 /* 23c84: 8defa874 */ lw $t7,%lo(var8009a874)($t7) /* 23c88: 8dada870 */ lw $t5,%lo(var8009a870)($t5) /* 23c8c: 0007c080 */ sll $t8,$a3,0x2 /* 23c90: 01f8c821 */ addu $t9,$t7,$t8 /* 23c94: 00005812 */ mflo $t3 /* 23c98: 016d7021 */ addu $t6,$t3,$t5 /* 23c9c: af2e0000 */ sw $t6,0x0($t9) .L00023ca0: /* 23ca0: 3c0c800a */ lui $t4,%hi(var8009a878) /* 23ca4: 8d8ca878 */ lw $t4,%lo(var8009a878)($t4) /* 23ca8: 00071040 */ sll $v0,$a3,0x1 /* 23cac: 3c18800a */ lui $t8,%hi(var8009a880) /* 23cb0: 01825021 */ addu $t2,$t4,$v0 /* 23cb4: a5510000 */ sh $s1,0x0($t2) /* 23cb8: 8d0b0000 */ lw $t3,0x0($t0) /* 23cbc: 24f90001 */ addiu $t9,$a3,0x1 /* 23cc0: 240f0001 */ addiu $t7,$zero,0x1 /* 23cc4: 01626821 */ addu $t5,$t3,$v0 /* 23cc8: a5b00000 */ sh $s0,0x0($t5) /* 23ccc: 8f18a880 */ lw $t8,%lo(var8009a880)($t8) /* 23cd0: 3c018006 */ lui $at,%hi(var8005f000) /* 23cd4: 03077021 */ addu $t6,$t8,$a3 /* 23cd8: a1cf0000 */ sb $t7,0x0($t6) /* 23cdc: 07210004 */ bgez $t9,.L00023cf0 /* 23ce0: 332c001f */ andi $t4,$t9,0x1f /* 23ce4: 11800002 */ beqz $t4,.L00023cf0 /* 23ce8: 00000000 */ nop /* 23cec: 258cffe0 */ addiu $t4,$t4,-32 .L00023cf0: /* 23cf0: ac2cf000 */ sw $t4,%lo(var8005f000)($at) .L00023cf4: /* 23cf4: 8fbf001c */ lw $ra,0x1c($sp) /* 23cf8: 8fb00014 */ lw $s0,0x14($sp) /* 23cfc: 8fb10018 */ lw $s1,0x18($sp) /* 23d00: 27bd0040 */ addiu $sp,$sp,0x40 /* 23d04: 03e00008 */ jr $ra /* 23d08: 30e200ff */ andi $v0,$a3,0xff ); // Mismatch: regalloc near tmp1 and tmp2 //u8 anim00023ab0(s16 animnum, s32 framenum) //{ // s32 index = -1; // s32 i; // s32 tmp1; // s32 tmp2; // s32 sp2c = framenum; // // for (i = 0; i < 32; i++) { // if (var8009a878[i] == animnum && var8009a87c[i] == sp2c) { // index = i; // break; // } // } // // if (index >= 0) { // var8009a880[index] = 1; // } else { // index = var8005f000; // // while (var8009a880[index]) { // index = (index + 1) % 32; // } // // if (g_Anims[animnum].flags & ANIMFLAG_04) { // anim00023908(animnum, framenum, &sp2c); // } // // if (g_Anims[animnum].bytesperframe) { // tmp1 = g_Anims[animnum].bytesperframe * sp2c; // tmp2 = tmp1 + (g_Anims[animnum].data + g_Anims[animnum].headerlen); // var8009a874[index] = animDma(&var8009a870[index * var8005f018], tmp2, g_Anims[animnum].bytesperframe); // } else { // var8009a874[index] = &var8009a870[index * var8005f018]; // } // // var8009a878[index] = animnum; // var8009a87c[index] = framenum; // var8009a880[index] = 1; // var8005f000 = (index + 1) % 32; // } // // return index; //} void anim00023d0c(void) { s32 i; for (i = 0; i < 32; i++) { var8009a880[i] = 0; } } GLOBAL_ASM( glabel anim00023d38 /* 23d38: 3c0b8006 */ lui $t3,%hi(var8005f010) /* 23d3c: 256bf010 */ addiu $t3,$t3,%lo(var8005f010) /* 23d40: 27bdffc0 */ addiu $sp,$sp,-64 /* 23d44: 8d660000 */ lw $a2,0x0($t3) /* 23d48: afb00018 */ sw $s0,0x18($sp) /* 23d4c: 00048400 */ sll $s0,$a0,0x10 /* 23d50: 00107403 */ sra $t6,$s0,0x10 /* 23d54: afbf001c */ sw $ra,0x1c($sp) /* 23d58: afa40040 */ sw $a0,0x40($sp) /* 23d5c: 01c67821 */ addu $t7,$t6,$a2 /* 23d60: 91e20000 */ lbu $v0,0x0($t7) /* 23d64: 240100ff */ addiu $at,$zero,0xff /* 23d68: 01c08025 */ or $s0,$t6,$zero /* 23d6c: 1041001c */ beq $v0,$at,.L00023de0 /* 23d70: 3c0a800a */ lui $t2,%hi(g_Vars) /* 23d74: 3c19800a */ lui $t9,%hi(var8009a890) /* 23d78: 8f39a890 */ lw $t9,%lo(var8009a890)($t9) /* 23d7c: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) /* 23d80: 8d580058 */ lw $t8,0x58($t2) /* 23d84: 00026080 */ sll $t4,$v0,0x2 /* 23d88: 032c6821 */ addu $t5,$t9,$t4 /* 23d8c: adb80000 */ sw $t8,0x0($t5) /* 23d90: 8d6e0000 */ lw $t6,0x0($t3) /* 23d94: 24090028 */ addiu $t1,$zero,0x28 /* 23d98: 020e7821 */ addu $t7,$s0,$t6 /* 23d9c: 91f90000 */ lbu $t9,0x0($t7) /* 23da0: 272c0001 */ addiu $t4,$t9,0x1 /* 23da4: 0189001a */ div $zero,$t4,$t1 /* 23da8: 15200002 */ bnez $t1,.L00023db4 /* 23dac: 00000000 */ nop /* 23db0: 0007000d */ break 0x7 .L00023db4: /* 23db4: 2401ffff */ addiu $at,$zero,-1 /* 23db8: 15210004 */ bne $t1,$at,.L00023dcc /* 23dbc: 3c018000 */ lui $at,0x8000 /* 23dc0: 15810002 */ bne $t4,$at,.L00023dcc /* 23dc4: 00000000 */ nop /* 23dc8: 0006000d */ break 0x6 .L00023dcc: /* 23dcc: 3c018006 */ lui $at,%hi(var8005f004) /* 23dd0: 0000c010 */ mfhi $t8 /* 23dd4: ac38f004 */ sw $t8,%lo(var8005f004)($at) /* 23dd8: 10000059 */ b .L00023f40 /* 23ddc: 8fbf001c */ lw $ra,0x1c($sp) .L00023de0: /* 23de0: 3c078006 */ lui $a3,%hi(var8005f004) /* 23de4: 8ce7f004 */ lw $a3,%lo(var8005f004)($a3) /* 23de8: 3c05800a */ lui $a1,%hi(var8009a890) /* 23dec: 8ca5a890 */ lw $a1,%lo(var8009a890)($a1) /* 23df0: 00074080 */ sll $t0,$a3,0x2 /* 23df4: 00001025 */ or $v0,$zero,$zero /* 23df8: 00a86821 */ addu $t5,$a1,$t0 /* 23dfc: 8da40000 */ lw $a0,0x0($t5) /* 23e00: 24090028 */ addiu $t1,$zero,0x28 /* 23e04: 00a01825 */ or $v1,$a1,$zero .L00023e08: /* 23e08: 8c6e0000 */ lw $t6,0x0($v1) /* 23e0c: 01c4082a */ slt $at,$t6,$a0 /* 23e10: 50200006 */ beqzl $at,.L00023e2c /* 23e14: 24420001 */ addiu $v0,$v0,0x1 /* 23e18: 00024080 */ sll $t0,$v0,0x2 /* 23e1c: 00a87821 */ addu $t7,$a1,$t0 /* 23e20: 8de40000 */ lw $a0,0x0($t7) /* 23e24: 00403825 */ or $a3,$v0,$zero /* 23e28: 24420001 */ addiu $v0,$v0,0x1 .L00023e2c: /* 23e2c: 1449fff6 */ bne $v0,$t1,.L00023e08 /* 23e30: 24630004 */ addiu $v1,$v1,0x4 /* 23e34: 3c19800a */ lui $t9,%hi(var8009a88c) /* 23e38: 8f39a88c */ lw $t9,%lo(var8009a88c)($t9) /* 23e3c: 00071840 */ sll $v1,$a3,0x1 /* 23e40: 3c0e8006 */ lui $t6,%hi(g_Anims) /* 23e44: 03236021 */ addu $t4,$t9,$v1 /* 23e48: 85820000 */ lh $v0,0x0($t4) /* 23e4c: 3c198006 */ lui $t9,%hi(var8005f01c) /* 23e50: 10400003 */ beqz $v0,.L00023e60 /* 23e54: 241800ff */ addiu $t8,$zero,0xff /* 23e58: 00c26821 */ addu $t5,$a2,$v0 /* 23e5c: a1b80000 */ sb $t8,0x0($t5) .L00023e60: /* 23e60: 8f39f01c */ lw $t9,%lo(var8005f01c)($t9) /* 23e64: 8dcef00c */ lw $t6,%lo(g_Anims)($t6) /* 23e68: 00107880 */ sll $t7,$s0,0x2 /* 23e6c: 00f90019 */ multu $a3,$t9 /* 23e70: 01f07823 */ subu $t7,$t7,$s0 /* 23e74: 000f7880 */ sll $t7,$t7,0x2 /* 23e78: 01cf1021 */ addu $v0,$t6,$t7 /* 23e7c: 3c18800a */ lui $t8,%hi(var8009a884) /* 23e80: 8f18a884 */ lw $t8,%lo(var8009a884)($t8) /* 23e84: 94460008 */ lhu $a2,0x8($v0) /* 23e88: 8c450004 */ lw $a1,0x4($v0) /* 23e8c: afa80020 */ sw $t0,0x20($sp) /* 23e90: afa70034 */ sw $a3,0x34($sp) /* 23e94: 00006012 */ mflo $t4 /* 23e98: afa30028 */ sw $v1,0x28($sp) /* 23e9c: 0c008dfa */ jal animDma /* 23ea0: 01982021 */ addu $a0,$t4,$t8 /* 23ea4: 3c0d800a */ lui $t5,%hi(var8009a888) /* 23ea8: 8dada888 */ lw $t5,%lo(var8009a888)($t5) /* 23eac: 8fa80020 */ lw $t0,0x20($sp) /* 23eb0: 8fa30028 */ lw $v1,0x28($sp) /* 23eb4: 8fa70034 */ lw $a3,0x34($sp) /* 23eb8: 3c0b8006 */ lui $t3,%hi(var8005f010) /* 23ebc: 01a87021 */ addu $t6,$t5,$t0 /* 23ec0: adc20000 */ sw $v0,0x0($t6) /* 23ec4: 256bf010 */ addiu $t3,$t3,%lo(var8005f010) /* 23ec8: 8d6f0000 */ lw $t7,0x0($t3) /* 23ecc: 24090028 */ addiu $t1,$zero,0x28 /* 23ed0: 3c0c800a */ lui $t4,%hi(var8009a88c) /* 23ed4: 01f0c821 */ addu $t9,$t7,$s0 /* 23ed8: a3270000 */ sb $a3,0x0($t9) /* 23edc: 24f90001 */ addiu $t9,$a3,0x1 /* 23ee0: 0329001a */ div $zero,$t9,$t1 /* 23ee4: 8d8ca88c */ lw $t4,%lo(var8009a88c)($t4) /* 23ee8: 3c0a800a */ lui $t2,%hi(g_Vars) /* 23eec: 3c0e800a */ lui $t6,%hi(var8009a890) /* 23ef0: 0183c021 */ addu $t8,$t4,$v1 /* 23ef4: a7100000 */ sh $s0,0x0($t8) /* 23ef8: 8dcea890 */ lw $t6,%lo(var8009a890)($t6) /* 23efc: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) /* 23f00: 8d4d0058 */ lw $t5,0x58($t2) /* 23f04: 00006010 */ mfhi $t4 /* 23f08: 01c87821 */ addu $t7,$t6,$t0 /* 23f0c: aded0000 */ sw $t5,0x0($t7) /* 23f10: 15200002 */ bnez $t1,.L00023f1c /* 23f14: 00000000 */ nop /* 23f18: 0007000d */ break 0x7 .L00023f1c: /* 23f1c: 2401ffff */ addiu $at,$zero,-1 /* 23f20: 15210004 */ bne $t1,$at,.L00023f34 /* 23f24: 3c018000 */ lui $at,0x8000 /* 23f28: 17210002 */ bne $t9,$at,.L00023f34 /* 23f2c: 00000000 */ nop /* 23f30: 0006000d */ break 0x6 .L00023f34: /* 23f34: 3c018006 */ lui $at,%hi(var8005f004) /* 23f38: ac2cf004 */ sw $t4,%lo(var8005f004)($at) /* 23f3c: 8fbf001c */ lw $ra,0x1c($sp) .L00023f40: /* 23f40: 8fb00018 */ lw $s0,0x18($sp) /* 23f44: 27bd0040 */ addiu $sp,$sp,0x40 /* 23f48: 03e00008 */ jr $ra /* 23f4c: 00000000 */ nop ); // Mismatch: for loop is handled differently //void anim00023d38(s16 animnum) //{ // s32 i; // // if (var8005f010[animnum] != 0xff) { // var8009a890[var8005f010[animnum]] = g_Vars.thisframe240; // var8005f004 = (var8005f010[animnum] + 1) % 40; // } else { // s32 index = var8005f004; // s32 bestvalue = var8009a890[index]; // s32 stack; // s32 tmp; // // for (i = 0; i < 40; i++) { // if (var8009a890[i] < bestvalue) { // bestvalue = var8009a890[i]; // index = i; // } // } // // tmp = var8009a88c[index]; // // if (tmp) { // var8005f010[tmp] = 0xff; // } // // tmp = g_Anims[animnum].headerlen; // // var8009a888[index] = animDma(&var8009a884[var8005f01c * index], g_Anims[animnum].data, tmp); // var8005f010[animnum] = index; // var8009a88c[index] = animnum; // var8009a890[index] = g_Vars.thisframe240; // var8005f004 = (index + 1) % 40; // } //} GLOBAL_ASM( glabel anim00023f50 /* 23f50: 30cf0007 */ andi $t7,$a2,0x7 /* 23f54: 24180008 */ addiu $t8,$zero,0x8 /* 23f58: 030f4023 */ subu $t0,$t8,$t7 /* 23f5c: 30a900ff */ andi $t1,$a1,0xff /* 23f60: 311900ff */ andi $t9,$t0,0xff /* 23f64: 000610c2 */ srl $v0,$a2,0x3 /* 23f68: 0139082a */ slt $at,$t1,$t9 /* 23f6c: afa50004 */ sw $a1,0x4($sp) /* 23f70: 00001825 */ or $v1,$zero,$zero /* 23f74: 00822021 */ addu $a0,$a0,$v0 /* 23f78: 1420000e */ bnez $at,.L00023fb4 /* 23f7c: 310700ff */ andi $a3,$t0,0xff .L00023f80: /* 23f80: 908b0000 */ lbu $t3,0x0($a0) /* 23f84: 240c0001 */ addiu $t4,$zero,0x1 /* 23f88: 01272823 */ subu $a1,$t1,$a3 /* 23f8c: 00ec6804 */ sllv $t5,$t4,$a3 /* 23f90: 30a900ff */ andi $t1,$a1,0xff /* 23f94: 25aeffff */ addiu $t6,$t5,-1 /* 23f98: 016e7824 */ and $t7,$t3,$t6 /* 23f9c: 012fc004 */ sllv $t8,$t7,$t1 /* 23fa0: 29210008 */ slti $at,$t1,0x8 /* 23fa4: 00781825 */ or $v1,$v1,$t8 /* 23fa8: 24840001 */ addiu $a0,$a0,0x1 /* 23fac: 1020fff4 */ beqz $at,.L00023f80 /* 23fb0: 24070008 */ addiu $a3,$zero,0x8 .L00023fb4: /* 23fb4: 19200008 */ blez $t1,.L00023fd8 /* 23fb8: 00e95023 */ subu $t2,$a3,$t1 /* 23fbc: 90990000 */ lbu $t9,0x0($a0) /* 23fc0: 240d0001 */ addiu $t5,$zero,0x1 /* 23fc4: 012d5804 */ sllv $t3,$t5,$t1 /* 23fc8: 256effff */ addiu $t6,$t3,-1 /* 23fcc: 01596007 */ srav $t4,$t9,$t2 /* 23fd0: 018e7824 */ and $t7,$t4,$t6 /* 23fd4: 006f1825 */ or $v1,$v1,$t7 .L00023fd8: /* 23fd8: 03e00008 */ jr $ra /* 23fdc: 00601025 */ or $v0,$v1,$zero ); // Mismatch: regalloc //u32 anim00023f50(u8 *arg0, u8 arg1, u32 arg2) //{ // u32 result = 0; // u8 numbits; // u32 tmp; // // arg0 += arg2 / 8; // numbits = 8 - (arg2 % 8); // // while (arg1 >= numbits) { // arg1 -= numbits; // result |= (*arg0 & ((1 << numbits) - 1)) << arg1; // arg0++; // numbits = 8; // } // // if (arg1 > 0) { // result |= (*arg0 >> (numbits - arg1)) & ((1 << arg1) - 1); // } // // if (arg2 / 8); // // return result; //} 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 .late_rodata glabel var70054690 .word 0x3a83126f glabel var70054694 .word 0x3a83126f glabel var70054698 .word 0x3a83126f glabel var7005469c .word 0x40c907a9 glabel var700546a0 .word 0x40c907a9 glabel var700546a4 .word 0x40c907a9 .text /* 24050: 27bdff98 */ addiu $sp,$sp,-104 /* 24054: 93b9007b */ lbu $t9,0x7b($sp) /* 24058: 3c18800a */ lui $t8,%hi(var8009a874) /* 2405c: 8f18a874 */ lw $t8,%lo(var8009a874)($t8) /* 24060: 00194080 */ sll $t0,$t9,0x2 /* 24064: afbf001c */ sw $ra,0x1c($sp) /* 24068: afb10018 */ sw $s1,0x18($sp) /* 2406c: afb00014 */ sw $s0,0x14($sp) /* 24070: afa40068 */ sw $a0,0x68($sp) /* 24074: afa5006c */ sw $a1,0x6c($sp) /* 24078: afa70074 */ sw $a3,0x74($sp) /* 2407c: 03084821 */ addu $t1,$t8,$t0 /* 24080: 8d2a0000 */ lw $t2,0x0($t1) /* 24084: 00077400 */ sll $t6,$a3,0x10 /* 24088: 000e3c03 */ sra $a3,$t6,0x10 /* 2408c: 10a00006 */ beqz $a1,.L000240a8 /* 24090: afaa0054 */ sw $t2,0x54($sp) /* 24094: 8ccc0004 */ lw $t4,0x4($a2) /* 24098: 00047040 */ sll $t6,$a0,0x1 /* 2409c: 018e7821 */ addu $t7,$t4,$t6 /* 240a0: 91f90001 */ lbu $t9,0x1($t7) /* 240a4: afb90068 */ sw $t9,0x68($sp) .L000240a8: /* 240a8: 3c188006 */ lui $t8,%hi(g_Anims) /* 240ac: 8f18f00c */ lw $t8,%lo(g_Anims)($t8) /* 240b0: 00074080 */ sll $t0,$a3,0x2 /* 240b4: 01074023 */ subu $t0,$t0,$a3 /* 240b8: 00084080 */ sll $t0,$t0,0x2 /* 240bc: 3c0b8006 */ lui $t3,%hi(var8005f010) /* 240c0: 03081021 */ addu $v0,$t8,$t0 /* 240c4: 9049000a */ lbu $t1,0xa($v0) /* 240c8: 8d6bf010 */ lw $t3,%lo(var8005f010)($t3) /* 240cc: 3c0a800a */ lui $t2,%hi(var8009a888) /* 240d0: a3a90053 */ sb $t1,0x53($sp) /* 240d4: 00eb6821 */ addu $t5,$a3,$t3 /* 240d8: 91ac0000 */ lbu $t4,0x0($t5) /* 240dc: 8d4aa888 */ lw $t2,%lo(var8009a888)($t2) /* 240e0: 8fb80068 */ lw $t8,0x68($sp) /* 240e4: 000c7080 */ sll $t6,$t4,0x2 /* 240e8: 014e7821 */ addu $t7,$t2,$t6 /* 240ec: 8df00000 */ lw $s0,0x0($t7) /* 240f0: 94590008 */ lhu $t9,0x8($v0) /* 240f4: 00008825 */ or $s1,$zero,$zero /* 240f8: 00002025 */ or $a0,$zero,$zero /* 240fc: 1b000043 */ blez $t8,.L0002420c /* 24100: 03302821 */ addu $a1,$t9,$s0 /* 24104: 0205082b */ sltu $at,$s0,$a1 /* 24108: 50200041 */ beqzl $at,.L00024210 /* 2410c: 0205082b */ sltu $at,$s0,$a1 /* 24110: 92030000 */ lbu $v1,0x0($s0) .L00024114: /* 24114: 26100001 */ addiu $s0,$s0,0x1 /* 24118: 30680008 */ andi $t0,$v1,0x8 /* 2411c: 1100000b */ beqz $t0,.L0002414c /* 24120: 30790002 */ andi $t9,$v1,0x2 /* 24124: 92090002 */ lbu $t1,0x2($s0) /* 24128: 920d0005 */ lbu $t5,0x5($s0) /* 2412c: 920a0008 */ lbu $t2,0x8($s0) /* 24130: 02295821 */ addu $t3,$s1,$t1 /* 24134: 920f000b */ lbu $t7,0xb($s0) /* 24138: 016d6021 */ addu $t4,$t3,$t5 /* 2413c: 018a7021 */ addu $t6,$t4,$t2 /* 24140: 2610000c */ addiu $s0,$s0,0xc /* 24144: 10000014 */ b .L00024198 /* 24148: 01cf8821 */ addu $s1,$t6,$t7 .L0002414c: /* 2414c: 13200009 */ beqz $t9,.L00024174 /* 24150: 306c0020 */ andi $t4,$v1,0x20 /* 24154: 92180002 */ lbu $t8,0x2($s0) /* 24158: 92090005 */ lbu $t1,0x5($s0) /* 2415c: 920d0008 */ lbu $t5,0x8($s0) /* 24160: 02384021 */ addu $t0,$s1,$t8 /* 24164: 01095821 */ addu $t3,$t0,$t1 /* 24168: 26100009 */ addiu $s0,$s0,0x9 /* 2416c: 1000000a */ b .L00024198 /* 24170: 016d8821 */ addu $s1,$t3,$t5 .L00024174: /* 24174: 51800009 */ beqzl $t4,.L0002419c /* 24178: 30680001 */ andi $t0,$v1,0x1 /* 2417c: 920a0000 */ lbu $t2,0x0($s0) /* 24180: 920f0005 */ lbu $t7,0x5($s0) /* 24184: 9218000a */ lbu $t8,0xa($s0) /* 24188: 022a7021 */ addu $t6,$s1,$t2 /* 2418c: 01cfc821 */ addu $t9,$t6,$t7 /* 24190: 2610000f */ addiu $s0,$s0,0xf /* 24194: 03388821 */ addu $s1,$t9,$t8 .L00024198: /* 24198: 30680001 */ andi $t0,$v1,0x1 .L0002419c: /* 2419c: 11000009 */ beqz $t0,.L000241c4 /* 241a0: 306f0040 */ andi $t7,$v1,0x40 /* 241a4: 92090002 */ lbu $t1,0x2($s0) /* 241a8: 920d0005 */ lbu $t5,0x5($s0) /* 241ac: 920a0008 */ lbu $t2,0x8($s0) /* 241b0: 02295821 */ addu $t3,$s1,$t1 /* 241b4: 016d6021 */ addu $t4,$t3,$t5 /* 241b8: 26100009 */ addiu $s0,$s0,0x9 /* 241bc: 10000005 */ b .L000241d4 /* 241c0: 018a8821 */ addu $s1,$t4,$t2 .L000241c4: /* 241c4: 306e0010 */ andi $t6,$v1,0x10 /* 241c8: 11c00002 */ beqz $t6,.L000241d4 /* 241cc: 00000000 */ nop /* 241d0: 26310060 */ addiu $s1,$s1,0x60 .L000241d4: /* 241d4: 11e00004 */ beqz $t7,.L000241e8 /* 241d8: 30780080 */ andi $t8,$v1,0x80 /* 241dc: 92190000 */ lbu $t9,0x0($s0) /* 241e0: 26100005 */ addiu $s0,$s0,0x5 /* 241e4: 02398821 */ addu $s1,$s1,$t9 .L000241e8: /* 241e8: 13000002 */ beqz $t8,.L000241f4 /* 241ec: 8fa80068 */ lw $t0,0x68($sp) /* 241f0: 26310060 */ addiu $s1,$s1,0x60 .L000241f4: /* 241f4: 24840001 */ addiu $a0,$a0,0x1 /* 241f8: 0088082a */ slt $at,$a0,$t0 /* 241fc: 10200003 */ beqz $at,.L0002420c /* 24200: 0205082b */ sltu $at,$s0,$a1 /* 24204: 5420ffc3 */ bnezl $at,.L00024114 /* 24208: 92030000 */ lbu $v1,0x0($s0) .L0002420c: /* 2420c: 0205082b */ sltu $at,$s0,$a1 .L00024210: /* 24210: 1020017f */ beqz $at,.L00024810 /* 24214: 8fa3007c */ lw $v1,0x7c($sp) /* 24218: 92020000 */ lbu $v0,0x0($s0) /* 2421c: 26100001 */ addiu $s0,$s0,0x1 /* 24220: 8fa40054 */ lw $a0,0x54($sp) /* 24224: 304b0002 */ andi $t3,$v0,0x2 /* 24228: 11600039 */ beqz $t3,.L00024310 /* 2422c: afa20028 */ sw $v0,0x28($sp) /* 24230: 92050002 */ lbu $a1,0x2($s0) /* 24234: 02203025 */ or $a2,$s1,$zero /* 24238: 0c008ff8 */ jal anim00023fe0 /* 2423c: a3a5005b */ sb $a1,0x5b($sp) /* 24240: 920d0001 */ lbu $t5,0x1($s0) /* 24244: 920a0000 */ lbu $t2,0x0($s0) /* 24248: 93a5005b */ lbu $a1,0x5b($sp) /* 2424c: 01a26021 */ addu $t4,$t5,$v0 /* 24250: 000a7200 */ sll $t6,$t2,0x8 /* 24254: 018e7821 */ addu $t7,$t4,$t6 /* 24258: 000fcc00 */ sll $t9,$t7,0x10 /* 2425c: 0019c403 */ sra $t8,$t9,0x10 /* 24260: 44982000 */ mtc1 $t8,$f4 /* 24264: 8fa80080 */ lw $t0,0x80($sp) /* 24268: 02258821 */ addu $s1,$s1,$a1 /* 2426c: 468021a0 */ cvt.s.w $f6,$f4 /* 24270: 02203025 */ or $a2,$s1,$zero /* 24274: e5060000 */ swc1 $f6,0x0($t0) /* 24278: 92050005 */ lbu $a1,0x5($s0) /* 2427c: 8fa40054 */ lw $a0,0x54($sp) /* 24280: 0c008ff8 */ jal anim00023fe0 /* 24284: a3a5005b */ sb $a1,0x5b($sp) /* 24288: 92090004 */ lbu $t1,0x4($s0) /* 2428c: 920d0003 */ lbu $t5,0x3($s0) /* 24290: 93a5005b */ lbu $a1,0x5b($sp) /* 24294: 01225821 */ addu $t3,$t1,$v0 /* 24298: 000d5200 */ sll $t2,$t5,0x8 /* 2429c: 016a6021 */ addu $t4,$t3,$t2 /* 242a0: 000c7400 */ sll $t6,$t4,0x10 /* 242a4: 000e7c03 */ sra $t7,$t6,0x10 /* 242a8: 448f4000 */ mtc1 $t7,$f8 /* 242ac: 8fa70080 */ lw $a3,0x80($sp) /* 242b0: 02258821 */ addu $s1,$s1,$a1 /* 242b4: 468042a0 */ cvt.s.w $f10,$f8 /* 242b8: 02203025 */ or $a2,$s1,$zero /* 242bc: e4ea0004 */ swc1 $f10,0x4($a3) /* 242c0: 92050008 */ lbu $a1,0x8($s0) /* 242c4: 8fa40054 */ lw $a0,0x54($sp) /* 242c8: 0c008ff8 */ jal anim00023fe0 /* 242cc: a3a5005b */ sb $a1,0x5b($sp) /* 242d0: 92190007 */ lbu $t9,0x7($s0) /* 242d4: 92080006 */ lbu $t0,0x6($s0) /* 242d8: 93a5005b */ lbu $a1,0x5b($sp) /* 242dc: 0322c021 */ addu $t8,$t9,$v0 /* 242e0: 00084a00 */ sll $t1,$t0,0x8 /* 242e4: 03096821 */ addu $t5,$t8,$t1 /* 242e8: 000d5c00 */ sll $t3,$t5,0x10 /* 242ec: 000b5403 */ sra $t2,$t3,0x10 /* 242f0: 448a8000 */ mtc1 $t2,$f16 /* 242f4: 8fa70080 */ lw $a3,0x80($sp) /* 242f8: 44800000 */ mtc1 $zero,$f0 /* 242fc: 468084a0 */ cvt.s.w $f18,$f16 /* 24300: 26100009 */ addiu $s0,$s0,0x9 /* 24304: 02258821 */ addu $s1,$s1,$a1 /* 24308: 10000064 */ b .L0002449c /* 2430c: e4f20008 */ swc1 $f18,0x8($a3) .L00024310: /* 24310: 8fac0028 */ lw $t4,0x28($sp) /* 24314: 8faf0028 */ lw $t7,0x28($sp) /* 24318: 8fa70080 */ lw $a3,0x80($sp) /* 2431c: 318e0020 */ andi $t6,$t4,0x20 /* 24320: 11c0004f */ beqz $t6,.L00024460 /* 24324: 31ed0008 */ andi $t5,$t7,0x8 /* 24328: 92050000 */ lbu $a1,0x0($s0) /* 2432c: 8fa40054 */ lw $a0,0x54($sp) /* 24330: 02203025 */ or $a2,$s1,$zero /* 24334: 0c008fd4 */ jal anim00023f50 /* 24338: a3a5005b */ sb $a1,0x5b($sp) /* 2433c: 92190001 */ lbu $t9,0x1($s0) /* 24340: 920f0004 */ lbu $t7,0x4($s0) /* 24344: 92090002 */ lbu $t1,0x2($s0) /* 24348: 920a0003 */ lbu $t2,0x3($s0) /* 2434c: 00194600 */ sll $t0,$t9,0x18 /* 24350: 01e8c021 */ addu $t8,$t7,$t0 /* 24354: 00096c00 */ sll $t5,$t1,0x10 /* 24358: 030d5821 */ addu $t3,$t8,$t5 /* 2435c: 000a6200 */ sll $t4,$t2,0x8 /* 24360: 016c7021 */ addu $t6,$t3,$t4 /* 24364: 01c2c821 */ addu $t9,$t6,$v0 /* 24368: 44992000 */ mtc1 $t9,$f4 /* 2436c: 3c017005 */ lui $at,%hi(var70054690) /* 24370: c4284690 */ lwc1 $f8,%lo(var70054690)($at) /* 24374: 468021a0 */ cvt.s.w $f6,$f4 /* 24378: 93a5005b */ lbu $a1,0x5b($sp) /* 2437c: 8fa70080 */ lw $a3,0x80($sp) /* 24380: 02258821 */ addu $s1,$s1,$a1 /* 24384: 02203025 */ or $a2,$s1,$zero /* 24388: 46083282 */ mul.s $f10,$f6,$f8 /* 2438c: e4ea0000 */ swc1 $f10,0x0($a3) /* 24390: 92050005 */ lbu $a1,0x5($s0) /* 24394: 8fa40054 */ lw $a0,0x54($sp) /* 24398: 0c008fd4 */ jal anim00023f50 /* 2439c: a3a5005b */ sb $a1,0x5b($sp) /* 243a0: 92080006 */ lbu $t0,0x6($s0) /* 243a4: 920f0009 */ lbu $t7,0x9($s0) /* 243a8: 920d0007 */ lbu $t5,0x7($s0) /* 243ac: 920c0008 */ lbu $t4,0x8($s0) /* 243b0: 00084e00 */ sll $t1,$t0,0x18 /* 243b4: 01e9c021 */ addu $t8,$t7,$t1 /* 243b8: 000d5400 */ sll $t2,$t5,0x10 /* 243bc: 030a5821 */ addu $t3,$t8,$t2 /* 243c0: 000c7200 */ sll $t6,$t4,0x8 /* 243c4: 016ec821 */ addu $t9,$t3,$t6 /* 243c8: 03224021 */ addu $t0,$t9,$v0 /* 243cc: 44888000 */ mtc1 $t0,$f16 /* 243d0: 3c017005 */ lui $at,%hi(var70054694) /* 243d4: c4244694 */ lwc1 $f4,%lo(var70054694)($at) /* 243d8: 468084a0 */ cvt.s.w $f18,$f16 /* 243dc: 93a5005b */ lbu $a1,0x5b($sp) /* 243e0: 8fa70080 */ lw $a3,0x80($sp) /* 243e4: 02258821 */ addu $s1,$s1,$a1 /* 243e8: 02203025 */ or $a2,$s1,$zero /* 243ec: 46049182 */ mul.s $f6,$f18,$f4 /* 243f0: e4e60004 */ swc1 $f6,0x4($a3) /* 243f4: 9205000a */ lbu $a1,0xa($s0) /* 243f8: 8fa40054 */ lw $a0,0x54($sp) /* 243fc: 0c008fd4 */ jal anim00023f50 /* 24400: a3a5005b */ sb $a1,0x5b($sp) /* 24404: 9209000b */ lbu $t1,0xb($s0) /* 24408: 920f000e */ lbu $t7,0xe($s0) /* 2440c: 920a000c */ lbu $t2,0xc($s0) /* 24410: 920e000d */ lbu $t6,0xd($s0) /* 24414: 00096e00 */ sll $t5,$t1,0x18 /* 24418: 01edc021 */ addu $t8,$t7,$t5 /* 2441c: 000a6400 */ sll $t4,$t2,0x10 /* 24420: 030c5821 */ addu $t3,$t8,$t4 /* 24424: 000eca00 */ sll $t9,$t6,0x8 /* 24428: 01794021 */ addu $t0,$t3,$t9 /* 2442c: 01024821 */ addu $t1,$t0,$v0 /* 24430: 44894000 */ mtc1 $t1,$f8 /* 24434: 3c017005 */ lui $at,%hi(var70054698) /* 24438: c4304698 */ lwc1 $f16,%lo(var70054698)($at) /* 2443c: 468042a0 */ cvt.s.w $f10,$f8 /* 24440: 93a5005b */ lbu $a1,0x5b($sp) /* 24444: 8fa70080 */ lw $a3,0x80($sp) /* 24448: 44800000 */ mtc1 $zero,$f0 /* 2444c: 2610000f */ addiu $s0,$s0,0xf /* 24450: 02258821 */ addu $s1,$s1,$a1 /* 24454: 46105482 */ mul.s $f18,$f10,$f16 /* 24458: 10000010 */ b .L0002449c /* 2445c: e4f20008 */ swc1 $f18,0x8($a3) .L00024460: /* 24460: 44800000 */ mtc1 $zero,$f0 /* 24464: 51a0000b */ beqzl $t5,.L00024494 /* 24468: e4e00008 */ swc1 $f0,0x8($a3) /* 2446c: 920a0002 */ lbu $t2,0x2($s0) /* 24470: 920c0005 */ lbu $t4,0x5($s0) /* 24474: 920b0008 */ lbu $t3,0x8($s0) /* 24478: 9208000b */ lbu $t0,0xb($s0) /* 2447c: 022ac021 */ addu $t8,$s1,$t2 /* 24480: 030c7021 */ addu $t6,$t8,$t4 /* 24484: 01cbc821 */ addu $t9,$t6,$t3 /* 24488: 2610000c */ addiu $s0,$s0,0xc /* 2448c: 03288821 */ addu $s1,$t9,$t0 /* 24490: e4e00008 */ swc1 $f0,0x8($a3) .L00024494: /* 24494: e4e00004 */ swc1 $f0,0x4($a3) /* 24498: e4e00000 */ swc1 $f0,0x0($a3) .L0002449c: /* 2449c: 8fa90028 */ lw $t1,0x28($sp) /* 244a0: 8fa80028 */ lw $t0,0x28($sp) /* 244a4: 8fa40054 */ lw $a0,0x54($sp) /* 244a8: 312f0001 */ andi $t7,$t1,0x1 /* 244ac: 11e0007d */ beqz $t7,.L000246a4 /* 244b0: 31190010 */ andi $t9,$t0,0x10 /* 244b4: 92050002 */ lbu $a1,0x2($s0) /* 244b8: 02203025 */ or $a2,$s1,$zero /* 244bc: 0c008fd4 */ jal anim00023f50 /* 244c0: a3a5005b */ sb $a1,0x5b($sp) /* 244c4: a7a2005c */ sh $v0,0x5c($sp) /* 244c8: 920a0000 */ lbu $t2,0x0($s0) /* 244cc: 920e0001 */ lbu $t6,0x1($s0) /* 244d0: 93b90053 */ lbu $t9,0x53($sp) /* 244d4: 000ac200 */ sll $t8,$t2,0x8 /* 244d8: 00586021 */ addu $t4,$v0,$t8 /* 244dc: 93a5005b */ lbu $a1,0x5b($sp) /* 244e0: 24080010 */ addiu $t0,$zero,0x10 /* 244e4: 018e5821 */ addu $t3,$t4,$t6 /* 244e8: 3169ffff */ andi $t1,$t3,0xffff /* 244ec: 01191823 */ subu $v1,$t0,$t9 /* 244f0: a7ab005c */ sh $t3,0x5c($sp) /* 244f4: 00697804 */ sllv $t7,$t1,$v1 /* 244f8: a7af005c */ sh $t7,0x5c($sp) /* 244fc: 02258821 */ addu $s1,$s1,$a1 /* 24500: 92050005 */ lbu $a1,0x5($s0) /* 24504: afa30024 */ sw $v1,0x24($sp) /* 24508: 02203025 */ or $a2,$s1,$zero /* 2450c: 8fa40054 */ lw $a0,0x54($sp) /* 24510: 0c008fd4 */ jal anim00023f50 /* 24514: a3a5005b */ sb $a1,0x5b($sp) /* 24518: a7a2005e */ sh $v0,0x5e($sp) /* 2451c: 920d0003 */ lbu $t5,0x3($s0) /* 24520: 920e0004 */ lbu $t6,0x4($s0) /* 24524: 8fb90024 */ lw $t9,0x24($sp) /* 24528: 000dc200 */ sll $t8,$t5,0x8 /* 2452c: 00586021 */ addu $t4,$v0,$t8 /* 24530: 93a5005b */ lbu $a1,0x5b($sp) /* 24534: 018e4021 */ addu $t0,$t4,$t6 /* 24538: 310bffff */ andi $t3,$t0,0xffff /* 2453c: a7a8005e */ sh $t0,0x5e($sp) /* 24540: 032b4804 */ sllv $t1,$t3,$t9 /* 24544: a7a9005e */ sh $t1,0x5e($sp) /* 24548: 02258821 */ addu $s1,$s1,$a1 /* 2454c: 92050008 */ lbu $a1,0x8($s0) /* 24550: 02203025 */ or $a2,$s1,$zero /* 24554: 8fa40054 */ lw $a0,0x54($sp) /* 24558: 0c008fd4 */ jal anim00023f50 /* 2455c: a3a5005b */ sb $a1,0x5b($sp) /* 24560: a7a20060 */ sh $v0,0x60($sp) /* 24564: 920d0006 */ lbu $t5,0x6($s0) /* 24568: 920c0007 */ lbu $t4,0x7($s0) /* 2456c: 97a9005c */ lhu $t1,0x5c($sp) /* 24570: 000d5200 */ sll $t2,$t5,0x8 /* 24574: 8fa80024 */ lw $t0,0x24($sp) /* 24578: 004ac021 */ addu $t8,$v0,$t2 /* 2457c: 3c014780 */ lui $at,0x4780 /* 24580: 030c7021 */ addu $t6,$t8,$t4 /* 24584: 93a5005b */ lbu $a1,0x5b($sp) /* 24588: 44892000 */ mtc1 $t1,$f4 /* 2458c: 44811000 */ mtc1 $at,$f2 /* 24590: 31cbffff */ andi $t3,$t6,0xffff /* 24594: 3c017005 */ lui $at,%hi(var7005469c) /* 24598: 44800000 */ mtc1 $zero,$f0 /* 2459c: a7ae0060 */ sh $t6,0x60($sp) /* 245a0: 010bc804 */ sllv $t9,$t3,$t0 /* 245a4: c42c469c */ lwc1 $f12,%lo(var7005469c)($at) /* 245a8: 8fa3007c */ lw $v1,0x7c($sp) /* 245ac: a7b90060 */ sh $t9,0x60($sp) /* 245b0: 02258821 */ addu $s1,$s1,$a1 /* 245b4: 05210005 */ bgez $t1,.L000245cc /* 245b8: 468021a0 */ cvt.s.w $f6,$f4 /* 245bc: 3c014f80 */ lui $at,0x4f80 /* 245c0: 44814000 */ mtc1 $at,$f8 /* 245c4: 00000000 */ nop /* 245c8: 46083180 */ add.s $f6,$f6,$f8 .L000245cc: /* 245cc: 460c3282 */ mul.s $f10,$f6,$f12 /* 245d0: 46025403 */ div.s $f16,$f10,$f2 /* 245d4: e4700000 */ swc1 $f16,0x0($v1) /* 245d8: 8fad006c */ lw $t5,0x6c($sp) /* 245dc: 97a2005e */ lhu $v0,0x5e($sp) /* 245e0: 97ae005e */ lhu $t6,0x5e($sp) /* 245e4: 51a0001a */ beqzl $t5,.L00024650 /* 245e8: 448e4000 */ mtc1 $t6,$f8 /* 245ec: 10400009 */ beqz $v0,.L00024614 /* 245f0: 3c0f0001 */ lui $t7,0x1 /* 245f4: 01e25023 */ subu $t2,$t7,$v0 /* 245f8: 448a9000 */ mtc1 $t2,$f18 /* 245fc: 00000000 */ nop /* 24600: 46809120 */ cvt.s.w $f4,$f18 /* 24604: 460c2202 */ mul.s $f8,$f4,$f12 /* 24608: 46024183 */ div.s $f6,$f8,$f2 /* 2460c: 10000002 */ b .L00024618 /* 24610: e4660004 */ swc1 $f6,0x4($v1) .L00024614: /* 24614: e4600004 */ swc1 $f0,0x4($v1) .L00024618: /* 24618: 97a20060 */ lhu $v0,0x60($sp) /* 2461c: 3c180001 */ lui $t8,0x1 /* 24620: 10400008 */ beqz $v0,.L00024644 /* 24624: 03026023 */ subu $t4,$t8,$v0 /* 24628: 448c5000 */ mtc1 $t4,$f10 /* 2462c: 00000000 */ nop /* 24630: 46805420 */ cvt.s.w $f16,$f10 /* 24634: 460c8482 */ mul.s $f18,$f16,$f12 /* 24638: 46029103 */ div.s $f4,$f18,$f2 /* 2463c: 10000051 */ b .L00024784 /* 24640: e4640008 */ swc1 $f4,0x8($v1) .L00024644: /* 24644: 1000004f */ b .L00024784 /* 24648: e4600008 */ swc1 $f0,0x8($v1) /* 2464c: 448e4000 */ mtc1 $t6,$f8 .L00024650: /* 24650: 3c014f80 */ lui $at,0x4f80 /* 24654: 05c10004 */ bgez $t6,.L00024668 /* 24658: 468041a0 */ cvt.s.w $f6,$f8 /* 2465c: 44815000 */ mtc1 $at,$f10 /* 24660: 00000000 */ nop /* 24664: 460a3180 */ add.s $f6,$f6,$f10 .L00024668: /* 24668: 460c3402 */ mul.s $f16,$f6,$f12 /* 2466c: 3c014f80 */ lui $at,0x4f80 /* 24670: 46028483 */ div.s $f18,$f16,$f2 /* 24674: e4720004 */ swc1 $f18,0x4($v1) /* 24678: 97ab0060 */ lhu $t3,0x60($sp) /* 2467c: 448b2000 */ mtc1 $t3,$f4 /* 24680: 05610004 */ bgez $t3,.L00024694 /* 24684: 46802220 */ cvt.s.w $f8,$f4 /* 24688: 44815000 */ mtc1 $at,$f10 /* 2468c: 00000000 */ nop /* 24690: 460a4200 */ add.s $f8,$f8,$f10 .L00024694: /* 24694: 460c4182 */ mul.s $f6,$f8,$f12 /* 24698: 46023403 */ div.s $f16,$f6,$f2 /* 2469c: 10000039 */ b .L00024784 /* 246a0: e4700008 */ swc1 $f16,0x8($v1) .L000246a4: /* 246a4: 13200034 */ beqz $t9,.L00024778 /* 246a8: 8fa3007c */ lw $v1,0x7c($sp) /* 246ac: 8fa40054 */ lw $a0,0x54($sp) /* 246b0: 24050020 */ addiu $a1,$zero,0x20 /* 246b4: 0c008fd4 */ jal anim00023f50 /* 246b8: 02203025 */ or $a2,$s1,$zero /* 246bc: 27b00038 */ addiu $s0,$sp,0x38 /* 246c0: afa20038 */ sw $v0,0x38($sp) /* 246c4: 8fa3007c */ lw $v1,0x7c($sp) /* 246c8: c6120000 */ lwc1 $f18,0x0($s0) /* 246cc: 26310020 */ addiu $s1,$s1,0x20 /* 246d0: 02203025 */ or $a2,$s1,$zero /* 246d4: e4720000 */ swc1 $f18,0x0($v1) /* 246d8: 8fa40054 */ lw $a0,0x54($sp) /* 246dc: 0c008fd4 */ jal anim00023f50 /* 246e0: 24050020 */ addiu $a1,$zero,0x20 /* 246e4: afa20038 */ sw $v0,0x38($sp) /* 246e8: 8fa3007c */ lw $v1,0x7c($sp) /* 246ec: c6040000 */ lwc1 $f4,0x0($s0) /* 246f0: 26310020 */ addiu $s1,$s1,0x20 /* 246f4: 02203025 */ or $a2,$s1,$zero /* 246f8: e4640004 */ swc1 $f4,0x4($v1) /* 246fc: 8fa40054 */ lw $a0,0x54($sp) /* 24700: 0c008fd4 */ jal anim00023f50 /* 24704: 24050020 */ addiu $a1,$zero,0x20 /* 24708: afa20038 */ sw $v0,0x38($sp) /* 2470c: 8fa3007c */ lw $v1,0x7c($sp) /* 24710: c60a0000 */ lwc1 $f10,0x0($s0) /* 24714: 44800000 */ mtc1 $zero,$f0 /* 24718: 26310020 */ addiu $s1,$s1,0x20 /* 2471c: e46a0008 */ swc1 $f10,0x8($v1) /* 24720: 8fa9006c */ lw $t1,0x6c($sp) /* 24724: 51200018 */ beqzl $t1,.L00024788 /* 24728: 8fad0028 */ lw $t5,0x28($sp) /* 2472c: c4620004 */ lwc1 $f2,0x4($v1) /* 24730: 3c017005 */ lui $at,%hi(var700546a0) /* 24734: 46020032 */ c.eq.s $f0,$f2 /* 24738: 00000000 */ nop /* 2473c: 45030005 */ bc1tl .L00024754 /* 24740: c4620008 */ lwc1 $f2,0x8($v1) /* 24744: c42c46a0 */ lwc1 $f12,%lo(var700546a0)($at) /* 24748: 46026201 */ sub.s $f8,$f12,$f2 /* 2474c: e4680004 */ swc1 $f8,0x4($v1) /* 24750: c4620008 */ lwc1 $f2,0x8($v1) .L00024754: /* 24754: 3c017005 */ lui $at,%hi(var700546a4) /* 24758: c42c46a4 */ lwc1 $f12,%lo(var700546a4)($at) /* 2475c: 46020032 */ c.eq.s $f0,$f2 /* 24760: 00000000 */ nop /* 24764: 45030008 */ bc1tl .L00024788 /* 24768: 8fad0028 */ lw $t5,0x28($sp) /* 2476c: 46026181 */ sub.s $f6,$f12,$f2 /* 24770: 10000004 */ b .L00024784 /* 24774: e4660008 */ swc1 $f6,0x8($v1) .L00024778: /* 24778: e4600008 */ swc1 $f0,0x8($v1) /* 2477c: e4600004 */ swc1 $f0,0x4($v1) /* 24780: e4600000 */ swc1 $f0,0x0($v1) .L00024784: /* 24784: 8fad0028 */ lw $t5,0x28($sp) .L00024788: /* 24788: 8fa40054 */ lw $a0,0x54($sp) /* 2478c: 8fb00084 */ lw $s0,0x84($sp) /* 24790: 31af0080 */ andi $t7,$t5,0x80 /* 24794: 11e00018 */ beqz $t7,.L000247f8 /* 24798: 3c013f80 */ lui $at,0x3f80 /* 2479c: 24050020 */ addiu $a1,$zero,0x20 /* 247a0: 0c008fd4 */ jal anim00023f50 /* 247a4: 02203025 */ or $a2,$s1,$zero /* 247a8: afa20034 */ sw $v0,0x34($sp) /* 247ac: 8fb00084 */ lw $s0,0x84($sp) /* 247b0: c7b00034 */ lwc1 $f16,0x34($sp) /* 247b4: 26310020 */ addiu $s1,$s1,0x20 /* 247b8: 02203025 */ or $a2,$s1,$zero /* 247bc: e6100000 */ swc1 $f16,0x0($s0) /* 247c0: 8fa40054 */ lw $a0,0x54($sp) /* 247c4: 0c008fd4 */ jal anim00023f50 /* 247c8: 24050020 */ addiu $a1,$zero,0x20 /* 247cc: afa20034 */ sw $v0,0x34($sp) /* 247d0: c7b20034 */ lwc1 $f18,0x34($sp) /* 247d4: 26260020 */ addiu $a2,$s1,0x20 /* 247d8: 24050020 */ addiu $a1,$zero,0x20 /* 247dc: e6120004 */ swc1 $f18,0x4($s0) /* 247e0: 0c008fd4 */ jal anim00023f50 /* 247e4: 8fa40054 */ lw $a0,0x54($sp) /* 247e8: afa20034 */ sw $v0,0x34($sp) /* 247ec: c7a40034 */ lwc1 $f4,0x34($sp) /* 247f0: 10000015 */ b .L00024848 /* 247f4: e6040008 */ swc1 $f4,0x8($s0) .L000247f8: /* 247f8: 44811000 */ mtc1 $at,$f2 /* 247fc: 00000000 */ nop /* 24800: e6020008 */ swc1 $f2,0x8($s0) /* 24804: e6020004 */ swc1 $f2,0x4($s0) /* 24808: 1000000f */ b .L00024848 /* 2480c: e6020000 */ swc1 $f2,0x0($s0) .L00024810: /* 24810: 8fa70080 */ lw $a3,0x80($sp) /* 24814: 8fb00084 */ lw $s0,0x84($sp) /* 24818: 44800000 */ mtc1 $zero,$f0 /* 2481c: 3c013f80 */ lui $at,0x3f80 /* 24820: 44811000 */ mtc1 $at,$f2 /* 24824: e4600008 */ swc1 $f0,0x8($v1) /* 24828: e4600004 */ swc1 $f0,0x4($v1) /* 2482c: e4600000 */ swc1 $f0,0x0($v1) /* 24830: e4e00000 */ swc1 $f0,0x0($a3) /* 24834: e4e00004 */ swc1 $f0,0x4($a3) /* 24838: e4e00008 */ swc1 $f0,0x8($a3) /* 2483c: e6020000 */ swc1 $f2,0x0($s0) /* 24840: e6020004 */ swc1 $f2,0x4($s0) /* 24844: e6020008 */ swc1 $f2,0x8($s0) .L00024848: /* 24848: 8fbf001c */ lw $ra,0x1c($sp) /* 2484c: 8fb00014 */ lw $s0,0x14($sp) /* 24850: 8fb10018 */ lw $s1,0x18($sp) /* 24854: 03e00008 */ jr $ra /* 24858: 27bd0068 */ addiu $sp,$sp,0x68 ); GLOBAL_ASM( glabel anim0002485c /* 2485c: 27bdffc8 */ addiu $sp,$sp,-56 /* 24860: 8fb80050 */ lw $t8,0x50($sp) /* 24864: 00077400 */ sll $t6,$a3,0x10 /* 24868: 000e7c03 */ sra $t7,$t6,0x10 /* 2486c: afb00018 */ sw $s0,0x18($sp) /* 24870: afa70044 */ sw $a3,0x44($sp) /* 24874: 01e03825 */ or $a3,$t7,$zero /* 24878: 00808025 */ or $s0,$a0,$zero /* 2487c: afbf001c */ sw $ra,0x1c($sp) /* 24880: afa5003c */ sw $a1,0x3c($sp) /* 24884: afa60040 */ sw $a2,0x40($sp) /* 24888: 1300000b */ beqz $t8,.L000248b8 /* 2488c: 00004025 */ or $t0,$zero,$zero /* 24890: 8fa2004c */ lw $v0,0x4c($sp) /* 24894: 3c198006 */ lui $t9,%hi(var8005f014) /* 24898: 000f4840 */ sll $t1,$t7,0x1 /* 2489c: a4400000 */ sh $zero,0x0($v0) /* 248a0: a4400002 */ sh $zero,0x2($v0) /* 248a4: 8f39f014 */ lw $t9,%lo(var8005f014)($t9) /* 248a8: 03295021 */ addu $t2,$t9,$t1 /* 248ac: 854b0000 */ lh $t3,0x0($t2) /* 248b0: 100000a7 */ b .L00024b50 /* 248b4: a44b0004 */ sh $t3,0x4($v0) .L000248b8: /* 248b8: 00072400 */ sll $a0,$a3,0x10 /* 248bc: 00046403 */ sra $t4,$a0,0x10 /* 248c0: 01802025 */ or $a0,$t4,$zero /* 248c4: 0c008f4e */ jal anim00023d38 /* 248c8: a7a70046 */ sh $a3,0x46($sp) /* 248cc: 87a40046 */ lh $a0,0x46($sp) /* 248d0: 0c008eac */ jal anim00023ab0 /* 248d4: 8fa50048 */ lw $a1,0x48($sp) /* 248d8: 0c008f43 */ jal anim00023d0c /* 248dc: a3a2002e */ sb $v0,0x2e($sp) /* 248e0: 93ae002e */ lbu $t6,0x2e($sp) /* 248e4: 3c0d800a */ lui $t5,%hi(var8009a874) /* 248e8: 8dada874 */ lw $t5,%lo(var8009a874)($t5) /* 248ec: 8fb9003c */ lw $t9,0x3c($sp) /* 248f0: 000e7880 */ sll $t7,$t6,0x2 /* 248f4: 01afc021 */ addu $t8,$t5,$t7 /* 248f8: 13200006 */ beqz $t9,.L00024914 /* 248fc: 8f070000 */ lw $a3,0x0($t8) /* 24900: 8fa90040 */ lw $t1,0x40($sp) /* 24904: 00105840 */ sll $t3,$s0,0x1 /* 24908: 8d2a0004 */ lw $t2,0x4($t1) /* 2490c: 014b6021 */ addu $t4,$t2,$t3 /* 24910: 91900001 */ lbu $s0,0x1($t4) .L00024914: /* 24914: 3c0d8006 */ lui $t5,%hi(var8005f010) /* 24918: 8dadf010 */ lw $t5,%lo(var8005f010)($t5) /* 2491c: 87ae0046 */ lh $t6,0x46($sp) /* 24920: 3c09800a */ lui $t1,%hi(var8009a888) /* 24924: 8d29a888 */ lw $t1,%lo(var8009a888)($t1) /* 24928: 01cd7821 */ addu $t7,$t6,$t5 /* 2492c: 91f80000 */ lbu $t8,0x0($t7) /* 24930: 00003025 */ or $a2,$zero,$zero /* 24934: 00002825 */ or $a1,$zero,$zero /* 24938: 0018c880 */ sll $t9,$t8,0x2 /* 2493c: 01395021 */ addu $t2,$t1,$t9 /* 24940: 1a00003d */ blez $s0,.L00024a38 /* 24944: 8d430000 */ lw $v1,0x0($t2) /* 24948: 90640000 */ lbu $a0,0x0($v1) .L0002494c: /* 2494c: 24a50001 */ addiu $a1,$a1,0x1 /* 24950: 24630001 */ addiu $v1,$v1,0x1 /* 24954: 308b0008 */ andi $t3,$a0,0x8 /* 24958: 1160000b */ beqz $t3,.L00024988 /* 2495c: 308a0002 */ andi $t2,$a0,0x2 /* 24960: 906c0002 */ lbu $t4,0x2($v1) /* 24964: 906d0005 */ lbu $t5,0x5($v1) /* 24968: 90780008 */ lbu $t8,0x8($v1) /* 2496c: 00cc7021 */ addu $t6,$a2,$t4 /* 24970: 9079000b */ lbu $t9,0xb($v1) /* 24974: 01cd7821 */ addu $t7,$t6,$t5 /* 24978: 01f84821 */ addu $t1,$t7,$t8 /* 2497c: 2463000c */ addiu $v1,$v1,0xc /* 24980: 10000014 */ b .L000249d4 /* 24984: 01393021 */ addu $a2,$t1,$t9 .L00024988: /* 24988: 11400009 */ beqz $t2,.L000249b0 /* 2498c: 30980020 */ andi $t8,$a0,0x20 /* 24990: 906b0002 */ lbu $t3,0x2($v1) /* 24994: 906e0005 */ lbu $t6,0x5($v1) /* 24998: 906f0008 */ lbu $t7,0x8($v1) /* 2499c: 00cb6021 */ addu $t4,$a2,$t3 /* 249a0: 018e6821 */ addu $t5,$t4,$t6 /* 249a4: 24630009 */ addiu $v1,$v1,0x9 /* 249a8: 1000000a */ b .L000249d4 /* 249ac: 01af3021 */ addu $a2,$t5,$t7 .L000249b0: /* 249b0: 53000009 */ beqzl $t8,.L000249d8 /* 249b4: 308e0001 */ andi $t6,$a0,0x1 /* 249b8: 90690000 */ lbu $t1,0x0($v1) /* 249bc: 906a0005 */ lbu $t2,0x5($v1) /* 249c0: 906c000a */ lbu $t4,0xa($v1) /* 249c4: 00c9c821 */ addu $t9,$a2,$t1 /* 249c8: 032a5821 */ addu $t3,$t9,$t2 /* 249cc: 2463000f */ addiu $v1,$v1,0xf /* 249d0: 016c3021 */ addu $a2,$t3,$t4 .L000249d4: /* 249d4: 308e0001 */ andi $t6,$a0,0x1 .L000249d8: /* 249d8: 11c00009 */ beqz $t6,.L00024a00 /* 249dc: 308b0040 */ andi $t3,$a0,0x40 /* 249e0: 906d0002 */ lbu $t5,0x2($v1) /* 249e4: 90780005 */ lbu $t8,0x5($v1) /* 249e8: 90790008 */ lbu $t9,0x8($v1) /* 249ec: 00cd7821 */ addu $t7,$a2,$t5 /* 249f0: 01f84821 */ addu $t1,$t7,$t8 /* 249f4: 24630009 */ addiu $v1,$v1,0x9 /* 249f8: 10000005 */ b .L00024a10 /* 249fc: 01393021 */ addu $a2,$t1,$t9 .L00024a00: /* 24a00: 308a0010 */ andi $t2,$a0,0x10 /* 24a04: 11400002 */ beqz $t2,.L00024a10 /* 24a08: 00000000 */ nop /* 24a0c: 24c60060 */ addiu $a2,$a2,0x60 .L00024a10: /* 24a10: 11600004 */ beqz $t3,.L00024a24 /* 24a14: 308e0080 */ andi $t6,$a0,0x80 /* 24a18: 906c0000 */ lbu $t4,0x0($v1) /* 24a1c: 24630005 */ addiu $v1,$v1,0x5 /* 24a20: 00cc3021 */ addu $a2,$a2,$t4 .L00024a24: /* 24a24: 11c00002 */ beqz $t6,.L00024a30 /* 24a28: 00000000 */ nop /* 24a2c: 24c60060 */ addiu $a2,$a2,0x60 .L00024a30: /* 24a30: 54b0ffc6 */ bnel $a1,$s0,.L0002494c /* 24a34: 90640000 */ lbu $a0,0x0($v1) .L00024a38: /* 24a38: 90650003 */ lbu $a1,0x3($v1) /* 24a3c: afa70028 */ sw $a3,0x28($sp) /* 24a40: afa60030 */ sw $a2,0x30($sp) /* 24a44: afa30024 */ sw $v1,0x24($sp) /* 24a48: 00e02025 */ or $a0,$a3,$zero /* 24a4c: 0c008ff8 */ jal anim00023fe0 /* 24a50: a3a5002f */ sb $a1,0x2f($sp) /* 24a54: 8fa30024 */ lw $v1,0x24($sp) /* 24a58: 93a5002f */ lbu $a1,0x2f($sp) /* 24a5c: 8fa60030 */ lw $a2,0x30($sp) /* 24a60: 906d0002 */ lbu $t5,0x2($v1) /* 24a64: 90780001 */ lbu $t8,0x1($v1) /* 24a68: 8faa004c */ lw $t2,0x4c($sp) /* 24a6c: 01a27821 */ addu $t7,$t5,$v0 /* 24a70: 00184a00 */ sll $t1,$t8,0x8 /* 24a74: 01e9c821 */ addu $t9,$t7,$t1 /* 24a78: 00c53021 */ addu $a2,$a2,$a1 /* 24a7c: a5590000 */ sh $t9,0x0($t2) /* 24a80: 90650006 */ lbu $a1,0x6($v1) /* 24a84: afa60030 */ sw $a2,0x30($sp) /* 24a88: 8fa40028 */ lw $a0,0x28($sp) /* 24a8c: 0c008ff8 */ jal anim00023fe0 /* 24a90: a3a5002f */ sb $a1,0x2f($sp) /* 24a94: 8fa30024 */ lw $v1,0x24($sp) /* 24a98: 93a5002f */ lbu $a1,0x2f($sp) /* 24a9c: 8fa60030 */ lw $a2,0x30($sp) /* 24aa0: 906b0005 */ lbu $t3,0x5($v1) /* 24aa4: 906e0004 */ lbu $t6,0x4($v1) /* 24aa8: 8fb0004c */ lw $s0,0x4c($sp) /* 24aac: 01626021 */ addu $t4,$t3,$v0 /* 24ab0: 000e6a00 */ sll $t5,$t6,0x8 /* 24ab4: 018dc021 */ addu $t8,$t4,$t5 /* 24ab8: 00c53021 */ addu $a2,$a2,$a1 /* 24abc: a6180002 */ sh $t8,0x2($s0) /* 24ac0: 90650009 */ lbu $a1,0x9($v1) /* 24ac4: afa60030 */ sw $a2,0x30($sp) /* 24ac8: 8fa40028 */ lw $a0,0x28($sp) /* 24acc: 0c008ff8 */ jal anim00023fe0 /* 24ad0: a3a5002f */ sb $a1,0x2f($sp) /* 24ad4: 8fa30024 */ lw $v1,0x24($sp) /* 24ad8: 93a5002f */ lbu $a1,0x2f($sp) /* 24adc: 8fa60030 */ lw $a2,0x30($sp) /* 24ae0: 906f0008 */ lbu $t7,0x8($v1) /* 24ae4: 90790007 */ lbu $t9,0x7($v1) /* 24ae8: 00c53021 */ addu $a2,$a2,$a1 /* 24aec: 01e24821 */ addu $t1,$t7,$v0 /* 24af0: 00195200 */ sll $t2,$t9,0x8 /* 24af4: 012a5821 */ addu $t3,$t1,$t2 /* 24af8: a60b0004 */ sh $t3,0x4($s0) /* 24afc: 8fa40028 */ lw $a0,0x28($sp) /* 24b00: 0c008ff8 */ jal anim00023fe0 /* 24b04: 9065000c */ lbu $a1,0xc($v1) /* 24b08: 8fa30024 */ lw $v1,0x24($sp) /* 24b0c: 8fb9003c */ lw $t9,0x3c($sp) /* 24b10: 906e000b */ lbu $t6,0xb($v1) /* 24b14: 906d000a */ lbu $t5,0xa($v1) /* 24b18: 01c26021 */ addu $t4,$t6,$v0 /* 24b1c: 000dc200 */ sll $t8,$t5,0x8 /* 24b20: 01984021 */ addu $t0,$t4,$t8 /* 24b24: 310fffff */ andi $t7,$t0,0xffff /* 24b28: 13200009 */ beqz $t9,.L00024b50 /* 24b2c: 01e04025 */ or $t0,$t7,$zero /* 24b30: 86090000 */ lh $t1,0x0($s0) /* 24b34: 3c0b0001 */ lui $t3,0x1 /* 24b38: 00095023 */ negu $t2,$t1 /* 24b3c: 11e00004 */ beqz $t7,.L00024b50 /* 24b40: a60a0000 */ sh $t2,0x0($s0) /* 24b44: 016f4023 */ subu $t0,$t3,$t7 /* 24b48: 310effff */ andi $t6,$t0,0xffff /* 24b4c: 01c04025 */ or $t0,$t6,$zero .L00024b50: /* 24b50: 8fbf001c */ lw $ra,0x1c($sp) /* 24b54: 8fb00018 */ lw $s0,0x18($sp) /* 24b58: 27bd0038 */ addiu $sp,$sp,0x38 /* 24b5c: 03e00008 */ jr $ra /* 24b60: 01001025 */ or $v0,$t0,$zero ); f32 anim00024b64(u32 arg0, u32 arg1, struct skeleton *arg2, s16 animnum, u32 arg4, struct coord *coord, u32 arg6) { s16 sp30[3]; f32 value = anim0002485c(arg0, arg1, arg2, animnum, arg4, sp30, arg6); coord->x = sp30[0]; coord->y = sp30[1]; coord->z = sp30[2]; return (value * M_BADTAU) / 65536.0f; } f32 anim00024c14(s32 arg0, s16 animnum, u8 arg2) { u32 stack[2]; u8 *sp24 = var8009a874[arg2]; u8 *ptr = (u8 *)var8009a888[var8005f010[animnum]]; f32 result = 0; s32 total = 0; s32 i; u8 *end = ptr + g_Anims[animnum].headerlen; for (i = 0; i < arg0 && ptr < end; i++) { u8 flags = ptr[0]; ptr++; if (flags & ANIMHEADERFLAG_08) { total += ptr[2] + ptr[5] + ptr[8] + ptr[11]; ptr += 12; } else if (flags & ANIMHEADERFLAG_02) { total += ptr[2] + ptr[5] + ptr[8]; ptr += 9; } else if (flags & ANIMHEADERFLAG_20) { total += ptr[0] + ptr[5] + ptr[10]; ptr += 15; } if (flags & ANIMHEADERFLAG_01) { total += ptr[2] + ptr[5] + ptr[8]; ptr += 9; } else if (flags & ANIMHEADERFLAG_10) { total += 0x60; } if (flags & ANIMHEADERFLAG_40) { total += ptr[0]; ptr += 5; } if (flags & ANIMHEADERFLAG_80) { total += 0x60; } } if (ptr < end) { u8 flags = ptr[0]; ptr++; if (flags & ANIMHEADERFLAG_40) { total = anim00023f50(sp24, ptr[0], total); result = (total + ptr[1] * 0x1000000 + ptr[2] * 0x10000 + ptr[3] * 0x100 + ptr[4]) * 0.001f; } } return result; }