From ec016de0d8e6242510bff3cabebc7deaca69b298 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 20 Aug 2020 18:47:21 +1000 Subject: [PATCH] Decompile func0f16d3d0 --- src/game/chr/chraicommands.c | 2 +- src/game/game_16cfa0.c | 40 ++++++++++++------------------------ src/gvars/gvars.c | 8 +------- src/include/gvars/gvars.h | 2 +- src/include/lib/lib_11420.h | 2 +- src/include/types.h | 12 +++++++++++ src/lib/lib_11420.c | 12 +++++------ 7 files changed, 35 insertions(+), 43 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index ed3e26f61..6db54af00 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -11298,7 +11298,7 @@ bool aiMiscellaneous(void) func00010db0(value); break; case 11: - func0001190c(room_id); + func0001190c(); break; case 12: func0f001a64(room_id, value); diff --git a/src/game/game_16cfa0.c b/src/game/game_16cfa0.c index 0e104c812..1ee6e3a5e 100644 --- a/src/game/game_16cfa0.c +++ b/src/game/game_16cfa0.c @@ -6,6 +6,7 @@ #include "game/data/data_0160b0.h" #include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" +#include "game/data/data_02a0e0.h" #include "game/data/data_02da90.h" #include "game/game_0f09f0.h" #include "game/game_167ae0.h" @@ -336,33 +337,18 @@ glabel func0f16d324 /* f16d3cc: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f16d3d0 -/* f16d3d0: 3c02800b */ lui $v0,%hi(var800aa5d8) -/* f16d3d4: 3c048008 */ lui $a0,%hi(var800840d4) -/* f16d3d8: 248440d4 */ addiu $a0,$a0,%lo(var800840d4) -/* f16d3dc: 2442a5d8 */ addiu $v0,$v0,%lo(var800aa5d8) -/* f16d3e0: 8c830000 */ lw $v1,0x0($a0) -/* f16d3e4: 27bdffe8 */ addiu $sp,$sp,-24 -/* f16d3e8: 240e0006 */ addiu $t6,$zero,0x6 -/* f16d3ec: 240f0004 */ addiu $t7,$zero,0x4 -/* f16d3f0: 24780001 */ addiu $t8,$v1,0x1 -/* f16d3f4: afbf0014 */ sw $ra,0x14($sp) -/* f16d3f8: ac4e0000 */ sw $t6,0x0($v0) -/* f16d3fc: a44f0012 */ sh $t7,0x12($v0) -/* f16d400: ac980000 */ sw $t8,0x0($a0) -/* f16d404: a4400018 */ sh $zero,0x18($v0) -/* f16d408: a4400016 */ sh $zero,0x16($v0) -/* f16d40c: 24190001 */ addiu $t9,$zero,0x1 -/* f16d410: 3c018008 */ lui $at,%hi(var800840c4) -/* f16d414: a4430014 */ sh $v1,0x14($v0) -/* f16d418: 0c004643 */ jal func0001190c -/* f16d41c: ac3940c4 */ sw $t9,%lo(var800840c4)($at) -/* f16d420: 8fbf0014 */ lw $ra,0x14($sp) -/* f16d424: 27bd0018 */ addiu $sp,$sp,0x18 -/* f16d428: 03e00008 */ jr $ra -/* f16d42c: 00000000 */ nop -); +void func0f16d3d0(void) +{ + var800aa5d8.unk00 = 6; + var800aa5d8.unk12 = 4; + var800aa5d8.unk14 = var800840d4++; + var800aa5d8.unk18 = 0; + var800aa5d8.unk16 = 0; + + var800840c4 = 1; + + func0001190c(); +} GLOBAL_ASM( glabel func0f16d430 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 50ac28ed0..39d892ed7 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -18814,13 +18814,7 @@ s32 g_BoostAndSlayerActiveTypes[3] = {0}; u32 var800aa5cc = 0; s32 var800aa5d0 = 0; u32 var800aa5d4 = 0; -u32 var800aa5d8 = 0; -u32 var800aa5dc = 0; -u32 var800aa5e0 = 0; -u32 var800aa5e4 = 0; -u32 var800aa5e8 = 0; -u32 var800aa5ec = 0; -u32 var800aa5f0 = 0; +struct var800aa5d8 var800aa5d8 = {0}; u32 var800aa5f4 = 0; u32 var800aa5f8 = 0; u32 var800aa5fc = 0; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 5eb9e5dbb..e4f413075 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -760,7 +760,7 @@ extern struct audiohandle *g_BoostAndSlayerAudioHandles[3]; extern s32 g_BoostAndSlayerActiveTypes[3]; extern u32 var800aa5cc; extern s32 var800aa5d0; // stage number -extern u32 var800aa5d8; +extern struct var800aa5d8 var800aa5d8; extern u32 var800aaa38; extern u32 var800aaa68; extern u32 var800aaa78; diff --git a/src/include/lib/lib_11420.h b/src/include/lib/lib_11420.h index 9d0edb95e..bebcd6763 100644 --- a/src/include/lib/lib_11420.h +++ b/src/include/lib/lib_11420.h @@ -8,7 +8,7 @@ u32 func00011700(void); u32 func00011780(void); u32 func00011884(void); u32 func000118f4(void); -void func0001190c(s32 arg0); +void func0001190c(void); void func00011d84(void); #endif diff --git a/src/include/types.h b/src/include/types.h index 36191753f..893772177 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6364,4 +6364,16 @@ struct optiongroup { u16 name; }; +struct var800aa5d8 { + s32 unk00; + s32 unk04; + s32 unk08; + s32 unk0c; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s16 unk18; +}; + #endif diff --git a/src/lib/lib_11420.c b/src/lib/lib_11420.c index 3a64a9024..89b825588 100644 --- a/src/lib/lib_11420.c +++ b/src/lib/lib_11420.c @@ -625,13 +625,13 @@ glabel func0001190c /* 11be4: 8e6c0000 */ lw $t4,0x0($s3) /* 11be8: 11800054 */ beqz $t4,.L00011d3c .L00011bec: -/* 11bec: 3c0e800b */ lui $t6,%hi(var800aa5f0) -/* 11bf0: 95cea5f0 */ lhu $t6,%lo(var800aa5f0)($t6) -/* 11bf4: 3c01800b */ lui $at,%hi(var800aa5f0) -/* 11bf8: 3c0f800b */ lui $t7,%hi(var800aa5e8+0x2) +/* 11bec: 3c0e800b */ lui $t6,%hi(var800aa5d8+0x18) +/* 11bf0: 95cea5f0 */ lhu $t6,%lo(var800aa5d8+0x18)($t6) +/* 11bf4: 3c01800b */ lui $at,%hi(var800aa5d8+0x18) +/* 11bf8: 3c0f800b */ lui $t7,%hi(var800aa5d8+0x12) /* 11bfc: 25cd0001 */ addiu $t5,$t6,0x1 -/* 11c00: a42da5f0 */ sh $t5,%lo(var800aa5f0)($at) -/* 11c04: 95efa5ea */ lhu $t7,%lo(var800aa5e8+0x2)($t7) +/* 11c00: a42da5f0 */ sh $t5,%lo(var800aa5d8+0x18)($at) +/* 11c04: 95efa5ea */ lhu $t7,%lo(var800aa5d8+0x12)($t7) /* 11c08: 00002025 */ or $a0,$zero,$zero /* 11c0c: 25f8ffff */ addiu $t8,$t7,-1 /* 11c10: 2f010005 */ sltiu $at,$t8,0x5