diff --git a/src/game/data/data_02da90.c b/src/game/data/data_02da90.c index 73924f58b..886dc5a6b 100644 --- a/src/game/data/data_02da90.c +++ b/src/game/data/data_02da90.c @@ -722,16 +722,19 @@ u32 var80088b04 = 0x00000030; u32 var80088b08 = 0x0000002f; u32 var80088b0c = 0x00000041; u32 var80088b10 = 0x00000031; -u32 var80088b14 = 0x00000100; -u32 var80088b18 = 0x00000200; -u32 var80088b1c = 0x00000400; -u32 var80088b20 = 0x00000800; -u32 var80088b24 = 0x00001000; -u32 var80088b28 = 0x00002000; -u32 var80088b2c = 0x00004000; -u32 var80088b30 = 0x00008000; -u32 var80088b34 = 0x00010000; -u32 var80088b38 = 0x00020000; + +u32 g_CiDeviceStageFlags[] = { + STAGEFLAG_CI_TRIGGER_UPLINK, + STAGEFLAG_CI_TRIGGER_ECMMINE, + STAGEFLAG_CI_TRIGGER_CAMSPY, + STAGEFLAG_CI_TRIGGER_NIGHTVISION, + STAGEFLAG_CI_TRIGGER_DOORDECODER, + STAGEFLAG_CI_TRIGGER_RTRACKER, + STAGEFLAG_CI_TRIGGER_IR, + STAGEFLAG_CI_TRIGGER_XRAY, + STAGEFLAG_CI_TRIGGER_DISGUISE, + STAGEFLAG_CI_TRIGGER_CLOAK, +}; // 2eb5c u32 device_descriptions[] = { diff --git a/src/game/game_19c990.c b/src/game/game_19c990.c index e59877114..3d4e84202 100644 --- a/src/game/game_19c990.c +++ b/src/game/game_19c990.c @@ -6023,7 +6023,7 @@ void dtBegin(void) chrUnsetStageFlag(NULL, 0x00000004); chrUnsetStageFlag(NULL, 0x00000008); chrUnsetStageFlag(NULL, 0x00000010); - chrSetStageFlag(NULL, func0f1a1e38(func0f1a1d68(var80088ad8))); + chrSetStageFlag(NULL, ciGetStageFlagByDeviceIndex(func0f1a1d68(var80088ad8))); g_Vars.currentplayer->deadtimer = 1; playersSetPassiveMode(false); chrSetStageFlag(NULL, 0x00000001); @@ -6051,7 +6051,7 @@ glabel func0f1a1bec /* f1a1c30: 3c048009 */ lui $a0,%hi(var80088ad8) /* f1a1c34: 0fc6875a */ jal func0f1a1d68 /* f1a1c38: 90848ad8 */ lbu $a0,%lo(var80088ad8)($a0) -/* f1a1c3c: 0fc6878e */ jal func0f1a1e38 +/* f1a1c3c: 0fc6878e */ jal ciGetStageFlagByDeviceIndex /* f1a1c40: 00402025 */ or $a0,$v0,$zero /* f1a1c44: 00002025 */ or $a0,$zero,$zero /* f1a1c48: 0fc127d2 */ jal chrUnsetStageFlag @@ -6206,32 +6206,12 @@ glabel func0f1a1de0 /* f1a1e34: 27bd0028 */ addiu $sp,$sp,0x28 ); -GLOBAL_ASM( -glabel func0f1a1e38 -/* f1a1e38: 27bdffd8 */ addiu $sp,$sp,-40 -/* f1a1e3c: 3c0e8009 */ lui $t6,%hi(var80088b14) -/* f1a1e40: 27a30000 */ addiu $v1,$sp,0x0 -/* f1a1e44: 25ce8b14 */ addiu $t6,$t6,%lo(var80088b14) -/* f1a1e48: 25d90024 */ addiu $t9,$t6,0x24 -/* f1a1e4c: 00604025 */ or $t0,$v1,$zero -.L0f1a1e50: -/* f1a1e50: 8dc10000 */ lw $at,0x0($t6) -/* f1a1e54: 25ce000c */ addiu $t6,$t6,0xc -/* f1a1e58: 2508000c */ addiu $t0,$t0,0xc -/* f1a1e5c: ad01fff4 */ sw $at,-0xc($t0) -/* f1a1e60: 8dc1fff8 */ lw $at,-0x8($t6) -/* f1a1e64: ad01fff8 */ sw $at,-0x8($t0) -/* f1a1e68: 8dc1fffc */ lw $at,-0x4($t6) -/* f1a1e6c: 15d9fff8 */ bne $t6,$t9,.L0f1a1e50 -/* f1a1e70: ad01fffc */ sw $at,-0x4($t0) -/* f1a1e74: 8dc10000 */ lw $at,0x0($t6) -/* f1a1e78: 00044880 */ sll $t1,$a0,0x2 -/* f1a1e7c: 00695021 */ addu $t2,$v1,$t1 -/* f1a1e80: ad010000 */ sw $at,0x0($t0) -/* f1a1e84: 8d420000 */ lw $v0,0x0($t2) -/* f1a1e88: 03e00008 */ jr $ra -/* f1a1e8c: 27bd0028 */ addiu $sp,$sp,0x28 -); +u32 ciGetStageFlagByDeviceIndex(u32 deviceindex) +{ + u32 flags[10] = g_CiDeviceStageFlags; + + return flags[deviceindex]; +} GLOBAL_ASM( glabel func0f1a1e90 diff --git a/src/include/constants.h b/src/include/constants.h index e62f97558..5f3a1a36d 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2110,6 +2110,17 @@ #define STAGE_CREDITS 0x5c #define STAGE_4MBMENU 0x5d +#define STAGEFLAG_CI_TRIGGER_UPLINK 0x00000100 +#define STAGEFLAG_CI_TRIGGER_ECMMINE 0x00000200 +#define STAGEFLAG_CI_TRIGGER_CAMSPY 0x00000400 +#define STAGEFLAG_CI_TRIGGER_NIGHTVISION 0x00000800 +#define STAGEFLAG_CI_TRIGGER_DOORDECODER 0x00001000 +#define STAGEFLAG_CI_TRIGGER_RTRACKER 0x00002000 +#define STAGEFLAG_CI_TRIGGER_IR 0x00004000 +#define STAGEFLAG_CI_TRIGGER_XRAY 0x00008000 +#define STAGEFLAG_CI_TRIGGER_DISGUISE 0x00010000 +#define STAGEFLAG_CI_TRIGGER_CLOAK 0x00020000 + #define STAGEINDEX_MAIANSOS 0x00 #define STAGEINDEX_TEST_SILO 0x01 #define STAGEINDEX_WAR 0x02 diff --git a/src/include/game/data/data_02da90.h b/src/include/game/data/data_02da90.h index 53fde84ff..4b7833eb1 100644 --- a/src/include/game/data/data_02da90.h +++ b/src/include/game/data/data_02da90.h @@ -35,7 +35,7 @@ extern u8 var80088ad8; extern u32 var80088adc; extern u32 var80088ae0; extern u32 var80088aec; -extern u32 var80088b14; +extern u32 g_CiDeviceStageFlags[10]; extern u32 device_descriptions[]; extern u32 device_tips1[]; extern u32 device_tips2[]; diff --git a/src/include/game/game_19c990.h b/src/include/game/game_19c990.h index 8ca538359..418f74dec 100644 --- a/src/include/game/game_19c990.h +++ b/src/include/game/game_19c990.h @@ -85,7 +85,7 @@ u32 func0f1a1c98(void); u32 func0f1a1d10(void); u32 func0f1a1d68(u32 arg0); u32 func0f1a1de0(void); -u32 func0f1a1e38(u32 arg0); +u32 ciGetStageFlagByDeviceIndex(u32 deviceindex); u32 func0f1a1e90(void); u32 func0f1a1f00(void); u32 func0f1a1f70(void);