marioparty4/src/REL/m431Dll/object.c
2024-11-03 23:53:45 +01:00

1302 lines
38 KiB
C

#include "game/chrman.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "REL/m431Dll.h"
#include "ext_math.h"
typedef struct bss_struct_62C {
u8 unk0;
float unk4;
} BssStruct62C;
BssStruct62C lbl_1_bss_62C[10];
omObjData *lbl_1_bss_61C[4];
Bss12CStruct lbl_1_bss_12C[4];
s32 lbl_1_bss_AC[16][2];
u32 lbl_1_bss_9C[4];
s8 lbl_1_bss_98;
float lbl_1_data_1D0 = 18;
float lbl_1_data_1D4[8] = { 30.000002f, 0, 20.0f, 0, 20.0f, 50.0f, 20.0f, 30.000002f };
u32 lbl_1_data_1F4[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), -1,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72) };
char *lbl_1_data_230[8] = { "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r",
"test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r" };
void fn_1_858C(omObjData *object);
void fn_1_9440(omObjData *object);
void fn_1_B384(Process *objman);
void fn_1_7ABC(Process *objman)
{
Vec sp20;
Vec sp14;
Vec sp8;
Bss12CStruct *temp_r31;
s16 temp_r30;
s16 temp_r29;
BssStruct62C *temp_r28;
omObjData *temp_r26;
omMakeGroupEx(objman, 0, 4);
omGetGroupMemberListEx(objman, 0);
memset(lbl_1_bss_12C, 0, sizeof(lbl_1_bss_12C));
for (temp_r30 = 0, temp_r29 = 0; temp_r30 < 4; temp_r30++) {
temp_r31 = &lbl_1_bss_12C[GWPlayerCfg[temp_r30].group];
if (GWPlayerCfg[temp_r30].group != 0 && GWPlayerCfg[temp_r30].group != 1) {
break;
}
temp_r31->unk0[temp_r31->unk8++] = temp_r30;
if (temp_r31->unk8 == 2) {
temp_r29++;
}
}
if (temp_r29 != 2) {
GWPlayerCfg[0].group = GWPlayerCfg[1].group = 0;
GWPlayerCfg[2].group = GWPlayerCfg[3].group = 1;
lbl_1_bss_12C[0].unk0[0] = 0;
lbl_1_bss_12C[0].unk0[1] = 1;
lbl_1_bss_12C[0].unk8 = 2;
lbl_1_bss_12C[1].unk0[0] = 2;
lbl_1_bss_12C[1].unk0[1] = 3;
lbl_1_bss_12C[1].unk8 = 2;
}
for (temp_r30 = 0, temp_r28 = &lbl_1_bss_62C[0]; temp_r30 < 10; temp_r30++, temp_r28++) {
temp_r28->unk0 = 1;
temp_r28->unk4 = lbl_1_data_1D0 + (temp_r30 * 36.0f);
}
lbl_1_bss_12C[0].unkC.x = -317;
lbl_1_bss_12C[1].unkC.x = 317;
lbl_1_bss_12C[0].unkC.y = lbl_1_bss_12C[1].unkC.y = 0;
lbl_1_bss_12C[0].unkC.z = lbl_1_bss_12C[1].unkC.z = 100;
lbl_1_bss_12C[0].unk18 = lbl_1_bss_12C[1].unk18 = 230;
for (temp_r30 = 0, temp_r31 = &lbl_1_bss_12C[0]; temp_r30 < 2; temp_r30++, temp_r31++) {
sp8.x = temp_r31->unkC.x;
sp8.y = temp_r31->unkC.y;
sp8.z = temp_r31->unkC.z;
for (temp_r29 = 0; temp_r29 < 10; temp_r29++) {
sp14.x = sp20.x = (temp_r31->unk18 * sind(lbl_1_bss_62C[temp_r29].unk4)) + sp8.x;
sp14.z = sp20.z = (temp_r31->unk18 * cosd(lbl_1_bss_62C[temp_r29].unk4)) + sp8.z;
sp14.y = sp8.y;
sp20.y = sp8.y - 50;
fn_1_6184(&sp8, &temp_r31->unk1C[temp_r29]);
temp_r31->unkE4[temp_r29][0] = sp14.x;
temp_r31->unkE4[temp_r29][1] = sp14.z;
}
temp_r31->unk138[0] = 0;
}
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
OSReport("PNo:%d Grp:%d\n", temp_r30, GWPlayerCfg[temp_r30].group);
temp_r26 = omAddObjEx(objman, 99, 0, 0, -1, fn_1_858C);
lbl_1_bss_61C[temp_r30] = omAddObjEx(objman, 100, 9, 8, 0, fn_1_9440);
lbl_1_bss_61C[temp_r30]->work[0] = temp_r26->work[0] = temp_r30;
}
fn_1_B384(objman);
}
s16 lbl_1_data_260[4] = { 0, 0, 0, 0 };
s16 lbl_1_data_268[2] = { 0, 9 };
s16 fn_1_8AD4(Bss61CWork *arg0, s16 arg1, s16 arg2, s16 *arg3, u8 arg4);
void fn_1_8CC0(omObjData *object);
s16 fn_1_B4F8(float arg0);
s16 fn_1_B530(s16 arg0);
s32 fn_1_7FB8(s16 arg0)
{
Bss61CWork *temp_r31;
Bss12CStruct *temp_r30 = &lbl_1_bss_12C[arg0];
s16 sp18[4] = { 0, 9, 9, 0 };
s16 sp14[2];
s16 sp10[2];
s16 spC[2];
s16 spA;
s16 temp_r29;
s32 temp_r28;
if (lbl_1_bss_98 != 0) {
(void)lbl_1_bss_98;
}
else {
for (temp_r29 = 0, temp_r28 = 0; temp_r29 < 2; temp_r29++) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data;
if ((temp_r31->unk0 & 0xC0) || (temp_r31->unk0 & 0x600)) {
temp_r28 = 1;
}
fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]);
sp10[temp_r29] = temp_r31->unk40 = fn_1_B4F8(temp_r31->unk44.y);
spC[temp_r29] = fn_1_B530(temp_r31->unk40);
}
if (temp_r28 != 0) {
return 0;
}
if (spC[0] != spC[1]) {
if (spC[0] == 0) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data;
temp_r31->unk84 = lbl_1_data_268[0];
temp_r31->unk14->unk84 = lbl_1_data_268[1];
}
else {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data;
temp_r31->unk84 = lbl_1_data_268[0];
temp_r31->unk14->unk84 = lbl_1_data_268[1];
}
}
else {
if (spC[0] == 0) {
if (sp10[0] < sp10[1]) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data;
temp_r31->unk84 = lbl_1_data_268[1];
temp_r31->unk14->unk84 = lbl_1_data_268[0];
}
else {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data;
temp_r31->unk84 = lbl_1_data_268[1];
temp_r31->unk14->unk84 = lbl_1_data_268[0];
}
}
else {
if (sp10[0] > sp10[1]) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[0]]->data;
temp_r31->unk84 = lbl_1_data_268[0];
temp_r31->unk14->unk84 = lbl_1_data_268[1];
}
else {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[1]]->data;
temp_r31->unk84 = lbl_1_data_268[0];
temp_r31->unk14->unk84 = lbl_1_data_268[1];
}
}
}
lbl_1_bss_98++;
}
for (temp_r29 = 0; temp_r29 < 2; temp_r29++) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r29]]->data;
temp_r31->unkC = 0;
temp_r31->unk86 = 1;
temp_r31->unkB4 = 0;
temp_r31->unkB5 = 0;
sp14[temp_r29] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk84, &spA, 0);
if (sp14[temp_r29] != 0) {
temp_r31->unkB4 = (spA == 0) ? 50 : -50;
}
else {
temp_r31->unk86 = 0;
}
fn_1_8CC0(lbl_1_bss_61C[temp_r30->unk0[temp_r29]]);
sp14[temp_r29] = (temp_r31->unk0 & 0xC0) ? 1 : 0;
if (temp_r31->unk0 & 0x600) {
sp14[temp_r29] = 1;
}
}
if (sp14[0] == 0 && sp14[1] == 0) {
return 1;
}
return 0;
}
s32 fn_1_8474(s16 arg0)
{
s32 spC[2];
s32 temp_r31;
Bss61CWork *temp_r30;
Bss12CStruct *temp_r29;
temp_r29 = &lbl_1_bss_12C[arg0];
for (temp_r31 = 0; temp_r31 < 2; temp_r31++) {
temp_r30 = lbl_1_bss_61C[temp_r29->unk0[temp_r31]]->data;
fn_1_8CC0(lbl_1_bss_61C[temp_r29->unk0[temp_r31]]);
if ((temp_r30->unk0 & 0xC0) || (temp_r30->unk0 & 0x600) || (temp_r30->unk0 & 0x20)) {
spC[temp_r31] = 1;
}
else {
spC[temp_r31] = 0;
}
}
if (spC[0] == 0 && spC[1] == 0) {
return 1;
}
return 0;
}
void fn_1_8790(omObjData *object);
Bss61CWork *fn_1_AAF0(omObjData *object);
u32 fn_1_ABA0(omObjData *object, u32 arg1);
void fn_1_858C(omObjData *object)
{
Bss61CWork *temp_r31;
u16 temp_r29;
if (lbl_1_data_260[object->work[0]] == 0) {
return;
}
temp_r31 = lbl_1_bss_61C[object->work[0]]->data;
temp_r31->unkB0 = HuPadBtn[temp_r31->unk6];
temp_r31->unkB2 = HuPadBtnDown[temp_r31->unk6];
temp_r31->unkB4 = HuPadStkX[temp_r31->unk6];
temp_r31->unkB5 = HuPadStkY[temp_r31->unk6];
if (fn_1_2090(1) != 0) {
return;
}
temp_r29 = fn_1_2090(28);
if (temp_r29 == 12 || temp_r29 == 16) {
if (fn_1_ABA0(lbl_1_bss_61C[object->work[0]], 0x600) == 0 && lbl_1_data_260[object->work[0]] != 0) {
temp_r31 = lbl_1_bss_61C[object->work[0]]->data;
if (temp_r31->unk14 == 0) {
temp_r31->unk14 = fn_1_AAF0(lbl_1_bss_61C[object->work[0]]);
}
if (GWPlayerCfg[temp_r31->unk4].iscom) {
fn_1_8790(lbl_1_bss_61C[object->work[0]]);
}
fn_1_8CC0(lbl_1_bss_61C[object->work[0]]);
}
}
}
void fn_1_8790(omObjData *object)
{
Bss61CWork *temp_r31;
s16 temp_r30;
s16 temp_r29;
s16 temp_r28;
u32 temp_r26;
s16 sp18[9];
s16 sp8[8];
temp_r31 = object->data;
temp_r31->unkB4 = temp_r31->unkB5 = 0;
temp_r31->unkB2 = 0;
if (fn_1_2090(224)) {
return;
}
sp18[8] = 999;
for (temp_r30 = 0, temp_r28 = 0, temp_r29 = 8; temp_r30 < temp_r31->unk6E; temp_r30++) {
temp_r26 = fn_1_4738(temp_r31->unkA, temp_r31->unk5E[temp_r30]);
if (temp_r26 & 0x1) {
temp_r31->unk5E[temp_r30] = -1;
}
sp18[temp_r30] = fn_1_8AD4(temp_r31, temp_r31->unk40, temp_r31->unk5E[temp_r30], &sp8[temp_r30], 1);
if (sp18[temp_r30] < sp18[temp_r29]) {
temp_r29 = temp_r30;
}
if (temp_r31->unk5E[temp_r30] == -1) {
temp_r28++;
}
}
if (temp_r28 == temp_r31->unk6E) {
return;
}
if (temp_r31->unk70 < temp_r31->unk72 && temp_r29 < 4) {
for (temp_r30 = 4; temp_r30 < temp_r31->unk6E; temp_r30++) {
if (sp18[temp_r30] < 10) {
temp_r29 = temp_r30;
break;
}
}
}
if (temp_r31->unk7C == 0) {
if (GWPlayerCfg[temp_r31->unk14->unk4].iscom) {
if (temp_r31->unk4 > temp_r31->unk14->unk4 && (temp_r31->unk0 & 0x20)) {
temp_r31->unk7C = 1;
}
}
else {
if (temp_r31->unk0 & 0x20) {
temp_r31->unk7C = 1;
}
}
}
if (temp_r31->unk7C && temp_r28 == temp_r31->unk6E - 1) {
if (++temp_r31->unk7C > 120) {
temp_r31->unk7C = 0;
}
if ((temp_r31->unk14->unk0 & 0xC0) == 0x40) {
sp8[temp_r29] = 0;
}
else {
if ((temp_r31->unk14->unk0 & 0xC0) == 0x80) {
sp8[temp_r29] = 1;
}
else {
temp_r31->unk7C = 0;
}
}
}
if (sp18[temp_r29] != -1) {
temp_r31->unkB4 = (sp8[temp_r29] == 0) ? 50 : -50;
}
else {
if (temp_r31->unk44.z <= 15.0f) {
temp_r31->unkB2 = PAD_BUTTON_A;
}
}
}
s16 fn_1_8AD4(Bss61CWork *arg0, s16 arg1, s16 arg2, s16 *arg3, u8 arg4)
{
s16 temp_r31;
s16 temp_r29;
s16 temp_r28;
s16 temp_r27;
s16 temp_r26;
s16 temp_r25;
if (arg2 == -1) {
*arg3 = rand16() % 2;
temp_r29 = 99;
}
else if (arg1 == arg2) {
*arg3 = -1;
temp_r29 = (arg4) ? -1 : 0;
}
else {
temp_r28 = temp_r27 = temp_r26 = temp_r25 = 0;
temp_r31 = arg1;
do {
temp_r31++;
temp_r28++;
if (temp_r31 >= 10) {
temp_r31 = 0;
}
if (arg4 && temp_r31 == arg0->unk14->unk40) {
temp_r26 = 99;
break;
}
} while (temp_r31 != arg2);
temp_r31 = arg1;
do {
temp_r31--;
temp_r27++;
if (temp_r31 < 0) {
temp_r31 = 9;
}
if (arg4 && temp_r31 == arg0->unk14->unk40) {
temp_r25 = 99;
break;
}
} while (temp_r31 != arg2);
if (temp_r26 != temp_r25) {
temp_r28 += temp_r26;
temp_r27 += temp_r25;
if (temp_r28 < temp_r27) {
*arg3 = 0;
temp_r29 = temp_r28;
}
else {
*arg3 = 1;
temp_r29 = temp_r27;
}
}
else {
if (temp_r28 < temp_r27) {
*arg3 = 0;
temp_r29 = temp_r28;
}
else {
*arg3 = 1;
temp_r29 = temp_r27;
}
temp_r29 += 10;
}
}
return temp_r29;
}
s16 fn_1_938C(omObjData *object);
void fn_1_ABC0(omObjData *object, u32 arg1, u32 arg2);
void fn_1_8CC0(omObjData *object)
{
float temp_f31;
float temp_f30;
float temp_f28;
Bss61CWork *temp_r31;
s16 temp_r30;
s16 temp_r29;
s16 temp_r28;
s16 temp_r27;
s16 temp_r26;
Vec sp10;
u16 sp8;
Bss12CInner *temp_r25;
temp_r31 = object->data;
if (temp_r31->unk38 == 3 || temp_r31->unk38 == 5) {
return;
}
sp8 = fn_1_2090(28);
if ((temp_r31->unk0 & 0x20) || (fn_1_2090(28) != 12 && temp_r31->unk86 == 0)) {
temp_r28 = temp_r26 = 0;
}
else {
temp_r28 = temp_r31->unkB4;
temp_r26 = temp_r31->unkB5;
}
temp_r30 = temp_r29 = 0;
if (temp_r31->unk52 == 0) {
switch (temp_r31->unkC) {
case 0:
if (temp_r28 > 10) {
temp_r30 = 1;
}
else if (temp_r28 < -10) {
temp_r29 = 1;
}
break;
case 1:
if (ABS(temp_r28) >= 10 || ABS(temp_r26) >= 10) {
temp_r25 = &lbl_1_bss_12C[temp_r31->unkA].unk1C[temp_r31->unk40];
sp10.x = temp_r28 + lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][0];
sp10.z = lbl_1_bss_12C[temp_r31->unkA].unkE4[temp_r31->unk40][1] - temp_r26;
temp_f28 = (temp_r25->unk0.x * sp10.x) + (temp_r25->unk0.z * sp10.z) - temp_r25->unkC;
if (temp_f28 > 0.0f) {
if (temp_r31->unk50 != temp_r31->unk40) {
if (temp_r31->unk54 == 128) {
temp_r31->unk52 = 1;
}
}
else {
temp_r30 = 1;
}
}
else {
if (temp_f28 < 0.0f) {
if (temp_r31->unk50 != temp_r31->unk40) {
if (temp_r31->unk54 == 64) {
temp_r31->unk52 = 1;
}
}
else {
temp_r29 = 1;
}
}
}
}
break;
}
}
else {
if (temp_r31->unk58 != temp_r28 || temp_r31->unk5A != temp_r26) {
temp_r31->unk52 = 0;
}
}
temp_f31 = temp_r31->unk24.x - temp_r31->unk14->unk24.x;
temp_f30 = temp_r31->unk24.z - temp_r31->unk14->unk24.z;
temp_f28 = VECMagPoint(temp_f31, 0, temp_f30);
if (temp_f28 < 90 && (temp_r31->unk0 & 0x20) == 0) {
if (fn_1_938C(object) == 0) {
temp_r30 = 0;
temp_r29 = 1;
}
else {
temp_r30 = 1;
temp_r29 = 0;
}
temp_r31->unk0 |= 0x20;
}
else {
if (temp_r31->unk54 == 64) {
temp_r27 = temp_r31->unk42 - temp_r31->unk40;
if (temp_r27 < 0) {
temp_r27 += 10;
}
if (temp_r27 > 1) {
temp_r31->unk42 = 1;
}
}
else {
temp_r27 = temp_r31->unk40 - temp_r31->unk42;
if (temp_r27 < 0) {
temp_r27 += 10;
}
if (temp_r27 > 1) {
temp_r31->unk42 = 9;
}
}
}
if (temp_r30) {
temp_r30 = 0;
if (temp_r31->unk54 == 64) {
if (temp_r31->unk44.z <= 2.0f) {
temp_r30 = 1;
}
}
else if (temp_r31->unk54 == 128) {
if (temp_r31->unk40 != temp_r31->unk42) {
temp_r31->unk40 = temp_r31->unk42;
}
temp_r30 = 1;
}
else {
temp_r30 = 1;
}
if (temp_r30) {
fn_1_ABC0(object, 192, 64);
temp_r31->unk42 = temp_r31->unk40 + 1;
if (temp_r31->unk42 >= 10) {
temp_r31->unk42 = 0;
}
}
}
else if (temp_r29) {
temp_r29 = 0;
if (temp_r31->unk54 == 128) {
if (temp_r31->unk44.z <= 2.0f) {
temp_r29 = 1;
}
}
else if (temp_r31->unk54 == 64) {
if (temp_r31->unk40 != temp_r31->unk42) {
temp_r31->unk40 = temp_r31->unk42;
}
temp_r29 = 1;
}
else {
temp_r29 = 1;
}
if (temp_r29) {
fn_1_ABC0(object, 192, 128);
temp_r31->unk42 = temp_r31->unk40 - 1;
if (temp_r31->unk42 < 0) {
temp_r31->unk42 = 9;
}
}
}
temp_r31->unk50 = temp_r31->unk40;
temp_r31->unk54 = fn_1_ABA0(object, 192);
temp_r31->unk58 = temp_r28;
temp_r31->unk5A = temp_r26;
}
s16 fn_1_938C(omObjData *object)
{
Bss61CWork *temp_r31;
float temp_f31;
temp_r31 = object->data;
temp_f31 = temp_r31->unk44.y - temp_r31->unk14->unk44.y;
if (temp_f31 > 180.0f) {
temp_f31 -= 360.0f;
}
else if (temp_f31 < -180.0f) {
temp_f31 = 360.0f + temp_f31;
}
return (temp_f31 <= 0.0f) ? 0 : 1;
}
void fn_1_98D4(omObjData *object);
void fn_1_B0E8(omObjData *object, s16 arg1, u32 arg2);
void fn_1_9440(omObjData *object)
{
Bss61CWork *temp_r31;
Bss12CStruct *temp_r29;
s16 temp_r28;
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss61CWork), MEMORY_DEFAULT_NUM);
temp_r31 = object->data;
memset(temp_r31, 0, sizeof(Bss61CWork));
object->stat |= 0x100;
temp_r31->unk4 = object->work[0];
temp_r31->unk6 = GWPlayerCfg[temp_r31->unk4].pad_idx;
temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].character;
temp_r31->unkA = GWPlayerCfg[temp_r31->unk4].group;
temp_r31->unkC = (GWPlayerCfg[temp_r31->unk4].iscom) ? 0 : 1;
temp_r31->unkAC = 0;
object->model[0] = CharModelCreate(temp_r31->unk8, 2);
Hu3DModelLayerSet(object->model[0], 0);
Hu3DModelShadowSet(object->model[0]);
CharModelStepTypeSet(temp_r31->unk8, 0);
for (temp_r28 = 0; temp_r28 < 8; temp_r28++) {
if (lbl_1_data_1F4[temp_r28] != -1) {
object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk8, lbl_1_data_1F4[temp_r28]);
}
else {
object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], DATA_MAKE_NUM(DATADIR_M431, 0x21) + temp_r31->unk8);
}
if (temp_r28 == 4 || temp_r28 == 5) {
CharModelVoiceEnableSet(temp_r31->unk8, object->motion[temp_r28], 0);
}
}
CharModelMotionDataClose(temp_r31->unk8);
temp_r29 = &lbl_1_bss_12C[temp_r31->unkA];
for (temp_r28 = 0; temp_r28 < 8; temp_r28++) {
temp_r31->unk5E[temp_r28] = -1;
}
if (temp_r31->unkA == 0) {
if (temp_r29->unk0[0] == object->work[0]) {
temp_r31->unk44.y = lbl_1_bss_62C[9].unk4;
}
else {
temp_r31->unk44.y = lbl_1_bss_62C[4].unk4;
}
}
else {
if (temp_r29->unk0[0] == object->work[0]) {
temp_r31->unk44.y = lbl_1_bss_62C[5].unk4;
}
else {
temp_r31->unk44.y = lbl_1_bss_62C[0].unk4;
}
}
temp_r31->unk40 = (temp_r31->unk44.y / 360.0f) * 10.0f;
temp_r31->unk42 = temp_r31->unk40;
temp_r31->unk10 = lbl_1_data_1D4[temp_r31->unk8];
temp_r31->unk24.x = ((temp_r29->unk18 + temp_r31->unk10) * sind(temp_r31->unk44.y)) + temp_r29->unkC.x;
temp_r31->unk24.y = temp_r29->unkC.y;
temp_r31->unk24.z = ((temp_r29->unk18 + temp_r31->unk10) * cosd(temp_r31->unk44.y)) + temp_r29->unkC.z;
temp_r31->unk30 = atan2d(temp_r29->unkC.x - temp_r31->unk24.x, temp_r29->unkC.z - temp_r31->unk24.z);
Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z);
Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0);
temp_r31->unk38 = temp_r31->unk3A = -1;
fn_1_B0E8(object, 0, 10);
lbl_1_data_260[object->work[0]] = 1;
object->func = fn_1_98D4;
}
void fn_1_9A04(omObjData *object);
void fn_1_9C5C(omObjData *object);
void fn_1_A0F8(omObjData *object);
void fn_1_A450(omObjData *object);
void fn_1_AA40(omObjData *object);
void fn_1_B130(omObjData *object, s16 arg1, u32 arg2);
void fn_1_B150(omObjData *object, omObjFunc arg1);
void fn_1_B18C(omObjData *object);
s32 fn_1_B494(s32 arg0, s32 arg1);
void fn_1_98D4(omObjData *object)
{
Vec sp8;
Bss61CWork *temp_r31;
ModelData *temp_r29;
temp_r31 = object->data;
temp_r29 = &Hu3DData[object->model[0]];
sp8.x = temp_r31->unk24.x - temp_r29->pos.x;
sp8.z = temp_r31->unk24.z - temp_r29->pos.z;
if ((temp_r31->unk0 & 0x600) == 0 || 0.0f != sp8.x || 0.0f != sp8.z || (temp_r31->unk0 & 0x20)) {
fn_1_9A04(object);
fn_1_9C5C(object);
fn_1_A0F8(object);
}
else {
fn_1_A450(object);
}
fn_1_B18C(object);
Hu3DModelPosSet(object->model[0], temp_r31->unk24.x, temp_r31->unk24.y, temp_r31->unk24.z);
Hu3DModelRotSet(object->model[0], 0, temp_r31->unk30, 0);
}
void fn_1_9A04(omObjData *object)
{
Bss61CWork *temp_r31;
ModelData *temp_r29;
temp_r29 = &Hu3DData[object->model[0]];
temp_r31 = object->data;
if (fn_1_2090(28) != 12 || fn_1_2090(224) != 0) {
return;
}
if (fn_1_4724() == 2) {
return;
}
if (fn_1_ABA0(object, 192) != 0) {
return;
}
if (temp_r31->unk38 == 0) {
if (temp_r29->unk_0C == -1 && temp_r31->unkB2 == PAD_BUTTON_A) {
if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40)) {
fn_1_B0E8(object, 3, 4);
fn_1_B130(object, 0, 8);
}
}
}
else {
if (temp_r31->unk38 == 3) {
if (temp_r29->unk_0C == -1 && temp_r29->unk_64 == 14.0f) {
temp_r31->unk5C = fn_1_4B14(temp_r31->unkA, temp_r31->unk40, &temp_r31->unk7E);
if (temp_r31->unk5C != -1) {
if (temp_r31->unkA == 0) {
HuAudFXPlay(1668);
}
else {
HuAudFXPlay(1673);
}
if (temp_r31->unk7E != 0) {
omVibrate(temp_r31->unk4, 12, 6, 6);
if (temp_r31->unkA == 0) {
fn_1_B494(1666, 30);
}
else {
fn_1_B494(1671, 30);
}
}
else {
if (temp_r31->unkA == 0) {
fn_1_B494(1667, 30);
}
else {
fn_1_B494(1672, 30);
}
}
temp_r31->unk70++;
Hu3DModelPosSet(temp_r31->unk5C, 0, 0, 0);
Hu3DModelHookSet(object->model[0], lbl_1_data_230[temp_r31->unk8], temp_r31->unk5C);
fn_1_B150(object, fn_1_AA40);
}
}
}
}
}
void fn_1_9C5C(omObjData *object)
{
float temp_f31;
Bss61CWork *temp_r31;
Bss12CStruct *temp_r30;
s8 temp_r29;
u32 temp_r27;
temp_r31 = object->data;
temp_r30 = &lbl_1_bss_12C[temp_r31->unkA];
temp_r29 = 0;
if ((temp_r27 = fn_1_ABA0(object, 192)) == 0) {
return;
}
if (temp_r27 == 192) {
temp_r29 = 1;
}
else if (temp_r27 == 64) {
temp_r31->unk44.x += 0.3f;
if (temp_r31->unk44.x > 1.5f) {
temp_r31->unk44.x = 1.5f;
}
temp_r31->unk44.y += temp_r31->unk44.x;
temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4;
if (temp_r31->unk40 == 9 && temp_r31->unk42 == 0) {
temp_f31 += 360.0f;
}
else {
if (temp_r31->unk44.y >= 360.0f) {
temp_r31->unk44.y -= 360.0f;
}
}
temp_r31->unk44.z = ABS(temp_r31->unk44.y - temp_f31);
if (temp_r31->unk44.y >= temp_f31) {
temp_r29 = 1;
}
}
else {
temp_r31->unk44.x -= 0.3f;
if (temp_r31->unk44.x < -1.5f) {
temp_r31->unk44.x = -1.5f;
}
temp_r31->unk44.y += temp_r31->unk44.x;
temp_f31 = lbl_1_bss_62C[temp_r31->unk42].unk4;
if (temp_r31->unk42 == 9 && temp_r31->unk40 == 0) {
if (temp_r31->unk44.y < 0.0f) {
temp_r31->unk44.y += 360.0f;
}
else {
temp_f31 -= 360.0f;
}
}
else {
if (temp_r31->unk42 == 0 || temp_r31->unk40 == 0) {
if (temp_r31->unk44.y < 0.0f) {
temp_r31->unk44.y += 360.0f;
temp_f31 += 360.0f;
}
}
else {
if (temp_r31->unk44.y < 0.0f) {
temp_r31->unk44.y += 360.0f;
}
}
}
temp_r31->unk44.z = ABS(temp_r31->unk44.y - temp_f31);
if (temp_r31->unk44.y <= temp_f31) {
temp_r29 = 1;
}
}
if (temp_r29 != 0) {
temp_r31->unk44.x = 0;
temp_r31->unk44.y = lbl_1_bss_62C[temp_r31->unk42].unk4;
temp_r31->unk0 &= ~0xE0;
}
temp_r31->unk40 = (temp_r31->unk44.y / 360.0f) * 10.0f;
if (temp_r31->unk40 >= 10) {
temp_r31->unk40 -= 10;
}
temp_r31->unk24.x = ((temp_r30->unk18 + temp_r31->unk10) * sind(temp_r31->unk44.y)) + temp_r30->unkC.x;
temp_r31->unk24.y = temp_r30->unkC.y;
temp_r31->unk24.z = ((temp_r30->unk18 + temp_r31->unk10) * cosd(temp_r31->unk44.y)) + temp_r30->unkC.z;
fn_1_B0E8(object, 2, 8);
}
void fn_1_A0F8(omObjData *object)
{
Vec sp8;
Bss61CWork *temp_r31;
ModelData *temp_r29;
Bss12CStruct *temp_r28;
s32 temp_r27;
temp_r29 = &Hu3DData[object->model[0]];
temp_r31 = object->data;
temp_r28 = &lbl_1_bss_12C[temp_r31->unkA];
temp_r27 = 0;
if (temp_r31->unk38 == 3 || temp_r31->unk38 == 5) {
return;
}
sp8.x = temp_r31->unk24.x - temp_r29->pos.x;
sp8.z = temp_r31->unk24.z - temp_r29->pos.z;
if (0.0f == sp8.x && 0.0f == sp8.z) {
if (fn_1_2090(224) == 0 && temp_r31->unk38 == 2 && (temp_r31->unkB0 & PAD_BUTTON_A)) {
temp_r31->unk7A = 1;
}
if (temp_r31->unk78 == 0) {
sp8.x = temp_r28->unkC.x - temp_r31->unk24.x;
sp8.z = temp_r28->unkC.z - temp_r31->unk24.z;
temp_r31->unk8C.x = temp_r31->unk30;
temp_r31->unk8C.y = atan2d(sp8.x, sp8.z);
temp_r31->unk8C.z = 0;
if (temp_r31->unk8C.y < 0.0f) {
temp_r31->unk8C.y += 360.0f;
}
temp_r31->unk78 = 1;
}
temp_r31->unk8C.z += 0.1f;
if (temp_r31->unk8C.z >= 1.0f) {
temp_r31->unk8C.z = 1.0f;
if (temp_r31->unk7A == 0) {
fn_1_B0E8(object, 0, 8);
}
else {
if (fn_1_4CDC(temp_r31->unkA, temp_r31->unk40) && fn_1_2090(28) == 12 && fn_1_2090(224) == 0 && fn_1_4724() < 2) {
fn_1_B0E8(object, 3, 4);
fn_1_B130(object, 0, 8);
temp_r27 = 1;
}
if (temp_r27 == 0) {
fn_1_B0E8(object, 0, 8);
}
}
temp_r31->unk7A = 0;
}
temp_r31->unk30 = fn_1_6504(temp_r31->unk8C.x, temp_r31->unk8C.y, temp_r31->unk8C.z);
}
else {
temp_r31->unk78 = temp_r31->unk7A = 0;
temp_r31->unk30 = atan2d(sp8.x, sp8.z);
if (temp_r31->unk30 < 0.0f) {
temp_r31->unk30 += 360.0f;
}
}
lbl_1_bss_9C[object->work[0]] = temp_r31->unk0 & 0xC0;
}
void fn_1_A450(omObjData *object)
{
float temp_f31;
Bss61CWork *temp_r31;
s32 temp_r29;
ModelData *temp_r28;
temp_r28 = &Hu3DData[object->model[0]];
temp_r31 = object->data;
if (temp_r31->unk38 == 3) {
return;
}
temp_r31->unk7A = 0;
switch (temp_r31->unk80) {
case 0:
temp_r31->unk9C.y += 0.05f;
if (temp_r31->unk9C.y > 1.0f) {
temp_r31->unk9C.y = 1.0f;
temp_r31->unk80++;
}
temp_r29 = fn_1_2090(28);
if (temp_r29 >= 16 && lbl_1_bss_4) {
temp_f31 = CRot.y;
}
else {
temp_f31 = 0.0f;
}
if (temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
else if (temp_f31 >= 360.0f) {
temp_f31 -= 360.0f;
}
temp_r31->unk30 = fn_1_6504(temp_r31->unk9C.x, temp_f31, temp_r31->unk9C.y);
fn_1_B0E8(object, 2, 8);
break;
case 1:
temp_r31->unk3A = -1;
temp_r29 = fn_1_2090(28);
if (temp_r29 >= 16 && lbl_1_bss_4) {
if (temp_r31->unkAC == 0) {
fn_1_B0E8(object, 6, 4);
}
else {
fn_1_B0E8(object, 7, 4);
}
temp_r31->unk80 = 99;
}
else {
fn_1_B0E8(object, 4, 4);
HuAudCharVoicePlay(temp_r31->unk8, 290);
temp_r31->unk80++;
}
break;
case 2:
if (temp_r28->unk_0C == -1) {
if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0]) - 1.0f) {
fn_1_B0E8(object, 1, 8);
temp_r31->unk9C.y = 0;
temp_r31->unk80++;
}
}
break;
case 3:
temp_r31->unk9C.y += 0.05f;
if (temp_r31->unk9C.y > 1.0f) {
if (fn_1_2090(1)) {
fn_1_2050(2, 2);
}
fn_1_B0E8(object, 0, 8);
fn_1_ABC0(object, 0x600, 0);
temp_r31->unk9C.y = 1.0f;
temp_r31->unk80++;
}
if (!temp_r31->unkAC) {
temp_r31->unk30 = fn_1_6504(0, temp_r31->unk9C.x, temp_r31->unk9C.y);
}
break;
}
}
void fn_1_A7D0(s16 arg0)
{
Bss61CWork *temp_r31;
Bss12CStruct *temp_r30;
s16 temp_r29;
s16 temp_r28;
temp_r30 = &lbl_1_bss_12C[arg0];
if (arg0 == -1) {
return;
}
for (temp_r29 = 0; temp_r29 < 1; temp_r29++) {
if (temp_r29 == 0) {
temp_r30 = &lbl_1_bss_12C[arg0];
}
else {
temp_r30 = &lbl_1_bss_12C[arg0 ^ 1];
}
for (temp_r28 = 0; temp_r28 < temp_r30->unk8; temp_r28++) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data;
temp_r31->unk80 = 0;
temp_r31->unk9C.x = temp_r31->unk30;
temp_r31->unk9C.y = 0;
temp_r31->unk0 &= ~0x600;
if (temp_r29 == 0) {
temp_r31->unk0 |= 0x200;
}
else {
temp_r31->unk0 |= 0x400;
}
}
}
}
void fn_1_A904(s16 arg0)
{
Bss61CWork *temp_r31;
Bss12CStruct *temp_r30;
s16 temp_r29;
s16 temp_r28;
temp_r30 = &lbl_1_bss_12C[arg0];
if (arg0 == -1) {
return;
}
for (temp_r29 = 0; temp_r29 < 1; temp_r29++) {
if (temp_r29 == 0) {
temp_r30 = &lbl_1_bss_12C[arg0];
}
else {
temp_r30 = &lbl_1_bss_12C[arg0 ^ 1];
}
for (temp_r28 = 0; temp_r28 < temp_r30->unk8; temp_r28++) {
temp_r31 = lbl_1_bss_61C[temp_r30->unk0[temp_r28]]->data;
temp_r31->unk80 = 1;
temp_r31->unk9C.x = temp_r31->unk30;
temp_r31->unk9C.y = 0;
temp_r31->unk0 &= ~0x600;
if (temp_r29 == 0) {
temp_r31->unk0 |= 0x200;
}
else {
temp_r31->unk0 |= 0x400;
}
temp_r31->unkAC = 1;
}
}
}
void fn_1_AC80(omObjData *object, Vec *arg1);
void fn_1_B16C(omObjData *object);
void fn_1_AA40(omObjData *object)
{
Vec sp8;
Bss61CWork *temp_r30;
temp_r30 = object->data;
fn_1_AC80(object, &sp8);
fn_1_5B70(sp8.x, sp8.y, sp8.z, 20, NULL, -1);
Hu3DModelAttrSet(temp_r30->unk5C, HU3D_ATTR_DISPOFF);
Hu3DModelHookReset(object->model[0]);
temp_r30->unk5C = -1;
if (temp_r30->unk7E == 0) {
fn_1_B0E8(object, 5, 4);
fn_1_B130(object, 0, 8);
}
fn_1_B16C(object);
}
Bss61CWork *fn_1_AAF0(omObjData *object)
{
Bss12CStruct *temp_r31;
s16 temp_r30;
Bss61CWork *temp_r29 = object->data;
s32 sp8 = 0;
temp_r31 = &lbl_1_bss_12C[temp_r29->unkA];
for (temp_r30 = 0; temp_r30 < temp_r31->unk8; temp_r30++) {
if (object->work[temp_r30] != temp_r31->unk0[temp_r30]) {
return lbl_1_bss_61C[temp_r31->unk0[temp_r30]]->data;
}
}
return NULL;
}
u32 fn_1_ABA0(omObjData *object, u32 arg1)
{
Bss61CWork *temp_r31 = object->data;
return temp_r31->unk0 & arg1;
}
void fn_1_ABC0(omObjData *object, u32 arg1, u32 arg2)
{
Bss61CWork *temp_r31 = object->data;
temp_r31->unk0 &= ~arg1;
temp_r31->unk0 |= arg2;
}
void fn_1_ABF0(s16 arg0, u32 arg1, u32 arg2)
{
Bss12CStruct *temp_r31;
Bss61CWork *temp_r30;
s16 temp_r29;
temp_r31 = &lbl_1_bss_12C[arg0];
for (temp_r29 = 0; temp_r29 < temp_r31->unk8; temp_r29++) {
temp_r30 = lbl_1_bss_61C[temp_r31->unk0[temp_r29]]->data;
temp_r30->unk0 &= ~arg1;
temp_r30->unk0 |= arg2;
}
}
void fn_1_AC80(omObjData *object, Vec *arg1)
{
Bss61CWork *temp_r31;
float temp_f31;
temp_r31 = object->data;
temp_f31 = lbl_1_bss_62C[temp_r31->unk40].unk4;
arg1->x = temp_r31->unk24.x - (50.0 * sind(temp_f31));
arg1->y = temp_r31->unk24.y + 100;
arg1->z = temp_r31->unk24.z - (50.0 * cosd(temp_f31));
}
float fn_1_AD88(s8 arg0)
{
float temp_f31;
if (arg0 > 65) {
arg0 = 65;
}
else if (arg0 < -65) {
arg0 = -65;
}
temp_f31 = arg0;
temp_f31 /= 65.0f;
return temp_f31;
}
float fn_1_AE04(s8 arg0, s8 arg1)
{
float temp_f30;
temp_f30 = 0.01539 * VECMagPoint(arg0, arg1, 0);
if (temp_f30 > 1.0f) {
temp_f30 = 1.0f;
}
return temp_f30;
}
void fn_1_B0E8(omObjData *object, s16 arg1, u32 arg2)
{
Bss61CWork *temp_r31 = object->data;
if (temp_r31->unk38 != arg1) {
temp_r31->unk0 &= ~0xF;
temp_r31->unk38 = arg1;
temp_r31->unk0 |= arg2;
}
}
void fn_1_B130(omObjData *object, s16 arg1, u32 arg2)
{
Bss61CWork *temp_r31 = object->data;
temp_r31->unk3A = arg1;
temp_r31->unk3C = arg2;
}
void fn_1_B150(omObjData *object, omObjFunc arg1)
{
Bss61CWork *temp_r31 = object->data;
temp_r31->unk34 = arg1;
}
void fn_1_B16C(omObjData *object)
{
fn_1_B150(object, NULL);
}
void fn_1_B18C(omObjData *object)
{
Bss61CWork *temp_r31;
u32 temp_r28;
ModelData *temp_r27;
omObjFunc temp_r25;
temp_r27 = &Hu3DData[object->model[0]];
temp_r31 = object->data;
if (temp_r31->unk0 & 0x1) {
if (temp_r31->unk3A != -1 && temp_r27->unk_0C == -1) {
if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) {
fn_1_B0E8(object, temp_r31->unk3A, temp_r31->unk3C);
temp_r31->unk3A = -1;
if (temp_r31->unk34) {
temp_r25 = temp_r31->unk34;
temp_r25(object);
}
}
}
else {
return;
}
}
else {
Hu3DModelAttrReset(object->model[0], 0x40000007);
switch (temp_r31->unk0 & 0xC) {
case 0:
temp_r28 = HU3D_MOTATTR_PAUSE;
break;
case 4:
temp_r28 = HU3D_MOTATTR_NONE;
break;
case 8:
temp_r28 = HU3D_MOTATTR_LOOP;
break;
}
if (temp_r31->unk0 & 0x2) {
Hu3DMotionSet(object->model[0], object->motion[temp_r31->unk38]);
Hu3DModelAttrSet(object->model[0], temp_r28);
}
else {
Hu3DMotionShiftSet(object->model[0], object->motion[temp_r31->unk38], 0, 8, temp_r28);
}
temp_r31->unk0 |= 0x1;
}
}
void fn_1_B404(omObjData *object);
void fn_1_B384(Process *objman)
{
s32 *temp_r31;
s32 temp_r30;
omAddObjEx(objman, 100, 0, 0, -1, fn_1_B404);
temp_r31 = &lbl_1_bss_AC[0][0];
for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) {
temp_r31[0] = -1;
temp_r31[1] = -1;
}
}
void fn_1_B404(omObjData *object)
{
s32 *temp_r31;
s32 temp_r30;
temp_r31 = &lbl_1_bss_AC[0][0];
for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) {
if (temp_r31[0] >= 0 && temp_r31[1] > 0) {
if (--temp_r31[1] <= 0) {
HuAudFXPlay(temp_r31[0]);
temp_r31[0] = -1;
temp_r31[1] = -1;
}
}
}
}
s32 fn_1_B494(s32 arg0, s32 arg1)
{
s32 *temp_r31;
s32 temp_r30;
temp_r31 = &lbl_1_bss_AC[0][0];
for (temp_r30 = 0; temp_r30 < 16; temp_r30++, temp_r31 += 2) {
if (temp_r31[0] == -1) {
break;
}
}
if (temp_r30 >= 16) {
return -1;
}
temp_r31[0] = arg0;
temp_r31[1] = arg1;
return temp_r30;
}
s16 fn_1_B4F8(float arg0)
{
return 10.0f * (arg0 / 360.0f);
}
s16 fn_1_B530(s16 arg0)
{
if (arg0 >= 0 && arg0 <= 4) {
return 0;
}
return 1;
}