summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Asenjo Nitti <96613413+sonicdcer@users.noreply.github.com>2023-10-23 13:01:29 -0300
committerGitHub <noreply@github.com>2023-10-23 11:01:29 -0500
commitfd742f93be7e04a7cd2565300ab7ea34db1ff05e (patch)
treef4360319cf58d574df6429073628f1970f41518e
parent90538c74e5cfef70cd4969ffee102755f904a78e (diff)
sf_hud functions + code organization (#8)
* decompile func_80086C08 * decompile func_80086CC8 * format * decompile func_80088784 * preserve macros * better match func_80005708 * format * *arg0 * decompile func_80089670 * decompile func_80089710 * decompile func_800897B0 * decompile func_80089850 * decompile func_800898F0 * decompile func_80089994 * decompile func_80089AF4 * decompile func_80089B94 * decompile func_80089C38 * decompile func_80089D28 * space * format * decompile func_80089E98 * correction * declare segmented addresses in func_80088784 * segmented addresses in undefined_syms * correction * Gfx type * *arg0 + 1 in func_80005708 * roll back s32 -> Gfx * fix * array of Gfx pointers * decompile func_8008AD94 * decompile func_8008AD94 * decompile func_8008B1B0 * decompile func_8008B2F0 * create structs.h * reordering * format * decompile func_8008B5B0 * decompile func_8008B9E8 * decompile func_8008BAE4 * decompile func_8008C390 * fixes * fixes * fix warnings * move protos to functions header * move variables to variables.h * roll back segmented config in header
-rw-r--r--include/functions.h65
-rw-r--r--include/global.h3
-rw-r--r--include/hud.h21
-rw-r--r--include/sf64math.h2
-rw-r--r--include/structs.h26
-rw-r--r--include/variables.h171
-rw-r--r--linker_scripts/us/undefined_syms.ld39
-rw-r--r--src/main/5A20.c1
-rw-r--r--src/main/6280.c10
-rw-r--r--src/main/sf_hud.c538
-rw-r--r--src/overlays/segment_DF4260/DFEE30.c2
-rw-r--r--src/overlays/segment_DF4260/DFEE30.h6
-rw-r--r--src/overlays/segment_EBFBE0/EBFCA0.c147
-rw-r--r--tools/permuter_settings.toml4
14 files changed, 837 insertions, 198 deletions
diff --git a/include/functions.h b/include/functions.h
index a3dbec09..f6477d09 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -1,12 +1,67 @@
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
-void func_80005C34(s32, f32, f32, f32, s32);
+f32 func_80005100(f32 arg0, f32 arg1);
+void func_80005680(Matrix*, Matrix*);
+void func_80005708(Matrix ** mtx);
+void func_80005740(Matrix** mtx);
+void func_80005B00(Matrix*, f32, f32, f32, u8);
+void func_80005C34(Matrix*, f32, f32, f32, s32);
void func_80006EB8(Gfx **);
-s32 func_8008BCBC(s32 /*arg0*/);
-void func_8009D994(Gfx*, void*, u32, u32, f32, f32, f32, f32);
+void func_80006F20(void);
+
+void func_800182F4(s32);
+void func_80019218(u32, f32*, u8, f32*, f32*, s8*);
+void func_8001A838(u32 arg0);
+void func_8001AF40(s32 arg0);
+void func_8001DC6C(s32, s32);
+
+void func_80084688(s32, s32);
+void func_80086664(f32, f32);
+s32 func_8008B774(void);
+s32 func_8008BCBC(s32 arg0);
+
+void func_8009BC2C(f32*, f32, f32, f32, f32);
+void func_8009D994(Gfx**, void*, u32, u32, f32, f32, f32, f32);
void func_8009FEA0(s32, s32, s32);
-void func_800A1200(s32, s32, f32, f32, s32*);
-void func_800B8DD0(Gfx **, s32);
+void func_800A1200(s32, s32, f32, f32, char*);
+void func_800A5D6C(void);
+void func_800B8DD0(Gfx **, s16);
+void func_800BB5D0(void);
+void func_800B6F50(f32, f32, f32, f32, f32, f32);
+
+void func_801877F0_EBFEB0(void);
+s32 func_80187ABC_EC017C(void);
+void func_80187B00_EC01C0(void);
+void func_80187E28_EC04E8(void);
+void func_801888E8_EC0FA8(void);
+void func_8018994C_EC200C(void);
+void func_8018A644_EC2D04(void);
+void func_8018ACEC_EC33AC(void);
+void func_8018B5C4_EC3C84(void);
+void func_8018C644_EC4D04(void);
+void func_80190E64_EC9524(void);
+void func_8019111C_EC97DC(void);
+void func_80187CA8_EC0368(void);
+void func_80188010_EC06D0(void);
+void func_80189208_EC18C8(void);
+void func_8018A2F8_EC29B8(void);
+void func_8018A990_EC3050(void);
+void func_8018B038_EC36F8(void);
+void func_8018C114_EC47D4(void);
+void func_8018CB90_EC5250(void);
+void func_8018F680_EC7D40(void);
+void func_8018F77C_EC7E3C(void);
+void func_8018F85C_EC7F1C(void);
+void func_8018F8E4_EC7FA4(void);
+void func_8018FC14_EC82D4(void);
+void func_8018FD08_EC83C8(void);
+void func_8018FF74_EC8634(void);
+void func_801906A0_EC8D60(void);
+void func_80190C9C_EC935C(void);
+void func_801918FC_EC9FBC(void);
+void func_8018D2B8_EC5978(s32);
+void func_8018EA78_EC7138(s32);
+void func_80191674_EC9D34(f32, f32, f32, f32*, f32*, f32*);
#endif
diff --git a/include/global.h b/include/global.h
index a53ea5ba..b62c335c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -5,9 +5,8 @@
#include "PR/mbi.h"
#include "functions.h"
#include "variables.h"
+#include "structs.h"
#include "macros.h"
#include "sf64math.h"
-extern Gfx* D_80137E64;
-
#endif // GLOBAL_H
diff --git a/include/hud.h b/include/hud.h
index 6c4b8f94..b09babe1 100644
--- a/include/hud.h
+++ b/include/hud.h
@@ -13,16 +13,17 @@ typedef struct UnkStruct_func_80095350 {
void func_800612B8(void*, u16, void*);
void func_800613C4(void*);
-void func_80084E78(s32*, s32*, s32*, s32, s32, f32, f32, f32, f32, f32, f32);
+void func_80084E78(Gfx**, s32*, s32*, s32, s32, f32, f32, f32, f32, f32, f32);
void func_80085944(void);
void func_80086CC8(void);
void func_80086DCC(void);
void func_80087B5C(void);
+void func_80089994(s32 arg0);
void func_8008A4DC(void);
void func_8008B044(void);
void func_8008B1B0(void);
void func_8008B2F0(void);
-void func_8008B5B0(f32, f32);
+void func_8008B5B0(f32 arg0, f32 arg1);
void func_8008B734(void);
void func_8008B9E8(void);
void func_8008BAE4(void);
@@ -37,10 +38,9 @@ void func_8008E5E8(void);
void func_8008E620(void);
void func_80090E8C(void);
void func_800910C0(void);
-void func_8009C320(Gfx*, s32*, s32*, s32, s32, f32, f32, f32, f32);
-void func_8009D0BC(Gfx*, void*, void*, u32, u32, f32, f32, f32, f32);
-void func_8009D994(Gfx*, void*, u32, u32, f32, f32, f32, f32);
-void func_8009E1E8(Gfx*, s32*, s32, s32, f32, f32, f32, f32);
+void func_8009C320(Gfx**, s32*, s32*, s32, s32, f32, f32, f32, f32);
+void func_8009D0BC(Gfx**, void*, void*, u32, u32, f32, f32, f32, f32);
+void func_8009E1E8(Gfx**, s32*, s32, s32, f32, f32, f32, f32);
// Weird addresses, assets maybe?
extern s32 D_1000E80;
@@ -58,17 +58,22 @@ extern s32 D_1011CA0;
extern s32 D_1011D70;
extern s32 D_1011D90;
extern s32 D_1011E60;
-extern s32 D_1013170;
-extern s32 D_1013570;
+extern s32 D_1013170[];
+extern s32 D_1013570[];
extern s32 D_1013580;
extern s32 D_1013700;
+extern s32 D_20031B0[];
+extern s32 D_2010A30[];
extern s32 D_3000B20;
extern s32 D_30013E0;
extern s32 D_80161690;
+extern s32 D_80161718;
+extern s32 D_8016171C;
extern s32 D_801617E8[];
extern s32 D_801617FC;
extern s32 D_80161A98;
+extern s32 D_80177838;
extern s32 D_80177854;
extern s32 D_80177880;
extern s32 D_801778B0[];
diff --git a/include/sf64math.h b/include/sf64math.h
index ecff4f33..eb8f02f8 100644
--- a/include/sf64math.h
+++ b/include/sf64math.h
@@ -19,4 +19,4 @@ typedef struct {
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
-#endif \ No newline at end of file
+#endif
diff --git a/include/structs.h b/include/structs.h
new file mode 100644
index 00000000..799a50e8
--- /dev/null
+++ b/include/structs.h
@@ -0,0 +1,26 @@
+#ifndef STRUCTS_H
+#define STRUCTS_H
+
+#include "global.h"
+#include "sf64math.h"
+
+typedef struct UnkStruct_D_801B8350 {
+ /* 0x00 */ Vec3f unk0;
+ /* 0x0C */ char pad_0C[0x4C];
+ /* 0x54 */ s32 unk54;
+ /* 0x58 */ s32 unk58;
+} UnkStruct_D_801B8350;
+
+typedef struct UnkStruct_D_80178280 {
+ /* 0x000 */ char pad_0[0x07C];
+ /* 0x07C */ f32 unk07C;
+ /* 0x080 */ char pad_80[0x148];
+ /* 0x1C8 */ s32 unk1C8;
+ /* 0x1CC */ char pad_1CC[0x98];
+ /* 0x264 */ s32 unk264;
+ /* 0x268 */ char pad_268[0x4];
+ /* 0x26C */ s32 unk26C;
+ /* 0x270 */ char pad_270[0x270];
+} UnkStruct_D_80178280; // size = 0x4E0
+
+#endif
diff --git a/include/variables.h b/include/variables.h
index e95d5995..91963a84 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -1,7 +1,178 @@
#ifndef VARIABLES_H
#define VARIABLES_H
+#include "structs.h"
+extern f32 D_800C5D34;
+extern s8 D_800C5D3C;
+extern s32 D_800CFF90;
+extern Gfx D_800D1A40[];
+extern s32 D_800D1EB4;
+extern s32 D_800D1EB8;
+extern s32 D_800D1EBC;
+extern s32 D_800D2870;
+extern u8 D_800DD8B0[];
+extern s32 D_800DD8B4;
+
+extern Gfx* D_80137E64;
+extern u8 D_80137E78;
+
+extern s32 D_80161690;
+extern s32 D_80161730;
+extern s32 D_80161788;
+extern s32 D_8016178C;
+extern s32 D_80161790;
+extern s32 D_80161794;
+extern s32 D_80161798;
+extern f32 D_8016179C;
+extern f32 D_801617A0;
+extern f32 D_801617A4;
+extern f32 D_801617A8;
+extern f32 D_801617AC;
+extern s32 D_801617B0;
+extern s16 D_80161A34;
+extern s16 D_80161A36;
+extern u8 D_80161A90[];
+
+extern UnkStruct_D_80178280* D_80178280;
+extern s32 D_80177834;
+extern s32 D_8017783C;
+extern s32 D_80177898;
+extern s32 D_801778A0;
+extern s32 D_801778A8;
+extern s32 D_801778E8;
+extern f32 D_80177978;
+extern f32 D_80177980;
+extern f32 D_80177988;
+extern f32 D_801779A0;
+extern f32 D_801779B8;
+extern f32 D_801779C0;
+extern s32 D_80177AE0;
+extern s32 D_80177AF8;
+extern u8 D_80177C98;
+extern f32 D_80177D68;
+extern s32 D_80177DB0;
+extern s32 D_8017829C;
+extern s32 D_801782A4;
+extern s32 D_80178320;
+extern s32 D_80178328;
+extern s32 D_80178330;
+extern s32 D_80178340;
+extern s32 D_80178348;
+extern s32 D_80178350;
+extern s32 D_80178354;
+extern s32 D_80178410;
+extern f32 D_80178420;
+extern f32 D_80178424;
+extern f32 D_8017842C;
+extern s32 D_80178548;
+extern s32 D_8017854C;
+extern s32 D_80178550;
+extern s32 D_80178554;
+extern s32 D_80178558;
+extern s32 D_8017855C;
+
+extern f32 D_801B7BC8;
+extern f32 D_801B7BCC;
+extern s32 D_801B8220[];
+extern u8 D_801B8248[][4];
+extern s32 D_801B827C;
+extern s32 D_801B8280;
+extern s32 D_801B8284;
+extern s32 D_801B8288;
+extern s32 D_801B82A8;
+extern s32 D_801B82AC;
+extern s32 D_801B82BC;
+extern s32 D_801B82C0;
+extern s32 D_801B82C4;
+extern f32 D_801B82E0;
+extern f32 D_801B82E4;
+extern f32 D_801B82E8;
+extern s32 D_801B82F8;
+extern s32 D_801B82FC;
+extern s32 D_801B8300;
+extern f32 D_801B8304;
+extern f32 D_801B8308;
+extern f32 D_801B830C;
+extern s32 D_801B8310;
+extern s32 D_801B8314;
+extern s32 D_801B8318;
+extern s32 D_801B831C;
+extern s32 D_801B8320;
+extern s32 D_801B8324;
+extern f32 D_801B833C;
+extern s32 D_801B8344;
+extern s32 D_801B8348;
+extern s32 D_801B86A4;
+extern f32 D_801B86C8;
+extern f32 D_801B86CC;
+extern f32 D_801B86D0;
+extern f32 D_801B86D4;
+extern f32 D_801B86D8;
+extern f32 D_801B86DC;
+extern s32 D_801B9040;
+extern f32 D_801B905C;
+extern f32 D_801B9060;
+extern f32 D_801B9064;
+
+extern Matrix* D_8013B3C0;
+extern f32 D_800C5D28[];
+
+extern s32 D_801ADA44_EE6104[];
+extern s32 D_801ADA84_EE6144[];
+extern s32 D_801ADA94_EE6154;
+
+extern Gfx D_1015510[];
+extern Gfx D_1024230[];
+extern Gfx D_1024830[];
+extern Gfx D_102A8A0[];
+extern Gfx D_1024AC0[];
+
+
+extern Gfx D_2000000[];
+extern Gfx D_2000890[];
+extern Gfx D_2001090[];
+extern Gfx D_2001120[];
+extern Gfx D_20019B0[];
+extern Gfx D_2002120[];
+extern Gfx D_2002240[];
+extern Gfx D_2002AD0[];
+extern Gfx D_2003360[];
+extern Gfx D_2003BF0[];
+extern Gfx D_2004240[];
+extern Gfx D_2004480[];
+extern Gfx D_2004D10[];
+extern Gfx D_20052D0[];
+extern Gfx D_20055A0[];
+extern Gfx D_2005E30[];
+extern Gfx D_2006360[];
+extern Gfx D_20066C0[];
+extern Gfx D_20073F0[];
+extern Gfx D_2008480[];
+extern Gfx D_2009510[];
+extern Gfx D_200A5A0[];
+extern Gfx D_200B630[];
+extern Gfx D_200C6C0[];
+extern Gfx D_200E7F0[];
+extern Gfx D_200F080[];
+extern Gfx D_200F910[];
+extern Gfx D_20101A0[];
+
+extern u8 D_5000000[];
+extern u8 D_5000080[];
+extern u8 D_5000100[];
+extern u8 D_5000180[];
+extern u8 D_5000200[];
+extern u8 D_5000280[];
+extern u8 D_5000300[];
+extern u8 D_5000380[];
+extern u8 D_5000400[];
+extern u8 D_5000480[];
+extern s32 D_50077B0;
+
+extern Gfx D_6004570[];
+extern Gfx D_D0098B0[];
+extern Gfx D_F014180[];
#endif // VARIABLES_H
diff --git a/linker_scripts/us/undefined_syms.ld b/linker_scripts/us/undefined_syms.ld
index e69de29b..0e4fd647 100644
--- a/linker_scripts/us/undefined_syms.ld
+++ b/linker_scripts/us/undefined_syms.ld
@@ -0,0 +1,39 @@
+D_2000000 = 0x02000000;
+D_2000890 = 0x02000890;
+D_2001090 = 0x02001090;
+D_2001120 = 0x02001120;
+D_20019B0 = 0x020019B0;
+D_2002120 = 0x02002120;
+D_2002240 = 0x02002240;
+D_2002AD0 = 0x02002AD0;
+D_2003360 = 0x02003360;
+D_2003BF0 = 0x02003BF0;
+D_2004240 = 0x02004240;
+D_2004480 = 0x02004480;
+D_2004D10 = 0x02004D10;
+D_20052D0 = 0x020052D0;
+D_20055A0 = 0x020055A0;
+D_2005E30 = 0x02005E30;
+D_2006360 = 0x02006360;
+D_20066C0 = 0x020066C0;
+D_20073F0 = 0x020073F0;
+D_2008480 = 0x02008480;
+D_2009510 = 0x02009510;
+D_200A5A0 = 0x0200A5A0;
+D_200B630 = 0x0200B630;
+D_200C6C0 = 0x0200C6C0;
+D_200E7F0 = 0x0200E7F0;
+D_200F080 = 0x0200F080;
+D_200F910 = 0x0200F910;
+D_20101A0 = 0x020101A0;
+
+D_5000000 = 0x05000000;
+D_5000080 = 0x05000080;
+D_5000100 = 0x05000100;
+D_5000180 = 0x05000180;
+D_5000200 = 0x05000200;
+D_5000280 = 0x05000280;
+D_5000300 = 0x05000300;
+D_5000380 = 0x05000380;
+D_5000400 = 0x05000400;
+D_5000480 = 0x05000480; \ No newline at end of file
diff --git a/src/main/5A20.c b/src/main/5A20.c
index ceea235e..d0a0577b 100644
--- a/src/main/5A20.c
+++ b/src/main/5A20.c
@@ -7,7 +7,6 @@ extern s32 D_8013B3AC;
extern s32 D_8013B3B0;
extern s32 D_8013B3B4;
-extern void func_80005680(s32, s32);
extern f32 func_8001FBE8(f32);
extern u64 osGetTime(void);
diff --git a/src/main/6280.c b/src/main/6280.c
index 07600f34..2438213c 100644
--- a/src/main/6280.c
+++ b/src/main/6280.c
@@ -3,13 +3,13 @@
// https://decomp.me/scratch/8H8k4 100%
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005680.s")
-void func_80005708(s32* arg0) {
- func_80005680(*arg0 + 64, *arg0);
- *arg0 += 0x40;
+void func_80005708(Matrix** mtx) {
+ func_80005680(*mtx + 1, *mtx);
+ *mtx += 1;
}
-void func_80005740(s32* arg0) {
- *arg0 -= 64;
+void func_80005740(Matrix** mtx) {
+ *mtx -= 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005754.s")
diff --git a/src/main/sf_hud.c b/src/main/sf_hud.c
index 016d4090..8b477317 100644
--- a/src/main/sf_hud.c
+++ b/src/main/sf_hud.c
@@ -1,8 +1,5 @@
#include "hud.h"
-extern s32 D_8013B3C0;
-extern Gfx D_F014180[];
-
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084930.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084B94.s")
@@ -131,9 +128,40 @@ s32 func_800863C8(void) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800869A0.s")
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80086C08.s")
+void func_80086C08(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
+ func_800B8DD0(&D_80137E64, 0x4E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 60, 60, 128, 96);
+ gDPSetAlphaDither(D_80137E64++, G_AD_DISABLE);
+ func_8009D0BC(&D_80137E64, D_1013170, D_1013570, 24, 17, arg0, arg1, arg2, arg3);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80086CC8.s")
+void func_80086CC8(void) {
+ char pad;
+ f32 sp18;
+ f32 temp;
+
+ if ((D_80177854 != 0x64) && (D_80177838 != 0)) {
+ D_80177838 -= 1;
+ }
+
+ if (D_80177838 == 1) {
+ D_80161718 = 30;
+ D_8016171C = 0;
+ }
+
+ temp = 108.0f;
+ sp18 = 81.0f;
+
+ if (D_80177838 != 0) {
+ func_80086C08(temp - 4.5f - 32.0f, sp18 - 24.0f - 4.0f, 7.4f, 3.9f);
+
+ if (D_80178234 != 10) {
+ func_80086C08(122.0f, 122.0f, 2.9f, 1.2f);
+ }
+
+ func_80086664(temp, sp18 - 24.0f);
+ }
+}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80086DCC.s")
@@ -177,31 +205,247 @@ void func_8008865C(void) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800886B8.s")
+#ifdef IMPORT_DATA_PENDING
+void func_80088784(s32 arg0) {
+ Gfx* D_800D1D4C[] = {
+ D_200B630, D_200A5A0, D_2009510, D_2008480, D_20073F0, D_2006360, D_200C6C0, D_20052D0, D_2004240,
+ D_20031B0, D_2002120, D_2001090, D_2000000, D_2010A30, D_20101A0, D_200F910, D_200F080, D_200E7F0,
+ };
+ Gfx* D_800D1D94[] = {
+ D_20066C0, D_2005E30, D_20055A0, D_2004D10, D_2004480, D_2003BF0, D_2003360,
+ D_2002AD0, D_2002240, D_20019B0, D_2001120, D_2000890, D_2000000,
+ };
+ s32 D_800D1DC8[] = {
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 150, 100, 50,
+ };
+
+ if (arg0 != 0) {
+ arg0--;
+ func_800B8DD0(&D_80137E64, 0x24);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, D_800D1DC8[arg0]);
+ func_80005708(&D_8013B3C0);
+ func_80005B00(D_8013B3C0, 3.9f, -3.3f, -100.0f, 0);
+ func_80005C34(D_8013B3C0, 0.37f, 0.37f, 0.37f, 1);
+ func_80006EB8(&D_80137E64);
+
+ if (D_80177C98 == 0) {
+ gSPDisplayList(D_80137E64++, D_800D1D4C[arg0]);
+ } else {
+ gSPDisplayList(D_80137E64++, D_800D1D94[arg0]);
+ }
+
+ func_80005740(&D_8013B3C0);
+ }
+}
+#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80088784.s")
+#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80088970.s")
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089670.s")
+void func_80089670(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
+ func_80005C34(D_8013B3C0, 18.64f, 21.04f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1024AC0);
+}
+
+void func_80089710(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
+ func_80005C34(D_8013B3C0, 11.0f, 11.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1024AC0);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089710.s")
+void func_800897B0(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
+ func_80005C34(D_8013B3C0, 130.0f, 130.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1024830);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800897B0.s")
+void func_80089850(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 0, 0, 0, 255);
+ func_80005C34(D_8013B3C0, 125.0f, 125.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_102A8A0);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089850.s")
+void func_800898F0(void) {
+ func_800B8DD0(&D_80137E64, 1);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 208, 80, 255);
+ func_80005C34(D_8013B3C0, 30.0f, 30.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_6004570);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800898F0.s")
+#ifdef IMPORT_DATA_PENDING
+void func_80089994(s32 arg0) {
+ s32 D_800D1E14[][4] = {
+ { 177, 242, 12, 255 }, { 89, 121, 6, 128 }, { 90, 90, 255, 255 }, { 45, 45, 128, 128 },
+ { 0, 179, 67, 255 }, { 0, 90, 34, 128 }, { 255, 30, 0, 255 }, { 128, 15, 0, 128 },
+ };
+ f32 var_fv1;
+ f32 var_fv2;
+
+ if (D_801778A8 != 1) {
+ var_fv1 = 38.0f;
+ var_fv2 = 38.0f;
+ } else {
+ var_fv1 = 54.0f;
+ var_fv2 = 54.0f;
+ }
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, D_800D1E14[arg0][0], D_800D1E14[arg0][1], D_800D1E14[arg0][2],
+ D_800D1E14[arg0][3]);
+ func_80005C34(D_8013B3C0, var_fv1, var_fv2, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1015510);
+}
+#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089994.s")
+#endif
+
+void func_80089AF4(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 0, 0, 0, 255);
+ func_80005C34(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_F014180);
+}
+
+void func_80089B94(void) {
+ func_800B8DD0(&D_80137E64, 0x3E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 92, 92, 255);
+ func_80005C34(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_D0098B0);
+}
+
+void func_80089C38(void) {
+ s32 alpha;
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089AF4.s")
+ func_800B8DD0(&D_80137E64, 0xC);
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089B94.s")
+ alpha = D_80177DB0 % 21;
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089C38.s")
+ if (alpha > 10) {
+ alpha = 20 - alpha;
+ }
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089D28.s")
+ alpha *= 255.0f / 10.0f;
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, alpha);
+ func_80005C34(D_8013B3C0, 15.0f, 15.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1024230);
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089E98.s")
+void func_80089D28(void) {
+ s32 gb;
+
+ func_800B8DD0(&D_80137E64, 1);
+
+ gb = D_80177DB0 % 21;
+
+ if (gb > 10) {
+ gb = 20 - gb;
+ }
+
+ gb *= 25.5f;
+
+ if ((gb == 10) || (gb == 0)) {
+ // clang-format off
+ //! FAKE: Probably a MACRO
+ if (1) {func_80019218(0x4900001c, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);}
+ // clang-format on
+ }
+
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, gb, gb, 255);
+ func_80005B00(D_8013B3C0, 0.0f, -185.92001f, 0, 1);
+ func_80005C34(D_8013B3C0, 3.55f, 0.13f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_1024230);
+}
+
+void func_80089E98(s32 arg0) {
+ s32 var_a1;
+ s32 var_a1_2;
+
+ switch (arg0) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ var_a1_2 = var_a1 = arg0;
+ if (D_801778A8 != 1) {
+ if (arg0 == 1) {
+ var_a1 = 3;
+ }
+ if (arg0 == 3) {
+ var_a1 = 1;
+ }
+
+ if (D_80178280[arg0].unk1C8 == 13) {
+ break;
+ }
+ }
+ if ((var_a1_2 == D_801778A0) && (D_80177DB0 & 2)) {
+ var_a1 = (var_a1 * 2) + 1;
+ } else {
+ var_a1 = var_a1 * 2;
+ }
+ func_80089994(var_a1);
+ break;
+
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ func_80089AF4();
+ break;
+
+ case 8:
+ func_80089B94();
+ break;
+
+ case 100:
+ func_800898F0();
+ break;
+
+ case 101:
+ func_80089850();
+ break;
+
+ case 102:
+ func_800897B0();
+ break;
+
+ case 103:
+ if (D_801778E8 == 1) {
+ func_80089670();
+ break;
+ }
+ func_80089C38();
+ break;
+
+ case 200:
+ case 201:
+ func_80089670();
+ break;
+
+ case 999:
+ break;
+
+ default:
+ func_80089710();
+ break;
+ }
+}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008A07C.s")
@@ -211,11 +455,116 @@ void func_8008865C(void) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008AC54.s")
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008AD94.s")
+void func_8008AD94(void) {
+ if (D_80177834 == 7) {
+ func_800B8DD0(&D_80137E64, 0x4C);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
+
+ switch ((s32) D_80177D68) {
+ case 0:
+ func_800A1200(73, 173, 1.0f, 1.0f, "FOX");
+ break;
+
+ case 10:
+ func_800A1200(73, 173, 1.0f, 1.0f, "FALCO");
+ break;
+
+ case 20:
+ func_800A1200(73, 173, 1.0f, 1.0f, "SLIPPY");
+ break;
+
+ case 30:
+ func_800A1200(73, 173, 1.0f, 1.0f, "PEPPY");
+ break;
+
+ case 200:
+ case 240:
+ func_800A1200(73, 173, 1.0f, 1.0f, "WOLF");
+ break;
+
+ case 220:
+ case 260:
+ func_800A1200(73, 173, 1.0f, 1.0f, "LEON");
+ break;
+
+ case 210:
+ case 250:
+ func_800A1200(73, 173, 1.0f, 1.0f, "PIGMA");
+ break;
+
+ case 230:
+ case 270:
+ func_800A1200(73, 173, 1.0f, 1.0f, "ANDREW");
+ break;
+
+ case 170:
+ func_800A1200(73, 173, 1.0f, 1.0f, "BILL");
+ break;
+
+ case 40:
+ func_800A1200(73, 173, 1.0f, 1.0f, "KATT");
+ break;
+ }
+ }
+}
+
+void func_8008B044(void) {
+ switch (D_80161798) {
+ case 0:
+ if (D_80161690 == 0) {
+ return;
+ }
+
+ func_80019218(0x49002018, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
+
+ if (D_800CFF90 != 0) {
+ func_8001AF40(1);
+ }
+ D_80161794 = 0;
+ D_80161798 = 1;
+
+ case 1:
+ if (D_80161690 != 0) {
+ D_80161790++;
+ if (D_80161790 >= 7) {
+ if (D_80161794 & 1) {
+ func_80019218(0x49002018, D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
+ }
+ D_80161790 = 0;
+ D_80161794++;
+ }
+ D_80161690--;
+ } else {
+ D_800CFF90 = 0;
+ D_80161790 = 0;
+ D_80161798 = 0;
+ func_8001A838(0x49002018);
+ }
+ break;
+ }
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B044.s")
+void func_8008B1B0(void) {
+ f32 temp = 142.0f;
+ f32 temp2 = 18.0f;
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B1B0.s")
+ func_800B8DD0(&D_80137E64, 0x4E);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
+
+ switch (D_80161790 / 2) {
+ case 3:
+ func_8008556C(temp + 31.0f, temp2);
+ case 2:
+ func_80085514(temp + 24.0f, temp2);
+ case 1:
+ func_800854BC(temp + 18.0f, temp2);
+ case 0:
+ func_80085464(temp, temp2);
+ break;
+ default:
+ break;
+ }
+}
void func_8008B2A4(void) {
if (D_80177854 != 100) {
@@ -226,9 +575,78 @@ void func_8008B2A4(void) {
}
}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B2F0.s")
+void func_8008B2F0(void) {
+ f32 var_fv0;
+
+ switch (D_80161730) {
+ case 0:
+ D_801617B0 = 0;
+ D_8016179C = 20.0f;
+ D_801617A0 = 18.0f;
+
+ if (D_80161A90[0] >= 3) {
+ D_801617A4 = D_801617A8 = 1.5f;
+ } else {
+ D_801617A4 = D_801617A8 = 1.0f;
+ }
+
+ var_fv0 = D_80178280->unk264;
+ D_801617AC = var_fv0 / ((256.0f * D_801617A8) - 1.0f);
+
+ if (D_80161A90[0] >= 3) {
+ D_80161730 = 2;
+ } else {
+ D_80161730 = 1;
+ }
+ break;
+
+ case 1:
+ if (D_80161A90[0] >= 3) {
+ D_801617B0 = 55;
+ D_80161730 = 2;
+ }
+
+ case 2:
+ D_800D1EB4 = D_800D1EB8 = D_800D1EBC = 255;
+ if (D_801617B0 > 0) {
+ if (--D_801617B0 == 0) {
+ D_80178280->unk26C += 128;
+ }
+ }
+
+ if (((D_801617B0 != 0) || ((D_801617A4 - D_801617A8) > 0.1f)) && (D_80177DB0 & 2)) {
+ D_800D1EB4 = 0;
+ D_800D1EB8 = 255;
+ D_800D1EBC = 0;
+ }
+
+ if ((D_801617B0 == 0) && ((s32) D_80161A90[0] >= 3)) {
+ D_801617A4 = 1.5f;
+ } else {
+ D_801617A4 = 1.0f;
+ }
+
+ func_8009BC2C(&D_801617A8, D_801617A4, 0.02f, 1000.0f, 0.001f);
+
+ var_fv0 = D_80178280->unk264;
+ if (var_fv0 > (256.0f * D_801617A8) - 1.0f) {
+ var_fv0 = (256.0f * D_801617A8) - 1.0f;
+ }
+ D_801617AC = var_fv0 / ((256.0f * D_801617A8) - 1.0f);
+ break;
+ }
+}
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B5B0.s")
+void func_8008B5B0(f32 arg0, f32 arg1) {
+ func_800B8DD0(&D_80137E64, 0x4B);
+ gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
+ func_800856C0(arg0 + 8.0f, arg1 + 2.0f, D_801617A8, 1.0f, D_801617AC);
+ func_800B8DD0(&D_80137E64, 0x4C);
+ gDPSetPrimColor(D_80137E64++, 0, 0, D_800D1EB4, D_800D1EB8, D_800D1EBC, 0xFF);
+ func_80085618(arg0, arg1, 1.0f, 1.0f);
+ func_800855C4(arg0 + 7.0f + (D_801617A8 * 6.0f * 8.0f), arg1, 1.0f, 1.0f);
+ func_8008566C(arg0 + 7.0f, arg1, D_801617A8 * 6.0f, 1.0f);
+}
void func_8008B734(void) {
func_8008B2F0();
@@ -238,9 +656,64 @@ void func_8008B734(void) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B774.s")
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B9E8.s")
+void func_8008B9E8(void) {
+ s32 temp;
+
+ // clang-format off
+ if ((D_8016178C != 0) && (D_8016178C != 1)) { D_8016178C--; }
+ // clang-format on
+
+ if (D_80161788 != 0) {
+ D_80161788--;
+ }
+
+ if ((D_80161788 == 0) && (D_8016178C == 0)) {
+ if ((D_8017829C >= 4) && (D_801782A4 != 2) && (D_801782A4 != 3)) {
+ temp = func_8008B774();
+ if (temp == 1) {
+ D_80161788 = 20;
+ }
+ if (temp == 2) {
+ D_8016178C = 60;
+ }
+ } else {
+ D_80161788 = 0;
+ }
+ }
+
+ if ((D_801782A4 == 2) || (D_801782A4 == 3)) {
+ D_80161788 = 0;
+ D_8016178C = 0;
+ }
+}
+
+void func_8008BAE4(void) {
+ s32 r;
+ s32 g;
+ s32 b;
+ s32 alpha;
+
+ if (D_8016178C != 0) {
+ alpha = 192 / D_8016178C;
+ r = g = b = 255;
+ }
+
+ if (D_80161788 != 0) {
+ r = alpha = D_80161788 * 12;
+ g = b = 0;
+ }
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008BAE4.s")
+ if ((D_80161788 != 0) || (D_8016178C != 0)) {
+ func_800B8DD0(&D_80137E64, 0xC);
+ gDPSetPrimColor(D_80137E64++, 0, 0, r, g, b, alpha);
+ func_80005708(&D_8013B3C0);
+ func_80005B00(D_8013B3C0, -53.9f, -38.5f, -139.4f, 1);
+ func_80005C34(D_8013B3C0, 1.0f, 1.0f, 1.0f, 1);
+ func_80006EB8(&D_80137E64);
+ gSPDisplayList(D_80137E64++, D_800D1A40);
+ func_80005740(&D_8013B3C0);
+ }
+}
void func_8008BC80(void) {
if (D_80177854 != 100) {
@@ -271,7 +744,28 @@ s32 func_8008BCBC(s32 arg0) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008C104.s")
+#ifdef IMPORT_DATA_PENDING
+void func_8008C390(f32 arg0, f32 arg1, f32 arg2, s32 arg3) {
+ u8* D_800D1EC0[] = {
+ D_5000000, D_5000080, D_5000100, D_5000180, D_5000200, D_5000280, D_5000300, D_5000380, D_5000400, D_5000480,
+ };
+ s32 i;
+
+ for (i = 10; i != 1; i /= 10) {
+ if ((arg0 > 0.0f) && (arg1 > 0.0f)) {
+ func_8009D994(&D_80137E64, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
+ }
+ arg0 += 9.0f * arg2;
+ arg3 %= i;
+ }
+
+ if ((arg0 > 0.0f) && (arg1 > 0.0f)) {
+ func_8009D994(&D_80137E64, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
+ }
+}
+#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008C390.s")
+#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008C5C8.s")
diff --git a/src/overlays/segment_DF4260/DFEE30.c b/src/overlays/segment_DF4260/DFEE30.c
index 787c5659..faa555f5 100644
--- a/src/overlays/segment_DF4260/DFEE30.c
+++ b/src/overlays/segment_DF4260/DFEE30.c
@@ -14,7 +14,7 @@
void func_801924A8_DFF1E8(UnkStruct_func_801924A8_DFF1E8* arg0) {
switch (arg0->unk48) {
case 0:
- if (D_80178280->unk7C < arg0->unkC) {
+ if (D_80178280->unk07C < arg0->unkC) {
D_80177AB0 = 0;
D_80177A98 = 0;
arg0->unk48++;
diff --git a/src/overlays/segment_DF4260/DFEE30.h b/src/overlays/segment_DF4260/DFEE30.h
index d95269bd..288e3ba7 100644
--- a/src/overlays/segment_DF4260/DFEE30.h
+++ b/src/overlays/segment_DF4260/DFEE30.h
@@ -11,11 +11,6 @@ typedef struct {
} UnkStruct_func_801924A8_DFF1E8;
typedef struct {
- /* 0x00 */ char pad_0[0x7C];
- /* 0x7C */ f32 unk7C;
-} UnkStruct_D_80178280;
-
-typedef struct {
/* 0x00 */ char pad_0[0x10];
/* 0x10 */ f32 unk10;
/* 0x14 */ char pad_14[0x3C];
@@ -24,6 +19,5 @@ typedef struct {
extern s8 D_80177A98;
extern s8 D_80177AB0;
-extern UnkStruct_D_80178280* D_80178280;
#endif \ No newline at end of file
diff --git a/src/overlays/segment_EBFBE0/EBFCA0.c b/src/overlays/segment_EBFBE0/EBFCA0.c
index 0453363e..76dd3898 100644
--- a/src/overlays/segment_EBFBE0/EBFCA0.c
+++ b/src/overlays/segment_EBFBE0/EBFCA0.c
@@ -1,102 +1,5 @@
#include "global.h"
-void func_80005740(s32*);
-void func_80084688(s32, s32);
-void func_800A5D6C(void);
-void func_800BB5D0(void);
-void func_80006F20(void);
-void func_800B6F50(f32, f32, f32, f32, f32, f32);
-
-void func_800182F4(s32);
-void func_8001DC6C(s32, s32);
-void func_801877F0_EBFEB0(void);
-s32 func_80187ABC_EC017C(void);
-void func_80187B00_EC01C0(void);
-void func_80187E28_EC04E8(void);
-void func_801888E8_EC0FA8(void);
-void func_8018994C_EC200C(void);
-void func_8018A644_EC2D04(void);
-void func_8018ACEC_EC33AC(void);
-void func_8018B5C4_EC3C84(void);
-void func_8018C644_EC4D04(void);
-void func_80190E64_EC9524(void);
-void func_8019111C_EC97DC(void);
-void func_80187CA8_EC0368(void);
-void func_80188010_EC06D0(void);
-void func_80189208_EC18C8(void);
-void func_8018A2F8_EC29B8(void);
-void func_8018A990_EC3050(void);
-void func_8018B038_EC36F8(void);
-void func_8018C114_EC47D4(void);
-void func_8018CB90_EC5250(void);
-void func_8018F680_EC7D40(void);
-void func_8018F77C_EC7E3C(void);
-void func_8018F85C_EC7F1C(void);
-void func_8018F8E4_EC7FA4(void);
-void func_8018FC14_EC82D4(void);
-void func_8018FD08_EC83C8(void);
-void func_8018FF74_EC8634(void);
-void func_801906A0_EC8D60(void);
-void func_80190C9C_EC935C(void);
-void func_801918FC_EC9FBC(void);
-
-extern s32 D_800D2870;
-extern u8 D_800DD8B0[];
-extern s32 D_800DD8B4;
-
-extern u8 D_80137E78;
-extern s32 D_8013B3C0;
-
-extern s16 D_80161A34;
-extern s16 D_80161A36;
-
-extern s32 D_8017783C;
-extern s32 D_80177898;
-extern s32 D_80177AE0;
-extern s32 D_80177AF8;
-extern s32 D_80177DB0;
-extern s32 D_80178320;
-extern s32 D_80178328;
-extern s32 D_80178330;
-extern s32 D_80178340;
-extern s32 D_80178348;
-extern s32 D_80178350;
-extern s32 D_80178354;
-extern f32 D_80178420;
-extern f32 D_80178424;
-extern f32 D_80177978;
-extern f32 D_80177980;
-extern f32 D_80177988;
-extern f32 D_801779A0;
-extern f32 D_801779B8;
-extern f32 D_801779C0;
-extern s32 D_8017829C;
-extern s32 D_80178410;
-extern f32 D_8017842C;
-
-extern f32 D_801B7BC8;
-extern f32 D_801B7BCC;
-extern s32 D_801B8220[];
-extern u8 D_801B8248[][4];
-extern s32 D_801B827C;
-extern s32 D_801B8280;
-extern s32 D_801B8284;
-extern s32 D_801B8288;
-extern s32 D_801B82A8;
-extern s32 D_801B82AC;
-extern s32 D_801B82BC;
-extern s32 D_801B82C0;
-extern s32 D_801B82C4;
-extern f32 D_801B833C;
-extern s32 D_801B8344;
-extern s32 D_801B8348;
-
-extern s32 D_801ADA44_EE6104[];
-
-extern s32 D_5000200[];
-extern s32 D_5000300[];
-extern s32 D_50077B0;
-
void func_801875E0_EBFCA0(void) {
D_80137E78 = 2;
@@ -388,57 +291,7 @@ void func_80187E28_EC04E8(void) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/segment_EBFBE0/EBFCA0/func_801888E8_EC0FA8.s")
-//! TODO: Clean up this mess!
-
-f32 func_80005100(f32, f32);
-void func_8009BC2C(f32*, f32, f32, f32, f32);
-void func_8018D2B8_EC5978(s32);
-void func_8018EA78_EC7138(s32);
-void func_80191674_EC9D34(f32, f32, f32, f32*, f32*, f32*);
-
-extern s32 D_80178548;
-extern s32 D_8017854C;
-extern s32 D_80178550;
-extern s32 D_80178554;
-extern s32 D_80178558;
-extern s32 D_8017855C;
-extern s32 D_801ADA84_EE6144[];
-extern s32 D_801ADA94_EE6154;
-extern f32 D_801B82E0;
-extern f32 D_801B82E4;
-extern f32 D_801B82E8;
-extern s32 D_801B82F8;
-extern s32 D_801B82FC;
-extern s32 D_801B8300;
-extern f32 D_801B8304;
-extern f32 D_801B8308;
-extern f32 D_801B830C;
-extern s32 D_801B8310;
-extern s32 D_801B8314;
-extern s32 D_801B8318;
-extern s32 D_801B831C;
-extern s32 D_801B8320;
-extern s32 D_801B8324;
-
-typedef struct UnkStruct_D_801B8350 {
- /* 0x00 */ Vec3f unk0;
- /* 0x0C */ char pad_0C[0x4C];
- /* 0x54 */ s32 unk54;
- /* 0x58 */ s32 unk58;
-} UnkStruct_D_801B8350;
-
extern UnkStruct_D_801B8350 D_801B8350[];
-extern s32 D_801B86A4;
-extern f32 D_801B86C8;
-extern f32 D_801B86CC;
-extern f32 D_801B86D0;
-extern f32 D_801B86D4;
-extern f32 D_801B86D8;
-extern f32 D_801B86DC;
-extern s32 D_801B9040;
-extern f32 D_801B905C;
-extern f32 D_801B9060;
-extern f32 D_801B9064;
#define M_PI 3.1415927f
diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml
index e86aa08a..64f859d4 100644
--- a/tools/permuter_settings.toml
+++ b/tools/permuter_settings.toml
@@ -1,4 +1,8 @@
compiler_type = "ido"
+[preserve_macros]
+"g[DS]P.*" = "void"
+"gs[DS]P.*" = "void"
+
[decompme.compilers]
"tools/ido_recomp/linux/5.3/cc" = "ido5.3" \ No newline at end of file