diff --git a/src/game/game_106d40.c b/src/game/game_106d40.c index f5dbb737e..935523ce6 100644 --- a/src/game/game_106d40.c +++ b/src/game/game_106d40.c @@ -1322,30 +1322,18 @@ glabel func0f107eb8 /* f107f14: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f107f18 -/* f107f18: 3c028007 */ lui $v0,%hi(g_CheatSpecs) -/* f107f1c: 24423a90 */ addiu $v0,$v0,%lo(g_CheatSpecs) -/* f107f20: 00001825 */ or $v1,$zero,$zero -/* f107f24: 2405002a */ addiu $a1,$zero,0x2a -.L0f107f28: -/* f107f28: 904e0004 */ lbu $t6,0x4($v0) -/* f107f2c: 548e0008 */ bnel $a0,$t6,.L0f107f50 -/* f107f30: 24630001 */ addiu $v1,$v1,0x1 -/* f107f34: 904f0006 */ lbu $t7,0x6($v0) -/* f107f38: 31f80004 */ andi $t8,$t7,0x4 -/* f107f3c: 53000004 */ beqzl $t8,.L0f107f50 -/* f107f40: 24630001 */ addiu $v1,$v1,0x1 -/* f107f44: 03e00008 */ jr $ra -/* f107f48: 00601025 */ or $v0,$v1,$zero -/* f107f4c: 24630001 */ addiu $v1,$v1,0x1 -.L0f107f50: -/* f107f50: 1465fff5 */ bne $v1,$a1,.L0f107f28 -/* f107f54: 24420008 */ addiu $v0,$v0,0x8 -/* f107f58: 2402ffff */ addiu $v0,$zero,-1 -/* f107f5c: 03e00008 */ jr $ra -/* f107f60: 00000000 */ sll $zero,$zero,0x0 -); +s32 cheatGetByCompletedStageIndex(s32 stage_index) +{ + s32 cheat_id; + + for (cheat_id = 0; cheat_id < 0x2a; cheat_id++) { + if (g_CheatSpecs[cheat_id].stage_index == stage_index && (g_CheatSpecs[cheat_id].method & CHEATMETHOD_COMPLETE)) { + return cheat_id; + } + } + + return -1; +} s32 cheatGetTime(s32 cheat_id) { diff --git a/src/game/game_10ccd0.c b/src/game/game_10ccd0.c index b8b903e37..88eb11614 100644 --- a/src/game/game_10ccd0.c +++ b/src/game/game_10ccd0.c @@ -1977,7 +1977,7 @@ glabel func0f10e620 /* f10e6c4: 00022e42 */ srl $a1,$v0,0x19 /* f10e6c8: 3c04800a */ lui $a0,0x800a /* f10e6cc: 9084dfea */ lbu $a0,-0x2016($a0) -/* f10e6d0: 0fc41fc6 */ jal func0f107f18 +/* f10e6d0: 0fc41fc6 */ jal cheatGetByCompletedStageIndex /* f10e6d4: afa20034 */ sw $v0,0x34($sp) /* f10e6d8: 8fa30034 */ lw $v1,0x34($sp) /* f10e6dc: 3c188007 */ lui $t8,0x8007 diff --git a/src/include/constants.h b/src/include/constants.h index 3e2b522fd..0d6105e05 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -139,6 +139,11 @@ #define CHEAT_AR53 40 #define CHEAT_RCP45 41 +#define CHEATMETHOD_TIMED 0 +#define CHEATMETHOD_TRANSFERPAK 2 +#define CHEATMETHOD_COMPLETE 4 +#define CHEATMETHOD_FIRINGRANGE 8 + #define CHR_P1P2_OPPOSITE 0xf1 #define CHR_P1P2 0xf2 #define CHR_ANY 0xf3 // Only supported by if_chr_activated_object command diff --git a/src/include/game/game_106d40.h b/src/include/game/game_106d40.h index 5ffef7a12..26dd9e025 100644 --- a/src/include/game/game_106d40.h +++ b/src/include/game/game_106d40.h @@ -12,7 +12,7 @@ u32 func0f107510(void); u32 func0f10793c(void); u32 func0f107a78(void); u32 func0f107eb8(void); -u32 func0f107f18(void); +s32 cheatGetByCompletedStageIndex(s32 stage_index); s32 cheatGetTime(s32 cheat_id); char *cheatGetName(s32 cheat_id); s32 menudialog00107990(u32, u32, u32 *); diff --git a/src/include/types.h b/src/include/types.h index e29e9afeb..0474eac88 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2603,11 +2603,6 @@ struct cutscenegroup { u16 namefileid; }; -#define CHEATMETHOD_TIMED 0 -#define CHEATMETHOD_TRANSFERPAK 2 -#define CHEATMETHOD_COMPLETE 4 -#define CHEATMETHOD_FIRINGRANGE 8 - struct cheatspec { u16 nametextid; u16 time;