diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 84376881b..4e2f0db7d 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -33963,50 +33963,25 @@ glabel func0f03b1e0 /* f03b5ec: 27bd02b8 */ addiu $sp,$sp,0x2b8 ); -GLOBAL_ASM( -glabel func0f03b5f0 -/* f03b5f0: 27bdffe0 */ addiu $sp,$sp,-32 -/* f03b5f4: afb00018 */ sw $s0,0x18($sp) -/* f03b5f8: 00808025 */ or $s0,$a0,$zero -/* f03b5fc: afbf001c */ sw $ra,0x1c($sp) -/* f03b600: 10800003 */ beqz $a0,.L0f03b610 -/* f03b604: afa50024 */ sw $a1,0x24($sp) -/* f03b608: 10000002 */ beqz $zero,.L0f03b614 -/* f03b60c: 908202fe */ lbu $v0,0x2fe($a0) -.L0f03b610: -/* f03b610: 00001025 */ or $v0,$zero,$zero -.L0f03b614: -/* f03b614: 54400016 */ bnezl $v0,.L0f03b670 -/* f03b618: 00001025 */ or $v0,$zero,$zero -/* f03b61c: 0fc0e686 */ jal func0f039a18 -/* f03b620: 02002025 */ or $a0,$s0,$zero -/* f03b624: 10400011 */ beqz $v0,.L0f03b66c -/* f03b628: 02002025 */ or $a0,$s0,$zero -/* f03b62c: 0fc1258b */ jal padResolve -/* f03b630: 8fa50024 */ lw $a1,0x24($sp) -/* f03b634: 0440000d */ bltz $v0,.L0f03b66c -/* f03b638: 00402025 */ or $a0,$v0,$zero -/* f03b63c: 0fc1a070 */ jal func0f0681c0 -/* f03b640: 00000000 */ sll $zero,$zero,0x0 -/* f03b644: 10400009 */ beqz $v0,.L0f03b66c -/* f03b648: 00402025 */ or $a0,$v0,$zero -/* f03b64c: 0fc21a6a */ jal func0f0869a8 -/* f03b650: 00000000 */ sll $zero,$zero,0x0 -/* f03b654: 50400006 */ beqzl $v0,.L0f03b670 -/* f03b658: 00001025 */ or $v0,$zero,$zero -/* f03b65c: 0fc0bbff */ jal func0f02effc -/* f03b660: 02002025 */ or $a0,$s0,$zero -/* f03b664: 10000002 */ beqz $zero,.L0f03b670 -/* f03b668: 24020001 */ addiu $v0,$zero,0x1 -.L0f03b66c: -/* f03b66c: 00001025 */ or $v0,$zero,$zero -.L0f03b670: -/* f03b670: 8fbf001c */ lw $ra,0x1c($sp) -/* f03b674: 8fb00018 */ lw $s0,0x18($sp) -/* f03b678: 27bd0020 */ addiu $sp,$sp,0x20 -/* f03b67c: 03e00008 */ jr $ra -/* f03b680: 00000000 */ sll $zero,$zero,0x0 -); +bool func0f03b5f0(struct chrdata *chr, s32 pad_id) +{ + s32 race = chr ? chr->race : 0; + + if (race == 0 && func0f039a18(chr)) { + pad_id = padResolve(chr, pad_id); + + if (pad_id >= 0) { + struct defaultobj *obj = func0f0681c0(pad_id); + + if (obj && func0f0869a8(obj)) { + func0f02effc(chr); + return true; + } + } + } + + return false; +} GLOBAL_ASM( glabel func0f03b684 diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 69bb5421f..ccf9b13ba 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -143,7 +143,7 @@ void func0f02ed5c(struct chrdata *chr); void func0f02ed88(struct chrdata *chr); void func0f02eecc(struct chrdata *chr); u32 func0f02ef40(void); -u32 func0f02effc(void); +void func0f02effc(struct chrdata *chr); u32 func0f02f070(void); u32 func0f02f288(void); u32 func0f02f314(void); @@ -264,7 +264,7 @@ bool func0f03aef0(struct chrdata *chr); bool func0f03af44(struct chrdata *chr, u32 anim_id, float fstartframe, float fendframe, u8 flags, u32 transition, float result); u32 func0f03afac(struct chrdata *chr); u32 func0f03b1e0(struct chrdata *chr); -u32 func0f03b5f0(struct chrdata *chr, s32 arg1); +bool func0f03b5f0(struct chrdata *chr, s32 pad_id); u32 func0f03b684(struct chrdata *chr, u32 thingtype, u32 thingid); u32 func0f03b97c(struct chrdata *chr, u32 arg1, u32 arg2); u32 func0f03ba44(void); diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index 9da3f1f2f..867737223 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -51,7 +51,7 @@ u32 func0f067d88(void); u32 func0f067dc4(void); u32 func0f068018(void); u32 func0f06803c(void); -u32 func0f0681c0(void); +struct defaultobj *func0f0681c0(s32 pad_id); u32 func0f068218(void); u32 func0f0682dc(void); u32 func0f0682fc(void);