more "hud" functions (#24)

* decompile func_80086444

* func_80084930

* func_80084B94

* decompile func_80084E78

* pr review
This commit is contained in:
Alejandro Asenjo Nitti
2023-11-17 12:17:56 -03:00
committed by GitHub
parent 3fbfdf01d2
commit d34a5e370a
4 changed files with 170 additions and 12 deletions
+11 -10
View File
@@ -11,10 +11,11 @@ typedef struct UnkStruct_func_80095350 {
/* 0xB6 */ s16 unkB6;
} UnkStruct_func_80095350;
void func_80084E78(Gfx**, void*, void*, s32, s32, f32, f32, f32, f32, f32, f32);
void func_80084E78(Gfx** gfxP, void* arg1, void* arg2, u32 arg3, u32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, f32 argA);
void func_80085944(void);
void func_80086CC8(void);
void func_80086DCC(void);
void func_80086CC8(void);
void func_80086DCC(void);
void func_80087B5C(void);
void func_80089994(s32 arg0);
void func_8008A4DC(void);
@@ -24,18 +25,18 @@ void func_8008B2F0(void);
void func_8008B734(void);
void func_8008B9E8(void);
void func_8008BAE4(void);
void func_8008CBE4(void);
void func_8008D250(void);
void func_8008D31C(void);
void func_8008D4F0(f32, f32);
void func_8008D7F4(void);
void func_8008D984(void);
void func_8008CBE4(void);
void func_8008D250(void);
void func_8008D31C(void);
void func_8008D4F0(f32, f32);
void func_8008D7F4(void);
void func_8008D984(void);
void func_8008DC34(void);
void func_8008E5E8(void);
s32 func_80090E8C(Object_2F4* arg0);
s32 func_800910C0(Object_2F4* arg0);
void func_8009C320(Gfx**, void*, void*, 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_8009E1E8(Gfx**, u16*, s32, s32, f32, f32, f32, f32);
// Weird addresses, assets maybe?
+1 -1
View File
@@ -135,7 +135,7 @@ typedef struct UnkStruct_D_80178280 {
/* 0x138 */ f32 unk_138;
/* 0x13C */ char pad13C[0x8C];
/* 0x1C8 */ s32 unk_1C8;
/* 0x1CC */ char pad1CC[0x4];
/* 0x1CC */ s32 unk_1CC;
/* 0x1D0 */ s32 unk_1D0;
/* 0x1D4 */ char pad1D4[0x3C];
/* 0x210 */ s32 unk_210;
+5
View File
@@ -513,6 +513,8 @@ extern Gfx D_200F080[];
extern Gfx D_200F910[];
extern Gfx D_20101A0[];
extern u8 D_3000000[];
extern u16 D_3000080[];
extern u16 D_3000BC0[];
extern u8 D_300D350[];
extern u16 D_300D398[];
@@ -542,6 +544,7 @@ extern u8 D_500A500[];
extern u8 D_500A5F0[];
extern u8 D_500A6E0[];
extern u8 D_500A7D0[];
extern Gfx D_500B600[];
extern ObjectInit* D_6010088[];
extern ObjectInit* D_602B148[];
@@ -549,6 +552,8 @@ extern ObjectInit* D_602F18C[];
extern ObjectInit* D_C0356A4[];
extern Gfx D_6004570[];
extern u8 D_6001B80[];
extern u8 D_60020D0[];
extern Gfx D_D0098B0[];
extern Gfx D_F014180[];
+153 -1
View File
@@ -1,10 +1,124 @@
#include "hud.h"
#ifdef IMPORT_DATA_PENDING
void func_80084930(f32 arg0, f32 arg1, s32 arg2) {
u8* D_800D1A58[] = {
D_3000000,
D_3000000,
D_3000000,
};
u16* D_800D1A64[] = {
D_3000080,
D_3000080,
D_3000080,
};
UnkStruct_D_80178280* temp;
s32 var_t0;
s32 var_v0;
s32 i;
func_800B8DD0(&gMasterDisp, 0x4E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
temp = D_80178280;
var_t0 = 0;
switch (temp->unk_1CC) {
case 0:
var_t0 = 0;
break;
case 1:
var_t0 = 1;
break;
case 2:
var_t0 = 2;
break;
}
func_8009C320(&gMasterDisp, D_800D1A58[var_t0], D_800D1A64[var_t0], 16, 16, arg0, arg1 - 2.0f, 1.0f, 1.0f);
func_8009C320(&gMasterDisp, D_1011ED0, D_1011F08, 16, 7, arg0 + 16.0f, arg1 + 7.0f, 1.0f, 1.0f);
if (arg2 >= 0) {
arg0 += 11.0f;
arg1 -= 1.0f;
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
var_v0 = 10;
if (arg2 < 0) {
arg2 = 0;
}
if (arg2 > 99) {
arg2 = 99;
}
for (var_v0 = 10, i = 1; arg2 >= var_v0; i++) {
var_v0 *= 10;
}
arg0 += 16.0f + 8 * (2 - i);
func_800869A0(arg0, arg1, arg2, 1.0f, 1, 99);
}
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084930.s")
#endif
#ifdef IMPORT_DATA_PENDING
void func_80084B94(s32 arg0) {
s32 i;
Vec3f D_800D1A70[] = {
{ 191.0f, -129.0f, -600.0f },
{ 0.0f, -129.0f, -600.0f },
{ -191.0f, -129.0f, -600.0f },
};
func_800B8DD0(&gMasterDisp, 0x24);
if (arg0 == 0) {
for (i = 1; i < 4; i++) {
if (((D_801778B0[i] != 0) || (D_80178280->unk_1C8 != 7)) && (D_801778B0[i] <= 0) && (D_801778B0[i] != -2)) {
Matrix_Push(&D_8013B3C0);
Matrix_Translate(D_8013B3C0, D_800D1A70[i - 1].x, D_800D1A70[i - 1].y, D_800D1A70[i - 1].z, 1);
Matrix_Scale(D_8013B3C0, 0.68f, 0.68f, 1.0f, 1);
Matrix_RotateZ(D_8013B3C0, 0.7853982f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
Matrix_RotateZ(D_8013B3C0, 4.712389f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
Matrix_Pop(&D_8013B3C0);
}
}
} else {
Matrix_Push(&D_8013B3C0);
Matrix_Translate(D_8013B3C0, -234.0f, -167.0f, -600.0f, 1);
Matrix_RotateZ(D_8013B3C0, 0.7853982f, 1);
Matrix_Scale(D_8013B3C0, 0.68f, 0.68f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
Matrix_RotateZ(D_8013B3C0, 4.712389f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
Matrix_Pop(&D_8013B3C0);
}
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084B94.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084E78.s")
void func_80084E78(Gfx** gfxP, void* arg1, void* arg2, u32 arg3, u32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8,
f32 arg9, f32 argA) {
gDPPipeSync((*gfxP)++);
gDPLoadTLUT((*gfxP)++, 0x100, 0x100, arg2);
gDPLoadTextureBlock((*gfxP)++, arg1, G_IM_FMT_CI, G_IM_SIZ_8b, arg3, arg4, 0, G_TX_NOMIRROR, G_TX_NOMIRROR,
G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle((*gfxP)++, (arg5 * 4.0f), (arg6 * 4.0f), ((arg5 + (arg9 * arg7)) * 4.0f),
((arg6 + (argA * arg8)) * 4.0f), G_TX_RENDERTILE, 0 * 0x20, 0 * 0x20, (s32) (1 / arg7 * 0x400),
(s32) (1 / arg8 * 0x400));
}
void func_800853A4(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
func_8009D0BC(&gMasterDisp, &D_1013170, &D_1013570, 24, 17, arg0, arg1, arg2, arg3);
@@ -160,7 +274,45 @@ s32 func_800863C8(void) {
return var_v1;
}
#ifdef IMPORT_DATA_PENDING
void func_80086444(void) {
s32 i = 9;
s32 j;
u8* D_800D1C9C[] = { D_6001B80, D_60020D0 };
s32 D_800D1CA4[] = { 128, 104 };
s32 D_800D1CAC[] = { 19, 19 };
f32 D_800D1CB4[] = { 96.0f, 112.0f };
f32 D_800D1CBC[] = { 89.0f, 89.0f };
f32 D_800D1CC4[] = { 2.0f, 5.0f };
f32 D_800D1CCC[] = { 1.6f, 1.6f };
switch (D_80178234) {
case 19:
i = 1;
break;
case 6:
i = 0;
break;
default:
break;
}
if (i != 9) {
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
for (j = 0; j < 19; j++) {
func_8009D994(&gMasterDisp, D_800D1C9C[i] + (D_800D1CA4[i] * j), D_800D1CA4[i], 1, D_800D1CB4[i],
D_800D1CBC[i] + j - 28.0f, 1.0f, 1.0f);
}
}
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80086444.s")
#endif
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80086664.s")