Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partially match mnhyaku #1404

Merged
merged 3 commits into from
Jul 26, 2024
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
4 changes: 4 additions & 0 deletions src/melee/lb/lbaudio_ax.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
/* 0237A8 */ u32 lbAudioAx_800237A8(enum_t sfx_id, u8 sfx_vol, u8 sfx_pan);
/* 023870 */ int lbAudioAx_80023870(int, int, int, int);
/* 023F28 */ void lbAudioAx_80023F28(s32);
/* 024030 */ void lbAudioAx_80024030(s32);
/* 024184 */ int lbAudioAx_80024184(int, int, int, int);
/* 02438C */ void lbAudioAx_8002438C(s32);
/* 024B1C */ void lbAudioAx_80024B1C(s32, s32);
Expand All @@ -35,5 +36,8 @@
/* 0265C4 */ enum_t lbAudioAx_800265C4(HSD_GObj*, enum_t sfx);
/* 027DBC */ void lbAudioAx_80027DBC(void);
/* 02838C */ void lbAudioAx_8002838C(void);
/* 026F2C */ void lbAudioAx_80026F2C(s32);

#endif


273 changes: 273 additions & 0 deletions src/melee/mn/mnhyaku.c
Original file line number Diff line number Diff line change
@@ -1 +1,274 @@
#include "lb/lbaudio_ax.h"

#include "lb/lbarchive.h"

#include "sc/types.h"
#include "sc/forward.h"

#include <platform.h>

#include <baselib/forward.h>
#include <baselib/gobj.h>
#include <baselib/gobjobject.h>
#include <baselib/jobj.h>
#include <baselib/sislib.h>
#include <baselib/memory.h>
#include <baselib/gobjuserdata.h>
#include <baselib/gobjgxlink.h>
#include <baselib/gobjplink.h>
#include <baselib/gobjproc.h>
#include <dolphin/os.h>

void mnHyaku_8024C68C(HSD_GObj *);
void fn_8024C9F0(HSD_GObj *);
void fn_8024CA50(HSD_GObj *);
void fn_8024CAC8(HSD_GObj *);
void mnHyaku_8024CB94(u8);
void mnHyaku_8024CD64(u8);

extern HSD_GObj *mnHyaku_804D6C58;

void HSD_SisLib_803A5CC4(void*);
s32 mn_80229624(s32);
s32 mn_80229894(s32, s32, s32);
float mn_8022EC18(HSD_JObj*, float*, int);
void mn_802295AC(void);
void gm_801677E8(void);
void mn_80229860(s32);
f32 mn_8022F298(HSD_JObj *);
void mn_8022F3D8(HSD_JObj *, s32, s32);

void lbAudioAx_8002702C(s32, s32, s32);
void lbAudioAx_80027168(void);
f32 lbAudioAx_80027648(void);

static f32 mnHyaku_803EF668[3] = { 0.0f, 19.0f, -0.1f };
static f32 mnHyaku_803EF674[3] = { 20.0f, 29.0f, -0.1f };

static f32 mnHyaku_803EF680[6] = {
0.0f,
1.0f,
2.0f,
3.0f,
4.0f,
5.0f,
};

StaticModelDesc mnHyaku_804A08E8;

extern HSD_Archive *mn_804D6BB8;

typedef struct {
unsigned char x0;
void* x4;
} gobj_user_data;

// @todo move and add proper types
extern struct {
unsigned short x0;
short x2;
int x4;
} mn_804D6BC8;

extern struct {
unsigned char x0;
char x1;
short x2;
int x4;
unsigned long long x8;
char x10;
char x11;
} mn_804A04F0;

struct sislib_idk {
float idk[40];
};

static inline void mnHyaku_8024C68C_inline(HSD_JObj *jobj, s32 val)
{
f32 temp_f31 = mn_8022F298(jobj);
HSD_JObjReqAnimAll(jobj, mnHyaku_803EF680[val]);
HSD_JObjAnimAll(jobj);
HSD_JObjReqAnimAll(jobj, temp_f31);
mn_8022F3D8(jobj, 0xFF, 0x80);
HSD_JObjAnimAll(jobj);
}

static u8 vals[] = { 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0x00, 0x00 };

#define GET_GOBJ_USER_DATA(gobj) ((gobj_user_data*) HSD_GObjGetUserData(gobj))
static inline void mnHyaku_8024C68C_inline_2(HSD_GObj *gobj)
{
gobj_user_data* user_data = GET_GOBJ_USER_DATA(gobj);
if (user_data->x4) {
HSD_SisLib_803A5CC4(user_data->x4);
}
{
u8 val = vals[user_data->x0];
struct sislib_idk* temp_r3_6 = (struct sislib_idk*) HSD_SisLib_803A5ACC(
0, 1, -9.5F, 9.1F, 17.0F, 364.68332F, 38.38772F);
user_data->x4 = temp_r3_6;
temp_r3_6->idk[9] = 0.0521F;
temp_r3_6->idk[10] = 0.0521F;
HSD_SisLib_803A6368(temp_r3_6, val);
}
}

void mnHyaku_8024C68C(HSD_GObj *arg0) {
u64 ret;
gobj_user_data* unk = mnHyaku_804D6C58->user_data;
if (mn_804D6BC8.x0 != 0) {
mn_804D6BC8.x0--;
mn_804D6BC8.x2 = 0;
mn_804D6BC8.x4 = 0;
return;
}
ret = mn_804A04F0.x8 = mn_80229624(4);
if ((ret & 0x20)) {
lbAudioAx_80024030(0);
mn_804A04F0.x11 = 0;
mn_80229894(9, 2, 3);
return;
}
if (ret) {
lbAudioAx_80024030(1);
mn_802295AC();
gm_801677E8();
switch (unk->x0) {
case 0:
mn_80229860(0x21);
return;
case 1:
mn_80229860(0x22);
return;
case 2:
mn_80229860(0x23);
return;
case 3:
mn_80229860(0x24);
return;
case 4:
mn_80229860(0x25);
return;
case 5:
mn_80229860(0x26);
return;
}
} else {
if (ret & 4) {
lbAudioAx_80024030(2);
unk->x0 = (unk->x0 == 0) ? 5 : (unk->x0 - 1);
mnHyaku_8024C68C_inline(mnHyaku_804D6C58->hsd_obj, unk->x0);
mnHyaku_8024C68C_inline_2(mnHyaku_804D6C58);
return;
}
if (ret & 8) {
lbAudioAx_80024030(2);
unk->x0 = (unk->x0 == 5) ? 0 : (unk->x0 + 1);
mnHyaku_8024C68C_inline(mnHyaku_804D6C58->hsd_obj, unk->x0);
mnHyaku_8024C68C_inline_2(mnHyaku_804D6C58);
}
}
}

void fn_8024C9F0(HSD_GObj *gobj) {
f32 ret = mn_8022EC18(gobj->hsd_obj, &mnHyaku_803EF674[0], 0x80);
if (ret >= mnHyaku_803EF674[1]) {
HSD_GObjPLink_80390228(gobj);
}
}

void fn_8024CA50(HSD_GObj *gobj) {
HSD_GObjProc *gobj_proc;
gobj_user_data* user_data = gobj->user_data;
if (mn_804A04F0.x0 != 0x21) {
HSD_GObjProc_8038FE24(HSD_GObj_804D7838);
gobj_proc = HSD_GObjProc_8038FD54(gobj, fn_8024C9F0, 0U);
gobj_proc->flags_3 = HSD_GObj_804D783C;
HSD_SisLib_803A5CC4(user_data->x4);
}
}

void fn_8024CAC8(HSD_GObj *gobj) {
{
HSD_GObjProc *gobj_proc;
gobj_user_data* user_data = gobj->user_data;
if (mn_804A04F0.x0 != 0x21) {
HSD_GObjProc_8038FE24(HSD_GObj_804D7838);
gobj_proc = HSD_GObjProc_8038FD54(gobj, fn_8024C9F0, 0U);
gobj_proc->flags_3 = HSD_GObj_804D783C;
HSD_SisLib_803A5CC4(user_data->x4);
return;
}
}
if (mn_8022EC18(gobj->hsd_obj, &mnHyaku_803EF668[0], 0x80) == mnHyaku_803EF668[1]) {
HSD_GObjProc *gobj_proc;
HSD_GObjProc_8038FE24(HSD_GObj_804D7838);
gobj_proc = HSD_GObjProc_8038FD54(gobj, fn_8024CA50, 0U);
gobj_proc->flags_3 = HSD_GObj_804D783C;
}
}

void mnHyaku_8024CB94(u8 arg0) {
HSD_GObj* gobj;
HSD_GObjProc* proc;
HSD_JObj* jobj;
u8 temp_r29;
gobj_user_data* user_data;
HSD_GObjProc *temp_r3_4;

gobj = GObj_Create(HSD_GOBJ_CLASS_ITEM, 7U, 0x80);
mnHyaku_804D6C58 = gobj;
jobj = HSD_JObjLoadJoint(mnHyaku_804A08E8.joint);
temp_r29 = HSD_GObj_804D7849;
HSD_GObjObject_80390A70(gobj, temp_r29, jobj);
GObj_SetupGXLink(gobj, HSD_GObj_80391070, 4, 0x80);
HSD_JObjAddAnimAll(jobj, mnHyaku_804A08E8.animjoint,
mnHyaku_804A08E8.matanim_joint,
mnHyaku_804A08E8.shapeanim_joint);
HSD_JObjReqAnimAll(jobj, 0.0F);
HSD_JObjAnimAll(jobj);
user_data = HSD_MemAlloc(8);
if (user_data == NULL) {
OSReport("Can't get user_data.\n");
__assert("mnhyaku.c", 344, "user_data");
}
user_data->x0 = arg0;
user_data->x4 = 0;
GObj_InitUserData(gobj, 0, HSD_Free, user_data);

mnHyaku_8024C68C_inline(jobj, user_data->x0);
temp_r3_4 = HSD_GObjProc_8038FD54(gobj, fn_8024CAC8, 0U);
temp_r3_4->flags_3 = HSD_GObj_804D783C;
mnHyaku_8024C68C_inline_2(gobj);
}


void mnHyaku_8024CD64(u8 arg0) {
HSD_GObjProc *temp_r3;
HSD_Archive* archive;
Vec3 pos;

mn_804D6BC8.x0 = 5;
mn_804A04F0.x1 = mn_804A04F0.x0;
mn_804A04F0.x0 = 0x15;
mn_804A04F0.x2 = 0;

lbAudioAx_80026F2C(0x12);
lbAudioAx_8002702C(2, 0, 8);
lbAudioAx_80027168();
pos.x = lbAudioAx_80027648();
pos.y = mnHyaku_803EF668[0];
pos.z = 0;
archive = mn_804D6BB8;
lbArchive_LoadSections(archive, (void **) &mnHyaku_804A08E8,
"MenMainConKm_Top_joint", &mnHyaku_804A08E8.animjoint,
"MenMainConKm_Top_animjoint", &mnHyaku_804A08E8.matanim_joint,
"MenMainConKm_Top_matanim_joint",
&mnHyaku_804A08E8.shapeanim_joint,
"MenMainConKm_Top_shapeanim_joint", 0);
mnHyaku_8024CB94(arg0);
temp_r3 = HSD_GObjProc_8038FD54(GObj_Create(0U, 1U, 0x80U), mnHyaku_8024C68C, 0U);
temp_r3->flags_3 = HSD_GObj_804D783C;
lbAudioAx_800237A8(0x7530, 0x7FU, 0x40U);
}
1 change: 0 additions & 1 deletion src/melee/mn/mnlanguage.c
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

Loading