Merge branch 'Rainchus:main' into main
This commit is contained in:
commit
fd2857c546
80 changed files with 17378 additions and 2890 deletions
|
|
@ -21,8 +21,6 @@
|
|||
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
void HuSprGrpDrawNoSet(s16 group, s32 draw_no);
|
||||
|
||||
static s16 lbl_1_data_0 = 1;
|
||||
|
||||
static omObjData *lbl_1_bss_60;
|
||||
|
|
|
|||
186
src/REL/m407dll/camera.c
Normal file
186
src/REL/m407dll/camera.c
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/hsfdraw.h"
|
||||
|
||||
#define M_PI 3.141592653589793
|
||||
|
||||
void fn_1_1CAC(f32, f32, f32);
|
||||
void fn_1_1D08(f32, f32, f32);
|
||||
void fn_1_1D64(f32);
|
||||
void fn_1_2024(omObjData*);
|
||||
double cos(double x);
|
||||
double sin(double x);
|
||||
|
||||
Process* lbl_1_bss_34;
|
||||
omObjData* lbl_1_bss_30;
|
||||
|
||||
typedef struct unkDominationData2 {
|
||||
s32 unk_00;
|
||||
s32 unk_04;
|
||||
Point3d unk_08;
|
||||
Point3d unk_14;
|
||||
f32 unk_20;
|
||||
Point3d unk_24;
|
||||
Point3d unk_30;
|
||||
f32 unk_3C;
|
||||
s32 unk_40;
|
||||
f32 unk_44;
|
||||
f32 unk_48;
|
||||
} unkDominationData2;
|
||||
|
||||
void fn_1_1B1C(Process* arg0) {
|
||||
unkDominationData2* unkData;
|
||||
|
||||
lbl_1_bss_34 = arg0;
|
||||
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||
Hu3DCameraPerspectiveSet(1, 45.0f, 10.0f, 40000.0f, 1.2f);
|
||||
lbl_1_bss_30 = omAddObjEx(lbl_1_bss_34, 0x80, 0U, 0U, -1, fn_1_2024);
|
||||
lbl_1_bss_30->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x4C, 0x10000000U);
|
||||
unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
|
||||
unkData->unk_04 = 0;
|
||||
fn_1_1CAC(0.0f, 0.0f, 0.0f);
|
||||
fn_1_1D08(0.0f, 0.0f, 0.0f);
|
||||
fn_1_1D64(0.0f);
|
||||
}
|
||||
|
||||
void fn_1_1CA8(void) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_1CAC(f32 arg8, f32 arg9, f32 argA) {
|
||||
Center.x = arg8;
|
||||
Center.y = arg9;
|
||||
Center.z = argA;
|
||||
}
|
||||
|
||||
void fn_1_1CD4(f32* arg0, f32* arg1, f32* arg2) {
|
||||
*arg0 = Center.x;
|
||||
*arg1 = Center.y;
|
||||
*arg2 = Center.z;
|
||||
}
|
||||
|
||||
void fn_1_1D08(f32 arg8, f32 arg9, f32 argA) {
|
||||
CRot.x = arg8;
|
||||
CRot.y = arg9;
|
||||
CRot.z = argA;
|
||||
}
|
||||
|
||||
void fn_1_1D30(f32* arg0, f32* arg1, f32* arg2) {
|
||||
*arg0 = CRot.x;
|
||||
*arg1 = CRot.y;
|
||||
*arg2 = CRot.z;
|
||||
}
|
||||
|
||||
void fn_1_1D64(f32 arg8) {
|
||||
CZoom = arg8;
|
||||
}
|
||||
|
||||
void fn_1_1D74(f32* arg0) {
|
||||
*arg0 = CZoom;
|
||||
}
|
||||
|
||||
s32 fn_1_1D88(void) {
|
||||
unkDominationData2* unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
|
||||
return unkData->unk_04;
|
||||
}
|
||||
|
||||
void fn_1_1DB0(Point3d* arg0, Point3d* arg1, f32* arg2, s32 arg3, s32 arg4) {
|
||||
Point3d* var_r30;
|
||||
Point3d* var_r29;
|
||||
f32 var_f31;
|
||||
unkDominationData2* temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
|
||||
temp_r31->unk_00 = arg4;
|
||||
|
||||
if (arg0) {
|
||||
var_r30 = arg0;
|
||||
} else {
|
||||
var_r30 = &Center;
|
||||
}
|
||||
temp_r31->unk_08 = *var_r30;
|
||||
if (arg1) {
|
||||
var_r29 = arg1;
|
||||
} else {
|
||||
var_r29 = &CRot;
|
||||
}
|
||||
|
||||
temp_r31->unk_14 = *var_r29;
|
||||
|
||||
if (arg2) {
|
||||
var_f31 = *arg2;
|
||||
} else {
|
||||
var_f31 = CZoom;
|
||||
}
|
||||
|
||||
temp_r31->unk_20 = var_f31;
|
||||
temp_r31->unk_24 = Center;
|
||||
temp_r31->unk_30 = CRot;
|
||||
temp_r31->unk_3C = CZoom;
|
||||
temp_r31->unk_40 = arg3;
|
||||
temp_r31->unk_44 = 0.0f;
|
||||
temp_r31->unk_48 = 1.0f / arg3;
|
||||
temp_r31->unk_04 = 1;
|
||||
}
|
||||
|
||||
f32 fn_1_1F1C(f32 arg8, f32 arg9) {
|
||||
if (((arg8 > 0.0f) && (arg9 > 0.0f)) || ((arg8 < 0.0f) && (arg9 < 0.0f))) {
|
||||
return abs(arg8 - arg9);
|
||||
}
|
||||
|
||||
return abs(arg8) + abs(arg9);
|
||||
}
|
||||
|
||||
void fn_1_2024(omObjData* arg0) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
f32 var_f31;
|
||||
f32 cZoomTemp;
|
||||
unkDominationData2* temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData2);
|
||||
if (temp_r31->unk_04 != 0) {
|
||||
switch (temp_r31->unk_00) {
|
||||
case 0:
|
||||
var_f31 = temp_r31->unk_44;
|
||||
break;
|
||||
case 1:
|
||||
var_f31 = temp_r31->unk_44;
|
||||
if (temp_r31->unk_48 > 0.5) {
|
||||
temp_r31->unk_00 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
|
||||
break;
|
||||
case 3:
|
||||
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
|
||||
if (temp_r31->unk_48 > 0.5) {
|
||||
temp_r31->unk_00 = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
|
||||
var_f31 *= var_f31;
|
||||
break;
|
||||
}
|
||||
sp14.x = temp_r31->unk_24.x + (var_f31 * (temp_r31->unk_08.x - temp_r31->unk_24.x));
|
||||
sp14.y = temp_r31->unk_24.y + (var_f31 * (temp_r31->unk_08.y - temp_r31->unk_24.y));
|
||||
sp14.z = temp_r31->unk_24.z + (var_f31 * (temp_r31->unk_08.z - temp_r31->unk_24.z));
|
||||
sp8.x = temp_r31->unk_30.x + (var_f31 * (temp_r31->unk_14.x - temp_r31->unk_30.x));
|
||||
sp8.y = temp_r31->unk_30.y + (var_f31 * (temp_r31->unk_14.y - temp_r31->unk_30.y));
|
||||
sp8.z = temp_r31->unk_30.z + (var_f31 * (temp_r31->unk_14.z - temp_r31->unk_30.z));
|
||||
cZoomTemp = temp_r31->unk_3C + (var_f31 * (temp_r31->unk_20 - temp_r31->unk_3C));
|
||||
temp_r31->unk_44 += temp_r31->unk_48;
|
||||
Center = sp14;
|
||||
CRot = sp8;
|
||||
CZoom = cZoomTemp;
|
||||
if (--temp_r31->unk_40 <= 0) {
|
||||
Center = temp_r31->unk_08;
|
||||
CRot = temp_r31->unk_14;
|
||||
CZoom = temp_r31->unk_20;
|
||||
temp_r31->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
omOutView(arg0);
|
||||
}
|
||||
209
src/REL/m407dll/effect.c
Normal file
209
src/REL/m407dll/effect.c
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
#include "src/REL/m407dll/m407dll.h"
|
||||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/hsfdraw.h"
|
||||
//bss
|
||||
s32 bssPad3;
|
||||
Process* lbl_1_bss_3970;
|
||||
omObjData* lbl_1_bss_37E0[100];
|
||||
|
||||
//data
|
||||
s32 lbl_1_data_288[] = {
|
||||
0x00260015,
|
||||
0x00260016,
|
||||
0x00260017,
|
||||
0x00260018,
|
||||
0x00260019
|
||||
};
|
||||
|
||||
//function signatures
|
||||
void fn_1_4858(omObjData* arg0);
|
||||
void fn_1_485C(omObjData* arg0);
|
||||
void fn_1_46EC(omObjData* arg0);
|
||||
void fn_1_465C(omObjData* arg0, s32 arg1);
|
||||
void fn_1_4808(omObjData* arg0);
|
||||
|
||||
ObjFuncs lbl_1_data_29C[] = {
|
||||
fn_1_4858,
|
||||
fn_1_485C,
|
||||
};
|
||||
|
||||
void fn_1_41CC(Process* arg0) {
|
||||
Process* sp8;
|
||||
u32 i;
|
||||
u32 temp_r30;
|
||||
|
||||
|
||||
lbl_1_bss_3970 = arg0;
|
||||
|
||||
temp_r30 = 0;
|
||||
|
||||
for (i = 0; i < 40; i++) {
|
||||
lbl_1_bss_37E0[i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[i]->work[0] = i;
|
||||
lbl_1_bss_37E0[i]->work[1] = 0;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 30; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3;
|
||||
}
|
||||
|
||||
temp_r30 += i;
|
||||
|
||||
for (i = 0; i < 22; i++) {
|
||||
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
|
||||
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_44F4(void) {
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
|
||||
fn_1_4808(lbl_1_bss_37E0[i]);
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct unkDominationData4 {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
s32 unk_08;
|
||||
s32 unk_0C;
|
||||
f32 unk_10;
|
||||
f32 unk_14;
|
||||
f32 unk_18;
|
||||
s32 unk_1C;
|
||||
} unkDominationData4;
|
||||
|
||||
void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
f32 sp14;
|
||||
f32 sp10;
|
||||
s32 spC;
|
||||
s32 sp8;
|
||||
omObjData* temp_r29;
|
||||
u32 var_r30;
|
||||
unkDominationData4* temp_r31;
|
||||
u32 i;
|
||||
|
||||
if ((arg4 < (Center.z - 2000.0f)) || (arg4 > (2000.0f + Center.z))) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
|
||||
temp_r29 = lbl_1_bss_37E0[i];
|
||||
temp_r31 = temp_r29->data;
|
||||
if ((temp_r31->unk_08 == arg0) && (temp_r31->unk_0C == 0)) {
|
||||
temp_r31->unk_04 = arg1;
|
||||
temp_r31->unk_10 = arg2;
|
||||
temp_r31->unk_14 = arg3;
|
||||
temp_r31->unk_18 = arg4;
|
||||
fn_1_465C(temp_r29, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_465C(omObjData* arg0, s32 arg1) {
|
||||
unkDominationData4* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
temp_r31->unk_0C = arg1;
|
||||
temp_r31->unk_1C = 0;
|
||||
}
|
||||
|
||||
void fn_1_4680(omObjData* arg0) {
|
||||
unkDominationData4* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
lbl_1_data_29C[temp_r31->unk_0C](arg0);
|
||||
omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18);
|
||||
}
|
||||
|
||||
void fn_1_46EC(omObjData* arg0) {
|
||||
unkDominationData4* temp_r29;
|
||||
unkDominationData4* temp_r30;
|
||||
|
||||
arg0->func = fn_1_4680;
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, 0x10000000);
|
||||
temp_r30 = arg0->data;
|
||||
temp_r30->unk_00 = arg0->work[0];
|
||||
temp_r30->unk_08 = arg0->work[1];
|
||||
temp_r30->unk_1C = 0;
|
||||
*arg0->model = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAttrSet(*arg0->model, 0x4000U);
|
||||
Hu3DModelAttrSet(*arg0->model, 0x40000002U);
|
||||
Hu3DModelAttrSet(*arg0->model, 1U);
|
||||
temp_r30->unk_10 = (f32) 0.0f;
|
||||
temp_r30->unk_14 = (f32) 0.0f;
|
||||
temp_r30->unk_18 = (f32) 0.0f;
|
||||
temp_r29 = arg0->data;
|
||||
temp_r29->unk_0C = 0;
|
||||
temp_r29->unk_1C = 0;
|
||||
}
|
||||
|
||||
void fn_1_4808(omObjData* arg0) {
|
||||
unkDominationData4* sp8;
|
||||
sp8 = arg0->data;
|
||||
|
||||
Hu3DModelKill(arg0->model[0]);
|
||||
|
||||
if (arg0->data) {
|
||||
HuMemDirectFree(arg0->data);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4858(omObjData* arg0) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_485C(omObjData* arg0) {
|
||||
unkDominationData4* temp_r29;
|
||||
unkDominationData4* temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
if (temp_r30->unk_04 != 0) {
|
||||
temp_r30->unk_04--;
|
||||
}
|
||||
|
||||
if (temp_r30->unk_1C == 0) {
|
||||
Hu3DMotionTimeSet(*arg0->model, 0.0f);
|
||||
Hu3DModelAttrReset(*arg0->model, 1);
|
||||
Hu3DModelAttrReset(*arg0->model, 0x40000002);
|
||||
Hu3DModelAttrSet(*arg0->model, 0x40000001);
|
||||
temp_r30->unk_1C++;
|
||||
} else if (temp_r30->unk_1C == 1) {
|
||||
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
|
||||
temp_r30->unk_1C++;
|
||||
}
|
||||
|
||||
if (Hu3DMotionEndCheck(*arg0->model) != 0) {
|
||||
Hu3DModelAttrSet(*arg0->model, 1U);
|
||||
temp_r29 = arg0->data;
|
||||
temp_r29->unk_0C = 0;
|
||||
temp_r29->unk_1C = 0;
|
||||
}
|
||||
}
|
||||
|
||||
f32 pad3[1] = {0.0f};
|
||||
5
src/REL/m407dll/m407dll.h
Normal file
5
src/REL/m407dll/m407dll.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#include "game/object.h"
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
typedef void (*ObjFuncs)(omObjData*);
|
||||
575
src/REL/m407dll/main.c
Normal file
575
src/REL/m407dll/main.c
Normal file
|
|
@ -0,0 +1,575 @@
|
|||
#include "game/object.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/hsfman.h"
|
||||
|
||||
s32 bssPad2;
|
||||
Process* lbl_1_bss_3980;
|
||||
omObjData* lbl_1_bss_397C;
|
||||
s16 lbl_1_bss_3978;
|
||||
|
||||
s32 fn_1_4C0(s32 arg0);
|
||||
|
||||
void fn_1_4D0C(void);
|
||||
void fn_1_4D54(void);
|
||||
void fn_1_4E8C(void);
|
||||
void fn_1_4FAC(void);
|
||||
void fn_1_50E8(void);
|
||||
void fn_1_51E4(void);
|
||||
void fn_1_52AC(void);
|
||||
void fn_1_53B8(void);
|
||||
void fn_1_5574(void);
|
||||
void fn_1_5630(void);
|
||||
s16 fn_1_5804(void);
|
||||
void fn_1_5A80(void);
|
||||
void fn_1_5BB0(void);
|
||||
void fn_1_4B7C(void);
|
||||
void fn_1_4C6C(omObjData* obj);
|
||||
void fn_1_4C3C(s32 arg0);
|
||||
void fn_1_568(s16 arg0, s16 arg1, s16 arg2);
|
||||
s32 fn_1_508(u8 arg0);
|
||||
s32 fn_1_53C(u8 arg0);
|
||||
void fn_1_3C4(u8 arg0);
|
||||
|
||||
typedef void (*ObjFuncs)(void);
|
||||
//data
|
||||
ObjFuncs lbl_1_data_2A8[] = {
|
||||
fn_1_4D0C,
|
||||
fn_1_4D54,
|
||||
fn_1_4E8C,
|
||||
fn_1_4FAC,
|
||||
fn_1_50E8,
|
||||
fn_1_51E4,
|
||||
fn_1_52AC,
|
||||
fn_1_53B8,
|
||||
fn_1_5574,
|
||||
fn_1_5630,
|
||||
fn_1_5A80,
|
||||
fn_1_5BB0,
|
||||
fn_1_4B7C
|
||||
};
|
||||
|
||||
typedef struct unkDominationData5 {
|
||||
u32 unk_00;
|
||||
s16 unk_04;
|
||||
s16 unk_06;
|
||||
s16 unk_08;
|
||||
char unk_0A[6];
|
||||
s16 unk_10;
|
||||
char unk_12[10];
|
||||
s16 unk_1C[4];
|
||||
s16 unk_24;
|
||||
char unk_26[2];
|
||||
Vec unk_28;
|
||||
Vec unk_34;
|
||||
f32 unk_40;
|
||||
s32 unk_44;
|
||||
} unkDominationData5;
|
||||
|
||||
void fn_1_4980(Process* arg0) {
|
||||
s32 i;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
lbl_1_bss_3980 = arg0;
|
||||
lbl_1_bss_397C = omAddObjEx(lbl_1_bss_3980, 0x40, 0U, 0U, 0, fn_1_4C6C);
|
||||
lbl_1_bss_397C->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x48, 0x10000000U);
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
Hu3DShadowCreate(45.0f, 10.0f, 10000.0f);
|
||||
Hu3DShadowTPLvlSet(0.6f);
|
||||
fn_1_1B1C(lbl_1_bss_3980);
|
||||
lbl_1_bss_3978 = GWMGRecordGet(1);
|
||||
|
||||
if (lbl_1_bss_3978 == 0) {
|
||||
lbl_1_bss_3978 = 0x96;
|
||||
}
|
||||
|
||||
fn_1_14F0(lbl_1_bss_3980, lbl_1_bss_3978);
|
||||
fn_1_F4(lbl_1_bss_3980);
|
||||
fn_1_2354(lbl_1_bss_3980);
|
||||
fn_1_3AC8(lbl_1_bss_3980);
|
||||
fn_1_41CC(lbl_1_bss_3980);
|
||||
fn_1_5C5C(lbl_1_bss_3980, lbl_1_bss_3978);
|
||||
WipeCreate(1, 0, 0x3C);
|
||||
temp_r31->unk_06 = -1;
|
||||
temp_r31->unk_08 = -1;
|
||||
temp_r31->unk_24 = 0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
temp_r31->unk_1C[i] = -1;
|
||||
}
|
||||
|
||||
fn_1_5F40(0);
|
||||
fn_1_4C3C(0);
|
||||
}
|
||||
|
||||
void fn_1_4B7C(void) {
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
WipeCreate(2, 0, 0x3C);
|
||||
temp_r31->unk_04++;
|
||||
}
|
||||
if (WipeStatGet() == 0) {
|
||||
HuAudFadeOut(100);
|
||||
|
||||
if (temp_r31->unk_06 != -1) {
|
||||
MGSeqKill(temp_r31->unk_06);
|
||||
}
|
||||
|
||||
if (temp_r31->unk_08 != -1) {
|
||||
MGSeqKill(temp_r31->unk_08);
|
||||
}
|
||||
|
||||
fn_1_194();
|
||||
fn_1_1CA8();
|
||||
fn_1_15D8();
|
||||
fn_1_3B68();
|
||||
fn_1_44F4();
|
||||
fn_1_5ECC();
|
||||
omOvlReturnEx(1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4C3C(s32 arg0) {
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
temp_r31->unk_00 = arg0;
|
||||
temp_r31->unk_04 = 0;
|
||||
}
|
||||
|
||||
void fn_1_4C6C(omObjData* obj) {
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
lbl_1_data_2A8[temp_r30->unk_00]();
|
||||
|
||||
if (omSysExitReq != 0) {
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
temp_r31->unk_00 = 0xC;
|
||||
temp_r31->unk_04 = 0;
|
||||
omSysExitReq = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4D0C(void) {
|
||||
unkDominationData5* sp8;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
sp8 = lbl_1_bss_397C->data;
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
temp_r31->unk_00 = 1;
|
||||
temp_r31->unk_04 = 0;
|
||||
}
|
||||
|
||||
f32 lbl_1_data_2DC[4] = {850.0f, 900.0f, 1300.0f, 1500.0f};
|
||||
Vec lbl_1_data_2EC = {540.0f, 0.0f, 10000.0f};
|
||||
Vec lbl_1_data_2F8 = {-50.0f, -360.0f, 0.0f};
|
||||
f32 lbl_1_data_304 = 2670.0f;
|
||||
Vec lbl_1_data_308 = {437.0f, 0.0f, 5000.0f};
|
||||
Vec lbl_1_data_314 = {-50.0f, -360.0f, 0.0f};
|
||||
f32 lbl_1_data_320 = 2290.0f;
|
||||
Vec lbl_1_data_324 = {0.0f, 0.0f, 100.0f};
|
||||
Vec lbl_1_data_330 = {-45.0f, -540.0f, 0.0f};
|
||||
f32 lbl_1_data_33C = 1910.0f;
|
||||
Vec lbl_1_data_340 = {0.0f, 0.0f, 100.0f};
|
||||
Vec lbl_1_data_34C = {-53.0f, -680.0f, 0.0f};
|
||||
f32 lbl_1_data_358 = 1900.0f;
|
||||
|
||||
void fn_1_4D54(void) {
|
||||
s16 temp_r0;
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
switch (temp_r31->unk_04) {
|
||||
case 0:
|
||||
HuAudFXPlay(0x545);
|
||||
fn_1_1DB0(&lbl_1_data_2EC, &lbl_1_data_2F8, &lbl_1_data_304, 0, 0);
|
||||
temp_r31->unk_04 = 1;
|
||||
break;
|
||||
case 1:
|
||||
fn_1_1DB0(&lbl_1_data_308, &lbl_1_data_314, &lbl_1_data_320, 0x64, 1);
|
||||
temp_r31->unk_04 = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (fn_1_1D88() == 0) {
|
||||
fn_1_1DB0(&lbl_1_data_324, &lbl_1_data_330, &lbl_1_data_33C, 0x6E, 2);
|
||||
temp_r31->unk_04 = 3;
|
||||
case 3:
|
||||
if (fn_1_1D88() == 0) {
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 2;
|
||||
temp_r30->unk_04 = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4E8C(void) {
|
||||
s32 i;
|
||||
unkDominationData5* temp_r29;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_06 == -1) {
|
||||
temp_r31->unk_06 = MGSeqCreate(3, 0);
|
||||
temp_r31->unk_44 = HuAudSeqPlay(0x46);
|
||||
fn_1_2564();
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_568(i, 1, 0x3C);
|
||||
}
|
||||
}
|
||||
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
|
||||
MGSeqKill(temp_r31->unk_06);
|
||||
temp_r31->unk_06 = -1;
|
||||
temp_r31->unk_10 = 0x258;
|
||||
temp_r31->unk_08 = MGSeqCreate(1, temp_r31->unk_10 / 60, -1, -1);
|
||||
fn_1_1E4();
|
||||
temp_r29 = lbl_1_bss_397C->data;
|
||||
temp_r29->unk_00 = 3;
|
||||
temp_r29->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4FAC(void) {
|
||||
s16 temp_r0;
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r29;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_10 > 0) {
|
||||
if ((--temp_r31->unk_10 % 60) == 0) {
|
||||
MGSeqParamSet(temp_r31->unk_08, 1, (temp_r31->unk_10 / 60));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
MGSeqParamSet(temp_r31->unk_08, 2, -1);
|
||||
temp_r31->unk_08 = -1;
|
||||
HuAudSeqFadeOut(temp_r31->unk_44, 0x64);
|
||||
fn_1_238();
|
||||
fn_1_5804();
|
||||
|
||||
if (temp_r31->unk_24 > 0) {
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 4;
|
||||
temp_r30->unk_04 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
temp_r29 = lbl_1_bss_397C->data;
|
||||
temp_r29->unk_00 = 6;
|
||||
temp_r29->unk_04 = 0;
|
||||
}
|
||||
|
||||
void fn_1_50E8(void) {
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r30;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
switch (temp_r31->unk_04++) { /* irregular */
|
||||
case 0xA:
|
||||
fn_1_1DB0(&lbl_1_data_340, &lbl_1_data_34C, &lbl_1_data_358, 0xB4, 4);
|
||||
return;
|
||||
case 0x32:
|
||||
fn_1_28C();
|
||||
return;
|
||||
case 0x78:
|
||||
fn_1_2E0();
|
||||
return;
|
||||
case 0x9A:
|
||||
fn_1_334();
|
||||
return;
|
||||
case 0xBE:
|
||||
temp_r31->unk_44 = HuAudSeqPlay(0x3A);
|
||||
fn_1_25C0();
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 5;
|
||||
temp_r30->unk_04 = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_51E4(void) {
|
||||
Vec sp8;
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
if ((temp_r30->unk_04++ >= 0xF) || (fn_1_2880() != 0)) {
|
||||
if (fn_1_2880() == 0) {
|
||||
fn_1_1CD4(&sp8.z, &sp8.y, &sp8.x);
|
||||
sp8.x += 33.5f;
|
||||
fn_1_1CAC(sp8.z, sp8.y, sp8.x);
|
||||
return;
|
||||
}
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
temp_r31->unk_00 = 6;
|
||||
temp_r31->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_52AC(void) {
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r29;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
temp_r31->unk_06 = MGSeqCreate(3, 1);
|
||||
temp_r31->unk_04++;
|
||||
HuAudSeqFadeOut(temp_r31->unk_44, 0x64);
|
||||
}
|
||||
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
|
||||
MGSeqKill(temp_r31->unk_06);
|
||||
temp_r31->unk_06 = -1;
|
||||
if (temp_r31->unk_08 != 0) {
|
||||
MGSeqKill(temp_r31->unk_08);
|
||||
temp_r31->unk_08 = -1;
|
||||
}
|
||||
if (temp_r31->unk_24 > 0) {
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 7;
|
||||
temp_r30->unk_04 = 0;
|
||||
return;
|
||||
}
|
||||
temp_r29 = lbl_1_bss_397C->data;
|
||||
temp_r29->unk_00 = 0xA;
|
||||
temp_r29->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_53B8(void) {
|
||||
s32 i;
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r29;
|
||||
unkDominationData5* temp_r28;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
fn_1_1DB0(&temp_r31->unk_28, &temp_r31->unk_34, &temp_r31->unk_40, 0x3C, 4);
|
||||
temp_r31->unk_04++;
|
||||
for (i = 0; i < 4; i++) {
|
||||
if ((fn_1_508(i) == 0) && (fn_1_28B8(i) >= 0x64)) {
|
||||
GWGameStat.present[0x38] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk_04 == 0x28) {
|
||||
fn_1_404();
|
||||
for (i = 0; i < temp_r31->unk_24; i++) {
|
||||
fn_1_2770(temp_r31->unk_1C[i]);
|
||||
fn_1_568(temp_r31->unk_1C[i], 2, 60);
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk_04 == 0x46) {
|
||||
for (i = 0; i < temp_r31->unk_24; i++) {
|
||||
if (!(fn_1_508(temp_r31->unk_1C[i])) && (lbl_1_bss_3978 < fn_1_28D4())) {
|
||||
temp_r29 = lbl_1_bss_397C->data;
|
||||
temp_r29->unk_00 = 8;
|
||||
temp_r29->unk_04 = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
temp_r28 = lbl_1_bss_397C->data;
|
||||
temp_r28->unk_00 = 9;
|
||||
temp_r28->unk_04 = 0;
|
||||
} else {
|
||||
temp_r31->unk_04++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fn_1_5574(void) {
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r30;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
GWMGRecordSet(1, fn_1_28D4());
|
||||
temp_r31->unk_06 = MGSeqCreate(0xE, fn_1_28D4());
|
||||
fn_1_5F40(1);
|
||||
temp_r31->unk_04++;
|
||||
return;
|
||||
}
|
||||
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 9;
|
||||
temp_r30->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_5630(void) {
|
||||
unkDominationData5* temp_r31;
|
||||
unkDominationData5* temp_r29;
|
||||
s32 temp_r28;
|
||||
s16 temp_r27;
|
||||
s32 temp_r26;
|
||||
s32 coins;
|
||||
s32 coins2;
|
||||
s32 temp_r23;
|
||||
s32 temp_r22;
|
||||
s32 temp_r21;
|
||||
s32 i;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (fn_1_53C(i) == 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (temp_r31->unk_24 == 0) {
|
||||
temp_r31->unk_06 = MGSeqCreate(3, 2);
|
||||
HuAudSStreamPlay(4);
|
||||
} else {
|
||||
temp_r21 = fn_1_4C0(temp_r31->unk_1C[3]);
|
||||
temp_r22 = fn_1_4C0(temp_r31->unk_1C[2]);
|
||||
temp_r23 = fn_1_4C0(temp_r31->unk_1C[1]);
|
||||
temp_r31->unk_06 = MGSeqCreate(5, 3, fn_1_4C0(temp_r31->unk_1C[0]), temp_r23, temp_r22, temp_r21);
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (temp_r31->unk_1C[i] != -1) {
|
||||
|
||||
fn_1_3C4(temp_r31->unk_1C[i]);
|
||||
temp_r26 = temp_r31->unk_1C[i];
|
||||
coins = GWPlayer[temp_r26].coin_win;
|
||||
coins2 = coins;
|
||||
temp_r27 = coins2 + 0xA;
|
||||
temp_r28 = temp_r31->unk_1C[i];
|
||||
if (_CheckFlag(0x1000CU) == 0) {
|
||||
GWPlayer[temp_r28].coin_win = temp_r27;
|
||||
}
|
||||
}
|
||||
}
|
||||
HuAudSStreamPlay(1);
|
||||
}
|
||||
|
||||
}
|
||||
if (temp_r31->unk_04++ >= 0xD2) {
|
||||
MGSeqKill(temp_r31->unk_06);
|
||||
temp_r31->unk_06 = -1;
|
||||
temp_r29 = lbl_1_bss_397C->data;
|
||||
temp_r29->unk_00 = 0xC;
|
||||
temp_r29->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s16 fn_1_5804(void) {
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
s16 temp_r28;
|
||||
s16 temp_r3;
|
||||
s16 var_r29;
|
||||
s32 i;
|
||||
s32 var_r27;
|
||||
s32 var_r26;
|
||||
|
||||
s32 var_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
var_r27 = 0;
|
||||
var_r26 = 0;
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
var_r29 = 0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
temp_r28 = fn_1_28B8(i);
|
||||
if (temp_r28 > var_r29) {
|
||||
var_r29 = temp_r28;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
temp_r28 = fn_1_28B8(i);
|
||||
if (var_r29 == temp_r28) {
|
||||
if (var_r29 > 0) {
|
||||
temp_r31->unk_1C[temp_r31->unk_24++] = i;
|
||||
fn_1_388((u8) i, 1);
|
||||
}
|
||||
if (var_r27 == 0) {
|
||||
var_r27 = 1;
|
||||
var_f31 = 400.0f * i;
|
||||
} else {
|
||||
var_r26 = 1;
|
||||
var_f30 = 400.0f * i;
|
||||
}
|
||||
} else {
|
||||
fn_1_388((u8) i, 2);
|
||||
}
|
||||
}
|
||||
if (var_r26 == 0) {
|
||||
var_f30 = var_f31;
|
||||
}
|
||||
temp_r31->unk_28.x = (600.0f - (0.5f * (var_f30 + var_f31)));
|
||||
temp_r31->unk_28.y = 250.0f;
|
||||
temp_r31->unk_28.z = (200.0f * ((s16) var_r29 + 2));
|
||||
temp_r31->unk_34.x = -42.0f;
|
||||
temp_r31->unk_34.y = -720.0f;
|
||||
temp_r31->unk_34.z = 0.0f;
|
||||
temp_r31->unk_40 = lbl_1_data_2DC[(s32) ((var_f30 - var_f31) / 400.0f)];
|
||||
return var_r29;
|
||||
}
|
||||
|
||||
void fn_1_5A80(void) {
|
||||
s32 sp20;
|
||||
s32 sp1C;
|
||||
Vec sp18 = {0.0f, 0.0f, -300.0f};
|
||||
Vec spC = {-40.0f, -720.0f, 0.0f};
|
||||
f32 sp8;
|
||||
s16 temp_r0;
|
||||
s16 temp_r3;
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
sp8 = 1420.0f;
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
switch (temp_r31->unk_04++) {
|
||||
case 0x0:
|
||||
MGSeqKill(temp_r31->unk_08);
|
||||
temp_r31->unk_08 = -1;
|
||||
fn_1_1DB0(&sp18, &spC, &sp8, 0x78, 4);
|
||||
return;
|
||||
case 0xA:
|
||||
fn_1_5F40(0);
|
||||
fn_1_28C();
|
||||
return;
|
||||
case 0x78:
|
||||
fn_1_404();
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 9;
|
||||
temp_r30->unk_04 = 0;
|
||||
return;
|
||||
/* fallthrough */
|
||||
case 0x3C:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fn_1_5BB0(void) {
|
||||
unkDominationData5* temp_r30;
|
||||
unkDominationData5* temp_r31;
|
||||
|
||||
temp_r31 = lbl_1_bss_397C->data;
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
temp_r31->unk_06 = MGSeqCreate(3, 2);
|
||||
temp_r31->unk_04++;
|
||||
}
|
||||
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
|
||||
MGSeqKill(temp_r31->unk_06);
|
||||
temp_r31->unk_06 = -1;
|
||||
temp_r30 = lbl_1_bss_397C->data;
|
||||
temp_r30->unk_00 = 0xC;
|
||||
temp_r30->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
f32 pad4[1] = {0.0f};
|
||||
const f32 pad5 = 0.0f;
|
||||
124
src/REL/m407dll/map.c
Normal file
124
src/REL/m407dll/map.c
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfman.h"
|
||||
|
||||
void fn_1_162C(omObjData*);
|
||||
void fn_1_1A8C(omObjData*);
|
||||
|
||||
Process* lbl_1_bss_2C;
|
||||
omObjData* lbl_1_bss_28;
|
||||
s16 lbl_1_bss_24;
|
||||
s32 lbl_1_bss_20;
|
||||
|
||||
s32 lbl_1_data_198[] = {
|
||||
0x00260000,
|
||||
0x00260002,
|
||||
0x00260003,
|
||||
0x00260001,
|
||||
0x00260005,
|
||||
0x00260006,
|
||||
0x00260007,
|
||||
0x00260008,
|
||||
0x00260009,
|
||||
0x0026000A,
|
||||
0x0026000B,
|
||||
0x0026000C,
|
||||
0x00260004,
|
||||
};
|
||||
|
||||
Vec lbl_1_data_1CC[] = {
|
||||
{600.0f, 3.0f, -300.0f},
|
||||
{200.0f, 3.0f, -300.0f},
|
||||
{-200.0f, 3.0f, -300.0f},
|
||||
{-600.0f, 3.0f, -300.0f}
|
||||
};
|
||||
|
||||
Point3d lbl_1_data_1FC = {2000.0f, 3000.0f, 2000.0f};
|
||||
Point3d lbl_1_data_208 = {-0.5f, -0.5f, -0.5f};
|
||||
GXColor lbl_1_data_214 = {255, 255, 255, 255};
|
||||
Point3d lbl_1_data_218 = {0.0f, 1.0f, 0.0f};
|
||||
|
||||
f32 pad[1] = {0.0f};
|
||||
|
||||
void fn_1_14F0(Process* arg0, s32 arg1) {
|
||||
LightData* sp10;
|
||||
|
||||
lbl_1_bss_2C = arg0;
|
||||
lbl_1_bss_20 = arg1;
|
||||
lbl_1_bss_28 = omAddObjEx(lbl_1_bss_2C, 0x100, 0xDU, 0U, 1, fn_1_162C);
|
||||
omSetStatBit(lbl_1_bss_28, 0x100U);
|
||||
Hu3DLighInit();
|
||||
lbl_1_bss_24 = Hu3DGLightCreateV(&lbl_1_data_1FC, &lbl_1_data_208, &lbl_1_data_214);
|
||||
Hu3DGLightInfinitytSet(lbl_1_bss_24);
|
||||
sp10 = &Hu3DGlobalLight[lbl_1_bss_24];
|
||||
}
|
||||
|
||||
void fn_1_15D8(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 13; i++) {
|
||||
Hu3DModelKill(lbl_1_bss_28->model[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_162C(omObjData* arg0) {
|
||||
s32 var_r30;
|
||||
s32 var_r30_2;
|
||||
s32 var_r30_3;
|
||||
s32 var_r30_4;
|
||||
s32 i;
|
||||
|
||||
arg0->func = fn_1_1A8C;
|
||||
arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelShadowMapSet(arg0->model[0]);
|
||||
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
|
||||
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
|
||||
Hu3DModelAttrSet(arg0->model[1], 1U);
|
||||
for (i = 0; i < 4; i++) {
|
||||
arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f);
|
||||
Hu3DModelShadowMapSet(arg0->model[i + 2]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (i == 0) {
|
||||
arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], 0x10000000, HEAP_DATA));
|
||||
} else {
|
||||
arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]);
|
||||
}
|
||||
Hu3DModelAmbSet(arg0->model[i + 6], 1.0f, 1.0f, 1.0f);
|
||||
Hu3DModelShadowMapSet(arg0->model[i + 6]);
|
||||
}
|
||||
|
||||
arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], 0x10000000, HEAP_DATA));
|
||||
arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], 0x10000000, HEAP_DATA));
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
Hu3DModelPosSet(arg0->model[i + 6], 0.0f, 0.0f, -2000.0f + (8000.0f * (f32) i));
|
||||
}
|
||||
|
||||
Hu3DModelPosSet(arg0->model[11], 0.0f, 0.0f, -3900.0f);
|
||||
Hu3DModelPosSet(arg0->model[12], 0.0f, 0.0f, 0.0f);
|
||||
Hu3DModelAttrSet(arg0->model[12], 0x40000001);
|
||||
|
||||
if (lbl_1_bss_20 > 0) {
|
||||
Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 200.0f * (f32) lbl_1_bss_20);
|
||||
Hu3DModelAttrReset(arg0->model[1], 1);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1A8C(omObjData* arg0) {
|
||||
Point3d sp8;
|
||||
|
||||
sp8.x = lbl_1_data_1FC.x;
|
||||
sp8.y = lbl_1_data_1FC.y;
|
||||
sp8.z = lbl_1_data_1FC.z + Center.z;
|
||||
Hu3DGLightPosSetV(lbl_1_bss_24, &sp8, &lbl_1_data_208);
|
||||
Hu3DShadowPosSet(&sp8, &lbl_1_data_218, &Center);
|
||||
}
|
||||
497
src/REL/m407dll/player.c
Normal file
497
src/REL/m407dll/player.c
Normal file
|
|
@ -0,0 +1,497 @@
|
|||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "rel_sqrt_consts.h"
|
||||
|
||||
//structs
|
||||
typedef struct unkDominationData {
|
||||
u8 unk_00;
|
||||
u8 unk_01;
|
||||
u8 unk_02;
|
||||
//padding unk_03
|
||||
s32 unk_04;
|
||||
s32 unk_08;
|
||||
u8 unk_0C;
|
||||
//padding unk_0D
|
||||
f32 unk_10;
|
||||
f32 unk_14;
|
||||
f32 unk_18;
|
||||
s32 unk_1C;
|
||||
s32 unk_20;
|
||||
f32 unk_24;
|
||||
f32 unk_28;
|
||||
f32 unk_2C;
|
||||
f32 unk_30;
|
||||
s32 unk_34;
|
||||
s32 unk_38;
|
||||
} unkDominationData;
|
||||
|
||||
s32 pad_20;
|
||||
Process* lbl_1_bss_18;
|
||||
omObjData* lbl_1_bss_8[4];
|
||||
Process* lbl_1_bss_0[2];
|
||||
|
||||
//data
|
||||
typedef void (*ObjFuncs)(omObjData*);
|
||||
|
||||
void fn_1_A88(omObjData* arg0);
|
||||
void fn_1_A8C(omObjData* arg0);
|
||||
void fn_1_C58(omObjData* arg0);
|
||||
void fn_1_CF4(omObjData* arg0);
|
||||
void fn_1_DB4(omObjData* arg0);
|
||||
void fn_1_F8C(omObjData* arg0);
|
||||
void fn_1_1074(omObjData* arg0);
|
||||
void fn_1_11CC(omObjData* arg0);
|
||||
void fn_1_13E4(omObjData* arg0);
|
||||
void fn_1_1460(omObjData* arg0);
|
||||
|
||||
//function signatures
|
||||
void fn_1_628(omObjData*, s32);
|
||||
void fn_1_64C(omObjData*);
|
||||
void fn_1_99C(omObjData*);
|
||||
void fn_1_A1C(omObjData* arg0);
|
||||
void fn_1_26CC(u8);
|
||||
void fn_1_4544(s32, s32, f32, f32, f32);
|
||||
s16 fn_1_28B8(u8); //s32 fn_1_28B8(s32);
|
||||
s16 fn_1_28E4(u8);
|
||||
double cos(double x);
|
||||
double sin(double x);
|
||||
|
||||
inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) {
|
||||
unkDominationData* temp_r29 = arg0->data;
|
||||
temp_r29->unk_1C = val0;
|
||||
temp_r29->unk_20 = val1;
|
||||
}
|
||||
|
||||
void ModuleProlog(void) {
|
||||
lbl_1_bss_0[0] = omInitObjMan(0x2F8, 0x2000);
|
||||
omGameSysInit(lbl_1_bss_0[0]);
|
||||
fn_1_4980(lbl_1_bss_0[0]);
|
||||
}
|
||||
|
||||
void fn_1_F4(Process* arg0) {
|
||||
u32 i;
|
||||
lbl_1_bss_18 = arg0;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_8[i] = omAddObjEx(lbl_1_bss_18, 0x100, 2U, 8U, 0, fn_1_64C);
|
||||
lbl_1_bss_8[i]->work[0] = i;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_194(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_99C(lbl_1_bss_8[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1E4(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_628(lbl_1_bss_8[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_238(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_628(lbl_1_bss_8[i], 2);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_28C(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_628(lbl_1_bss_8[i], 3);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_2E0(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_628(lbl_1_bss_8[i], 4);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_334(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
fn_1_628(lbl_1_bss_8[i], 5);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_388(u8 arg0, s32 arg1) {
|
||||
omObjData* obj = lbl_1_bss_8[arg0];
|
||||
unkDominationData* unkData = obj->data;
|
||||
unkData->unk_38 = arg1;
|
||||
}
|
||||
|
||||
void fn_1_3C4(u8 arg0) {
|
||||
fn_1_628(lbl_1_bss_8[arg0], 8);
|
||||
}
|
||||
|
||||
void fn_1_404(void) {
|
||||
omObjData* temp_r31;
|
||||
unkDominationData* unkData;
|
||||
s32 temp_r0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
temp_r31 = lbl_1_bss_8[i];
|
||||
unkData = temp_r31->data;
|
||||
switch (unkData->unk_38) {
|
||||
case 0:
|
||||
fn_1_628(temp_r31, 9);
|
||||
break;
|
||||
case 1:
|
||||
fn_1_628(temp_r31, 6);
|
||||
break;
|
||||
case 2:
|
||||
fn_1_628(temp_r31, 9);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 fn_1_4C0(u8 arg0) {
|
||||
unkDominationData* unkData;
|
||||
|
||||
if (arg0 >= 4) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
unkData = lbl_1_bss_8[arg0]->data;
|
||||
return unkData->unk_01;
|
||||
}
|
||||
|
||||
s32 fn_1_508(u8 arg0) {
|
||||
unkDominationData* unkData = lbl_1_bss_8[arg0]->data;
|
||||
return unkData->unk_04;
|
||||
}
|
||||
|
||||
s32 fn_1_53C(u8 arg0) {
|
||||
return OM_GET_DATA_PTR(lbl_1_bss_8[arg0], unkDominationData)->unk_1C == 0;
|
||||
}
|
||||
|
||||
void fn_1_568(s16 arg0, s16 arg1, s16 arg2) {
|
||||
unkDominationData* unkData;
|
||||
|
||||
unkData = OM_GET_DATA_PTR(lbl_1_bss_8[arg0], unkDominationData);
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
omVibrate(unkData->unk_00, arg2, 6, 6);
|
||||
break;
|
||||
case 1:
|
||||
omVibrate(unkData->unk_00, arg2, 4, 2);
|
||||
break;
|
||||
case 2:
|
||||
omVibrate(unkData->unk_00, arg2, 0xC, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_628(omObjData* arg0, s32 arg1) {
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData);
|
||||
temp_r31->unk_1C = arg1;
|
||||
temp_r31->unk_20 = 0;
|
||||
}
|
||||
|
||||
typedef struct m407UnkDataStruct0 {
|
||||
u32 unk_00[8];
|
||||
} m407UnkDataStruct0;
|
||||
|
||||
m407UnkDataStruct0 lbl_1_data_0[] = {
|
||||
{0x005F0000, 0x005F0024, 0x005F0029, 0x005F0005, 0x005F0006, 0x005F004A, 0x005F004B, 0x005F0018},
|
||||
{0x001A0000, 0x001A0024, 0x001A0029, 0x001A0005, 0x001A0006, 0x001A004A, 0x001A004B, 0x001A0018},
|
||||
{0x006D0000, 0x006D0024, 0x006D0029, 0x006D0005, 0x006D0006, 0x006D004A, 0x006D004B, 0x006D0018},
|
||||
{0x008A0000, 0x008A0024, 0x008A0029, 0x008A0005, 0x008A0006, 0x008A004A, 0x008A004B, 0x008A0018},
|
||||
{0x00850000, 0x00850024, 0x00850029, 0x00850005, 0x00850006, 0x0085004A, 0x0085004B, 0x00850018},
|
||||
{0x00110000, 0x00110024, 0x00110029, 0x00110005, 0x00110006, 0x0011004A, 0x0011004B, 0x00110018},
|
||||
{0x000D0000, 0x000D0024, 0x000D0029, 0x000D0005, 0x000D0006, 0x000D004A, 0x000D004B, 0x000D0018},
|
||||
{0x00810000, 0x00810024, 0x00810029, 0x00810005, 0x00810006, 0x0081004A, 0x0081004B, 0x00810018}
|
||||
};
|
||||
s32 lbl_1_data_100[] = {0x0026000D, 0x0026000E, 0x0026000F, 0x00260010, 0x00260011, 0x00260012, 0x00260013, 0x00260014};
|
||||
|
||||
char lbl_1_data_120[] = "test11_tex_we-itemhook-r";
|
||||
|
||||
char* lbl_1_data_13C[] = {
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120,
|
||||
lbl_1_data_120
|
||||
};
|
||||
|
||||
ObjFuncs lbl_1_data_15C[] = {
|
||||
fn_1_A88,
|
||||
fn_1_A8C,
|
||||
fn_1_C58,
|
||||
fn_1_CF4,
|
||||
fn_1_DB4,
|
||||
fn_1_F8C,
|
||||
fn_1_1074,
|
||||
fn_1_11CC,
|
||||
fn_1_13E4,
|
||||
fn_1_1460
|
||||
};
|
||||
|
||||
typedef struct m407UnkDataStruct1 {
|
||||
u8 unk_00;
|
||||
u8 unk_01;
|
||||
} m407UnkDataStruct1;
|
||||
|
||||
m407UnkDataStruct1 lbl_1_data_184[] = {{0x3C, 0x0F}, {0x50, 0x0F}, {0x64, 0x14}, {0x78, 0x14}}; //???
|
||||
|
||||
void fn_1_64C(omObjData* arg0) {
|
||||
u32 temp_r29;
|
||||
unkDominationData* temp_r27;
|
||||
unkDominationData* temp_r31;
|
||||
u32 i;
|
||||
|
||||
arg0->func = fn_1_A1C;
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x3C, 0x10000000U);
|
||||
temp_r31 = arg0->data;
|
||||
temp_r29 = arg0->work[0];
|
||||
temp_r31->unk_00 = temp_r29;
|
||||
temp_r31->unk_01 = GWPlayerCfg[temp_r29].character;
|
||||
temp_r31->unk_0C = GWPlayerCfg[temp_r29].pad_idx;
|
||||
temp_r31->unk_04 = GWPlayerCfg[temp_r29].iscom;
|
||||
temp_r31->unk_02 = GWPlayerCfg[temp_r29].diff;
|
||||
temp_r31->unk_08 = 0;
|
||||
temp_r31->unk_34 = 0;
|
||||
temp_r31->unk_38 = 0;
|
||||
temp_r31->unk_28 = 0.0f;
|
||||
//frand implicit declaration? (probably frandf inline?)
|
||||
temp_r31->unk_30 = (600.0f / (lbl_1_data_184[temp_r31->unk_02].unk_00 - ((frand() & 0x7FFFFFFF) % lbl_1_data_184[temp_r31->unk_02].unk_01)));
|
||||
temp_r31->unk_2C = temp_r31->unk_30;
|
||||
arg0->model[0] = CharModelCreate(temp_r31->unk_01, 8);
|
||||
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_100[temp_r31->unk_01], 0x10000000, HEAP_DATA));
|
||||
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
|
||||
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
arg0->motion[i] = CharModelMotionCreate(temp_r31->unk_01, lbl_1_data_0[temp_r31->unk_01].unk_00[i]);
|
||||
}
|
||||
|
||||
Hu3DModelShadowSet(arg0->model[0]);
|
||||
Hu3DModelShadowSet(arg0->model[1]);
|
||||
CharModelMotionDataClose(temp_r31->unk_01);
|
||||
CharModelMotionSet(temp_r31->unk_01, arg0->motion[1]);
|
||||
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
|
||||
Hu3DModelHookSet(arg0->model[0], lbl_1_data_13C[temp_r31->unk_01], arg0->model[1]);
|
||||
temp_r31->unk_10 = (600.0f - (400.0f * temp_r29));
|
||||
temp_r31->unk_14 = 0.0f;
|
||||
temp_r31->unk_18 = -500.0f;
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
|
||||
void fn_1_99C(omObjData* arg0) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
Hu3DMotionKill(arg0->motion[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++){
|
||||
Hu3DModelKill(arg0->model[i]);
|
||||
}
|
||||
|
||||
HuMemDirectFree(arg0->data);
|
||||
}
|
||||
|
||||
void fn_1_A1C(omObjData* arg0) {
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
lbl_1_data_15C[temp_r31->unk_1C](arg0);
|
||||
omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18);
|
||||
}
|
||||
|
||||
void fn_1_A88(omObjData* arg0) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_A8C(omObjData* arg0) {
|
||||
s32 var_r29;
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
var_r29 = 0;
|
||||
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData);
|
||||
temp_r31->unk_28 += 1.0f;
|
||||
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
var_r29 = (HuPadBtnDown[temp_r31->unk_0C] & 0x100) ? 1 : 0;
|
||||
} else if ((u32) temp_r31->unk_28 >= (u32) temp_r31->unk_2C) {
|
||||
var_r29 = 1;
|
||||
temp_r31->unk_2C = (f32) (temp_r31->unk_2C + temp_r31->unk_30);
|
||||
}
|
||||
|
||||
if (var_r29 != 0) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[2], 0.0f, 0.0f, 0);
|
||||
fn_1_4544(4, 0x10, 600.0f - (400.0f * (f32) temp_r31->unk_00), -20.0f, -450.0f);
|
||||
fn_1_26CC(temp_r31->unk_00);
|
||||
temp_r31->unk_34 = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((temp_r31->unk_34 != 0) && (Hu3DMotionEndCheck(arg0->model[0]) != 0)) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 0.0f, 0x40000001);
|
||||
temp_r31->unk_34 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_C58(omObjData* arg0) {
|
||||
unkDominationData* temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
if (Hu3DMotionEndCheck(arg0->model[0]) != 0) {
|
||||
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001);
|
||||
temp_r30->unk_34 = 0;
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_CF4(omObjData* arg0) {
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (temp_r31->unk_20 == 0) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001U);
|
||||
CharModelItemHookCreate(temp_r31->unk_01, lbl_1_data_13C[temp_r31->unk_01]);
|
||||
}
|
||||
if (temp_r31->unk_20++ >= 30) {
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_DB4(omObjData* arg0) {
|
||||
f32 temp_f31;
|
||||
f32 temp_f30;
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
|
||||
if (temp_r31->unk_20 == 0) {
|
||||
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0);
|
||||
temp_r31->unk_24 = 0.0f;
|
||||
temp_r31->unk_20++;
|
||||
}
|
||||
|
||||
temp_f31 = (32.0f * sin(1.0471975511965976)) - (9.8f * temp_r31->unk_24);
|
||||
temp_f30 = 22.0f * cos(1.0471975511965976);
|
||||
temp_r31->unk_18 = temp_r31->unk_18 + temp_f30;
|
||||
temp_r31->unk_14 = temp_r31->unk_14 + temp_f31;
|
||||
temp_r31->unk_24 += 0.3f;
|
||||
|
||||
if (!(temp_f31 < 0.0f) || !(temp_r31->unk_14 <= 30.0f)) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_r31->unk_14 = 30.0f;
|
||||
CharModelMotionShiftSet((s16) temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0U);
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
|
||||
const s32 lbl_1_rodata_70[] = {0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2};
|
||||
|
||||
void fn_1_F8C(omObjData* arg0) {
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
|
||||
if (temp_r31->unk_20 == 0) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[5], 0.0f, 10.0f, 0);
|
||||
HuAudFXPlay(lbl_1_rodata_70[temp_r31->unk_01]);
|
||||
}
|
||||
|
||||
if (temp_r31->unk_20++ >= 0x78) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[0], 0.0f, 10.0f, 0x40000001);
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_1074(omObjData* arg0) {
|
||||
unkDominationData* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
|
||||
if (temp_r31->unk_20 == 0) {
|
||||
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0U);
|
||||
temp_r31->unk_24 = 0.0f;
|
||||
temp_r31->unk_20 = 1;
|
||||
}
|
||||
|
||||
temp_r31->unk_14 = (temp_r31->unk_14 + ((80.0 * sin(1.5707963267948966)) - (9.8 * temp_r31->unk_24)));
|
||||
temp_r31->unk_24 += 0.3f;
|
||||
|
||||
if (!(temp_r31->unk_14 < 1000.0f)) {
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0);
|
||||
SetDominationDataStuff(arg0, 7, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_11CC(omObjData* arg0) {
|
||||
unkDominationData* temp_r31;
|
||||
s16 temp;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (temp_r31->unk_20 == 0) {
|
||||
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0);
|
||||
temp_r31->unk_14 = 1000.0f;
|
||||
temp_r31->unk_18 = 200.0f * (fn_1_28B8(temp_r31->unk_00) + 2);
|
||||
temp_r31->unk_24 = 0.0f;
|
||||
temp_r31->unk_20 = 1;
|
||||
}
|
||||
|
||||
temp_r31->unk_14 = (temp_r31->unk_14 - (2.0f + (9.8f * temp_r31->unk_24)));
|
||||
temp_r31->unk_24 += 0.3f;
|
||||
|
||||
if (!(temp_r31->unk_14 > 300.0f)) {
|
||||
temp_r31->unk_14 = 300.0f;
|
||||
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0);
|
||||
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0);
|
||||
temp = fn_1_28E4(temp_r31->unk_00);
|
||||
//can remove \0 after matching whole rel likely
|
||||
Hu3DModelHookSet(temp, "itemhook_c\0", arg0->model[0]);
|
||||
temp_r31->unk_10 = 0.0f;
|
||||
temp_r31->unk_14 = 0.0f;
|
||||
temp_r31->unk_18 = 0.0f;
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_13E4(omObjData* arg0) {
|
||||
unkDominationData* temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[6], 0.0f, 10.0f, 0);
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
|
||||
void fn_1_1460(omObjData* arg0) {
|
||||
unkDominationData* temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
CharModelVoiceEnableSet(temp_r30->unk_01, arg0->motion[7], 0);
|
||||
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[7], 0.0f, 10.0f, 0);
|
||||
SetDominationDataStuff(arg0, 0, 0);
|
||||
}
|
||||
196
src/REL/m407dll/whomp_score.c
Normal file
196
src/REL/m407dll/whomp_score.c
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
#include "src/REL/m407dll/m407dll.h"
|
||||
#include "game/process.h"
|
||||
#include "game/object.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/esprite.h"
|
||||
|
||||
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2);
|
||||
void fn_1_3D28(omObjData* arg0, s32 arg1);
|
||||
void fn_1_3E34(omObjData*);
|
||||
void fn_1_3F7C(omObjData* arg0);
|
||||
void fn_1_3FF0(omObjData*);
|
||||
void fn_1_3FF4(omObjData* arg0);
|
||||
void fn_1_40F4(omObjData* arg0);
|
||||
|
||||
s32 bssPad;
|
||||
Process* lbl_1_bss_37D8;
|
||||
omObjData* lbl_1_bss_37C8[4];
|
||||
|
||||
ObjFuncs lbl_1_data_278[] = {
|
||||
fn_1_3FF0,
|
||||
fn_1_3FF4,
|
||||
fn_1_40F4,
|
||||
};
|
||||
|
||||
typedef struct unkDominationData3 {
|
||||
u32 unk_00;
|
||||
s32 unk_04;
|
||||
Vec unk_08;
|
||||
s32 unk_14;
|
||||
s16 unk_18[4];
|
||||
f32 unk_20;
|
||||
} unkDominationData3;
|
||||
|
||||
void fn_1_3AC8(Process* arg0) {
|
||||
u32 i;
|
||||
|
||||
lbl_1_bss_37D8 = arg0;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0U, 0U, 4, fn_1_3E34);
|
||||
lbl_1_bss_37C8[i]->work[0] = i;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3B68(void) {
|
||||
s32 temp_r4;
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
fn_1_3F7C(lbl_1_bss_37C8[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) {
|
||||
omObjData* obj;
|
||||
Vec sp14;
|
||||
unkDominationData3* temp_r31;
|
||||
u32 i;
|
||||
s16 temp;;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
|
||||
obj = lbl_1_bss_37C8[i];
|
||||
temp_r31 = OM_GET_DATA_PTR(obj, unkDominationData3);
|
||||
if (temp_r31->unk_04 == 0) {
|
||||
temp = arg0;
|
||||
espBankSet(temp_r31->unk_18[1], (temp / 100));
|
||||
temp = (temp - ((temp / 100) * 100));
|
||||
espBankSet(temp_r31->unk_18[2],(temp / 10));
|
||||
temp = (temp - ((temp / 10) * 10));
|
||||
espBankSet(temp_r31->unk_18[3], temp);
|
||||
sp14.x = arg8;
|
||||
sp14.y = 0.0f;
|
||||
sp14.z = arg9;
|
||||
Hu3D3Dto2D(&sp14, 1, &temp_r31->unk_08);
|
||||
fn_1_3D28(obj, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3D28(omObjData* arg0, s32 arg1) {
|
||||
unkDominationData3* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
temp_r31->unk_04 = arg1;
|
||||
temp_r31->unk_14 = 0;
|
||||
}
|
||||
|
||||
void fn_1_3D4C(omObjData* arg0) {
|
||||
s32 temp_r5;
|
||||
unkDominationData3* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
lbl_1_data_278[temp_r31->unk_04](arg0);
|
||||
|
||||
espPosSet(temp_r31->unk_18[0], temp_r31->unk_08.x, temp_r31->unk_08.y);
|
||||
espPosSet(temp_r31->unk_18[1], temp_r31->unk_08.x - 18.0f, temp_r31->unk_08.y - 8.0f);
|
||||
espPosSet(temp_r31->unk_18[2], temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
|
||||
espPosSet(temp_r31->unk_18[3], 18.0f + temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
|
||||
}
|
||||
|
||||
void fn_1_3E34(omObjData* arg0) {
|
||||
unkDominationData3* temp_r29;
|
||||
unkDominationData3* temp_r31;
|
||||
|
||||
arg0->func = fn_1_3D4C;
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x24, 0x10000000U);
|
||||
temp_r31 = arg0->data;
|
||||
temp_r31->unk_00 = arg0->work[0];
|
||||
temp_r31->unk_14 = 0;
|
||||
temp_r31->unk_04 = 0;
|
||||
temp_r31->unk_18[0] = espEntry(0x260026, 1, 0);
|
||||
temp_r31->unk_18[1] = espEntry(0x260020, 0, 0);
|
||||
temp_r31->unk_18[2] = espEntry(0x260020, 0, 0);
|
||||
temp_r31->unk_18[3] = espEntry(0x260020, 0, 0);
|
||||
espDispOff(temp_r31->unk_18[0]);
|
||||
espDispOff(temp_r31->unk_18[1]);
|
||||
espDispOff(temp_r31->unk_18[2]);
|
||||
espDispOff(temp_r31->unk_18[3]);
|
||||
espScaleSet(temp_r31->unk_18[0], 1.8f, 1.8f);
|
||||
temp_r31->unk_08.x = (f32) 0.0f;
|
||||
temp_r31->unk_08.y = (f32) 0.0f;
|
||||
temp_r29 = arg0->data;
|
||||
temp_r29->unk_04 = 0;
|
||||
temp_r29->unk_14 = 0;
|
||||
}
|
||||
|
||||
void fn_1_3F7C(omObjData* arg0) {
|
||||
s32 i;
|
||||
unkDominationData3* temp_r29;
|
||||
|
||||
temp_r29 = arg0->data;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r29->unk_18); i++) {
|
||||
espKill(temp_r29->unk_18[i]);
|
||||
}
|
||||
|
||||
if (arg0->data) {
|
||||
HuMemDirectFree(arg0->data);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_3FF0(omObjData* arg0) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_3FF4(omObjData* arg0) {
|
||||
unkDominationData3* temp_r30;
|
||||
unkDominationData3* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (temp_r31->unk_14 == 0) {
|
||||
espDispOn(temp_r31->unk_18[0]);
|
||||
espDispOn(temp_r31->unk_18[1]);
|
||||
espDispOn(temp_r31->unk_18[2]);
|
||||
espDispOn(temp_r31->unk_18[3]);
|
||||
temp_r31->unk_20 = 0.0f;
|
||||
}
|
||||
if (temp_r31->unk_20 < 1.0f) {
|
||||
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
|
||||
temp_r31->unk_20 += 0.1f;
|
||||
}
|
||||
|
||||
if (temp_r31->unk_14++ >= 0x3C) {
|
||||
temp_r30 = arg0->data;
|
||||
temp_r30->unk_04 = 2;
|
||||
temp_r30->unk_14 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_40F4(omObjData* arg0) {
|
||||
unkDominationData3* temp_r30;
|
||||
unkDominationData3* temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (temp_r31->unk_20 > 0.0f) {
|
||||
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
|
||||
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
|
||||
temp_r31->unk_20 -= 0.05;
|
||||
return;
|
||||
}
|
||||
espDispOff(temp_r31->unk_18[0]);
|
||||
espDispOff(temp_r31->unk_18[1]);
|
||||
espDispOff(temp_r31->unk_18[2]);
|
||||
espDispOff(temp_r31->unk_18[3]);
|
||||
temp_r30 = arg0->data;
|
||||
temp_r30->unk_04 = 0;
|
||||
temp_r30->unk_14 = 0;
|
||||
}
|
||||
|
||||
f32 pad2[1] = {0.0f};
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
#define HUSPR_USE_OLD_DEFS
|
||||
#include "math.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/object.h"
|
||||
|
|
|
|||
2558
src/REL/w01Dll/main.c
Executable file
2558
src/REL/w01Dll/main.c
Executable file
File diff suppressed because it is too large
Load diff
1072
src/REL/w01Dll/mg_coin.c
Executable file
1072
src/REL/w01Dll/mg_coin.c
Executable file
File diff suppressed because it is too large
Load diff
947
src/REL/w01Dll/mg_item.c
Executable file
947
src/REL/w01Dll/mg_item.c
Executable file
|
|
@ -0,0 +1,947 @@
|
|||
#include "REL/w01Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/ui.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
static void fn_1_E100(void);
|
||||
static void fn_1_E154(void);
|
||||
static void fn_1_E2B8(omObjData *arg0);
|
||||
static void fn_1_E44C(omObjData *arg0);
|
||||
static void fn_1_E914(omObjData *arg0);
|
||||
static void fn_1_ECD4(omObjData *arg0);
|
||||
static void fn_1_EEA0(omObjData *arg0, u16 *arg1);
|
||||
static void fn_1_EED8(omObjData *arg0);
|
||||
static void fn_1_F09C(omObjData *arg0);
|
||||
static void fn_1_F348(omObjData *arg0);
|
||||
static void fn_1_F3F8(omObjData *arg0);
|
||||
static void fn_1_F6E8(omObjData *arg0);
|
||||
static void fn_1_F890(omObjData *arg0);
|
||||
static void fn_1_FA1C(omObjData *arg0);
|
||||
static void fn_1_FABC(omObjData *arg0);
|
||||
static void fn_1_FB58(void);
|
||||
static void fn_1_FC3C(omObjData *arg0);
|
||||
static void fn_1_FCEC(void);
|
||||
static void fn_1_FD3C(omObjData *arg0);
|
||||
static void fn_1_FE44(omObjData *arg0);
|
||||
static void fn_1_FED0(omObjData *arg0);
|
||||
static s16 fn_1_1001C(u32 arg0);
|
||||
static void fn_1_101B8(s16 arg0);
|
||||
static void fn_1_10664(omObjData *arg0);
|
||||
static void fn_1_10820(omObjData *arg0);
|
||||
static void fn_1_10AE8(omObjData *arg0);
|
||||
static float fn_1_10BB0(u32 arg0);
|
||||
static void fn_1_10CF0(u32 arg0);
|
||||
static float fn_1_10EB8(Vec *arg0);
|
||||
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
|
||||
static void *lbl_1_bss_818;
|
||||
static Vec lbl_1_bss_80C;
|
||||
static omObjData *lbl_1_bss_7FC[4];
|
||||
static omObjData *lbl_1_bss_7F8;
|
||||
static omObjData *lbl_1_bss_7F4;
|
||||
static omObjData *lbl_1_bss_7F0;
|
||||
static float lbl_1_bss_7EC;
|
||||
static float lbl_1_bss_7E8;
|
||||
static s32 lbl_1_bss_7E4;
|
||||
static Vec lbl_1_bss_7D8;
|
||||
static s16 lbl_1_bss_7D6;
|
||||
static s16 lbl_1_bss_7D4;
|
||||
static s16 lbl_1_bss_7D2;
|
||||
static s16 lbl_1_bss_7D0;
|
||||
static Vec lbl_1_bss_7C4;
|
||||
static s32 lbl_1_bss_7C0_pad;
|
||||
static s32 lbl_1_bss_7BC;
|
||||
static s32 lbl_1_bss_7B8;
|
||||
static s16 lbl_1_bss_7B4;
|
||||
static s32 lbl_1_bss_7B0_pad;
|
||||
static s32 lbl_1_bss_7AC;
|
||||
static s16 lbl_1_bss_7AA;
|
||||
static s16 lbl_1_bss_7A8;
|
||||
static s32 lbl_1_bss_7A4;
|
||||
static AnimData *lbl_1_bss_7A0;
|
||||
|
||||
static s32 lbl_1_data_F08[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 109),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 110),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 111),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 112),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 113),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 114),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 115),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 116),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 118),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 119),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 120),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 121),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 122),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 123)
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_F40[8] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 23),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23)
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_F60[8] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 64),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 64)
|
||||
};
|
||||
|
||||
void fn_1_D740(s16 *arg0) {
|
||||
s16 sp10[14];
|
||||
s16 sp8[4];
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
s32 var_r28;
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
lbl_1_bss_818 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_W01, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
|
||||
sp8[0] = BoardModelIDGet(lbl_1_bss_6C4[19]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 1);
|
||||
for (i = 1; i < 4; i++) {
|
||||
sp8[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 24));
|
||||
}
|
||||
var_r30 = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i] = omAddObjEx(boardObjMan, 0x165, 2, 0, -1, NULL);
|
||||
if (arg0[i] != -1) {
|
||||
lbl_1_bss_7FC[var_r30++]->work[1] = arg0[i];
|
||||
}
|
||||
}
|
||||
while (var_r30 != 4) {
|
||||
var_r28 = 0;
|
||||
for (i = 0; i < 14; i++) {
|
||||
for (j = 0; j < var_r30; j++) {
|
||||
if (i == lbl_1_bss_7FC[j]->work[1]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j == var_r30) {
|
||||
sp10[var_r28++] = i;
|
||||
}
|
||||
}
|
||||
lbl_1_bss_7FC[var_r30++]->work[1] = sp10[rand8() % var_r28];
|
||||
}
|
||||
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->model[0] = sp8[i];
|
||||
lbl_1_bss_7FC[i]->model[1] = Hu3DModelCreateFile(lbl_1_data_F08[lbl_1_bss_7FC[i]->work[1]]);
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 5) {
|
||||
Hu3DData[lbl_1_bss_7FC[i]->model[1]].unk_F0[1][3] = -50.0f;
|
||||
}
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 11) {
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000001);
|
||||
}
|
||||
if (lbl_1_bss_7FC[i]->work[1] == 4) {
|
||||
Hu3DMotionSpeedSet(lbl_1_bss_7FC[i]->model[1], 0.0f);
|
||||
}
|
||||
Hu3DModelAttrReset(sp8[i], 1);
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 1);
|
||||
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000002);
|
||||
omSetTra(lbl_1_bss_7FC[i], lbl_1_bss_80C.x, lbl_1_bss_80C.y + 66.0f, lbl_1_bss_80C.z);
|
||||
var_f31 = 90.0f - 90.0f * i + 360.0f * (temp_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
omSetRot(lbl_1_bss_7FC[i], 0.0f, var_f31, 0.0f);
|
||||
lbl_1_bss_7FC[i]->work[0] = Hu3DAnimCreate(lbl_1_bss_818, lbl_1_bss_7FC[i]->model[0], "item01");
|
||||
Hu3DAnimAttrSet(lbl_1_bss_7FC[i]->work[0], 1);
|
||||
lbl_1_bss_7FC[i]->work[2] = i;
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
Hu3DAnmNoSet(lbl_1_bss_7FC[i]->work[0], lbl_1_bss_7FC[i]->work[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_DD84(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (i != 0) {
|
||||
Hu3DModelKill(lbl_1_bss_7FC[i]->model[0]);
|
||||
} else {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 0);
|
||||
Hu3DAnimKill(lbl_1_bss_7FC[i]->work[0]);
|
||||
}
|
||||
Hu3DModelKill(lbl_1_bss_7FC[i]->model[1]);
|
||||
omDelObjEx(boardObjMan, lbl_1_bss_7FC[i]);
|
||||
}
|
||||
if (lbl_1_bss_7A0) {
|
||||
HuSprAnimKill(lbl_1_bss_7A0);
|
||||
lbl_1_bss_7A0 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_DE94(void) {
|
||||
s32 i;
|
||||
|
||||
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->func = fn_1_FED0;
|
||||
}
|
||||
lbl_1_bss_7F4 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_E2B8);
|
||||
lbl_1_bss_7F8 = omAddObjEx(boardObjMan, 0x133, 0, 0, -1, fn_1_E44C);
|
||||
lbl_1_bss_7F8->work[3] = rand8() % 200 + 10;
|
||||
lbl_1_bss_7E4 = GWSystem.player_curr;
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &lbl_1_bss_7C4);
|
||||
lbl_1_bss_7EC = 1.0f;
|
||||
lbl_1_bss_7E8 = 1.0f;
|
||||
lbl_1_bss_7AA = 0;
|
||||
lbl_1_bss_7BC = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F40[GWPlayer[lbl_1_bss_7E4].character]);
|
||||
lbl_1_bss_7B8 = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F60[GWPlayer[lbl_1_bss_7E4].character]);
|
||||
lbl_1_bss_7A0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0));
|
||||
HuSprAnimLock(lbl_1_bss_7A0);
|
||||
lbl_1_bss_7B4 = 0;
|
||||
}
|
||||
|
||||
static void fn_1_E100(void) {
|
||||
lbl_1_bss_7AA = 1;
|
||||
BoardMGExit();
|
||||
HuAudFXPlay(0x40F);
|
||||
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
|
||||
}
|
||||
|
||||
static void fn_1_E154(void) {
|
||||
fn_1_DD84();
|
||||
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7BC);
|
||||
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7B8);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
BoardMGDoneFlagSet(0);
|
||||
}
|
||||
|
||||
static void fn_1_E2B8(omObjData *arg0) {
|
||||
if (lbl_1_bss_7AA == 1 && BoardMGDoneFlagGet() == 1) {
|
||||
fn_1_E154();
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static char *lbl_1_data_F9C[] = {
|
||||
"uma1", "uma2", "uma3", "uma4"
|
||||
};
|
||||
|
||||
static void fn_1_E44C(omObjData *arg0) {
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float temp_f27;
|
||||
float var_f29;
|
||||
float temp_f28;
|
||||
float var_f26;
|
||||
float var_f24;
|
||||
s32 i;
|
||||
|
||||
temp_f28 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f29 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
if (var_f29 >= temp_f28) {
|
||||
var_f29 -= temp_f28;
|
||||
}
|
||||
var_f24 = fmod(var_f29, temp_f28 / 4);
|
||||
if (var_f24 >= temp_f28 / 4 - 30.0f && lbl_1_bss_7B4 == 0) {
|
||||
lbl_1_bss_7B4 = 1;
|
||||
lbl_1_bss_7A8 = 90;
|
||||
}
|
||||
if (lbl_1_bss_7B4 != 0) {
|
||||
lbl_1_bss_7EC *= 0.97f;
|
||||
lbl_1_bss_7A8--;
|
||||
}
|
||||
if (lbl_1_bss_7EC != 1.0f && lbl_1_bss_7A8 == 0) {
|
||||
lbl_1_bss_7EC = 0.0f;
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[0], &spC);
|
||||
var_f26 = PSVECSquareDistance(&sp18, &spC);
|
||||
arg0->work[2] = 0;
|
||||
for (i = 1; i < 4; i++) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[i], &spC);
|
||||
temp_f27 = PSVECSquareDistance(&sp18, &spC);
|
||||
if (temp_f27 < var_f26) {
|
||||
var_f26 = temp_f27;
|
||||
arg0->work[2] = i;
|
||||
}
|
||||
}
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0->work[2]], &lbl_1_bss_7D8);
|
||||
PSVECSubtract(&lbl_1_bss_7D8, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
arg0->trans.x = spC.x;
|
||||
arg0->trans.y = spC.y;
|
||||
arg0->trans.z = spC.z;
|
||||
arg0->rot.x = sqrtf((lbl_1_bss_7D8.x - sp18.x) * (lbl_1_bss_7D8.x - sp18.x) + (lbl_1_bss_7D8.z - sp18.z) * (lbl_1_bss_7D8.z - sp18.z));
|
||||
arg0->rot.y = 10.0f;
|
||||
arg0->rot.z = sp18.y;
|
||||
arg0->scale.x = 0.0f;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
|
||||
arg0->func = fn_1_E914;
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
|
||||
}
|
||||
|
||||
static void fn_1_E914(omObjData *arg0) {
|
||||
Vec spC;
|
||||
s32 i;
|
||||
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &spC);
|
||||
spC.x += arg0->trans.x * arg0->rot.x / 32.760002f;
|
||||
spC.z += arg0->trans.z * arg0->rot.x / 32.760002f;
|
||||
spC.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
|
||||
arg0->scale.x += 1.0f;
|
||||
if (sqrtf((lbl_1_bss_7D8.x - spC.x) * (lbl_1_bss_7D8.x - spC.x) + (lbl_1_bss_7D8.z - spC.z) * (lbl_1_bss_7D8.z - spC.z)) < 2.0f) {
|
||||
spC = lbl_1_bss_7D8;
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10BB0(arg0->work[2]), 0.0f);
|
||||
lbl_1_bss_7EC = 0.05f;
|
||||
lbl_1_bss_7E8 = 0.05f;
|
||||
BoardModelAttrReset(lbl_1_bss_6C4[18], 0x40000002);
|
||||
BoardModelAttrSet(lbl_1_bss_6C4[18], 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
|
||||
for (i = 0; i < 4; i++) {
|
||||
lbl_1_bss_7FC[i]->func = fn_1_FED0;
|
||||
}
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7B8, 0.0f, 5.0f, 0x40000001);
|
||||
lbl_1_bss_7D6 = MGSeqCreate(3, 0);
|
||||
BoardMusStart(1, 0xE, 0x7F, 0);
|
||||
arg0->func = fn_1_ECD4;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &spC);
|
||||
}
|
||||
|
||||
static void fn_1_ECD4(omObjData *arg0) {
|
||||
lbl_1_bss_7EC *= 1.05f;
|
||||
lbl_1_bss_7E8 *= 1.05f;
|
||||
if (lbl_1_bss_7EC > 2.0f) {
|
||||
lbl_1_bss_7EC = 2.0f;
|
||||
}
|
||||
if (lbl_1_bss_7E8 > 4.0f) {
|
||||
lbl_1_bss_7E8 = 4.0f;
|
||||
}
|
||||
if (MGSeqStatGet(lbl_1_bss_7D6) == 0) {
|
||||
lbl_1_bss_7EC = 2.0f;
|
||||
lbl_1_bss_7E8 = 4.0f;
|
||||
arg0->func = fn_1_EED8;
|
||||
lbl_1_bss_7D2 = 5;
|
||||
lbl_1_bss_7D0 = 60;
|
||||
lbl_1_bss_7D4 = MGSeqCreate(1, lbl_1_bss_7D2, 0x120, 0x40);
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
|
||||
fn_1_10CF0(arg0->work[2]);
|
||||
}
|
||||
|
||||
static void fn_1_EEA0(omObjData *arg0, u16 *arg1) {
|
||||
*arg1 = 0;
|
||||
if (arg0->work[3] != 0) {
|
||||
arg0->work[3]--;
|
||||
} else {
|
||||
*arg1 |= 0x100;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_EED8(omObjData *arg0) {
|
||||
s16 temp_r29;
|
||||
u16 var_r30;
|
||||
|
||||
fn_1_10CF0(arg0->work[2]);
|
||||
temp_r29 = GWPlayer[lbl_1_bss_7E4].port;
|
||||
if ((lbl_1_bss_7D0 -= 1) == 0) {
|
||||
if ((lbl_1_bss_7D2 -= 1) >= 0) {
|
||||
MGSeqParamSet(lbl_1_bss_7D4, 1, lbl_1_bss_7D2);
|
||||
}
|
||||
lbl_1_bss_7D0 = 60;
|
||||
}
|
||||
if (GWPlayerCfg[lbl_1_bss_7E4].iscom == 1) {
|
||||
fn_1_EEA0(arg0, &var_r30);
|
||||
} else {
|
||||
var_r30 = HuPadBtnDown[temp_r29];
|
||||
}
|
||||
if (lbl_1_bss_7D2 < 0 || (var_r30 & 0x100)) {
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 0.0f);
|
||||
MGSeqParamSet(lbl_1_bss_7D4, 2, -1);
|
||||
arg0->scale.y = 0.0f;
|
||||
arg0->func = fn_1_F09C;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F09C(omObjData *arg0) {
|
||||
float temp_f31;
|
||||
float var_f30;
|
||||
|
||||
temp_f31 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
arg0->scale.y += lbl_1_bss_7E8;
|
||||
if (arg0->scale.y >= temp_f31 - 150.0f) {
|
||||
lbl_1_bss_7E8 *= 0.9745f;
|
||||
if (lbl_1_bss_7E8 < 0.08f) {
|
||||
lbl_1_bss_7E8 = 0.08f;
|
||||
}
|
||||
}
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
|
||||
if (arg0->scale.y >= temp_f31) {
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
|
||||
var_f30 = arg0->scale.y - temp_f31 + BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
if (var_f30 > temp_f31) {
|
||||
var_f30 -= temp_f31;
|
||||
}
|
||||
BoardModelMotionTimeSet(lbl_1_bss_6C4[18], var_f30);
|
||||
arg0->work[0] = fn_1_1001C(arg0->work[2]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
|
||||
BoardModelPosSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->trans.x, lbl_1_bss_7FC[arg0->work[0]]->trans.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->trans.z);
|
||||
BoardModelRotSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->rot.x, lbl_1_bss_7FC[arg0->work[0]]->rot.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->rot.z);
|
||||
arg0->work[1] = 60;
|
||||
BoardAudSeqFadeOut(1, 100);
|
||||
arg0->func = fn_1_F348;
|
||||
HuAudFXPlay(0x40A);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F348(omObjData *arg0) {
|
||||
if ((arg0->work[1] / 4) & 1) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
} else {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
|
||||
}
|
||||
if ((arg0->work[1] -= 1) == 0) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
|
||||
fn_1_101B8(arg0->work[0]);
|
||||
HuAudFXPlay(0x310);
|
||||
arg0->func = fn_1_F3F8;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_F3F8(omObjData *arg0) {
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
|
||||
if (lbl_1_bss_7F0->work[0] != 1) {
|
||||
return;
|
||||
}
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
|
||||
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
arg0->trans.x = spC.x;
|
||||
arg0->trans.y = spC.y;
|
||||
arg0->trans.z = spC.z;
|
||||
arg0->rot.x = sqrtf((lbl_1_bss_7C4.x - sp18.x) * (lbl_1_bss_7C4.x - sp18.x) + (lbl_1_bss_7C4.z - sp18.z) * (lbl_1_bss_7C4.z - sp18.z));
|
||||
arg0->scale.y = 20.0f + 40.0f * (arg0->rot.x / 445.0f);
|
||||
arg0->rot.y = 0.016666668f * (arg0->scale.y / 2) * (arg0->scale.y / 2);
|
||||
arg0->rot.z = sp18.y;
|
||||
arg0->scale.x = 0.0f;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
|
||||
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10EB8(&spC), 0.0f);
|
||||
arg0->func = fn_1_F6E8;
|
||||
}
|
||||
|
||||
static void fn_1_F6E8(omObjData *arg0) {
|
||||
Vec sp8;
|
||||
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp8);
|
||||
sp8.x += arg0->trans.x * arg0->rot.x / arg0->scale.y;
|
||||
sp8.z += arg0->trans.z * arg0->rot.x / arg0->scale.y;
|
||||
sp8.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
|
||||
arg0->scale.x += 1.0f;
|
||||
if (sp8.y < lbl_1_bss_80C.y || arg0->scale.x >= arg0->scale.y) {
|
||||
sp8.y = lbl_1_bss_80C.y;
|
||||
BoardCameraMotionStart(BoardPlayerModelGet(lbl_1_bss_7E4), NULL, 700.0f, -1.0f);
|
||||
BoardPlayerMotionStart(lbl_1_bss_7E4, 2, 0x40000001);
|
||||
arg0->func = fn_1_F890;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &sp8);
|
||||
}
|
||||
|
||||
static void fn_1_F890(omObjData *arg0) {
|
||||
Vec sp8;
|
||||
|
||||
BoardPlayerRotGet(lbl_1_bss_7E4, &sp8);
|
||||
if (sp8.y == 0.0f) {
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0x40000001);
|
||||
lbl_1_bss_7F0->work[0] = 0;
|
||||
lbl_1_bss_7F0->func = fn_1_10820;
|
||||
arg0->func = fn_1_FA1C;
|
||||
} else if (sp8.y > 180.0f) {
|
||||
if (360.0f - sp8.y < 3.0f) {
|
||||
sp8.y = 0.0f;
|
||||
} else {
|
||||
sp8.y += 3.0f;
|
||||
}
|
||||
} else {
|
||||
if (sp8.y < 3.0f) {
|
||||
sp8.y = 0.0f;
|
||||
} else {
|
||||
sp8.y -= 3.0f;
|
||||
}
|
||||
}
|
||||
BoardPlayerRotSetV(lbl_1_bss_7E4, &sp8);
|
||||
}
|
||||
|
||||
static void fn_1_FA1C(omObjData *arg0) {
|
||||
if (lbl_1_bss_7F0->work[0] == 1) {
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7BC, 0.0f, 10.0f, 0);
|
||||
arg0->work[0] = 30;
|
||||
lbl_1_bss_7A4 = HuAudSStreamPlay(2);
|
||||
arg0->func = fn_1_FABC;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FABC(omObjData *arg0) {
|
||||
Process *var_r30;
|
||||
|
||||
if (arg0->work[0] == 0) {
|
||||
if (HuAudSStreamStatGet(lbl_1_bss_7A4) == 0) {
|
||||
var_r30 = HuPrcCreate(fn_1_FB58, 0x2004, 0x1000, 0);
|
||||
var_r30->user_data = arg0;
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
} else {
|
||||
arg0->work[0]--;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FB58(void) {
|
||||
omObjData *temp_r31;
|
||||
|
||||
BoardWinCreate(2, MAKE_MESSID(10, 6), 0);
|
||||
BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_7F0->work[1]), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
temp_r31 = HuPrcCurrentGet()->user_data;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0);
|
||||
lbl_1_bss_7F0->work[0] = 0;
|
||||
HuAudFXPlay(0x30D);
|
||||
HuAudFXFadeOut(lbl_1_bss_7AC, 1000);
|
||||
lbl_1_bss_7F0->func = fn_1_10AE8;
|
||||
temp_r31->func = fn_1_FC3C;
|
||||
HuPrcKill(NULL);
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FC3C(omObjData *arg0) {
|
||||
Process *var_r31;
|
||||
|
||||
if (lbl_1_bss_7F0->work[0] == 1) {
|
||||
BoardPlayerItemAdd(lbl_1_bss_7E4, lbl_1_bss_7F0->work[1]);
|
||||
omVibrate(lbl_1_bss_7E4, 12, 6, 6);
|
||||
var_r31 = HuPrcCreate(fn_1_FCEC, 0x2004, 0x1000, 0);
|
||||
var_r31->user_data = arg0;
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FCEC(void) {
|
||||
omObjData *var_r31;
|
||||
|
||||
BoardWinCreate(2, MAKE_MESSID(10, 7), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
var_r31 = HuPrcCurrentGet()->user_data;
|
||||
var_r31->func = fn_1_FD3C;
|
||||
HuPrcKill(NULL);
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FD3C(omObjData *arg0) {
|
||||
BoardStatusShowSetAll(1);
|
||||
BoardCameraTargetModelSet(lbl_1_bss_6C4[21]);
|
||||
BoardCameraOffsetSet(0.0f, 0.0f, 0.0f);
|
||||
BoardCameraXRotZoomSet(1200.0f, -45.0f);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 1.0f);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[0]);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[1]);
|
||||
Hu3DModelKill(lbl_1_bss_7F0->model[2]);
|
||||
omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_7F0);
|
||||
arg0->func = fn_1_FE44;
|
||||
}
|
||||
|
||||
static void fn_1_FE44(omObjData *arg0) {
|
||||
if (BoardStatusStopCheck(lbl_1_bss_7E4) && BoardCameraMotionIsDone()) {
|
||||
lbl_1_bss_7AA = 1;
|
||||
BoardMGExit();
|
||||
HuAudFXPlay(0x40F);
|
||||
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_FED0(omObjData *arg0) {
|
||||
float temp_f30;
|
||||
float var_f31;
|
||||
float var_f29;
|
||||
|
||||
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f31 = 90.0f - 90.0f * arg0->work[2] + 360.0f * (temp_f30 / var_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
omSetRot(arg0, 0.0f, var_f31, 0.0f);
|
||||
}
|
||||
|
||||
static s16 fn_1_1001C(u32 arg0) {
|
||||
float var_f29;
|
||||
float var_f28;
|
||||
float temp_f27;
|
||||
float temp_f26;
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
|
||||
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
temp_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (var_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += var_f29;
|
||||
}
|
||||
var_f28 = 360.0f * (var_f30 / var_f29);
|
||||
var_f31 = var_f28 - temp_f27;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
var_f31 /= 90.0f;
|
||||
return var_f31;
|
||||
}
|
||||
|
||||
static void fn_1_101B8(s16 arg0) {
|
||||
omObjData *var_r31;
|
||||
float *var_r30;
|
||||
float var_f27;
|
||||
float temp_f26;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f28;
|
||||
float var_f31;
|
||||
|
||||
var_r31 = lbl_1_bss_7F0 = omAddObjEx(boardObjMan, 0x165, 3, 0, -1, fn_1_10664);
|
||||
var_r31->model[0] = lbl_1_bss_7FC[arg0]->model[1];
|
||||
Hu3DModelAttrReset(var_r31->model[0], 1);
|
||||
lbl_1_bss_7F0->work[1] = lbl_1_bss_7FC[arg0]->work[1];
|
||||
lbl_1_bss_7F0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 3 * sizeof(float), MEMORY_DEFAULT_NUM);
|
||||
var_r30 = lbl_1_bss_7F0->data;
|
||||
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
omSetSca(var_r31, 0.0f, 0.0f, 0.0f);
|
||||
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
|
||||
var_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
|
||||
var_f31 = 45.0f + var_f27 + 90.0f * arg0;
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
temp_f30 = lbl_1_bss_80C.x - 100.0 * cos(var_f31 * M_PI / 180.0);
|
||||
temp_f28 = lbl_1_bss_80C.z - 100.0 * sin(var_f31 * M_PI / 180.0);
|
||||
temp_f29 = lbl_1_bss_80C.y + 66.0f + 1.0f;
|
||||
omSetTra(var_r31, temp_f30, temp_f29, temp_f28);
|
||||
var_r31->work[0] = 0;
|
||||
var_r30[0] = 0.1f;
|
||||
var_r30[2] = 20.0f;
|
||||
var_r30[1] = 0.0f;
|
||||
var_r31->model[1] = Hu3DParticleCreate(lbl_1_bss_7A0, 200);
|
||||
var_r31->model[2] = Hu3DParticleCreate(lbl_1_bss_7A0, 100);
|
||||
Hu3DParticleHookSet(var_r31->model[1], fn_1_11064);
|
||||
Hu3DParticleHookSet(var_r31->model[2], fn_1_11484);
|
||||
Hu3DParticleColSet(var_r31->model[1], 0xFF, 0xFF, 0);
|
||||
Hu3DParticleColSet(var_r31->model[2], 0xFF, 0xFF, 0);
|
||||
Hu3DModelPosSet(var_r31->model[1], 0.0f, 0.0f, 0.0f);
|
||||
Hu3DModelPosSet(var_r31->model[2], temp_f30, temp_f29, temp_f28);
|
||||
Hu3DParticleBlendModeSet(var_r31->model[1], 1);
|
||||
Hu3DParticleBlendModeSet(var_r31->model[2], 1);
|
||||
Hu3DModelLayerSet(var_r31->model[1], 3);
|
||||
Hu3DModelLayerSet(var_r31->model[2], 3);
|
||||
lbl_1_bss_7AC = HuAudFXPlay(0x35F);
|
||||
}
|
||||
|
||||
static void fn_1_10664(omObjData *arg0) {
|
||||
float *temp_r31;
|
||||
float var_f31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
var_f31 = temp_r31[0];
|
||||
if (arg0->work[0] == 0) {
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
} else {
|
||||
temp_r31[0] += 0.025f;
|
||||
}
|
||||
arg0->trans.y += temp_r31[2];
|
||||
temp_r31[2] -= 1.0f;
|
||||
if (temp_r31[2] < 0.0f && arg0->trans.y < lbl_1_bss_80C.y + 66.0f + 1.0f + 90.0f) {
|
||||
arg0->work[0] = 1;
|
||||
}
|
||||
omSetSca(arg0, var_f31, var_f31, var_f31);
|
||||
} else {
|
||||
arg0->trans.y += sin(temp_r31[1] * M_PI / 180.0);
|
||||
temp_r31[1] += 4.0f;
|
||||
if (temp_r31[1] >= 360.0f) {
|
||||
temp_r31[1] -= 360.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_10820(omObjData *arg0) {
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float var_f28;
|
||||
float *temp_r30;
|
||||
|
||||
temp_r30 = arg0->data;
|
||||
if (arg0->work[0] == 0) {
|
||||
BoardPlayerPosGet(lbl_1_bss_7E4, &sp24);
|
||||
sp18.x = arg0->trans.x;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = arg0->trans.z;
|
||||
sp24.y = 0.0f;
|
||||
PSVECSubtract(&sp24, &sp18, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
var_f28 = sqrtf((sp24.x - sp18.x) * (sp24.x - sp18.x) + (sp24.z - sp18.z) * (sp24.z - sp18.z));
|
||||
if (var_f28 < 8.0f) {
|
||||
arg0->trans.x = sp24.x;
|
||||
arg0->trans.z = sp24.z;
|
||||
arg0->work[0] = 1;
|
||||
} else {
|
||||
arg0->trans.x += 8.0f * spC.x;
|
||||
arg0->trans.z += 8.0f * spC.z;
|
||||
}
|
||||
}
|
||||
arg0->trans.y += sin(temp_r30[1] * M_PI / 180.0);
|
||||
temp_r30[1] += 4.0f;
|
||||
if (temp_r30[1] >= 360.0f) {
|
||||
temp_r30[1] -= 360.0f;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_10AE8(omObjData *arg0) {
|
||||
float *temp_r31;
|
||||
|
||||
temp_r31 = arg0->data;
|
||||
if (arg0->work[0] == 0) {
|
||||
temp_r31[0] -= 0.016666668f;
|
||||
if (temp_r31[0] <= 0.0f) {
|
||||
temp_r31[0] = 0.0f;
|
||||
arg0->work[0] = 1;
|
||||
HuAudFXStop(lbl_1_bss_7AC);
|
||||
}
|
||||
arg0->trans.y -= 2.1666667f;
|
||||
}
|
||||
omSetSca(arg0, temp_r31[0], temp_r31[0], temp_r31[0]);
|
||||
}
|
||||
|
||||
static float fn_1_10BB0(u32 arg0) {
|
||||
float var_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += temp_f29;
|
||||
}
|
||||
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
return var_f31;
|
||||
}
|
||||
|
||||
static void fn_1_10CF0(u32 arg0) {
|
||||
float var_f30;
|
||||
float temp_f29;
|
||||
float var_f31;
|
||||
float var_f28;
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0], &lbl_1_bss_7D8);
|
||||
BoardPlayerPosSetV(lbl_1_bss_7E4, &lbl_1_bss_7D8);
|
||||
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
|
||||
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
|
||||
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += temp_f29;
|
||||
}
|
||||
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
var_f28 = var_f31;
|
||||
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, var_f28, 0.0f);
|
||||
}
|
||||
|
||||
static float fn_1_10EB8(Vec *arg0) {
|
||||
float var_f31;
|
||||
|
||||
if (arg0->x || arg0->z) {
|
||||
if (arg0->x == 0.0f) {
|
||||
if (arg0->z > 0.0f) {
|
||||
return 0.0f;
|
||||
} else {
|
||||
return 180.0f;
|
||||
}
|
||||
}
|
||||
if (arg0->z == 0.0f) {
|
||||
if (arg0->x > 0.0f) {
|
||||
return 90.0f;
|
||||
} else {
|
||||
return 270.0f;
|
||||
}
|
||||
}
|
||||
var_f31 = 180.0 * (atan2(arg0->z, arg0->x) / M_PI);
|
||||
if (arg0->z < 0.0f) {
|
||||
var_f31 = 90.0f - var_f31;
|
||||
} else {
|
||||
var_f31 = 90.0f - var_f31;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
}
|
||||
return var_f31;
|
||||
}
|
||||
return -1.0f;
|
||||
}
|
||||
|
||||
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
HsfanimStruct01 *var_r31;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
float temp_f31;
|
||||
s32 var_r28;
|
||||
s32 i;
|
||||
|
||||
if (particle->unk_34 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
temp_f31 = lbl_1_bss_7F0->scale.x;
|
||||
for (i = 0; i < 30; i++) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
||||
if (var_r31->unk2C == 0.0f) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (var_r28 != particle->unk_30) {
|
||||
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
|
||||
temp_f29 = 0.003921569f * (frand() & 0xFF) * 70.0f * temp_f31;
|
||||
var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sin(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cos(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk34.y = lbl_1_bss_7F0->trans.y + temp_f31 * (-30.0f + 0.003921569f * (frand() & 0xFF) * 60.0f);
|
||||
var_r31->unk08.x = 0.5f + 0.003921569f * (frand() & 0xFF) * 3.0f;
|
||||
var_r31->unk08.y = 0.3f + 0.003921569f * (frand() & 0xFF) * 2.0f;
|
||||
var_r31->unk40.a = 0xB4;
|
||||
var_r31->unk2C = 15.0f * temp_f31;
|
||||
}
|
||||
}
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
var_r31->unk34.y -= var_r31->unk08.x;
|
||||
var_r31->unk2C -= var_r31->unk08.y;
|
||||
if (var_r31->unk2C <= 0.0f) {
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
HsfanimStruct01 *var_r31;
|
||||
float temp_f29;
|
||||
float temp_f30;
|
||||
float temp_f31;
|
||||
s32 var_r28;
|
||||
s32 var_r29;
|
||||
|
||||
if (particle->unk_34 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
if (particle->unk_00 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
||||
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
|
||||
temp_f31 = 0.003921569f * (frand() & 0xFF) * 50.0f;
|
||||
var_r31->unk08.x = temp_f31 * cos(temp_f30 * M_PI / 180.0);
|
||||
var_r31->unk08.y = 2.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
|
||||
var_r31->unk08.z = temp_f31 * sin(temp_f30 * M_PI / 180.0);
|
||||
temp_f29 = 60.0f + 20.0f * (frand() & 0xFF) * 0.003921569f;
|
||||
temp_f31 = 4.0f + 5.0f * (frand() & 0xFF) * 0.003921569f;
|
||||
var_r31->unk14.x = temp_f31 * sin(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk14.y = temp_f31 * sin(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk14.z = temp_f31 * cos(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
|
||||
var_r31->unk20 = 1.0f;
|
||||
var_r31->unk40.a = 0xB4;
|
||||
var_r31->unk2C = 9.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
|
||||
}
|
||||
particle->unk_00 = 1;
|
||||
}
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
var_r31->unk34.x = var_r31->unk08.x + var_r31->unk14.x * var_r31->unk20;
|
||||
var_r31->unk34.z = var_r31->unk08.z + var_r31->unk14.z * var_r31->unk20;
|
||||
var_r31->unk34.y = var_r31->unk08.y + var_r31->unk14.y * var_r31->unk20 - 0.2f * var_r31->unk20 * var_r31->unk20;
|
||||
var_r31->unk2C -= 0.25f;
|
||||
var_r31->unk20 += 1.0f;
|
||||
if (var_r31->unk2C <= 0.0f) {
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
24
src/REL/w02Dll/gamble.c
Normal file
24
src/REL/w02Dll/gamble.c
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#include "REL/w02Dll.h"
|
||||
|
||||
Process* lbl_1_bss_50;
|
||||
s32 lbl_1_bss_54;
|
||||
|
||||
void fn_1_2D04();
|
||||
|
||||
|
||||
void fn_1_3938(void) {
|
||||
lbl_1_bss_50 = NULL;
|
||||
}
|
||||
|
||||
|
||||
void fn_1_394C(s32 arg0) {
|
||||
s32 currPlayer;
|
||||
currPlayer = GWSystem.player_curr;
|
||||
|
||||
lbl_1_bss_54 = arg0;
|
||||
lbl_1_bss_50 = HuPrcChildCreate(fn_1_2D04, 0x2003U, 0x2000U, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_50, fn_1_3938);
|
||||
while (lbl_1_bss_50) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
457
src/REL/w02Dll/main.c
Normal file
457
src/REL/w02Dll/main.c
Normal file
|
|
@ -0,0 +1,457 @@
|
|||
#include "REL/w02Dll.h"
|
||||
|
||||
// Temporary defines
|
||||
#define BOARD_ITEM_MINI 0x0
|
||||
#define BOARD_ITEM_MEGA 0x1
|
||||
#define BOARD_ITEM_SUPERMINI 0x2
|
||||
#define BOARD_ITEM_SUPERMEGA 0x3
|
||||
#define BOARD_ITEM_HAMMER 0x4
|
||||
#define BOARD_ITEM_PIPE 0x5
|
||||
#define BOARD_ITEM_CARD 0x6
|
||||
#define BOARD_ITEM_SPARKY 0x7
|
||||
#define BOARD_ITEM_GADDLIGHT 0x8
|
||||
#define BOARD_ITEM_CHOMPCALL 0x9
|
||||
#define BOARD_ITEM_SUIT 0xA
|
||||
#define BOARD_ITEM_BOO 0xB
|
||||
#define BOARD_ITEM_LAMP 0xC
|
||||
#define BOARD_ITEM_BAG 0xD
|
||||
#define BOARD_ITEM_MAX 0xE
|
||||
#define BOARD_ITEM_NONE -1
|
||||
|
||||
/* BSS */
|
||||
s16 lbl_1_bss_30[0x10]; // Model List
|
||||
s16 lbl_1_bss_2E;
|
||||
s16 lbl_1_bss_2C;
|
||||
Point3d lbl_1_bss_20;
|
||||
Point3d lbl_1_bss_14;
|
||||
s32* lbl_1_bss_10;
|
||||
s16 lbl_1_bss_8[4]; // Item List
|
||||
Process* lbl_1_bss_4;
|
||||
u8* lbl_1_bss_0;
|
||||
|
||||
/* DATA */
|
||||
static BoardMapObject lbl_1_data_0[0x10] = {
|
||||
{{2550.0f, 0.0f, -450.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000C)},
|
||||
{{-3150.0f, 0.0f, -1350.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000D)},
|
||||
{{-3150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000E)},
|
||||
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0008)},
|
||||
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0009)},
|
||||
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000A)},
|
||||
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000B)},
|
||||
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0011)},
|
||||
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0012)},
|
||||
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0015)},
|
||||
{{-300.0f, 0.0f, -900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0016)},
|
||||
{{1175.0f, 0.0f, -125.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
|
||||
{{-525.0f, 0.0f, -825.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
|
||||
{{-2225.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
|
||||
{{1925.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
|
||||
{{150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}
|
||||
};
|
||||
|
||||
// Special Models
|
||||
s16 lbl_1_data_280 = -1;
|
||||
s16 lbl_1_data_282 = -1;
|
||||
s16 lbl_1_data_284 = -1;
|
||||
s16 lbl_1_data_286 = -1;
|
||||
|
||||
s32 lbl_1_data_288[] = {
|
||||
DATA_MAKE_NUM(DATADIR_W02, 0x0004),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
s32 lbl_1_data_290[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0009),
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0006),
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0007),
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0008),
|
||||
DATA_NUM_LISTEND,
|
||||
0x00000000 // Padding
|
||||
};
|
||||
|
||||
/* Functions */
|
||||
//Actual externs
|
||||
extern void BoardMusStart(s32, s32, s32, s32);
|
||||
extern void BoardAudSeqPause(s32, s32, s32);
|
||||
s8 BoardComPreferItemCheck(s32, s8, s8, s8);
|
||||
extern void BoardComKeySetLeft();
|
||||
extern void BoardComKeySetRight();
|
||||
extern void CharModelDataClose(s16);
|
||||
extern u32 frand();
|
||||
extern u32 frandmod(u32);
|
||||
|
||||
// function is probably global. only inlined in rels?
|
||||
inline s32 get_current_board(void) {
|
||||
return GWSystem.board;
|
||||
}
|
||||
|
||||
void BoardCreate(void) {
|
||||
s32 i, boardData;
|
||||
BoardMapObject* modelTransform;
|
||||
|
||||
boardData = get_current_board();
|
||||
lbl_1_bss_0 = GWSystem.board_data;
|
||||
BoardSpaceInit(0x760000);
|
||||
lbl_1_data_280 = BoardModelCreate(0x760001, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_280, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_280, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_280, 0, 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_data_280, 0.1f);
|
||||
lbl_1_data_282 = BoardModelCreate(0x760002, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_282, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_282, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_282, 0, 0x40000001);
|
||||
lbl_1_data_284 = BoardModelCreate(0x760003, lbl_1_data_288, 0);
|
||||
BoardModelPosSet(lbl_1_data_284, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_284, 1, 0x40000001);
|
||||
lbl_1_data_286 = BoardModelCreate(0x20005, lbl_1_data_290, 0);
|
||||
BoardModelMotionStart(lbl_1_data_286, 1, 0x40000001);
|
||||
BoardLightHookSet(fn_1_72C, fn_1_770);
|
||||
|
||||
for(i = 0; i < 0x10; i++) {
|
||||
modelTransform = &lbl_1_data_0[i];
|
||||
if (modelTransform->data_num != -1) {
|
||||
if ((i == 0xB) || (i == 0xC) || (i == 0xD) || (i == 0xE) || (i == 0xF)) {
|
||||
lbl_1_bss_10 = lbl_1_data_290;
|
||||
} else {
|
||||
lbl_1_bss_10 = NULL;
|
||||
}
|
||||
lbl_1_bss_30[i] = BoardModelCreate(modelTransform->data_num, lbl_1_bss_10, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_30[i], &modelTransform->pos);
|
||||
BoardModelRotSetV(lbl_1_bss_30[i], &modelTransform->rot);
|
||||
BoardModelScaleSetV(lbl_1_bss_30[i], &modelTransform->scale);
|
||||
BoardModelVisibilitySet(lbl_1_bss_30[i], 1);
|
||||
if (lbl_1_bss_10 != NULL) {
|
||||
BoardModelMotionStart(lbl_1_bss_30[i], 1, 0x40000001);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BoardModelAttrSet(lbl_1_bss_30[0], 0x40000002);
|
||||
BoardModelAttrSet(lbl_1_bss_30[1], 0x40000002);
|
||||
BoardModelAttrSet(lbl_1_bss_30[2], 0x40000002);
|
||||
fn_1_BC1C();
|
||||
fn_1_92C();
|
||||
BoardModelPosGet(lbl_1_bss_30[13], &lbl_1_bss_20);
|
||||
BoardModelPosGet(lbl_1_bss_30[14], &lbl_1_bss_14);
|
||||
lbl_1_bss_2E = BoardModelCreate(0x760010, NULL, 1);
|
||||
lbl_1_bss_2C = BoardModelCreate(0x760010, NULL, 1);
|
||||
fn_1_9250();
|
||||
BoardSpaceWalkEventFuncSet(fn_1_800);
|
||||
BoardSpaceWalkMiniEventFuncSet(fn_1_1128);
|
||||
BoardSpaceLandEventFuncSet(fn_1_774);
|
||||
BoardStarHostSet(lbl_1_data_284);
|
||||
BoardBooHouseHostSet(lbl_1_data_286);
|
||||
BoardLotteryHostSet(lbl_1_data_286);
|
||||
BoardShopHostSet(lbl_1_data_286);
|
||||
BoardJunctionMaskSet(0xE);
|
||||
BoardJunctionMaskSet(0x30);
|
||||
}
|
||||
|
||||
void BoardDestroy(void) {
|
||||
/* Kill Model List */
|
||||
s32 i;
|
||||
for (i = 0; i < 0x10; i++) {
|
||||
if (lbl_1_bss_30[i] != 0) {
|
||||
BoardModelKill(lbl_1_bss_30[i]);
|
||||
lbl_1_bss_30[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Kill Special Models */
|
||||
if (lbl_1_data_286 != -1) {
|
||||
BoardModelKill(lbl_1_data_286);
|
||||
lbl_1_data_286 = -1;
|
||||
}
|
||||
if (lbl_1_data_284 != -1) {
|
||||
BoardModelKill(lbl_1_data_284);
|
||||
lbl_1_data_284 = -1;
|
||||
}
|
||||
if (lbl_1_data_280 != -1) {
|
||||
BoardModelKill(lbl_1_data_280);
|
||||
lbl_1_data_280 = -1;
|
||||
}
|
||||
if (lbl_1_data_282 != -1) {
|
||||
BoardModelKill(lbl_1_data_282);
|
||||
lbl_1_data_282 = -1;
|
||||
}
|
||||
BoardSpaceDestroy();
|
||||
}
|
||||
|
||||
void fn_1_72C(void) {
|
||||
s16 var = BoardModelIDGet(lbl_1_data_280);
|
||||
Hu3DModelLightInfoSet(var, 1);
|
||||
}
|
||||
|
||||
void fn_1_770(void) {
|
||||
|
||||
}
|
||||
|
||||
/* Decrement current space's [UNKNOWN] flag */
|
||||
s32 fn_1_774(void) {
|
||||
u32 unkFlag;
|
||||
u32 currPlayer;
|
||||
u32 currSpace;
|
||||
u32 spaceFlags;
|
||||
currPlayer = GWSystem.player_curr;
|
||||
currSpace = GWPlayer[currPlayer].space_curr;
|
||||
spaceFlags = BoardSpaceFlagGet(0, currSpace);
|
||||
//temp_r31 = (temp_r)
|
||||
unkFlag = (spaceFlags & 0x1C0) >> 6;
|
||||
if (unkFlag != 0) {
|
||||
unkFlag--;
|
||||
fn_1_93C8(unkFlag);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if can iteract with board object? */
|
||||
s32 fn_1_800(void) {
|
||||
BoardSpace* currSpace;
|
||||
s32 currPlayer;
|
||||
s32 var_r29;
|
||||
|
||||
currPlayer = GWSystem.player_curr;
|
||||
currSpace = BoardSpaceGet(0, GWPlayer[currPlayer].space_curr);
|
||||
if ((currSpace->flag & 0x30) != 0) {
|
||||
|
||||
|
||||
// If mega mushroom state return
|
||||
if (BoardPlayerSizeGet(currPlayer) == 2) {
|
||||
return 0;
|
||||
}
|
||||
// If using the bowser suit return
|
||||
if (GWPlayer[currPlayer].bowser_suit) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((currSpace->flag & 0x20) != 0 && (currSpace->flag & 0x10) != 0) {
|
||||
var_r29 = 2;
|
||||
} else if ((currSpace->flag & 0x20) != 0) {
|
||||
var_r29 = 1;
|
||||
} else {
|
||||
var_r29 = 0;
|
||||
}
|
||||
fn_1_394C(var_r29);
|
||||
return 1;
|
||||
}
|
||||
if ((currSpace->flag & 1) != 0) {
|
||||
fn_1_E41C();
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fn_1_92C(void) {
|
||||
fn_1_39F4();
|
||||
fn_1_5CF8();
|
||||
}
|
||||
|
||||
void fn_1_950(void) {
|
||||
|
||||
}
|
||||
|
||||
void fn_1_954(void) {
|
||||
HuPrcSleep(0x3C);
|
||||
BoardMusStart(1, 0x12, 0x7F, 0);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
void fn_1_990(void) {
|
||||
Vec rotation;
|
||||
Vec offset;
|
||||
Vec boardSpacePos;
|
||||
|
||||
s32 textChoice;
|
||||
s32 currPlayer;
|
||||
s32 currSpace;
|
||||
s32 spaceLinkFlag;
|
||||
|
||||
|
||||
currPlayer = GWSystem.player_curr;
|
||||
BoardWinCreateChoice(2, 0x130011U, 4, 0);
|
||||
if (GWPlayer[currPlayer].com) {
|
||||
if ((s32) (frand() & 1) != 0) {
|
||||
BoardComKeySetLeft();
|
||||
} else {
|
||||
BoardComKeySetRight();
|
||||
}
|
||||
}
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
textChoice = BoardWinChoiceGet();
|
||||
if ((textChoice == 1) || (textChoice == -1)) {
|
||||
BoardWinCreate(2, 0x130012U, 4);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardMGExit();
|
||||
while (BoardMGDoneFlagGet() != 1) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardMGDoneFlagSet(0);
|
||||
return;
|
||||
}
|
||||
BoardAudSeqPause(0, 1, 0x3E8);
|
||||
HuPrcChildCreate(fn_1_954, 0x2003U, 0x1000U, 0, boardMainProc);
|
||||
rotation.x = 0.0f;
|
||||
rotation.y = rotation.z = 0.0f;
|
||||
offset.y = 135.0f;
|
||||
offset.x = offset.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_30[8], &rotation, &offset, 1200.0f, 25.0f, 0x15);
|
||||
currSpace = GWPlayer[currPlayer].space_curr;
|
||||
spaceLinkFlag = BoardSpaceLinkFlagSearch(0, currSpace, 0x02000000U);
|
||||
BoardSpacePosGet(0, spaceLinkFlag, &boardSpacePos);
|
||||
BoardPlayerMoveBetween(currPlayer, currSpace, spaceLinkFlag);
|
||||
while (GWPlayer[currPlayer].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionStart(currPlayer, 1, 0x40000001);
|
||||
fn_1_3BF4();
|
||||
|
||||
while (GWPlayer[currPlayer].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
while (BoardEventFlagGet() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
while (GWPlayer[currPlayer].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionStart(currPlayer, 1, 0x40000001);
|
||||
}
|
||||
|
||||
void fn_1_C50(void) {
|
||||
Vec rotation;
|
||||
Vec offset;
|
||||
s32 currSpace;
|
||||
s32 spaceLinkFlags;
|
||||
s32 textChoice;
|
||||
s32 currPlayer;
|
||||
s32 i, j;
|
||||
|
||||
currPlayer = GWSystem.player_curr;
|
||||
if (BoardPlayerItemCount((s32) currPlayer) == 3) {
|
||||
BoardWinCreate(2, 0x13001A, 4);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
HuPrcEnd();
|
||||
}
|
||||
BoardCameraTargetModelSet(lbl_1_bss_30[10]);
|
||||
BoardCameraMotionWait();
|
||||
|
||||
/* Generate three random unique items where
|
||||
the first item is MINI_MUSHROOM and the
|
||||
other two are not BOWSER_SUIT or ITEM_BAG.
|
||||
*/
|
||||
lbl_1_bss_8[0] = BOARD_ITEM_MINI;
|
||||
for (i = 1; i < 3;) {
|
||||
lbl_1_bss_8[i] = frandmod(BOARD_ITEM_MAX);
|
||||
if (lbl_1_bss_8[i] != BOARD_ITEM_SUIT && lbl_1_bss_8[i] != BOARD_ITEM_BAG) {
|
||||
for (j = 0; j < i; j++) {
|
||||
if (lbl_1_bss_8[i] == lbl_1_bss_8[j]) {
|
||||
lbl_1_bss_8[i] = BOARD_ITEM_NONE;
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_8[i] != BOARD_ITEM_NONE) {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
fn_1_79BC(lbl_1_bss_8);
|
||||
|
||||
HuAudFXPlay(0x43);
|
||||
BoardWinCreateChoice(2, 0x130016, 4, 0);
|
||||
if (GWPlayer[currPlayer].com) {
|
||||
if (BoardComPreferItemCheck(currPlayer, lbl_1_bss_8[0], lbl_1_bss_8[1], lbl_1_bss_8[2]) != -1) {
|
||||
BoardComKeySetLeft();
|
||||
} else {
|
||||
BoardComKeySetRight();
|
||||
}
|
||||
}
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
textChoice = BoardWinChoiceGet();
|
||||
if ((textChoice == 1) || (textChoice == -1)) {
|
||||
HuAudFXPlay(0x44);
|
||||
BoardWinCreate(2, 0x130017, 4);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardMGExit();
|
||||
fn_1_8244(1);
|
||||
while (BoardMGDoneFlagGet() != 1) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardMGDoneFlagSet(0);
|
||||
fn_1_5F90();
|
||||
HuPrcEnd();
|
||||
}
|
||||
rotation.x = -30.0f;
|
||||
rotation.y = rotation.z = 0.0f;
|
||||
offset.x = 0.0f;
|
||||
offset.y = 0.0f;
|
||||
offset.z = -250.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_30[10], (Point3d* ) &rotation, (Point3d* ) &offset, 1500.0f, 25.0f, 0x15);
|
||||
currSpace = GWPlayer[currPlayer].space_curr;
|
||||
spaceLinkFlags = BoardSpaceLinkFlagSearch(0, currSpace, 0x02000000U);
|
||||
BoardPlayerMoveBetween(currPlayer, currSpace, spaceLinkFlags);
|
||||
while (GWPlayer[currPlayer].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001);
|
||||
BoardPlayerMotBlendSet(currPlayer, 0xB4, 0xF);
|
||||
while (BoardPlayerMotBlendCheck(currPlayer) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardCameraMotionWait();
|
||||
fn_1_5D28();
|
||||
while (BoardEventFlagGet() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
fn_1_8244(0);
|
||||
while (GWPlayer[currPlayer].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
fn_1_5F90();
|
||||
BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
void fn_1_1070(void) {
|
||||
BoardWinKill();
|
||||
CharModelDataClose(-1);
|
||||
lbl_1_bss_4 = 0;
|
||||
}
|
||||
|
||||
void fn_1_10A8(void) {
|
||||
lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070);
|
||||
while (lbl_1_bss_4) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
s32 fn_1_1128(void) {
|
||||
u32 spaceFlags;
|
||||
s16 currSpace;
|
||||
currSpace = GWPlayer[GWSystem.player_curr].space_curr;
|
||||
spaceFlags = BoardSpaceFlagGet(0, currSpace) & 0x600000;
|
||||
BoardDiceDigit2DShowSet(0);
|
||||
|
||||
if (spaceFlags & 0x200000) {
|
||||
fn_1_990();
|
||||
} else if (spaceFlags & 0x400000) {
|
||||
lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070);
|
||||
while (lbl_1_bss_4) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
void fn_1_121C(u32 mesg) {
|
||||
BoardWinCreate(2, mesg, 4);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
}
|
||||
|
||||
f32 const padMain = 0.0f;
|
||||
584
src/REL/w02Dll/roulette.c
Normal file
584
src/REL/w02Dll/roulette.c
Normal file
|
|
@ -0,0 +1,584 @@
|
|||
#include "REL/w02Dll.h"
|
||||
#include "game/audio.h"
|
||||
|
||||
#define ROULETTE_CHOICE_YES 0
|
||||
#define ROULETTE_CHOICE_NO 1
|
||||
#define ROULETTE_CHOICE_MAP 2
|
||||
|
||||
#define BRIBE_CHOICE_20 0
|
||||
#define BRIBE_CHOICE_10 1
|
||||
#define BRIBE_CHOICE_5 2
|
||||
#define BRIBE_CHOICE_NVM 3
|
||||
#define BRIBE_CHOICE_INVALID -1
|
||||
|
||||
/* RODATA */
|
||||
extern f32 lbl_1_rodata_408;
|
||||
extern f32 lbl_1_rodata_40C;
|
||||
extern f32 lbl_1_rodata_410;
|
||||
extern f32 lbl_1_rodata_414;
|
||||
extern f32 lbl_1_rodata_418;
|
||||
extern f32 lbl_1_rodata_41C;
|
||||
extern f32 lbl_1_rodata_420;
|
||||
extern f32 lbl_1_rodata_424;
|
||||
extern f32 lbl_1_rodata_428;
|
||||
extern f32 lbl_1_rodata_42C;
|
||||
extern f32 lbl_1_rodata_430;
|
||||
extern f32 lbl_1_rodata_434;
|
||||
extern f32 lbl_1_rodata_438;
|
||||
extern f32 lbl_1_rodata_43C;
|
||||
extern f32 lbl_1_rodata_440;
|
||||
extern f32 lbl_1_rodata_444;
|
||||
extern f32 lbl_1_rodata_448;
|
||||
extern f64 lbl_1_rodata_450;
|
||||
extern f64 lbl_1_rodata_458;
|
||||
extern f32 lbl_1_rodata_460;
|
||||
extern f32 lbl_1_rodata_464;
|
||||
extern f32 lbl_1_rodata_468;
|
||||
extern f32 lbl_1_rodata_46C;
|
||||
extern f32 lbl_1_rodata_470;
|
||||
extern f32 lbl_1_rodata_474;
|
||||
extern f32 lbl_1_rodata_478;
|
||||
extern f32 lbl_1_rodata_47C;
|
||||
extern f64 lbl_1_rodata_480;
|
||||
extern f64 lbl_1_rodata_488;
|
||||
extern f32 lbl_1_rodata_490;
|
||||
extern f32 lbl_1_rodata_494;
|
||||
extern f64 lbl_1_rodata_498;
|
||||
extern f64 lbl_1_rodata_4A0;
|
||||
extern f32 lbl_1_rodata_4A8;
|
||||
extern f32 lbl_1_rodata_4AC;
|
||||
extern f32 lbl_1_rodata_4B0;
|
||||
extern f32 lbl_1_rodata_4B8;
|
||||
extern f32 lbl_1_rodata_4C0;
|
||||
extern f32 lbl_1_rodata_4C4;
|
||||
extern f32 lbl_1_rodata_4C8;
|
||||
extern f32 lbl_1_rodata_4CC;
|
||||
extern f64 lbl_1_rodata_4D0;
|
||||
extern f32 lbl_1_rodata_4D8;
|
||||
extern f32 lbl_1_rodata_4DC;
|
||||
|
||||
/* DATA */
|
||||
extern s32 lbl_1_data_4D0[];
|
||||
|
||||
/* BSS */
|
||||
extern s32 lbl_1_bss_38C;
|
||||
extern s16 lbl_1_bss_388;
|
||||
extern s32 lbl_1_bss_384;
|
||||
extern f32 lbl_1_bss_380;
|
||||
|
||||
//Function Externs
|
||||
extern s16 BoardBowserSuitModelGet();
|
||||
extern s16 BoardBowserSuitPlayerModelGet();
|
||||
extern void BoardComKeySetDown();
|
||||
extern void BoardComKeySetUp();
|
||||
extern void omVibrate(s16 player, s16 duration, s16 off, s16 on);
|
||||
extern u32 frand();
|
||||
|
||||
//Local Functions
|
||||
s32 fn_1_E2AC(void);
|
||||
void fn_1_E310(f32);
|
||||
|
||||
// Unknown Structures
|
||||
typedef struct UnkPoint {
|
||||
f32 unk00;
|
||||
Vec point;
|
||||
} UnkPoint;
|
||||
|
||||
|
||||
/* FUNCTIONS */
|
||||
void fn_1_BC1C(void) {
|
||||
Point3d sp8;
|
||||
|
||||
BoardModelPosGet(lbl_1_bss_30[15], &sp8);
|
||||
sp8.z -= lbl_1_rodata_408;
|
||||
sp8.y += lbl_1_rodata_40C;
|
||||
BoardModelPosSetV(lbl_1_bss_30[6], &sp8);
|
||||
BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_30[5], lbl_1_rodata_410);
|
||||
BoardModelRotGet(lbl_1_bss_30[15], &sp8);
|
||||
sp8.y = lbl_1_rodata_410;
|
||||
BoardModelRotSetV(lbl_1_bss_30[15], &sp8);
|
||||
}
|
||||
|
||||
void fn_1_BCFC(void) {
|
||||
s32 spaceLinkFlags;
|
||||
s32 temp_r30;
|
||||
s32 temp_r29;
|
||||
|
||||
BoardDiceDigit2DShowSet(0);
|
||||
spaceLinkFlags = BoardSpaceLinkFlagSearch(0, (s32) GWPlayer[lbl_1_bss_388].space_curr, 2U);
|
||||
BoardPlayerMoveToAsync(lbl_1_bss_388, spaceLinkFlags);
|
||||
while (GWPlayer[lbl_1_bss_388].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardRotateDiceNumbers((s32) lbl_1_bss_388);
|
||||
BoardCameraViewSet(2);
|
||||
BoardCameraMotionWait();
|
||||
BoardPlayerMotBlendSet((s32) lbl_1_bss_388, 0x5A, 0xF);
|
||||
while (BoardPlayerMotBlendCheck((s32) lbl_1_bss_388) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelRotYSet(lbl_1_bss_30[15], lbl_1_rodata_414);
|
||||
fn_1_121C(0x130000);
|
||||
HuAudFXPlay(0x44);
|
||||
temp_r29 = fn_1_BE88();
|
||||
BoardStatusShowSetAll(0);
|
||||
fn_1_121C(0x130001);
|
||||
temp_r30 = fn_1_C108(temp_r29);
|
||||
fn_1_CD04(temp_r30);
|
||||
BoardCameraViewSet(1);
|
||||
BoardStatusShowSetAll(1);
|
||||
BoardCameraMotionWait();
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
HuPrcKill(NULL);
|
||||
while(TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
s32 fn_1_BE74(void) {
|
||||
lbl_1_bss_38C = 0;
|
||||
}
|
||||
|
||||
s32 fn_1_BE88(void) {
|
||||
s32 coinAmount;
|
||||
s32 var_r30;
|
||||
s16 playerCoinRegion;
|
||||
s32 bribeChoice;
|
||||
s32 i;
|
||||
s32 rouletteChoice;
|
||||
s32 mesg;
|
||||
|
||||
var_r30 = -1;
|
||||
coinAmount = BoardPlayerCoinsGet((s32) lbl_1_bss_388);
|
||||
if (coinAmount < 5) {
|
||||
return var_r30;
|
||||
}
|
||||
fn_1_121C(0x130002);
|
||||
|
||||
do {
|
||||
BoardWinCreateChoice(2, 0x13001DU, 4, 0);
|
||||
/* COM has 50% to bribe goomba */
|
||||
if (GWPlayer[lbl_1_bss_388].com) {
|
||||
if (frand() & 1) {
|
||||
BoardComKeySetRight();
|
||||
} else {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
}
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
rouletteChoice = BoardWinChoiceGet();
|
||||
// If chose to play roulette
|
||||
if (rouletteChoice == ROULETTE_CHOICE_YES) {
|
||||
BoardWinCreateChoice(1, 0x130003U, 4, 0);
|
||||
playerCoinRegion = 3;
|
||||
if (coinAmount < 0x14) {
|
||||
BoardWinChoiceDisable(0);
|
||||
playerCoinRegion--;
|
||||
}
|
||||
if (coinAmount < 0xA) {
|
||||
BoardWinChoiceDisable(1);
|
||||
playerCoinRegion--;
|
||||
}
|
||||
/* COM always bribes max unless it has 20 or
|
||||
more coins. Then 50% max, 50% 10 coin bribe. */
|
||||
if (GWPlayer[lbl_1_bss_388].com) {
|
||||
if (playerCoinRegion < 2) {
|
||||
BoardComKeySetUp();
|
||||
} else if (frand() & 1) {
|
||||
BoardComKeySetUp();
|
||||
} else {
|
||||
BoardComKeySetDown();
|
||||
}
|
||||
}
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
bribeChoice = BoardWinChoiceGet();
|
||||
if (bribeChoice == BRIBE_CHOICE_INVALID ||
|
||||
bribeChoice == BRIBE_CHOICE_NVM) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Coin amount is now the bribe amount in coins
|
||||
switch (bribeChoice) {
|
||||
case BRIBE_CHOICE_20:
|
||||
mesg = 0x130004;
|
||||
coinAmount = 0x14;
|
||||
var_r30 = 0x5A; // 90%
|
||||
break;
|
||||
case BRIBE_CHOICE_10:
|
||||
mesg = 0x130005;
|
||||
coinAmount = 0xA;
|
||||
var_r30 = 0x3C; // 60%
|
||||
break;
|
||||
case BRIBE_CHOICE_5:
|
||||
mesg = 0x130006;
|
||||
coinAmount = 5;
|
||||
var_r30 = 0x1E; // 30%
|
||||
break;
|
||||
}
|
||||
fn_1_121C(mesg);
|
||||
|
||||
|
||||
for (i = 0; i < coinAmount; i++) {
|
||||
BoardPlayerCoinsAdd(lbl_1_bss_388, -1);
|
||||
HuAudFXPlay(0xE);
|
||||
HuPrcSleep(6);
|
||||
}
|
||||
HuAudFXPlay(0xF);
|
||||
// If chose to view map
|
||||
} else if (rouletteChoice == ROULETTE_CHOICE_MAP) {
|
||||
BoardViewMapExec(lbl_1_bss_388);
|
||||
}
|
||||
} while (rouletteChoice == ROULETTE_CHOICE_MAP); // While viewing map
|
||||
if (var_r30 == -1) {
|
||||
fn_1_121C(0x130007);
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/rctvo
|
||||
s32 fn_1_C108(s32 arg0) {
|
||||
Vec sp34;
|
||||
Vec sp28;
|
||||
Vec sp1C;
|
||||
UnkPoint spC;
|
||||
|
||||
|
||||
f32 var_f27;
|
||||
f32 var_f26;
|
||||
f32 var_f25;
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
f64 var_f30;
|
||||
f32 var_f31;
|
||||
|
||||
s32 var_r26;
|
||||
s32 var_r27;
|
||||
s16 var_r28;
|
||||
s32 var_r30;
|
||||
s32 var_r29;
|
||||
s32 i;
|
||||
|
||||
if ((s32) frandmod(0x64U) < arg0) {
|
||||
s32 temp_r25 = fn_1_E2AC();
|
||||
var_r27 = 4;
|
||||
var_r29 = frandmod(3U);
|
||||
if ((s32) frandmod(0x64U) < 0x14) {
|
||||
var_r29 += 1;
|
||||
}
|
||||
var_r29 = var_r29 + (3 - temp_r25) * 4;
|
||||
} else {
|
||||
var_r29 = frandmod(0x10U);
|
||||
var_r27 = frandmod(4U);
|
||||
}
|
||||
BoardModelPosGet(lbl_1_bss_30[4], &spC.point);
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraMotionWait();
|
||||
var_r26 = BoardSpaceFlagSearch(0, 0x800U);
|
||||
BoardCameraTargetSpaceSet(var_r26);
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_388, 0xB4, 0xF);
|
||||
BoardModelRotGet(lbl_1_bss_30[15], &sp34);
|
||||
|
||||
for (i = 0; i < 0xF; i++) {
|
||||
sp34.y -= lbl_1_rodata_418;
|
||||
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
sp34.y = lbl_1_rodata_41C;
|
||||
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
|
||||
BoardCameraMotionWait();
|
||||
lbl_1_bss_384 = HuAudFXPlay(0x41D);
|
||||
var_r28 = -0x1FFF;
|
||||
var_f29 = lbl_1_rodata_410;
|
||||
for (i = 0; i < 0x3C; i++) {
|
||||
var_f29 -= lbl_1_rodata_420;
|
||||
fn_1_E310(var_f29);
|
||||
var_r28 = (s16) ((f32) (s16) var_r28 + lbl_1_rodata_424);
|
||||
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
var_f29 = lbl_1_rodata_428;
|
||||
HuAudFXPitchSet(lbl_1_bss_384, 0);
|
||||
BoardModelMotionStart(lbl_1_bss_30[15], 2, 0x40000001);
|
||||
BoardModelPosGet(lbl_1_bss_30[15], &sp34);
|
||||
|
||||
for (i = 0; i < 0x1E; i++) {
|
||||
sp34.z += lbl_1_rodata_42C;
|
||||
BoardModelPosSetV(lbl_1_bss_30[15], &sp34);
|
||||
fn_1_E310(var_f29);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_30[15], 1, 0x40000001);
|
||||
while (var_r29) {
|
||||
fn_1_E310(var_f29);
|
||||
HuPrcVSleep();
|
||||
var_r29 -= 1;
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_30[15], 3, 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_430);
|
||||
|
||||
for (i = 0; i < 0xA; i++) {
|
||||
sp34.z -= lbl_1_rodata_434;
|
||||
BoardModelPosSetV(lbl_1_bss_30[15], &sp34);
|
||||
fn_1_E310(var_f29);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_30[15], 1, 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_438);
|
||||
HuAudFXPlay(0x41F);
|
||||
HuAudFXPlay(0x42D);
|
||||
omVibrate(lbl_1_bss_388, 0xC, 6, 6);
|
||||
var_f31 = lbl_1_rodata_410;
|
||||
var_f27 = lbl_1_rodata_43C;
|
||||
sp1C.x = lbl_1_rodata_410;
|
||||
sp1C.z = lbl_1_rodata_440;
|
||||
|
||||
// Roulette motion and ball ?
|
||||
while(TRUE) {
|
||||
sp1C.y = var_f27 - (lbl_1_rodata_444 * (lbl_1_rodata_448 * (var_f31 * var_f31)));
|
||||
var_f31 += lbl_1_rodata_438;
|
||||
BoardModelPosGet(lbl_1_bss_30[6], &sp28);
|
||||
PSVECAdd(&sp28, &sp1C, &sp28);
|
||||
var_f28 = (sp28.x - spC.point.x) * (sp28.x - spC.point.x) + ((sp28.z - spC.point.z) * (sp28.z - spC.point.z));
|
||||
if (var_f28 > lbl_1_rodata_410) {
|
||||
var_f30 = __frsqrte(var_f28);
|
||||
var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30)));
|
||||
var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30)));
|
||||
var_f30 = (lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - (var_f28 * (var_f30 * var_f30))));
|
||||
spC.unk00 = (var_f28 * var_f30);
|
||||
var_f26 = spC.unk00;
|
||||
} else {
|
||||
var_f26 = var_f28;
|
||||
}
|
||||
|
||||
var_f25 = var_f26;
|
||||
if (var_f25 >= lbl_1_rodata_460) {
|
||||
if (sp28.y <= (lbl_1_rodata_464 + spC.point.y)) {
|
||||
PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C);
|
||||
PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C);
|
||||
sp1C.y = lbl_1_rodata_410;
|
||||
PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, lbl_1_rodata_468);
|
||||
PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C);
|
||||
sp28.x = sp1C.x;
|
||||
sp28.z = sp1C.z;
|
||||
sp1C.x = lbl_1_rodata_46C;
|
||||
sp1C.z = lbl_1_rodata_470;
|
||||
}
|
||||
}
|
||||
|
||||
if (sp28.y < spC.point.y) {
|
||||
sp28.y = spC.point.y;
|
||||
if (var_r27 >= 3) {
|
||||
break;
|
||||
}
|
||||
//var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand()));
|
||||
var_f27 = lbl_1_rodata_418 + (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand()));
|
||||
var_f31 = lbl_1_rodata_438;
|
||||
var_r27 += 1;
|
||||
//var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
|
||||
sp1C.x = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
|
||||
sp1C.z = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
|
||||
HuAudFXPlay(0x41E);
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28);
|
||||
fn_1_E310(var_f29);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
HuAudFXPlay(0x41E);
|
||||
PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C);
|
||||
PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C);
|
||||
var_f31 = (f32) (lbl_1_rodata_480 * (atan2((f64) -sp1C.z, (f64) sp1C.x) / lbl_1_rodata_488));
|
||||
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
|
||||
var_f31 = var_f31 - sp34.y;
|
||||
if (var_f31 < lbl_1_rodata_410) {
|
||||
var_f31 += lbl_1_rodata_490;
|
||||
}
|
||||
var_r30 = (s32) (var_f31 / lbl_1_rodata_494);
|
||||
if (fmod(var_f31, lbl_1_rodata_498) > lbl_1_rodata_4A0) {
|
||||
var_r30 += 1;
|
||||
}
|
||||
if (var_r30 >= 0x10) {
|
||||
var_r30 -= 0x10;
|
||||
}
|
||||
sp1C.y = lbl_1_rodata_410;
|
||||
|
||||
while(TRUE) {
|
||||
fn_1_E310(var_f29);
|
||||
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
|
||||
var_f31 = (lbl_1_rodata_494 * var_r30) + sp34.y; // TODO: Update rodata for asm change
|
||||
sp1C.x= cos((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480);
|
||||
sp1C.z = -sin((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480);
|
||||
PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468);
|
||||
PSVECAdd(&sp1C, &spC.point, &sp1C);
|
||||
sp28.x = sp1C.x;
|
||||
sp28.z = sp1C.z;
|
||||
BoardModelPosSetV(lbl_1_bss_30[6], &sp28);
|
||||
if (sp34.y >= lbl_1_rodata_4A8 &&
|
||||
sp34.y < lbl_1_rodata_4AC) {
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x3C; i++) {
|
||||
var_f29 += lbl_1_rodata_420;
|
||||
fn_1_E310(var_f29);
|
||||
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
|
||||
var_f31 = (lbl_1_rodata_494 * (f32) var_r30) + sp34.y; // TODO: Update rodata for asm change
|
||||
sp1C.x = (f32) cos((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480);
|
||||
sp1C.z = (f32) -sin((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480);
|
||||
PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468);
|
||||
PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C);
|
||||
sp28.x = sp1C.x;
|
||||
sp28.z = sp1C.z;
|
||||
BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28);
|
||||
var_r28 = var_r28 + lbl_1_rodata_4B0; // TODO: Weird extra rodata
|
||||
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelRotYSet(lbl_1_bss_30[4], lbl_1_rodata_410);
|
||||
HuAudFXStop(lbl_1_bss_384);
|
||||
return lbl_1_data_4D0[var_r30];
|
||||
}
|
||||
|
||||
// Place player on space post roulette?
|
||||
void fn_1_CD04(s32 arg0) {
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
|
||||
f32 temp_f30;
|
||||
f32 temp_f29;
|
||||
f32 var_f31;
|
||||
|
||||
s16 var_r25;
|
||||
u32 var_r26;
|
||||
s32 var_r27;
|
||||
s32 var_r29;
|
||||
s32 var_r28;
|
||||
s32 var_r30;
|
||||
BoardSpace* temp_r31;
|
||||
|
||||
if (arg0 < 0) {
|
||||
fn_1_D3AC();
|
||||
arg0 = fn_1_D8C4();
|
||||
}
|
||||
temp_r31 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800));
|
||||
|
||||
for (var_r28 = 0; var_r28 < temp_r31->link_cnt; var_r28++) {
|
||||
var_r29 = temp_r31->link[var_r28];
|
||||
var_r26 = ( (BoardSpaceFlagGet(0, var_r29) & 0xE) >> 1U);
|
||||
if ( var_r26 == (arg0 + 2)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
BoardSpacePosGet(0, var_r29, &sp24);
|
||||
BoardModelAttrReset(lbl_1_bss_30[5], 0x40000002);
|
||||
HuAudFXPlay(0x420);
|
||||
if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) {
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerScaleGet(lbl_1_bss_388, &spC);
|
||||
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) {
|
||||
spC.x -= lbl_1_rodata_448;
|
||||
spC.y -= lbl_1_rodata_448;
|
||||
//temp_f1 = spC.z;
|
||||
spC.z = spC.z - lbl_1_rodata_448;
|
||||
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
spC.x = spC.y = spC.z = lbl_1_rodata_4C8;
|
||||
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
|
||||
}
|
||||
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
|
||||
BoardModelVisibilitySet(BoardBowserSuitModelGet(), 0);
|
||||
BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(), 0);
|
||||
} else {
|
||||
BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 0);
|
||||
}
|
||||
HuAudFXPlay(0x421);
|
||||
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
|
||||
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4CC) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelPosGet(lbl_1_bss_30[5], &sp18);
|
||||
temp_f30 = (f32) ((lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488)) / lbl_1_rodata_4D0);
|
||||
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_408) {
|
||||
BoardModelRotYSet(lbl_1_bss_30[5], temp_f30 + BoardModelRotYGet(lbl_1_bss_30[5]));
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelRotYSet(lbl_1_bss_30[5], (f32) (lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488)));
|
||||
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
|
||||
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
|
||||
|
||||
BoardModelVisibilitySet(BoardBowserSuitModelGet(),1);
|
||||
BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(),1);
|
||||
} else {
|
||||
BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 1);
|
||||
}
|
||||
GWPlayer[lbl_1_bss_388].space_curr =(s16) var_r29;
|
||||
BoardPlayerPosSetV(lbl_1_bss_388, &sp24);
|
||||
temp_r31 = BoardSpaceGet(0, var_r29);
|
||||
|
||||
for ( var_r30 = 0; var_r30 < (s32) temp_r31->link_cnt; var_r30++) {
|
||||
if (BoardSpaceTypeGet(0, temp_r31->link[var_r30])) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r30 != (s32) temp_r31->link_cnt) {
|
||||
BoardSpacePosGet(0, temp_r31->link[var_r30], &sp18);
|
||||
BoardPlayerRotYSet(lbl_1_bss_388, (f32) (lbl_1_rodata_480 * (atan2(sp18.x - sp24.x, sp18.z - sp24.z) / lbl_1_rodata_488)));
|
||||
}
|
||||
if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) {
|
||||
var_f31 = spC.x;
|
||||
|
||||
while (var_f31 < lbl_1_rodata_4DC) {
|
||||
var_f31 += lbl_1_rodata_4D8;
|
||||
if (var_f31 > lbl_1_rodata_4DC) {
|
||||
var_f31 = lbl_1_rodata_4DC;
|
||||
}
|
||||
spC.z = var_f31;
|
||||
spC.y = var_f31;
|
||||
spC.x = var_f31;
|
||||
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
HuAudFXPlay(0x42A);
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < BoardModelMotionMaxTimeGet(lbl_1_bss_30[5])) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuPrcCreate(&fn_1_DF48, 0x2004, 0x1000, 0);
|
||||
}
|
||||
|
||||
/* Rotate (yaw) of model 4 */
|
||||
void fn_1_E310(f32 degrees) {
|
||||
Point3d spC;
|
||||
lbl_1_bss_380 += degrees;
|
||||
if (lbl_1_bss_380 >= lbl_1_rodata_490) {
|
||||
lbl_1_bss_380 -= lbl_1_rodata_490;
|
||||
}
|
||||
if (lbl_1_bss_380 < lbl_1_rodata_410) {
|
||||
lbl_1_bss_380 += lbl_1_rodata_490;
|
||||
}
|
||||
BoardModelRotGet(lbl_1_bss_30[4], &spC);
|
||||
spC.y = lbl_1_bss_380;
|
||||
BoardModelRotSetV(lbl_1_bss_30[4], &spC);
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -16,41 +16,45 @@
|
|||
#include "game/board/star.h"
|
||||
#include "game/object.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/map_object.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "game/hsfman.h"
|
||||
|
||||
void fn_1_740(void);
|
||||
//function signatures
|
||||
void fn_1_E0(void);
|
||||
s32 fn_1_2930(s32 arg0);
|
||||
void fn_1_884(void);
|
||||
void fn_1_740(void);
|
||||
void fn_1_8F0(void);
|
||||
s32 fn_1_910(void);
|
||||
s32 fn_1_A74(void);
|
||||
void fn_1_AF8(void);
|
||||
void fn_1_DEC(void);
|
||||
void fn_1_10B0(void);
|
||||
s32 fn_1_12C8(void);
|
||||
s32 fn_8006DDE8(s16, f32);
|
||||
void fn_1_10E4(omObjData* arg0);
|
||||
s32 fn_1_12C8(void);
|
||||
s32 fn_1_2930(s32 arg0);
|
||||
|
||||
typedef void (*VoidFunc)(void);
|
||||
extern const VoidFunc _ctors[];
|
||||
extern const VoidFunc _dtors[];
|
||||
|
||||
//Map Objects
|
||||
s16 lbl_1_bss_C[MAPOBJ_MAX];
|
||||
|
||||
//DATA
|
||||
w03StructUnk0 lbl_1_data_0[] = {
|
||||
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0004)},
|
||||
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0005)},
|
||||
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0006)},
|
||||
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000B)},
|
||||
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000B)},
|
||||
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
|
||||
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
|
||||
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0010)},
|
||||
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0011)},
|
||||
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0012)},
|
||||
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
|
||||
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
|
||||
BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
|
||||
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 4)},
|
||||
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 5)},
|
||||
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 6)},
|
||||
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
|
||||
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
|
||||
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
|
||||
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
|
||||
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 16)},
|
||||
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 17)},
|
||||
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 18)},
|
||||
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
|
||||
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
|
||||
};
|
||||
|
||||
s16 lbl_1_data_1E0 = -1;
|
||||
|
|
@ -103,10 +107,7 @@ s32 lbl_1_data_26C[] = {
|
|||
0x0000044C, 0x0000043A, 0x0000043A, 0x0000044E
|
||||
};
|
||||
|
||||
s32 pad_27C[] = {0};
|
||||
|
||||
//BSS
|
||||
s16 lbl_1_bss_C[14];
|
||||
s32 lbl_1_bss_8;
|
||||
omObjData* lbl_1_bss_4;
|
||||
w03State* lbl_1_bss_0;
|
||||
|
|
@ -119,55 +120,63 @@ void BoardCreate(void) {
|
|||
f32 var_f31;
|
||||
s32 var_r31;
|
||||
s32 var_r31_2;
|
||||
w03StructUnk0* temp_r30;
|
||||
BoardMapObject* temp_r30;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_0 = (w03State*)&GWSystem.board_data;
|
||||
lbl_1_bss_0->unk3 = 0;
|
||||
BoardSpaceInit(0x770000);
|
||||
|
||||
lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E0, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001);
|
||||
|
||||
lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E8, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelLayerSet(lbl_1_data_1E8, 2);
|
||||
|
||||
lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
|
||||
|
||||
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
|
||||
|
||||
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
|
||||
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
|
||||
|
||||
for (i = 0; i < 12; i++) {
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &lbl_1_data_0[i];
|
||||
if (temp_r30->datanum != -1) {
|
||||
if (temp_r30->data_num != -1) {
|
||||
if ((i == 10) || (i == 11)) {
|
||||
var_r29 = lbl_1_data_214;
|
||||
} else {
|
||||
var_r29 = NULL;
|
||||
}
|
||||
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->datanum, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->unk_00);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->unk_0C);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->unk_18);
|
||||
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->data_num, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
BoardModelMotionStart(lbl_1_bss_C[10], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[11], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
|
||||
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000002);
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0x40000002);
|
||||
|
||||
fn_1_3058();
|
||||
fn_1_6494();
|
||||
fn_1_7ABC();
|
||||
fn_1_9A7C();
|
||||
|
||||
BoardLightHookSet(&fn_1_884, &fn_1_8F0);
|
||||
BoardSpaceWalkEventFuncSet(&fn_1_910);
|
||||
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_A74);
|
||||
|
|
@ -180,6 +189,7 @@ void BoardCreate(void) {
|
|||
BoardJunctionMaskSet(0x3000);
|
||||
fn_1_CF4();
|
||||
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0x40000001);
|
||||
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = lbl_1_data_1EC.unk_10;
|
||||
var_f31 = lbl_1_data_1EC.unk_14;
|
||||
|
|
@ -189,10 +199,12 @@ void BoardCreate(void) {
|
|||
var_f31 = lbl_1_data_1EC.unk_04;
|
||||
fn_1_63F4(1);
|
||||
}
|
||||
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f30, var_f31);
|
||||
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 0x64);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 100);
|
||||
fn_1_785C();
|
||||
|
||||
if (lbl_1_bss_0->unk2 != 0) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) {
|
||||
|
|
@ -201,6 +213,7 @@ void BoardCreate(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn_1_DEC();
|
||||
}
|
||||
|
||||
|
|
@ -210,22 +223,27 @@ void BoardDestroy(void) {
|
|||
fn_1_10B0();
|
||||
fn_1_9A9C();
|
||||
fn_1_7B58();
|
||||
|
||||
for (i = 0; i < 0x0C; i++) {
|
||||
BoardModelKill(lbl_1_bss_C[i]);
|
||||
lbl_1_bss_C[i] = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E6 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E6);
|
||||
lbl_1_data_1E6 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E4 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E4);
|
||||
lbl_1_data_1E4 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E0 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E0);
|
||||
lbl_1_data_1E0 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_1E2 != -1) {
|
||||
BoardModelKill(lbl_1_data_1E2);
|
||||
lbl_1_data_1E2 = -1;
|
||||
|
|
@ -250,6 +268,7 @@ s32 fn_1_910(void) {
|
|||
cur_player_index = GWSystem.player_curr;
|
||||
space = GWPlayer[cur_player_index].space_curr;
|
||||
temp_r3 = BoardSpaceFlagGet(0, space);
|
||||
|
||||
if (temp_r3 & 0xC000) {
|
||||
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].bowser_suit)))) {
|
||||
return 0;
|
||||
|
|
@ -265,18 +284,21 @@ s32 fn_1_910(void) {
|
|||
|
||||
return fn_1_309C();
|
||||
}
|
||||
|
||||
if (temp_r3 & 0x200) {
|
||||
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].bowser_suit)) != 0)) {
|
||||
return 0;
|
||||
}
|
||||
return fn_1_675C();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 fn_1_A74(void) {
|
||||
s16 space = GWPlayer[GWSystem.player_curr].space_curr;
|
||||
u32 var = BoardSpaceFlagGet(0, space) & 0x600000;
|
||||
|
||||
if (var + -0x200000 == 0) {
|
||||
fn_1_7BA8();
|
||||
return;
|
||||
|
|
@ -311,8 +333,10 @@ void fn_1_B5C(s32 arg0) {
|
|||
var_f28 = lbl_1_data_1EC.unk_04;
|
||||
fn_1_63F4(1);
|
||||
}
|
||||
|
||||
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f30);
|
||||
|
||||
while (1) {
|
||||
temp = BoardModelMotionTimeGet(lbl_1_bss_C[0]);
|
||||
if (temp >= var_f29) {
|
||||
|
|
@ -320,6 +344,7 @@ void fn_1_B5C(s32 arg0) {
|
|||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelAttrSet(lbl_1_bss_C[0], 0x40000001);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f31);
|
||||
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f31, var_f28);
|
||||
|
|
@ -367,7 +392,8 @@ void fn_1_DEC(void) {
|
|||
BoardCameraPosGet(&sp20);
|
||||
BoardCameraDirGet(&sp14);
|
||||
HuAudFXListnerSetEX(&sp20, &sp14, 4800.0f, 36000.0f, 0.0f, 1200.0f, 1200.0f);
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_22C); i++) {
|
||||
sp8.x = lbl_1_data_22C[i].x - 3600.0f;
|
||||
sp8.y = lbl_1_data_22C[i].y;
|
||||
sp8.z = lbl_1_data_22C[i].z - 3600.0f;
|
||||
|
|
@ -410,6 +436,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
w03UnkStruct2* temp_r29;
|
||||
|
||||
temp_r29 = OM_GET_WORK_PTR(arg0, w03UnkStruct2);
|
||||
|
||||
if (temp_r29->unk0 != 0 || (BoardIsKill() != 0)) {
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_21C); i++) {
|
||||
if (lbl_1_data_21C[i] != -1) {
|
||||
|
|
@ -421,6 +448,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
BoardCameraDirGet(&sp8);
|
||||
BoardCameraTargetGet(&sp14);
|
||||
|
||||
|
|
@ -433,6 +461,7 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
}
|
||||
|
||||
sp14.y += 2000.0f;
|
||||
|
||||
if (_CheckFlag(0x10010) == 0) {
|
||||
if (lbl_1_bss_8 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
|
|
@ -442,5 +471,6 @@ void fn_1_10E4(omObjData* arg0) {
|
|||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_8 = 0;
|
||||
}
|
||||
|
||||
HuAudFXListnerUpdate(&sp14, &sp8);
|
||||
}
|
||||
|
|
@ -6,10 +6,11 @@
|
|||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
extern u16 HuPadBtnDown[4];
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
|
||||
//structs
|
||||
typedef struct someBits3 { //make sure this is defined correctly
|
||||
/* 0x00 */ struct {
|
||||
u8 unk00_bit0 : 1;
|
||||
|
|
@ -63,21 +64,13 @@ void fn_1_9474(s32 arg0);
|
|||
void fn_1_97F8(s32 arg0);
|
||||
void fn_1_9A1C(unkTemp2* arg0);
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
extern s16 MGSeqCreate(s32, ...);
|
||||
u8 MGSeqStatGet(s16);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s32 lbl_1_data_450 = -1;
|
||||
s16 lbl_1_data_454 = -1;
|
||||
s16 lbl_1_data_456 = -1;
|
||||
s16 lbl_1_data_458 = -1;
|
||||
s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1};
|
||||
|
||||
|
||||
//BSS
|
||||
char lbl_1_bss_150[0x30];
|
||||
s16 lbl_1_bss_14E;
|
||||
|
|
@ -86,7 +79,6 @@ omObjData* lbl_1_bss_148;
|
|||
omObjData* lbl_1_bss_144;
|
||||
Process* lbl_1_bss_140;
|
||||
|
||||
|
||||
void fn_1_7ABC(void) {
|
||||
lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0);
|
||||
BoardModelHookSet(lbl_1_bss_C[7], "phei", lbl_1_data_456);
|
||||
|
|
@ -146,25 +138,31 @@ s32 fn_1_7D18(s32 arg0) {
|
|||
f32 arctan;
|
||||
|
||||
BoardWinCreateChoice(2, 0x160015, 2, 0);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
if (BoardWinChoiceGet() != 0) {
|
||||
BoardWinCreate(2, 0x160018, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 200.0f;
|
||||
sp14.z = 0.0f;
|
||||
sp8.x = -10.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
|
||||
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 21);
|
||||
space = GWPlayer[arg0].space_curr;
|
||||
temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
|
|
@ -175,15 +173,19 @@ s32 fn_1_7D18(s32 arg0) {
|
|||
HuPrcSleep(0x1E);
|
||||
model = BoardModelIDGet(lbl_1_bss_C[7]);
|
||||
Hu3DModelObjPosGet(model, "phei", &sp38);
|
||||
|
||||
if (GWPlayer[arg0].character == 5) {
|
||||
var_f31 = 54.000004f;
|
||||
} else {
|
||||
var_f31 = 39.0f;
|
||||
}
|
||||
|
||||
sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
|
||||
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
|
||||
BoardPlayerPosGet(arg0, &sp38);
|
||||
|
|
@ -192,10 +194,13 @@ s32 fn_1_7D18(s32 arg0) {
|
|||
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotBlendSet(arg0, -0x2D, 7);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -205,14 +210,18 @@ void fn_1_8140(s32 arg0) {
|
|||
fn_1_81E0(arg0);
|
||||
BoardMusStart(1, 0x16, 0x7F, 0);
|
||||
temp_r31 = MGSeqCreate(3, 0);
|
||||
|
||||
while (MGSeqStatGet(temp_r31)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_9384();
|
||||
fn_1_84A8(0);
|
||||
|
||||
while (lbl_1_bss_144) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_91B8();
|
||||
}
|
||||
|
||||
|
|
@ -325,10 +334,12 @@ void fn_1_8530(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_r31->unk1 != 0) {
|
||||
temp_r31->unk1--;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (temp_r31->unk00_bit1) {
|
||||
case 0:
|
||||
fn_1_8698(arg0, temp_r31);
|
||||
|
|
@ -364,13 +375,15 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
arg1->unk_04 = -1;
|
||||
arg1->unk00_bit1 = 1;
|
||||
temp = BoardModelMotionTimeGet(lbl_1_bss_C[7]);
|
||||
|
||||
if (temp == 0.0f) {
|
||||
temp = 1.0f;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_14E > 30) {
|
||||
lbl_1_bss_14E = 30;
|
||||
}
|
||||
//temp2 =
|
||||
|
||||
OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //??
|
||||
BoardModelAttrReset(lbl_1_data_456, 0x40000002);
|
||||
BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002);
|
||||
|
|
@ -387,9 +400,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
arg0->rot.y = 16.666666f * arg0->rot.x;
|
||||
arg0->scale.x = BoardModelMotionMaxTimeGet(lbl_1_bss_C[7]);
|
||||
HuWinDispOff(lbl_1_data_454);
|
||||
BoardCameraMotionStartEx(-1, 0, 0, 1900.0f, -1.0f, 0x15);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 1900.0f, -1.0f, 21);
|
||||
return;
|
||||
}
|
||||
|
||||
MGSeqParamSet(arg1->unk_04, 1, arg1->unk2);
|
||||
arg1->unk3 = 60;
|
||||
}
|
||||
|
|
@ -397,8 +411,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
var_r26 = GWPlayer[arg1->unk00_bit5].port;
|
||||
var_r28 = 0;
|
||||
|
||||
if ((GWPlayer[arg1->unk00_bit5].com) != 0) {
|
||||
temp_r27 = BoardRandMod(100);
|
||||
|
||||
switch (GWPlayer[arg1->unk00_bit5].diff) {
|
||||
case 0:
|
||||
if (temp_r27 < 12) {
|
||||
|
|
@ -422,6 +438,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
} else {
|
||||
var_r28 = HuPadBtnDown[var_r26] & 0x100;
|
||||
}
|
||||
|
||||
if ((var_r28 & 0x100)) {
|
||||
arg0->trans.y += 0.5f;
|
||||
if (arg0->trans.y > 2.0f) {
|
||||
|
|
@ -444,19 +461,22 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((lbl_1_data_450 != -1) && (HuAudFXStatusGet(lbl_1_data_450) == 0)) {
|
||||
lbl_1_data_450 = -1;
|
||||
}
|
||||
|
||||
arg0->trans.x += arg0->trans.y;
|
||||
|
||||
if (arg0->trans.x > 3.0f) {
|
||||
arg0->trans.x = 3.0f;
|
||||
}
|
||||
|
||||
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, arg0->trans.x);
|
||||
BoardModelMotionSpeedSet(lbl_1_data_456, arg0->trans.x);
|
||||
}
|
||||
|
||||
s8 lbl_1_data_4B0 = -1;
|
||||
|
||||
s32 lbl_1_data_4B4[] = {
|
||||
0x00000440,
|
||||
0x00000441,
|
||||
|
|
@ -465,7 +485,6 @@ s32 lbl_1_data_4B4[] = {
|
|||
0x00000444
|
||||
};
|
||||
|
||||
|
||||
void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
|
||||
Point3d spC;
|
||||
f32 temp_f31;
|
||||
|
|
@ -474,6 +493,7 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
BoardModelPosGet(lbl_1_data_456, &spC);
|
||||
spC.y += 1.6666666f;
|
||||
|
||||
if (spC.y >= (arg0->trans.z + arg0->rot.y)) {
|
||||
spC.y = arg0->trans.z + arg0->rot.y;
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[10], 0.0f);
|
||||
|
|
@ -484,14 +504,17 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
|
|||
arg1->unk1 = 0x3C;
|
||||
arg1->unk2 = 0;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_456, &spC);
|
||||
temp_f30 = arg0->scale.x * ((spC.y - arg0->trans.z) / 500.0f);
|
||||
OSf32tos8(&temp_f30, &temp_r27);
|
||||
temp_r27 = temp_r27 / 30;
|
||||
|
||||
if (lbl_1_data_4B0 != temp_r27) {
|
||||
lbl_1_data_4B0 = temp_r27;
|
||||
HuAudFXPlay(lbl_1_data_4B4[temp_r27]);
|
||||
}
|
||||
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[7], temp_f30);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_C[10], 0.2f * temp_f30);
|
||||
BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30);
|
||||
|
|
@ -511,9 +534,12 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
|
|||
}
|
||||
BoardAudSeqFadeOut(1, 0x3E8);
|
||||
}
|
||||
|
||||
OSu8tof32(&arg1->unk2, &temp_f31);
|
||||
BoardModelPosGet(lbl_1_data_456, &sp8);
|
||||
|
||||
sp8.y = (sp8.y + (-0.08166666666666668 * temp_f31 * temp_f31));
|
||||
|
||||
if (sp8.y < arg0->trans.z) {
|
||||
sp8.y = arg0->trans.z;
|
||||
arg1->unk00_bit1 = 3;
|
||||
|
|
@ -527,6 +553,7 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
|
|||
HuAudFXPlay(0x449);
|
||||
BoardAudSeqPause(0, 0, 0x3E8);
|
||||
}
|
||||
|
||||
arg1->unk2 += 1;
|
||||
BoardModelPosSetV(lbl_1_data_456, &sp8);
|
||||
}
|
||||
|
|
@ -536,6 +563,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
|
|||
|
||||
BoardModelRotGet(lbl_1_data_456, &sp8);
|
||||
arg0->trans.y = BoardDAngleCalc(arg0->trans.y + arg0->trans.z);
|
||||
|
||||
if (arg0->trans.y <= 2.0f) {
|
||||
if (arg0->trans.y >= -2.0) {
|
||||
arg0->trans.x *= 0.5f;
|
||||
|
|
@ -547,6 +575,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0);
|
||||
BoardModelRotSetV(lbl_1_data_456, &sp8);
|
||||
}
|
||||
|
|
@ -559,6 +588,7 @@ void fn_1_91B8(void) {
|
|||
if (lbl_1_bss_14E == 0) {
|
||||
lbl_1_bss_14E = 1;
|
||||
}
|
||||
|
||||
temp_r3 = lbl_1_bss_14E / 6;
|
||||
lbl_1_bss_14C = lbl_1_data_4C8[temp_r3];
|
||||
}
|
||||
|
|
@ -576,6 +606,7 @@ void fn_1_9230(s32 arg0) {
|
|||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardCameraViewSet(1);
|
||||
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
|
|
@ -584,6 +615,7 @@ void fn_1_9230(s32 arg0) {
|
|||
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelRotYSet(lbl_1_bss_C[10], 0.0f);
|
||||
BoardCameraMotionWait();
|
||||
}
|
||||
|
|
@ -608,18 +640,24 @@ void fn_1_9474(s32 arg0) {
|
|||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardPlayerMotBlendSet(arg0, 0, 0xF);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_97F8(arg0);
|
||||
|
||||
while (lbl_1_bss_148) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U);
|
||||
HuPrcSleep(8);
|
||||
|
||||
while (BoardPlayerMotionEndCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardWinCreate(2, 0x160018U, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
|
@ -638,6 +676,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
s32 temp;
|
||||
|
||||
temp_r29 = OM_GET_WORK_PTR(arg0, unkTemp2);
|
||||
|
||||
if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
|
||||
fn_1_9A1C(temp_r29);
|
||||
HuMemDirectFree((void*)temp_r29->unk_0C);
|
||||
|
|
@ -645,6 +684,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
var_r30 = temp_r29->unk_0C;
|
||||
|
||||
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
|
||||
|
|
@ -657,6 +697,7 @@ void fn_1_95B8(omObjData* arg0) {
|
|||
temp_r29->unk00_bit0 = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
var_r25 = 0;
|
||||
for (i = 0; i < 20; i++) {
|
||||
var_r30 = &temp_r29->unk_0C[i];
|
||||
|
|
@ -704,6 +745,7 @@ void fn_1_97F8(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp8);
|
||||
temp_r30->unk8 = (80.0f + sp8.y);
|
||||
memset(temp_r30->unk_0C, 0, 0x190);
|
||||
|
||||
for (i = 0; i < lbl_1_bss_14C; i++) {
|
||||
if (i == 0) {
|
||||
var_f31 = 0.0f;
|
||||
|
|
@ -730,5 +772,3 @@ void fn_1_9A1C(unkTemp2* arg0) {
|
|||
BoardModelKill(temp->unk_02);
|
||||
}
|
||||
}
|
||||
|
||||
char mg_pad[] = "\0\0\0\0\0\0";
|
||||
|
|
@ -9,14 +9,15 @@
|
|||
#include "game/board/space.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/board/player.h"
|
||||
#include "math.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "dolphin/os/OSFastCast.h"
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
typedef struct someBits {
|
||||
/* 0x00 */ struct {
|
||||
|
|
@ -56,19 +57,11 @@ typedef struct w03UnkMG {
|
|||
} w03UnkMG;
|
||||
|
||||
//external symbols
|
||||
extern Process *boardMainProc;
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
extern Process *boardObjMan;
|
||||
|
||||
extern u16 HuPadBtnDown[4];
|
||||
|
||||
//function signatures
|
||||
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
|
||||
void BoardCameraQuakeSet(s32 duration, float strength);
|
||||
s16 MGSeqCreate(s32, ...);
|
||||
u8 MGSeqStatGet(s16);
|
||||
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
s16 Hu3DMotionShiftIDGet(s16 arg0);
|
||||
s32 frand(void);
|
||||
|
||||
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
|
|
@ -102,7 +95,7 @@ s32 fn_1_9CF4(s32 arg0);
|
|||
void fn_1_9F78(void);
|
||||
void fn_1_9FE4(void);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s16 lbl_1_data_4D8 = -1;
|
||||
s16 lbl_1_data_4DA = -1;
|
||||
s16 lbl_1_data_4DC = -1;
|
||||
|
|
@ -151,37 +144,46 @@ void fn_1_9AA0(void) {
|
|||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
|
||||
|
||||
while (lbl_1_bss_180 != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
void fn_1_9B30(void) {
|
||||
fn_1_BDAC();
|
||||
|
||||
if (lbl_1_bss_188) {
|
||||
lbl_1_bss_188;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_184) {
|
||||
OM_GET_WORK_PTR(lbl_1_bss_184, someBits2)->unk00_bit0 = 1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4E0 != -1) {
|
||||
HuAudFXStop(lbl_1_data_4E0);
|
||||
lbl_1_data_4E0 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4DC != -1) {
|
||||
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC);
|
||||
lbl_1_data_4DC = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4DA != -1) {
|
||||
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA);
|
||||
lbl_1_data_4DA = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_4D8 != -1) {
|
||||
HuWinKill(lbl_1_data_4D8);
|
||||
lbl_1_data_4D8 = -1;
|
||||
}
|
||||
lbl_1_bss_180 = 0U;
|
||||
|
||||
lbl_1_bss_180 = 0;
|
||||
}
|
||||
|
||||
void fn_1_9C8C(void) {
|
||||
|
|
@ -189,10 +191,12 @@ void fn_1_9C8C(void) {
|
|||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
lbl_1_data_4E0 = -1;
|
||||
|
||||
if (fn_1_9CF4(temp_r31) != 0) {
|
||||
fn_1_A44C(temp_r31);
|
||||
fn_1_A5E0(temp_r31);
|
||||
}
|
||||
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
|
|
@ -211,36 +215,45 @@ s32 fn_1_9CF4(s32 arg0) {
|
|||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardWinCreateChoice(2, 0x16001A, 2, 0);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
|
||||
if (BoardWinChoiceGet() != 0) {
|
||||
BoardWinCreate(2, 0x16001B, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
return 0;
|
||||
}
|
||||
|
||||
BoardWinKill();
|
||||
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 200.0f;
|
||||
sp14.z = 0.0f;
|
||||
sp8.x = -10.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
|
||||
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 21);
|
||||
spaceCur = GWPlayer[arg0].space_curr;
|
||||
temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardSpacePosGet(0, temp_r29, &sp38);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
PSVECNormalize(&sp20, &sp20);
|
||||
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793)));
|
||||
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)));
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
HuPrcSleep(0x3C);
|
||||
fn_1_B0A4(arg0);
|
||||
|
|
@ -269,26 +282,31 @@ void fn_1_9FE4(void) {
|
|||
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
|
||||
sp18.y = sp24.y;
|
||||
PSVECSubtract(&sp18, &sp24, &spC);
|
||||
temp_f30 = (atan2(spC.z, spC.x) / 3.141592653589793 * 180.0);
|
||||
temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0);
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], temp_f30);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[11], 2.0f);
|
||||
|
||||
spC.x /= 20.0f;
|
||||
spC.z /= 20.0f;
|
||||
spC.y = 0.0f;
|
||||
sp30 = sp24;
|
||||
var_f31 = 0.0f;
|
||||
|
||||
while (var_f31 < 20.0f) {
|
||||
PSVECAdd(&sp30, &spC, &sp30);
|
||||
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
|
||||
HuPrcVSleep();
|
||||
var_f31 += 1.0f;
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 1, 0x3E8);
|
||||
HuAudFXPlay(0x450);
|
||||
HuAudFXPlay(0x362);
|
||||
|
|
@ -296,23 +314,28 @@ void fn_1_9FE4(void) {
|
|||
fn_1_B8E8(1);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005);
|
||||
PSVECSubtract(&sp24, &sp30, &spC);
|
||||
|
||||
spC.x /= 60.0f;
|
||||
spC.z /= 60.0f;
|
||||
spC.y = 0.0f;
|
||||
var_f31 = 0.0f;
|
||||
|
||||
while (var_f31 < 60.0f) {
|
||||
PSVECAdd(&sp30, &spC, &sp30);
|
||||
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
|
||||
HuPrcVSleep();
|
||||
var_f31 += 1.0f;
|
||||
}
|
||||
|
||||
temp_f30 = 0.0f;
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
|
||||
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001);
|
||||
}
|
||||
|
||||
|
|
@ -323,34 +346,44 @@ void fn_1_A44C(s32 arg0) {
|
|||
|
||||
BoardMusStart(1, 0x17, 0x7F, 0);
|
||||
temp_r30 = MGSeqCreate(3, 0);
|
||||
|
||||
while (MGSeqStatGet(temp_r30) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
fn_1_A7A0(arg0);
|
||||
fn_1_A6B0();
|
||||
fn_1_ACD8(1);
|
||||
|
||||
while (fn_1_AE20() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
temp_r29 = fn_1_BBC4() + 0x80000;
|
||||
BoardWinCreate(2, 0x16001C, 2);
|
||||
BoardWinInsertMesSet(temp_r29, 0);
|
||||
BoardWinWait();
|
||||
fn_1_B8E8(4);
|
||||
|
||||
while (fn_1_BB48() != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
omVibrate(arg0, 0xC, 6, 6);
|
||||
BoardPlayerItemAdd(arg0, fn_1_BBC4());
|
||||
fn_1_ACD8(3);
|
||||
temp_r28 = HuAudSStreamPlay(2);
|
||||
|
||||
while (HuAudSStreamStatGet(temp_r28) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqPause(0, 0, 0x3E8);
|
||||
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
|
||||
while (lbl_1_bss_188) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
HuPrcSleep(0x1E);
|
||||
BoardWinCreate(2, 0x16001D, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -367,7 +400,7 @@ void fn_1_A5E0(s32 arg0) {
|
|||
BoardSpacePosGet(0, spaceCur, &sp8);
|
||||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardCameraViewSet(1);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -385,7 +418,7 @@ void fn_1_A6B0(void) {
|
|||
lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0);
|
||||
HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f);
|
||||
HuWinMesSpeedSet(lbl_1_data_4D8, 0);
|
||||
HuWinMesSet(lbl_1_data_4D8, 0x16001FU);
|
||||
HuWinMesSet(lbl_1_data_4D8, 0x16001F);
|
||||
}
|
||||
|
||||
void fn_1_A7A0(s32 arg0) {
|
||||
|
|
@ -414,12 +447,15 @@ void fn_1_A8AC(s32 arg0) {
|
|||
BoardModelPosGet(lbl_1_bss_C[9], &sp8);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
sp8.y = sp14.y;
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
playerYRot = BoardPlayerRotYGet(arg0) + 180.0f;
|
||||
BoardPlayerMotBlendSet(arg0, playerYRot, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, playerYRot, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -440,6 +476,7 @@ void fn_1_A994(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_r31->unk00_bit6 == 0) {
|
||||
if (temp_r31->unk2 != 0) {
|
||||
temp_r31->unk2--;
|
||||
|
|
@ -453,6 +490,7 @@ void fn_1_A994(omObjData* arg0) {
|
|||
temp_r31->unk2 = 0x3CU;
|
||||
}
|
||||
}
|
||||
|
||||
switch (temp_r31->unk00_bit1) {
|
||||
case 1:
|
||||
fn_1_AB18(arg0, temp_r31);
|
||||
|
|
@ -517,6 +555,7 @@ void fn_1_ACD8(s32 arg0) {
|
|||
|
||||
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
|
||||
temp_r31->unk00_bit1 = arg0;
|
||||
|
||||
switch (arg0) {
|
||||
case 0:
|
||||
BoardPlayerIdleSet(temp_r31->unk00_bit4);
|
||||
|
|
@ -553,6 +592,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
|
|||
temp_r29 = lbl_1_data_4E6[arg1[0]];
|
||||
temp_r28 = lbl_1_data_4E6[arg1[1]];
|
||||
temp_r30 = lbl_1_data_4E6[arg1[2]];
|
||||
|
||||
if (temp_r29 > temp_r28) {
|
||||
if (temp_r29 > temp_r30) {
|
||||
var_r31 = 0;
|
||||
|
|
@ -568,6 +608,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
|
|||
} else {
|
||||
var_r31 = 0;
|
||||
}
|
||||
|
||||
return var_r31;
|
||||
}
|
||||
|
||||
|
|
@ -579,6 +620,7 @@ u32 fn_1_AF24(s32 arg0) {
|
|||
s8 temp_r0_2;
|
||||
|
||||
spC = 0;
|
||||
|
||||
switch (GWPlayer[arg0].diff) {
|
||||
case 3:
|
||||
var_r30 = 0;
|
||||
|
|
@ -637,7 +679,7 @@ void fn_1_B0A4(s32 arg0) {
|
|||
temp_r30->unk00_bit1 = 0;
|
||||
temp_r30->unk00_bit4 = arg0;
|
||||
|
||||
for (i = 0; i < 3;) {
|
||||
for (i = 0; i < ARRAY_COUNT(spC);) {
|
||||
spC[i] = BoardRandMod(14);
|
||||
if ((spC[i] != 10) && (spC[i] != 13)) {
|
||||
for (j = 0; j < i; j++) {
|
||||
|
|
@ -656,19 +698,22 @@ void fn_1_B0A4(s32 arg0) {
|
|||
|
||||
fn_1_BBF8();
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(spC); i++) {
|
||||
temp_r29 = spC[i];
|
||||
temp_r30->unk3[i] = temp_r29;
|
||||
temp_r30->unk_06[i] = BoardModelCreate(lbl_1_data_514[temp_r29], NULL, 0);
|
||||
BoardModelHookSet(lbl_1_bss_C[9], lbl_1_data_508[i], temp_r30->unk_06[i]);
|
||||
BoardModelMotionSpeedSet(temp_r30->unk_06[i], 0.0f);
|
||||
if (temp_r29 == 0xB) {
|
||||
|
||||
if (temp_r29 == 11) {
|
||||
BoardModelMotionStart(temp_r30->unk_06[i], 0, 0x40000001);
|
||||
}
|
||||
|
||||
if (temp_r29 == 5) {
|
||||
PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f);
|
||||
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
|
||||
}
|
||||
|
||||
if ((temp_r29 == 6) || (temp_r29 == 7)) {
|
||||
PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f);
|
||||
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
|
||||
|
|
@ -681,6 +726,7 @@ void fn_1_B350(omObjData* arg0) {
|
|||
someBits2* temp_r31;
|
||||
|
||||
temp_r31 = (someBits2*)&arg0->work[0];
|
||||
|
||||
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
|
||||
BoardModelHookReset(lbl_1_bss_C[9]);
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
|
@ -779,7 +825,7 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) {
|
|||
BoardModelPosSetV(temp_r29, &sp8);
|
||||
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
|
||||
BoardModelScaleGet(temp_r29, &sp14);
|
||||
sp14.x = sp14.y = sp14.z = cos(3.141592653589793 * temp_f0 / 180.0);
|
||||
sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0);
|
||||
BoardModelScaleSetV(temp_r29, &sp14);
|
||||
arg1->unk1 += 4;
|
||||
return;
|
||||
|
|
@ -802,6 +848,7 @@ void fn_1_B8E8(s32 arg0) {
|
|||
|
||||
temp_r31 = (someBits2*)&lbl_1_bss_184->work[0];
|
||||
temp_r31->unk00_bit1 = arg0;
|
||||
|
||||
switch (arg0) {
|
||||
case 1:
|
||||
temp_f31 = 0.31666666f;
|
||||
|
|
@ -840,7 +887,7 @@ void fn_1_BB74(s8* arg0) {
|
|||
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(bits->unk3); i++) {
|
||||
arg0[i] = bits->unk3[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -861,7 +908,7 @@ void fn_1_BBF8(void) {
|
|||
void fn_1_BC7C(s16 arg0) {
|
||||
ParticleData* particle;
|
||||
|
||||
lbl_1_bss_190 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, 2));
|
||||
lbl_1_bss_190 = HuSprAnimReadFile(0x120000);
|
||||
HuSprAnimLock(lbl_1_bss_190);
|
||||
lbl_1_data_4E4 = Hu3DParticleCreate(lbl_1_bss_190, 100);
|
||||
Hu3DParticleHookSet(lbl_1_data_4E4, fn_1_BE30);
|
||||
|
|
@ -886,7 +933,6 @@ void fn_1_BDAC(void) {
|
|||
|
||||
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
Point3d sp8;
|
||||
|
||||
f32 temp_f30;
|
||||
f32 temp_f29;
|
||||
f32 temp_f31;
|
||||
|
|
@ -916,8 +962,8 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
|
|||
if (j != particle->unk_30) {
|
||||
temp_f30 = 360.0f * (0.003921569f * (frand() & 0xFF));
|
||||
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((3.141592653589793 * temp_f30) / 180.0)));
|
||||
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((3.141592653589793 * temp_f30) / 180.0)));
|
||||
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0)));
|
||||
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0)));
|
||||
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (frand() & 0xFF))))));
|
||||
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * (frand() & 0xFF))));
|
||||
|
|
@ -925,6 +971,7 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
|
|||
var_r31->unk2C = (15.0f * temp_f31);
|
||||
}
|
||||
}
|
||||
|
||||
var_r31 = particle->unk_48;
|
||||
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
|
|
|
|||
|
|
@ -4,17 +4,9 @@
|
|||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/hsfdraw.h"
|
||||
|
||||
double sin(double x);
|
||||
double cos(double x);
|
||||
double atan2(double y, double x);
|
||||
s16 BoardModelIDGet(s16 model);
|
||||
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
|
||||
|
||||
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
extern s16 boardPlayerMdl[4];
|
||||
|
||||
//BSS
|
||||
char lbl_1_bss_130[8];
|
||||
omObjData* lbl_1_bss_12C;
|
||||
s16 lbl_1_bss_128;
|
||||
|
|
@ -40,7 +32,7 @@ typedef struct unkWorkStruct {
|
|||
f32 unk_04;
|
||||
} unkWorkStruct;
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s32 lbl_1_data_368[] = {
|
||||
0x00000105, 0x00000145, 0x00000185,
|
||||
0x000001C5, 0x00000205, 0x00000245,
|
||||
|
|
@ -61,13 +53,15 @@ void fn_1_63F4(s32 arg0) {
|
|||
Vec spC;
|
||||
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
|
||||
work->unk_04 = 0.0f;
|
||||
work->unk_04 = 0.0f;
|
||||
|
||||
BoardModelPosGet(lbl_1_data_388, &spC);
|
||||
if (arg0 != 0) {
|
||||
spC.y = -185.0f;
|
||||
} else {
|
||||
spC.y = 10.0f;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_388, &spC);
|
||||
}
|
||||
|
||||
|
|
@ -82,11 +76,10 @@ void fn_1_6494(void) {
|
|||
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
|
||||
BoardModelHookSet(lbl_1_data_38A, "itemhook_R", lbl_1_data_38C);
|
||||
BoardModelHookSet(lbl_1_data_388, "hei01", lbl_1_data_38A);
|
||||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
|
||||
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
|
||||
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
|
||||
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp14);
|
||||
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
|
||||
|
|
@ -101,8 +94,8 @@ s32 fn_1_6698(void) {
|
|||
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
|
||||
BoardSpaceFlagPosGet(0, 0x200, &sp8);
|
||||
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
|
||||
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
|
||||
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
|
||||
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
|
||||
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -111,9 +104,11 @@ s16 fn_1_675C(void) {
|
|||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
|
||||
while ((u32) lbl_1_bss_120 != 0U) {
|
||||
|
||||
while (lbl_1_bss_120 != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
return lbl_1_bss_128;
|
||||
}
|
||||
|
|
@ -123,12 +118,14 @@ void fn_1_67F8(void) {
|
|||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
lbl_1_bss_128 = 0;
|
||||
|
||||
if (fn_1_6898(temp_r31) != 0) {
|
||||
fn_1_6F9C(temp_r31);
|
||||
fn_1_6B98(temp_r31);
|
||||
fn_1_735C(temp_r31);
|
||||
lbl_1_bss_128 = 1;
|
||||
}
|
||||
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraMotionWait();
|
||||
HuPrcEnd();
|
||||
|
|
@ -170,16 +167,19 @@ s32 fn_1_6898(s32 arg0) {
|
|||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20);
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / 3.141592653589793);
|
||||
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI);
|
||||
BoardCameraTargetModelSet(lbl_1_data_388);
|
||||
BoardPlayerMotBlendSet(arg0, temp_f31, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp_f31, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardCameraTargetModelSet(-1);
|
||||
BoardWinCreate(2, 0x160009, 2);
|
||||
BoardWinWait();
|
||||
temp_r3 = BoardPlayerCoinsGet(arg0);
|
||||
|
||||
if (temp_r3 < 5) {
|
||||
BoardWinCreate(2, 0x16000A, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -187,7 +187,7 @@ s32 fn_1_6898(s32 arg0) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
for (var_r27 = i = 0; i < 6; i++) {
|
||||
for (var_r27 = i = 0; i < ARRAY_COUNT(lbl_1_data_3B8); i++) {
|
||||
temp = lbl_1_data_3B8[i].x;
|
||||
temp2 = lbl_1_data_3B8[i].y;
|
||||
if (temp_r3 >= temp) {
|
||||
|
|
@ -197,17 +197,22 @@ s32 fn_1_6898(s32 arg0) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(lbl_1_bss_130, "%d", var_r27);
|
||||
|
||||
j = 0;
|
||||
while (j == 0) {
|
||||
BoardWinCreateChoice(2, 0x16000B, 2, 0);
|
||||
BoardWinInsertMesSet(lbl_1_bss_130, 2);
|
||||
BoardWinAttrSet(0x10);
|
||||
|
||||
if (GWPlayer[arg0].com != 0) {
|
||||
fn_1_77E4(arg0);
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
switch (BoardWinChoiceGet()) {
|
||||
case 0:
|
||||
j = 1;
|
||||
|
|
@ -222,11 +227,13 @@ s32 fn_1_6898(s32 arg0) {
|
|||
BoardViewMapExec(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < var_r27; i++) {
|
||||
BoardPlayerCoinsAdd(arg0, -1);
|
||||
HuAudFXPlay(0xE);
|
||||
HuPrcSleep(6);
|
||||
}
|
||||
|
||||
HuAudFXPlay(0xF);
|
||||
BoardWinCreate(2, 0x0016000C, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -250,17 +257,20 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0);
|
||||
sp8 = BoardModelRotYGet(lbl_1_data_38A);
|
||||
temp_f31 = sp8 + 180.0f;
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_38A, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelPosGet(lbl_1_data_388, &sp24);
|
||||
BoardSpaceFlagPosGet(0, 0x100, &sp30);
|
||||
sp18.x = sp30.x + (400.0 * sin(1.5707963267948966));
|
||||
sp18.z = sp30.z + (400.0 * cos(1.5707963267948966));
|
||||
sp18.x = sp30.x + (400.0 * sin(M_PI / 2));
|
||||
sp18.z = sp30.z + (400.0 * cos(M_PI / 2));
|
||||
sp18.y = sp24.y;
|
||||
PSVECSubtract(&sp18, &sp24, &spC);
|
||||
spC.x = spC.x / 120.0f;
|
||||
|
|
@ -269,17 +279,21 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardCameraTargetModelSet(lbl_1_data_388);
|
||||
BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U);
|
||||
HuPrcSleep(4);
|
||||
|
||||
var_r31 = 0;
|
||||
for (i = 0; i < 0x78U; i++) {
|
||||
PSVECAdd(&spC, &sp24, &sp24);
|
||||
temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A);
|
||||
|
||||
if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) {
|
||||
HuAudFXPlay(0x451);
|
||||
var_r31 = 1;
|
||||
}
|
||||
|
||||
if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) {
|
||||
var_r31 = 0;
|
||||
}
|
||||
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp24);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -289,18 +303,21 @@ void fn_1_6B98(s32 arg0) {
|
|||
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U);
|
||||
sp8 = BoardModelRotYGet(lbl_1_data_38A);
|
||||
temp_f31 = 0.0f;
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_38A, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U);
|
||||
}
|
||||
|
||||
extern s32 lbl_1_data_368[];
|
||||
extern w03State* lbl_1_bss_0;
|
||||
// extern w03State* lbl_1_bss_0;
|
||||
|
||||
void fn_1_6F9C(s32 arg0) {
|
||||
Vec sp20;
|
||||
|
|
@ -316,9 +333,11 @@ void fn_1_6F9C(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp14);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
|
||||
sp8.x /= 60.0f;
|
||||
sp8.z /= 60.0f;
|
||||
sp8.y = 0.0f;
|
||||
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = 10.0f;
|
||||
var_f29 = 0.21f;
|
||||
|
|
@ -327,16 +346,18 @@ void fn_1_6F9C(s32 arg0) {
|
|||
var_f30 = 0.0f;
|
||||
var_f29 = 0.15f;
|
||||
}
|
||||
|
||||
lbl_1_bss_124 = 1;
|
||||
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
|
||||
|
||||
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
|
||||
PSVECAdd(&sp14, &sp8, &sp14);
|
||||
sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31));
|
||||
if (sp14.y <= sp20.y) {
|
||||
sp14.y = sp20.y;
|
||||
if (var_r30 == 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
var_r30 = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -344,14 +365,16 @@ void fn_1_6F9C(s32 arg0) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
HuPrcSleep(10);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
if (GWPlayer[arg0].bowser_suit != 0) {
|
||||
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
|
||||
} else {
|
||||
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
|
||||
}
|
||||
|
||||
BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f);
|
||||
lbl_1_bss_124 = 0;
|
||||
}
|
||||
|
|
@ -378,7 +401,7 @@ void fn_1_735C(s32 arg0) {
|
|||
sp8.y = 0.0f;
|
||||
|
||||
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
|
||||
if (lbl_1_bss_0->unk0 != 0) {
|
||||
var_f30 = 0.25f;
|
||||
} else {
|
||||
|
|
@ -391,7 +414,7 @@ void fn_1_735C(s32 arg0) {
|
|||
if (sp14.y <= sp20.y && var_f31 > 48.0f) {
|
||||
sp14.y = sp20.y;
|
||||
if (var_r30 == 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
|
||||
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
|
||||
var_r30 = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -401,10 +424,12 @@ void fn_1_735C(s32 arg0) {
|
|||
|
||||
BoardPlayerPosSetV(arg0, &sp20);
|
||||
HuPrcSleep(0xA);
|
||||
BoardPlayerMotBlendSet(arg0, 0, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, 0, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
GWPlayer[arg0].space_curr = temp_r29;
|
||||
GWPlayer[arg0].space_prev = -1;
|
||||
|
|
@ -421,18 +446,20 @@ void fn_1_767C(omObjData* arg0) {
|
|||
unkWorkStruct* temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct);
|
||||
|
||||
if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) {
|
||||
lbl_1_bss_12C = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
|
||||
temp_r31->unk_04 += 3.0f;
|
||||
if (temp_r31->unk_04 >= 360.0f) {
|
||||
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
|
||||
}
|
||||
BoardModelPosGet(lbl_1_data_388, &sp8);
|
||||
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((3.141592653589793 * (f64) temp_r31->unk_04) / 180.0))));
|
||||
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0))));
|
||||
BoardModelPosSetV(lbl_1_data_388, &sp8);
|
||||
}
|
||||
}
|
||||
|
|
@ -442,14 +469,15 @@ void fn_1_77E4(s32 arg0) {
|
|||
s32 var_r30 = 0;
|
||||
|
||||
boardIndex = GWSystem.star_pos;
|
||||
|
||||
if ((boardIndex == 1) || (boardIndex == 2) || (boardIndex == 3) || (boardIndex == 4)) {
|
||||
var_r30 = 1;
|
||||
}
|
||||
|
||||
if (var_r30 != 0) {
|
||||
BoardComKeySetLeft();
|
||||
return;
|
||||
}
|
||||
|
||||
BoardComKeySetRight();
|
||||
}
|
||||
|
||||
char padRiver[] = "\0\0\0\0";
|
||||
|
|
|
|||
|
|
@ -30,16 +30,20 @@ void fn_1_785C(void) {
|
|||
|
||||
lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
|
||||
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0];
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r31->unk_00); i++) {
|
||||
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
|
||||
temp_r29 = kemuri_strings[i];
|
||||
|
||||
if (0.0f == temp_r31->unk_0C) {
|
||||
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
|
||||
}
|
||||
|
||||
var_f31 = temp_r31->unk_0C * BoardRandFloat();
|
||||
|
||||
if (var_f31 < 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
|
||||
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
|
||||
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
|
||||
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
|
||||
|
|
@ -63,14 +67,14 @@ void fn_1_79E0(omObjData* arg0) {
|
|||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_0->unk3 != 0) {
|
||||
var_r29 = 0;
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(temp_r30->unk_00); i++) {
|
||||
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
|
||||
}
|
||||
}
|
||||
|
||||
char pad[4] = "\0\0\0\0";
|
||||
|
|
@ -28,7 +28,7 @@ void fn_1_2A40(void);
|
|||
void fn_1_2B44(void);
|
||||
double atan2(double y, double x);
|
||||
|
||||
//DATA
|
||||
//data
|
||||
s16 lbl_1_data_280 = -1;
|
||||
s16 lbl_1_data_282 = -1;
|
||||
s16 lbl_1_data_284 = -1;
|
||||
|
|
@ -36,9 +36,7 @@ s16 lbl_1_data_286 = -1;
|
|||
s32 lbl_1_data_288 = -1;
|
||||
|
||||
//BSS Extern
|
||||
extern w03State* lbl_1_bss_0;
|
||||
extern Process *boardMainProc;
|
||||
extern s16 lbl_1_bss_C[14];
|
||||
|
||||
|
||||
//BSS
|
||||
s8 lbl_1_bss_6F;
|
||||
|
|
@ -62,6 +60,7 @@ void fn_1_12C8(void) {
|
|||
while (lbl_1_bss_28) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
|
|
@ -72,6 +71,7 @@ void fn_1_1358(void) {
|
|||
cur_player_index = GWSystem.player_curr;
|
||||
unkC = GWPlayer[cur_player_index].space_curr;
|
||||
lbl_1_bss_2C = 0;
|
||||
|
||||
if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) {
|
||||
lbl_1_bss_6E = 0;
|
||||
lbl_1_bss_6C = lbl_1_bss_C[3];
|
||||
|
|
@ -79,6 +79,7 @@ void fn_1_1358(void) {
|
|||
lbl_1_bss_6E = 1;
|
||||
lbl_1_bss_6C = lbl_1_bss_C[4];
|
||||
}
|
||||
|
||||
if (fn_1_1650(cur_player_index) != 0) {
|
||||
if (fn_1_1D1C() != 0) {
|
||||
fn_1_1ED4(cur_player_index);
|
||||
|
|
@ -98,6 +99,7 @@ void fn_1_1358(void) {
|
|||
fn_1_26E0(cur_player_index);
|
||||
BoardStatusShowSetAll(1);
|
||||
}
|
||||
|
||||
BoardPlayerPostTurnHookSet(cur_player_index, &fn_1_15E8);
|
||||
BoardWinKill();
|
||||
HuPrcEnd();
|
||||
|
|
@ -105,24 +107,29 @@ void fn_1_1358(void) {
|
|||
|
||||
void fn_1_152C(void) {
|
||||
BoardConfettiKill();
|
||||
|
||||
if (lbl_1_data_282 != -1) {
|
||||
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_282);
|
||||
lbl_1_data_282 = -1;
|
||||
}
|
||||
|
||||
if (lbl_1_data_280 != -1) {
|
||||
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_280);
|
||||
lbl_1_data_280 = -1;
|
||||
}
|
||||
|
||||
fn_1_2AC0();
|
||||
lbl_1_bss_28 = NULL;
|
||||
}
|
||||
|
||||
s32 fn_1_15E8(void) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_6C, 1);
|
||||
|
||||
if (lbl_1_data_284 != -1) {
|
||||
BoardModelKill(lbl_1_data_284);
|
||||
lbl_1_data_284 = -1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -148,7 +155,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
BoardSpacePosGet(0, temp2, &sp38);
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
temp = (atan2(-sp20.x, -sp20.z) / 3.141592653589793) * 180.0f;
|
||||
temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f;
|
||||
BoardPlayerRotYSet(arg0, temp);
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 100.0f;
|
||||
|
|
@ -156,7 +163,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
sp8.x = -20.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 0x15);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 21);
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x28);
|
||||
|
||||
while (GWPlayer[arg0].moving) {
|
||||
|
|
@ -175,6 +182,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
BoardWinWait();
|
||||
BoardWinCreateChoice(0, 0x160002, -1, 0);
|
||||
BoardWinAttrSet(0x10);
|
||||
|
||||
if (GWPlayer[arg0].com) {
|
||||
if (BoardRandMod(0x64) > 0x32U) {
|
||||
BoardComKeySetLeft();
|
||||
|
|
@ -182,6 +190,7 @@ s32 fn_1_1650(s32 arg0) {
|
|||
BoardComKeySetRight();
|
||||
}
|
||||
}
|
||||
|
||||
BoardWinWait();
|
||||
lbl_1_bss_6F = BoardWinChoiceGet();
|
||||
BoardWinKill();
|
||||
|
|
@ -205,26 +214,26 @@ s32 fn_1_1650(s32 arg0) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x62),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x62),
|
||||
s32 lbl_1_data_290[] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 98),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 98)
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x33),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x33),
|
||||
s32 lbl_1_data_2B0[] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 51),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 51)
|
||||
};
|
||||
|
||||
s32 lbl_1_data_2D0[] = {
|
||||
|
|
@ -247,6 +256,7 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
f32 temp;
|
||||
|
||||
temp_r30 = GWPlayer[arg0].character;
|
||||
|
||||
if (arg1 != 0) {
|
||||
lbl_1_data_282 = BoardPlayerMotionCreate(arg0, lbl_1_data_2B0[temp_r30]);
|
||||
lbl_1_bss_6A = 8;
|
||||
|
|
@ -257,12 +267,15 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
lbl_1_bss_68 = 1;
|
||||
var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character];
|
||||
}
|
||||
|
||||
lbl_1_data_280 = BoardPlayerMotionCreate(arg0, lbl_1_data_290[temp_r30]);
|
||||
temp = (180.0f + BoardPlayerRotYGet(arg0));
|
||||
BoardPlayerMotBlendSet(arg0, temp, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
HuAudFXPlay(var_r29);
|
||||
BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0);
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0);
|
||||
|
|
@ -272,7 +285,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
HuPrcVSleep();
|
||||
|
||||
}
|
||||
HuPrcSleep(0x3C);
|
||||
|
||||
HuPrcSleep(60);
|
||||
|
||||
if (arg1 != 0) {
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0);
|
||||
|
|
@ -281,16 +295,20 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
|
|||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
HuPrcSleep(0x14);
|
||||
temp = (180.0f + BoardPlayerRotYGet(arg0));
|
||||
BoardPlayerMotBlendSet(arg0, temp, 0xF);
|
||||
BoardPlayerMotBlendSet(arg0, temp, 15);
|
||||
|
||||
while (BoardPlayerMotBlendCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqPause(0, 1, 0x3E8);
|
||||
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0);
|
||||
HuPrcSleep(0xB);
|
||||
HuPrcSleep(11);
|
||||
|
||||
while (BoardPlayerMotionEndCheck(arg0) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -323,16 +341,20 @@ s32 fn_1_1D1C(void) {
|
|||
BoardWinCreate(2, 0x160003, 2);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
|
||||
prevTurn = GWSystem.turn - 1;
|
||||
maxTurn = GWSystem.max_turn;
|
||||
var_r31 = prevTurn / (maxTurn / 3);
|
||||
|
||||
if (var_r31 >= 3) {
|
||||
var_r31 = 2;
|
||||
}
|
||||
|
||||
modRand = BoardRandMod(100);
|
||||
if (modRand < sp8[var_r31] ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
modRand2 = BoardRandMod(100 - sp8[var_r31]);
|
||||
if (modRand2 < sp14[var_r31][0]) {
|
||||
lbl_1_bss_2C = 3;
|
||||
|
|
@ -341,6 +363,7 @@ s32 fn_1_1D1C(void) {
|
|||
} else {
|
||||
lbl_1_bss_2C = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -373,11 +396,13 @@ void fn_1_1ED4(s32 arg0) {
|
|||
while (BoardFilterFadePauseCheck() == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
while (BoardMusStatusGet(1) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
BoardWinCreate(2, 0x160004, 2);
|
||||
BoardWinWait();
|
||||
|
|
@ -401,10 +426,12 @@ void fn_1_20E0(s32 arg0) {
|
|||
BoardModelPosSetV(lbl_1_data_284, &spC);
|
||||
BoardFilterFadeOut(0x1E);
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
|
||||
|
||||
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
|
||||
BoardModelRotYSet(lbl_1_data_284, sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
omVibrate(arg0, 0xC, 4, 2);
|
||||
BoardModelRotYSet(lbl_1_data_284, 0.0f);
|
||||
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
|
||||
|
|
@ -426,26 +453,30 @@ void fn_1_20E0(s32 arg0) {
|
|||
if (lbl_1_bss_30 > 128.0f) {
|
||||
lbl_1_bss_30 = 128.0f;
|
||||
}
|
||||
HuPrcSleep(0x28);
|
||||
|
||||
HuPrcSleep(40);
|
||||
lbl_1_bss_30 = 128.0f;
|
||||
|
||||
while (lbl_1_bss_30 > 0.0f) {
|
||||
HuPrcVSleep();
|
||||
lbl_1_bss_30 -= 12.0f;
|
||||
}
|
||||
|
||||
if (lbl_1_bss_30 < 0.0f) {
|
||||
lbl_1_bss_30 = 0.0f;
|
||||
}
|
||||
|
||||
fn_1_2AC0();
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 0xD);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 680.0f, -1.0f, 13);
|
||||
BoardCameraMotionWait();
|
||||
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 0xD);
|
||||
BoardCameraMotionStartEx(-1, NULL, NULL, 1360.0f, -1.0f, 13);
|
||||
BoardCameraMotionWait();
|
||||
}
|
||||
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
||||
while (BoardMusStatusGet(1) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
|
@ -465,7 +496,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
sp18.x = -20.0f;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 0x3C);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 60);
|
||||
BoardCameraMotionWait();
|
||||
omVibrate(arg0, 0x1E, 6, 6);
|
||||
HuPrcSleep(0x1E);
|
||||
|
|
@ -476,6 +507,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
}
|
||||
|
||||
BoardCameraQuakeReset();
|
||||
|
||||
if (lbl_1_data_288 != 0) {
|
||||
HuAudFXStop(lbl_1_data_288);
|
||||
lbl_1_data_288 = -1;
|
||||
|
|
@ -492,7 +524,7 @@ void fn_1_20E0(s32 arg0) {
|
|||
sp18.x = -20.0f;
|
||||
sp18.y = 0.0f;
|
||||
sp18.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 0x3C);
|
||||
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 60);
|
||||
BoardCameraMotionWait();
|
||||
HuPrcSleep(0x3C);
|
||||
}
|
||||
|
|
@ -507,14 +539,16 @@ void fn_1_26E0(s32 arg0) {
|
|||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||
PSVECNormalize(&sp8, &sp8);
|
||||
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / 3.141592653589793));
|
||||
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI));
|
||||
BoardPlayerRotYSet(arg0, temp);
|
||||
BoardCameraViewSet(1);
|
||||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardPlayerPosLerpStart(arg0, &sp14, &sp20, 0x28);
|
||||
|
||||
while (GWPlayer[arg0].moving != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
|
||||
BoardCameraMotionWait();
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
|
|
@ -526,8 +560,9 @@ void fn_1_2818(void) {
|
|||
s16 j;
|
||||
s16 sp8[3] = {0x0002, 0x003E, 0x007A};
|
||||
|
||||
temp_r29 = (4 - lbl_1_bss_2C) * 0x3C;
|
||||
temp_r29 = (4 - lbl_1_bss_2C) * 60;
|
||||
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
|
||||
|
||||
while (1) {
|
||||
temp_r30 = BoardModelMotionTimeGet(lbl_1_bss_C[1]);
|
||||
if (temp_r29 > temp_r30) {
|
||||
|
|
@ -548,6 +583,7 @@ void fn_1_2818(void) {
|
|||
|
||||
s32 fn_1_2930(s32 arg0) {
|
||||
lbl_1_bss_0->unk0--;
|
||||
|
||||
if (lbl_1_bss_0->unk0 <= 0) {
|
||||
lbl_1_bss_0->unk2 = 0;
|
||||
lbl_1_bss_0->unk0 = 0;
|
||||
|
|
@ -558,6 +594,7 @@ s32 fn_1_2930(s32 arg0) {
|
|||
fn_1_CF4();
|
||||
return 1;
|
||||
}
|
||||
|
||||
sprintf(lbl_1_bss_38, "%d", lbl_1_bss_0->unk0);
|
||||
BoardWinCreate(0, 0x160007, -1);
|
||||
BoardWinInsertMesSet((s32)lbl_1_bss_38, 1);
|
||||
|
|
@ -579,6 +616,7 @@ void fn_1_2AC0(void) {
|
|||
HuMemDirectFree(lbl_1_bss_34);
|
||||
lbl_1_bss_34 = NULL;
|
||||
}
|
||||
|
||||
if (lbl_1_data_286 != -1) {
|
||||
Hu3DModelKill(lbl_1_data_286);
|
||||
lbl_1_data_286 = -1;
|
||||
|
|
@ -640,5 +678,3 @@ void fn_1_2B44(void) {
|
|||
GXPosition2f32(0.0f, 1.0f);
|
||||
GXSetChanMatColor(GX_COLOR0A0, sp1C);
|
||||
}
|
||||
|
||||
f32 const padStatue = 0.0f;
|
||||
|
|
|
|||
325
src/REL/w06Dll/main.c
Executable file
325
src/REL/w06Dll/main.c
Executable file
|
|
@ -0,0 +1,325 @@
|
|||
#include "REL/w06Dll.h"
|
||||
#include "REL/board_executor.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/object.h"
|
||||
#include "game/process.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/lottery.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/map_object.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/shop.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/star.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk00_field0 : 1;
|
||||
};
|
||||
s8 unk01[10];
|
||||
} Bss8Work;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk00;
|
||||
/* 0x04 */ Vec unk04;
|
||||
} Data108Struct; // Size 0x10
|
||||
|
||||
static void fn_1_730(void);
|
||||
static void fn_1_79C(void);
|
||||
static s32 fn_1_7BC(void);
|
||||
static s32 fn_1_900(void);
|
||||
static s32 fn_1_984(void);
|
||||
static void fn_1_9C0(void);
|
||||
static void fn_1_B28(void);
|
||||
static void fn_1_B5C(omObjData *arg0);
|
||||
|
||||
s16 lbl_1_bss_C[MAPOBJ_MAX];
|
||||
|
||||
static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
|
||||
{ { 450.0f, 200.0f, -2950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 6) },
|
||||
{ { -1650.0f, 0.0f, 2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 8) },
|
||||
{ { 2700.0f, 100.0f, -1950.0f }, { 0.0f, -89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
|
||||
{ { -3000.0f, 0.0f, 2550.0f }, { 0.0f, 89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
|
||||
{ { -1800.0f, 0.0f, 2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) },
|
||||
{ { 300.0f, 200.0f, -2850.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) }
|
||||
};
|
||||
|
||||
static omObjData *lbl_1_bss_8;
|
||||
static s32 lbl_1_bss_4;
|
||||
void *lbl_1_bss_0;
|
||||
|
||||
static s16 lbl_1_data_F0 = -1;
|
||||
static s16 lbl_1_data_F2 = -1;
|
||||
static s16 lbl_1_data_F4 = -1;
|
||||
static s16 lbl_1_data_F6 = -1;
|
||||
|
||||
static s32 lbl_1_data_F8[] = {
|
||||
DATA_MAKE_NUM(DATADIR_W06, 18),
|
||||
-1
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_100[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BGUEST, 34),
|
||||
-1
|
||||
};
|
||||
|
||||
static Data108Struct lbl_1_data_108[] = {
|
||||
0x00000002, { -3359.9998f, 170.0f, -3559.9998f },
|
||||
0x0000002A, { 3540.0002f, 170.0f, 1320.0f },
|
||||
0x00000052, { -710.0f, 170.0f, -4580.0f },
|
||||
0x0000007A, { -3670.0f, 170.0f, 1020.0f },
|
||||
0x000000A2, { 1970.0001f, 170.0f, -3840.0002f },
|
||||
0x000000CA, { -3160.0f, 170.0f, -3770.0f },
|
||||
0x000000F2, { -3500.0f, 170.0f, -2340.0f },
|
||||
0x0000011A, { -3700.0f, 170.0f, -810.00005f },
|
||||
0x00000142, { 100.0f, 170.0f, -4100.0f },
|
||||
0x0000016A, { 3290.0002f, 170.0f, -340.0f }
|
||||
};
|
||||
|
||||
void BoardCreate(void) {
|
||||
BoardMapObject *temp_r30;
|
||||
s32 *var_r29;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_0 = GWSystem.board_data;
|
||||
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W06, 0));
|
||||
lbl_1_data_F0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 1), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_F0, -1.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F0, 0, 0x40000001);
|
||||
lbl_1_data_F2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 2), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_F2, -1.0f);
|
||||
BoardModelPosSet(lbl_1_data_F2, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F2, 0, 0x40000001);
|
||||
lbl_1_data_F4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 17), lbl_1_data_F8, 0);
|
||||
BoardModelPosSet(lbl_1_data_F4, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F4, 1, 0x40000001);
|
||||
lbl_1_data_F6 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 33), lbl_1_data_100, 0);
|
||||
BoardModelPosSet(lbl_1_data_F6, 0.0f, 0.0f, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_data_F6, 1, 0x40000001);
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &lbl_1_data_0[i];
|
||||
if (temp_r30->data_num != -1) {
|
||||
if (i == 4 || i == 5) {
|
||||
var_r29 = lbl_1_data_100;
|
||||
} else {
|
||||
var_r29 = NULL;
|
||||
}
|
||||
lbl_1_bss_C[i] = BoardModelCreate(temp_r30->data_num, var_r29, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
|
||||
}
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_C[4], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[5], 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[2], 0.0f);
|
||||
BoardModelLayerSet(lbl_1_bss_C[2], 1);
|
||||
BoardModelMotionStart(lbl_1_bss_C[3], 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[3], 0.0f);
|
||||
BoardModelLayerSet(lbl_1_bss_C[3], 1);
|
||||
fn_1_D70();
|
||||
fn_1_4878();
|
||||
fn_1_7BB0();
|
||||
fn_1_8F20();
|
||||
BoardLightHookSet(fn_1_730, fn_1_79C);
|
||||
BoardSpaceWalkEventFuncSet(fn_1_7BC);
|
||||
BoardSpaceWalkMiniEventFuncSet(fn_1_900);
|
||||
BoardSpaceLandEventFuncSet(fn_1_984);
|
||||
BoardStarHostSet(lbl_1_data_F4);
|
||||
BoardBooHouseHostSet(lbl_1_data_F6);
|
||||
BoardLotteryHostSet(lbl_1_data_F6);
|
||||
BoardShopHostSet(lbl_1_data_F6);
|
||||
BoardJunctionMaskSet(0x3000);
|
||||
boardTurnFunc = fn_1_C2B4;
|
||||
boardStarShowNextHook = fn_1_CD0C;
|
||||
boardTurnStartFunc = fn_1_9294;
|
||||
boardStarGiveHook = fn_1_CC90;
|
||||
boardBowserHook = fn_1_C108;
|
||||
fn_1_9C0();
|
||||
}
|
||||
|
||||
void BoardDestroy(void) {
|
||||
s32 i;
|
||||
|
||||
fn_1_B28();
|
||||
boardTurnFunc
|
||||
= (void*) boardStarShowNextHook
|
||||
= (void*) boardTurnStartFunc
|
||||
= (void*) boardStarGiveHook
|
||||
= (void*) boardBowserHook = NULL;
|
||||
fn_1_91D8();
|
||||
fn_1_7F3C();
|
||||
fn_1_F6C();
|
||||
fn_1_4A10();
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
BoardModelKill(lbl_1_bss_C[i]);
|
||||
lbl_1_bss_C[i] = -1;
|
||||
}
|
||||
if (lbl_1_data_F6 != -1) {
|
||||
BoardModelKill(lbl_1_data_F6);
|
||||
lbl_1_data_F6 = -1;
|
||||
}
|
||||
if (lbl_1_data_F4 != -1) {
|
||||
BoardModelKill(lbl_1_data_F4);
|
||||
lbl_1_data_F4 = -1;
|
||||
}
|
||||
if (lbl_1_data_F0 != -1) {
|
||||
BoardModelKill(lbl_1_data_F0);
|
||||
lbl_1_data_F0 = -1;
|
||||
}
|
||||
if (lbl_1_data_F2 != -1) {
|
||||
BoardModelKill(lbl_1_data_F2);
|
||||
lbl_1_data_F2 = -1;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_730(void) {
|
||||
s16 var_r31;
|
||||
|
||||
var_r31 = BoardModelIDGet(lbl_1_data_F0);
|
||||
Hu3DModelLightInfoSet(var_r31, 1);
|
||||
Hu3DFogSet(4200.0f, 30000.0f, 0xF8, 0x30, 0);
|
||||
}
|
||||
|
||||
static void fn_1_79C(void) {
|
||||
Hu3DFogClear();
|
||||
}
|
||||
|
||||
static s32 fn_1_7BC(void) {
|
||||
s32 sp10[] = { 0, 1 };
|
||||
s32 sp8[] = { 0x300, 0xC0 };
|
||||
BoardSpace *temp_r31;
|
||||
s16 temp_r28;
|
||||
s32 temp_r27;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
temp_r27 = GWSystem.player_curr;
|
||||
temp_r28 = GWPlayer[temp_r27].space_curr;
|
||||
if (fn_1_92D8(temp_r27, temp_r28) != 0) {
|
||||
return 1;
|
||||
}
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (BoardSpaceLinkFlagSearch(0, temp_r28, sp8[i]) == -1) {
|
||||
continue;
|
||||
}
|
||||
temp_r31 = BoardSpaceGet(0, temp_r28);
|
||||
for (j = 0; j < temp_r31->link_cnt; j++) {
|
||||
if ((BoardSpaceFlagGet(0, temp_r31->link[j]) & 0x04000000) == 0) {
|
||||
fn_1_8264(sp10[i], temp_r31->link[j]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 fn_1_900(void) {
|
||||
s16 var_r30;
|
||||
s32 temp_r31;
|
||||
|
||||
var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
|
||||
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
|
||||
if (temp_r31 == 0x200000) {
|
||||
fn_1_1054(); // TODO: return?
|
||||
} else if (temp_r31 == 0x400000) {
|
||||
fn_1_4A60(); // TODO: return?
|
||||
}
|
||||
}
|
||||
|
||||
static s32 fn_1_984(void) {
|
||||
if (BoardPlayerSizeGet(GWSystem.player_curr) != 2) {
|
||||
fn_1_6EF0(); // TODO: return?
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_9C0(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
omObjData *temp_r3;
|
||||
Bss8Work *temp_r30;
|
||||
s32 i;
|
||||
|
||||
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B5C);
|
||||
lbl_1_bss_8 = temp_r3;
|
||||
temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss8Work);
|
||||
temp_r30->unk00_field0 = 0;
|
||||
BoardCameraPosGet(&sp14);
|
||||
BoardCameraDirGet(&sp8);
|
||||
HuAudFXListnerSetEX(&sp14, &sp8, 6600.0f, 36000.0f, 0.0f, 1650.0f, 1650.0f);
|
||||
for (i = 0; i < 10; i++) {
|
||||
temp_r30->unk01[i] = 0;
|
||||
}
|
||||
if (!_CheckFlag(FLAG_ID_MAKE(1, 16))) {
|
||||
if (lbl_1_bss_4 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
lbl_1_bss_4 = 1;
|
||||
}
|
||||
} else if (lbl_1_bss_4 != 0) {
|
||||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_B28(void) {
|
||||
if (lbl_1_bss_8) {
|
||||
OM_GET_WORK_PTR(lbl_1_bss_8, Bss8Work)->unk00_field0 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_B5C(omObjData *arg0) {
|
||||
Bss8Work *temp_r30;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s16 temp_r28;
|
||||
s16 var_r29;
|
||||
s16 i;
|
||||
|
||||
temp_r30 = OM_GET_WORK_PTR(arg0, Bss8Work);
|
||||
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
|
||||
HuAudFXListnerKill();
|
||||
lbl_1_bss_8 = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
temp_r28 = BoardModelMotionTimeGet(lbl_1_data_F0);
|
||||
BoardCameraDirGet(&sp8);
|
||||
BoardCameraTargetGet(&sp14);
|
||||
sp14.y += 2000.0f;
|
||||
if (!_CheckFlag(FLAG_ID_MAKE(1, 16))) {
|
||||
if (lbl_1_bss_4 == 0) {
|
||||
HuAudFXPauseAll(1);
|
||||
lbl_1_bss_4 = 1;
|
||||
}
|
||||
} else if (lbl_1_bss_4 != 0) {
|
||||
HuAudFXPauseAll(0);
|
||||
lbl_1_bss_4 = 0;
|
||||
}
|
||||
if (!_CheckFlag(FLAG_ID_MAKE(1, 28))) {
|
||||
for (var_r29 = i = 0; i < 10; i++) {
|
||||
if (temp_r30->unk01[i] != 0) {
|
||||
var_r29++;
|
||||
} else if (temp_r28 == lbl_1_data_108[i].unk00) {
|
||||
HuAudFXEmiterPlay(0x4A1, &lbl_1_data_108[i].unk04);
|
||||
temp_r30->unk01[i] = 1;
|
||||
goto block_20;
|
||||
}
|
||||
}
|
||||
if (var_r29 < 10) {
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < 10; i++) {
|
||||
temp_r30->unk01[i] = 0;
|
||||
}
|
||||
}
|
||||
block_20:
|
||||
HuAudFXListnerUpdate(&sp14, &sp8);
|
||||
}
|
||||
757
src/REL/w06Dll/mg_coin.c
Executable file
757
src/REL/w06Dll/mg_coin.c
Executable file
|
|
@ -0,0 +1,757 @@
|
|||
#include "REL/w06Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/data.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/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
#include "game/board/com.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/space.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "math.h"
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk00_field0 : 1;
|
||||
u8 unk00_field1 : 4;
|
||||
u8 unk00_field2 : 1;
|
||||
};
|
||||
u8 unk01;
|
||||
u8 unk02;
|
||||
char unk03[1];
|
||||
s16 unk04;
|
||||
} Bss4CWork;
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk00_field0 : 1;
|
||||
u8 unk00_field1 : 2;
|
||||
u8 unk00_field2 : 4;
|
||||
};
|
||||
u8 unk01;
|
||||
s16 unk02;
|
||||
s16 unk04;
|
||||
} Bss50Work;
|
||||
|
||||
// Seems to be the same struct used in w03Dll/mg_coin (unkTemp)
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 unk00;
|
||||
/* 0x01 */ u8 unk01;
|
||||
/* 0x02 */ s16 unk02;
|
||||
/* 0x04 */ float unk04;
|
||||
/* 0x08 */ Vec unk08;
|
||||
} Bss54WorkData; // Size 0x14
|
||||
|
||||
// Seems to be the same struct used in w03Dll/mg_coin (unkTemp2)
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk00_field0 : 1;
|
||||
};
|
||||
char unk01[3];
|
||||
s8 unk04;
|
||||
char unk05[3];
|
||||
float unk08;
|
||||
Bss54WorkData *unk0C;
|
||||
} Bss54Work;
|
||||
|
||||
static void fn_1_4B00(void);
|
||||
static void fn_1_4BA0(void);
|
||||
static s32 fn_1_4BF8(s32 arg0);
|
||||
static void fn_1_4FB8(s32 arg0);
|
||||
static void fn_1_519C(s32 arg0);
|
||||
static void fn_1_53A0(void);
|
||||
static void fn_1_5490(s32 arg0);
|
||||
static void fn_1_56CC(omObjData *arg0);
|
||||
static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1);
|
||||
static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1);
|
||||
static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1);
|
||||
static void fn_1_5968(Vec *arg0);
|
||||
static void fn_1_59D0(s32 arg0);
|
||||
static s32 fn_1_5B0C(void);
|
||||
static void fn_1_5B54(s32 arg0);
|
||||
static void fn_1_5CE4(s32 arg0);
|
||||
static s32 fn_1_5EBC(void);
|
||||
static void fn_1_5EFC(Vec *arg0);
|
||||
static void fn_1_5F58(s32 arg0, u32 *arg1);
|
||||
static void fn_1_606C(omObjData *arg0);
|
||||
static void fn_1_6A0C(omObjData *arg0);
|
||||
static void fn_1_6C4C(s32 arg0);
|
||||
static void fn_1_6E90(Bss54Work *arg0);
|
||||
|
||||
static s32 lbl_1_bss_8C;
|
||||
static char lbl_1_bss_5B[49];
|
||||
static s8 lbl_1_bss_5A;
|
||||
static s8 lbl_1_bss_59;
|
||||
static s8 lbl_1_bss_58;
|
||||
static omObjData *lbl_1_bss_54;
|
||||
static omObjData *lbl_1_bss_50;
|
||||
static omObjData *lbl_1_bss_4C;
|
||||
static Process *lbl_1_bss_48;
|
||||
|
||||
static const u8 lbl_1_rodata_F0[] = {
|
||||
20, 15, 10, 5, 1
|
||||
};
|
||||
|
||||
static const u8 lbl_1_rodata_F5[] = {
|
||||
10, 7, 5, 3, 0, 0, 0
|
||||
};
|
||||
|
||||
static s16 lbl_1_data_1D8 = -1;
|
||||
static s16 lbl_1_data_1DA = -1;
|
||||
static s16 lbl_1_data_1DC = -1;
|
||||
|
||||
void fn_1_4878(void) {
|
||||
Vec sp8;
|
||||
float temp_f31;
|
||||
|
||||
lbl_1_data_1DC = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 7), NULL, 0);
|
||||
temp_f31 = 0.3f;
|
||||
BoardModelPosGet(lbl_1_bss_C[0], &sp8);
|
||||
sp8.x += 115.0 * sin(M_PI);
|
||||
sp8.z += 115.0 * cos(M_PI);
|
||||
sp8.x -= 225.0f;
|
||||
BoardModelPosSetV(lbl_1_data_1DC, &sp8);
|
||||
BoardModelRotYSet(lbl_1_data_1DC, 90.0f);
|
||||
BoardModelScaleSet(lbl_1_data_1DC, temp_f31, temp_f31, temp_f31);
|
||||
BoardModelMotionStart(lbl_1_data_1DC, 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_data_1DC, 0.0f);
|
||||
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[0], 0.0f);
|
||||
}
|
||||
|
||||
void fn_1_4A10(void) {
|
||||
if (lbl_1_data_1DC != -1) {
|
||||
BoardModelKill(lbl_1_data_1DC);
|
||||
lbl_1_data_1DC = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_4A60(void) {
|
||||
lbl_1_bss_8C = 0;
|
||||
BoardDiceDigit2DShowSet(0);
|
||||
lbl_1_bss_48 = HuPrcChildCreate(fn_1_4BA0, 0x2003, 0x3800, 0, boardMainProc);
|
||||
HuPrcDestructorSet2(lbl_1_bss_48, fn_1_4B00);
|
||||
while (lbl_1_bss_48) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardDiceDigit2DShowSet(1);
|
||||
}
|
||||
|
||||
static void fn_1_4B00(void) {
|
||||
if (lbl_1_data_1DA != -1) {
|
||||
BoardModelMotionKill(lbl_1_bss_C[5], lbl_1_data_1DA);
|
||||
lbl_1_data_1DA = -1;
|
||||
}
|
||||
if (lbl_1_data_1D8 != -1) {
|
||||
HuWinKill(lbl_1_data_1D8);
|
||||
lbl_1_data_1D8 = -1;
|
||||
}
|
||||
lbl_1_bss_48 = NULL;
|
||||
}
|
||||
|
||||
static void fn_1_4BA0(void) {
|
||||
s32 temp_r31;
|
||||
|
||||
temp_r31 = GWSystem.player_curr;
|
||||
if (fn_1_4BF8(temp_r31) != 0) {
|
||||
fn_1_4FB8(temp_r31);
|
||||
}
|
||||
fn_1_519C(temp_r31);
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
static s32 fn_1_4BF8(s32 arg0) {
|
||||
Vec sp38;
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
BoardWinCreateChoice(2, MAKE_MESSID(48, 26), 6, 0);
|
||||
if (GWPlayer[arg0].com) {
|
||||
BoardComKeySetLeft();
|
||||
}
|
||||
BoardWinWait();
|
||||
if (BoardWinChoiceGet() != 0) {
|
||||
BoardWinCreate(2, MAKE_MESSID(48, 27), 6);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
lbl_1_bss_8C = 1;
|
||||
return 0;
|
||||
}
|
||||
BoardWinKill();
|
||||
sp14.x = 0.0f;
|
||||
sp14.y = 120.0f;
|
||||
sp14.z = 0.0f;
|
||||
sp8.x = -32.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = 0.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_C[0], &sp8, &sp14, 1330.0f, -1.0f, 21);
|
||||
lbl_1_data_1DA = BoardModelMotionCreate(lbl_1_bss_C[5], DATA_MAKE_NUM(DATADIR_W06, 22));
|
||||
BoardCameraMotionWait();
|
||||
BoardPlayerPosGet(arg0, &sp2C);
|
||||
BoardModelPosGet(lbl_1_bss_C[0], &sp38);
|
||||
sp38.x += 115.0 * sin(M_PI);
|
||||
sp38.z += 115.0 * cos(M_PI);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
PSVECNormalize(&sp20, &sp20);
|
||||
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI));
|
||||
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 40);
|
||||
BoardModelPosGet(lbl_1_bss_C[5], &sp2C);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f);
|
||||
while (GWPlayer[arg0].moving) {
|
||||
BoardPlayerPosGet(arg0, &sp38);
|
||||
PSVECSubtract(&sp38, &sp2C, &sp20);
|
||||
BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp20.x, sp20.z) / M_PI));
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001);
|
||||
BoardPlayerIdleSet(arg0);
|
||||
BoardPlayerRotYSet(arg0, -90.0f);
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
HuPrcSleep(60);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void fn_1_4FB8(s32 arg0) {
|
||||
s16 temp_r30;
|
||||
|
||||
BoardMusStart(1, 0x27, 0x7F, 0);
|
||||
temp_r30 = MGSeqCreate(3, 0);
|
||||
while (MGSeqStatGet(temp_r30) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
fn_1_53A0();
|
||||
fn_1_5490(arg0);
|
||||
fn_1_5B54(arg0);
|
||||
while (TRUE) {
|
||||
if (fn_1_5EBC() == 4 && fn_1_5B0C() == 4) {
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuWinDispOff(lbl_1_data_1D8);
|
||||
BoardAudSeqFadeOut(1, 1000);
|
||||
HuPrcSleep(30);
|
||||
lbl_1_bss_58 = lbl_1_rodata_F0[lbl_1_bss_5A - 1];
|
||||
sprintf(lbl_1_bss_5B, "%d", lbl_1_bss_58);
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
BoardWinCreate(2, MAKE_MESSID(48, 28), 6);
|
||||
BoardWinInsertMesSet(MAKE_MESSID_PTR(lbl_1_bss_5B), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
fn_1_6C4C(arg0);
|
||||
while (lbl_1_bss_54) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0);
|
||||
HuPrcSleep(8);
|
||||
while (!BoardPlayerMotionEndCheck(arg0)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardWinCreate(2, MAKE_MESSID(48, 29), 6);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
}
|
||||
|
||||
static void fn_1_519C(s32 arg0) {
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s16 temp_r30;
|
||||
|
||||
if (lbl_1_bss_8C == 0) {
|
||||
temp_r30 = GWPlayer[arg0].space_curr;
|
||||
BoardPlayerPosGet(arg0, &sp20);
|
||||
BoardSpacePosGet(0, temp_r30, &sp14);
|
||||
}
|
||||
BoardCameraTargetPlayerSet(arg0);
|
||||
BoardCameraViewSet(1);
|
||||
if (lbl_1_bss_8C == 0) {
|
||||
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 40);
|
||||
BoardModelPosGet(lbl_1_bss_C[5], &sp20);
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001);
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f);
|
||||
while (GWPlayer[arg0].moving) {
|
||||
BoardPlayerPosGet(arg0, &sp14);
|
||||
PSVECSubtract(&sp14, &sp20, &sp8);
|
||||
BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp8.x, sp8.z) / M_PI));
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001);
|
||||
}
|
||||
BoardModelRotYSet(lbl_1_bss_C[5], 0.0f);
|
||||
BoardCameraMotionWait();
|
||||
fn_1_59D0(5);
|
||||
fn_1_5CE4(5);
|
||||
}
|
||||
|
||||
static void fn_1_53A0(void) {
|
||||
float sp8[2];
|
||||
float var_f31;
|
||||
float var_f30;
|
||||
|
||||
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(48, 30));
|
||||
var_f31 = -10000.0f;
|
||||
var_f30 = 328.0f;
|
||||
lbl_1_data_1D8 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0);
|
||||
HuWinBGTPLvlSet(lbl_1_data_1D8, 0.0f);
|
||||
HuWinMesSpeedSet(lbl_1_data_1D8, 0);
|
||||
HuWinMesSet(lbl_1_data_1D8, MAKE_MESSID(48, 30));
|
||||
}
|
||||
|
||||
static void fn_1_5490(s32 arg0) {
|
||||
Vec sp3C;
|
||||
Vec sp30;
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
float temp_f31;
|
||||
omObjData *temp_r3;
|
||||
Bss4CWork *temp_r31;
|
||||
s32 spC[] = {
|
||||
DATA_MAKE_NUM(DATADIR_W06, 28),
|
||||
DATA_MAKE_NUM(DATADIR_W06, 29),
|
||||
-1
|
||||
};
|
||||
|
||||
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_56CC);
|
||||
lbl_1_bss_4C = temp_r3;
|
||||
temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss4CWork);
|
||||
temp_r31->unk00_field0 = 0;
|
||||
temp_r31->unk02 = 0;
|
||||
temp_r31->unk00_field2 = 0;
|
||||
temp_r31->unk00_field1 = 2;
|
||||
BoardModelPosGet(lbl_1_data_1DC, &sp3C);
|
||||
sp3C.x += 50.0f;
|
||||
BoardPlayerPosGet(arg0, &sp30);
|
||||
sp30.x -= 10.0f;
|
||||
PSVECSubtract(&sp30, &sp3C, &sp24);
|
||||
PSVECNormalize(&sp24, &sp18);
|
||||
temp_r3->trans.x = sp24.x / 60.0f;
|
||||
temp_r3->trans.y = sp24.y / 60.0f;
|
||||
temp_r3->trans.z = sp24.z / 60.0f;
|
||||
temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 27), spC, 0);
|
||||
temp_f31 = 0.3f;
|
||||
BoardModelPosSetV(temp_r31->unk04, &sp3C);
|
||||
BoardModelScaleSet(temp_r31->unk04, temp_f31, temp_f31, temp_f31);
|
||||
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||
BoardModelRotYSet(temp_r31->unk04, 180.0 * (atan2(sp18.x, sp18.z) / M_PI));
|
||||
BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001);
|
||||
BoardModelMotionStart(lbl_1_data_1DC, 0, 0);
|
||||
}
|
||||
|
||||
static void fn_1_56CC(omObjData *arg0) {
|
||||
Bss4CWork *temp_r31;
|
||||
|
||||
temp_r31 = OM_GET_WORK_PTR(arg0, Bss4CWork);
|
||||
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
|
||||
BoardModelKill(temp_r31->unk04);
|
||||
lbl_1_bss_4C = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
if (temp_r31->unk02 != 0) {
|
||||
temp_r31->unk02--;
|
||||
return;
|
||||
}
|
||||
switch (temp_r31->unk00_field1) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
fn_1_57DC(arg0, temp_r31);
|
||||
break;
|
||||
case 4:
|
||||
fn_1_58FC(arg0, temp_r31);
|
||||
break;
|
||||
case 2:
|
||||
fn_1_587C(arg0, temp_r31);
|
||||
break;
|
||||
case 5:
|
||||
temp_r31->unk00_field0 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1) {
|
||||
Vec sp8;
|
||||
|
||||
if (arg1->unk01 == 0) {
|
||||
fn_1_59D0(3);
|
||||
return;
|
||||
}
|
||||
BoardModelPosGet(arg1->unk04, &sp8);
|
||||
sp8.x += arg0->trans.x;
|
||||
sp8.y += arg0->trans.y;
|
||||
sp8.z += arg0->trans.z;
|
||||
BoardModelPosSetV(arg1->unk04, &sp8);
|
||||
arg1->unk01--;
|
||||
}
|
||||
|
||||
static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1) {
|
||||
if (BoardModelMotionTimeGet(lbl_1_data_1DC) < 32.0f) {
|
||||
return;
|
||||
}
|
||||
arg1->unk00_field1 = 1;
|
||||
arg1->unk01 = 60;
|
||||
HuAudFXPlayVolPan(0x49E, 0x7F, 0x20);
|
||||
BoardModelVisibilitySet(arg1->unk04, 1);
|
||||
}
|
||||
|
||||
static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1) {
|
||||
if (arg1->unk00_field2 == 0) {
|
||||
HuAudFXPlay(0x49F);
|
||||
arg1->unk00_field2 = 1;
|
||||
}
|
||||
if (BoardModelMotionEndCheck(arg1->unk04)) {
|
||||
fn_1_59D0(0);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_5968(Vec *arg0) {
|
||||
Bss4CWork *temp_r31;
|
||||
|
||||
if (lbl_1_bss_4C && arg0) {
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
|
||||
BoardModelPosGet(temp_r31->unk04, arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_59D0(s32 arg0) {
|
||||
Bss4CWork *temp_r31;
|
||||
|
||||
if (!lbl_1_bss_4C) {
|
||||
return;
|
||||
}
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
|
||||
temp_r31->unk00_field1 = arg0;
|
||||
if (arg0 == 1) {
|
||||
lbl_1_bss_4C->trans.x = 0.96666666f * sin(90 * M_PI / 180.0);
|
||||
lbl_1_bss_4C->trans.z = 0.96666666f * cos(90 * M_PI / 180.0);
|
||||
temp_r31->unk01 = 60;
|
||||
return;
|
||||
}
|
||||
if (arg0 == 0) {
|
||||
BoardPlayerMotionSpeedSet(temp_r31->unk04, 1.0f);
|
||||
return;
|
||||
}
|
||||
if (arg0 == 4) {
|
||||
BoardModelMotionShiftSet(temp_r31->unk04, 2, 0.0f, 8.0f, 0);
|
||||
temp_r31->unk02 = 10;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static s32 fn_1_5B0C(void) {
|
||||
Bss4CWork *temp_r31;
|
||||
|
||||
if (lbl_1_bss_4C) {
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
|
||||
return temp_r31->unk00_field1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static s32 lbl_1_data_1E4[8] = {
|
||||
DATA_MAKE_NUM(DATADIR_MARIOMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_PEACHMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_WARIOMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_DAISYMOT, 126),
|
||||
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 126)
|
||||
};
|
||||
|
||||
static void fn_1_5B54(s32 arg0) {
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
omObjData *temp_r3;
|
||||
Bss50Work *temp_r31;
|
||||
|
||||
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_606C);
|
||||
lbl_1_bss_50 = temp_r3;
|
||||
temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss50Work);
|
||||
temp_r31->unk00_field0 = 0;
|
||||
temp_r31->unk00_field1 = arg0;
|
||||
temp_r31->unk01 = 0;
|
||||
temp_r31->unk00_field2 = 1;
|
||||
temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 13), NULL, 0);
|
||||
temp_r31->unk02 = BoardPlayerMotionCreate(arg0, lbl_1_data_1E4[GWPlayer[arg0].character]);
|
||||
var_f31 = 0.3f;
|
||||
BoardModelScaleSet(temp_r31->unk04, var_f31, var_f31, var_f31);
|
||||
BoardPlayerPosGet(temp_r31->unk00_field1, &sp8);
|
||||
BoardModelPosSetV(temp_r31->unk04, &sp8);
|
||||
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||
temp_r3->trans.x = sp8.x;
|
||||
temp_r3->trans.y = sp8.y;
|
||||
temp_r3->trans.z = sp8.z;
|
||||
lbl_1_bss_59 = 0;
|
||||
lbl_1_bss_5A = 0;
|
||||
}
|
||||
|
||||
static void fn_1_5CE4(s32 arg0) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
Bss50Work *temp_r31;
|
||||
|
||||
if (!lbl_1_bss_50) {
|
||||
return;
|
||||
}
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
|
||||
temp_r31->unk00_field2 = arg0;
|
||||
if (arg0 == 2) {
|
||||
temp_r31->unk01 = 60;
|
||||
BoardPlayerPosGet(temp_r31->unk00_field1, &sp8);
|
||||
if (lbl_1_bss_5A >= 1) {
|
||||
BoardModelVisibilitySet(temp_r31->unk04, 1);
|
||||
}
|
||||
BoardModelMotionStart(temp_r31->unk04, 0, 0x40000001);
|
||||
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
|
||||
omVibrate(temp_r31->unk00_field1, 12, 4, 2);
|
||||
fn_1_5968(&sp14);
|
||||
sp8.x = sp14.x + 18.0 * sin(90 * M_PI / 180.0);
|
||||
sp8.z = sp14.z + 18.0 * cos(90 * M_PI / 180.0);
|
||||
BoardPlayerPosSetV(temp_r31->unk00_field1, &sp8);
|
||||
BoardModelPosSetV(temp_r31->unk04, &sp8);
|
||||
return;
|
||||
}
|
||||
if (arg0 == 3) {
|
||||
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static s32 fn_1_5EBC(void) {
|
||||
Bss50Work *temp_r31;
|
||||
|
||||
if (!lbl_1_bss_50) {
|
||||
return;
|
||||
}
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
|
||||
return temp_r31->unk00_field2;
|
||||
}
|
||||
|
||||
static void fn_1_5EFC(Vec *arg0) {
|
||||
Bss50Work *temp_r31;
|
||||
|
||||
if (lbl_1_bss_50) {
|
||||
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
|
||||
BoardPlayerPosGet(temp_r31->unk00_field1, arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_5F58(s32 arg0, u32 *arg1) {
|
||||
u32 var_r31;
|
||||
s32 var_r28;
|
||||
s32 temp_r30;
|
||||
|
||||
var_r31 = 0;
|
||||
var_r28 = GWPlayer[arg0].port;
|
||||
if (GWPlayer[arg0].com) {
|
||||
temp_r30 = BoardRandMod(100);
|
||||
switch (GWPlayer[arg0].diff) {
|
||||
case 0:
|
||||
if (temp_r30 < 12) {
|
||||
var_r31 = 0x100;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (temp_r30 < 22) {
|
||||
var_r31 = 0x100;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (temp_r30 < 50) {
|
||||
var_r31 = 0x100;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
var_r31 = 0x100;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
var_r31 = HuPadBtnDown[var_r28] & 0x100;
|
||||
}
|
||||
*arg1 = var_r31;
|
||||
}
|
||||
|
||||
static void fn_1_606C(omObjData *arg0) {
|
||||
Vec sp64;
|
||||
Vec sp58;
|
||||
u32 var_r18;
|
||||
Bss50Work *temp_r31;
|
||||
|
||||
var_r18 = 0;
|
||||
temp_r31 = OM_GET_WORK_PTR(arg0, Bss50Work);
|
||||
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
|
||||
BoardPlayerMotionKill(temp_r31->unk00_field1, temp_r31->unk02);
|
||||
BoardModelKill(temp_r31->unk04);
|
||||
lbl_1_bss_50 = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
switch (temp_r31->unk00_field2) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
if (fn_1_5B0C() == 3) {
|
||||
fn_1_5CE4(2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (temp_r31->unk01 == 0) {
|
||||
if (lbl_1_bss_5A >= 5) {
|
||||
fn_1_5CE4(4);
|
||||
fn_1_59D0(4);
|
||||
} else {
|
||||
fn_1_5CE4(3);
|
||||
fn_1_59D0(1);
|
||||
lbl_1_bss_59 = 0;
|
||||
lbl_1_bss_5A++;
|
||||
}
|
||||
} else {
|
||||
fn_1_5F58(temp_r31->unk00_field1, &var_r18);
|
||||
if (var_r18 == 0x100) {
|
||||
lbl_1_bss_59++;
|
||||
if (lbl_1_bss_5A != 0 && lbl_1_bss_59 >= lbl_1_rodata_F5[lbl_1_bss_5A - 1]) {
|
||||
fn_1_5CE4(4);
|
||||
fn_1_59D0(4);
|
||||
}
|
||||
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
|
||||
}
|
||||
temp_r31->unk01--;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (fn_1_5B0C() == 3) {
|
||||
fn_1_5CE4(2);
|
||||
return;
|
||||
}
|
||||
fn_1_5968(&sp64);
|
||||
BoardPlayerPosGet(temp_r31->unk00_field1, &sp58);
|
||||
sp58.x = sp64.x + 18.0 * sin(90 * M_PI / 180.0);
|
||||
sp58.z = sp64.z + 18.0 * cos(90 * M_PI / 180.0);
|
||||
BoardPlayerPosSetV(temp_r31->unk00_field1, &sp58);
|
||||
BoardModelPosSetV(temp_r31->unk04, &sp58);
|
||||
BoardModelRotYSet(temp_r31->unk04, BoardPlayerRotYGet(temp_r31->unk00_field1));
|
||||
break;
|
||||
case 5:
|
||||
temp_r31->unk00_field0 = 1;
|
||||
/* fallthrough */
|
||||
case 4:
|
||||
BoardPlayerIdleSet(temp_r31->unk00_field1);
|
||||
BoardPlayerRotYSet(temp_r31->unk00_field1, 0.0f);
|
||||
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||
fn_1_5CE4(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_6A0C(omObjData *arg0) {
|
||||
float temp_f31;
|
||||
Bss54Work *temp_r29;
|
||||
Bss54WorkData *var_r30;
|
||||
s32 var_r26;
|
||||
s32 var_r27;
|
||||
s32 i;
|
||||
|
||||
temp_r29 = OM_GET_WORK_PTR(arg0, Bss54Work);
|
||||
if (temp_r29->unk00_field0 != 0 || BoardIsKill()) {
|
||||
fn_1_6E90(temp_r29);
|
||||
HuMemDirectFree(temp_r29->unk0C);
|
||||
lbl_1_bss_54 = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
var_r30 = temp_r29->unk0C;
|
||||
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
|
||||
if (var_r30->unk00 == 0) {
|
||||
var_r27++;
|
||||
}
|
||||
}
|
||||
if (var_r27 == 20) {
|
||||
temp_r29->unk00_field0 = 1;
|
||||
return;
|
||||
}
|
||||
var_r26 = 0;
|
||||
for (i = 0; i < 20; i++) {
|
||||
var_r30 = &temp_r29->unk0C[i];
|
||||
if (var_r30->unk00 == 1 && var_r26 == 0) {
|
||||
var_r30->unk00 = 2;
|
||||
var_r26 = 1;
|
||||
}
|
||||
if (var_r30->unk00 == 2) {
|
||||
var_r30->unk01++;
|
||||
OSu8tof32(&var_r30->unk01, &temp_f31);
|
||||
var_r30->unk04 += 45.0f;
|
||||
var_r30->unk08.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
|
||||
if (var_r30->unk08.y < temp_r29->unk08) {
|
||||
var_r30->unk08.y = temp_r29->unk08;
|
||||
CharModelCoinEffectCreate(1, &var_r30->unk08);
|
||||
BoardModelVisibilitySet(var_r30->unk02, 0);
|
||||
HuAudFXPlay(7);
|
||||
BoardPlayerCoinsAdd(temp_r29->unk04, 1);
|
||||
omVibrate(temp_r29->unk04, 12, 6, 6);
|
||||
var_r30->unk00 = 0;
|
||||
}
|
||||
BoardModelPosSetV(var_r30->unk02, &var_r30->unk08);
|
||||
BoardModelRotYSet(var_r30->unk02, var_r30->unk04);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_6C4C(s32 arg0) {
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
omObjData *temp_r3;
|
||||
Bss54Work *temp_r30;
|
||||
Bss54WorkData *temp_r31;
|
||||
s32 i;
|
||||
|
||||
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_6A0C);
|
||||
lbl_1_bss_54 = temp_r3;
|
||||
temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss54Work);
|
||||
temp_r30->unk00_field0 = 0;
|
||||
temp_r30->unk04 = arg0;
|
||||
temp_r30->unk0C = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(Bss54WorkData), MEMORY_DEFAULT_NUM);
|
||||
BoardPlayerPosGet(arg0, &sp8);
|
||||
temp_r30->unk08 = sp8.y + 80.0f;
|
||||
memset(temp_r30->unk0C, 0, 20 * sizeof(Bss54WorkData));
|
||||
for (i = 0; i < lbl_1_bss_58; i++) {
|
||||
if (i == 0) {
|
||||
var_f31 = 0.0f;
|
||||
} else {
|
||||
var_f31 = BoardRandFloat();
|
||||
}
|
||||
temp_r31 = &temp_r30->unk0C[i];
|
||||
temp_r31->unk00 = 1;
|
||||
temp_r31->unk08.x = sp8.x + 50.0 * sin(360.0f * var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk08.z = sp8.z + 50.0 * cos(360.0f * var_f31 * M_PI / 180.0);
|
||||
temp_r31->unk08.y = sp8.y + 600.0f + 500.0f * BoardRandFloat();
|
||||
temp_r31->unk01 = 0;
|
||||
temp_r31->unk04 = 360.0f * BoardRandFloat();
|
||||
temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_6E90(Bss54Work *arg0) {
|
||||
Bss54WorkData *var_r30;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 20; i++) {
|
||||
var_r30 = &arg0->unk0C[i];
|
||||
BoardModelKill(var_r30->unk02);
|
||||
}
|
||||
}
|
||||
1196
src/REL/w06Dll/mg_item.c
Executable file
1196
src/REL/w06Dll/mg_item.c
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -9,25 +9,25 @@
|
|||
#include "game/board/tutorial.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/map_object.h"
|
||||
|
||||
#include "math.h"
|
||||
|
||||
//BSS
|
||||
s16 lbl_1_bss_10[1];
|
||||
s16 w10ExitWin;
|
||||
s16 tutorialDoneF;
|
||||
void* lbl_1_bss_8;
|
||||
s32 lbl_1_bss_4;
|
||||
W10BoardWork *boardWork;
|
||||
|
||||
//DATA
|
||||
unkw10Dll lbl_1_data_0[1] = {
|
||||
//Map Objects
|
||||
static BoardMapObject mapObjTbl[MAPOBJ_MAX] = {
|
||||
3300.0f, 100.0f, -900.0f,
|
||||
0.0f, 0.0f, 0.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
DATA_MAKE_NUM(DATADIR_W10, 3)
|
||||
};
|
||||
|
||||
s16 boardMapObjMdl[MAPOBJ_MAX];
|
||||
|
||||
s16 tutorialExitWin;
|
||||
s16 tutorialDoneF;
|
||||
static s32 *motTbl;
|
||||
s32 lbl_1_bss_4;
|
||||
W10BoardWork *boardWork;
|
||||
|
||||
static s16 bgMdl = -1;
|
||||
static s16 fgMdl = -1;
|
||||
|
|
@ -36,8 +36,7 @@ s16 boardShopHostMdl = -1;
|
|||
s16 boardLotteryHostMdl = -1;
|
||||
s16 boardBooHouseHostMdl = -1;
|
||||
|
||||
//unused?
|
||||
s32 lbl_1_data_34[] = {
|
||||
static s32 charMotDirTbl[] = {
|
||||
DATADIR_MARIOMOT, DATADIR_LUIGIMOT,
|
||||
DATADIR_PEACHMOT, DATADIR_YOSHIMOT,
|
||||
DATADIR_WARIOMOT, DATADIR_DONKEYMOT,
|
||||
|
|
@ -76,7 +75,7 @@ void BoardCreate(void)
|
|||
float size[2];
|
||||
|
||||
s32 i;
|
||||
unkw10Dll* temp_r30;
|
||||
BoardMapObject *temp_r30;
|
||||
s32 space;
|
||||
s32 board;
|
||||
|
||||
|
|
@ -111,21 +110,21 @@ void BoardCreate(void)
|
|||
boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0);
|
||||
BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001);
|
||||
BoardLightHookSet(LightSetHook, LightResetHook);
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
|
||||
temp_r30 = &lbl_1_data_0[i];
|
||||
if (temp_r30->unk24 != -1) {
|
||||
lbl_1_bss_8 = NULL;
|
||||
lbl_1_bss_10[i] = BoardModelCreate(temp_r30->unk24, lbl_1_bss_8, 0);
|
||||
BoardModelPosSetV(lbl_1_bss_10[i], &temp_r30->unk0);
|
||||
BoardModelRotSetV(lbl_1_bss_10[i], &temp_r30->unk0C);
|
||||
BoardModelScaleSetV(lbl_1_bss_10[i], &temp_r30->unk18);
|
||||
BoardModelVisibilitySet(lbl_1_bss_10[i], 1);
|
||||
if (lbl_1_bss_8 != NULL) {
|
||||
BoardModelMotionStart(lbl_1_bss_10[i], 0, 0x40000001);
|
||||
for (i = 0; i < MAPOBJ_MAX; i++) {
|
||||
temp_r30 = &mapObjTbl[i];
|
||||
if (temp_r30->data_num != -1) {
|
||||
motTbl = NULL;
|
||||
boardMapObjMdl[i] = BoardModelCreate(temp_r30->data_num, motTbl, 0);
|
||||
BoardModelPosSetV(boardMapObjMdl[i], &temp_r30->pos);
|
||||
BoardModelRotSetV(boardMapObjMdl[i], &temp_r30->rot);
|
||||
BoardModelScaleSetV(boardMapObjMdl[i], &temp_r30->scale);
|
||||
BoardModelVisibilitySet(boardMapObjMdl[i], 1);
|
||||
if (motTbl != NULL) {
|
||||
BoardModelMotionStart(boardMapObjMdl[i], 0, 0x40000001);
|
||||
}
|
||||
}
|
||||
}
|
||||
BoardModelVisibilitySet(lbl_1_bss_10[0], 0);
|
||||
BoardModelVisibilitySet(boardMapObjMdl[MAPOBJ_MELON], 0);
|
||||
boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
|
||||
BoardModelVisibilitySet(boardWork->focus_mdl, 0);
|
||||
BoardSpaceWalkEventFuncSet(WalkEvent);
|
||||
|
|
@ -136,20 +135,20 @@ void BoardCreate(void)
|
|||
BoardShopHostSet(boardShopHostMdl);
|
||||
BoardLotteryHostSet(boardLotteryHostMdl);
|
||||
HuWinMesMaxSizeGet(1, size, 0x2E003A);
|
||||
w10ExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
|
||||
HuWinMesSet(w10ExitWin, 0x2E003A);
|
||||
HuWinMesSpeedSet(w10ExitWin, 0);
|
||||
HuWinPriSet(w10ExitWin, 1);
|
||||
HuWinMesPalSet(w10ExitWin, 7, 0, 0, 0);
|
||||
tutorialExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
|
||||
HuWinMesSet(tutorialExitWin, 0x2E003A);
|
||||
HuWinMesSpeedSet(tutorialExitWin, 0);
|
||||
HuWinPriSet(tutorialExitWin, 1);
|
||||
HuWinMesPalSet(tutorialExitWin, 7, 0, 0, 0);
|
||||
}
|
||||
|
||||
void BoardDestroy(void)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 1; i++) {
|
||||
if (lbl_1_bss_10[i] != 0) {
|
||||
BoardModelKill(lbl_1_bss_10[i]);
|
||||
lbl_1_bss_10[i] = 0;
|
||||
if (boardMapObjMdl[i] != 0) {
|
||||
BoardModelKill(boardMapObjMdl[i]);
|
||||
boardMapObjMdl[i] = 0;
|
||||
}
|
||||
}
|
||||
if (boardBooHouseHostMdl != -1) {
|
||||
|
|
@ -178,7 +177,7 @@ void BoardDestroy(void)
|
|||
}
|
||||
BoardModelKill(boardWork->focus_mdl);
|
||||
TutorialSprKill();
|
||||
HuWinKill(w10ExitWin);
|
||||
HuWinKill(tutorialExitWin);
|
||||
BoardSpaceDestroy();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
static s16 sprList[11];
|
||||
static s16 sprCurr;
|
||||
|
||||
void CloseTutorial(void) {
|
||||
static void CloseTutorial(void) {
|
||||
s32 port;
|
||||
s32 i;
|
||||
|
||||
if (tutorialDoneF == 0) {
|
||||
if (WipeStatGet() != 0) {
|
||||
HuWinDispOff(w10ExitWin);
|
||||
HuWinDispOff(tutorialExitWin);
|
||||
return;
|
||||
}
|
||||
HuWinDispOn(w10ExitWin);
|
||||
HuWinDispOn(tutorialExitWin);
|
||||
if (BoardIsKill() != 0) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue