Merge pull request #426 from gamemasterplc/main

Decompile rest of m420dll
This commit is contained in:
Liam Coleman 2024-10-27 21:47:13 -05:00 committed by GitHub
commit 58fc9a2993
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 185 additions and 254 deletions

View file

@ -976,10 +976,10 @@ config.libs = [
Rel( Rel(
"m420dll", # Fish n' Drips "m420dll", # Fish n' Drips
objects={ objects={
Object(NonMatching, "REL/m420dll/main.c"), Object(Matching, "REL/m420dll/main.c"),
Object(Matching, "REL/m420dll/camera.c"), Object(Matching, "REL/m420dll/camera.c"),
Object(NonMatching, "REL/m420dll/player.c"), Object(Matching, "REL/m420dll/player.c"),
Object(NonMatching, "REL/m420dll/map.c"), Object(Matching, "REL/m420dll/map.c"),
Object(Matching, "REL/m420dll/rand.c"), Object(Matching, "REL/m420dll/rand.c"),
}, },
), ),

View file

@ -83,15 +83,18 @@ s32 fn_1_198(void)
sp8[var_r31] = 0; sp8[var_r31] = 0;
} }
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (GWPlayerCfg[var_r31].group == 0) { switch(GWPlayerCfg[var_r31].group) {
lbl_1_bss_18[0] = fn_1_1B8C(var_r31, 0); case 0:
} lbl_1_bss_18[0] = fn_1_1B8C(var_r31, 0);
else { break;
do {
var_r30 = fn_1_8944() % 3; default:
} while (sp8[var_r30] != 0); do {
sp8[var_r30] = 1; var_r30 = fn_1_8944() % 3;
lbl_1_bss_18[var_r30 + 1] = fn_1_1B8C(var_r31, var_r30 + 1); } while (sp8[var_r30] != 0);
sp8[var_r30] = 1;
lbl_1_bss_18[var_r30 + 1] = fn_1_1B8C(var_r31, var_r30 + 1);
break;
} }
} }
lbl_1_bss_18[1]->unk_E8 = NULL; lbl_1_bss_18[1]->unk_E8 = NULL;

View file

@ -116,6 +116,7 @@ Process *lbl_1_bss_A3C;
Process *lbl_1_bss_A2C[4]; Process *lbl_1_bss_A2C[4];
s32 lbl_1_bss_A28; s32 lbl_1_bss_A28;
s16 lbl_1_bss_9F0[0x1C]; s16 lbl_1_bss_9F0[0x1C];
s16 lbl_1_bss_9EE;
s16 lbl_1_bss_9EC; s16 lbl_1_bss_9EC;
M420DllUnkMapStruct2 lbl_1_bss_140[15]; M420DllUnkMapStruct2 lbl_1_bss_140[15];
struct M420DllUnkMapStruct lbl_1_bss_C0[2]; struct M420DllUnkMapStruct lbl_1_bss_C0[2];
@ -914,13 +915,9 @@ float fn_1_73F8(float arg8)
void fn_1_74F8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) void fn_1_74F8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8)
{ {
float var_f31;
float var_f30; float var_f30;
float var_f29; float var_f29;
float var_f28;
float var_f27;
float var_f26; float var_f26;
float var_f25;
s32 var_r31; s32 var_r31;
s32 var_r30; s32 var_r30;
@ -937,27 +934,13 @@ void fn_1_74F8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8)
if (var_r31 > var_r29) { if (var_r31 > var_r29) {
var_r30 = var_r29; var_r30 = var_r29;
} }
var_f31 = arg8 - var_r31; var_f26 = fn_1_73F8(arg8 - var_r31);
if (var_f31 < 0.0f) {
var_f31 = -var_f31;
}
if (var_f31 < 1.0f) {
var_f27 = (4.0f + ((var_f31 * (3.0f * var_f31 * var_f31)) - (6.0f * var_f31 * var_f31))) / 6.0f;
}
else if (var_f31 < 2.0f) {
var_f28 = var_f31 - 2.0f;
var_f27 = (var_f28 * (-var_f28 * var_f28)) / 6.0f;
}
else {
var_f27 = 0.0f;
}
var_f25 = var_f27;
var_f26 = var_f25;
var_f30 += var_f26 * arg0[var_r30]; var_f30 += var_f26 * arg0[var_r30];
var_f29 += var_f26 * arg1[var_r30]; var_f29 += var_f26 * arg1[var_r30];
} }
*arg2 = var_f30; *arg2 = var_f30;
*arg3 = var_f29; *arg3 = var_f29;
} }
void fn_1_7704(void) void fn_1_7704(void)
@ -1233,3 +1216,5 @@ void fn_1_8414(void)
HuPrcVSleep(); HuPrcVSleep();
} }
} }
const float _pad = 0;

View file

@ -253,21 +253,6 @@ void fn_1_21C8(M420DllPlayerStruct *arg0, Vec *arg1, s32 arg2, s32 arg3)
arg0->unk_00_field2 = 1; arg0->unk_00_field2 = 1;
} }
void inline fn_1_2260_alt(M420DllPlayerStruct *arg0, s32 arg1)
{
s32 var_r30;
s32 var_r29;
for (var_r30 = 0; var_r30 < arg1; var_r30++) {
fn_1_355C(arg0);
var_r29 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r29) {
break;
}
}
}
void fn_1_2260(M420DllPlayerStruct *arg0) void fn_1_2260(M420DllPlayerStruct *arg0)
{ {
s32 var_r30; s32 var_r30;
@ -285,6 +270,20 @@ void fn_1_2260(M420DllPlayerStruct *arg0)
} }
} }
#define WAITMODECHG(player, maxTime) \
do { \
s32 time; \
s32 mode; \
for (time = 0; time < maxTime; time++) { \
fn_1_355C(arg0); \
mode = arg0->unk_48; \
HuPrcVSleep(); \
if (arg0->unk_48 != mode) { \
return; \
} \
} \
} while(0)
void fn_1_22CC(M420DllPlayerStruct *arg0) void fn_1_22CC(M420DllPlayerStruct *arg0)
{ {
float var_f31; float var_f31;
@ -305,7 +304,7 @@ void fn_1_22CC(M420DllPlayerStruct *arg0)
while (arg0->unk_50 < 6) { while (arg0->unk_50 < 6) {
fn_1_326C(arg0); fn_1_326C(arg0);
while (var_r29 == 0) { do {
if (arg0->unk_00_field0 == 0) { if (arg0->unk_00_field0 == 0) {
var_r29 = fn_1_34AC(arg0); var_r29 = fn_1_34AC(arg0);
} }
@ -323,7 +322,7 @@ void fn_1_22CC(M420DllPlayerStruct *arg0)
} }
switch (var_r29) { switch (var_r29) {
case 0: case 0:
fn_1_2260(arg0); WAITMODECHG(arg0, 1);
break; break;
case 1: case 1:
var_f31 = 5.0f * arg0->unk_50; var_f31 = 5.0f * arg0->unk_50;
@ -337,39 +336,37 @@ void fn_1_22CC(M420DllPlayerStruct *arg0)
arg0->unk_5C[arg0->unk_50++] = 1; arg0->unk_5C[arg0->unk_50++] = 1;
HuAudFXPlay(0x5F4); HuAudFXPlay(0x5F4);
fn_1_60F0(); fn_1_60F0();
fn_1_2260_alt(arg0, 5); WAITMODECHG(arg0, 5);
break; break;
case 2: case 2:
if (arg0->unk_50 <= 0) { if (arg0->unk_50 <= 0) {
fn_1_2260(arg0); WAITMODECHG(arg0, 1);
} } else {
else {
Hu3DModelAttrReset(arg0->unk_AC, 0x40000002); Hu3DModelAttrReset(arg0->unk_AC, 0x40000002);
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001); Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
Hu3DModelAttrSet(arg0->unk_AC, 0x40000004); Hu3DModelAttrSet(arg0->unk_AC, 0x40000004);
fn_1_63EC(); fn_1_63EC();
fn_1_2260_alt(arg0, 1); while(!Hu3DMotionEndCheck(arg0->unk_AC))
if (Hu3DMotionEndCheck(arg0->unk_AC) != 0) { WAITMODECHG(arg0, 1);
for (var_r28 = 0; var_r28 < 0xA; var_r28++) { for (var_r28 = 0; var_r28 < 0xA; var_r28++) {
arg0->unk_5C[var_r28] = 0; arg0->unk_5C[var_r28] = 0;
}
arg0->unk_50 = 0;
var_f31 = 0.0f;
var_f30 = 0.0f;
CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[5]);
Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30);
Hu3DMotionTimeSet(arg0->unk_AC, var_f31);
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
} }
arg0->unk_50 = 0;
var_f31 = 0.0f;
var_f30 = 0.0f;
CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[5]);
Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30);
Hu3DMotionTimeSet(arg0->unk_AC, var_f31);
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
} }
break; break;
default: default:
break; break;
} }
} } while (var_r29 == 0);
} }
fn_1_326C(arg0); fn_1_326C(arg0);
fn_1_2260_alt(arg0, 5); WAITMODECHG(arg0, 5);
fn_1_3450(arg0); fn_1_3450(arg0);
arg0->unk_48 = 2; arg0->unk_48 = 2;
} }
@ -401,171 +398,102 @@ void fn_1_276C(M420DllPlayerStruct *arg0)
HuAudFXPlay(0x5F1); HuAudFXPlay(0x5F1);
fn_1_669C(1); fn_1_669C(1);
fn_1_6554(); fn_1_6554();
for (var_r28 = 0; var_r28 < 0xF; var_r28++) { WAITMODECHG(arg0, 15);
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0); CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0);
for (var_r27 = 0; var_r27 < 6; var_r27++) { WAITMODECHG(arg0, 6);
fn_1_669C(1); fn_1_669C(0);
fn_1_36E4(arg0); fn_1_36E4(arg0);
HuAudFXPlay(0x5F2); HuAudFXPlay(0x5F2);
fn_1_355C(arg0);
var_r19 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r19) {
break;
}
}
fn_1_355C(arg0);
var_r20 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r20) {
break;
}
}
} }
else { fn_1_3098(arg0);
block_10: arg0->unk_50 = 0;
fn_1_3098(arg0); arg0->unk_58 = var_r29->unk_10 + (fn_1_8944() % var_r29->unk_14);
arg0->unk_50 = 0; while (arg0->unk_50 < 1) {
arg0->unk_58 = var_r29->unk_10 + (fn_1_8944() % var_r29->unk_14);
while (arg0->unk_50 < 1) {
fn_1_326C(arg0);
for (var_r21 = 0; var_r21 < 0x12; var_r21++) {
fn_1_3450(arg0);
arg0->unk_48 = 6;
fn_1_355C(arg0);
sp8[0] = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 == sp8[0]) {
break;
}
}
}
fn_1_326C(arg0); fn_1_326C(arg0);
loop_12: do {
if (arg0->unk_00_field0 == 0) { if(arg0->unk_00_field0 == 0) {
var_r30 = fn_1_34AC(arg0); var_r30 = fn_1_34AC(arg0);
} } else if(arg0->unk_58 > 0) {
else if (arg0->unk_58 > 0) { arg0->unk_58--;
arg0->unk_58 = arg0->unk_58 - 1; var_r30 = 0;
var_r30 = 0; } else if(fn_1_8944() % 30) {
} var_r30 = 1;
else if ((fn_1_8944() % 30) != 0) { } else {
var_r30 = 1; var_r30 = 2;
} }
else { switch (var_r30) {
var_r30 = 2; case 0:
} WAITMODECHG(arg0, 1);
switch (var_r30) { break;
case 0:
for (var_r26 = 0; var_r26 < 1; var_r26++) { case 1:
fn_1_355C(arg0); if(arg0->unk_4C != 1) {
var_r18 = arg0->unk_48; CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0);
HuPrcVSleep(); WAITMODECHG(arg0, 6);
if (arg0->unk_48 != var_r18) {
break;
}
}
case 1:
if (arg0->unk_4C != 1) {
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[7], 0.0f, 6.0f, 0);
for (var_r25 = 0; var_r25 < 6; var_r25++) {
fn_1_374C(arg0->unk_E8); fn_1_374C(arg0->unk_E8);
fn_1_36E4(arg0); fn_1_36E4(arg0);
HuAudFXPlay(0x5F2); HuAudFXPlay(0x5F2);
fn_1_355C(arg0);
var_r17 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 == var_r17) {
break;
}
} }
} arg0->unk_5C[arg0->unk_50++] = 1;
block_36: switch(arg0->unk_4C) {
arg0->unk_5C[arg0->unk_50++] = 1; case 1:
switch (arg0->unk_4C) { case 2:
case 1: var_f31 = 0.0f;
case 2: var_f30 = 34.0f;
var_f31 = 0.0f; CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]);
var_f30 = 34.0f; Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30);
CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); Hu3DMotionTimeSet(arg0->unk_AC, var_f31);
Hu3DMotionStartEndSet(arg0->unk_AC, 0.0f, 34.0f); Hu3DMotionSpeedSet(arg0->unk_AC, 2.0f);
Hu3DMotionTimeSet(arg0->unk_AC, 0.0f); break;
Hu3DMotionSpeedSet(arg0->unk_AC, 2.0f);
break; case 3:
} arg0->unk_48 = 5;
arg0->unk_48 = 5; return;
break; }
case 2: break;
switch (arg0->unk_4C) {
case 0: case 2:
break; switch(arg0->unk_4C) {
case 1: case 1:
var_f31 = 0.0f; var_f31 = 0.0f;
var_f30 = 10.0f; var_f30 = 10.0f;
CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]);
Hu3DMotionStartEndSet(arg0->unk_AC, 0.0f, 10.0f); Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30);
Hu3DMotionTimeSet(arg0->unk_AC, 0.0f); Hu3DMotionTimeSet(arg0->unk_AC, var_f31);
Hu3DModelAttrReset(arg0->unk_AC, 0x40000002); Hu3DModelAttrReset(arg0->unk_AC, 0x40000002);
for (var_r24 = 0; var_r24 < 0x1E; var_r24++) { WAITMODECHG(arg0, 30);
var_f31 = 60.0f; var_f31 = 60.0f;
var_f30 = 70.0f; var_f30 = 70.0f;
CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]); CharModelMotionSet(arg0->unk_0A, arg0->unk_AE[4]);
Hu3DMotionStartEndSet(arg0->unk_AC, 60.0f, 70.0f); Hu3DMotionStartEndSet(arg0->unk_AC, var_f31, var_f30);
Hu3DMotionTimeSet(arg0->unk_AC, 60.0f); Hu3DMotionTimeSet(arg0->unk_AC, var_f31);
Hu3DModelAttrReset(arg0->unk_AC, 0x40000002); Hu3DModelAttrReset(arg0->unk_AC, 0x40000002);
for (var_r23 = 0; var_r23 < 0x1E; var_r23++) { WAITMODECHG(arg0, 30);
fn_1_355C(arg0); break;
sp8[2] = arg0->unk_48;
HuPrcVSleep(); case 2:
if (arg0->unk_48 != sp8[2]) { case 3:
break; CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[9], 0.0f, 2.0f, 0);
} WAITMODECHG(arg0, 60);
}
fn_1_355C(arg0);
sp8[3] = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != sp8[3]) {
break;
}
}
case 2:
case 3:
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[9], 0.0f, 2.0f, 0);
for (var_r22 = 0; var_r22 < 0x3C; var_r22++) {
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 8.0f, 0); CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 8.0f, 0);
fn_1_355C(arg0); break;
sp8[1] = arg0->unk_48; }
HuPrcVSleep(); break;
if (arg0->unk_48 != sp8[1]) { }
break; } while(var_r30 == 0);
}
}
break;
}
break;
}
} }
fn_1_326C(arg0);
WAITMODECHG(arg0, 18);
fn_1_3450(arg0);
arg0->unk_48 = 6;
} }
void fn_1_2CE0(M420DllPlayerStruct *arg0) void fn_1_2CE0(M420DllPlayerStruct *arg0)
{ {
s32 var_r30;
s32 var_r29;
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001); CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001);
// fn_1_2260? WAITMODECHG(arg0, 35);
for (var_r30 = 0; var_r30 < 0x23; var_r30++) {
fn_1_355C(arg0);
var_r29 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r29) {
return;
}
}
arg0->unk_48 = 0; arg0->unk_48 = 0;
} }
@ -614,53 +542,68 @@ void fn_1_2EA8(M420DllPlayerStruct *arg0)
fn_1_326C(arg0); fn_1_326C(arg0);
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[3], 0.0f, 1.0f, 0); CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[3], 0.0f, 1.0f, 0);
var_r30 = fn_1_6660(); var_r30 = fn_1_6660();
Hu3DModelAttrReset(var_r30, 0x40000002); Hu3DModelAttrReset(var_r30, 0x40000002);
Hu3DModelAttrSet(var_r30, 0x40000001); Hu3DModelAttrSet(var_r30, 0x40000001);
Hu3DMotionTimeSet(var_r30, 0.0f); Hu3DMotionTimeSet(var_r30, 0.0f);
{
for (var_r29 = 0; var_r29 < 0x18; var_r29++) { s32 var_r30;
HuAudFXPlay(0x5F7); s32 var_r29;
fn_1_636C(); for (var_r30 = 0; var_r30 < 24; var_r30++) {
fn_1_1E64(arg0, 0x1E, 1);
Hu3DModelAttrSet(var_r30, 0x40000002);
fn_1_5AA8(1, 22.5f);
for (var_r28 = 0; var_r28 < 0x14; var_r28++) {
HuAudFXPlay(0x5F8);
fn_1_3450(arg0);
fn_1_378C(arg0);
for (var_r27 = 0; var_r27 < 0x14; var_r27++) {
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001);
for (var_r26 = 0; var_r26 < 0x19; var_r26++) {
arg0->unk_48 = 6;
fn_1_355C(arg0);
var_r22 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r22) {
break;
}
}
fn_1_355C(arg0);
var_r23 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r23) {
break;
}
}
fn_1_355C(arg0); fn_1_355C(arg0);
var_r24 = arg0->unk_48; var_r29 = arg0->unk_48;
HuPrcVSleep(); HuPrcVSleep();
if (arg0->unk_48 != var_r24) { if (arg0->unk_48 != var_r29) {
break; return;
} }
} }
fn_1_355C(arg0);
var_r25 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r25) {
break;
}
} }
HuAudFXPlay(0x5F7);
fn_1_636C();
fn_1_1E64(arg0, 1, 0x1E);
Hu3DModelAttrSet(var_r30, 0x40000002);
fn_1_5AA8(1, 22.5f);
{
s32 var_r30;
s32 var_r29;
for (var_r30 = 0; var_r30 < 20; var_r30++) {
fn_1_355C(arg0);
var_r29 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r29) {
return;
}
}
}
HuAudFXPlay(0x5F8);
fn_1_3450(arg0);
fn_1_378C(arg0);
{
s32 var_r30;
s32 var_r29;
for (var_r30 = 0; var_r30 < 20; var_r30++) {
fn_1_355C(arg0);
var_r29 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r29) {
return;
}
}
}
CharModelMotionShiftSet(arg0->unk_0A, arg0->unk_AE[0], 0.0f, 30.0f, 0x40000001);
{
s32 var_r30;
s32 var_r29;
for (var_r30 = 0; var_r30 < 25; var_r30++) {
fn_1_355C(arg0);
var_r29 = arg0->unk_48;
HuPrcVSleep();
if (arg0->unk_48 != var_r29) {
return;
}
}
}
arg0->unk_48 = 6;
} }
void fn_1_3098(M420DllPlayerStruct *arg0) void fn_1_3098(M420DllPlayerStruct *arg0)