Decompile chrTickAnim

This commit is contained in:
Ryan Dwyer 2020-02-22 00:19:19 +10:00
parent 9821b05dfd
commit 6296ff49a8
3 changed files with 59 additions and 164 deletions

View File

@ -16261,169 +16261,51 @@ void chrTickKneel(struct chrdata *chr)
}
}
GLOBAL_ASM(
glabel chrTickAnim
/* f03c91c: 27bdffa8 */ addiu $sp,$sp,-88
/* f03c920: afbf004c */ sw $ra,0x4c($sp)
/* f03c924: afb00048 */ sw $s0,0x48($sp)
/* f03c928: 8c8e0014 */ lw $t6,0x14($a0)
/* f03c92c: 00808025 */ or $s0,$a0,$zero
/* f03c930: 000e7a80 */ sll $t7,$t6,0xa
/* f03c934: 05e3001e */ bgezl $t7,.L0f03c9b0
/* f03c938: 8e080030 */ lw $t0,0x30($s0)
/* f03c93c: 0c0076e5 */ jal func0001db94
/* f03c940: 8c840020 */ lw $a0,0x20($a0)
/* f03c944: 54400087 */ bnezl $v0,.L0f03cb64
/* f03c948: 8fbf004c */ lw $ra,0x4c($sp)
/* f03c94c: c6040054 */ lwc1 $f4,0x54($s0)
/* f03c950: 8e040020 */ lw $a0,0x20($s0)
/* f03c954: 86050048 */ lh $a1,0x48($s0)
/* f03c958: 9206004a */ lbu $a2,0x4a($s0)
/* f03c95c: 8e07004c */ lw $a3,0x4c($s0)
/* f03c960: e7a40010 */ swc1 $f4,0x10($sp)
/* f03c964: c6060058 */ lwc1 $f6,0x58($s0)
/* f03c968: 0c007733 */ jal func0001dccc
/* f03c96c: e7a60014 */ swc1 $f6,0x14($sp)
/* f03c970: c6000050 */ lwc1 $f0,0x50($s0)
/* f03c974: 44804000 */ mtc1 $zero,$f8
/* f03c978: 00000000 */ sll $zero,$zero,0x0
/* f03c97c: 4600403e */ c.le.s $f8,$f0
/* f03c980: 00000000 */ sll $zero,$zero,0x0
/* f03c984: 45020005 */ bc1fl .L0f03c99c
/* f03c988: 8e180014 */ lw $t8,0x14($s0)
/* f03c98c: 44050000 */ mfc1 $a1,$f0
/* f03c990: 0c007787 */ jal func0001de1c
/* f03c994: 8e040020 */ lw $a0,0x20($s0)
/* f03c998: 8e180014 */ lw $t8,0x14($s0)
.L0f03c99c:
/* f03c99c: 3c01ffdf */ lui $at,0xffdf
/* f03c9a0: 3421ffff */ ori $at,$at,0xffff
/* f03c9a4: 0301c824 */ and $t9,$t8,$at
/* f03c9a8: ae190014 */ sw $t9,0x14($s0)
/* f03c9ac: 8e080030 */ lw $t0,0x30($s0)
.L0f03c9b0:
/* f03c9b0: 5500000e */ bnezl $t0,.L0f03c9ec
/* f03c9b4: 92090040 */ lbu $t1,0x40($s0)
/* f03c9b8: 0c00745f */ jal func0001d17c
/* f03c9bc: 8e040020 */ lw $a0,0x20($s0)
/* f03c9c0: e7a00054 */ swc1 $f0,0x54($sp)
/* f03c9c4: 0c007468 */ jal func0001d1a0
/* f03c9c8: 8e040020 */ lw $a0,0x20($s0)
/* f03c9cc: c7aa0054 */ lwc1 $f10,0x54($sp)
/* f03c9d0: 460a003e */ c.le.s $f0,$f10
/* f03c9d4: 00000000 */ sll $zero,$zero,0x0
/* f03c9d8: 45020004 */ bc1fl .L0f03c9ec
/* f03c9dc: 92090040 */ lbu $t1,0x40($s0)
/* f03c9e0: 0fc0baaf */ jal chrStand
/* f03c9e4: 02002025 */ or $a0,$s0,$zero
/* f03c9e8: 92090040 */ lbu $t1,0x40($s0)
.L0f03c9ec:
/* f03c9ec: 11200011 */ beqz $t1,.L0f03ca34
/* f03c9f0: 00000000 */ sll $zero,$zero,0x0
/* f03c9f4: 0c00745f */ jal func0001d17c
/* f03c9f8: 8e040020 */ lw $a0,0x20($s0)
/* f03c9fc: 960a0042 */ lhu $t2,0x42($s0)
/* f03ca00: 02002025 */ or $a0,$s0,$zero
/* f03ca04: 448a8000 */ mtc1 $t2,$f16
/* f03ca08: 00000000 */ sll $zero,$zero,0x0
/* f03ca0c: 468084a0 */ cvt.s.w $f18,$f16
/* f03ca10: 4600903e */ c.le.s $f18,$f0
/* f03ca14: 00000000 */ sll $zero,$zero,0x0
/* f03ca18: 45000006 */ bc1f .L0f03ca34
/* f03ca1c: 00000000 */ sll $zero,$zero,0x0
/* f03ca20: a2000040 */ sb $zero,0x40($s0)
/* f03ca24: 96050044 */ lhu $a1,0x44($s0)
/* f03ca28: 96060046 */ lhu $a2,0x46($s0)
/* f03ca2c: 0fc0ee91 */ jal func0f03ba44
/* f03ca30: 92070041 */ lbu $a3,0x41($s0)
.L0f03ca34:
/* f03ca34: 12000003 */ beqz $s0,.L0f03ca44
/* f03ca38: 00001025 */ or $v0,$zero,$zero
/* f03ca3c: 10000001 */ beqz $zero,.L0f03ca44
/* f03ca40: 920202fe */ lbu $v0,0x2fe($s0)
.L0f03ca44:
/* f03ca44: 5440002e */ bnezl $v0,.L0f03cb00
/* f03ca48: 820f0008 */ lb $t7,0x8($s0)
/* f03ca4c: 0c00744f */ jal func0001d13c
/* f03ca50: 8e040020 */ lw $a0,0x20($s0)
/* f03ca54: 2401009f */ addiu $at,$zero,0x9f
/* f03ca58: 54410029 */ bnel $v0,$at,.L0f03cb00
/* f03ca5c: 820f0008 */ lb $t7,0x8($s0)
/* f03ca60: 0c00745f */ jal func0001d17c
/* f03ca64: 8e040020 */ lw $a0,0x20($s0)
/* f03ca68: 3c014228 */ lui $at,0x4228
/* f03ca6c: 44812000 */ mtc1 $at,$f4
/* f03ca70: 3c0b800a */ lui $t3,0x800a
/* f03ca74: 4600203e */ c.le.s $f4,$f0
/* f03ca78: 00000000 */ sll $zero,$zero,0x0
/* f03ca7c: 45020020 */ bc1fl .L0f03cb00
/* f03ca80: 820f0008 */ lb $t7,0x8($s0)
/* f03ca84: 8d6b9fcc */ lw $t3,-0x6034($t3)
/* f03ca88: 316c0001 */ andi $t4,$t3,0x1
/* f03ca8c: 5580001c */ bnezl $t4,.L0f03cb00
/* f03ca90: 820f0008 */ lb $t7,0x8($s0)
/* f03ca94: 0fc1248a */ jal chrGetDistanceToCurrentPlayer
/* f03ca98: 02002025 */ or $a0,$s0,$zero
/* f03ca9c: 3c014448 */ lui $at,0x4448
/* f03caa0: 44813000 */ mtc1 $at,$f6
/* f03caa4: 3c01bf80 */ lui $at,0xbf80
/* f03caa8: 00002025 */ or $a0,$zero,$zero
/* f03caac: 4606003c */ c.lt.s $f0,$f6
/* f03cab0: 24060037 */ addiu $a2,$zero,0x37
/* f03cab4: 2407ffff */ addiu $a3,$zero,-1
/* f03cab8: 240dffff */ addiu $t5,$zero,-1
/* f03cabc: 4500000f */ bc1f .L0f03cafc
/* f03cac0: 240effff */ addiu $t6,$zero,-1
/* f03cac4: 8e05001c */ lw $a1,0x1c($s0)
/* f03cac8: 44810000 */ mtc1 $at,$f0
/* f03cacc: afae002c */ sw $t6,0x2c($sp)
/* f03cad0: afa00028 */ sw $zero,0x28($sp)
/* f03cad4: afa00020 */ sw $zero,0x20($sp)
/* f03cad8: afa0001c */ sw $zero,0x1c($sp)
/* f03cadc: afa00018 */ sw $zero,0x18($sp)
/* f03cae0: afa00014 */ sw $zero,0x14($sp)
/* f03cae4: afad0010 */ sw $t5,0x10($sp)
/* f03cae8: e7a00024 */ swc1 $f0,0x24($sp)
/* f03caec: e7a00030 */ swc1 $f0,0x30($sp)
/* f03caf0: e7a00034 */ swc1 $f0,0x34($sp)
/* f03caf4: 0fc24e7e */ jal func0f0939f8
/* f03caf8: e7a00038 */ swc1 $f0,0x38($sp)
.L0f03cafc:
/* f03cafc: 820f0008 */ lb $t7,0x8($s0)
.L0f03cb00:
/* f03cb00: 1de0000b */ bgtz $t7,.L0f03cb30
/* f03cb04: 00000000 */ sll $zero,$zero,0x0
/* f03cb08: 8e180038 */ lw $t8,0x38($s0)
/* f03cb0c: 13000008 */ beqz $t8,.L0f03cb30
/* f03cb10: 00000000 */ sll $zero,$zero,0x0
/* f03cb14: 0c004b70 */ jal random
/* f03cb18: 00000000 */ sll $zero,$zero,0x0
/* f03cb1c: 24010005 */ addiu $at,$zero,0x5
/* f03cb20: 0041001b */ divu $zero,$v0,$at
/* f03cb24: 0000c810 */ mfhi $t9
/* f03cb28: 2728000e */ addiu $t0,$t9,0xe
/* f03cb2c: a2080008 */ sb $t0,0x8($s0)
.L0f03cb30:
/* f03cb30: 0c00744f */ jal func0001d13c
/* f03cb34: 8e040020 */ lw $a0,0x20($s0)
/* f03cb38: 24010209 */ addiu $at,$zero,0x209
/* f03cb3c: 14410008 */ bne $v0,$at,.L0f03cb60
/* f03cb40: 02002025 */ or $a0,$s0,$zero
/* f03cb44: 00002825 */ or $a1,$zero,$zero
/* f03cb48: 0fc0fe12 */ jal chrSetFiring
/* f03cb4c: 00003025 */ or $a2,$zero,$zero
/* f03cb50: 02002025 */ or $a0,$s0,$zero
/* f03cb54: 24050001 */ addiu $a1,$zero,0x1
/* f03cb58: 0fc0fe12 */ jal chrSetFiring
/* f03cb5c: 00003025 */ or $a2,$zero,$zero
.L0f03cb60:
/* f03cb60: 8fbf004c */ lw $ra,0x4c($sp)
.L0f03cb64:
/* f03cb64: 8fb00048 */ lw $s0,0x48($sp)
/* f03cb68: 27bd0058 */ addiu $sp,$sp,0x58
/* f03cb6c: 03e00008 */ jr $ra
/* f03cb70: 00000000 */ sll $zero,$zero,0x0
);
void chrTickAnim(struct chrdata *chr)
{
if (chr->hidden & CHRHFLAG_00200000) {
if (func0001db94(chr->unk020)) {
return;
}
func0001dccc(chr->unk020, chr->act_anim.animnum, chr->act_anim.flip,
chr->act_anim.startframe, chr->act_anim.unk054, chr->act_anim.unk058);
if (chr->act_anim.unk050 >= 0) {
func0001de1c(chr->unk020, chr->act_anim.unk050);
}
chr->hidden &= ~CHRHFLAG_00200000;
}
if (chr->act_anim.unk030 == 0 && func0001d17c(chr->unk020) >= func0001d1a0(chr->unk020)) {
chrStand(chr);
}
if (chr->act_anim.unk040 != 0 && func0001d17c(chr->unk020) >= (s32)chr->act_anim.unk042) {
chr->act_anim.unk040 = 0;
func0f03ba44(chr, chr->act_anim.unk044, chr->act_anim.unk046, chr->act_anim.unk041);
}
// Play sneezing sound
if (CHRRACE(chr) == RACE_HUMAN
&& func0001d13c(chr->unk020) == ANIM_SNEEZE
&& func0001d17c(chr->unk020) >= 42
&& (g_Vars.lvframenum & 1) == 0
&& chrGetDistanceToCurrentPlayer(chr) < 800) {
func0f0939f8(NULL, chr->prop, 0x37, -1,
-1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
}
if (chr->sleep <= 0 && chr->act_anim.unk038 != 0) {
chr->sleep = 14 + (random() % 5);
}
if (func0001d13c(chr->unk020) == ANIM_RELOAD_0209) {
chrSetFiring(chr, 0, false);
chrSetFiring(chr, 1, false);
}
}
void chrTickSurrender(struct chrdata *chr)
{

View File

@ -105,7 +105,7 @@ u32 func0f03aca0(struct chrdata *chr, u32 arg1, u32 arg2);
u32 func0f03afac(struct chrdata *chr);
u32 func0f03b1e0(struct chrdata *chr);
u32 func0f03b97c(struct chrdata *chr, u32 arg1, u32 arg2);
u32 func0f03ba44(void);
void func0f03ba44(struct chrdata *chr, u32 arg1, u32 arg2, u32 arg3);
u32 chrTryPunchOrKick(struct chrdata *chr, u32 arg1);
u32 func0f03c044(void);
void chrTickStand(struct chrdata *chr);

View File

@ -345,6 +345,19 @@ struct act_anim {
/*0x2c*/ u32 unk02c;
/*0x30*/ u32 unk030;
/*0x34*/ u32 unk034;
/*0x38*/ u32 unk038;
/*0x3c*/ u32 unk03c;
/*0x40*/ u8 unk040;
/*0x41*/ u8 unk041;
/*0x42*/ u16 unk042;
/*0x44*/ u16 unk044;
/*0x46*/ u16 unk046;
/*0x48*/ s16 animnum;
/*0x4a*/ u8 flip;
/*0x4c*/ f32 startframe;
/*0x50*/ f32 unk050;
/*0x54*/ f32 unk054;
/*0x58*/ f32 unk058;
};
struct act_die {