Finish m414Dll/main.c

This commit is contained in:
gamemasterplc 2024-05-26 10:24:52 -05:00
parent deaedb1d17
commit aad05ffcf5
4 changed files with 110 additions and 59 deletions

View file

@ -159,8 +159,8 @@ lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18
lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x10
lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x10
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x60
lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 scope:local data:string
lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 scope:local data:string
lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 data:string scope:local
lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 data:string scope:local
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float

View file

@ -220,4 +220,4 @@ lbl_1_bss_CA8 = .bss:0x00000CA8; // type:object size:0x4 data:4byte
lbl_1_bss_CAC = .bss:0x00000CAC; // type:object size:0x2
lbl_1_bss_CAE = .bss:0x00000CAE; // type:object size:0x2 data:2byte
lbl_1_bss_CB0 = .bss:0x00000CB0; // type:object size:0x4 data:2byte
lbl_1_bss_CB4 = .bss:0x00000CB4; // type:object size:0x2 data:2byte
lbl_1_bss_CB4 = .bss:0x00000CB4; // type:object size:0x2 data:2byte

View file

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

View file

@ -90,6 +90,15 @@ typedef struct UnkM414Struct3 {
float unk_08;
} UnkM414Struct3; // size unknown
typedef struct UnkM414Struct4 {
UnkM414BssF0Struct *unk_00;
s32 unk_04;
union {
s32 unk_08;
s32 *unk_08_ptr;
};
} UnkM414Struct4; // size unknown
s16 lbl_1_bss_A12;
s16 lbl_1_bss_A10;
s16 lbl_1_bss_990[16][4];
@ -303,7 +312,9 @@ void fn_1_CD8(s32 arg0, s32 arg1, float arg8)
var_r30->user_data = var_r31;
var_r31->unk_00 = arg0;
var_r31->unk_04 = arg1;
var_r31->unk_08 = arg8;
var_r31->unk_08 = arg8;
(void)var_r31;
(void)var_r31;
}
void fn_1_D54(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3)
@ -1266,7 +1277,6 @@ inline s32 fn_1_4C74_inline(UnkM414BssF0Struct *arg0)
s32 var_r29;
s32 var_r27;
s32 var_r26;
s32 var_r25;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
sp8[var_r31] = -1;
@ -1285,20 +1295,17 @@ inline s32 fn_1_4C74_inline(UnkM414BssF0Struct *arg0)
if (sp8[var_r31] == -1) {
break;
}
if (var_r29 - sp8[var_r31] >= 0) {
var_r25 = var_r29 - sp8[var_r31];
} else {
var_r25 = -(var_r29 - sp8[var_r31]);
}
var_r27 = var_r25;
var_r27 = ABS_INV(var_r29 - sp8[var_r31]);
if (var_r30 > var_r27) {
var_r30 = var_r27;
var_r26 = var_r31;
}
}
if (!var_r31) {
return 0;
}
return var_r29 - sp8[var_r26];
}
@ -1408,6 +1415,29 @@ s8 fn_1_5554(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58
return var_r30;
}
static inline s8 fn_1_5554_inline(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58
{
UnkM414BssF0Struct *var_r31;
s8 var_r30;
var_r31 = &lbl_1_bss_F0[arg0];
var_r30 = 0;
if (lbl_1_bss_98C < 4) {
if (!GWPlayerCfg[arg0].iscom) {
if (arg1) {
var_r30 = HuPadStkY[var_r31->unk_4C];
} else {
var_r30 = HuPadStkX[var_r31->unk_4C];
}
} else if (arg1) {
var_r30 = var_r31->unk_1FD;
} else {
var_r30 = var_r31->unk_1FC;
}
}
return var_r30;
}
u8 fn_1_5624(s32 arg0, s32 arg1)
{
UnkM414BssF0Struct *var_r31;
@ -1434,6 +1464,29 @@ u8 fn_1_5624(s32 arg0, s32 arg1)
return var_r30;
}
static inline u8 fn_1_5624_inline(s32 arg0, s32 arg1)
{
UnkM414BssF0Struct *var_r31;
s8 var_r30;
var_r31 = &lbl_1_bss_F0[arg0];
var_r30 = 0;
if (lbl_1_bss_98C < 4) {
if (!GWPlayerCfg[arg0].iscom) {
if (arg1) {
var_r30 = HuPadTrigR[var_r31->unk_4C];
} else {
var_r30 = HuPadTrigL[var_r31->unk_4C];
}
} else if (arg1) {
var_r30 = var_r31->unk_1FE;
} else {
var_r30 = var_r31->unk_1FF;
}
}
return var_r30;
}
u16 fn_1_56FC(s32 arg0)
{
UnkM414BssF0Struct *var_r31;
@ -1448,6 +1501,10 @@ u16 fn_1_56FC(s32 arg0)
var_r30 = var_r31->unk_200;
}
}
(void)var_r31;
(void)var_r31;
(void)var_r31;
(void)var_r31;
return var_r30;
}
@ -1524,7 +1581,7 @@ void fn_1_5A3C(void)
float var_f27;
float var_f26;
UnkM414Struct2 *var_r31;
UnkM414Struct4 *var_r31;
s32 var_r30;
s32 var_r29;
s32 var_r28;
@ -1552,7 +1609,7 @@ void fn_1_5A3C(void)
Hu3DModelAttrSet(var_r31->unk_00->unk_00[var_r30], 0x40000002);
}
for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) {
var_f27 = (var_f29 * 0.5f) * (1.0 - cosd(var_f28));
var_f27 = (var_f29/2) * (1.0 - cosd(var_f28));
lbl_1_bss_920[var_r28] = var_f26 + var_f27;
for (var_r29 = 0; var_r29 < 9; var_r29++) {
if (!var_r31->unk_04) {
@ -1566,7 +1623,7 @@ void fn_1_5A3C(void)
HuPrcVSleep();
}
for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) {
var_f27 = (var_f29 * 0.5f) + (var_f29 * 0.5f * sind(var_f28));
var_f27 = (var_f29/2) + ((var_f29/2) * sind(var_f28));
lbl_1_bss_920[var_r28] = var_f26 + var_f27;
for (var_r29 = 0; var_r29 < 9; var_r29++) {
if (!var_r31->unk_04) {
@ -1603,7 +1660,7 @@ void fn_1_5EE8(void)
float var_f29;
float var_f28;
UnkM414Struct2 *var_r31;
UnkM414Struct4 *var_r31;
s32 var_r30;
s32 var_r29;
@ -1624,11 +1681,11 @@ void fn_1_5EE8(void)
var_f31 += 360.0f;
}
for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) {
var_r31->unk_00->unk_70 = var_f28 + ((var_f29 * 0.5f) * (1.0 - cosd(var_f30)));
var_r31->unk_00->unk_70 = var_f28 + ((var_f29/2) * (1.0 - cosd(var_f30)));
HuPrcVSleep();
}
for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) {
var_r31->unk_00->unk_70 = (var_f29 * 0.5f) + (var_f28 + (var_f29 * 0.5f * sind(var_f30)));
var_r31->unk_00->unk_70 = (var_f29/2) + (var_f28 + ((var_f29/2) * sind(var_f30)));
HuPrcVSleep();
}
var_r31->unk_00->unk_70 = var_f31;
@ -1681,6 +1738,8 @@ s32 fn_1_654C(s32 arg0, s32 arg1)
if (var_r31 >= 16) {
var_r31 = -1;
}
(void)var_r31;
(void)var_r31;
return var_r31;
}
@ -1697,7 +1756,7 @@ s32 fn_1_65DC(UnkM414BssF0Struct *arg0, s32 arg1)
void fn_1_6644(void)
{
UnkM414Struct2 sp9C;
UnkM414Struct4 sp9C;
UnkM414Struct2 sp8C;
UnkM414BssF0Struct *var_r31;
@ -1753,7 +1812,7 @@ void fn_1_6644(void)
Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20));
Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f);
}
if ((fn_1_56FC(var_r31->unk_44) & 256) && !var_r31->unk_58) {
if ((fn_1_56FC(var_r31->unk_44) & PAD_BUTTON_A) && !var_r31->unk_58) {
if (fn_1_654C(var_r31->unk_44, 0) != -1) {
if (var_r31->unk_1F4 == 1) {
var_r29 = fn_1_654C(var_r31->unk_44, 0);
@ -1771,23 +1830,18 @@ void fn_1_6644(void)
Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f);
var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = var_r31;
if (lbl_1_bss_978 == lbl_1_bss_938[var_r29]) {
if (fn_1_65DC(var_r31, var_r29)) {
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186);
var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = &sp8C;
sp8C.unk_00 = var_r31;
sp8C.unk_08 = 0;
sp8C.unk_0C = 1;
sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_0C);
while (sp8C.unk_0C) {
HuPrcVSleep();
}
} else {
goto block_62;
}
if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) {
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186);
var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = &sp8C;
sp8C.unk_00 = var_r31;
sp8C.unk_08 = 0;
sp8C.unk_0C = 1;
sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08);
while (sp8C.unk_0C) {
HuPrcVSleep();
}
} else {
block_62:
HuPrcSleep(10);
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082);
Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104);
@ -1819,27 +1873,22 @@ void fn_1_6644(void)
omVibrate(var_r31->unk_44, 12, 6, 6);
var_r31->unk_1F4 = 5;
var_r31->unk_1F8 = var_r29;
Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[3]);
Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[2]);
Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f);
var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = var_r31;
if (lbl_1_bss_978 == lbl_1_bss_938[var_r29]) {
if (fn_1_65DC(var_r31, var_r29)) {
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186);
var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = &sp8C;
sp8C.unk_00 = var_r31;
sp8C.unk_08 = 1;
sp8C.unk_0C = 1;
sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08);
while (sp8C.unk_0C) {
HuPrcVSleep();
}
} else {
goto block_94;
}
if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) {
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186);
var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet());
var_r30->user_data = &sp8C;
sp8C.unk_00 = var_r31;
sp8C.unk_08 = 1;
sp8C.unk_0C = 1;
sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08);
while (sp8C.unk_0C) {
HuPrcVSleep();
}
} else {
block_94:
HuPrcSleep(10);
Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082);
Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104);
@ -1862,7 +1911,7 @@ void fn_1_6644(void)
}
}
}
if (fn_1_5554(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { // wrong
if (fn_1_5554_inline(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { // wrong
Hu3DModelAttrReset(var_r31->unk_20, 0x40000002);
Hu3DModelAttrSet(var_r31->unk_20, 0x40000004);
var_r31->unk_1F4 = 3;
@ -1870,7 +1919,7 @@ void fn_1_6644(void)
Hu3DModelAttrSet(var_r31->unk_12, 0x40000004);
Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f);
}
if (fn_1_5554(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { // wrong
if (fn_1_5554_inline(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { // wrong
Hu3DModelAttrReset(var_r31->unk_20, 0x40000006);
var_r31->unk_1F4 = 3;
Hu3DModelAttrReset(var_r31->unk_12, 0x40000006);
@ -1878,10 +1927,10 @@ void fn_1_6644(void)
}
if (!var_r31->unk_58) {
var_r28 = -1;
if (fn_1_5624(var_r31->unk_44, 0) > 20 && var_r28 == -1) { // wrong
if (fn_1_5624_inline(var_r31->unk_44, 0) > 20 && var_r28 == -1) { // wrong
var_r28 = 1;
}
if (fn_1_5624(var_r31->unk_44, 1) > 20 && var_r28 == -1) { // wrong
if (fn_1_5624_inline(var_r31->unk_44, 1) > 20 && var_r28 == -1) { // wrong
var_r28 = 0;
}
if (var_r28 != -1) {
@ -1906,6 +1955,8 @@ void fn_1_6644(void)
var_r30->user_data = &sp9C;
sp9C.unk_00 = var_r31;
sp9C.unk_04 = var_r28;
(void)var_r28;
(void)var_r28;
}
}
var_r31->unk_60 = 37.0 * sind(var_r31->unk_70);
@ -1939,8 +1990,8 @@ void fn_1_76F4(void)
var_f29 = Hu3DMotionMaxTimeGet(var_r31->unk_20);
sp14.y = 220.0f + (350.0f * (1.0f - (Hu3DMotionTimeGet(var_r31->unk_20) / var_f29)));
Hu3D3Dto2D(&sp14, 1 << var_r31->unk_48, &sp8);
var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x * 0.5f);
var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y * 0.5f);
var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x /2);
var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y /2);
var_f31 += 3.0f;
var_f30 -= 15.0f;
HuSprGrpPosSet(var_r31->unk_2C, var_f31, var_f30);