From fb1ba7c5540d17f6eda03eca051c286b1a7c8aca Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 18 Jan 2020 19:17:35 +1000 Subject: [PATCH] Decompile objectiveCheckRoomEntered --- src/game/game_066310.c | 52 +++++++++++----------------------- src/game/game_0c37d0.c | 2 +- src/game/game_0c79f0.c | 2 +- src/game/game_0d1fe0.c | 2 +- src/gvars/gvars.c | 2 +- src/include/game/game_066310.h | 2 +- src/include/gvars/gvars.h | 2 +- src/include/types.h | 7 +++++ 8 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/game/game_066310.c b/src/game/game_066310.c index f66d3dd6c..f30941ce8 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -55282,42 +55282,22 @@ glabel func0f095d64 /* f095f5c: 27bd0090 */ addiu $sp,$sp,0x90 ); -GLOBAL_ASM( -glabel func0f095f60 -/* f095f60: 27bdffd8 */ addiu $sp,$sp,-40 -/* f095f64: afb00018 */ sw $s0,0x18($sp) -/* f095f68: 3c10800a */ lui $s0,0x800a -/* f095f6c: 8e10d0b8 */ lw $s0,-0x2f48($s0) -/* f095f70: afb1001c */ sw $s1,0x1c($sp) -/* f095f74: 00808825 */ or $s1,$a0,$zero -/* f095f78: afbf0024 */ sw $ra,0x24($sp) -/* f095f7c: 12000010 */ beqz $s0,.L0f095fc0 -/* f095f80: afb20020 */ sw $s2,0x20($sp) -/* f095f84: 24120001 */ addiu $s2,$zero,0x1 -/* f095f88: 8e0e0008 */ lw $t6,0x8($s0) -.L0f095f8c: -/* f095f8c: 00002025 */ or $a0,$zero,$zero -/* f095f90: 55c00009 */ bnezl $t6,.L0f095fb8 -/* f095f94: 8e10000c */ lw $s0,0xc($s0) -/* f095f98: 0fc12574 */ jal chrGetPadRoom -/* f095f9c: 8e050004 */ lw $a1,0x4($s0) -/* f095fa0: 04420005 */ bltzl $v0,.L0f095fb8 -/* f095fa4: 8e10000c */ lw $s0,0xc($s0) -/* f095fa8: 54510003 */ bnel $v0,$s1,.L0f095fb8 -/* f095fac: 8e10000c */ lw $s0,0xc($s0) -/* f095fb0: ae120008 */ sw $s2,0x8($s0) -/* f095fb4: 8e10000c */ lw $s0,0xc($s0) -.L0f095fb8: -/* f095fb8: 5600fff4 */ bnezl $s0,.L0f095f8c -/* f095fbc: 8e0e0008 */ lw $t6,0x8($s0) -.L0f095fc0: -/* f095fc0: 8fbf0024 */ lw $ra,0x24($sp) -/* f095fc4: 8fb00018 */ lw $s0,0x18($sp) -/* f095fc8: 8fb1001c */ lw $s1,0x1c($sp) -/* f095fcc: 8fb20020 */ lw $s2,0x20($sp) -/* f095fd0: 03e00008 */ jr $ra -/* f095fd4: 27bd0028 */ addiu $sp,$sp,0x28 -); +void objectiveCheckRoomEntered(s32 currentroom) +{ + struct objectivecriteria *criteria = var8009d0b8; + + while (criteria) { + if (criteria->status == OBJECTIVE_INCOMPLETE) { + s32 room = chrGetPadRoom(NULL, criteria->pad); + + if (room >= 0 && room == currentroom) { + criteria->status = OBJECTIVE_COMPLETE; + } + } + + criteria = criteria->next; + } +} GLOBAL_ASM( glabel func0f095fd8 diff --git a/src/game/game_0c37d0.c b/src/game/game_0c37d0.c index 007d64f38..094b7989f 100644 --- a/src/game/game_0c37d0.c +++ b/src/game/game_0c37d0.c @@ -4588,7 +4588,7 @@ glabel func0f0c785c /* f0c790c: 3c09800a */ lui $t1,0x800a /* f0c7910: 8d29a244 */ lw $t1,-0x5dbc($t1) /* f0c7914: 8d2a00bc */ lw $t2,0xbc($t1) -/* f0c7918: 0fc257d8 */ jal func0f095f60 +/* f0c7918: 0fc257d8 */ jal objectiveCheckRoomEntered /* f0c791c: 85440028 */ lh $a0,0x28($t2) /* f0c7920: 3c05800a */ lui $a1,0x800a /* f0c7924: 8ca5a244 */ lw $a1,-0x5dbc($a1) diff --git a/src/game/game_0c79f0.c b/src/game/game_0c79f0.c index 6714c8927..983687908 100644 --- a/src/game/game_0c79f0.c +++ b/src/game/game_0c79f0.c @@ -8496,7 +8496,7 @@ glabel func0f0ceec4 /* f0cefcc: 3c0a800a */ lui $t2,0x800a /* f0cefd0: 8d4aa244 */ lw $t2,-0x5dbc($t2) /* f0cefd4: 8d4b00bc */ lw $t3,0xbc($t2) -/* f0cefd8: 0fc257d8 */ jal func0f095f60 +/* f0cefd8: 0fc257d8 */ jal objectiveCheckRoomEntered /* f0cefdc: 85640028 */ lh $a0,0x28($t3) /* f0cefe0: 3c0c800a */ lui $t4,0x800a /* f0cefe4: 8d8ca244 */ lw $t4,-0x5dbc($t4) diff --git a/src/game/game_0d1fe0.c b/src/game/game_0d1fe0.c index a50c05dd5..b6c5e5fd8 100644 --- a/src/game/game_0d1fe0.c +++ b/src/game/game_0d1fe0.c @@ -2676,7 +2676,7 @@ glabel func0f0d3d50 /* f0d465c: 8e040284 */ lw $a0,0x284($s0) /* f0d4660: 8e090284 */ lw $t1,0x284($s0) /* f0d4664: 8d2a00bc */ lw $t2,0xbc($t1) -/* f0d4668: 0fc257d8 */ jal func0f095f60 +/* f0d4668: 0fc257d8 */ jal objectiveCheckRoomEntered /* f0d466c: 85440028 */ lh $a0,0x28($t2) /* f0d4670: 0fc23064 */ jal func0f08c190 /* f0d4674: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index d99ccb085..8fdd02ac5 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16324,7 +16324,7 @@ u32 var8009d0a8 = 0; u32 var8009d0ac = 0; u32 var8009d0b0 = 0; u32 var8009d0b4 = 0; -u32 var8009d0b8 = 0; +struct objectivecriteria *var8009d0b8 = NULL; u32 var8009d0bc = 0; u32 var8009d0c0 = 0; diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index d20436396..eacb9a058 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -387,7 +387,7 @@ u32 objectiveIsAllComplete(void); u32 func0f095bf4(void); u32 func0f095c04(void); u32 func0f095d64(void); -u32 func0f095f60(void); +void objectiveCheckRoomEntered(s32 currentroom); u32 func0f095fd8(void); u32 func0f096088(void); u32 func0f096360(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 7c80090af..f9b35ed60 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -584,7 +584,7 @@ extern struct objective *g_Objectives[10]; extern u32 var8009d088; extern u32 var8009d0b0; extern u32 var8009d0b4; -extern u32 var8009d0b8; +extern struct objectivecriteria *var8009d0b8; extern u32 var8009d0bc; extern u32 var8009d0c0; extern u32 var8009d0d0; diff --git a/src/include/types.h b/src/include/types.h index 6572b50ac..caa66e8db 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4678,4 +4678,11 @@ struct objective { /*0x0f*/ s8 difficulties; }; +struct objectivecriteria { + u32 unk00; + u32 pad; + u32 status; + struct objectivecriteria *next; +}; + #endif