Various m410dll fixes

Match first translation unit and much of game.c
This commit is contained in:
gamemasterplc 2024-05-21 10:37:35 -05:00
parent 7f29533b7b
commit f812f82e86
5 changed files with 111 additions and 170 deletions

View file

@ -880,7 +880,7 @@ config.libs = [
"m410Dll", "m410Dll",
objects={ objects={
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/m410Dll/main.c"), Object(Matching, "REL/m410Dll/main.c"),
Object(Matching, "REL/m410Dll/stage.c"), Object(Matching, "REL/m410Dll/stage.c"),
Object(NonMatching, "REL/m410Dll/game.c"), Object(NonMatching, "REL/m410Dll/game.c"),
Object(Matching, "REL/m410Dll/player.c"), Object(Matching, "REL/m410Dll/player.c"),

View file

@ -13,6 +13,7 @@ typedef struct vec2f {
#define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z))) #define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z)))
#define VECDistanceZY(a, b) sqrtf((((a)->z-(b)->z)*((a)->z-(b)->z))+(((a)->y-(b)->y)*((a)->y-(b)->y))) #define VECDistanceZY(a, b) sqrtf((((a)->z-(b)->z)*((a)->z-(b)->z))+(((a)->y-(b)->y)*((a)->y-(b)->y)))
#define VECSumXZ(a, b) sqrtf((((a)->x+(b)->x)*((a)->x+(b)->x))+(((a)->z+(b)->z)*((a)->z+(b)->z)))
#define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z)) #define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z))
#define VECMagPoint(x, y, z) sqrtf(((x)*(x))+((y)*(y))+((z)*(z))) #define VECMagPoint(x, y, z) sqrtf(((x)*(x))+((y)*(y))+((z)*(z)))

View file

@ -64,7 +64,7 @@ typedef struct model_data {
Vec rot; Vec rot;
Vec scale; Vec scale;
Mtx unk_F0; Mtx unk_F0;
ParticleData *unk_120; void *unk_120;
} ModelData; // sizeof 0x124 } ModelData; // sizeof 0x124
typedef struct camera_data { typedef struct camera_data {
f32 fov; f32 fov;

View file

@ -34,12 +34,12 @@ void fn_1_34C0(omObjData *object);
void fn_1_3614(omObjData *object); void fn_1_3614(omObjData *object);
void fn_1_3BE0(s16 arg0); void fn_1_3BE0(s16 arg0);
float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1); float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1);
float fn_1_4C04(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9); float fn_1_4C04(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9);
float fn_1_4FEC(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9, float argA); float fn_1_4FEC(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9, float argA);
float fn_1_55C8(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, float arg9); float fn_1_55C8(Vec arg0, Vec arg1, float arg8, Vec arg2, float arg9);
s32 fn_1_598C(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9, float argA); s32 fn_1_598C(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9, float argA);
void fn_1_5AF4(UnkM410Struct2 *arg0, u8 arg1); void fn_1_5AF4(UnkM410Struct2 *arg0, u8 arg1);
void fn_1_5CA0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4); void fn_1_5CA0(Vec arg0, Vec arg1, Vec arg2, Vec *arg3, Vec *arg4);
void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1); void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1);
void fn_1_6364(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1); void fn_1_6364(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1);
void fn_1_66B8(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1); void fn_1_66B8(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1);
@ -192,23 +192,7 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
UnkM410Struct2 *spC0[60]; // TODO get size right UnkM410Struct2 *spC0[60]; // TODO get size right
Vec spB4; Vec spB4;
Vec spA8; Vec spA8;
Vec sp9C;
Vec sp90;
Vec sp84;
Vec sp78;
Vec sp6C;
Vec sp60;
Vec sp54;
Vec sp48;
Vec sp3C;
Vec sp30;
Vec sp24;
Vec *sp20;
Vec *sp1C;
Vec *sp18;
Vec *sp14;
Vec *sp10;
Vec *spC;
u8 sp8; u8 sp8;
f32 var_f31; f32 var_f31;
@ -225,14 +209,10 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
s32 var_r24; s32 var_r24;
omObjData *var_r23; omObjData *var_r23;
omObjData **var_r22; omObjData **var_r22;
Vec *var_r21;
Vec *var_r20;
Vec *var_r19;
Vec *var_r18;
Vec *var_r17;
var_r24 = 0; var_r24 = 0;
if (omPauseChk()) { if (omPauseChk()) {
return; return;
} }
@ -289,15 +269,7 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
var_r28 = spC0[var_r26]; var_r28 = spC0[var_r26];
if (var_r30 != var_r28 && (var_r30->unk_40 != var_r28 || var_r28->unk_40 != var_r30) if (var_r30 != var_r28 && (var_r30->unk_40 != var_r28 || var_r28->unk_40 != var_r30)
&& !(var_r30->unk_00_field3 ^ var_r28->unk_00_field3)) { && !(var_r30->unk_00_field3 ^ var_r28->unk_00_field3)) {
sp78 = var_r28->unk_1C; var_f31 = fn_1_4C04(var_r30->unk_04, var_r30->unk_1C, var_r30->unk_28, var_r28->unk_04, var_r28->unk_1C, var_r28->unk_28);
var_r21 = &sp78;
sp84 = var_r28->unk_04;
var_r20 = &sp84;
sp90 = var_r30->unk_1C;
var_r19 = &sp90;
sp9C = var_r30->unk_04;
var_r18 = &sp9C;
var_f31 = fn_1_4C04(var_r18, var_r19, var_r30->unk_28, var_r20, var_r21, var_r28->unk_28);
if (var_f31 >= 0.0f && var_f31 < var_f30) { if (var_f31 >= 0.0f && var_f31 < var_f30) {
var_r30->unk_00_field5 = 0; var_r30->unk_00_field5 = 0;
if (var_f31 <= var_f29) { if (var_f31 <= var_f29) {
@ -316,14 +288,8 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
var_r22 = omGetGroupMemberListEx(lbl_1_bss_40, 0); var_r22 = omGetGroupMemberListEx(lbl_1_bss_40, 0);
for (var_r26 = 0; var_r26 < 4; var_r26++) { for (var_r26 = 0; var_r26 < 4; var_r26++) {
var_r23 = var_r22[var_r26]; var_r23 = var_r22[var_r26];
if (var_r30->unk_40 != var_r23 && var_r30->unk_00_field1) { if (var_r30->unk_40 != var_r23 && var_r30->unk_00_field3) {
sp54 = var_r23->trans; var_f31 = fn_1_55C8(var_r30->unk_04, var_r30->unk_1C, var_r30->unk_28, var_r23->trans, 30.000002f);
var_r17 = &sp54;
sp60 = var_r30->unk_1C;
sp20 = &sp60;
sp6C = var_r30->unk_04;
sp1C = &sp6C;
var_f31 = fn_1_55C8(sp1C, sp20, var_r30->unk_28, var_r17, 30.000002f);
if (var_f31 >= 0.0f && var_f31 < var_f30) { if (var_f31 >= 0.0f && var_f31 < var_f30) {
var_r30->unk_00_field5 = 0; var_r30->unk_00_field5 = 0;
if (var_f31 <= var_f29) { if (var_f31 <= var_f29) {
@ -344,15 +310,7 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
for (var_r26 = 0; var_r26 < 18; var_r26++, var_r28++) { for (var_r26 = 0; var_r26 < 18; var_r26++, var_r28++) {
if (var_r30->unk_40 != var_r28 || var_r28->unk_40 != var_r30) { if (var_r30->unk_40 != var_r28 || var_r28->unk_40 != var_r30) {
sp24 = var_r28->unk_1C; var_f31 = fn_1_4FEC(var_r30->unk_04, var_r30->unk_1C, var_r30->unk_28, var_r28->unk_04, var_r28->unk_1C, var_r28->unk_28, var_r28->unk_2C);
sp18 = &sp24;
sp30 = var_r28->unk_04;
sp14 = &sp30;
sp3C = var_r30->unk_1C;
sp10 = &sp3C;
sp48 = var_r30->unk_04;
spC = &sp48;
var_f31 = fn_1_4FEC(spC, sp10, var_r30->unk_28, sp14, sp18, var_r28->unk_28, var_r28->unk_2C);
if (var_f31 >= 0.0f && var_f31 < var_f30) { if (var_f31 >= 0.0f && var_f31 < var_f30) {
var_r30->unk_00_field5 = 0; var_r30->unk_00_field5 = 0;
if (var_f31 <= var_f29) { if (var_f31 <= var_f29) {
@ -420,7 +378,8 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
var_f30 *= 1.0f - var_f29; var_f30 *= 1.0f - var_f29;
var_r24++; var_r24++;
} while (var_r24 < 100); } while (var_r24 < 100);
(void)var_r24;
for (var_r29 = 0; var_r29 < var_r25; var_r29++) { for (var_r29 = 0; var_r29 < var_r25; var_r29++) {
var_r31 = spC0[var_r29]; var_r31 = spC0[var_r29];
var_r31->unk_04.x += var_r31->unk_1C.x * var_f30; var_r31->unk_04.x += var_r31->unk_1C.x * var_f30;
@ -439,7 +398,7 @@ void fn_1_3BE0(s16 arg0) // what happens with the argument?
PSVECSubtract(&var_r30->unk_04, &var_r30->unk_10, &spB4); PSVECSubtract(&var_r30->unk_04, &var_r30->unk_10, &spB4);
var_r28 = lbl_1_bss_54->data; var_r28 = lbl_1_bss_54->data;
for (var_r26 = 0; var_r26 < 18; var_r29++, var_r28++) { for (var_r26 = 0; var_r26 < 18; var_r26++, var_r28++) {
PSVECSubtract(&var_r28->unk_04, &var_r28->unk_10, &spA8); PSVECSubtract(&var_r28->unk_04, &var_r28->unk_10, &spA8);
if (fn_1_598C(&var_r30->unk_10, &spB4, var_r30->unk_28, &var_r28->unk_10, &spA8, var_r28->unk_28, var_r28->unk_2C) if (fn_1_598C(&var_r30->unk_10, &spB4, var_r30->unk_28, &var_r28->unk_10, &spA8, var_r28->unk_28, var_r28->unk_2C)
&& !var_r30->unk_00_field1 && var_r28->unk_38 == NULL) { && !var_r30->unk_00_field1 && var_r28->unk_38 == NULL) {
@ -521,7 +480,7 @@ float fn_1_48D8(UnkM410Struct2 *arg0, u8 *arg1)
return -1.0f; return -1.0f;
} }
float fn_1_4C04(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9) float fn_1_4C04(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9)
{ {
float var_f30; float var_f30;
float var_f29; float var_f29;
@ -531,15 +490,15 @@ float fn_1_4C04(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float ar
float var_f22; float var_f22;
float var_f21; float var_f21;
PSVECSubtract(arg2, arg0, arg2); PSVECSubtract(&arg2, &arg0, &arg2);
PSVECSubtract(arg3, arg1, arg3); PSVECSubtract(&arg3, &arg1, &arg3);
if (PSVECMag(arg2) > arg9 + (arg8 + PSVECMag(arg3))) { if (PSVECMag(&arg2) > arg9 + (arg8 + PSVECMag(&arg3))) {
return -1.0f; return -1.0f;
} }
var_f22 = (arg8 + arg9) * (arg8 + arg9); var_f22 = (arg8 + arg9) * (arg8 + arg9);
var_f28 = arg3->z * arg3->z + (arg3->x * arg3->x + (arg3->y * arg3->y)); var_f28 = arg3.z * arg3.z + (arg3.x * arg3.x + (arg3.y * arg3.y));
var_f27 = 2.0f * (arg3->z * arg2->z + (arg3->x * arg2->x + arg3->y * arg2->y)); var_f27 = 2.0f * (arg3.z * arg2.z + (arg3.x * arg2.x + arg3.y * arg2.y));
var_f21 = (arg2->z * arg2->z + (arg2->x * arg2->x + arg2->y * arg2->y)) - var_f22; var_f21 = (arg2.z * arg2.z + (arg2.x * arg2.x + arg2.y * arg2.y)) - var_f22;
if (0.0f == var_f28) { if (0.0f == var_f28) {
return -1.0f; return -1.0f;
} }
@ -561,7 +520,7 @@ float fn_1_4C04(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float ar
return -1.0f; return -1.0f;
} }
float fn_1_4FEC(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float arg9, float argA) float fn_1_4FEC(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9, float argA)
{ {
float sp2C; float sp2C;
@ -574,21 +533,20 @@ float fn_1_4FEC(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float ar
float var_f21; float var_f21;
float var_f18; float var_f18;
PSVECSubtract(arg0, arg2, arg0); PSVECSubtract(&arg0, &arg2, &arg0);
PSVECSubtract(arg1, arg3, arg1); PSVECSubtract(&arg1, &arg3, &arg1);
if (PSVECMag(arg0) > (arg8) + PSVECMag(arg1) + arg9 + argA) { if (PSVECMag(&arg0) > (arg8) + PSVECMag(&arg1) + arg9 + argA) {
return -1.0f; return -1.0f;
} }
arg8 += arg9; arg8 += arg9;
var_f24 = VECMagXZ(arg0); var_f24 = VECMagXZ(&arg0);
var_f26 = ((arg0->x + arg1->x) * (arg0->x + arg1->x)) + ((arg0->z + arg1->z) * (arg0->z + arg1->z)); // maybe macro? var_f23 = VECSumXZ(&arg0, &arg1) - var_f24;
var_f23 = sqrtf(var_f26) - var_f24;
var_f22 = (var_f23 * var_f23) + (arg1->y * arg1->y); var_f22 = (var_f23 * var_f23) + (arg1.y * arg1.y);
var_f21 = 2.0f * ((arg0->y * arg1->y) + ((-argA * var_f23) + (var_f24 * var_f23))); var_f21 = 2.0f * ((arg0.y * arg1.y) + ((-argA * var_f23) + (var_f24 * var_f23)));
sp2C = (arg0->y * arg0->y + (((argA * argA) + (var_f24 * var_f24)) - (2.0f * argA * var_f24))) - (arg8 * arg8); sp2C = (arg0.y * arg0.y + (((argA * argA) + (var_f24 * var_f24)) - (2.0f * argA * var_f24))) - (arg8 * arg8);
if (0.0f == var_f22) { if (0.0f == var_f22) {
return -1.0f; return -1.0f;
} }
@ -612,7 +570,7 @@ float fn_1_4FEC(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, Vec *arg3, float ar
return -1.0f; return -1.0f;
} }
float fn_1_55C8(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, float arg9) float fn_1_55C8(Vec arg0, Vec arg1, float arg8, Vec arg2, float arg9)
{ {
float var_f30; float var_f30;
float var_f29; float var_f29;
@ -622,16 +580,16 @@ float fn_1_55C8(Vec *arg0, Vec *arg1, float arg8, Vec *arg2, float arg9)
float var_f22; float var_f22;
float var_f21; float var_f21;
PSVECSubtract(arg0, arg2, arg0); PSVECSubtract(&arg0, &arg2, &arg0);
arg0->y = 0.0f; arg0.y = 0.0f;
arg1->y = 0.0f; arg1.y = 0.0f;
if (PSVECMag(arg0) > arg8 + PSVECMag(arg1) + arg9) { if (PSVECMag(&arg0) > arg8 + PSVECMag(&arg1) + arg9) {
return -1.0f; return -1.0f;
} }
var_f22 = (arg8 + arg9) * (arg8 + arg9); var_f22 = (arg8 + arg9) * (arg8 + arg9);
var_f28 = (arg1->x * arg1->x) + (arg1->z * arg1->z); var_f28 = (arg1.x * arg1.x) + (arg1.z * arg1.z);
var_f27 = 2.0f * ((arg1->x * arg0->x) + (arg1->z * arg0->z)); var_f27 = 2.0f * ((arg1.x * arg0.x) + (arg1.z * arg0.z));
var_f21 = ((arg0->x * arg0->x) + (arg0->z * arg0->z)) - var_f22; var_f21 = ((arg0.x * arg0.x) + (arg0.z * arg0.z)) - var_f22;
if (0.0f == var_f28) { if (0.0f == var_f28) {
return -1.0f; return -1.0f;
} }
@ -705,7 +663,7 @@ void fn_1_5AF4(UnkM410Struct2 *arg0, u8 arg1)
arg0->unk_1C.z *= 0.7f; arg0->unk_1C.z *= 0.7f;
} }
void fn_1_5CA0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) void fn_1_5CA0(Vec arg0, Vec arg1, Vec arg2, Vec *arg3, Vec *arg4)
{ {
Vec sp34; Vec sp34;
Vec sp28; Vec sp28;
@ -716,7 +674,7 @@ void fn_1_5CA0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4)
float var_f29; float var_f29;
float var_f28; float var_f28;
sp34 = *arg1; sp34 = arg1;
var_f31 = PSVECMag(&sp34); var_f31 = PSVECMag(&sp34);
if (var_f31 < 0.001f) { if (var_f31 < 0.001f) {
arg3->x = arg3->y = arg3->z = 0.0f; arg3->x = arg3->y = arg3->z = 0.0f;
@ -725,13 +683,13 @@ void fn_1_5CA0(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4)
} }
PSVECNormalize(&sp34, &sp34); PSVECNormalize(&sp34, &sp34);
var_f31 *= 0.9f; var_f31 *= 0.9f;
PSVECSubtract(arg2, arg0, &sp28); PSVECSubtract(&arg2, &arg0, &sp28);
PSVECNormalize(&sp28, &sp28); PSVECNormalize(&sp28, &sp28);
var_f28 = PSVECDotProduct(&sp34, &sp28); var_f28 = PSVECDotProduct(&sp34, &sp28);
if (var_f28 < 0.0f) { if (var_f28 < 0.0f) {
arg3->x = arg1->x; arg3->x = arg1.x;
arg3->y = arg1->y; arg3->y = arg1.y;
arg3->z = arg1->z; arg3->z = arg1.z;
arg4->x = arg4->y = arg4->z = 0.0f; arg4->x = arg4->y = arg4->z = 0.0f;
return; return;
} }
@ -828,20 +786,8 @@ void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1)
} }
return; return;
} }
sp2C = arg1->unk_04; fn_1_5CA0(arg0->unk_04, arg0->unk_1C, arg1->unk_04, &sp68, &sp74);
var_r29 = &sp2C; fn_1_5CA0(arg1->unk_04, arg1->unk_1C, arg0->unk_04, &sp50, &sp5C);
sp38 = arg0->unk_1C;
var_r28 = &sp38;
sp44 = arg0->unk_04;
var_r27 = &sp44;
fn_1_5CA0(var_r27, var_r28, var_r29, &sp68, &sp74);
sp8 = arg0->unk_04;
var_r26 = &sp8;
sp14 = arg1->unk_1C;
var_r25 = &sp14;
sp20 = arg1->unk_04;
var_r24 = &sp20;
fn_1_5CA0(var_r24, var_r25, var_r26, &sp50, &sp5C);
PSVECAdd(&sp68, &sp5C, &arg0->unk_1C); PSVECAdd(&sp68, &sp5C, &arg0->unk_1C);
PSVECAdd(&sp74, &sp50, &arg1->unk_1C); PSVECAdd(&sp74, &sp50, &arg1->unk_1C);
} }
@ -1045,7 +991,8 @@ void fn_1_6DB4(omObjData *object)
for (var_r29 = 0; var_r29 < 18; var_r29++, var_r31++) { for (var_r29 = 0; var_r29 < 18; var_r29++, var_r31++) {
var_r31->unk_34 = var_r29 / 6; var_r31->unk_34 = var_r29 / 6;
object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_104[var_r31->unk_34]); object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_104[var_r31->unk_34]);
//var_r28 = object->model[var_r29]; var_r28 = object->model[var_r29];
(void)var_r28;
Hu3DModelAttrSet(object->model[var_r29], 0x40000002); Hu3DModelAttrSet(object->model[var_r29], 0x40000002);
Hu3DData[object->model[var_r29]].cluster_attr[0] = 0; Hu3DData[object->model[var_r29]].cluster_attr[0] = 0;
var_r31->unk_30 = object->model[var_r29]; var_r31->unk_30 = object->model[var_r29];

View file

@ -158,52 +158,42 @@ void fn_1_63C(omObjData *object)
return; return;
} }
switch (var_r31->unk_00) { switch (var_r31->unk_00) {
case 0: case 0:
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f); Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f);
var_r31->unk_00 = 1; var_r31->unk_00 = 1;
var_r31->unk_10 = 0; var_r31->unk_10 = 0;
object->func = fn_1_19C8(lbl_1_bss_28, object); object->func = fn_1_19C8(lbl_1_bss_28, object);
break; break;
case 1: case 1:
var_r31->unk_00 = 2; var_r31->unk_00 = 2;
var_r31->unk_18 = 0; var_r31->unk_18 = 0;
object->func = fn_1_FF0; object->func = fn_1_FF0;
break; break;
case 2: case 2:
var_r31->unk_00 = 3; var_r31->unk_00 = 3;
var_r31->unk_28 = 0; var_r31->unk_28 = 0;
object->func = fn_1_216C(lbl_1_bss_28, object); object->func = fn_1_216C(lbl_1_bss_28, object);
break; break;
case 3: case 3:
case 4: case 4:
var_r31->unk_08 = 1; var_r31->unk_08 = 1;
var_r31->unk_00 = 5; var_r31->unk_00 = 5;
object->func = fn_1_ABC; object->func = fn_1_ABC;
break; break;
case 5: case 5:
default: default:
var_r31->unk_00 = 5; var_r31->unk_00 = 5;
object->func = fn_1_DEC; object->func = fn_1_DEC;
break; break;
} }
var_r31->unk_04 = 0; var_r31->unk_04 = 0;
} }
void fn_1_7A8(omObjData *object) void fn_1_7A8(omObjData *object)
{ {
UnkM410Struct *var_r28; fn_1_5A8(object);
var_r28 = object->data;
var_r28->unk_04++;
var_r28->unk_10++;
var_r28->unk_18++;
var_r28->unk_28++;
if (omSysExitReq && var_r28->unk_00 != 5) {
var_r28->unk_00 = 4;
fn_1_63C(object);
}
fn_1_63C(object); fn_1_63C(object);
} }
@ -243,35 +233,38 @@ void fn_1_FF0(omObjData *object)
fn_1_5A8(object); fn_1_5A8(object);
switch (var_r29->unk_14) { switch (var_r29->unk_14) {
case 0: case 0:
var_r29->unk_1C = 30; var_r29->unk_1C = 30;
var_r29->unk_20 = 60; var_r29->unk_20 = 60;
lbl_1_bss_14 = MGSeqCreate(3, 0); lbl_1_bss_14 = MGSeqCreate(3, 0);
MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f); MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f);
CRot.x = -11.2f; CRot.x = -11.2f;
CRot.y = CRot.z = 0.0f; CRot.y = CRot.z = 0.0f;
Center.x = 0.0f; Center.x = 0.0f;
Center.y = 367.0f; Center.y = 367.0f;
Center.z = 252.0f; Center.z = 252.0f;
CZoom = 592.0f; CZoom = 592.0f;
var_r29->unk_14 = 1; var_r29->unk_14 = 1;
var_r29->unk_18 = 0; var_r29->unk_18 = 0;
return; break;
case 1:
break; case 1:
default: if (lbl_1_bss_4 < 0 && MGSeqStatGet(lbl_1_bss_14) & 16) {
return; lbl_1_bss_4 = HuAudSeqPlay(71);
}
if (!MGSeqStatGet(lbl_1_bss_14) && !var_r29->unk_08) {
lbl_1_bss_1C = MGSeqCreate(1, var_r29->unk_1C, -1, -1);
var_r29->unk_14 = 2;
var_r29->unk_18 = 0;
object->func = fn_1_139C;
}
break;
default:
break;
} }
if (lbl_1_bss_4 < 0 && MGSeqStatGet(lbl_1_bss_14) & 16) {
lbl_1_bss_4 = HuAudSeqPlay(71);
}
if (!MGSeqStatGet(lbl_1_bss_14) && !var_r29->unk_08) {
lbl_1_bss_1C = MGSeqCreate(1, var_r29->unk_1C, -1, -1);
var_r29->unk_14 = 2;
var_r29->unk_18 = 0;
object->func = fn_1_139C;
}
} }
void fn_1_139C(omObjData *object) void fn_1_139C(omObjData *object)
@ -407,7 +400,7 @@ void fn_1_2188(omObjData *object)
sp10[var_r26] = -1; sp10[var_r26] = -1;
if (var_r27->unk_2C & var_r25) { if (var_r27->unk_2C & var_r25) {
sp10[var_r24++] = GWPlayerCfg[var_r26].character; sp10[var_r24++] = GWPlayerCfg[var_r26].character;
GWPlayerCoinWinSet(var_r26, GWPlayer[var_r26].coin_win + 10); GWPlayerCoinWinAdd(var_r26, 10);
} }
} }
if (sp10[0] == -1) { if (sp10[0] == -1) {