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
This commit is contained in:
Alejandro Asenjo Nitti 2023-10-23 13:01:29 -03:00 committed by GitHub
parent 90538c74e5
commit fd742f93be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 837 additions and 198 deletions

View File

@ -1,12 +1,67 @@
#ifndef FUNCTIONS_H #ifndef FUNCTIONS_H
#define 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 **); void func_80006EB8(Gfx **);
s32 func_8008BCBC(s32 /*arg0*/); void func_80006F20(void);
void func_8009D994(Gfx*, void*, u32, u32, f32, f32, f32, f32);
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_8009FEA0(s32, s32, s32);
void func_800A1200(s32, s32, f32, f32, s32*); void func_800A1200(s32, s32, f32, f32, char*);
void func_800B8DD0(Gfx **, s32); 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 #endif

View File

@ -5,9 +5,8 @@
#include "PR/mbi.h" #include "PR/mbi.h"
#include "functions.h" #include "functions.h"
#include "variables.h" #include "variables.h"
#include "structs.h"
#include "macros.h" #include "macros.h"
#include "sf64math.h" #include "sf64math.h"
extern Gfx* D_80137E64;
#endif // GLOBAL_H #endif // GLOBAL_H

View File

@ -13,16 +13,17 @@ typedef struct UnkStruct_func_80095350 {
void func_800612B8(void*, u16, void*); void func_800612B8(void*, u16, void*);
void func_800613C4(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_80085944(void);
void func_80086CC8(void); void func_80086CC8(void);
void func_80086DCC(void); void func_80086DCC(void);
void func_80087B5C(void); void func_80087B5C(void);
void func_80089994(s32 arg0);
void func_8008A4DC(void); void func_8008A4DC(void);
void func_8008B044(void); void func_8008B044(void);
void func_8008B1B0(void); void func_8008B1B0(void);
void func_8008B2F0(void); void func_8008B2F0(void);
void func_8008B5B0(f32, f32); void func_8008B5B0(f32 arg0, f32 arg1);
void func_8008B734(void); void func_8008B734(void);
void func_8008B9E8(void); void func_8008B9E8(void);
void func_8008BAE4(void); void func_8008BAE4(void);
@ -37,10 +38,9 @@ void func_8008E5E8(void);
void func_8008E620(void); void func_8008E620(void);
void func_80090E8C(void); void func_80090E8C(void);
void func_800910C0(void); void func_800910C0(void);
void func_8009C320(Gfx*, s32*, 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_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_8009E1E8(Gfx*, s32*, s32, s32, f32, f32, f32, f32);
// Weird addresses, assets maybe? // Weird addresses, assets maybe?
extern s32 D_1000E80; extern s32 D_1000E80;
@ -58,17 +58,22 @@ extern s32 D_1011CA0;
extern s32 D_1011D70; extern s32 D_1011D70;
extern s32 D_1011D90; extern s32 D_1011D90;
extern s32 D_1011E60; extern s32 D_1011E60;
extern s32 D_1013170; extern s32 D_1013170[];
extern s32 D_1013570; extern s32 D_1013570[];
extern s32 D_1013580; extern s32 D_1013580;
extern s32 D_1013700; extern s32 D_1013700;
extern s32 D_20031B0[];
extern s32 D_2010A30[];
extern s32 D_3000B20; extern s32 D_3000B20;
extern s32 D_30013E0; extern s32 D_30013E0;
extern s32 D_80161690; extern s32 D_80161690;
extern s32 D_80161718;
extern s32 D_8016171C;
extern s32 D_801617E8[]; extern s32 D_801617E8[];
extern s32 D_801617FC; extern s32 D_801617FC;
extern s32 D_80161A98; extern s32 D_80161A98;
extern s32 D_80177838;
extern s32 D_80177854; extern s32 D_80177854;
extern s32 D_80177880; extern s32 D_80177880;
extern s32 D_801778B0[]; extern s32 D_801778B0[];

View File

@ -19,4 +19,4 @@ typedef struct {
/* 0x8 */ f32 z; /* 0x8 */ f32 z;
} Vec3f; // size = 0xC } Vec3f; // size = 0xC
#endif #endif

26
include/structs.h Normal file
View File

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

View File

@ -1,7 +1,178 @@
#ifndef VARIABLES_H #ifndef VARIABLES_H
#define 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 #endif // VARIABLES_H

View File

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

View File

@ -7,7 +7,6 @@ extern s32 D_8013B3AC;
extern s32 D_8013B3B0; extern s32 D_8013B3B0;
extern s32 D_8013B3B4; extern s32 D_8013B3B4;
extern void func_80005680(s32, s32);
extern f32 func_8001FBE8(f32); extern f32 func_8001FBE8(f32);
extern u64 osGetTime(void); extern u64 osGetTime(void);

View File

@ -3,13 +3,13 @@
// https://decomp.me/scratch/8H8k4 100% // https://decomp.me/scratch/8H8k4 100%
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005680.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005680.s")
void func_80005708(s32* arg0) { void func_80005708(Matrix** mtx) {
func_80005680(*arg0 + 64, *arg0); func_80005680(*mtx + 1, *mtx);
*arg0 += 0x40; *mtx += 1;
} }
void func_80005740(s32* arg0) { void func_80005740(Matrix** mtx) {
*arg0 -= 64; *mtx -= 1;
} }
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005754.s") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005754.s")

View File

@ -1,8 +1,5 @@
#include "hud.h" #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_80084930.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084B94.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_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") #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") #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") #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_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);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089710.s") 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_800897B0.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_80089850.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_800898F0.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);
}
#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") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089994.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089AF4.s") 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);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089B94.s") 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);
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089C38.s") void func_80089C38(void) {
s32 alpha;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089D28.s") func_800B8DD0(&D_80137E64, 0xC);
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089E98.s") alpha = D_80177DB0 % 21;
if (alpha > 10) {
alpha = 20 - alpha;
}
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);
}
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") #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_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);
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B044.s") switch ((s32) D_80177D68) {
case 0:
func_800A1200(73, 173, 1.0f, 1.0f, "FOX");
break;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B1B0.s") 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;
}
}
void func_8008B1B0(void) {
f32 temp = 142.0f;
f32 temp2 = 18.0f;
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) { void func_8008B2A4(void) {
if (D_80177854 != 100) { 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;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B5B0.s") 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;
}
}
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) { void func_8008B734(void) {
func_8008B2F0(); 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_8008B774.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008B9E8.s") void func_8008B9E8(void) {
s32 temp;
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008BAE4.s") // 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;
}
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) { void func_8008BC80(void) {
if (D_80177854 != 100) { 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") #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") #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") #pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008C5C8.s")

View File

@ -14,7 +14,7 @@
void func_801924A8_DFF1E8(UnkStruct_func_801924A8_DFF1E8* arg0) { void func_801924A8_DFF1E8(UnkStruct_func_801924A8_DFF1E8* arg0) {
switch (arg0->unk48) { switch (arg0->unk48) {
case 0: case 0:
if (D_80178280->unk7C < arg0->unkC) { if (D_80178280->unk07C < arg0->unkC) {
D_80177AB0 = 0; D_80177AB0 = 0;
D_80177A98 = 0; D_80177A98 = 0;
arg0->unk48++; arg0->unk48++;

View File

@ -10,11 +10,6 @@ typedef struct {
/* 0x48 */ s32 unk48; /* 0x48 */ s32 unk48;
} UnkStruct_func_801924A8_DFF1E8; } UnkStruct_func_801924A8_DFF1E8;
typedef struct {
/* 0x00 */ char pad_0[0x7C];
/* 0x7C */ f32 unk7C;
} UnkStruct_D_80178280;
typedef struct { typedef struct {
/* 0x00 */ char pad_0[0x10]; /* 0x00 */ char pad_0[0x10];
/* 0x10 */ f32 unk10; /* 0x10 */ f32 unk10;
@ -24,6 +19,5 @@ typedef struct {
extern s8 D_80177A98; extern s8 D_80177A98;
extern s8 D_80177AB0; extern s8 D_80177AB0;
extern UnkStruct_D_80178280* D_80178280;
#endif #endif

View File

@ -1,102 +1,5 @@
#include "global.h" #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) { void func_801875E0_EBFCA0(void) {
D_80137E78 = 2; 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") #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 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 #define M_PI 3.1415927f

View File

@ -1,4 +1,8 @@
compiler_type = "ido" compiler_type = "ido"
[preserve_macros]
"g[DS]P.*" = "void"
"gs[DS]P.*" = "void"
[decompme.compilers] [decompme.compilers]
"tools/ido_recomp/linux/5.3/cc" = "ido5.3" "tools/ido_recomp/linux/5.3/cc" = "ido5.3"