From e3a1b8c41b40f1ff49d0bffbad0f1381aa27c6e7 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 27 Dec 2020 12:16:41 +1000 Subject: [PATCH] Decompile func0f015420 --- src/game/game_015420.c | 37 ++++++++----------------------------- src/gvars/gvars.c | 4 ++-- src/include/gvars/gvars.h | 4 ++-- src/include/types.h | 30 ++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/src/game/game_015420.c b/src/game/game_015420.c index 89e85346c..709539984 100644 --- a/src/game/game_015420.c +++ b/src/game/game_015420.c @@ -10,32 +10,11 @@ #include "gvars/gvars.h" #include "types.h" -/** - * Iterates an array of structs and sets their unk04 value to 0. - * The array is stored at 800a45c4 and each struct is 0x6c long. - */ -GLOBAL_ASM( -glabel func0f015420 -/* f015420: 3c04800a */ lui $a0,%hi(var800a45c0) -/* f015424: 248445c0 */ addiu $a0,$a0,%lo(var800a45c0) -/* f015428: 8c8e0000 */ lw $t6,0x0($a0) -/* f01542c: 00001025 */ or $v0,$zero,$zero -/* f015430: 00001825 */ or $v1,$zero,$zero -/* f015434: 19c0000b */ blez $t6,.L0f015464 -/* f015438: 3c05800a */ lui $a1,%hi(var800a45c4) -/* f01543c: 24a545c4 */ addiu $a1,$a1,%lo(var800a45c4) -/* f015440: 8caf0000 */ lw $t7,0x0($a1) -.L0f015444: -/* f015444: 24420001 */ addiu $v0,$v0,0x1 -/* f015448: 01e3c021 */ addu $t8,$t7,$v1 -/* f01544c: af000004 */ sw $zero,0x4($t8) -/* f015450: 8c990000 */ lw $t9,0x0($a0) -/* f015454: 2463006c */ addiu $v1,$v1,0x6c -/* f015458: 0059082a */ slt $at,$v0,$t9 -/* f01545c: 5420fff9 */ bnezl $at,.L0f015444 -/* f015460: 8caf0000 */ lw $t7,0x0($a1) -.L0f015464: -/* f015464: 03e00008 */ jr $ra -/* f015468: 00000000 */ nop -/* f01546c: 00000000 */ nop -); +void func0f015420(void) +{ + s32 i; + + for (i = 0; i < var800a45c0; i++) { + var800a45c4[i].unk04 = 0; + } +} diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 80a1ee0a4..b8ad4f15a 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -15357,8 +15357,8 @@ u32 var800a45b0 = 0; u32 var800a45b4 = 0; u32 var800a45b8 = 0; u32 var800a45bc = 0; -u32 var800a45c0 = 0; -u32 var800a45c4 = 0; +s32 var800a45c0 = 0; +struct var800a45c4 *var800a45c4 = NULL; u32 var800a45c8 = 0; u32 var800a45cc = 0; struct var800a45d0 var800a45d0 = {0}; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 0356e7d3f..e33989ffa 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -713,8 +713,8 @@ extern char var800a41c0[]; extern u32 var800a41d8; extern u32 var800a45a0; extern u32 var800a45a8; -extern u32 var800a45c0; -extern u32 var800a45c4; +extern s32 var800a45c0; // count of var800a45c4 +extern struct var800a45c4 *var800a45c4; extern struct var800a45d0 var800a45d0; extern u32 var800a4634; extern struct var800a4640 var800a4640; diff --git a/src/include/types.h b/src/include/types.h index acb3c8b16..060c23311 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6666,4 +6666,34 @@ struct gfxvtx { /*0x0a*/ u16 unk0a; }; +struct var800a45c4 { + /*0x00*/ u32 unk00; + /*0x04*/ u32 unk04; + /*0x08*/ u32 unk08; + /*0x0c*/ u32 unk0c; + /*0x10*/ u32 unk10; + /*0x14*/ u32 unk14; + /*0x18*/ u32 unk18; + /*0x1c*/ u32 unk1c; + /*0x20*/ u32 unk20; + /*0x24*/ u32 unk24; + /*0x28*/ u32 unk28; + /*0x2c*/ u32 unk2c; + /*0x30*/ u32 unk30; + /*0x34*/ u32 unk34; + /*0x38*/ u32 unk38; + /*0x3c*/ u32 unk3c; + /*0x40*/ u32 unk40; + /*0x44*/ u32 unk44; + /*0x48*/ u32 unk48; + /*0x4c*/ u32 unk4c; + /*0x50*/ u32 unk50; + /*0x54*/ u32 unk54; + /*0x58*/ u32 unk58; + /*0x5c*/ u32 unk5c; + /*0x60*/ u32 unk60; + /*0x64*/ u32 unk64; + /*0x68*/ u32 unk68; +}; + #endif