Match m440Dll

This commit is contained in:
CreateSource 2024-06-25 13:32:44 -04:00
parent d117010759
commit 9f927310ac
3 changed files with 209 additions and 10 deletions

View file

@ -1142,7 +1142,7 @@ config.libs = [
objects={
Object(Matching, "REL/executor.c"),
Object(Matching, "REL/m440Dll/main.c"),
Object(NonMatching, "REL/m440Dll/object.c"),
Object(Matching, "REL/m440Dll/object.c"),
},
),
Rel(

View file

@ -244,6 +244,7 @@ extern omObjData* lbl_1_bss_C0[4];
extern s16 lbl_1_bss_B8[4];
extern Vec lbl_1_bss_88[4];
extern f32 lbl_1_bss_84;
extern Vec lbl_1_bss_78;
extern s16 lbl_1_bss_74;
extern u8 lbl_1_bss_72;
extern s16 lbl_1_bss_70;
@ -384,12 +385,12 @@ extern void fn_1_D34C(omObjData*, unkObjStruct*);
extern void fn_1_D7F8(omObjData*, unkObjStruct*);
extern void fn_1_E034(omObjData*, unkObjStruct*);
extern u8 fn_1_E8AC(omObjData*, unkObjStruct*);
extern s32 fn_1_ED88(omObjData*, s16, u32);
extern void fn_1_EE78(void);
extern void fn_1_EF50(void);
extern s16 fn_1_F0FC(void);
extern void fn_1_F168(void);
extern void fn_1_F228(void);
// ...
extern void fn_1_ED88(omObjData*, s32, s32);
extern void fn_1_F4D4(unkObjStruct*, s32, s32);
extern u16 fn_1_F4C0(unkObjStruct*, u16);
extern void fn_1_F4D4(unkObjStruct*, u16, u16);
extern s32 fn_1_F4FC(s32);

View file

@ -14,6 +14,7 @@ omObjData* lbl_1_bss_C0[4];
s16 lbl_1_bss_B8[4];
Vec lbl_1_bss_88[4];
f32 lbl_1_bss_84;
Vec lbl_1_bss_78;
s16 lbl_1_bss_74;
u8 lbl_1_bss_72;
s16 lbl_1_bss_70;
@ -329,7 +330,7 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) {
arg1->unk30.y = fn_1_927C(arg1->unk6C, var_f30, var_f31);
return;
case 4:
if (++arg1->unkC > 0xF) {
if (++arg1->unkC > 15) {
lbl_1_bss_74++;
}
break;
@ -353,7 +354,7 @@ void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) {
arg1->unk6C = 0.0f;
arg1->unk60 = 0;
fn_1_D24C(arg1, arg1->unk30.y, arg1->unk30.y);
fn_1_F4D4(arg1, 0xF, 3);
fn_1_F4D4(arg1, 15, 3);
fn_1_1768();
}
break;
@ -681,7 +682,7 @@ void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) {
if (fn_1_17CC() < 270.0f) {
fn_1_1708();
}
fn_1_F4D4(arg1, 0xF, 4);
fn_1_F4D4(arg1, 15, 4);
}
if (temp_r30->unk_0C == -1) {
temp_r30->unk_68 = 0.0f;
@ -809,9 +810,9 @@ void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) {
if (fn_1_4EA8(0x100U) != 0) {
fn_1_4EEC(0x100U, 0U);
if (fn_1_4E54(arg1->unk4A) == 0) {
fn_1_F4D4(arg1, 0xF, 5);
fn_1_F4D4(arg1, 15, 5);
} else {
fn_1_F4D4(arg1, 0xF, 6);
fn_1_F4D4(arg1, 15, 6);
}
arg1->unkC = arg1->unkE = 0;
arg1->unk60 = arg1->unk62 = 0;
@ -928,7 +929,7 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) {
arg1->unkE = (3 - lbl_1_data_1D8) * 0x1E;
arg1->unk14 = 0;
arg1->unk3C.y = 90.0f;
fn_1_F4D4(arg1, 0xF, 1);
fn_1_F4D4(arg1, 15, 1);
}
arg1->unk24 = arg1->unk18;
arg1->unk18.x = (700.0 * cos((M_PI * lbl_1_bss_84) / 180.0));
@ -947,4 +948,201 @@ void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) {
arg1->unk30.y = fn_1_927C(arg1->unk68, var_f30, var_f31);
break;
}
}
u8 fn_1_E8AC(omObjData* arg0, unkObjStruct* arg1) {
ModelData* temp_r29;
f32 var_f31;
s32 temp_r28;
s16 temp_r27;
temp_r29 = &Hu3DData[arg0->model[0]];
switch (arg1->unk60) {
case 0:
lbl_1_bss_70 = 0;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 7.0f, 0);
HuAudCharVoicePlay(arg1->unk8, 0x12E);
arg1->unk60++;
break;
case 1:
if (fn_1_4EA8(7U) == 5) {
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001);
arg1->unkC = 0;
arg1->unk68 = arg1->unk30.y;
var_f31 = lbl_1_data_0[arg1->unk4A];
lbl_1_bss_78 = arg1->unk18;
if ((arg1->unk4A == 4) || (arg1->unk4A == 3)) {
arg1->unk24.x = (840.0000610351563 * cos((M_PI * var_f31) / 180.0));
arg1->unk24.y = 0.0f;
arg1->unk24.z = (840.0000610351563 * sin((M_PI * var_f31) / 180.0));
} else {
arg1->unk24.x = (1050.0 * cos((M_PI * var_f31) / 180.0));
arg1->unk24.y = 0.0f;
arg1->unk24.z = (1050.0 * sin((M_PI * var_f31) / 180.0));
}
arg1->unk30.y = 0.0f;
PSMTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68);
arg1->unk60++;
if (lbl_1_data_1D8 == 0) {
fn_1_18E0();
}
}
break;
case 2:
arg1->unkC++;
arg1->unk68 += 40.0f;
var_f31 = arg1->unkC / 90.0f;
if (var_f31 >= 1.0f) {
var_f31 = 1.0f;
arg1->unk60++;
}
arg1->unk18.x = lbl_1_bss_78.x + (var_f31 * (arg1->unk24.x - lbl_1_bss_78.x));
arg1->unk18.y = fn_1_93D0(lbl_1_bss_78.y, 1400.0f + lbl_1_bss_78.y, 0.0f, var_f31);
arg1->unk18.z = lbl_1_bss_78.z + (var_f31 * (arg1->unk24.z - lbl_1_bss_78.x));
arg1->unk30.x = 180.0f * var_f31;
PSMTXRotRad(temp_r29->unk_F0, 0x59, 0.017453292f * arg1->unk68);
break;
case 3:
fn_1_F4D4(arg1, 15, 8);
Hu3DModelAttrSet(arg0->model[0], 1);
temp_r27 = lbl_1_data_1D8 + 1;
temp_r28 = arg1->unk4;
GWPlayerCoinWinSet(temp_r28, temp_r27);
lbl_1_data_1D8 -= 1;
return 1;
}
return 0;
}
s32 fn_1_ED88(omObjData* arg0, s16 arg1, u32 arg2) {
s16 var_r28;
s16 var_r29;
var_r28 = Hu3DData[arg0->model[0]].unk_08;
var_r29 = Hu3DData[arg0->model[0]].unk_0C;
if ((var_r29 != arg0->motion[arg1]) && (var_r28 != arg0->motion[arg1])) {
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[arg1], 0.0f, 7.0f, arg2);
}
}
void fn_1_EE78(void) {
s16 var_r31;
unkObjStruct* var_r30;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
var_r30 = (unkObjStruct*)lbl_1_bss_C0[var_r31]->data;
if (fn_1_F4C0(var_r30, 15) == 8) {
Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[6], 0.0f, 7.0f, 0);
}
}
}
void fn_1_EF50(void) {
unkObjStruct* var_r30;
s16 var_r28;
s16 var_r29;
s16 var_r31;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
var_r30 = (unkObjStruct*)lbl_1_bss_C0[var_r31]->data;
if (fn_1_F4C0(var_r30, 15) == 8) {
var_r28 = Hu3DData[lbl_1_bss_C0[var_r31]->model[0]].unk_08;
var_r29 = Hu3DData[lbl_1_bss_C0[var_r31]->model[0]].unk_0C;
if ((var_r29 != lbl_1_bss_C0[var_r31]->motion[0]) && (var_r28 != lbl_1_bss_C0[var_r31]->motion[0])) {
Hu3DMotionShiftSet(lbl_1_bss_C0[var_r31]->model[0], lbl_1_bss_C0[var_r31]->motion[0], 0.0f, 7.0f, 0x40000001);
}
}
}
}
s16 fn_1_F0FC(void) {
s16 var_r31;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_B8[var_r31] != -1) {
return lbl_1_bss_B8[var_r31];
}
}
return 0;
}
void fn_1_F168(void) {
omObjData* temp_r31;
s16 var_r30;
unkObjStruct* var_r29;
for (var_r30 = 0; var_r30 < 4; var_r30++) {
temp_r31 = lbl_1_bss_C0[lbl_1_bss_B8[var_r30]];
var_r29 = (unkObjStruct*)temp_r31->data;
fn_1_F4D4(var_r29, 15, 1);
Hu3DMotionShiftSet(temp_r31->model[0], temp_r31->motion[2], 0.0f, 7.0f, 0x40000001);
}
}
void fn_1_F228(void) {
omObjData* temp_r30;
s16 temp_r0;
s16 var_r29;
s32 temp_r27;
s32 temp_r27_2;
s32 var_r28;
u32 temp_r0_2;
u32 temp_r3;
u32 temp_r3_2;
unkObjStruct* temp_r31;
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if (lbl_1_bss_B8[var_r29] != -1) {
temp_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r29]];
temp_r31 = (unkObjStruct*)temp_r30->data;
if (temp_r31->unkA == 0) {
switch (GWPlayerCfg[temp_r31->unk4].diff) {
case 0:
var_r28 = 3;
break;
case 1:
var_r28 = 2;
break;
case 2:
var_r28 = 1;
break;
case 3:
var_r28 = 0;
break;
}
temp_r31->unk4C = ((((rand8() << 8) | rand8()) % 256) / 255.0f);
temp_r31->unk54 = (((rand8() << 8) | rand8()) % (s16)(var_r28 + 1));
temp_r31->unk50 = -1;
temp_r31->unk56 = temp_r31->unk5A = 0;
temp_r31->unkA = -1;
temp_r31->unkC = temp_r31->unkE = 0;
fn_1_F4D4(temp_r31, 15, 2);
} else if (temp_r31->unkA == -1) {
temp_r31->unkA = lbl_1_data_1D8;
} else {
temp_r31->unkA--;
temp_r31->unk24 = temp_r31->unk18;
temp_r31->unkC = 0;
temp_r31->unkE = 0x1E;
temp_r31->unk14 = 0;
fn_1_F4D4(temp_r31, 15, 1);
}
if (temp_r30->motion[2] != Hu3DData[temp_r30->model[0]].unk_08) {
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 0.0f, 7.0f, 0x40000001U);
}
}
}
}
u16 fn_1_F4C0(unkObjStruct* arg0, u16 arg1) {
return arg0->unk0 & arg1;
}
void fn_1_F4D4(unkObjStruct* arg0, u16 arg1, u16 arg2) {
arg0->unk0 &= ~arg1;
arg0->unk0 |= arg2;
}
s32 fn_1_F4FC(s32 arg0) {
return lbl_1_bss_B8[arg0];
}