up to 7FD4

This commit is contained in:
CreateSource 2024-11-22 00:14:09 -05:00
parent 55a6a80ed1
commit 08b09a5f31
3 changed files with 881 additions and 83 deletions

84
.vscode/settings.json vendored
View file

@ -20,82 +20,20 @@
"*.inc": "c",
".clangd": "yaml",
"m443dll.h": "c",
"object.h": "c",
"m417dll.h": "c",
"m418dll.h": "c",
"hsfman.h": "c",
"math.h": "c",
"corecrt_math.h": "c"
"object.h": "c"
},
"search.useIgnoreFiles": false,
"search.exclude": {
"build/*/config.json": true,
"build/**/*.MAP": true,
"build.ninja": true,
".ninja_*": true,
"objdiff.json": true,
"progress.json": true,
"report.json": true,
"compile_commands.json": true
"build/*/config.json": true,
"build/**/*.MAP": true,
"build.ninja": true,
".ninja_*": true,
"objdiff.json": true,
"progress.json": true,
"report.json": true,
"compile_commands.json": true,
},
"cmake.ignoreCMakeListsMissing": true,
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wshadow",
"-Wformat=2",
"-Wcast-align",
"-Wconversion",
"-Wsign-conversion",
"-Wnull-dereference"
],
"C_Cpp_Runner.msvcWarnings": [
"/W4",
"/permissive-",
"/w14242",
"/w14287",
"/w14296",
"/w14311",
"/w14826",
"/w44062",
"/w44242",
"/w14905",
"/w14906",
"/w14263",
"/w44265",
"/w14928"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"C_Cpp_Runner.useAddressSanitizer": false,
"C_Cpp_Runner.useUndefinedSanitizer": false,
"C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false
}
"editor.fontLigatures": true
}

View file

@ -4,6 +4,7 @@
#include "dolphin.h"
typedef void (*M418DllFunc)(void);
typedef s32 (*M418DllS7Func)(void);
typedef struct M418DllUnkStruct {
M418DllFunc unk0;
@ -18,17 +19,35 @@ typedef struct M418DllUnkStruct {
} M418DllUnkStruct; // sizeof 0x4C
typedef struct M418DllUnkStruct7 {
char unk[0x18];
char unk[0x10];
M418DllFunc unk10;
M418DllS7Func unk14;
} M418DllUnkStruct7; // sizeof 0x18
typedef struct M418DllUnkStruct8 {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
} M418DllUnkStruct8; // sizeof 0x24
f32 fn_1_A920(f32, f32, f32);
f32 fn_1_A940(f32, f32, f32, f32);
f32 fn_1_AA30(f32, f32, f32, f32);
void fn_1_ABC4(omObjData*, s32, s32, s32, s32);
void fn_1_AD14(omObjData*, s32, s32, s32, s32);
s32 fn_1_AF38(M418DllUnkStruct7*);
s32 fn_1_B034(M418DllUnkStruct7*, s32);
s32 fn_1_B0C8(M418DllUnkStruct7*, s32);
void fn_1_B104(M418DllUnkStruct*, Vec, Vec);
void fn_1_B41C(M418DllUnkStruct*);
void fn_1_B458(M418DllUnkStruct*);
void fn_1_BEAC(M418DllUnkStruct*, M418DllUnkStruct*, f32, f32, f32);
void fn_1_CBF8(M418DllUnkStruct*, M418DllUnkStruct*, f32, f32, f32);
void fn_1_DC10(M418DllUnkStruct*, M418DllUnkStruct*, f32, f32, f32);

View file

@ -6,12 +6,13 @@
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "REL/m418Dll.h"
// types
typedef struct M418DllUnkStruct2 {
char unk[0x4];
omObjData* unk0;
s32 unk4[3];
char unk10[0x4];
} M418DllUnkStruct2; // sizeof 0x14
@ -33,28 +34,42 @@ typedef struct M418DllUnkStruct3 {
f32 unk34;
f32 unk38;
f32 unk3C;
char unk[0x20];
char unk40[0xC];
s32 unk4C;
s32 unk50;
char unk[0x8];
s32 unk5C;
} M418DllUnkStruct3; // sizeof 0x60
typedef struct M418DllUnkStruct4 {
char unk[0x4];
omObjData* unk0;
f32 unk4;
f32 unk8;
s32 unkC;
s32 unk10;
f32 unk14;
f32 unk18;
union {
f32 unk18;
s32 unk18s;
};
} M418DllUnkStruct4; // sizeof 0x1C
typedef struct M418DllUnkStruct5 {
char unk[0x14];
s32 unk14;
char unk18[0x14];
} M418DllUnkStruct5; // sizeof 0x2C
char unk18[0x8];
s32 unk20;
char unk24[0x8];
} M418DllUnkStruct5; // sizeof 0x2C;
typedef struct M418DllUnkStruct6 {
s32 unk0;
char unk4[0x40];
s32 unk4[3];
s32 unk10[3];
char unk1C[0x18];
s32 unk34;
s32 unk38;
char unk3C[0x8];
} M418DllUnkStruct6; // sizeof 0x44
typedef struct M418DllWorkStruct {
@ -75,6 +90,7 @@ M418DllUnkStruct4 lbl_1_bss_170[4];
M418DllUnkStruct4 lbl_1_bss_11C[3];
M418DllWorkStruct lbl_1_bss_68;
M418DllUnkStruct7 lbl_1_bss_50;
M418DllUnkStruct7 lbl_1_bss_38;
s32 lbl_1_bss_8;
s32 lbl_1_bss_4;
Process* lbl_1_bss_0;
@ -1217,7 +1233,6 @@ s32 fn_1_57E4(s32 arg0) {
s32 var_r30;
if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) {
for (var_r30 = 0; var_r30 < 3; var_r30++) {
temp_r31 = &lbl_1_bss_170[var_r30];
if (temp_r31->unkC == 0) {
@ -1226,7 +1241,7 @@ s32 fn_1_57E4(s32 arg0) {
} else {
var_r29 = 0;
}
if ((var_r29 != 0) || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) {
if (var_r29 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) {
HuAudFXPlay(0x5D3);
temp_r31->unkC = 1;
}
@ -1247,3 +1262,829 @@ s32 fn_1_57E4(s32 arg0) {
return 0;
}
}
s32 lbl_1_data_200[16] = {
0x310000, 0x310001, 0x310002, 0x310003,
0x310004, 0x310005, 0x310006, 0x310007,
0x310008, 0x310009, 0x31000A, 0x31000B,
0x31000C, 0x31000D, 0x31000E, 0x31000F
};
Vec lbl_1_data_240[3] = {
{ -540.0f, 225.0f, -900.0f },
{ -180.0f, 225.0f, -900.0f },
{ 180.0f, 225.0f, -900.0f },
};
void fn_1_5970(void) {
M418DllUnkStruct3* temp_r30;
M418DllUnkStruct6* temp_r29;
M418DllUnkStruct4* temp_r28;
s32 var_r31;
temp_r29 = &lbl_1_bss_3EC;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r30 = &lbl_1_bss_26C[temp_r29->unk4[var_r31]];
omSetTra(temp_r30->unk0, lbl_1_data_240[var_r31].x, lbl_1_data_240[var_r31].y, lbl_1_data_240[var_r31].z - 50.0f);
temp_r30->unk4C = 0;
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r28 = &lbl_1_bss_170[var_r31];
temp_r28->unkC = 0;
}
}
Vec lbl_1_data_264[4] = {
{ -355.0f, 0.0f, -680.0f },
{ 5.0f, 0.0f, -680.0f },
{ 365.0f, 0.0f, -680.0f },
};
s32 fn_1_5A6C(s32 arg0) {
s32 var_r31;
M418DllUnkStruct3* temp_r30;
M418DllUnkStruct4* temp_r29;
M418DllUnkStruct3* temp_r28;
M418DllUnkStruct6* temp_r27;
s32 var_r26;
omObjData* temp_r25;
s32 var_r24;
M418DllUnkStruct* temp_r20;
temp_r27 = &lbl_1_bss_3EC;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r30 = &lbl_1_bss_26C[temp_r27->unk4[var_r31]];
if (temp_r30->unk4C == 0) {
if ((rand8() % 5) == 0) {
var_r26 = 1;
} else {
var_r26 = 0;
}
if (var_r26 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 5)) {
temp_r30->unk4C = 1;
temp_r25 = temp_r30->unk0;
temp_r28 = &lbl_1_bss_26C[temp_r25->work[0]];
if (temp_r28->unk1C == 0) {
temp_r28->unk1C = 1;
}
HuAudCharVoicePlay(temp_r30->unk14, 0x122);
}
} else {
fn_1_3EB0(temp_r30->unk0, lbl_1_data_264[var_r31], 0.0f, 9.0f);
}
}
if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) {
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r29 = &lbl_1_bss_170[var_r31];
if (temp_r29->unkC == 0) {
if ((rand8() % 5) == 0) {
var_r24 = 1;
} else {
var_r24 = 0;
}
if ((var_r24 != 0) || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) {
HuAudFXPlay(0x5D3);
temp_r29->unkC = 1;
}
} else {
temp_r29->unk4 -= 2.5f;
if (temp_r29->unk4 <= 0.0f) {
temp_r29->unk4 = 0.0f;
}
}
}
}
if (fn_1_B0C8(&lbl_1_bss_50, 0) == 0x3C) {
fn_1_56AC(2);
}
if (fn_1_B0C8(&lbl_1_bss_50, 1) != 0) {
return fn_1_AF38(&lbl_1_bss_50);
}
return 0;
}
M418DllUnkStruct8 lbl_1_data_294 = {
0, 0, 0x5A,
0, 0, 0xB4,
0, 0, -1
};
void fn_1_5D28(void) {
fn_1_AEDC(&lbl_1_bss_50, &lbl_1_data_294);
}
s32 fn_1_5D58(void) {
s32 var_r31;
var_r31 = 0;
if (lbl_1_bss_50.unk10 != NULL) {
lbl_1_bss_50.unk10();
lbl_1_bss_50.unk10 = NULL;
}
if (lbl_1_bss_50.unk14 != NULL) {
var_r31 = lbl_1_bss_50.unk14();
}
return var_r31;
}
s32 fn_1_5DF0(omObjData* object, s32 arg1) {
M418DllUnkStruct3* temp_r31;
s32 var_r30;
temp_r31 = &lbl_1_bss_26C[object->work[0]];
var_r30 = temp_r31->unk4C;
if (temp_r31->unkC != 0) {
switch (temp_r31->unk10) {
case 0:
if ((arg1 % 100) == 0) {
var_r30 = rand8() % 4;
}
break;
case 1:
if ((arg1 % 50) == 0) {
var_r30 = rand8() % 4;
}
break;
case 2:
if ((arg1 % 25) == 0) {
var_r30 = rand8() % 4;
}
break;
case 3:
if ((arg1 % 25) == 0) {
var_r30 = rand8() % 4;
}
break;
}
} else {
if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_A) != 0) {
var_r30 = 1;
}
if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_B) != 0) {
var_r30 = 0;
}
if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_X) != 0) {
var_r30 = 3;
}
if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_Y) != 0) {
var_r30 = 2;
}
}
return var_r30;
}
s32 fn_1_6038(omObjData* object, s32 arg1) {
M418DllUnkStruct3* temp_r30;
M418DllUnkStruct4* temp_r28;
M418DllUnkStruct4* temp_r27;
M418DllUnkStruct4* temp_r26;
s32 var_r29;
s32 var_r31;
temp_r30 = &lbl_1_bss_26C[object->work[0]];
var_r31 = temp_r30->unk4C;
if (temp_r30->unkC != 0) {
switch (temp_r30->unk10) {
case 0:
if ((arg1 % 200) == 1) {
var_r31 = rand8() % 4;
}
break;
case 1:
if ((arg1 % 150) == 1) {
var_r31 = rand8() % 4;
}
break;
case 2:
if ((arg1 % 100) == 1) {
var_r31 = rand8() % 4;
}
break;
case 3:
if ((arg1 % 100) == 1) {
var_r31 = rand8() % 4;
}
break;
}
if (var_r31 != -1) {
temp_r28 = &lbl_1_bss_170[var_r31];
if (temp_r28->unk18s == 1) {
for (var_r29 = 0; var_r29 < 4; var_r29++) {
temp_r27 = &lbl_1_bss_170[var_r29];
if (temp_r27->unk18s != 1) {
var_r31 = var_r29;
temp_r27->unk18s = 1;
break;
}
}
} else {
temp_r28->unk18s = 1;
}
}
} else {
if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_A) != 0) {
var_r31 = 1;
}
if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_B) != 0) {
var_r31 = 0;
}
if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_X) != 0) {
var_r31 = 3;
}
if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_Y) != 0) {
var_r31 = 2;
}
if (var_r31 != -1) {
temp_r26 = &lbl_1_bss_170[var_r31];
if (temp_r26->unk18s == 1) {
var_r31 = -1;
} else {
temp_r26->unk18s = 1;
}
}
}
return var_r31;
}
void fn_1_6314(void) {
M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4;
Vec sp2C = { 0.0f, 1100.0f, 1800.0f };
Vec sp20 = { 0.0f, 600.0f, 600.0f };
fn_1_B104(var_r31, sp2C, sp20);
fn_1_B41C(var_r31);
var_r31->rot.x++;
}
void fn_1_63F8(void) {
M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4;
M418DllUnkStruct sp38;
Vec sp2C = { 0.0f, 1800.0f, 480.0f };
Vec sp20 = { 0.0f, 600.0f, 250.0f };
fn_1_B104(&sp38, sp2C, sp20);
fn_1_B41C(&sp38);
sp38.zoom = 750.0f;
fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 120.0f, 10.0f);
}
void fn_1_6510(void) {
M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4;
M418DllUnkStruct sp38;
Vec sp2C = { 0.0f, 980.0f, 1330.0f };
Vec sp20 = { 0.0f, 480.0f, 130.0f };
fn_1_B104(&sp38, sp2C, sp20);
fn_1_B41C(&sp38);
fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f);
}
Vec lbl_1_data_2B8[8] = {
{ -540.0f, 225.0f, -900.0f },
{ -180.0f, 225.0f, -900.0f },
{ 180.0f, 225.0f, -900.0f },
{ 540.0f, 225.0f, -900.0f },
{ -360.0f, 0.0f, -680.0f },
{ 0.0f, 0.0f, -680.0f },
{ 360.0f, 0.0f, -680.0f },
{ 0.0f, 0.0f, 0.0f }
};
void fn_1_6618(void) {
M418DllUnkStruct sp8;
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct* var_r30;
M418DllUnkStruct6* var_r29;
var_r29 = &lbl_1_bss_3EC;
temp_r31 = &lbl_1_bss_26C[var_r29->unk0];
var_r30 = &lbl_1_bss_1F4;
sp8.center.x = lbl_1_data_2B8[temp_r31->unk4C].x;
sp8.center.y = lbl_1_data_2B8[temp_r31->unk4C].y;
sp8.center.z = lbl_1_data_2B8[temp_r31->unk4C].z;
sp8.rot.x = 0.0f;
sp8.rot.y = 0.0f;
sp8.rot.z = 0.0f;
sp8.zoom = 725.0f;
fn_1_CBF8(var_r30, &sp8, var_r30->unk48++, 30.0f, 5.0f);
}
void fn_1_6740(s32 arg0) {
M418DllUnkStruct* var_r27 = &lbl_1_bss_1F4;
fn_1_B458(var_r27);
switch (arg0) {
case 0:
fn_1_248(fn_1_6314);
break;
case 1:
fn_1_248(fn_1_63F8);
break;
case 2:
fn_1_248(fn_1_6510);
break;
case 3:
fn_1_248(fn_1_6618);
break;
}
}
void fn_1_6808(s32 arg0) {
s32 var_r31;
M418DllUnkStruct6* var_r30 = &lbl_1_bss_3EC;
M418DllUnkStruct3* var_r29;
M418DllUnkStruct4* var_r28;
M418DllUnkStruct* var_r23;
HuAudAUXVolSet(0x40, 0x40);
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = &lbl_1_bss_26C[var_r30->unk4[var_r31]];
var_r29->unk4C = -1;
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r28 = &lbl_1_bss_11C[var_r31];
fn_1_ABC4(var_r28->unk0, 0, 3, 30, 1);
}
if (lbl_1_bss_8 == 0) {
lbl_1_bss_8 = 1;
lbl_1_bss_4 = 0x12C;
}
fn_1_6740(0);
}
Vec lbl_1_data_318[4] = {
{ -540.0f, 115.0f, -700.0f },
{ -180.0f, 115.0f, -700.0f },
{ 180.0f, 115.0f, -700.0f },
{ 540.0f, 115.0f, -700.0f }
};
s32 fn_1_6914(s32 arg0) {
Vec sp14;
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct3* temp_r30;
s32 var_r29;
s32 temp_r27;
M418DllUnkStruct6* var_r26;
M418DllUnkStruct4* var_r25;
M418DllUnkStruct* var_r18;
var_r26 = &lbl_1_bss_3EC;
for (var_r29 = 0; var_r29 < 3; var_r29++) {
temp_r31 = &lbl_1_bss_26C[var_r26->unk4[var_r29]];
temp_r27 = fn_1_B0C8(&lbl_1_bss_38, 0);
temp_r31->unk4C = fn_1_5DF0(temp_r31->unk0, temp_r27);
if (temp_r31->unk4C != -1) {
sp14.x = lbl_1_data_318[temp_r31->unk4C].x;
sp14.y = lbl_1_data_318[temp_r31->unk4C].y;
sp14.z = (75.0f * var_r29) + lbl_1_data_318[temp_r31->unk4C].z;
fn_1_3444(temp_r31->unk0, sp14, -1.0f, 9.0f);
if (temp_r31->unk0->trans.z <= -720.0f) {
temp_r31->unk0->trans.z = -720.0f;
}
if (temp_r31->unk0->trans.z >= -480.0f) {
temp_r31->unk0->trans.z = -480.0f;
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0xF0) {
temp_r31->unk0->trans.x = temp_r31->unk0->trans.y = -5000.0f;
fn_1_ABC4(temp_r31->unk0, 0, 0, 0xA, 1);
}
}
}
for (var_r29 = 0; var_r29 < 3; var_r29++) {
var_r25 = &lbl_1_bss_11C[var_r29];
var_r25->unk0->rot.y += 1.2f;
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) {
fn_1_6740(1);
}
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
return fn_1_AF38(&lbl_1_bss_38);
}
return 0;
}
void fn_1_6DCC(s32 arg0) {
s32 var_r31;
M418DllUnkStruct4* temp_r30;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r30 = &lbl_1_bss_11C[var_r31];
temp_r30->unk0->rot.y = 0.0f;
fn_1_ABC4(temp_r30->unk0, 0, 0, 0x1E, 1);
}
fn_1_6740(2);
}
s32 fn_1_6E6C(void) {
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
return fn_1_AF38(&lbl_1_bss_38);
}
return 0;
}
void fn_1_6EB4(void) {
M418DllUnkStruct6* var_r31 = &lbl_1_bss_3EC;
s32 var_r30;
M418DllUnkStruct3* temp_r29;
var_r31->unk34 = 0;
for (var_r30 = 0; var_r30 < 3; var_r30++) {
temp_r29 = &lbl_1_bss_26C[var_r31->unk4[var_r30]];
if (temp_r29->unk4C == -1) {
var_r31->unk34++;
temp_r29->unk50 = 0;
}
}
}
s32 fn_1_6F38(void) {
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct2* temp_r29;
M418DllUnkStruct6* temp_r28;
M418DllUnkStruct2* temp_r27;
s32 var_r26;
s32 var_r30;
f32 var_f31;
temp_r29 = &lbl_1_bss_1E0;
temp_r28 = &lbl_1_bss_3EC;
if (temp_r28->unk34 == 0) {
return fn_1_B034(&lbl_1_bss_38, 9);
}
for (var_r30 = 0; var_r30 < 3; var_r30++) {
temp_r31 = &lbl_1_bss_26C[temp_r28->unk4[var_r30]];
if (temp_r31->unk4C == -1) {
if (temp_r29->unk4[var_r30] == 0) {
if ((rand8() % 10) == 0) {
var_r26 = 1;
} else {
var_r26 = 0;
}
if ((var_r26 != 0) || (fn_1_B0C8(&lbl_1_bss_38, 0) >= 10)) {
HuAudFXPlay(0x5DC);
HuAudCharVoicePlay(temp_r31->unk14, 0x128);
temp_r29->unk4[var_r30] = 2;
Hu3DModelShadowDispOff(temp_r31->unk0->model[0]);
fn_1_ABC4(temp_r31->unk0, 0, 7, 0x1E, 0);
temp_r31->unk50 = fn_1_B0C8(&lbl_1_bss_38, 0);
omVibrate(temp_r31->unk4, 0xC, 6, 6);
}
} else if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x1E)) {
temp_r31->unk0->trans.y -= 15.0f;
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x3C)) {
var_f31 = fn_1_AA30(-200.0f, -110.0f, fn_1_B0C8(&lbl_1_bss_38, 0) - (temp_r31->unk50 + 0x3C), 90.0f);
Hu3DModelPosSet(
temp_r29->unk0->model[var_r30 + 8],
-350.0f + (360.0f * var_r30),
var_f31,
-660.0f
);
Hu3DModelRotSet(temp_r29->unk0->model[var_r30 + 8], 0.0f, 0.0f, 20.0f);
}
}
}
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
temp_r27 = &lbl_1_bss_1E0;
temp_r27->unk4[0] = temp_r27->unk4[1] = temp_r27->unk4[2] = 3;
if (temp_r28->unk34 >= 3) {
return 1;
}
return fn_1_B034(&lbl_1_bss_38, 9);
} else {
return 0;
}
}
void fn_1_7294(void) {}
s32 fn_1_7298(void) {
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct4* temp_r30;
M418DllUnkStruct6* temp_r29;
temp_r29 = &lbl_1_bss_3EC;
temp_r31 = &lbl_1_bss_26C[temp_r29->unk0];
temp_r30 = &lbl_1_bss_11C[temp_r29->unk38];
if (fn_1_B0C8(&lbl_1_bss_38, 0) < 0x3C) {
if (((temp_r30->unk0->work[0] == 0) || (temp_r30->unk0->work[1] == 0x18)) && (temp_r30->unk0->rot.y > -50.0f)) {
temp_r30->unk0->rot.y -= 5.0f;
if (temp_r30->unk0->rot.y <= -50.0f) {
temp_r30->unk0->rot.y = -50.0f;
}
}
if (temp_r31->unk0->rot.y < 180.0f) {
temp_r31->unk0->rot.y += 5.0f;
if (temp_r30->unk0->rot.y <= -50.0f) {
temp_r30->unk0->rot.y = -50.0f;
}
}
} else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) {
HuAudFXPlay(0x40);
fn_1_ABC4(temp_r30->unk0, 0, 2, 0xA, 0);
fn_1_AD14(temp_r31->unk0, 0, 0, 0xA, 1);
Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]);
Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f);
lbl_1_bss_240.unk20 = HuAudFXPlay(0x5D9);
} else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) {
if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0x5A) {
temp_r31->unk3C += 0.025f;
if (temp_r31->unk3C >= 1.0f) {
temp_r31->unk3C = 1.0f;
}
}
} else {
Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f);
}
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
return fn_1_AF38(&lbl_1_bss_38);
} else {
return 0;
}
}
void fn_1_7570(void) {
M418DllUnkStruct6* var_r31 = &lbl_1_bss_3EC;
M418DllUnkStruct3* var_r30 = &lbl_1_bss_26C[var_r31->unk0];
var_r30->unk4C = -1;
if (lbl_1_bss_8 == 0) {
lbl_1_bss_8 = 1;
lbl_1_bss_4 = 0x12C;
}
}
s32 fn_1_75E4(void) {
Mtx sp38;
Mtx sp8;
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct6* var_r30;
s32 var_r29;
var_r30 = &lbl_1_bss_3EC;
temp_r31 = &lbl_1_bss_26C[var_r30->unk0];
if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 10) {
temp_r31->unk4C = fn_1_6038(temp_r31->unk0, fn_1_B0C8(&lbl_1_bss_38, 0));
if (temp_r31->unk4C != -1) {
if (lbl_1_bss_8 == 2) {
lbl_1_bss_8 = 3;
lbl_1_bss_4 = 0x1E;
}
return fn_1_AF38(&lbl_1_bss_38);
}
}
fn_1_B0C8(&lbl_1_bss_38, 1);
var_r29 = 0;
if (lbl_1_bss_8 == 3) {
var_r29 = 1;
}
if (var_r29 != 0) {
Hu3DModelObjMtxGet(temp_r31->unk0->model[0], lbl_1_data_1C0[temp_r31->unk14], sp8);
Hu3DModelObjMtxGet(temp_r31->unk0->model[12], "g031i00-itemhook_eff", sp38);
Hu3DModelPosSet(temp_r31->unk0->model[13], sp38[0][3] + sp8[0][3], 80.0f + (sp38[1][3] + sp8[1][3]), sp38[2][3] + sp8[2][3]);
Hu3DModelScaleSet(temp_r31->unk0->model[13], 0.5f, 0.5f, 0.5f);
Hu3DMotionSpeedSet(temp_r31->unk0->model[13], 2.0f);
fn_1_ABC4(temp_r31->unk0, 0xD, 0xD, 0, 0);
return fn_1_AF38(&lbl_1_bss_38);
} else {
return 0;
}
}
void fn_1_77F8(void) {
M418DllUnkStruct6* var_r31;
M418DllUnkStruct3* var_r30;
var_r31 = &lbl_1_bss_3EC;
var_r30 = &lbl_1_bss_26C[var_r31->unk0];
if (var_r30->unk4C == -1) {
HuAudFXFadeOut(lbl_1_bss_240.unk20, 0x3E8);
}
}
s32 fn_1_7860(void) {
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct6* temp_r30;
temp_r30 = &lbl_1_bss_3EC;
temp_r31 = &lbl_1_bss_26C[temp_r30->unk0];
if (temp_r31->unk4C == -1) {
temp_r31->unk3C -= 0.025f;
if (temp_r31->unk3C <= 0.0f) {
temp_r31->unk3C = 0.0f;
}
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
return fn_1_AF38(&lbl_1_bss_38);
}
} else {
temp_r31->unk0->rot.y = fn_1_A940(
180.0f, 200.0f - (10.0f * temp_r31->unk4C),
fn_1_B0C8(&lbl_1_bss_38, 0), 10.0f
);
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0xA) {
Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[10]);
Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f);
temp_r31->unk5C = 1;
}
if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) {
Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f);
temp_r31->unk5C = 2;
return fn_1_AF38(&lbl_1_bss_38);
}
}
return 0;
}
void fn_1_7A68(s32 arg0) {
M418DllUnkStruct6* temp_r31;
M418DllUnkStruct3* temp_r30;
M418DllUnkStruct4* temp_r29;
s32 var_r28;
M418DllUnkStruct3* temp_r27;
s32 var_r26;
var_r26 = 0;
temp_r31 = &lbl_1_bss_3EC;
temp_r30 = &lbl_1_bss_26C[temp_r31->unk0];
if (temp_r30->unk4C != -1) {
temp_r31->unk10[0] = temp_r31->unk10[1] = temp_r31->unk10[2] = -1;
for (var_r28 = 0; var_r28 < 3; var_r28++) {
temp_r27 = &lbl_1_bss_26C[temp_r31->unk4[var_r28]];
if (temp_r30->unk4C == temp_r27->unk4C) {
temp_r31->unk10[var_r26++] = temp_r27->unk0->work[0];
}
}
temp_r29 = &lbl_1_bss_170[temp_r30->unk4C];
temp_r29->unkC = 0;
if (temp_r31->unk10[0] == -1) {
temp_r29->unk10 = 1;
}
temp_r29->unk0->work[1] = 1;
}
}
s32 fn_1_7B68(s32 arg0) {
Mtx sp8;
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct6* temp_r30;
M418DllUnkStruct3* temp_r29;
M418DllUnkStruct4* temp_r28;
s32 var_r27;
s32 var_r26;
M418DllUnkStruct* temp_r21;
var_r26 = -1;
temp_r30 = &lbl_1_bss_3EC;
temp_r29 = &lbl_1_bss_26C[temp_r30->unk0];
temp_r28 = &lbl_1_bss_170[temp_r29->unk4C];
if (temp_r29->unk4C == -1) {
return fn_1_AF38(&lbl_1_bss_38);
}
if (temp_r28->unkC == 1) {
fn_1_6740(3);
}
if (temp_r28->unkC == 3) {
for (var_r27 = 0; var_r27 < 3; var_r27++) {
if (temp_r30->unk10[var_r27] != -1) {
temp_r31 = &lbl_1_bss_26C[temp_r30->unk10[var_r27]];
Hu3DModelObjMtxGet(*temp_r28->unk0->model, "taihou-null4", (f32 (*)[4]) &sp8[0]);
omSetTra(temp_r31->unk0, sp8[0][3], sp8[1][3] - 25.0f, 50.0f + sp8[2][3]);
omSetRot(temp_r31->unk0, 0.0f, 180.0f, 0.0f);
fn_1_AD14(temp_r31->unk0, 0, 8, 0, 2);
temp_r31->unk4C = -1;
temp_r31->unk24 = 0;
if (var_r26 >= 2) {
var_r26 = 1;
}
temp_r31->unk30 = var_r26++;
temp_r31->unk28 = 0.0f;
omVibrate((s16) temp_r29->unk4, 0xC, 4, 2);
}
}
return fn_1_AF38(&lbl_1_bss_38);
}
return 0;
}
void fn_1_7D80(void) {
s32 var_r31;
M418DllUnkStruct3* temp_r30;
M418DllUnkStruct6* temp_r29;
M418DllUnkStruct4* temp_r28;
temp_r29 = &lbl_1_bss_3EC;
temp_r30 = &lbl_1_bss_26C[temp_r29->unk0];
temp_r30->unk0->rot.y = 180.0f;
temp_r30->unk3C = 0.0f;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
temp_r28 = &lbl_1_bss_11C[var_r31];
temp_r28->unk0->rot.y = 0.0f;
}
}
s32 fn_1_7E24(s32 arg0) {
M418DllUnkStruct6* var_r31;
s32 var_r30;
s32 var_r29;
M418DllUnkStruct4* var_r28;
M418DllUnkStruct4* var_r27;
M418DllUnkStruct4* var_r26;
M418DllUnkStruct3* var_r25;
var_r29 = 0;
var_r31 = &lbl_1_bss_3EC;
var_r28 = &lbl_1_bss_11C[0];
var_r27 = &lbl_1_bss_11C[1];
var_r26 = &lbl_1_bss_11C[2];
if (var_r31->unk38 == 2) {
var_r28->unk0->work[1] = 0;
var_r27->unk0->work[1] = 0;
var_r26->unk0->work[1] = 3;
return 1;
}
var_r31->unk38++;
for (var_r30 = 0; var_r30 < 3; var_r30++) {
var_r25 = &lbl_1_bss_26C[var_r31->unk4[var_r30]];
if (var_r25->unk4C != -1) {
var_r29++;
}
}
if (var_r29 == 0) {
return 1;
} else {
return fn_1_AF38(&lbl_1_bss_38);
}
}
void fn_1_7F1C(void) {
M418DllUnkStruct6* var_r31;
M418DllUnkStruct4* var_r30;
M418DllUnkStruct4* var_r29;
M418DllUnkStruct4* var_r28;
var_r31 = &lbl_1_bss_3EC;
var_r30 = &lbl_1_bss_11C[0];
var_r29 = &lbl_1_bss_11C[1];
var_r28 = &lbl_1_bss_11C[2];
if (var_r31->unk38 == 1) {
var_r30->unk0->work[1] = 3;
var_r29->unk0->work[1] = 2;
var_r28->unk0->work[1] = 1;
} else if (var_r31->unk38 == 2) {
var_r30->unk0->work[1] = 0;
var_r29->unk0->work[1] = 3;
var_r28->unk0->work[1] = 2;
}
}
s32 fn_1_7FD4(s32 arg0) {
M418DllUnkStruct3* temp_r31;
M418DllUnkStruct6* temp_r30;
M418DllUnkStruct4* temp_r29;
temp_r30 = &lbl_1_bss_3EC;
temp_r31 = &lbl_1_bss_26C[temp_r30->unk0];
if (temp_r31->unk4C == -1) {
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 30) {
fn_1_6740(2);
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 120) {
return fn_1_B034(&lbl_1_bss_38, 9);
}
} else {
temp_r29 = &lbl_1_bss_170[temp_r31->unk4C];
if (temp_r29->unk10 != 0) {
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 210) {
fn_1_6740(2);
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 300) {
return fn_1_B034(&lbl_1_bss_38, 9);
}
} else {
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 30) {
fn_1_6740(2);
}
if (fn_1_B0C8(&lbl_1_bss_38, 0) == 120) {
return fn_1_B034(&lbl_1_bss_38, 3);
}
}
}
fn_1_B0C8(&lbl_1_bss_38, 1);
return 0;
}