Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 33 additions & 3 deletions src/melee/lb/lbaudio_ax.c
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#include "lbaudio_ax.static.h"

#include "baselib/forward.h"
#include <m2c_macros.h>
#include <melee/ft/forward.h>

#include <baselib/axdriver.h>
#include <baselib/gobjplink.h>
#include <baselib/synth.h>
#include <melee/gr/stage.h>
#include <melee/lb/lbarchive.h>
Expand Down Expand Up @@ -806,16 +808,44 @@ int fn_800250A0(int arg0, int arg1, int arg2, int arg3)

/// #fn_800262A0

/// #fn_800263B4

void fn_800263B4(void* ptr)
{
if (ptr != NULL) {
void* p = ptr;
HSD_ObjFree(&lbl_80433710, p);
}
}
/// #lbAudioAx_800263E8

/// #lbAudioAx_800264E4

/// #lbAudioAx_80026510

/// #lbAudioAx_800265C4
bool lbAudioAx_800265C4(HSD_GObj* arg0, int arg1)
{
HSD_GObj* gobj;

PAD_STACK(16);

gobj = M2C_FIELD(HSD_GObj_Entities, HSD_GObj**, 0xF8);

while (gobj != NULL) {
int* user_data = gobj->user_data;
if (user_data != NULL) {
if ((u32)user_data[2] == (u32)arg0) {
if (user_data[12] != -1 && user_data[12] == arg1) {
AXDriverKeyOff(user_data[12]);
if (gobj != NULL) {
HSD_GObjPLink_80390228(gobj);
}
return true;
}
}
}
gobj = gobj->next;
}
return false;
}
/// #fn_80026650

/// #fn_800267B0
Expand Down
4 changes: 2 additions & 2 deletions src/melee/lb/lbaudio_ax.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@
/* 025E38 */ bool fn_80025E38(HSD_GObj* gobj);
/* 025FAC */ UNK_RET fn_80025FAC(UNK_PARAMS);
/* 0262A0 */ UNK_RET fn_800262A0(UNK_PARAMS);
/* 0263B4 */ UNK_RET fn_800263B4(UNK_PARAMS);
/* 0263B4 */ void fn_800263B4(void* ptr);
/* 0263E8 */ HSD_GObj* lbAudioAx_800263E8(float, HSD_GObj*, int, int, int, int, int, int, int, int, int);
/* 0264E4 */ bool lbAudioAx_800264E4(UNK_T);
/* 026510 */ void lbAudioAx_80026510(HSD_GObj*);
/* 0265C4 */ enum_t lbAudioAx_800265C4(HSD_GObj*, enum_t sfx);
/* 0265C4 */ bool lbAudioAx_800265C4(HSD_GObj*, int sfx);
/* 026650 */ UNK_RET fn_80026650(UNK_PARAMS);
/* 0267B0 */ UNK_RET fn_800267B0(UNK_PARAMS);
/* 0268B4 */ UNK_RET fn_800268B4(UNK_PARAMS);
Expand Down
24 changes: 23 additions & 1 deletion src/melee/lb/lbbgflash.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,34 @@ extern s32 lbl_804D3840;
extern s32 lbl_804D3844;
extern lbl_80433658_t lbl_80433658;

typedef struct BgFlashData2 {
u8 state;
u8 pad1[3];
int x4;
int x8;
u8 xC;
u8 xD;
u8 xE;
u8 xF;
f32 x10;
f32 x14;
f32 x18;
f32 x1C;
u8 pad2[0x10];
u8 x30;
u8 x31;
u8 x32;
u8 x33;
s32 x34;
s32 x38;
s32 x3C;
} BgFlashData2;

/// #fn_8001FC08

/// #fn_8001FEC4

/// #fn_800204C8

/// #lbBgFlash_800205F0

void lbBgFlash_8002063C(int count)
Expand Down
2 changes: 1 addition & 1 deletion src/melee/lb/lbbgflash.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

/* 01FC08 */ UNK_RET fn_8001FC08(UNK_PARAMS);
/* 01FEC4 */ UNK_RET fn_8001FEC4(UNK_PARAMS);
/* 0204C8 */ UNK_RET fn_800204C8(UNK_PARAMS);
/* 0204C8 */ void fn_800204C8(void);
/* 0205F0 */ void lbBgFlash_800205F0(void);
/* 02063C */ void lbBgFlash_8002063C(int);
/* 020688 */ void lbBgFlash_80020688(int);
Expand Down
47 changes: 45 additions & 2 deletions src/melee/lb/lbmthp.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#include "lbmthp.static.h"

#include <dolphin/gx/GXTexture.h>
#include <melee/lb/lbanim.h>
#include <melee/lb/types.h>
#include <sysdolphin/baselib/sobjlib.h>

/// #fn_8001E910

Expand Down Expand Up @@ -145,8 +147,49 @@ void lbMthp_8001F87C(void)
lbl_804333E0.unk_14C = 0;
}

/// #lbMthp8001F890
void* lbMthp8001F890(HSD_GObj* gobj)
{
lbl_804335B8.x70 = 0;
lbl_804335B8.x74 = lbl_804335B8.x6C;
lbl_804335B8.x76 = lbl_804335B8.x6E;
lbl_804335B8.x78 = 6;
lbl_804335B8.x7C = 0;
lbl_804335B8.x84 = lbl_804D7CE0;
lbl_804335B8.x80 = lbl_804D7CE0;
lbl_804335B8.x88 = &lbl_804335B8.x70;
lbl_804335B8.x8C = 0;
lbl_804335B8.x90 = (struct HSD_SObj_803A477C_t_ext*)HSD_SObjLib_803A477C(gobj, (int)&lbl_804335B8.x88, 0, 0, 0x80, 0);
lbl_804335B8.x90->x40 |= 0x10;
return lbl_804335B8.x90;
}

/// #lbMthp8001F928
void lbMthp8001F928(HSD_GObj* gobj, int arg1)
{
u16* pWidth = &lbl_804335B8.x6C;
u16* pHeight = &lbl_804335B8.x6E;

/* First texture - full size */
GXInitTexObj(&lbl_804335B8.tex0, lbl_804335B8.x20, lbl_804335B8.x6C,
lbl_804335B8.x6E, 1, 0, 0, 0);
GXInitTexObjLOD(&lbl_804335B8.tex0, 0, 0, lbl_804D7CE0, lbl_804D7CE0,
lbl_804D7CE0, 0, 0, 0);
GXLoadTexObj(&lbl_804335B8.tex0, 0);

/* Second texture - half size */
GXInitTexObj(&lbl_804335B8.tex1, lbl_804335B8.x44, (u16) (*pWidth >> 1),
(u16) (*pHeight >> 1), 1, 0, 0, 0);
GXInitTexObjLOD(&lbl_804335B8.tex1, 0, 0, lbl_804D7CE0, lbl_804D7CE0,
lbl_804D7CE0, 0, 0, 0);
GXLoadTexObj(&lbl_804335B8.tex1, 1);

/* Third texture - half size */
GXInitTexObj(&lbl_804335B8.tex2, lbl_804335B8.x68, (u16) (*pWidth >> 1),
(u16) (*pHeight >> 1), 1, 0, 0, 0);
GXInitTexObjLOD(&lbl_804335B8.tex2, 0, 0, lbl_804D7CE0, lbl_804D7CE0,
lbl_804D7CE0, 0, 0, 0);
GXLoadTexObj(&lbl_804335B8.tex2, 2);

HSD_SObjLib_803A49E0(gobj, arg1);
}

/// #lbMthp8001FAA0
2 changes: 1 addition & 1 deletion src/melee/lb/lbmthp.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ typedef struct THPDecComp {
/* 01F67C */ void lbMthp_8001F67C(HSD_GObj*, int);
/* 01F800 */ void lbMthp_8001F800(void);
/* 01F87C */ void lbMthp_8001F87C(void);
/* 01F890 */ UNK_T lbMthp8001F890(HSD_GObj*);
/* 01F890 */ void* lbMthp8001F890(HSD_GObj*);
/* 01F928 */ void lbMthp8001F928(HSD_GObj*, int);
/* 01FAA0 */ UNK_RET lbMthp8001FAA0(const char* filename, int, int);

Expand Down
37 changes: 37 additions & 0 deletions src/melee/lb/lbmthp.static.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

#include "lbmthp.h" // IWYU pragma: export

#include <dolphin/gx/GXStruct.h>

struct lbl_804333E0_t {
/* 0x000 */ char pad_0[0x84];
/* 0x084 */ s32 unk_84; /* inferred */
Expand All @@ -23,4 +25,39 @@ STATIC_ASSERT(sizeof(struct lbl_804333E0_t) == 0x1D8);
/* 4333E0 */ static struct lbl_804333E0_t lbl_804333E0;
/* 4D7CC0 */ static float lb_804D7CC0;

/* HSD_SObj_803A477C_t extended for this function */
struct HSD_SObj_803A477C_t_ext {
/* 0x00 */ u8 pad0[0x10];
/* 0x10 */ float x10, x14;
/* 0x18 */ u8 pad18[0x3C - 0x18];
/* 0x3C */ u8 x3C, x3D, x3E, x3F;
/* 0x40 */ u32 x40;
};

struct lbl_804335B8_t {
/* 0x00 */ GXTexObj tex0; /* 0x00-0x20 (size 0x20) */
/* 0x20 */ void* x20; /* image ptr for tex0 */
/* 0x24 */ GXTexObj tex1; /* 0x24-0x44 (size 0x20) */
/* 0x44 */ void* x44; /* image ptr for tex1 */
/* 0x48 */ GXTexObj tex2; /* 0x48-0x68 (size 0x20) */
/* 0x68 */ void* x68; /* image ptr for tex2 */
/* 0x6C */ u16 x6C; /* width */
/* 0x6E */ u16 x6E; /* height */
/* 0x70 */ s32 x70;
/* 0x74 */ u16 x74;
/* 0x76 */ u16 x76;
/* 0x78 */ s32 x78;
/* 0x7C */ s32 x7C;
/* 0x80 */ float x80;
/* 0x84 */ float x84;
/* 0x88 */ void* x88;
/* 0x8C */ s32 x8C;
/* 0x90 */ struct HSD_SObj_803A477C_t_ext* x90;
/* 0x94 */ char pad_94[0xA0 - 0x94];
}; /* size = 0xA0 */
STATIC_ASSERT(sizeof(struct lbl_804335B8_t) == 0xA0);

/* 4335B8 */ static struct lbl_804335B8_t lbl_804335B8;
/* 4D7CE0 */ static float lbl_804D7CE0;

#endif
71 changes: 71 additions & 0 deletions src/melee/lb/lbrefract.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@

#include <math.h>
#include <dolphin/gx/GXTexture.h>
#include <baselib/cobj.h>
#include <baselib/debug.h>
#include <baselib/dobj.h>
#include <baselib/state.h>
#include <MetroTRK/intrinsics.h>

extern HSD_DObjInfo hsdDObj;

/* 021F34 */ static UNK_RET fn_80021F34(UNK_PARAMS);
/* 021F70 */ static UNK_RET fn_80021F70(UNK_PARAMS);
/* 021FB4 */ static UNK_RET fn_80021FB4(UNK_PARAMS);
Expand All @@ -16,6 +20,7 @@
/* 022120 */ static void fn_80022120(lbRefract_CallbackData* arg0, s32 arg1,
u32 arg2, u32* arg3, u32* arg4, u8* arg5,
u8* arg6);
/* 022608 */ static void fn_80022608(HSD_DObj* dobj, Mtx vmtx, Mtx pmtx, u32 rendermode);
/* 022DF8 */ static inline float lbRefract_80022DF8(float x);
/* 02219C */ s32 lbRefract_8002219C(lbRefract_CallbackData*, s32, s32, u16,
u16);
Expand Down Expand Up @@ -88,12 +93,78 @@ s32 lbRefract_8002219C(lbRefract_CallbackData* arg0, s32 arg1, s32 arg2,
}
}

void lbRefract_8002247C(HSD_CObj* cobj) {
s32 proj_type;

if (lbl_804336D0[0] == 0) {
return;
}

proj_type = HSD_CObjGetProjectionType(cobj);

switch (proj_type) {
case 1:
{
f32 scale = 0.5F;
f32 trans = 0.5F;
MTXLightPerspective((MtxPtr)((char*)lbl_804336D0 + 0x10),
M2C_FIELD(cobj, f32*, 0x40),
M2C_FIELD(cobj, f32*, 0x44),
scale, scale, scale, trans);
break;
}
case 2:
{
f32 scale = 0.5F;
MTXLightFrustum((MtxPtr)((char*)lbl_804336D0 + 0x10),
M2C_FIELD(cobj, f32*, 0x40),
M2C_FIELD(cobj, f32*, 0x44),
M2C_FIELD(cobj, f32*, 0x48),
M2C_FIELD(cobj, f32*, 0x4c),
M2C_FIELD(cobj, f32*, 0x38),
scale, 0.5F, scale, scale);
break;
}
default:
{
f32 scale = 0.5F;
MTXLightOrtho((MtxPtr)((char*)lbl_804336D0 + 0x10),
M2C_FIELD(cobj, f32*, 0x40),
M2C_FIELD(cobj, f32*, 0x44),
M2C_FIELD(cobj, f32*, 0x48),
M2C_FIELD(cobj, f32*, 0x4c),
scale, 0.5F, scale, scale);
break;
}
}
}

void lbRefract_80022560(void)
{
if (lbl_804336D0[0] != 0) {
GXSetTexCopySrc(0, 0, 0x280, 0x1E0);
GXSetTexCopyDst(0x140, 0xF0, 4, 1);
GXCopyTex((void*)lbl_804336D0[1], 0);
GXPixModeSync();
GXInvalidateTexAll();
}
}

void lbRefract_800225D4(void)
{
GXSetTevDirect(0);
GXSetNumIndStages(0);
HSD_StateInvalidate(-1);
}

static void fn_80022608(HSD_DObj* dobj, Mtx vmtx, Mtx pmtx, u32 rendermode)
{
hsdDObj.disp(dobj, vmtx, pmtx, rendermode);
GXSetTevDirect(0);
GXSetNumIndStages(0);
HSD_StateInvalidate(-1);
}

void lbRefract_80022BB8(void)
{
lbl_804336D0[0] += 1;
Expand Down
9 changes: 5 additions & 4 deletions src/melee/lb/lbsnap.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,25 +295,26 @@ int lbSnap_8001DF6C(int chan)
{
struct Unk80433380_48* ptr = &lbSnap_80433380.x48[chan];
char text[0x21];
int ret;
PAD_STACK(8);

if (ptr->unk0 == 0 && lbSnap_80433380.x54_stateChanged[chan] != 0) {
ptr->unk0 = 8;
}
if (ptr->unk0 == 0) {
ret = ptr->unk0;
if (ret == 0) {
lbSnap_80433380.x48[chan].unk0 = 8;
lbSnap_8001D4A4(chan, text);
lbSnap_803BACC8.x14 =
lbSnap_80433380.x0->xC +
((int) &lbSnap_80433380.x0->x38 - (int) &lbSnap_80433380.x0->x0);
lbSnap_803BACC8.x1C = lbSnap_80433380.x0;
return lb_8001BB48(chan, text, &lbSnap_803BACC8.x14, &lbSnap_803BACC8,
ret = lb_8001BB48(chan, text, &lbSnap_803BACC8.x14, &lbSnap_803BACC8,
lbSnap_80433380.x4_string,
lbSnap_80433380.x44_LbMcSnap_MemSnapIconData[0],
lbSnap_80433380.x44_LbMcSnap_MemSnapIconData[1], 0);
} else {
return ptr->unk0;
}
return ret;
}

int lbSnap_8001E058(int chan, int index)
Expand Down