diff --git a/src/game/core.c b/src/game/core.c index 1183f6776..03c434941 100644 --- a/src/game/core.c +++ b/src/game/core.c @@ -406,7 +406,7 @@ void coreLoadStage(s32 stagenum) s32 i; func0f1777f8(); - func0f010b20(); + casingsReset(); for (i = 0; i < PLAYERCOUNT(); i++) { setCurrentPlayerNum(i); @@ -2174,7 +2174,7 @@ void coreTick(void) coreUpdateSoloHandicaps(); func0f01d8c0(); func0f01d990(); - func0f01dd6c(); + casingsTick(); func0f01de30(); sparksTick(); func0f13eb44(); diff --git a/src/game/data/data_0160b0.c b/src/game/data/data_0160b0.c index ecc3de3ce..c1e14cad6 100644 --- a/src/game/data/data_0160b0.c +++ b/src/game/data/data_0160b0.c @@ -24,7 +24,7 @@ u32 var80070514 = 0x00000000; u32 var80070518 = 0x00000000; u32 var8007051c = 0x00000000; u32 var80070520 = 0x00000000; -s32 var80070524 = 0x00000000; +s32 g_CasingsActive = 0x00000000; u32 var80070528 = 0x00000000; u32 var8007052c = 0x00000000; u32 var80070530 = 0x00000000; diff --git a/src/game/game_010b20.c b/src/game/game_010b20.c index 2fde4812a..f7a9a312f 100644 --- a/src/game/game_010b20.c +++ b/src/game/game_010b20.c @@ -15,7 +15,7 @@ #include "types.h" GLOBAL_ASM( -glabel func0f010b20 +glabel casingsReset /* f010b20: 3c04800a */ lui $a0,%hi(var8009d0d0) /* f010b24: 2484d0d0 */ addiu $a0,$a0,%lo(var8009d0d0) /* f010b28: ac800000 */ sw $zero,0x0($a0) @@ -31,19 +31,19 @@ glabel func0f010b20 /* f010b4c: 1462fffe */ bne $v1,$v0,.L0f010b48 /* f010b50: ac60fffc */ sw $zero,-0x4($v1) /* f010b54: 3c02800a */ lui $v0,%hi(var8009da60) -/* f010b58: 3c03800a */ lui $v1,%hi(var8009d510) +/* f010b58: 3c03800a */ lui $v1,%hi(g_Casings) /* f010b5c: 2442da60 */ addiu $v0,$v0,%lo(var8009da60) -/* f010b60: 2463d510 */ addiu $v1,$v1,%lo(var8009d510) +/* f010b60: 2463d510 */ addiu $v1,$v1,%lo(g_Casings) .L0f010b64: /* f010b64: 24630044 */ addiu $v1,$v1,0x44 /* f010b68: 0062082b */ sltu $at,$v1,$v0 /* f010b6c: 1420fffd */ bnez $at,.L0f010b64 /* f010b70: ac60fffc */ sw $zero,-0x4($v1) -/* f010b74: 3c018007 */ lui $at,%hi(var80070524) +/* f010b74: 3c018007 */ lui $at,%hi(g_CasingsActive) /* f010b78: 3c03800a */ lui $v1,%hi(g_Fireslots) -/* f010b7c: 3c04800a */ lui $a0,%hi(var8009d510) -/* f010b80: ac200524 */ sw $zero,%lo(var80070524)($at) -/* f010b84: 2484d510 */ addiu $a0,$a0,%lo(var8009d510) +/* f010b7c: 3c04800a */ lui $a0,%hi(g_Casings) +/* f010b80: ac200524 */ sw $zero,%lo(g_CasingsActive)($at) +/* f010b84: 2484d510 */ addiu $a0,$a0,%lo(g_Casings) /* f010b88: 2463d150 */ addiu $v1,$v1,%lo(g_Fireslots) /* f010b8c: 2402ffff */ addiu $v0,$zero,-1 .L0f010b90: @@ -58,7 +58,7 @@ glabel func0f010b20 ); // Mismatch: Two instructions are swapped -//void func0f010b20(void) +//void casingsReset(void) //{ // s32 i; // @@ -70,11 +70,11 @@ glabel func0f010b20 // var8009d0e0[i] = 0; // } // -// for (i = 0; i < ARRAYCOUNT(var8009d510); i++) { -// var8009d510[i].unk40 = 0; +// for (i = 0; i < ARRAYCOUNT(g_Casings); i++) { +// g_Casings[i].unk40 = 0; // } // -// var80070524 = 0; +// g_CasingsActive = 0; // // for (i = 0; i < ARRAYCOUNT(g_Fireslots); i++) { // g_Fireslots[i].unk00 = -1; diff --git a/src/game/game_01d9f0.c b/src/game/game_01d9f0.c index ee842c245..e3ed06a88 100644 --- a/src/game/game_01d9f0.c +++ b/src/game/game_01d9f0.c @@ -21,7 +21,7 @@ const u32 var7f1a8668[] = {0x00000000}; const u32 var7f1a866c[] = {0x00000000}; GLOBAL_ASM( -glabel func0f01d9f0 +glabel casingTick /* f01d9f0: 27bdff48 */ addiu $sp,$sp,-184 /* f01d9f4: afb40034 */ sw $s4,0x34($sp) /* f01d9f8: 3c14800a */ lui $s4,%hi(g_Vars) @@ -263,7 +263,7 @@ glabel func0f01d9f0 ); GLOBAL_ASM( -glabel func0f01dd6c +glabel casingsTick /* f01dd6c: 3c03800a */ lui $v1,%hi(var8009d0d8) /* f01dd70: 2463d0d8 */ addiu $v1,$v1,%lo(var8009d0d8) /* f01dd74: 27bdffd8 */ addiu $sp,$sp,-40 @@ -281,23 +281,23 @@ glabel func0f01dd6c /* f01dda4: 01e01025 */ or $v0,$t7,$zero .L0f01dda8: /* f01dda8: 04410002 */ bgez $v0,.L0f01ddb4 -/* f01ddac: 3c118007 */ lui $s1,%hi(var80070524) +/* f01ddac: 3c118007 */ lui $s1,%hi(g_CasingsActive) /* f01ddb0: ac600000 */ sw $zero,0x0($v1) .L0f01ddb4: -/* f01ddb4: 26310524 */ addiu $s1,$s1,%lo(var80070524) +/* f01ddb4: 26310524 */ addiu $s1,$s1,%lo(g_CasingsActive) /* f01ddb8: 8e380000 */ lw $t8,0x0($s1) /* f01ddbc: 3c13800a */ lui $s3,%hi(var8009da60) /* f01ddc0: 2673da60 */ addiu $s3,$s3,%lo(var8009da60) /* f01ddc4: 13000011 */ beqz $t8,.L0f01de0c -/* f01ddc8: 3c10800a */ lui $s0,%hi(var8009d510) +/* f01ddc8: 3c10800a */ lui $s0,%hi(g_Casings) /* f01ddcc: ae200000 */ sw $zero,0x0($s1) -/* f01ddd0: 2610d510 */ addiu $s0,$s0,%lo(var8009d510) +/* f01ddd0: 2610d510 */ addiu $s0,$s0,%lo(g_Casings) /* f01ddd4: 24120001 */ addiu $s2,$zero,0x1 /* f01ddd8: 8e190040 */ lw $t9,0x40($s0) .L0f01dddc: /* f01dddc: 53200008 */ beqzl $t9,.L0f01de00 /* f01dde0: 26100044 */ addiu $s0,$s0,0x44 -/* f01dde4: 0fc0767c */ jal func0f01d9f0 +/* f01dde4: 0fc0767c */ jal casingTick /* f01dde8: 02002025 */ or $a0,$s0,$zero /* f01ddec: 8e280000 */ lw $t0,0x0($s1) /* f01ddf0: 55000003 */ bnezl $t0,.L0f01de00 @@ -319,3 +319,32 @@ glabel func0f01dd6c /* f01de28: 00000000 */ nop /* f01de2c: 00000000 */ nop ); + +// Mismatch: g_Casings needs to be moved into this file. +// Also end loop condition is bnel but needs to be sltu, bnezl. +//void casingsTick(void) +//{ +// s32 i; +// +// if (var8009d0d8 > 0) { +// var8009d0d8 -= g_Vars.lvupdate240; +// } +// +// if (var8009d0d8 < 0) { +// var8009d0d8 = 0; +// } +// +// if (g_CasingsActive) { +// g_CasingsActive = false; +// +// for (i = 0; i < ARRAYCOUNT(g_Casings); i++) { +// if (g_Casings[i].unk40) { +// casingTick(&g_Casings[i]); +// +// if (!g_CasingsActive) { +// g_CasingsActive = true; +// } +// } +// } +// } +//} diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 2958a096a..23c14b213 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -8032,11 +8032,11 @@ glabel func0f09df9c /* f09dfac: 3c02800a */ lui $v0,%hi(var8009da60) /* f09dfb0: a5ee159c */ sh $t6,0x159c($t7) /* f09dfb4: 8c980284 */ lw $t8,0x284($a0) -/* f09dfb8: 3c03800a */ lui $v1,%hi(var8009d510) +/* f09dfb8: 3c03800a */ lui $v1,%hi(g_Casings) /* f09dfbc: 2442da60 */ addiu $v0,$v0,%lo(var8009da60) /* f09dfc0: af001594 */ sw $zero,0x1594($t8) /* f09dfc4: 8c990284 */ lw $t9,0x284($a0) -/* f09dfc8: 2463d510 */ addiu $v1,$v1,%lo(var8009d510) +/* f09dfc8: 2463d510 */ addiu $v1,$v1,%lo(g_Casings) /* f09dfcc: af2015a0 */ sw $zero,0x15a0($t9) /* f09dfd0: 8c880284 */ lw $t0,0x284($a0) /* f09dfd4: ad0015a4 */ sw $zero,0x15a4($t0) @@ -8049,9 +8049,9 @@ glabel func0f09df9c /* f09dfec: 0062082b */ sltu $at,$v1,$v0 /* f09dff0: 1420fffd */ bnez $at,.L0f09dfe8 /* f09dff4: ac60fffc */ sw $zero,-0x4($v1) -/* f09dff8: 3c018007 */ lui $at,%hi(var80070524) +/* f09dff8: 3c018007 */ lui $at,%hi(g_CasingsActive) /* f09dffc: 03e00008 */ jr $ra -/* f09e000: ac200524 */ sw $zero,%lo(var80070524)($at) +/* f09e000: ac200524 */ sw $zero,%lo(g_CasingsActive)($at) ); //void func0f09df9c(void) @@ -8066,10 +8066,10 @@ glabel func0f09df9c // g_Vars.currentplayer->unk15b1 = 0; // // for (i = 0; i < 20; i++) { -// var8009d510[i].unk40 = 0; +// g_Casings[i].unk40 = 0; // } // -// var80070524 = 0; +// g_CasingsActive = 0; //} GLOBAL_ASM( @@ -8504,8 +8504,8 @@ glabel func0f09e4e0 /* f09e5cc: 00c08025 */ or $s0,$a2,$zero .L0f09e5d0: /* f09e5d0: 8fab00a4 */ lw $t3,0xa4($sp) -/* f09e5d4: 3c05800a */ lui $a1,%hi(var8009d510) -/* f09e5d8: 24a5d510 */ addiu $a1,$a1,%lo(var8009d510) +/* f09e5d4: 3c05800a */ lui $a1,%hi(g_Casings) +/* f09e5d8: 24a5d510 */ addiu $a1,$a1,%lo(g_Casings) /* f09e5dc: 15660004 */ bne $t3,$a2,.L0f09e5f0 /* f09e5e0: 3c03800a */ lui $v1,%hi(var8009da60) /* f09e5e4: 3233ffff */ andi $s3,$s1,0xffff @@ -8513,10 +8513,10 @@ glabel func0f09e4e0 /* f09e5ec: 00008025 */ or $s0,$zero,$zero .L0f09e5f0: /* f09e5f0: 924215b0 */ lbu $v0,0x15b0($s2) -/* f09e5f4: 3c048007 */ lui $a0,%hi(var80070524) +/* f09e5f4: 3c048007 */ lui $a0,%hi(g_CasingsActive) /* f09e5f8: 2463da60 */ addiu $v1,$v1,%lo(var8009da60) /* f09e5fc: 14400019 */ bnez $v0,.L0f09e664 -/* f09e600: 24840524 */ addiu $a0,$a0,%lo(var80070524) +/* f09e600: 24840524 */ addiu $a0,$a0,%lo(g_CasingsActive) /* f09e604: 00a01025 */ or $v0,$a1,$zero /* f09e608: 8e4c1598 */ lw $t4,0x1598($s2) .L0f09e60c: diff --git a/src/game/game_0abe70.c b/src/game/game_0abe70.c index f3e02fbea..127483deb 100644 --- a/src/game/game_0abe70.c +++ b/src/game/game_0abe70.c @@ -2113,15 +2113,15 @@ void bullettailTick(struct bullettail *tail) GLOBAL_ASM( glabel func0f0adcc8 -/* f0adcc8: 3c0e800a */ lui $t6,%hi(var8009d510+0x40) -/* f0adccc: 8dced550 */ lw $t6,%lo(var8009d510+0x40)($t6) +/* f0adcc8: 3c0e800a */ lui $t6,%hi(g_Casings+0x40) +/* f0adccc: 8dced550 */ lw $t6,%lo(g_Casings+0x40)($t6) /* f0adcd0: 27bdffa0 */ addiu $sp,$sp,-96 -/* f0adcd4: 3c08800a */ lui $t0,%hi(var8009d510) +/* f0adcd4: 3c08800a */ lui $t0,%hi(g_Casings) /* f0adcd8: afbf0014 */ sw $ra,0x14($sp) /* f0adcdc: 00803825 */ or $a3,$a0,$zero /* f0adce0: 00a03025 */ or $a2,$a1,$zero /* f0adce4: 11c0000a */ beqz $t6,.L0f0add10 -/* f0adce8: 2508d510 */ addiu $t0,$t0,%lo(var8009d510) +/* f0adce8: 2508d510 */ addiu $t0,$t0,%lo(g_Casings) /* f0adcec: 3c02800a */ lui $v0,%hi(var8009da60) /* f0adcf0: 2442da60 */ addiu $v0,$v0,%lo(var8009da60) /* f0adcf4: 25080044 */ addiu $t0,$t0,0x44 @@ -2188,8 +2188,8 @@ glabel func0f0adcc8 /* f0addd4: 14c9ffe5 */ bne $a2,$t1,.L0f0add6c /* f0addd8: 24e70006 */ addiu $a3,$a3,0x6 /* f0adddc: 240a0001 */ addiu $t2,$zero,0x1 -/* f0adde0: 3c018007 */ lui $at,%hi(var80070524) -/* f0adde4: ac2a0524 */ sw $t2,%lo(var80070524)($at) +/* f0adde0: 3c018007 */ lui $at,%hi(g_CasingsActive) +/* f0adde4: ac2a0524 */ sw $t2,%lo(g_CasingsActive)($at) /* f0adde8: 10000001 */ b .L0f0addf0 /* f0addec: 01001025 */ or $v0,$t0,$zero .L0f0addf0: @@ -3211,8 +3211,8 @@ glabel var7f1acd6c GLOBAL_ASM( glabel func0f0aebe0 -/* f0aebe0: 3c0e8007 */ lui $t6,%hi(var80070524) -/* f0aebe4: 8dce0524 */ lw $t6,%lo(var80070524)($t6) +/* f0aebe0: 3c0e8007 */ lui $t6,%hi(g_CasingsActive) +/* f0aebe4: 8dce0524 */ lw $t6,%lo(g_CasingsActive)($t6) /* f0aebe8: 27bdffd8 */ addiu $sp,$sp,-40 /* f0aebec: afb20020 */ sw $s2,0x20($sp) /* f0aebf0: 00809025 */ or $s2,$a0,$zero @@ -3221,9 +3221,9 @@ glabel func0f0aebe0 /* f0aebfc: 11c0000f */ beqz $t6,.L0f0aec3c /* f0aec00: afb00018 */ sw $s0,0x18($sp) /* f0aec04: 3c11800a */ lui $s1,%hi(var8009da60) -/* f0aec08: 3c10800a */ lui $s0,%hi(var8009d510) +/* f0aec08: 3c10800a */ lui $s0,%hi(g_Casings) /* f0aec0c: 2631da60 */ addiu $s1,$s1,%lo(var8009da60) -/* f0aec10: 2610d510 */ addiu $s0,$s0,%lo(var8009d510) +/* f0aec10: 2610d510 */ addiu $s0,$s0,%lo(g_Casings) /* f0aec14: 8e0f0040 */ lw $t7,0x40($s0) .L0f0aec18: /* f0aec18: 02002025 */ or $a0,$s0,$zero diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index f45666a4a..4e8a1b318 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -14367,7 +14367,7 @@ struct tag **g_TagPtrs = 0; u32 var8009d0cc = 0; u32 var8009d0d0[2] = {0}; -u32 var8009d0d8 = 0; +s32 var8009d0d8 = 0; u32 var8009d0dc = 0; u32 var8009d0e0[4] = {0}; u32 var8009d0f0 = 0; @@ -14395,7 +14395,7 @@ u32 var8009d144 = 0; u32 var8009d148 = 0; u32 var8009d14c = 0; struct fireslot g_Fireslots[NUM_FIRESLOTS] = {0}; -struct var8009d510 var8009d510[20] = {0}; +struct casing g_Casings[20] = {0}; struct var8009da60 var8009da60[8] = {0}; struct var8009dbe0 var8009dbe0[4] = {0}; u32 var8009dd00 = 0; diff --git a/src/include/game/data/data_0160b0.h b/src/include/game/data/data_0160b0.h index 7bb7264f8..5726987c4 100644 --- a/src/include/game/data/data_0160b0.h +++ b/src/include/game/data/data_0160b0.h @@ -38,7 +38,7 @@ extern struct ammotype g_AmmoTypes[33]; extern u32 var80070500; extern u32 var8007050c; extern u32 var80070518; -extern s32 var80070524; +extern s32 g_CasingsActive; extern u32 var80070528; extern u32 var80070534; extern u32 var80070574; diff --git a/src/include/game/game_010b20.h b/src/include/game/game_010b20.h index 71702d278..f77129267 100644 --- a/src/include/game/game_010b20.h +++ b/src/include/game/game_010b20.h @@ -3,7 +3,7 @@ #include #include "types.h" -void func0f010b20(void); +void casingsReset(void); void func0f010bb0(void); #endif diff --git a/src/include/game/game_01d9f0.h b/src/include/game/game_01d9f0.h index 3c566aaac..59256b07a 100644 --- a/src/include/game/game_01d9f0.h +++ b/src/include/game/game_01d9f0.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0f01d9f0(void); -void func0f01dd6c(void); +void casingTick(struct casing *arg0); +void casingsTick(void); #endif diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 78285398d..c6876a137 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -565,12 +565,12 @@ extern struct criteria_roomentered *g_RoomEnteredCriterias; extern struct criteria_multiroomentered *g_MultiroomEnteredCriterias; extern struct criteria_holograph *g_HolographCriterias; extern u32 var8009d0d0[2]; -extern u32 var8009d0d8; +extern s32 var8009d0d8; extern u32 var8009d0e0[4]; extern u32 var8009d0f0; extern u32 var8009d144; extern struct fireslot g_Fireslots[NUM_FIRESLOTS]; -extern struct var8009d510 var8009d510[20]; +extern struct casing g_Casings[20]; extern struct var8009da60 var8009da60[8]; extern struct var8009dbe0 var8009dbe0[4]; extern u32 var8009dd00; diff --git a/src/include/types.h b/src/include/types.h index e69eed04b..4849eaa34 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6036,7 +6036,7 @@ struct var800aa5d8 { s16 unk18; }; -struct var8009d510 { +struct casing { /*0x00*/ u32 unk00; /*0x04*/ u32 unk04; /*0x08*/ u32 unk08;