Attempt to decompile casingsTick

This commit is contained in:
Ryan Dwyer 2021-02-02 18:22:14 +10:00
parent 3f98b4d582
commit 0754fb24ba
12 changed files with 79 additions and 50 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;
// }
// }
// }
// }
//}

View File

@ -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:

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -3,7 +3,7 @@
#include <ultra64.h>
#include "types.h"
void func0f010b20(void);
void casingsReset(void);
void func0f010bb0(void);
#endif

View File

@ -3,7 +3,7 @@
#include <ultra64.h>
#include "types.h"
u32 func0f01d9f0(void);
void func0f01dd6c(void);
void casingTick(struct casing *arg0);
void casingsTick(void);
#endif

View File

@ -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;

View File

@ -6036,7 +6036,7 @@ struct var800aa5d8 {
s16 unk18;
};
struct var8009d510 {
struct casing {
/*0x00*/ u32 unk00;
/*0x04*/ u32 unk04;
/*0x08*/ u32 unk08;