From 9f31be273e8c6aa0e78928004f473bd4f599e6ba Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 25 Jan 2020 15:16:51 +1000 Subject: [PATCH] Decompile liftFindByPad --- src/game/chr/chr.c | 2 +- src/game/game_066310.c | 38 ++++++++++------------------------ src/include/game/game_066310.h | 2 +- src/include/types.h | 2 +- 4 files changed, 14 insertions(+), 30 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index dbc09a36a..f915d0293 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -45201,7 +45201,7 @@ glabel func0f046648 /* f046660: afa700ac */ sw $a3,0xac($sp) /* f046664: 87a400b2 */ lh $a0,0xb2($sp) /* f046668: afa00044 */ sw $zero,0x44($sp) -/* f04666c: 0fc1c396 */ jal func0f070e58 +/* f04666c: 0fc1c396 */ jal liftFindByPad /* f046670: afa0009c */ sw $zero,0x9c($sp) /* f046674: 8fa30044 */ lw $v1,0x44($sp) /* f046678: 8fa8009c */ lw $t0,0x9c($sp) diff --git a/src/game/game_066310.c b/src/game/game_066310.c index bfef84d99..3ce9b9b6a 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -13533,33 +13533,17 @@ void liftActivate(struct prop *prop, u8 liftnum) } } -GLOBAL_ASM( -glabel func0f070e58 -/* f070e58: 27bdff90 */ addiu $sp,$sp,-112 -/* f070e5c: afbf0014 */ sw $ra,0x14($sp) -/* f070e60: afa40070 */ sw $a0,0x70($sp) -/* f070e64: 00047400 */ sll $t6,$a0,0x10 -/* f070e68: 000e2403 */ sra $a0,$t6,0x10 -/* f070e6c: 27a6001c */ addiu $a2,$sp,0x1c -/* f070e70: 0fc456ac */ jal padUnpack -/* f070e74: 24050100 */ addiu $a1,$zero,0x100 -/* f070e78: 93a3006c */ lbu $v1,0x6c($sp) -/* f070e7c: 8fbf0014 */ lw $ra,0x14($sp) -/* f070e80: 18600003 */ blez $v1,.L0f070e90 -/* f070e84: 2861000b */ slti $at,$v1,0xb -/* f070e88: 14200003 */ bnez $at,.L0f070e98 -/* f070e8c: 0003c080 */ sll $t8,$v1,0x2 -.L0f070e90: -/* f070e90: 10000004 */ beqz $zero,.L0f070ea4 -/* f070e94: 00001025 */ or $v0,$zero,$zero -.L0f070e98: -/* f070e98: 3c028007 */ lui $v0,0x8007 -/* f070e9c: 00581021 */ addu $v0,$v0,$t8 -/* f070ea0: 8c429a44 */ lw $v0,-0x65bc($v0) -.L0f070ea4: -/* f070ea4: 03e00008 */ jr $ra -/* f070ea8: 27bd0070 */ addiu $sp,$sp,0x70 -); +struct prop *liftFindByPad(s16 padnum) +{ + struct pad pad; + padUnpack(padnum, 0x100, &pad); + + if (pad.liftnum <= 0 || pad.liftnum > MAX_LIFTS) { + return NULL; + } + + return g_Lifts[pad.liftnum - 1]; +} GLOBAL_ASM( glabel func0f070eac diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index c15ef8146..93d213f52 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -127,7 +127,7 @@ u32 func0f070a1c(void); u32 func0f070bd0(void); u32 func0f070ca0(void); void liftActivate(struct prop *prop, u8 liftnum); -u32 func0f070e58(void); +struct prop *liftFindByPad(s16 padnum); u32 func0f070eac(void); u32 func0f070f08(void); void func0f0710ec(struct defaultobj *obj, u32 arg1); diff --git a/src/include/types.h b/src/include/types.h index c8564880d..c4ca101f6 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -73,7 +73,7 @@ struct pad { /*0x48*/ s32 room; /*0x4c*/ s16 unk4c; /*0x4e*/ s16 unk4e; - /*0x50*/ s16 unk50; + /*0x50*/ u8 liftnum; // 1-10, 0 indicates no lift /*0x52*/ s16 unk52; };