This commit is contained in:
CreateSource 2024-06-14 12:55:23 -04:00
commit 8f65b73a5a
76 changed files with 13654 additions and 1705 deletions

View file

@ -696,7 +696,7 @@ void fn_1_1344(omObjData *object)
object->model[2] = Hu3DHookFuncCreate(fn_1_58E4);
Hu3DModelPosSet(object->model[2], 0.0f, object->trans.y, object->trans.z);
var_r22 = &Hu3DData[object->model[2]];
var_r22->unk_120 = (void *)object;
var_r22->unk_120 = object;
var_r31->unk_4C = fn_1_5D64(960, 64, 1);
var_r31->unk_48 = 4096;
var_r31->unk_44 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, MEMORY_DEFAULT_NUM);
@ -1220,7 +1220,7 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1)
omObjData *var_r30;
s32 var_r29;
var_r30 = (omObjData *)modelData->unk_120; // TODO fix in modelData struct
var_r30 = modelData->unk_120;
var_r31 = var_r30->data;
{
GXColor sp18 = { 255, 0, 0, 255 };

565
src/REL/m406Dll/main.c Normal file
View file

@ -0,0 +1,565 @@
#include "ext_math.h"
#include "game/audio.h"
#include "game/gamework_data.h"
#include "game/hsfdraw.h"
#include "game/minigame_seq.h"
#include "game/wipe.h"
#include "rel_sqrt_consts.h"
#include "REL/m406Dll.h"
typedef struct UnkM417Data0Struct {
float unk_00;
float unk_04;
float unk_08;
float unk0C;
float unk10;
float unk14;
float unk18;
float unk_1C;
float unk_20;
float unk_24;
float unk_28;
float unk_2C;
float unk_30;
float unk_34;
float unk_38; // it's the same structure twice, rot, center etc.
float unk_3C;
float unk_40;
float unk_44;
float unk_48;
float unk_4C;
float unk_50;
float unk_54;
float unk_58;
float unk_5C;
float unk_60;
float unk_64;
float unk_68;
float unk_6C;
float unk_70;
float unk_74;
float unk_78;
float unk_7C;
float unk_80;
float unk_84;
float unk_88;
} UnkM417Data0Struct; /* size = unknown */
void fn_1_110C(omObjData *object);
void fn_1_1168(omObjData *object);
void fn_1_1340(void);
void fn_1_151C(omObjData *object);
void fn_1_15D0(float arg8);
void fn_1_183C(float arg8);
float fn_1_1F10(float arg9, float argA, float argB);
void fn_1_3B8(omObjData *object);
void fn_1_40C(omObjData *object);
UnkM417Data0Struct lbl_1_data_0 = {
330.0f,
105.0f,
0.0f,
0.0f,
100.0f,
0.0f,
1650.0f,
91.0f,
124.0f,
0.0f,
0.0f,
-35440.0f,
-60022.0f,
1226.0f,
0.0f,
180.0f,
0.0f,
0.0f,
-1300.0f,
-2000.0f,
1000.0f,
-5.0f,
0.0f,
0.0f,
31.0f,
75.0f,
-250.0f,
675.0f,
111.0f,
164.0f,
0.0f,
0.0f,
-35440.0f,
-60022.0f,
1226.0f,
};
Process *lbl_1_bss_2C;
omObjData *lbl_1_bss_28;
s32 lbl_1_bss_24;
s32 lbl_1_bss_20;
s32 lbl_1_bss_1C;
s32 lbl_1_bss_18;
s32 lbl_1_bss_14;
s32 lbl_1_bss_10;
s32 lbl_1_bss_C;
s32 lbl_1_bss_8;
omObjData *lbl_1_bss_4;
s32 lbl_1_bss_0;
void ModuleProlog(void)
{
Vec sp14;
Vec sp8;
Process *var_r31;
OSReport("******* M426ObjectSetup *********\n");
var_r31 = omInitObjMan(50, 8192);
lbl_1_bss_2C = var_r31;
omGameSysInit(var_r31);
fn_1_1340();
HuAudSndGrpSet(0x1F);
sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x)));
sp14.y = Center.y + (CZoom * -sind(CRot.x));
sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)));
PSVECSubtract(&Center, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
HuAudFXListnerSetEX(&sp14, &sp8, 100000.0f, 4166.6665f, 0.0f, 300.0f, 300.0f);
Hu3DLightAllKill();
Hu3DLighInit();
lbl_1_bss_28 = omAddObjEx(var_r31, 255, 2, 0, -1, fn_1_3B8);
lbl_1_bss_24 = lbl_1_bss_20 = -1;
lbl_1_bss_1C = 0;
lbl_1_bss_18 = 0;
lbl_1_bss_10 = -1;
lbl_1_bss_C = -1;
lbl_1_bss_8 = 0;
WipeCreate(1, 0, 60);
lbl_1_bss_8 = 0;
}
void fn_1_3B8(omObjData *object)
{
fn_1_2308(lbl_1_bss_2C);
fn_1_D65C(lbl_1_bss_2C);
object->func = fn_1_40C;
}
void fn_1_40C(omObjData *object)
{
Vec sp14;
Vec sp8;
float var_f31;
u8 var_r31;
switch (lbl_1_bss_1C) {
case 0:
if (!WipeStatGet()) {
lbl_1_bss_1C = 1;
lbl_1_bss_18 = 0;
}
break;
case 1:
lbl_1_bss_18++;
if (lbl_1_bss_18 >= 48.0f) {
fn_1_696C(30.000002f);
}
break;
case 2:
lbl_1_bss_18++;
var_f31 = lbl_1_bss_18 / 45.0f;
fn_1_15D0(var_f31);
if (lbl_1_bss_18 >= 45.0f) {
lbl_1_bss_24 = MGSeqCreate(3, 0);
lbl_1_bss_1C = 3;
lbl_1_bss_18 = 0;
}
break;
case 3:
if (lbl_1_bss_24 != -1) {
var_r31 = MGSeqStatGet(lbl_1_bss_24);
if (var_r31 & 16 && lbl_1_bss_C == -1) {
lbl_1_bss_C = HuAudSeqPlay(74);
}
} else {
var_r31 = 0;
}
if (lbl_1_bss_24 == -1 || !var_r31) {
lbl_1_bss_24 = -1;
lbl_1_bss_1C = 4;
lbl_1_bss_18 = 0;
}
break;
case 4:
if (lbl_1_bss_10 != -1) {
lbl_1_bss_24 = MGSeqCreate(3, 1);
HuAudFXAllStop();
if (lbl_1_bss_C != -1) {
HuAudSeqFadeOut(lbl_1_bss_C, 100);
}
if (lbl_1_bss_10 != 99) {
fn_1_B25C();
fn_1_B104(1.0f);
fn_1_6B5C();
fn_1_183C(0.0f);
Hu3DBGColorSet(0x40, 0x40, 0xFF);
lbl_1_bss_1C = 5;
lbl_1_bss_18 = 0;
} else {
WipeCreate(2, 0, 30);
WipeColorSet(0xFF, 0xFF, 0xFF);
lbl_1_bss_8 = 1;
lbl_1_bss_1C = 9;
lbl_1_bss_18 = 0;
lbl_1_bss_14 = 0;
}
}
break;
case 5:
lbl_1_bss_14++;
var_f31 = lbl_1_bss_14 / 90.0f;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
fn_1_183C(var_f31);
Hu3DBGColorSet(0x40, 0x40, 0xFF);
break;
case 6:
lbl_1_bss_14++;
var_f31 = lbl_1_bss_14 / 90.0f;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
fn_1_183C(var_f31);
WipeCreate(2, 0, 30);
WipeColorSet(0xFF, 0xFF, 0xFF);
lbl_1_bss_8 = 1;
lbl_1_bss_1C = 7;
lbl_1_bss_18 = 0;
break;
case 7:
lbl_1_bss_14++;
var_f31 = lbl_1_bss_14 / 90.0f;
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
fn_1_183C(var_f31);
if (!WipeStatGet() && (lbl_1_bss_24 == -1 || !MGSeqStatGet(lbl_1_bss_24))) {
lbl_1_bss_24 = -1;
WipeCreate(1, 0, 30);
WipeColorSet(0xFF, 0xFF, 0xFF);
lbl_1_bss_8 = 0;
CRot.x = lbl_1_data_0.unk_54;
CRot.y = lbl_1_data_0.unk_58;
CRot.z = lbl_1_data_0.unk_5C;
Center.x = lbl_1_data_0.unk_60;
Center.y = lbl_1_data_0.unk_64;
Center.z = lbl_1_data_0.unk_68;
CZoom = lbl_1_data_0.unk_6C;
fn_1_3064(1);
lbl_1_bss_1C = 8;
lbl_1_bss_18 = 0;
}
break;
case 8:
if (!WipeStatGet()) {
lbl_1_bss_1C = 11;
lbl_1_bss_18 = 0;
}
break;
case 9:
if (!WipeStatGet() && (lbl_1_bss_24 == -1 || !MGSeqStatGet(lbl_1_bss_24))) {
lbl_1_bss_24 = -1;
WipeCreate(1, 0, 30);
WipeColorSet(0xFF, 0xFF, 0xFF);
lbl_1_bss_8 = 0;
CRot.x = lbl_1_data_0.unk_54;
CRot.y = lbl_1_data_0.unk_58;
CRot.z = lbl_1_data_0.unk_5C;
Center.x = lbl_1_data_0.unk_60;
Center.y = lbl_1_data_0.unk_64;
Center.z = lbl_1_data_0.unk_68;
CZoom = lbl_1_data_0.unk_6C;
sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x)));
sp14.y = Center.y + (CZoom * -sind(CRot.x));
sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)));
PSVECSubtract(&Center, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
HuAudFXListnerUpdate(&sp14, &sp8);
fn_1_6B5C();
fn_1_3064(1);
lbl_1_bss_1C = 10;
lbl_1_bss_18 = 0;
}
break;
case 10:
if (!WipeStatGet()) {
lbl_1_bss_1C = 11;
lbl_1_bss_18 = 0;
}
break;
case 11:
break;
case 12:
if (lbl_1_bss_10 != 99) {
lbl_1_bss_24 = MGSeqCreate(5, 3, GWPlayerCfg[lbl_1_bss_10].character, -1, -1, -1);
HuAudSStreamPlay(1);
GWPlayerCoinWinAdd(lbl_1_bss_10, 10);
lbl_1_bss_1C = 13;
lbl_1_bss_18 = 0;
} else {
lbl_1_bss_24 = MGSeqCreate(3, 2);
HuAudSStreamPlay(4);
lbl_1_bss_1C = 13;
lbl_1_bss_18 = 0;
}
break;
case 13:
if (++lbl_1_bss_18 >= 210.0f) {
lbl_1_bss_24 = -1;
WipeCreate(2, 0, 60);
lbl_1_bss_8 = 1;
lbl_1_bss_1C = 14;
lbl_1_bss_18 = 0;
}
break;
case 14:
if (!WipeStatGet()) {
Hu3DBGColorSet(0, 0, 0);
lbl_1_bss_1C = 15;
lbl_1_bss_18 = 0;
}
break;
case 15:
default:
object->func = fn_1_110C;
break;
}
fn_1_1168(object);
}
void fn_1_110C(omObjData *object)
{
if (!WipeStatGet()) {
fn_1_D8B0();
fn_1_2BEC();
fn_1_B41C();
HuAudFXListnerKill();
HuDataDirClose(DATA_MAKE_NUM(DATADIR_M406, 0));
MGSeqKillAll();
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_1168(omObjData *object)
{
s32 var_r30;
var_r30 = 0;
if (WipeStatGet() || object->func == fn_1_110C) {
return;
}
if (omSysExitReq) {
var_r30 = 1;
}
if (var_r30) {
if (!lbl_1_bss_8) {
WipeCreate(2, 0, 60);
}
lbl_1_bss_8 = 1;
HuAudStreamFadeOut(30);
object->func = fn_1_110C;
}
}
u32 fn_1_122C(void)
{
return lbl_1_bss_1C;
}
void fn_1_123C(void)
{
if (lbl_1_bss_1C <= 1) {
lbl_1_bss_1C = 2;
lbl_1_bss_18 = 0;
}
}
void fn_1_1274(s32 arg0)
{
lbl_1_bss_10 = arg0;
}
void fn_1_1284(void)
{
if (lbl_1_bss_1C == 5) {
lbl_1_bss_1C = 6;
lbl_1_bss_18 = 0;
}
}
void fn_1_12BC(void)
{
if (lbl_1_bss_10 != 99) {
if (lbl_1_bss_1C == 11) {
lbl_1_bss_1C = 12;
lbl_1_bss_18 = 0;
}
} else if (lbl_1_bss_1C == 11) {
lbl_1_bss_1C = 12;
lbl_1_bss_18 = 0;
}
}
void fn_1_1340(void)
{
omObjData *sp8;
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 50000.0f, 1.2f);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraScissorSet(1, 0, 0, 640, 480);
sp8 = lbl_1_bss_4 = omAddObjEx(lbl_1_bss_2C, 0x7FDA, 0, 0, -1, omOutView);
CRot.x = lbl_1_data_0.unk_38;
CRot.y = lbl_1_data_0.unk_3C;
CRot.z = lbl_1_data_0.unk_40;
Center.x = lbl_1_data_0.unk_44;
Center.y = lbl_1_data_0.unk_48;
Center.z = lbl_1_data_0.unk_4C;
CZoom = lbl_1_data_0.unk_50;
lbl_1_bss_0 = 0;
omAddObjEx(lbl_1_bss_2C, 0xFF, 0, 0, -1, fn_1_151C);
}
void fn_1_151C(omObjData *object) { }
void fn_1_1520(void) { }
void fn_1_1524(void)
{
CRot.x = lbl_1_data_0.unk_38;
CRot.y = lbl_1_data_0.unk_3C;
CRot.z = lbl_1_data_0.unk_40;
Center.x = lbl_1_data_0.unk_44;
Center.y = lbl_1_data_0.unk_48;
Center.z = lbl_1_data_0.unk_4C;
CZoom = lbl_1_data_0.unk_50;
}
void fn_1_15D0(float arg8)
{
Vec sp14;
Vec sp8;
CRot.x = fn_1_1F10(arg8, lbl_1_data_0.unk_38, lbl_1_data_0.unk_00);
CRot.y = fn_1_1F10(arg8, lbl_1_data_0.unk_3C, lbl_1_data_0.unk_04);
CRot.z = fn_1_1F10(arg8, lbl_1_data_0.unk_40, lbl_1_data_0.unk_08);
sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x)));
sp14.y = Center.y + (CZoom * -sind(CRot.x));
sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)));
PSVECSubtract(&Center, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
HuAudFXListnerUpdate(&sp14, &sp8);
}
void fn_1_183C(float arg8)
{
Vec sp14;
Vec sp8;
CRot.x = fn_1_1F10(arg8, lbl_1_data_0.unk_1C, lbl_1_data_0.unk_70);
CRot.y = fn_1_1F10(arg8, lbl_1_data_0.unk_20, lbl_1_data_0.unk_74);
CRot.z = fn_1_1F10(arg8, lbl_1_data_0.unk_24, lbl_1_data_0.unk_78);
Center.x = lbl_1_data_0.unk_28 + (arg8 * (lbl_1_data_0.unk_7C - lbl_1_data_0.unk_28));
Center.y = lbl_1_data_0.unk_2C + (arg8 * (lbl_1_data_0.unk_80 - lbl_1_data_0.unk_2C));
Center.z = lbl_1_data_0.unk_30 + (arg8 * (lbl_1_data_0.unk_84 - lbl_1_data_0.unk_30));
CZoom = lbl_1_data_0.unk_34 + (arg8 * (lbl_1_data_0.unk_88 - lbl_1_data_0.unk_34));
sp14.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x)));
sp14.y = Center.y + (CZoom * -sind(CRot.x));
sp14.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)));
PSVECSubtract(&Center, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
HuAudFXListnerUpdate(&sp14, &sp8);
}
s32 fn_1_1B98(void)
{
return lbl_1_bss_0;
}
float fn_1_1BA8(float arg8, float arg9)
{
float var_f31;
if (arg8 >= 360.0f) {
arg8 -= 360.0f;
} else if (arg8 < 0.0f) {
arg8 += 360.0f;
}
if (arg9 >= 360.0f) {
arg9 -= 360.0f;
} else if (arg9 < 0.0f) {
arg9 += 360.0f;
}
var_f31 = arg8 - arg9;
if (var_f31 <= -180.0f) {
var_f31 += 360.0f;
} else if (var_f31 >= 180.0f) {
var_f31 -= 360.0f;
}
return var_f31;
}
float fn_1_1CC0(float arg8, float arg9, float argA)
{
float var_f31;
float var_f30;
if (arg8 >= 360.0) {
arg8 -= 360.0;
} else if (arg8 < 0.0) {
arg8 += 360.0;
}
if (arg9 >= 360.0) {
arg9 -= 360.0;
} else if (arg9 < 0.0) {
arg9 += 360.0;
}
var_f30 = 360.0 + (arg8 - arg9);
if (fabs(var_f30) >= 360.0) {
var_f30 = fmod(var_f30, 360.0);
}
if (var_f30 < 180.0) {
if (var_f30 <= argA) {
var_f31 = var_f30;
} else {
var_f31 = argA;
}
} else if (360.0 - var_f30 <= argA) {
var_f31 = -(360.0 - var_f30);
} else {
var_f31 = -argA;
}
var_f31 += arg9;
if (var_f31 >= 360.0) {
var_f31 -= 360.0;
} else if (var_f31 < 0.0) {
var_f31 += 360.0;
}
return var_f31;
}
float fn_1_1F10(float arg8, float arg9, float argA)
{
float var_f24;
float var_f23;
var_f23 = fn_1_1BA8(argA, arg9);
var_f24 = fabs(var_f23 * arg8);
return fn_1_1CC0(argA, arg9, var_f24);
}

View file

@ -75,8 +75,8 @@ void fn_1_8A20(omObjData *object)
Hu3DParticleColSet(temp_r31, 255, 255, 255);
Hu3DParticleHookSet(temp_r31, fn_1_A894);
Hu3DModelPosSet(temp_r31, 0, 0, 0);
Hu3DData[temp_r31].unk_120->unk_00 = 0;
Hu3DData[temp_r31].unk_120->unk_02 = 0;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 0;
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 1);
object->model[3] = temp_r31;
Hu3DParticleBlendModeSet(temp_r31, 1);
@ -84,16 +84,16 @@ void fn_1_8A20(omObjData *object)
Hu3DParticleColSet(temp_r31, 255, 255, 255);
Hu3DParticleHookSet(temp_r31, fn_1_A894);
Hu3DModelPosSet(temp_r31, 0, 0, 0);
Hu3DData[temp_r31].unk_120->unk_00 = 0;
Hu3DData[temp_r31].unk_120->unk_02 = 1;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 1;
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270011), 1);
object->model[5] = temp_r31;
Hu3DModelLayerSet(temp_r31, 7);
Hu3DParticleColSet(temp_r31, 255, 255, 255);
Hu3DParticleHookSet(temp_r31, fn_1_A894);
Hu3DModelPosSet(temp_r31, 0, 0, 0);
Hu3DData[temp_r31].unk_120->unk_00 = 0;
Hu3DData[temp_r31].unk_120->unk_02 = 2;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_00 = 0;
((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_02 = 2;
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270010), 8);
object->model[6] = temp_r31;
Hu3DParticleBlendModeSet(temp_r31, 1);
@ -249,7 +249,7 @@ void fn_1_9770(omObjData *object)
Hu3DParticleColSet(temp_r29, 255, 255, 255);
Hu3DParticleHookSet(temp_r29, fn_1_A37C);
Hu3DModelPosSet(temp_r29, 0, 0, 0);
Hu3DData[temp_r29].unk_120->unk_00 = 0;
((ParticleData *)Hu3DData[temp_r29].unk_120)->unk_00 = 0;
temp_r31->unk30.y = -35;
temp_r31->unk30.z = 350;
temp_r31->unk18.y = 800+object->trans.y;

View file

@ -672,7 +672,7 @@ void fn_1_26E4(omObjData *object)
Hu3DParticleColSet(temp_r27, 255, 255, 255);
Hu3DParticleHookSet(temp_r27, fn_1_5AB4);
Hu3DModelPosSet(temp_r27, 0, 0, 0);
Hu3DData[temp_r27].unk_120->unk_00 = 0;
((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_00 = 0;
temp_r31->unk74 = temp_r31->unk78 = 0;
temp_r31->unk7C[0] = temp_r31->unk7C[1] = 0;
temp_r31->unk8C = -1;
@ -765,7 +765,7 @@ void fn_1_2FAC(omObjData *object)
object->trans.z = temp_r31->unk1C.z = temp_r31->unk94.z = lbl_1_data_104[temp_r31->unk0][1];
object->rot.y = temp_r31->unk58.x = atan2d(object->trans.x, object->trans.z)+180.0;
Hu3DModelAttrReset(object->model[1], 1);
Hu3DData[object->model[2]].unk_120->unk_00 = 0;
((ParticleData *)Hu3DData[object->model[2]].unk_120)->unk_00 = 0;
object->func = fn_1_3E80;
}
}

View file

@ -142,7 +142,7 @@ void fn_1_C530(omObjData *object)
Hu3DModelLayerSet(temp_r31, 1);
Hu3DModelPosSet(temp_r31, 0, 5100, 0);
Hu3DParticleBlendModeSet(temp_r31, 1);
temp_r29 = Hu3DData[temp_r31].unk_120->unk_1C;
temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C;
temp_r29[2] = 140;
object->model[14] = Hu3DModelCreateFile(0x270021);
object->model[15] = Hu3DModelCreateFile(0x270022);
@ -161,7 +161,7 @@ void fn_1_C530(omObjData *object)
Hu3DModelLayerSet(temp_r31, 3);
Hu3DModelAttrReset(temp_r31, 1);
Hu3DParticleBlendModeSet(temp_r31, 1);
temp_r29 = Hu3DData[temp_r31].unk_120->unk_1C;
temp_r29 = ((ParticleData *)Hu3DData[temp_r31].unk_120)->unk_1C;
temp_r29[1] = 800;
object->func = fn_1_CD14;
}
@ -296,7 +296,7 @@ void fn_1_D004(omObjData *object)
temp_f29 = 1.0f-((temp_f30-5000)/15000);
Hu3DMotionTimeSet(object->model[12], 95.0f*temp_f29);
temp_r27 = object->model[6];
temp_r28 = Hu3DData[temp_r27].unk_120->unk_1C;
temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C;
temp_r28[2] = 1.0f-((temp_f30-5000)/(temp_f28-5000));
if(temp_f30 <= 5400 && temp_r30[2] == 0) {
temp_r30[2] = 30;
@ -343,7 +343,7 @@ void fn_1_D004(omObjData *object)
temp_r27 = object->model[6];
if(temp_r27 != 0) {
Hu3DModelPosSet(temp_r27, 0, 200+temp_f30, 0);
temp_r28 = Hu3DData[temp_r27].unk_120->unk_1C;
temp_r28 = ((ParticleData *)Hu3DData[temp_r27].unk_120)->unk_1C;
temp_r28[2] -= 0.025f;
if(temp_r28[2] <= 0) {
Hu3DModelAttrReset(temp_r27, 0x20);
@ -757,7 +757,7 @@ WorkF4B0 *fn_1_F4B0(s16 arg0, s16 arg1)
ModelData *temp_r29;
temp_r29 = &Hu3DData[arg0];
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkF4B0), MEMORY_DEFAULT_NUM);
temp_r29->unk_120 = (void *)temp_r31;
temp_r29->unk_120 = temp_r31;
temp_r31->unk0 = arg0;
temp_r31->unk2 = arg1;
temp_r31->unk4 = NULL;
@ -778,7 +778,7 @@ void fn_1_F564(s16 arg0)
ModelData *temp_r27;
temp_r27 = &Hu3DData[arg0];
temp_r29 = temp_r27->hsfData->root;
temp_r31 = (WorkF4B0 *)temp_r27->unk_120;
temp_r31 = temp_r27->unk_120;
if(temp_r31->unk8 == NULL) {
temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count*sizeof(HsfVector2f), MEMORY_DEFAULT_NUM);
temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count, MEMORY_DEFAULT_NUM);
@ -838,7 +838,7 @@ void fn_1_F8A0(ModelData *arg0, Mtx arg1)
Mtx sp40;
Mtx sp10;
s16 spC = 0;
temp_r31 = (void *)arg0->unk_120;
temp_r31 = arg0->unk_120;
spA0.unk0 = &Hu3DData[temp_r31->unk2];
spA0.unk4 = spA0.unk0->hsfData->root;
MTXCopy(arg1, spA0.unkC);
@ -901,7 +901,7 @@ void fn_1_FB98(ModelData *arg0, Mtx arg1)
float sp50[2][8];
float sp10[2][8];
s16 spC = 0;
temp_r31 = (void *)arg0->unk_120;
temp_r31 = arg0->unk_120;
sp120.unk0 = &Hu3DData[temp_r31->unk2];
sp120.unk4 = sp120.unk0->hsfData->root;
MTXCopy(arg1, sp120.unkC);

498
src/REL/m417Dll/main.c Normal file
View file

@ -0,0 +1,498 @@
#include "ext_math.h"
#include "game/audio.h"
#include "game/hsfdraw.h"
#include "game/minigame_seq.h"
#include "game/wipe.h"
#include "rel_sqrt_consts.h"
#include "REL/m417Dll.h"
typedef struct UnkM417Struct {
/* 0x00 */ u32 unk_00;
/* 0x04 */ u32 unk_04;
/* 0x08 */ s32 unk_08;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ u32 unk_1C;
/* 0x20 */ u32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C[4];
/* 0x3C */ s32 unk_3C[4];
/* 0x4C */ s32 unk_4C[4];
/* 0x5C */ u32 unk_5C;
/* 0x60 */ u32 unk_60;
/* 0x64 */ s32 unk_64;
} UnkM417Struct; /* size = 0x68 */
void fn_1_4D8(omObjData *object);
void fn_1_990(omObjData *object);
void fn_1_EA8(omObjData *object);
void fn_1_13DC(omObjData *object);
void fn_1_17C0(omObjData *object);
void fn_1_1CA8(omObjData *object);
void fn_1_2158(omObjData *object);
s32 fn_1_27D0(void);
Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f };
Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f };
Vec lbl_1_data_18 = { 10.0f, 45.0f, 1000.0f };
GXColor lbl_1_data_24 = { 255, 255, 255, 255 };
Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f };
Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f };
Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f };
Process *lbl_1_bss_20;
omObjData *lbl_1_bss_1C;
omObjData *lbl_1_bss_18;
s16 lbl_1_bss_14;
s16 lbl_1_bss_12;
s16 lbl_1_bss_10;
s16 lbl_1_bss_8[4];
s32 lbl_1_bss_4;
s32 lbl_1_bss_0;
void ModuleProlog(void)
{
Mtx sp38;
Vec sp2C = { 0.0f, 0.0f, 0.0f };
Vec sp20 = { 0.0f, 0.0f, -1.0f };
Vec sp14;
Vec sp8;
Process *var_r31;
LightData *var_r30;
HuAudSndGrpSet(42);
HuAudFXListnerSetEX(&sp2C, &sp20, 10000.0f, 1000.0f, 0.0f, 300.0f, 300.0f);
lbl_1_bss_4 = lbl_1_bss_0 = -1;
lbl_1_bss_14 = -1;
lbl_1_bss_8[0] = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
Hu3DGLightInfinitytSet(lbl_1_bss_8[0]);
var_r30 = &Hu3DGlobalLight[lbl_1_bss_8[0]];
var_r30->unk_00 |= 32768;
lbl_1_data_18.x = 20.0f;
lbl_1_data_18.y = 45.0f;
lbl_1_data_18.z = 1000.0f;
sp14.x = sp14.y = sp14.z = 0.0f;
sp8.x = sp8.z = 0.0f;
sp8.y = lbl_1_data_18.z;
mtxRot(sp38, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f);
PSMTXMultVec(sp38, &sp8, &sp8);
Hu3DGLightPosAimSetV(lbl_1_bss_8[0], &sp8, &sp14);
lbl_1_data_28.x = 200.0f;
lbl_1_data_28.y = 3000.0f;
lbl_1_data_28.z = 100.0f;
lbl_1_data_34.x = 0.0f;
lbl_1_data_34.y = 1.0f;
lbl_1_data_34.z = 0.0f;
lbl_1_data_40.x = 0.0f;
lbl_1_data_40.y = 0.0f;
lbl_1_data_40.z = 0.0f;
Hu3DShadowCreate(30.0f, 20.0f, 25000.0f);
Hu3DShadowTPLvlSet(0.625f);
Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40);
var_r31 = omInitObjMan(50, 8192);
lbl_1_bss_20 = var_r31;
omGameSysInit(var_r31);
lbl_1_bss_12 = lbl_1_bss_10 = -1;
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, -1.0f, 5.0f, 5000.0f, 1.2f);
lbl_1_bss_18 = omAddObjEx(var_r31, 32730, 0, 0, -1, omOutView);
lbl_1_bss_1C = omAddObjEx(var_r31, 10, 0, 0, -1, fn_1_4D8);
fn_1_3274(var_r31);
fn_1_7A34(var_r31);
}
void fn_1_4D8(omObjData *object)
{
UnkM417Struct *var_r31;
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x68, 268435456);
var_r31 = object->data;
memset(var_r31, 0, 0x68);
var_r31->unk_00 = 0;
var_r31->unk_04 = 0;
var_r31->unk_0C = 0;
var_r31->unk_10 = 0;
var_r31->unk_14 = 0;
var_r31->unk_18 = 0;
var_r31->unk_24 = 0;
var_r31->unk_28 = 0;
var_r31->unk_08 = 0;
var_r31->unk_5C = 3;
var_r31->unk_4C[0] = var_r31->unk_4C[1] = var_r31->unk_4C[2] = var_r31->unk_4C[3] = -1;
var_r31->unk_60 = 0;
var_r31->unk_64 = 0;
object->func = fn_1_990;
}
void fn_1_5B0(omObjData *object)
{
Vec sp14;
Vec sp8;
UnkM417Struct *var_r31;
var_r31 = object->data;
var_r31->unk_04++;
var_r31->unk_10++;
var_r31->unk_18++;
var_r31->unk_28++;
sp8.x = -(sind(CRot.y) * cosd(CRot.x));
sp8.y = -(-sind(CRot.x));
sp8.z = -(cosd(CRot.y) * cosd(CRot.x));
sp14.x = Center.x - (sp8.x * CZoom);
sp14.y = Center.y - (sp8.y * CZoom);
sp14.z = Center.z - (sp8.z * CZoom);
HuAudFXListnerUpdate(&sp14, &sp8);
if (omSysExitReq && (var_r31->unk_00 != 5)) {
var_r31->unk_00 = 4;
fn_1_800(object);
}
}
void fn_1_800(omObjData *object)
{
UnkM417Struct *var_r31;
var_r31 = object->data;
if (var_r31->unk_08) {
return;
}
switch (var_r31->unk_00) {
case 0:
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
Hu3DCameraPerspectiveSet(1, 35.0f, 5.0f, 5000.0f, 1.2f);
var_r31->unk_00 = 1;
var_r31->unk_10 = 0;
object->func = fn_1_BCAC(lbl_1_bss_20);
break;
case 1:
var_r31->unk_00 = 2;
var_r31->unk_18 = 0;
object->func = fn_1_17C0;
break;
case 2:
if (lbl_1_bss_0 < 0) {
lbl_1_bss_0 = HuAudSStreamPlay(1);
}
var_r31->unk_00 = 3;
var_r31->unk_28 = 0;
object->func = fn_1_C658(lbl_1_bss_20, object);
break;
case 3:
case 4:
var_r31->unk_08 = 1;
var_r31->unk_00 = 5;
object->func = fn_1_EA8;
break;
case 5:
default:
var_r31->unk_00 = 5;
object->func = fn_1_13DC;
break;
}
var_r31->unk_04 = 0;
}
void fn_1_990(omObjData *object)
{
fn_1_5B0(object);
fn_1_800(object);
}
void fn_1_EA8(omObjData *object)
{
UnkM417Struct *var_r27;
var_r27 = object->data;
fn_1_5B0(object);
if (!WipeStatGet()) {
WipeCreate(2, 0, 60);
var_r27->unk_08 = 0;
fn_1_800(object);
}
}
void fn_1_13DC(omObjData *object)
{
fn_1_5B0(object);
if (!WipeStatGet()) {
fn_1_33B4();
CharModelKill(-1);
MGSeqKillAll();
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
}
}
void fn_1_17C0(omObjData *object)
{
s16 sp8;
UnkM417Struct *var_r30;
var_r30 = object->data;
fn_1_5B0(object);
switch (var_r30->unk_14) {
case 0:
var_r30->unk_1C = 30;
var_r30->unk_20 = 60;
lbl_1_bss_12 = MGSeqCreate(3, 0);
MGSeqPosSet(sp8, 320.0f, 240.0f);
var_r30->unk_14 = 1;
var_r30->unk_18 = 0;
break;
case 1:
if (lbl_1_bss_4 < 0 && MGSeqStatGet(lbl_1_bss_12) & 16) {
lbl_1_bss_4 = HuAudSeqPlay(72);
}
if (!MGSeqStatGet(lbl_1_bss_12) && !var_r30->unk_08) {
lbl_1_bss_14 = MGSeqCreate(1, var_r30->unk_1C, -1, -1);
var_r30->unk_14 = 2;
var_r30->unk_18 = 0;
object->func = fn_1_1CA8;
}
break;
default:
break;
}
}
void fn_1_1CA8(omObjData *object)
{
UnkM417Struct *var_r30;
s32 var_r27;
var_r30 = object->data;
var_r27 = 0;
fn_1_5B0(object);
if (--var_r30->unk_20 == 0) {
var_r30->unk_20 = 60;
var_r30->unk_1C--;
if (var_r30->unk_1C == 0) {
var_r27 = 1;
}
}
if (var_r30->unk_5C != 3) {
var_r27 = 1;
}
if (var_r27) {
if (var_r30->unk_5C == 3) {
var_r30->unk_5C = 1;
}
lbl_1_bss_10 = MGSeqCreate(3, 1);
MGSeqPosSet(lbl_1_bss_10, 320.0f, 240.0f);
HuAudSeqFadeOut(lbl_1_bss_4, 100);
var_r30->unk_14 = 3;
var_r30->unk_18 = 0;
if (var_r30->unk_08 == 0) {
object->func = fn_1_2158;
}
}
MGSeqParamSet(lbl_1_bss_14, 1, var_r30->unk_1C);
}
void fn_1_2158(omObjData *object)
{
UnkM417Struct *var_r27;
var_r27 = object->data;
if (lbl_1_bss_14 >= 0) {
MGSeqParamSet(lbl_1_bss_14, 2, -1);
lbl_1_bss_14 = -1;
}
fn_1_5B0(object);
if (fn_1_27D0() && var_r27->unk_60 == 4369) {
var_r27->unk_14 = 4;
var_r27->unk_18 = 0;
fn_1_800(object);
}
}
u32 fn_1_26C8(void)
{
return ((UnkM417Struct *)lbl_1_bss_1C->data)->unk_00;
}
s32 fn_1_26E0(void)
{
return ((UnkM417Struct *)lbl_1_bss_1C->data)->unk_0C;
}
u32 fn_1_26F8(void)
{
return ((UnkM417Struct *)lbl_1_bss_1C->data)->unk_14;
}
u32 fn_1_2710(void)
{
return ((UnkM417Struct *)lbl_1_bss_1C->data)->unk_24;
}
void fn_1_2728(u32 arg0)
{
((UnkM417Struct *)lbl_1_bss_1C->data)->unk_5C = arg0;
}
s32 fn_1_2740(s32 arg0)
{
UnkM417Struct *var_r31;
var_r31 = lbl_1_bss_1C->data;
return var_r31->unk_4C[arg0];
}
void fn_1_2770(s32 arg0)
{
((UnkM417Struct *)lbl_1_bss_1C->data)->unk_60 |= (1 << ((arg0 & 3) * 4));
}
void fn_1_27A0(s32 arg0)
{
((UnkM417Struct *)lbl_1_bss_1C->data)->unk_64 |= (1 << ((arg0 & 3) * 4));
}
s32 fn_1_27D0(void)
{
return !MGSeqStatGet(lbl_1_bss_10);
}
void fn_1_2808(s32 arg0, s32 arg1, s32 arg2)
{
UnkM417Struct *var_r31;
var_r31 = lbl_1_bss_1C->data;
arg0 &= 3;
var_r31->unk_2C[arg0] = arg1;
var_r31->unk_3C[arg0] = arg2;
}
void fn_1_2848(Vec *arg0, Vec *arg1)
{
Vec sp10;
float var_f29;
float var_f28;
sp10.x = arg1->x - arg0->x;
sp10.y = arg1->y - arg0->y;
sp10.z = arg1->z - arg0->z;
Center.x = arg1->x;
Center.y = arg1->y;
Center.z = arg1->z;
var_f29 = (sp10.x * sp10.x) + (sp10.z * sp10.z);
CRot.x = atan2d(sp10.y, sqrtf(var_f29));
CRot.y = atan2d(-sp10.x, -sp10.z);
CRot.z = 0.0f;
var_f28 = (sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y));
CZoom = sqrtf(var_f28);
}
void fn_1_2B90(float arg8, float arg9, float argA, float argB, float argC, float argD)
{
Vec sp40;
Vec sp34;
Vec sp28;
float var_f29;
float var_f28;
sp40.x = arg8;
sp40.y = arg9;
sp40.z = argA;
sp34.x = argB;
sp34.y = argC;
sp34.z = argD;
sp28.x = sp34.x - sp40.x;
sp28.y = sp34.y - sp40.y;
sp28.z = sp34.z - sp40.z;
Center.x = sp34.x;
Center.y = sp34.y;
Center.z = sp34.z;
var_f29 = (sp28.x * sp28.x) + (sp28.z * sp28.z);
CRot.x = atan2d(sp28.y, sqrtf(var_f29));
CRot.y = atan2d(-sp28.x, -sp28.z);
CRot.z = 0.0f;
var_f28 = (sp28.z * sp28.z) + ((sp28.x * sp28.x) + (sp28.y * sp28.y));
CZoom = sqrtf(var_f28);
}
float fn_1_2F08(float arg8, float arg9, float argA)
{
float var_f31;
float var_f30;
float var_f29;
var_f30 = fmod(arg9 - arg8, 360.0);
var_f31 = var_f30;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 > 180.0f) {
var_f31 -= 360.0f;
}
var_f29 = fmod(arg8 + (argA * var_f31), 360.0);
var_f31 = var_f29;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
return var_f31;
}
float fn_1_3024(float arg8, float arg9)
{
float var_f31;
float var_f30;
var_f30 = fmod(arg9 - arg8, 360.0);
var_f31 = var_f30;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 > 180.0f) {
var_f31 -= 360.0f;
}
return var_f31;
}
void fn_1_30D8(float *arg1, float *arg2, float *arg3, float *arg4)
{
*arg2 = *arg3 = *arg4 = 0.0f;
*arg2 = *arg3 = *arg4 = 0.0f;
}
void fn_1_310C(float arg8, float arg9, float argA, float *arg0, float *arg1, float *arg2)
{
Mtx sp38;
Mtx sp8;
if (arg8 != 0.0f) {
PSMTXRotRad(sp38, 88, 0.017453292f * arg8);
} else {
PSMTXIdentity(sp38);
}
if (arg9 != 0.0f) {
PSMTXRotRad(sp8, 89, 0.017453292f * arg9);
PSMTXConcat(sp38, sp8, sp38);
}
if (argA != 0.0f) {
PSMTXRotRad(sp8, 90, 0.017453292f * argA);
PSMTXConcat(sp38, sp8, sp38);
}
fn_1_30D8(NULL, arg0, arg1, arg2);
}

1239
src/REL/m417Dll/player.c Normal file

File diff suppressed because it is too large Load diff

203
src/REL/m417Dll/sequence.c Normal file
View file

@ -0,0 +1,203 @@
#include "ext_math.h"
#include "game/audio.h"
#include "game/hsfdraw.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "REL/m417Dll.h"
typedef struct UnkM417Struct7 {
/* 0x00 */ char unk00[0x10];
/* 0x10 */ u32 unk_10;
/* 0x14 */ char unk14[0x10];
/* 0x24 */ s32 unk_24;
/* 0x28 */ u32 unk_28;
/* 0x2C */ s32 unk_2C[4];
/* 0x3C */ s32 unk_3C[4];
/* 0x3C */ s32 unk_4C[4];
/* 0x5C */ u32 unk_5C;
} UnkM417Struct7; /* size = unknown */
void fn_1_BD9C(omObjData *object);
void fn_1_BFB0(omObjData *object);
void fn_1_C050(omObjData *object);
void fn_1_C434(omObjData *object);
void fn_1_C78C(omObjData *object);
extern omObjData *lbl_1_bss_8AC;
extern s32 lbl_1_bss_8A8;
omObjFunc fn_1_BCAC(Process *arg0)
{
CRot.x = -80.5f;
CRot.y = CRot.z = 0.0f;
Center.x = 0.0f;
Center.y = 0.0f;
Center.z = 0.0f;
CZoom = 1000.0f;
lbl_1_bss_8AC = omAddObjEx(arg0, 30, 1, 0, -1, fn_1_BFB0);
return fn_1_BD9C;
}
void fn_1_BD9C(omObjData *object)
{
Vec sp8;
float var_f31;
UnkM417Struct7 *var_r31;
s32 var_r29;
var_r31 = object->data;
{
Vec sp2C[2] = { { -400.0f, 0.0f, -200.0f }, { 0.0f, 150.0f, 0.0f } };
Vec sp14[2] = { { -50.0f, 30.0f, 1500.0f }, { -50.0f, 0.0f, 2700.0f } };
var_r29 = 60;
fn_1_5B0(object);
if (var_r31->unk_10 < var_r29) {
var_f31 = 0.0f;
} else {
var_f31 = 0.0055555557f * (var_r31->unk_10 - var_r29);
}
PSVECSubtract(&sp2C[1], &sp2C[0], &sp8);
PSVECScale(&sp8, &sp8, var_f31);
PSVECAdd(&sp2C[0], &sp8, &sp8);
Center.x = sp8.x;
Center.y = sp8.y;
Center.z = sp8.z;
PSVECSubtract(&sp14[1], &sp14[0], &sp8);
PSVECScale(&sp8, &sp8, var_f31);
PSVECAdd(&sp14[0], &sp8, &sp8);
CRot.x = sp8.x;
CRot.y = sp8.y;
CRot.z = 0.0f;
CZoom = sp8.z;
if (var_f31 >= 1.0f) {
fn_1_800(object);
}
}
}
void fn_1_BFB0(omObjData *object)
{
object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M417, 5));
object->trans.x = -300.0f;
object->trans.z = -200.0f;
object->trans.y = 0.0f;
object->rot.y = 20.0f;
object->work[0] = object->work[1] = 0;
object->func = fn_1_C050;
}
void fn_1_C050(omObjData *object)
{
float var_f31;
float var_f30;
object->work[0] += 1;
switch (object->work[1]) {
case 0:
if (object->work[0] > 0.0f) {
fn_1_7510(-object->trans.x, object->trans.y, -object->trans.z, 1.0f);
object->work[0] = 0;
object->work[1] += 1;
}
break;
case 1:
if (object->work[0] == 60.0f) {
omVibrate(0, 12, 6, 6);
omVibrate(1, 12, 6, 6);
omVibrate(2, 12, 6, 6);
omVibrate(3, 12, 6, 6);
}
if (object->work[0] > 96.0f) {
object->work[0] = 0;
object->work[1] += 1;
}
break;
case 2:
var_f31 = 3.0f * object->work[0];
object->rot.z = var_f31;
var_f30 = 0.5 + (0.5 * -cosd(var_f31));
object->trans.x = -300.0f - (200.0f * var_f30);
object->trans.z = -200.0f - (50.0f * var_f30);
var_f31 = 6.0f * object->work[0];
if (var_f31 >= 180.0f) {
var_f30 = 0.5 + (0.5 * cosd(var_f31));
object->trans.y += -5.0f * var_f30;
}
if (object->work[0] > 60.0f) {
object->work[0] = 0;
object->work[1] += 1;
}
break;
default:
object->work[2] = 0;
object->func = fn_1_C434;
break;
}
object->trans.y += 0.05f * (fn_1_78BC(object->trans.x, 0.0f, object->trans.z) - object->trans.y);
}
void fn_1_C434(omObjData *object)
{
float var_f31;
object->work[0] = (object->work[0] + 1) % 120;
var_f31 = 6.0f * object->work[0];
object->rot.z = 180.0 + (10.0 * sind(var_f31));
var_f31 = 3.0f * object->work[0];
object->rot.x = 5.0 * sind(var_f31);
if (object->work[2] < 120.0f) {
object->work[2] += 1;
}
var_f31 = 100.0f * (-2.0f * (0.008333334f * object->work[2]));
object->trans.y += 0.1f * ((var_f31 + fn_1_78BC(object->trans.x, 0.0f, object->trans.z)) - object->trans.y);
}
omObjFunc fn_1_C658(Process *arg0, omObjData *object)
{
UnkM417Struct7 *var_r31;
s32 var_r30;
s32 var_r29;
s16 var_r28;
s16 var_r27;
var_r31 = object->data;
var_r29 = 1;
if (var_r31->unk_5C == 2) {
var_r29 = 0;
}
for (var_r30 = 0; var_r30 < 4; var_r30++) {
var_r31->unk_4C[var_r30] = -1;
if (!var_r31->unk_2C[var_r30] == var_r29) {
var_r31->unk_4C[var_r30] = var_r31->unk_3C[var_r30];
}
}
for (var_r30 = 0; var_r30 < 4; var_r30++) {
if (var_r31->unk_4C[var_r30] >= 0) {
GWPlayerCoinWinAdd(var_r30, 10);
}
}
HuAudSStreamPlay(1);
var_r31->unk_24 = 1;
lbl_1_bss_8A8 = -1;
return fn_1_C78C;
}
void fn_1_C78C(omObjData *object)
{
UnkM417Struct7 *var_r31;
var_r31 = object->data;
fn_1_5B0(object);
if (lbl_1_bss_8A8 < 0) {
lbl_1_bss_8A8 = MGSeqCreate(5, 3, var_r31->unk_4C[0], var_r31->unk_4C[1], var_r31->unk_4C[2], var_r31->unk_4C[3]);
return;
}
if (!MGSeqStatGet(lbl_1_bss_8A8) && var_r31->unk_28 >= 210.0f) {
var_r31->unk_24 = 2;
fn_1_800(object);
}
}

1098
src/REL/m417Dll/water.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -1562,7 +1562,7 @@ void fn_1_3714(omObjData *object)
for (var_r29 = 0; var_r29 < 2; var_r29++) {
var_r27 = Hu3DHookFuncCreate(fn_1_88B4);
var_r26 = &Hu3DData[var_r27];
var_r26->unk_120 = (ParticleData *)lbl_1_bss_24; // TODO fix this?
var_r26->unk_120 = lbl_1_bss_24;
Hu3DModelPosSetV(var_r27, &lbl_1_data_200[var_r29]);
Hu3DModelScaleSet(var_r27, 4.0f, 4.0f, 4.0f);
Hu3DModelLayerSet(var_r27, 4);
@ -2200,7 +2200,7 @@ void fn_1_5EBC(omObjData *object)
}
Hu3DModelLayerSet(var_r31->unk_04, 5);
var_r26 = &Hu3DData[var_r31->unk_04];
var_r27 = (UnkModelDataUnk120Struct *)var_r26->unk_120; // TODO fix
var_r27 = var_r26->unk_120;
var_r27->unk_20 = 0;
Hu3DModelAttrSet(var_r31->unk_04, 1);
var_r31->unk_00 = var_r30;
@ -2233,7 +2233,7 @@ void fn_1_6008(omObjData *object)
} else {
Hu3DModelAttrReset(var_r30->unk_04, 1);
var_r26 = &Hu3DData[var_r30->unk_04];
var_r29 = (UnkModelDataUnk120Struct *)var_r26->unk_120;
var_r29 = var_r26->unk_120;
var_r31 = var_r29->unk_3C;
for (var_r27 = var_r25 = 0; var_r27 < var_r29->unk_24; var_r27++, var_r31++) {
if (var_r31->unk_28 <= 0.0f) {
@ -2341,7 +2341,7 @@ s32 fn_1_63B8(s32 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor arg3)
return -1;
}
var_r27 = &Hu3DData[var_r30->unk_04];
var_r29 = (UnkModelDataUnk120Struct *)var_r27->unk_120;
var_r29 = var_r27->unk_120;
var_r31 = var_r29->unk_3C;
for (var_r28 = 0; var_r28 < var_r29->unk_24; var_r28++, var_r31++) {
@ -2759,7 +2759,7 @@ s16 fn_1_795C(AnimData *arg0, s16 arg1)
var_r23 = Hu3DHookFuncCreate(fn_1_80DC);
var_r27 = &Hu3DData[var_r23];
var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), (u32)var_r27->unk_48);
var_r27->unk_120 = (ParticleData *)var_r31;
var_r27->unk_120 = var_r31;
var_r31->unk_38 = arg0;
var_r31->unk_24 = arg1;
var_r31->unk_20 = 0;
@ -2845,11 +2845,11 @@ s16 fn_1_7DC8(s16 arg0)
s16 var_r22;
var_r23 = &Hu3DData[arg0];
var_r26 = (UnkModelDataUnk120Struct *)var_r23->unk_120;
var_r26 = var_r23->unk_120;
var_r22 = Hu3DHookFuncCreate(var_r23->hook);
var_r27 = &Hu3DData[var_r22];
var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), (u32)var_r27->unk_48); // TODO fix
var_r27->unk_120 = (ParticleData *)var_r31;
var_r27->unk_120 = var_r31;
var_r31->unk_38 = var_r26->unk_38;
var_r31->unk_24 = var_r26->unk_24;
var_r24 = var_r31->unk_24;
@ -2923,7 +2923,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1)
s16 var_r19;
UnkModelDataUnk120Hook var_r18;
var_r31 = (UnkModelDataUnk120Struct *)arg0->unk_120;
var_r31 = arg0->unk_120;
if ((var_r31->unk_2C != GlobalCounter) || shadowModelDrawF) {
if ((var_r31->unk_50) && (var_r31->unk_50 != arg0)) {
fn_1_80DC(var_r31->unk_50, arg1);
@ -3071,7 +3071,7 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1)
var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
arg0->rot.x = (atan2d(var_f26, var_f27)) - 90.0;
arg0->rot.y = atan2d(var_f31, var_f30);
var_r29 = (AnimData *)arg0->unk_120; // AnimData ?!
var_r29 = arg0->unk_120;
GXLoadPosMtxImm(arg1, 0);
GXSetNumTevStages(1);
GXSetNumTexGens(1);

2253
src/REL/m431Dll/main.c Normal file

File diff suppressed because it is too large Load diff

816
src/REL/m434Dll/fish.c Normal file
View file

@ -0,0 +1,816 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "REL/m434Dll.h"
#include "math.h"
#include "ext_math.h"
typedef struct bss_7480_struct {
s32 unk0;
s32 unk4;
s32 unk8;
float unkC;
float unk10;
Vec unk14;
} Bss7480Struct;
omObjData *lbl_1_bss_7880;
Bss7480Struct lbl_1_bss_7480[32];
float lbl_1_bss_6480[1024];
u8 lbl_1_bss_6080[1024];
u16 lbl_1_bss_5880[1024];
s32 lbl_1_data_2C0[] = { 0x410005, 0x410006 };
void fn_1_6A88(omObjData *object);
void fn_1_6860(Process *objman)
{
float temp_f31;
Vec spC;
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
omObjData *temp_r28;
for(temp_r31=0; temp_r31<32; temp_r31++) {
lbl_1_bss_7480[temp_r31].unk4 = lbl_1_bss_7480[temp_r31].unk0 = 0;
lbl_1_bss_7480[temp_r31].unkC = lbl_1_bss_7480[temp_r31].unk10 = 0;
lbl_1_bss_7480[temp_r31].unk8 = -1;
}
spC.y = 0;
spC.z = -650;
for(temp_r31=0; temp_r31<32; temp_r31++) {
temp_r30 = temp_r31*32;
spC.x = -650.0f;
for(temp_r29=0; temp_r29<32; temp_r29++, temp_r30++) {
lbl_1_bss_6480[temp_r30] = 0;
lbl_1_bss_6080[temp_r30] = 0;
lbl_1_bss_5880[temp_r30] = 0;
temp_f31 = VECMag(&spC);
if(temp_f31 < 522.0f) {
lbl_1_bss_6080[temp_r30] = 1;
}
spC.x += (1300.0f/32.0f);
}
spC.z += (1300.0f/32.0f);
}
temp_r28 = lbl_1_bss_7880 = omAddObjEx(objman, 30, 1, 0, -1, fn_1_6A88);
temp_r28->work[0] = 0;
}
void fn_1_6A84(void)
{
}
typedef struct work_6A88 {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
s16 unk8;
s16 unkA;
s16 unkC;
s16 unkE;
s32 unk10;
s32 unk14;
s32 unk18;
Vec unk1C;
Vec unk28;
Vec unk34;
Vec unk40;
float unk4C;
} Work6A88;
void fn_1_6D7C(ModelData *model, Mtx mtx);
void fn_1_6DB8(omObjData *object);
s32 fn_1_8254(s32 arg0, Vec *arg1);
void fn_1_6A88(omObjData *object)
{
float temp_f31;
float temp_f30;
s16 sp8[2];
Work6A88 *temp_r31;
s32 temp_r30;
s32 temp_r28;
Work6A88 *temp_r27;
temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, 20*sizeof(Work6A88), MEMORY_DEFAULT_NUM);
object->data = temp_r27;
memset(temp_r27, 0, 20*sizeof(Work6A88));
for(temp_r30=0; temp_r30<2; temp_r30++) {
sp8[temp_r30] = Hu3DModelCreateFile(lbl_1_data_2C0[temp_r30]);
}
temp_r31 = temp_r27;
for(temp_r30=0; temp_r30<20; temp_r30++, temp_r31++) {
temp_r28 = 0;
if(temp_r30 >= 15) {
temp_r28++;
}
temp_r31->unk0 = temp_r28+1;
temp_r31->unk2 = Hu3DModelLink(sp8[temp_r28]);
Hu3DModelCameraSet(temp_r31->unk2, 4);
Hu3DModelLayerSet(temp_r31->unk2, 4);
temp_f31 = frandmod(360);
temp_f30 = frandmod(464);
temp_r31->unk4C = temp_f31;
temp_r31->unk1C.x = temp_f30*sind(temp_f31);
temp_r31->unk1C.y = -50.0f;
temp_r31->unk1C.z = temp_f30*cosd(temp_f31);
temp_r31->unk34.z = frandmod(360);
temp_r31->unk40.y = 1.0f;
temp_r31->unk40.z = 0;
temp_r31->unk10 = 1;
temp_r31->unk14 = 0;
temp_r31->unkE = -1;
temp_r31->unkC = 0;
temp_r31->unk18 = fn_1_8254(-1, &temp_r31->unk1C);
temp_r31->unkA = 20;
}
for(temp_r30=0; temp_r30<2; temp_r30++) {
if(sp8[temp_r30] > 0) {
Hu3DModelKill(sp8[temp_r30]);
}
}
object->work[1] = 140;
object->model[0] = Hu3DHookFuncCreate(fn_1_6D7C);
Hu3DModelCameraSet(object->model[0], 8);
Hu3DModelLayerSet(object->model[0], 7);
object->func = fn_1_6DB8;
}
void fn_1_6DBC(omObjData *object);
void fn_1_6D7C(ModelData *model, Mtx mtx)
{
if(!omPauseChk()) {
fn_1_6DBC(lbl_1_bss_7880);
}
}
void fn_1_6DB8(omObjData *object)
{
}
void fn_1_7DF0(void);
s32 fn_1_84D0(Work6A88 *arg0);
void fn_1_85C4(Work6A88 *arg0, Vec *arg1);
void fn_1_6DBC(omObjData *object)
{
Vec sp8;
float temp_f31;
float temp_f30;
Work6A88 *temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r27;
s32 temp_r26;
s32 temp_r25;
s32 temp_r24;
Work6A88 *temp_r23;
temp_r23 = object->data;
fn_1_7DF0();
if(object->work[1]) {
object->work[1]--;
return;
}
temp_r26 = 0;
temp_r31 = temp_r23;
for(temp_r27=0; temp_r27<20; temp_r27++, temp_r31++) {
temp_r30 = 0;
temp_r24 = 0;
switch(temp_r31->unk4) {
case 0:
if(temp_r31->unkC == 0) {
temp_r24 = fn_1_84D0(temp_r31);
if(temp_r24) {
temp_r30 = 1;
temp_r31->unkC = 60;
}
} else {
temp_r31->unkC--;
}
if(temp_r31->unkC == 0 && temp_r31->unk40.y > temp_r31->unk40.z) {
temp_r30 = 1;
} else {
VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8);
temp_f31 = VECMag(&sp8);
if(temp_f31 < 50.0f) {
temp_r30 = 1;
}
}
if(temp_r30) {
if(temp_r31->unkC == 0) {
temp_f31 = frandmod(1000);
temp_f30 = frandmod(1000);
if(temp_f31 > temp_f30) {
temp_f30 = temp_f31;
}
temp_f30 = 0.53f*temp_f30;
temp_f31 = temp_r31->unk4C+((0.06f*frandmod(1000))-30);
temp_r31->unk4C = temp_f31;
temp_r31->unk28.x = temp_f30*sind(temp_f31);
temp_r31->unk28.z = temp_f30*cosd(temp_f31);
} else {
fn_1_85C4(temp_r31, &temp_r31->unk28);
}
temp_r31->unk28.y = temp_r31->unk1C.y;
temp_r31->unk40.y = 0;
temp_r31->unk40.z = frandmod(200)+100.0f;
temp_r31->unk34.y = 200;
if(temp_r31->unkC) {
temp_r31->unk34.y *= 2.0f;
}
}
VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = atan2d(sp8.x, sp8.z);
if(temp_r31->unkC != 0) {
temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.15f);
temp_r31->unk4C = atan2d(temp_r31->unk28.x, temp_r31->unk28.z);
} else {
temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f);
}
if(temp_r31->unkC != 0) {
temp_r31->unk34.y += (300.0f-temp_r31->unk34.y)*0.02f;
} else {
temp_r31->unk34.y += (75.0f-temp_r31->unk34.y)*0.02f;
}
temp_r31->unk34.x += (temp_r31->unk34.y-temp_r31->unk34.x)*0.2f;
temp_r31->unk1C.x += sind(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f/60.0f)*temp_r31->unk34.x;
temp_r31->unk18 = fn_1_8254(temp_r31->unk18, &temp_r31->unk1C);
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
break;
case 1:
temp_r31->unk34.z += 3.0000002f;
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
if(fn_1_1D54() == 4) {
Hu3DModelAttrSet(temp_r31->unk2, 1);
}
break;
case 2:
if(temp_r31->unk14) {
if(temp_r31->unk8 == 0) {
sp8.x = (0.1f*frandmod(1000)+500.0f)-50.0f;
sp8.y = temp_r31->unk1C.y;
sp8.z = (0.1f*frandmod(1000)+500.0f)-50.0f;
if(temp_r31->unk1C.x < 0.0f) {
sp8.x = -sp8.x;
}
VECSubtract(&sp8, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z);
temp_r31->unk28.x = (1.0f/60.0f)*sp8.x;
temp_r31->unk28.y = 6.666667f;
temp_r31->unk28.z = (1.0f/60.0f)*sp8.z;
temp_r31->unk8++;
HuAudFXPlay(1734);
}
temp_r29 = 0;
if(temp_r31->unk1C.y <= -15.000001f) {
temp_r29 = 1;
}
temp_r31->unk28.y += -0.27222225f;
VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C);
if(!temp_r29 && temp_r31->unk1C.y <= -15.000001f) {
fn_1_43AC(&temp_r31->unk1C);
if(temp_r31->unkE >= 0) {
omVibrate(temp_r31->unkE, 12, 6, 6);
temp_r31->unkE = -1;
}
HuAudFXPlay(1741);
}
sp8 = temp_r31->unk28;
sp8.y = 0;
temp_f31 = VECMag(&sp8);
temp_f31 = atan2d(temp_r31->unk28.y, temp_f31);
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0);
if(temp_r31->unk1C.y <= -50.0) {
temp_r31->unk14 = 0;
temp_r31->unk40.z = 0;
temp_r31->unk40.y = 1;
temp_r31->unk4++;
}
}
break;
case 3:
if(temp_r31->unk40.y > temp_r31->unk40.z) {
temp_r30 = 1;
}
VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8);
temp_f31 = VECMag(&sp8);
if(temp_f31 < 30.000002f) {
temp_r30 = 1;
}
if(temp_r30) {
temp_f31 = frandmod(360);
temp_f30 = (0.08f*frandmod(1000))+20;
temp_r31->unk28.x = temp_f30*sind(temp_f31);
temp_r31->unk28.z = temp_f30*cosd(temp_f31);
temp_r31->unk28.y = -50;
temp_r31->unk1C.y = temp_r31->unk28.y;
temp_r31->unk28.x += 480.00003f;
temp_r31->unk28.z += 480.00003f;
if(temp_r31->unk1C.x < 0.0f) {
temp_r31->unk28.x *= -1.0f;
}
temp_r31->unk40.y = 0;
temp_r31->unk40.z = frandmod(100)+100.0f;
temp_r31->unk34.y = 100;
if(frandmod(100) < 5) {
temp_r31->unk4++;
temp_r31->unk8 = 0;
HuAudFXPlay(1740);
}
}
VECSubtract(&temp_r31->unk28, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = atan2d(sp8.x, sp8.z);
temp_r31->unk34.z = fn_1_6690(temp_r31->unk34.z, temp_r31->unk40.x, 0.07f);
temp_r31->unk34.y += (50.0f-temp_r31->unk34.y)*0.02f;
temp_r31->unk34.x += (temp_r31->unk34.y-temp_r31->unk34.x)*0.2f;
temp_r31->unk1C.x += sind(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x);
temp_r31->unk1C.z += cosd(temp_r31->unk34.z)*((1.0f/60.0f)*temp_r31->unk34.x);
temp_r31->unk40.y += (1.0f/60.0f)*temp_r31->unk34.x;
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, 0, temp_r31->unk34.z, 0);
break;
case 4:
if(temp_r31->unk8 == 0) {
sp8.x = (0.1f*frandmod(1000)+480.00003f)-50.0f;
sp8.y = temp_r31->unk1C.y;
sp8.z = (0.1f*frandmod(1000)+480.00003f)-50.0f;
if(temp_r31->unk1C.x < 0) {
sp8.x = -sp8.x;
}
VECSubtract(&sp8, &temp_r31->unk1C, &sp8);
temp_r31->unk40.x = temp_r31->unk34.z = atan2d(sp8.x, sp8.z);
temp_r31->unk28.x = (1.0f/60.0f)*sp8.x;
temp_r31->unk28.y = 6.666667f;
temp_r31->unk28.z = (1.0f/60.0f)*sp8.z;
temp_r31->unk8++;
}
temp_r29 = temp_r25 = 0;
if(temp_r31->unk1C.y <= -15.000001f) {
temp_r29 = 1;
}
temp_r31->unk28.y += -0.27222225f;
VECAdd(&temp_r31->unk1C, &temp_r31->unk28, &temp_r31->unk1C);
if(temp_r31->unk1C.y <= -15.000001f) {
temp_r25 = 1;
}
if(temp_r29 != temp_r25) {
fn_1_43AC(&temp_r31->unk1C);
if(temp_r31->unk28.y < 0.0f) {
HuAudFXPlay(1741);
}
}
sp8 = temp_r31->unk28;
sp8.y = 0;
temp_f31 = VECMag(&sp8);
temp_f31 = atan2d(temp_r31->unk28.y*0.3f, temp_f31);
Hu3DModelPosSetV(temp_r31->unk2, &temp_r31->unk1C);
Hu3DModelRotSet(temp_r31->unk2, -temp_f31, temp_r31->unk34.z, 0);
if(temp_r31->unk1C.y <= -50.0) {
temp_r31->unk40.z = 0;
temp_r31->unk40.y = 1;
temp_r31->unk4--;
}
break;
}
if(temp_r31->unk4 < 2) {
temp_r26++;
}
}
if(temp_r26 == 0) {
fn_1_1D9C();
}
}
void fn_1_7DF0(void)
{
Vec sp14;
Vec sp8;
float temp_f31;
float temp_f30;
Bss7480Struct *temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
s32 temp_r26;
s32 temp_r25;
s32 temp_r24;
temp_r31 = lbl_1_bss_7480;
temp_r31 = lbl_1_bss_7480;
for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) {
if(temp_r31->unk0 == 0) {
continue;
}
temp_r31->unk0--;
if(temp_r31->unk4) {
temp_r31->unk4--;
temp_r31->unkC += (temp_r31->unk10-temp_r31->unkC)*0.2f;
} else {
if(temp_r31->unk0 < 100.0f) {
temp_r31->unkC *= 0.98f;
}
}
}
for(temp_r30=0; temp_r30<1024; temp_r30++) {
lbl_1_bss_6480[temp_r30] = 0;
}
temp_r31 = lbl_1_bss_7480;
for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) {
if(temp_r31->unk0 == 0) {
continue;
}
temp_r28 = (16.0f/650.0f)*(650.0f+(temp_r31->unk14.x-temp_r31->unkC));
temp_r25 = 1.0f+(temp_r28+((16.0f/650.0f)*(2.0f*temp_r31->unkC)));
temp_r29 = (16.0f/650.0f)*(650.0f+(temp_r31->unk14.z-temp_r31->unkC));
temp_r24 = 1.0f+(temp_r29+((16.0f/650.0f)*(2.0f*temp_r31->unkC)));
if(temp_r28 < 0) {
temp_r28 = 0;
}
if(temp_r25 > 32) {
temp_r25 = 32;
}
if(temp_r29 < 0) {
temp_r29 = 0;
}
if(temp_r24 > 32) {
temp_r24 = 32;
}
temp_f30 = 1.0f/temp_r31->unkC;
sp14.y = 0;
sp14.z = ((1300.0f/32.0f)*temp_r29)-650.0f;
while(temp_r29<temp_r24) {
sp14.x = ((1300.0f/32.0f)*temp_r28)-650.0f;
temp_r26 = temp_r28+(32*temp_r29);
for(temp_r27=temp_r28; temp_r27<temp_r25; temp_r27++, temp_r26++) {
VECSubtract(&temp_r31->unk14, &sp14, &sp8);
temp_f31 = 1.0f-(temp_f30*VECMag(&sp8));
if(temp_f31 > 0.0f) {
lbl_1_bss_6480[temp_r26] += temp_f31;
}
sp14.x += (1300.0f/32.0f);
}
sp14.z += (1300.0f/32.0f);
temp_r29++;
}
}
}
void fn_1_83C8(s32 arg0);
s32 fn_1_8254(s32 arg0, Vec *arg1)
{
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
s32 sp8[9][2] = {
-1,-1,
0,-1,
1,-1,
-1,0,
0,0,
1,0,
-1,1,
0,1,
1,1
};
fn_1_83C8(arg0);
arg0 = -1;
temp_r29 = (16.0f/650.0f)*(650.0f+arg1->x);
temp_r30 = (16.0f/650.0f)*(650.0f+arg1->z);
if(temp_r29 >= 0 && temp_r29 < 32 && temp_r30 >= 0 && temp_r30 < 32) {
arg0 = temp_r29+(32*temp_r30);
for(temp_r31=0; temp_r31<9; temp_r31++) {
temp_r28 = temp_r29+sp8[temp_r31][0];
temp_r27 = temp_r30+sp8[temp_r31][1];
if(temp_r28 >= 0 && temp_r28 < 32 && temp_r27 >= 0 && temp_r27 < 32) {
lbl_1_bss_5880[temp_r28+(32*temp_r27)]++;
}
}
}
return arg0;
}
void fn_1_83C8(s32 arg0)
{
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
s32 sp8[9][2] = {
-1,-1,
0,-1,
1,-1,
-1,0,
0,0,
1,0,
-1,1,
0,1,
1,1
};
if(arg0 < 0 || arg0 >= 1024) {
return;
}
temp_r28 = arg0%32;
temp_r27 = (arg0-temp_r28)/32;
for(temp_r31=0; temp_r31<9; temp_r31++) {
temp_r30 = temp_r28+sp8[temp_r31][0];
temp_r29 = temp_r27+sp8[temp_r31][1];
if(temp_r30 >= 0 && temp_r30 < 32 && temp_r29 >= 0 && temp_r29 < 32) {
lbl_1_bss_5880[temp_r30+(32*temp_r29)]--;
}
}
}
s32 fn_1_84D0(Work6A88 *arg0)
{
float temp_f31;
Vec spC;
Bss7480Struct *temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
temp_r31 = lbl_1_bss_7480;
temp_r28 = 0;
temp_r31 = lbl_1_bss_7480;
for(temp_r29=0; temp_r29<32; temp_r29++, temp_r31++) {
if(temp_r31->unk0 == 0) {
continue;
}
VECSubtract(&temp_r31->unk14, &arg0->unk1C, &spC);
temp_f31 = 1.0f-(VECMag(&spC)/temp_r31->unkC);
if(temp_f31 < 0.3f) {
continue;
}
temp_r30 = 1;
if(temp_r31->unk4) {
temp_r30++;
}
if(temp_r28 < temp_r30) {
temp_r28 = temp_r30;
}
}
return temp_r28;
}
void fn_1_85C4(Work6A88 *arg0, Vec *arg1)
{
Vec sp24;
Vec sp18;
Vec spC;
float temp_f31;
float temp_f30;
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
sp18.x = sp18.y = sp18.z = 0;
temp_f30 = 5000;
sp24.y = 0;
sp24.z = -650;
for(temp_r30=0; temp_r30<32; temp_r30++) {
temp_r31 = 32*temp_r30;
sp24.x = -650;
for(temp_r29=0; temp_r29<32; temp_r29++, temp_r31++) {
if(lbl_1_bss_6480[temp_r31] < 0.15f && lbl_1_bss_6080[temp_r31]) {
VECSubtract(&arg0->unk1C, &sp24, &spC);
temp_f31 = VECMag(&spC);
if(temp_f31 > 81.25f) {
temp_f31 += 162.5f*lbl_1_bss_5880[temp_r31];
if(temp_f31 < temp_f30) {
temp_f30 = temp_f31;
sp18 = sp24;
}
}
}
sp24.x += (1300.0f/32.0f);
}
sp24.z += (1300.0f/32.0f);
}
sp18.x += ((1300.0f/32000.0f)*frandmod(1000))-(1300.0f/64.0f);
sp18.z += ((1300.0f/32000.0f)*frandmod(1000))-(1300.0f/64.0f);
*arg1 = sp18;
}
s32 fn_1_8884(Vec *arg0, float arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6, s32 arg7)
{
float temp_f31;
float temp_f30;
Vec sp24;
Work6A88 *temp_r31;
s32 temp_r30;
s32 temp_r28;
Work6A88 *temp_r23;
temp_r23 = lbl_1_bss_7880->data;
temp_r30 = -1;
temp_r31 = temp_r23;
for(temp_r28=0; temp_r28<20; temp_r28++, temp_r31++) {
if(temp_r31->unk10 == 0) {
continue;
}
VECSubtract(&temp_r31->unk1C, arg0, &sp24);
temp_f30 = VECMag(&sp24);
if(temp_f30 < arg1 || temp_f30 > arg2) {
continue;
}
temp_f31 = atan2d(sp24.x, sp24.z);
temp_f31 = fn_1_67AC(arg3, temp_f31);
if(temp_f31 < arg4 || temp_f31 > arg5) {
continue;
}
temp_r30++;
if(arg6) {
temp_r31->unk14 = 1;
temp_r31->unk10 = 0;
temp_r31->unk4 = 1;
fn_1_83C8(temp_r31->unk18);
temp_r31->unk18 = -1;
temp_r31->unkE = arg7;
HuAudFXPlay(1733);
temp_r30 = temp_r28;
break;
}
}
if(!arg6) {
temp_r30++;
}
return temp_r30;
}
void fn_1_8AEC(s16 arg0, Vec *arg1)
{
Work6A88 *temp_r31;
Work6A88 *temp_r30 = lbl_1_bss_7880->data;
if(arg0 < 0 || arg0 >= 20) {
return;
}
temp_r31 = &temp_r30[arg0];
temp_r31->unk1C = *arg1;
}
void fn_1_8B58(s16 arg0)
{
Work6A88 *temp_r31;
s32 temp_r30;
Work6A88 *temp_r28 = lbl_1_bss_7880->data;
if(arg0 < 0 || arg0 >= 20) {
return;
}
temp_r31 = &temp_r28[arg0];
temp_r31->unk4 = 2;
temp_r31->unk8 = 0;
if(temp_r31->unk1C.x >= 0.0f) {
temp_r30 = 1;
} else {
temp_r30 = 0;
}
fn_1_1C44(temp_r30, temp_r31->unk0);
}
void fn_1_8C14(s32 arg0, Vec *arg1, float arg2)
{
Bss7480Struct *temp_r31;
s32 temp_r30;
temp_r31 = lbl_1_bss_7480;
for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) {
if(temp_r31->unk0 && temp_r31->unk8 == arg0) {
temp_r31->unk0 *= 0.8f;
}
}
temp_r31 = lbl_1_bss_7480;
for(temp_r30=0; temp_r30<32; temp_r30++, temp_r31++) {
if(!temp_r31->unk0) {
temp_r31->unk4 = 30;
temp_r31->unk0 = (60.0f*(3.0f*arg2))+150.0f;
temp_r31->unk8 = arg0;
temp_r31->unk14 = *arg1;
temp_r31->unkC = 0;
temp_r31->unk10 = 150.0f+(250.0f*arg2);
break;
}
}
}
s32 fn_1_8D78(Vec *arg0)
{
s32 temp_r31;
s32 temp_r30;
s32 temp_r29 = -1;
temp_r31 = (16.0f/650.0f)*(670.3125f+arg0->x);
temp_r30 = (16.0f/650.0f)*(670.3125f+arg0->z);
if(temp_r31 >= 0 && temp_r31 < 32 && temp_r30 >= 0 && temp_r30 < 32) {
temp_r29 = temp_r31+(32*temp_r30);
}
return temp_r29;
}
s32 fn_1_8E2C(s32 arg0, Vec *arg1)
{
s32 temp_r31;
s32 temp_r30;
if(arg0 < 0 || arg0 >= 1024) {
arg1->x = arg1->y = arg1->z = 0;
return 0;
}
temp_r31 = arg0%32;
temp_r30 = (arg0-temp_r31)/32;
arg1->x = ((1300.0f/32.0f)*temp_r31)-670.3125f;
arg1->y = 0;
arg1->z = ((1300.0f/32.0f)*temp_r30)-670.3125f;
return 1;
}
s32 fn_1_8F3C(s32 arg0)
{
s32 sp8[9][2] = {
-1,-1,
0,-1,
1,-1,
-1,0,
0,0,
1,0,
-1,1,
0,1,
1,1
};
if(arg0 < 0 || arg0 >= 1024) {
return 0;
}
return lbl_1_bss_5880[arg0];
}
s32 fn_1_8FA0(Vec *arg0)
{
s32 sp24[9][2] = {
-1,-1,
0,-1,
1,-1,
-1,0,
0,0,
1,0,
-1,1,
0,1,
1,1
};
Vec sp18;
Vec spC;
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27 = -1;
float temp_f31;
float temp_f30 = 5000;
sp18.y = 0;
sp18.z = -650;
for(temp_r31=0; temp_r31<32; temp_r31++) {
temp_r30 = temp_r31*32;
sp18.x = -650;
for(temp_r29=0; temp_r29<32; temp_r29++, temp_r30++) {
temp_r28 = lbl_1_bss_5880[temp_r30];
if(temp_r28 > 0) {
VECSubtract(arg0, &sp18, &spC);
temp_f31 = VECMag(&spC)+(0.2f*frandmod(1000));
temp_f31 -= 50.0f*temp_r28;
if(temp_f31 < temp_f30) {
temp_f30 = temp_f31;
temp_r27 = temp_r30;
}
}
sp18.x += (1300.0f/32.0f);
}
sp18.z += (1300.0f/32.0f);
}
return temp_r27;
}

621
src/REL/m434Dll/main.c Normal file
View file

@ -0,0 +1,621 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "REL/m434Dll.h"
#include "math.h"
#include "ext_math.h"
#include "rel_sqrt_consts.h"
typedef struct camera_view {
float zoom;
Vec pos;
Vec rot;
} CameraView;
Vec lbl_1_data_0 = { -700, 2500, -700 };
Vec lbl_1_data_C = { 0.3, -0.8, 0.3 };
Vec lbl_1_data_18 = { 34.75, -24.75, 3500 };
GXColor lbl_1_data_24 = { 255, 255, 255, 255 };
Vec lbl_1_data_28 = { -700, 2500, 700 };
Vec lbl_1_data_34 = { 0, 1, 0 };
Vec lbl_1_data_40 = { 0, 0, 0 };
omObjData *lbl_1_bss_3D4;
omObjData *lbl_1_bss_3D0;
omObjData *lbl_1_bss_3CC;
omObjData *lbl_1_bss_3C8;
omObjData *lbl_1_bss_3C4;
s16 lbl_1_bss_3C2;
s16 lbl_1_bss_3C0;
s32 lbl_1_bss_3BC;
s32 lbl_1_bss_3B8;
s16 lbl_1_bss_3B2[3];
s16 lbl_1_bss_3B0;
s16 lbl_1_bss_3AC[2];
s16 lbl_1_bss_3AA;
s16 lbl_1_bss_3A8;
s16 lbl_1_bss_3A0[4];
s32 lbl_1_bss_39C;
CameraView lbl_1_bss_1C[32];
s32 lbl_1_bss_18;
s32 lbl_1_bss_10[2];
s32 lbl_1_bss_8[2];
s32 lbl_1_bss_4;
float lbl_1_bss_0;
void fn_1_4FC(omObjData *object);
void fn_1_CC8(omObjData *object);
s32 fn_1_10F4(void);
void fn_1_1104(Process *objman);
void fn_1_1684(void);
void fn_1_16B4(void);
void ModuleProlog(void)
{
s32 i;
Process *objman;
OSReport("******* M434ObjectSetup *********\n");
objman = omInitObjMan(50, 8192);
omGameSysInit(objman);
CZoom = 2097.6f;
Center.x = 0;
Center.y = 172;
Center.z = 361;
CRot.x = -32;
CRot.y = 0;
CRot.z = 0;
for(i=0; i<4; i++) {
CZoomM[i] = CZoom;
CenterM[i] = Center;
CRotM[i] = CRot;
}
fn_1_16B4();
Hu3DCameraCreate(15);
Hu3DCameraPerspectiveSet(2, 30, 20, 25000, 1.2f);
Hu3DCameraViewportSet(2, 0, 0, 320, 240, 0, 1);
Hu3DCameraPerspectiveSet(13, 30, 20, 25000, 1.2f);
Hu3DCameraViewportSet(13, 0, 0, 640, 480, 0, 1);
lbl_1_bss_3CC = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti);
lbl_1_bss_3CC->work[0] = 4;
HuAudSndGrpSet(59);
lbl_1_data_C.x = -lbl_1_data_0.x;
lbl_1_data_C.y = -lbl_1_data_0.y;
lbl_1_data_C.z = -lbl_1_data_0.z;
VECNormalize(&lbl_1_data_C, &lbl_1_data_C);
lbl_1_bss_3B0 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24);
Hu3DGLightInfinitytSet(lbl_1_bss_3B0);
Hu3DGLightStaticSet(lbl_1_bss_3B0, 1);
for(i=0; i<4; i++) {
lbl_1_bss_3A0[i] = GWPlayerCfg[i].group;
}
lbl_1_bss_3D4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_4FC);
lbl_1_bss_3D0 = omAddObjEx(objman, 0, 1, 0, -1, fn_1_CC8);
fn_1_1DB0(objman);
fn_1_4854(objman);
fn_1_6860(objman);
fn_1_1104(objman);
}
void fn_1_558(omObjData *object);
void fn_1_4FC(omObjData *object)
{
fn_1_1D64(0);
lbl_1_bss_3AA = 0;
lbl_1_bss_3A8 = 0;
object->func = fn_1_558;
}
s32 lbl_1_data_70 = -1;
void fn_1_C64(omObjData *object);
void fn_1_1638(s32 arg0);
void fn_1_558(omObjData *object)
{
s32 temp_r31;
s32 temp_r29;
s32 sp10[2][4];
s32 sp8[2];
switch(fn_1_1D54()) {
case 0:
lbl_1_bss_3C2 = 60;
lbl_1_bss_3C0 = 60;
fn_1_1D64(1);
lbl_1_bss_10[1] = 60;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
HuAudFXPlay(1736);
break;
case 1:
if(fn_1_10F4() == 2) {
if(lbl_1_bss_10[1] != 0) {
if(--lbl_1_bss_10[1] == 0) {
lbl_1_bss_3BC = MGSeqStartCreate();
HuAudStreamPlay("sound/mu_047a.adp", 1);
}
} else {
if(MGSeqStatGet(lbl_1_bss_3BC) == 0) {
fn_1_1D64(2);
HuAudFXPlay(1738);
lbl_1_bss_3B8 = MGSeqTimerCreate(60);
fn_1_1638(1);
}
if(lbl_1_data_70 < 0 && (MGSeqStatGet(lbl_1_bss_3BC) & 0x10)) {
lbl_1_data_70 = HuAudSeqPlay(67);
}
}
}
break;
case 2:
if(--lbl_1_bss_3C0 == 0) {
lbl_1_bss_3C2--;
MGSeqParamSet(lbl_1_bss_3B8, 1, lbl_1_bss_3C2);
lbl_1_bss_3C0 = 60;
}
if(!lbl_1_bss_3C2 || lbl_1_bss_3A8 == 1) {
fn_1_1D64(3);
lbl_1_bss_10[1] = 60;
lbl_1_bss_3BC = MGSeqFinishCreate();
HuAudStreamFadeOut(30);
HuAudSeqFadeOut(lbl_1_data_70, 100);
}
break;
case 3:
if(lbl_1_bss_3B8 >= 0) {
MGSeqParamSet(lbl_1_bss_3B8, 2, -1);
lbl_1_bss_3B8 = -1;
}
if(MGSeqStatGet(lbl_1_bss_3BC) == 0) {
fn_1_1D64(4);
lbl_1_bss_10[1] = 60;
}
break;
case 4:
if(--lbl_1_bss_10[1] == 0) {
sp8[0] = sp8[1] = 0;
for(temp_r31=0; temp_r31<4; temp_r31++) {
temp_r29 = fn_1_1D74(temp_r31);
sp10[temp_r29][sp8[temp_r29]++] = temp_r31;
}
lbl_1_bss_3AA = fn_1_1CB8();
switch(lbl_1_bss_3AA) {
case -1:
lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[0][0]].character;
lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[0][1]].character;
MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1);
GWPlayerCoinWinSet(sp10[0][0], 10);
GWPlayerCoinWinSet(sp10[0][1], 10);
HuAudSStreamPlay(1);
break;
case 0:
MGSeqDrawCreate();
HuAudSStreamPlay(4);
break;
case 1:
lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[1][0]].character;
lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[1][1]].character;
MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1);
GWPlayerCoinWinSet(sp10[1][0], 10);
GWPlayerCoinWinSet(sp10[1][1], 10);
HuAudSStreamPlay(1);
break;
}
fn_1_1D64(5);
lbl_1_bss_10[1] = 210;
}
break;
case 5:
if(--lbl_1_bss_10[1] == 0) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_C64;
}
break;
}
for(temp_r31=0; temp_r31<4; temp_r31++) {
CZoomM[temp_r31] = CZoom;
CRotM[temp_r31] = CRot;
CenterM[temp_r31] = Center;
}
if(omSysExitReq && !WipeStatGet()) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_C64;
}
}
void fn_1_C64(omObjData *object)
{
if(WipeStatGet()) {
return;
}
fn_1_1E44();
fn_1_4964();
fn_1_6A84();
fn_1_1684();
MGSeqKillAll();
HuAudFadeOut(1);
omOvlReturnEx(1, 1);
OSReport("******* M434Exit *********\n");
}
void fn_1_E44(omObjData *object);
void fn_1_16D8(void);
void fn_1_1950(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6);
void fn_1_1A00(s32 arg0);
void fn_1_1A10(float arg0);
void fn_1_CC8(omObjData *object)
{
lbl_1_bss_8[0] = 0;
lbl_1_bss_8[1] = 140;
fn_1_16D8();
fn_1_1950(302, 0, 125, -188, -24, 28, 0);
fn_1_1A00(1);
object->func = fn_1_E44;
omSetStatBit(object, 0x100);
object->model[0] = Hu3DModelCreateFile(0x410007);
Hu3DModelCameraSet(object->model[0], 4);
Hu3DModelLayerSet(object->model[0], 4);
Hu3DModelPosSet(object->model[0], -50, -40, -540);
Hu3DMotionSpeedSet(object->model[0], 1);
Hu3DModelRotSet(object->model[0], 0, 70, 0);
}
s32 lbl_1_data_A4[] = { 74, 98 };
float lbl_1_data_AC[] = { -120, -267.9 };
void fn_1_10BC(omObjData *object);
void fn_1_E44(omObjData *object)
{
ModelData *temp_r31;
s32 temp_r30;
Vec sp8;
switch(lbl_1_bss_8[0]) {
case 0:
if(--lbl_1_bss_8[1] == 0) {
Hu3DModelAttrSet(object->model[0], 1);
lbl_1_bss_8[0] = 1;
}
for(temp_r30=0; temp_r30<2u; temp_r30++) {
if(lbl_1_bss_4 == lbl_1_data_A4[temp_r30]) {
temp_r31 = &Hu3DData[object->model[0]];
sp8.x = temp_r31->pos.x+(lbl_1_data_AC[temp_r30]*cosd(temp_r31->rot.y));
sp8.y = -15.000001f;
sp8.z = temp_r31->pos.z-(lbl_1_data_AC[temp_r30]*sind(temp_r31->rot.y));
if(temp_r30 == 0) {
fn_1_47EC(&sp8);
HuAudFXPlay(1731);
} else {
fn_1_43AC(&sp8);
HuAudFXPlay(1739);
}
}
}
lbl_1_bss_4++;
break;
case 1:
lbl_1_bss_0 += 0.02f;
if(lbl_1_bss_0 >= 1.0f) {
lbl_1_bss_8[0] = 2;
lbl_1_bss_0 = 1.0f;
object->func = fn_1_10BC;
}
fn_1_1A10(lbl_1_bss_0);
break;
}
}
void fn_1_1788(void);
void fn_1_10BC(omObjData *object)
{
fn_1_1788();
fn_1_1788();
object->func = NULL;
}
s32 fn_1_10F4(void)
{
return lbl_1_bss_8[0];
}
void fn_1_1150(omObjData *object);
u16 lbl_1_data_B4[6] = {
0, 1, 2, 3, 4, 4
};
float lbl_1_data_C0[6][2] = {
0,0,
0,0,
-33,-2,
-9,-2,
11,-2,
31,-2
};
float lbl_1_data_F0[2][2] = {
104, 56,
472, 56
};
typedef struct work_1150 {
s32 unk0;
s16 unk4;
s16 unk6[6];
u16 unk12;
} Work1150;
void fn_1_1104(Process *objman)
{
lbl_1_bss_3C4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_1150);
}
void fn_1_1470(omObjData *object);
void fn_1_1150(omObjData *object)
{
Work1150 *temp_r31;
u32 temp_r30;
s32 temp_r29;
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2*sizeof(Work1150), MEMORY_DEFAULT_NUM);
object->data = temp_r31;
memset(object->data, 0, 2*sizeof(Work1150));
for(temp_r29=0; temp_r29<2; temp_r31++, temp_r29++) {
for(temp_r30=0; temp_r30<6; temp_r30++) {
switch(lbl_1_data_B4[temp_r30]) {
case 0:
temp_r31->unk6[temp_r30] = espEntry(0x61001D, 1, 0);
espPriSet(temp_r31->unk6[temp_r30], 256);
espColorSet(temp_r31->unk6[temp_r30], 0, 0, 0);
espTPLvlSet(temp_r31->unk6[temp_r30], 0.5);
break;
case 1:
temp_r31->unk6[temp_r30] = espEntry((temp_r29 == 0) ? 0x61001B : 0x61001C, 1, 0);
espPriSet(temp_r31->unk6[temp_r30], 256);
break;
case 2:
temp_r31->unk6[temp_r30] = espEntry(0x41000C, 1, 0);
espPriSet(temp_r31->unk6[temp_r30], 256);
espScaleSet(temp_r31->unk6[temp_r30], 0.75, 0.75);
break;
case 3:
temp_r31->unk6[temp_r30] = espEntry(0x41000D, 1, 0);
espPriSet(temp_r31->unk6[temp_r30], 256);
break;
case 4:
temp_r31->unk6[temp_r30] = espEntry(0x610033, 1, 0);
espPriSet(temp_r31->unk6[temp_r30], 255);
break;
}
espDispOff(temp_r31->unk6[temp_r30]);
espDrawNoSet(temp_r31->unk6[temp_r30], 0);
espAttrSet(temp_r31->unk6[temp_r30], 1);
espPosSet(temp_r31->unk6[temp_r30], lbl_1_data_F0[temp_r29][0]+lbl_1_data_C0[temp_r30][0], lbl_1_data_F0[temp_r29][1]+lbl_1_data_C0[temp_r30][1]);
}
temp_r31->unk0 = -1;
}
HuDataDirClose(0x610000);
object->func = fn_1_1470;
}
void fn_1_1470(omObjData *object)
{
float temp_f31;
Work1150 *temp_r31;
s32 temp_r30;
s32 temp_r29;
temp_r31 = object->data;
for(temp_r29=0; temp_r29<2; temp_r29++, temp_r31++) {
if(temp_r31->unk0 >= 0) {
if(temp_r31->unk0 == 0) {
for(temp_r30=0; temp_r30<6; temp_r30++) {
espDispOn(temp_r31->unk6[temp_r30]);
}
temp_r31->unk0++;
}
if(temp_r31->unk12) {
temp_r31->unk12--;
temp_f31 = (0.5*sind((180.0f*temp_r31->unk12)/16.0f))+1.0;
espScaleSet(temp_r31->unk6[4], temp_f31, temp_f31);
espScaleSet(temp_r31->unk6[5], temp_f31, temp_f31);
}
espBankSet(temp_r31->unk6[4], temp_r31->unk4/10);
espBankSet(temp_r31->unk6[5], temp_r31->unk4%10);
}
}
}
void fn_1_1638(s32 arg0)
{
Work1150 *temp_r31;
s32 temp_r30;
temp_r31 = lbl_1_bss_3C4->data;
for(temp_r30=0; temp_r30<2; temp_r30++, temp_r31++) {
temp_r31->unk0 = 0;
}
}
void fn_1_1684(void)
{
HuMemDirectFree(lbl_1_bss_3C4->data);
}
void fn_1_16B4(void)
{
lbl_1_bss_39C = 0;
lbl_1_bss_18 = 0;
}
void fn_1_16D8(void)
{
CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++];
temp_r31->zoom = CZoom;
temp_r31->pos.x = Center.x;
temp_r31->pos.y = Center.y;
temp_r31->pos.z = Center.z;
temp_r31->rot.x = CRot.x;
temp_r31->rot.y = CRot.y;
temp_r31->rot.z = CRot.z;
}
void fn_1_1788(void)
{
CameraView *temp_r31 = &lbl_1_bss_1C[--lbl_1_bss_39C];
CZoom = temp_r31->zoom;
Center.x = temp_r31->pos.x;
Center.y = temp_r31->pos.y;
Center.z = temp_r31->pos.z;
CRot.x = temp_r31->rot.x;
CRot.y = temp_r31->rot.y;
CRot.z = temp_r31->rot.z;
}
void fn_1_1838(CameraView *arg0)
{
CameraView *temp_r30;
CameraView sp8;
sp8 = lbl_1_bss_1C[lbl_1_bss_39C++];
temp_r30 = &sp8;
memcpy(temp_r30, arg0, sizeof(CameraView));
CZoom = arg0->zoom;
Center.x = arg0->pos.x;
Center.y = arg0->pos.y;
Center.z = arg0->pos.z;
CRot.x = arg0->rot.x;
CRot.y = arg0->rot.y;
CRot.z = arg0->rot.z;
}
void fn_1_1950(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6)
{
CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++];
temp_r31->zoom = CZoom = arg0;
temp_r31->pos.x = Center.x = arg1;
temp_r31->pos.y = Center.y = arg2;
temp_r31->pos.z = Center.z = arg3;
temp_r31->rot.x = CRot.x = arg4;
temp_r31->rot.y = CRot.y = arg5;
temp_r31->rot.z = CRot.z = arg6;
}
void fn_1_1A00(s32 arg0)
{
lbl_1_bss_18 = arg0;
}
#define LERP_PARAM(view1, view2, field, weight) ((view1)->field+)
void fn_1_1A10(float arg0)
{
float weight;
CameraView *view1 = &lbl_1_bss_1C[lbl_1_bss_39C-1];
CameraView *view2 = view1-1;
if(lbl_1_bss_39C < 2) {
return;
}
switch(lbl_1_bss_18) {
case 0:
weight = arg0;
break;
case 1:
weight = sind(90.0f*arg0);
break;
case 2:
weight = sind(90.0f*arg0);
weight *= weight;
break;
}
CZoom = view1->zoom+(weight*(view2->zoom-view1->zoom));
Center.x = view1->pos.x+(weight*(view2->pos.x-view1->pos.x));
Center.y = view1->pos.y+(weight*(view2->pos.y-view1->pos.y));
Center.z = view1->pos.z+(weight*(view2->pos.z-view1->pos.z));
CRot.x = view1->rot.x+(weight*(view2->rot.x-view1->rot.x));
CRot.y = view1->rot.y+(weight*(view2->rot.y-view1->rot.y));
CRot.z = view1->rot.z+(weight*(view2->rot.z-view1->rot.z));
}
void fn_1_1C44(s32 arg0, s32 arg1)
{
Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0];
temp_r31->unk4 += arg1;
temp_r31->unk12 = 16;
}
s32 fn_1_1C88(s32 arg0)
{
Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0];
return temp_r31->unk4;
}
s32 fn_1_1CB8(void)
{
s32 temp_r31 = fn_1_1C88(0);
s32 temp_r30 = fn_1_1C88(1);
if(temp_r31 == temp_r30) {
return 0;
}
if(temp_r31 > temp_r30) {
return -1;
} else {
return 1;
}
}
s16 fn_1_1D44(void)
{
return lbl_1_bss_3C2;
}
s32 fn_1_1D54(void)
{
return lbl_1_bss_10[0];
}
void fn_1_1D64(s32 arg0)
{
lbl_1_bss_10[0] = arg0;
}
s32 fn_1_1D74(s32 arg0)
{
return lbl_1_bss_3A0[arg0];
}
s32 fn_1_1D8C(void)
{
return lbl_1_bss_3AA;
}
void fn_1_1D9C(void)
{
lbl_1_bss_3A8 = 1;
}

616
src/REL/m434Dll/map.c Normal file
View file

@ -0,0 +1,616 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfman.h"
#include "game/hsfdraw.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/sprite.h"
#include "game/frand.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "REL/m434Dll.h"
#include "math.h"
#include "ext_math.h"
typedef struct bss_2468_data {
Vec unk0;
u16 unkC;
} Bss2468Data;
typedef struct bss_450_data {
void *unk0;
u32 unk4;
} Bss450Data;
typedef struct bss_3F0_data {
void *unk0;
u16 unk4;
u16 unk6;
u16 unk8;
u16 unkA;
u32 unkC;
s32 unk10;
} Bss3F0Data;
typedef struct struct_data100 {
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
u16 unk8;
} StructData100;
StructData100 lbl_1_data_100[5] = {
{ 200, 200, 200, 200, 0 },
{ 320, 240, 160, 120, 1 },
{ 640, 480, 320, 240, 1 },
{ 640, 480, 640, 480, 0 },
{ 0, 0, 0, 0, 0 },
};
omObjData *lbl_1_bss_5868;
Vec lbl_1_bss_2868[1024];
Bss2468Data lbl_1_bss_2468[64];
s32 lbl_1_bss_2464;
HsfVector2f lbl_1_bss_464[1024];
AnimData *lbl_1_bss_460;
AnimData *lbl_1_bss_45C;
AnimData *lbl_1_bss_458;
Bss450Data lbl_1_bss_450;
Bss450Data lbl_1_bss_448;
Bss450Data lbl_1_bss_440;
Bss3F0Data lbl_1_bss_3F0[4];
Vec lbl_1_bss_3D8[2];
void fn_1_1E64(omObjData *object);
void fn_1_1DB0(Process *objman)
{
"\0"; //Force lbl_1_data_132 to 0
lbl_1_bss_5868 = omAddObjEx(objman, 10, 16, 0, -1, fn_1_1E64);
CenterM[1].y = -CenterM[2].y + -15.000001f;
CRotM[1].x = -CRotM[2].x;
}
void fn_1_28F0(void);
void fn_1_1E44(void)
{
fn_1_28F0();
}
void fn_1_26A4(omObjData *object);
void fn_1_2978(ModelData *model, Mtx mtx);
void fn_1_3004(void);
void fn_1_3128(void);
void fn_1_33A4(ModelData *model, Mtx mtx);
void fn_1_349C(ModelData *model, Mtx mtx);
void fn_1_3594(ModelData *model, Mtx mtx);
void fn_1_3CC8(ModelData *model, Mtx mtx);
void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix);
void fn_1_1E64(omObjData *object)
{
s32 temp_r30;
Vec *temp_r29;
HsfVector2f *temp_r28;
s32 temp_r27;
AnimData *temp_r26;
object->model[9] = Hu3DHookFuncCreate(fn_1_3CC8);
Hu3DModelLayerSet(object->model[9], 1);
Hu3DModelCameraSet(object->model[9], 1);
object->model[1] = Hu3DModelCreateFile(0x410002);
Hu3DModelLayerSet(object->model[1], 2);
Hu3DModelCameraSet(object->model[1], 2);
object->model[0] = Hu3DModelCreateFile(0x410000);
Hu3DModelLayerSet(object->model[0], 2);
Hu3DModelCameraSet(object->model[0], 8);
object->model[8] = Hu3DModelCreateFile(0x410001);
Hu3DModelLayerSet(object->model[8], 2);
Hu3DModelCameraSet(object->model[8], 4);
object->model[3] = Hu3DModelCreateFile(0x410008);
Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000001);
Hu3DModelLayerSet(object->model[3], 2);
Hu3DModelCameraSet(object->model[3], 8);
object->model[4] = Hu3DModelCreateFile(0x410009);
Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001);
Hu3DModelLayerSet(object->model[4], 2);
Hu3DModelCameraSet(object->model[4], 8);
object->model[2] = Hu3DHookFuncCreate(fn_1_2978);
Hu3DModelLayerSet(object->model[2], 3);
Hu3DModelCameraSet(object->model[2], 8);
temp_r29 = lbl_1_bss_2868;
for(temp_r30=0; temp_r30<32; temp_r30++) {
for(temp_r27=0; temp_r27<32; temp_r29++, temp_r27++) {
temp_r29->x = -700.0f+((1400.0f*temp_r27)/31.0f);
temp_r29->y = -15.000001f;
temp_r29->z = -600.0f+((1200.0f*temp_r30)/31.0f);
if(temp_r30 & 0x1) {
temp_r29->x += 700.0f/31.0f;
}
}
}
DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868));
temp_r28 = lbl_1_bss_464;
for(temp_r30=0; temp_r30<1024; temp_r30++, temp_r28++) {
temp_r28->x = 360.0f*((1.0f/256.0f)*frand8());
temp_r28->y = 2.0f*((1.0f/256.0f)*frand8())+0.5f;
}
memset(lbl_1_bss_2468, 0, sizeof(lbl_1_bss_2468));
lbl_1_bss_2464 = 0;
lbl_1_bss_450.unk4 = 16384;
lbl_1_bss_450.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_450.unk4, MEMORY_DEFAULT_NUM);
DCInvalidateRange(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
fn_1_3004();
lbl_1_bss_440.unk4 = 16384;
lbl_1_bss_440.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_440.unk4, MEMORY_DEFAULT_NUM);
fn_1_3128();
lbl_1_bss_45C = HuSprAnimReadFile(0x3D0019);
lbl_1_bss_458 = HuSprAnimReadFile(0x41000A);
HuDataDirClose(0x3D0000);
for(temp_r30=0; temp_r30<4; temp_r30++) {
lbl_1_bss_3F0[temp_r30].unk4 = lbl_1_data_100[temp_r30].unk0;
lbl_1_bss_3F0[temp_r30].unk6 = lbl_1_data_100[temp_r30].unk2;
lbl_1_bss_3F0[temp_r30].unk8 = lbl_1_data_100[temp_r30].unk4;
lbl_1_bss_3F0[temp_r30].unkA = lbl_1_data_100[temp_r30].unk6;
lbl_1_bss_3F0[temp_r30].unk10 = lbl_1_data_100[temp_r30].unk8;
lbl_1_bss_3F0[temp_r30].unkC = GXGetTexBufferSize(lbl_1_bss_3F0[temp_r30].unk8, lbl_1_bss_3F0[temp_r30].unkA, GX_TF_RGB565, GX_FALSE, 0);
lbl_1_bss_3F0[temp_r30].unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_3F0[temp_r30].unkC, MEMORY_DEFAULT_NUM);
memset(lbl_1_bss_3F0[temp_r30].unk0, 0, lbl_1_bss_3F0[temp_r30].unkC);
}
object->model[5] = Hu3DHookFuncCreate(fn_1_33A4);
Hu3DModelLayerSet(object->model[5], 3);
Hu3DModelCameraSet(object->model[5], 2);
object->model[6] = Hu3DHookFuncCreate(fn_1_349C);
Hu3DModelLayerSet(object->model[6], 3);
Hu3DModelCameraSet(object->model[6], 4);
object->model[7] = Hu3DHookFuncCreate(fn_1_3594);
Hu3DModelLayerSet(object->model[7], 5);
Hu3DModelCameraSet(object->model[7], 4);
temp_r26 = HuSprAnimReadFile(0x41000B);
object->model[10] = Hu3DParticleCreate(temp_r26, 100);
Hu3DParticleHookSet(object->model[10], fn_1_443C);
Hu3DModelAttrSet(object->model[10], 1);
Hu3DModelLayerSet(object->model[10], 4);
Hu3DModelCameraSet(object->model[10], 8);
object->func = fn_1_26A4;
}
HsfAttribute *fn_1_2608(s16 model, char *name)
{
HsfData *temp_r31;
HsfAttribute *temp_r30;
s32 temp_r29;
ModelData *temp_r28;
HsfBitmap *temp_r27;
temp_r28 = &Hu3DData[model];
temp_r31 = temp_r28->hsfData;
temp_r30 = temp_r31->attribute;
for(temp_r29=0; temp_r29<temp_r31->attributeCnt; temp_r29++, temp_r30++) {
temp_r27 = temp_r30->bitmap;
if(strcmp(name, temp_r27->name) == 0) {
break;
}
}
if(temp_r29 >= temp_r31->attributeCnt) {
return NULL;
}
return temp_r30;
}
void fn_1_26A4(omObjData *object)
{
s32 temp_r31;
Bss2468Data *temp_r30;
HsfVector2f *temp_r29;
HsfAttribute *temp_r27;
Vec *temp_r25;
s32 temp_r23;
s32 temp_r22;
Bss2468Data *sp8[64];
temp_r27 = fn_1_2608(object->model[1], "sora");
if(temp_r27 != NULL) {
temp_r27->unk30 += 0.0001f;
temp_r27->unk34 -= 0.00005f;
}
temp_r30 = lbl_1_bss_2468;
temp_r22 = 0;
for(temp_r31=0; temp_r31<64; temp_r31++, temp_r30++) {
if(temp_r30->unkC) {
sp8[temp_r22++] = temp_r30;
}
}
temp_r25 = lbl_1_bss_2868;
temp_r29 = lbl_1_bss_464;
for(temp_r31=0; temp_r31<32; temp_r31++) {
for(temp_r23=0; temp_r23<32; temp_r23++, temp_r25++, temp_r29++) {
temp_r25->y = -15.000001f+(2.0f*sind(temp_r29->x));
temp_r29->x += temp_r29->y;
}
}
DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868));
for(temp_r31=0; temp_r31<temp_r22; temp_r31++) {
temp_r30 = sp8[temp_r31];
temp_r30->unkC--;
}
CenterM[1].y = -15.000001f+(-CenterM[2].y);
CRotM[1].x = -CRotM[2].x;
}
void fn_1_28F0(void)
{
s32 temp_r31;
for(temp_r31=0; temp_r31<4; temp_r31++) {
if(lbl_1_bss_3F0[temp_r31].unk0 != NULL) {
HuMemDirectFree(lbl_1_bss_3F0[temp_r31].unk0);
lbl_1_bss_3F0[temp_r31].unk0 = NULL;
}
}
}
GXColor lbl_1_data_139 = { 255, 255, 255, 64 };
float lbl_1_data_140[2][3] = {
0.012f, 0, 0,
0, 0.012f, 0
};
float lbl_1_data_158[2][3] = {
0, 0, 0.5f,
0, 0.5f, 0
};
void fn_1_2978(ModelData *model, Mtx mtx)
{
float temp_f31;
Mtx sp1AC;
Mtx sp17C;
Mtx sp14C;
Mtx sp11C;
Mtx spEC;
Mtx spBC;
Mtx sp8C;
Mtx sp5C;
Mtx sp2C;
GXTexObj spC;
GXLoadPosMtxImm(mtx, GX_PNMTX0);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetNumTexGens(4);
GXInitTexObj(&spC, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP0);
GXInitTexObj(&spC, lbl_1_bss_3F0[1].unk0, lbl_1_bss_3F0[1].unk8, lbl_1_bss_3F0[1].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP1);
MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, spBC);
MTXConcat(spBC, mtx, spBC);
MTXConcat(sp1AC, Hu3DCameraMtx, sp8C);
MTXConcat(sp8C, spBC, spBC);
GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, 0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, sp5C);
MTXConcat(sp5C, mtx, sp5C);
MTXConcat(sp1AC, Hu3DCameraMtx, sp2C);
MTXConcat(sp2C, sp5C, sp5C);
GXLoadTexMtxImm(sp5C, GX_TEXMTX1, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1);
GXSetNumTevStages(2);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevColor(GX_TEVSTAGE1, lbl_1_data_139);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
HuSprTexLoad(lbl_1_bss_45C, 0, GX_TEXMAP2, GX_REPEAT, GX_REPEAT, GX_LINEAR);
GXInitTexObj(&spC, lbl_1_bss_3F0[0].unk0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP3);
GXSetNumIndStages(2);
MTXRotDeg(sp11C, 'X', -90.0f);
temp_f31 = 1.0f/600.0f;
MTXScale(sp14C, temp_f31, temp_f31, temp_f31);
MTXConcat(sp14C, sp11C, sp17C);
sp17C[0][1] = -0.03f;
GXLoadTexMtxImm(sp17C, GX_TEXMTX2, GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX2);
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2);
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
GXSetIndTexMtx(GX_ITM_0, lbl_1_data_140, 0);
GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0);
MTXRotDeg(sp11C, 'X', -90.0f);
temp_f31 = 1.0f/1200.0f;
MTXScale(sp14C, temp_f31, temp_f31, temp_f31);
MTXConcat(sp14C, sp11C, sp17C);
MTXTrans(spEC, 0.5f, 0.5f, 0.0f);
MTXConcat(spEC, sp17C, sp17C);
GXLoadTexMtxImm(sp17C, GX_TEXMTX3, GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX3);
GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3);
GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1);
GXSetIndTexMtx(GX_ITM_1, lbl_1_data_158, 0);
GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec));
GXSetCullMode(GX_CULL_BACK);
GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
GXSetNumIndStages(0);
GXSetTevDirect(GX_TEVSTAGE0);
GXSetTevDirect(GX_TEVSTAGE1);
}
void fn_1_3004(void)
{
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
GXBeginDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
for(temp_r30=0; temp_r30<31; temp_r30++) {
temp_r29 = temp_r30*32;
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 64);
if(temp_r30 & 0x1) {
for(temp_r31=0; temp_r31<32; temp_r31++) {
GXPosition1x16(temp_r29+temp_r31+32);
GXPosition1x16(temp_r29+temp_r31);
}
} else {
for(temp_r31=31; temp_r31>=0; temp_r31--) {
GXPosition1x16(temp_r29+temp_r31);
GXPosition1x16(temp_r29+temp_r31+32);
}
}
}
lbl_1_bss_450.unk4 = GXEndDisplayList();
DCFlushRangeNoSync(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
}
void fn_1_3128(void)
{
GXBeginDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2f32(-0.5f, -0.5f);
GXTexCoord2f32(0, 0);
GXPosition2f32(0.5f, -0.5f);
GXTexCoord2f32(1, 0);
GXPosition2f32(0.5f, 0.5f);
GXTexCoord2f32(1, 1);
GXPosition2f32(-0.5f, 0.5f);
GXTexCoord2f32(0, 1);
GXEnd();
lbl_1_bss_440.unk4 = GXEndDisplayList();
DCFlushRangeNoSync(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
}
void fn_1_32DC(Bss3F0Data *arg0, GXBool arg1)
{
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE);
GXSetTexCopySrc(0, 0, arg0->unk4, arg0->unk6);
GXSetTexCopyDst(arg0->unk8, arg0->unkA, GX_TF_RGB565, arg0->unk10);
GXSetCopyClear(BGColor, 0xFFFFFF);
GXCopyTex(arg0->unk0, arg1);
GXPixModeSync();
DCFlushRange(arg0->unk0, arg0->unkC);
}
void fn_1_33A4(ModelData *model, Mtx mtx)
{
fn_1_32DC(&lbl_1_bss_3F0[1], GX_TRUE);
}
void fn_1_349C(ModelData *model, Mtx mtx)
{
fn_1_32DC(&lbl_1_bss_3F0[2], GX_TRUE);
}
void fn_1_3594(ModelData *model, Mtx mtx)
{
Mtx sp90;
Mtx sp60;
Mtx sp30;
GXTexObj sp10;
fn_1_32DC(&lbl_1_bss_3F0[3], GX_FALSE);
GXLoadPosMtxImm(mtx, GX_PNMTX0);
MTXLightPerspective(sp90, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, sp60);
MTXConcat(sp60, mtx, sp60);
MTXConcat(sp90, Hu3DCameraMtx, sp30);
MTXConcat(sp30, sp60, sp60);
GXLoadTexMtxImm(sp60, GX_TEXMTX0, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
GXSetNumTexGens(1);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
GXInitTexObj(&sp10, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&sp10, GX_TEXMAP0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, 1000.0f);
GXPosition3f32(-1000.0f, -5.000001f, 1000.0f);
GXEnd();
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -70.0f, -1000.0f);
GXPosition3f32(1000.0f, -70.0f, -1000.0f);
GXPosition3f32(1000.0f, -70.0f, 1000.0f);
GXPosition3f32(-1000.0f, -70.0f, 1000.0f);
GXEnd();
fn_1_32DC(&lbl_1_bss_3F0[2], GX_FALSE);
GXInitTexObj(&sp10, lbl_1_bss_3F0[3].unk0, lbl_1_bss_3F0[3].unk8, lbl_1_bss_3F0[3].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&sp10, GX_TEXMAP0);
GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, 1000.0f);
GXPosition3f32(-1000.0f, -5.000001f, 1000.0f);
GXEnd();
}
GXColor lbl_1_data_170 = { 255, 0, 0, 255 };
GXColor lbl_1_data_174 = { 255, 255, 255, 32 };
GXColor lbl_1_data_178 = { 0, 126, 126, 255 };
void fn_1_3CC8(ModelData *model, Mtx mtx)
{
float temp_f31;
Mtx sp44;
Mtx sp14;
Bss2468Data *temp_r31;
s32 temp_r30;
s32 temp_r29;
MTXOrtho(sp44, 0, 480, 0, 640, 0, 100);
GXSetProjection(sp44, GX_ORTHOGRAPHIC);
MTXIdentity(sp14);
GXLoadPosMtxImm(sp14, GX_PNMTX0);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_178);
GXSetNumTexGens(0);
HuSprTexLoad(lbl_1_bss_458, 0, GX_TEXMAP0, GX_REPEAT, GX_REPEAT, GX_LINEAR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetScissor(0, 0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2u16(0, 0);
GXPosition2u16(lbl_1_bss_3F0[0].unk8, 0);
GXPosition2u16(lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA);
GXPosition2u16(0, lbl_1_bss_3F0[0].unkA);
GXEnd();
GXSetNumTexGens(1);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXClearVtxDesc();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
temp_r29 = lbl_1_bss_2464;
for(temp_r30=0; temp_r30<64; temp_r29 = (temp_r29+1)%64, temp_r30++) {
temp_r31 = &lbl_1_bss_2468[temp_r29];
if(temp_r31->unkC == 0) {
continue;
}
temp_f31 = (0.2f+cosd((90.0f*temp_r31->unkC)/60.0f))*128.0f;
lbl_1_data_174.a = 255.0f*sind((90.0f*temp_r31->unkC)/60.0f);
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_174);
MTXScale(sp14, 0.5f*temp_f31, 0.5f*temp_f31, 1.0f);
mtxTransCat(sp14, (200.0f*(600.0f+temp_r31->unk0.x))/1200.0f, (200.0f*(600.0f+temp_r31->unk0.z))/1200.0f, 0);
GXLoadPosMtxImm(sp14, GX_PNMTX0);
GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
}
fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE);
}
void fn_1_43AC(Vec *arg0)
{
Bss2468Data *temp_r31;
temp_r31 = &lbl_1_bss_2468[lbl_1_bss_2464];
if(temp_r31->unkC == 0) {
temp_r31->unk0.x = arg0->x;
temp_r31->unk0.y = arg0->y;
temp_r31->unk0.z = arg0->z;
temp_r31->unkC = 60;
lbl_1_bss_2464 = (lbl_1_bss_2464+1)%64;
return;
}
}
void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix)
{
float temp_f31;
float temp_f30;
HsfanimStruct01 *temp_r31;
s32 temp_r29;
s32 temp_r28;
if(particle->unk_00 == 0) {
particle->unk_00 = 1;
temp_r31 = particle->unk_48;
for(temp_r29=0; temp_r29<particle->unk_30; temp_r31++, temp_r29++) {
temp_r31->unk2C = 10;
temp_f31 = ((1.0f/256.0f)*frand8())*360.0f;
temp_r31->unk34.x = (0.2f*sind(temp_f31))*100.0f;
temp_r31->unk34.y = 0;
temp_r31->unk34.z = (0.2f*cosd(temp_f31))*100.0f;
temp_f30 = (100.0f*(0.025f*((1.0f/256.0f)*frand8())))+2.5f;
temp_r31->unk08.x = temp_f30*sind(temp_f31);
temp_r31->unk08.y = (100.0f*(0.025f*(((1.0f/256.0f)*(s32)(frand() & 0x1FF))-1.0f)))+7.5000005f;
temp_r31->unk08.z = temp_f30*cosd(temp_f31);
temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255;
temp_r31->unk40.a = (frand() & 0x1F)+16;
}
}
temp_r28 = 0;
temp_r31 = particle->unk_48;
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
if(temp_r31->unk40.a == 0) {
temp_r28++;
continue;
}
temp_r31->unk34.x += temp_r31->unk08.x;
temp_r31->unk34.y += temp_r31->unk08.y;
temp_r31->unk34.z += temp_r31->unk08.z;
temp_r31->unk08.y += -0.5f;
temp_r31->unk40.a--;
}
if(temp_r28 == particle->unk_30) {
model->attr |= 0x1;
}
DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01));
}
void fn_1_47EC(Vec *arg0)
{
Hu3DModelPosSet(lbl_1_bss_5868->model[10], arg0->x, arg0->y, arg0->z);
Hu3DModelAttrReset(lbl_1_bss_5868->model[10], 1);
}

676
src/REL/m434Dll/player.c Normal file
View file

@ -0,0 +1,676 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/chrman.h"
#include "game/pad.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "REL/m434Dll.h"
#include "math.h"
#include "ext_math.h"
typedef struct data_224_struct {
u16 unk0;
u16 unk2;
float unk4;
float unk8;
u32 unkC;
} Data224Struct;
omObjData *lbl_1_bss_5870[4];
char *lbl_1_data_190[8] = {
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
"dmy-itemhook-r",
};
char *lbl_1_data_1BC[8] = {
"itemhook-r",
"itemhook-r",
"itemhook-r",
"itemhook-r",
"itemhook-r",
"itemhook-r",
"itemhook-r",
"itemhook-r",
};
s32 lbl_1_data_1DC[2] = {
0x410003,
0x410004
};
Vec lbl_1_data_1E4[2] = {
{ -550, 0, 550 },
{ 550, 0, 550 }
};
u32 lbl_1_data_1FC[10] = {
0,
2,
23,
133,
0x41000E,
0x410016,
0x41001E,
0x410026,
0x41002E,
0x410036
};
Data224Struct lbl_1_data_224[9] = {
{ 0, 4, 12, 0, 0x40000001 },
{ 1, 6, 6, 0, 0x40000001 },
{ 0, 8, 6, 0, 0 },
{ 0, 5, 6, 0, 0x40000001 },
{ 1, 5, 6, 0, 0x40000001 },
{ 0, 8, 6, 30, 0 },
{ 0, 9, 6, 0, 0 },
{ 2, 0, 12, 0, 0 },
{ 3, 0, 12, 0, 0 },
};
void fn_1_4988(omObjData *object);
void fn_1_4854(Process *objman)
{
s16 temp_r31;
omObjData *temp_r30;
s16 temp_r29;
s32 sp8[2] = { 0, 0 };
omMakeGroupEx(objman, 0, 4);
omGetGroupMemberListEx(objman, 0);
for(temp_r31=0; temp_r31<4; temp_r31++) {
temp_r30 = lbl_1_bss_5870[temp_r31] = omAddObjEx(objman, 40, 2, 10, 0, fn_1_4988);
temp_r30->work[0] = temp_r31;
temp_r29 = fn_1_1D74(temp_r31);
temp_r30->work[1] = (temp_r29*2)+sp8[temp_r29];
sp8[temp_r29]++;
}
}
void fn_1_4964(void)
{
CharModelKill(-1);
}
typedef struct work_4988 {
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
u32 unk14;
u32 unk18;
float unk1C;
float unk20;
s32 unk24;
Vec unk28;
float unk34;
u16 unk38;
s16 unk3A;
s16 unk3C;
s16 unk3E;
float unk40;
float unk44;
float unk48;
float unk4C;
float unk50;
s32 unk54;
s16 unk58[3];
s32 unk60;
float unk64;
s32 unk68;
u16 unk6C;
s32 unk70;
Vec unk74;
s16 unk80;
float unk84;
Vec unk88;
Vec unk94;
} Work4988;
void fn_1_4DF4(omObjData *object);
void fn_1_60AC(omObjData *arg0, u32 arg1);
void fn_1_4988(omObjData *object)
{
Work4988 *temp_r31;
s16 temp_r29;
s32 temp_r28;
s32 temp_r27;
float sp1C[4] = { 0.5f, 0.65f, 0.8f, 1.0f };
s32 spC[4] = { 1, 1, 2, 2 };
s32 sp8;
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work4988), MEMORY_DEFAULT_NUM);
temp_r31 = object->data;
memset(temp_r31, 0, sizeof(Work4988));
temp_r27 = object->work[0];
temp_r28 = GWPlayerCfg[temp_r27].character;
temp_r31->unk8 = temp_r28;
sp8 = temp_r31->unkC = 0;
temp_r31->unk0 = (object->work[1] >> 1) & 0x1;
temp_r31->unk4 = object->work[1] & 0x1;
temp_r31->unk6C = 0;
temp_r31->unk64 = sp1C[GWPlayerCfg[temp_r27].diff & 0x3];
temp_r31->unk68 = spC[GWPlayerCfg[temp_r27].diff & 0x3];
object->model[0] = CharModelCreate(temp_r28, 8);
CharModelStepTypeSet(temp_r28, 3);
Hu3DModelCameraSet(object->model[0], 4);
Hu3DModelLayerSet(object->model[0], 4);
object->model[1] = Hu3DModelCreateFile(lbl_1_data_1DC[temp_r31->unk0]);
Hu3DModelCameraSet(object->model[1], 4);
Hu3DModelLayerSet(object->model[1], 4);
Hu3DModelHookSet(object->model[0], lbl_1_data_190[temp_r31->unkC], object->model[1]);
Hu3DModelClusterAttrSet(object->model[1], 0, 0xC0000001);
for(temp_r29=0; temp_r29<10; temp_r29++) {
if(lbl_1_data_1FC[temp_r29] < 0x10000) {
object->motion[temp_r29] = CharModelMotionCreate(temp_r28, lbl_1_data_1FC[temp_r29]);
} else {
object->motion[temp_r29] = Hu3DJointMotionFile(object->model[0], temp_r28+lbl_1_data_1FC[temp_r29]);
}
}
CharModelMotionDataClose(temp_r28);
object->trans.x = temp_r31->unk88.x = ((2.0f*object->work[1])*100.0f)-300.0f;
object->trans.y = temp_r31->unk88.y = -70;
object->trans.z = temp_r31->unk88.z = 0;
temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0;
temp_r31->unk40 = temp_r31->unk44 = 0;
temp_r31->unk48 = 0;
temp_r31->unk4C = 0.02f;
temp_r31->unk84 = 55;
temp_r31->unk28 = lbl_1_data_1E4[temp_r31->unk0];
temp_r31->unk28.y = object->trans.y;
temp_r31->unk34 = 400;
temp_r31->unk54 = 0;
for(temp_r29=0; temp_r29<3; temp_r29++) {
temp_r31->unk58[temp_r29] = -1;
}
temp_r31->unk50 = 0;
temp_r31->unk10 = -1;
temp_r31->unk60 = 0;
fn_1_60AC(object, 0);
temp_r31->unk38 = 0;
object->func = fn_1_4DF4;
}
void fn_1_4E50(omObjData *object);
void fn_1_5BEC(omObjData *object);
void fn_1_4DF4(omObjData *object)
{
Work4988 *temp_r31 = object->data;
fn_1_5BEC(object);
temp_r31->unk3C++;
temp_r31->unk38 = 0;
object->func = fn_1_4E50;
}
void fn_1_5AB0(omObjData *object);
void fn_1_5C98(omObjData *object);
void fn_1_64C0(omObjData *object);
float fn_1_67AC(float arg0, float arg1);
//Issues with assignment of temp_f30
//Scratch is at https://decomp.me/scratch/EqCuG
void fn_1_4E50(omObjData *object)
{
float temp_f31;
float temp_f30;
float temp_f28;
Work4988 *temp_r31 = object->data;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27 = 0;
Mtx sp2C;
Vec sp20;
char *sp14[3] = {
"f0",
"f1",
"f2"
};
float spC[2] = { 0.05, 0.02 };
temp_r31->unk14 = 0;
temp_r31->unk18 = 0;
temp_r31->unk20 = 0;
temp_r31->unk1C = 0;
if(fn_1_1D54() == 2) {
if(GWPlayerCfg[object->work[0]].iscom) {
fn_1_5C98(object);
} else {
temp_r31->unk18 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx];
temp_r31->unk14 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx];
temp_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx];
temp_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx];
temp_r31->unk20 = atan2d(temp_f31, temp_f30);
temp_r31->unk1C = (1.0f/72.0f)*VECMagPoint(temp_f31, temp_f30, 0);
if(temp_r31->unk1C > 1.0f) {
temp_r31->unk1C = 1.0f;
}
}
}
temp_r31->unk60 = 0;
switch(temp_r31->unk38) {
case 0:
temp_r27 = 1;
if(temp_r31->unk1C > spC[temp_r31->unk24]) {
temp_r31->unk24 = 1;
temp_r31->unk44 = temp_r31->unk20;
temp_r31->unk94.x += 225.0f*(temp_r31->unk1C*sind(temp_r31->unk20))*(1.0f/60.0f);
temp_r31->unk94.z += 225.0f*(temp_r31->unk1C*cosd(temp_r31->unk20))*(1.0f/60.0f);
temp_r31->unk48 = 0.2f;
temp_r31->unk4C = 0;
if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
fn_1_60AC(object, 1);
CharModelMotionSpeedSet(temp_r31->unk8, temp_r31->unk1C);
}
if(temp_r31->unk1C > 0.75f && (temp_r31->unk3A & 0x7) == 0) {
fn_1_8C14(object->work[0], &temp_r31->unk88, temp_r31->unk1C);
if((temp_r31->unk3A & 0xF) == 0) {
fn_1_43AC(&temp_r31->unk88);
}
}
} else {
temp_r31->unk24 = 0;
if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
fn_1_60AC(object, 0);
}
}
if(temp_r31->unk14 & PAD_BUTTON_A) {
temp_r31->unk38 = 1;
temp_r31->unk3C = 0;
} else if(temp_r31->unk14 & PAD_BUTTON_B) {
temp_r31->unk38 = 3;
temp_r31->unk3C = 0;
temp_r31->unk3A = 0;
} else {
temp_r31->unk60 = 1;
}
break;
case 1:
temp_r31->unk24 = 0;
if(temp_r31->unk3C == 0) {
fn_1_60AC(object, 2);
temp_r31->unk3A = 0;
temp_r31->unk3C++;
} else if(temp_r31->unk3C == 1 && temp_r31->unk3A > 30.0f) {
if(temp_r31->unk54 < 3) {
temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -30, 30, 1, object->work[0]);
if(temp_r28 >= 0) {
temp_r31->unk58[temp_r31->unk54++] = temp_r28;
omVibrate(object->work[0], 12, 6, 6);
}
}
temp_r31->unk38 = 2;
temp_r31->unk3A = 0;
temp_r31->unk3C = 0;
}
break;
case 2:
if(temp_r31->unk3C == 0) {
if(!(temp_r31->unk18 & PAD_BUTTON_A)) {
temp_r31->unk24 = 0;
fn_1_60AC(object, 5);
temp_r31->unk3A = 0;
temp_r31->unk3C++;
} else {
temp_f28 = fn_1_67AC(temp_r31->unk40, temp_r31->unk20);
if(temp_f28 > 10.0f) {
temp_f28 = 10.0f;
} else if(temp_f28 < -10.0f) {
temp_f28 = -10.0f;
}
if(temp_r31->unk1C > spC[temp_r31->unk24] && fabs(temp_f28) > 5.0) {
temp_r31->unk24 = 1;
temp_r31->unk44 = temp_r31->unk40+temp_f28;
temp_r31->unk48 = 0.2f;
temp_r31->unk4C = 0;
if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
fn_1_60AC(object, 4);
CharModelMotionSpeedSet(temp_r31->unk8, 0.5f);
}
if(temp_r31->unk54 < 3) {
temp_r28 = fn_1_8884(&temp_r31->unk88, 20, 150, temp_r31->unk40, -15, 15, 1, object->work[0]);
if(temp_r28 >= 0) {
temp_r31->unk58[temp_r31->unk54++] = temp_r28;
omVibrate(object->work[0], 12, 6, 6);
}
}
} else {
temp_r31->unk24 = 0;
if(CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
fn_1_60AC(object, 3);
}
}
}
} else {
if(temp_r31->unk3A > 30.0f) {
temp_r31->unk38 = 0;
}
}
break;
case 3:
temp_r31->unk24 = 0;
if(temp_r31->unk3C == 0) {
temp_r31->unk3E = 0;
VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp20);
temp_r31->unk44 = atan2d(sp20.x, sp20.z);
temp_f28 = VECMag(&sp20);
if(temp_f28 < temp_r31->unk34) {
temp_r31->unk3E++;
fn_1_60AC(object, 6);
} else {
fn_1_60AC(object, 0);
}
temp_r31->unk3A = 0;
temp_r31->unk3C++;
}
if(temp_r31->unk3E) {
if(temp_r31->unk3A > 36.0f) {
for(temp_r29=0; temp_r29<temp_r31->unk54; temp_r29++) {
fn_1_8B58(temp_r31->unk58[temp_r29]);
}
temp_r31->unk54 = 0;
temp_r31->unk3E = 0;
}
}
if(temp_r31->unk3A > 60.0f) {
temp_r31->unk38 = 0;
}
break;
}
VECAdd(&temp_r31->unk88, &temp_r31->unk94, &temp_r31->unk88);
temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0;
fn_1_64C0(object);
temp_f28 = 0;
if(temp_r31->unk54) {
temp_f28 = (temp_r31->unk54*10)+10;
}
temp_r31->unk50 += (temp_f28-temp_r31->unk50)*0.3f;
Hu3DData[object->model[1]].unk_A4[0] = temp_r31->unk50;
Hu3DModelObjMtxGet(object->model[0], lbl_1_data_190[temp_r31->unkC], sp2C);
for(temp_r29=0; temp_r29<temp_r31->unk54; temp_r29++) {
Hu3DModelObjPosGet(object->model[1], sp14[temp_r29], &sp20);
MTXMultVec(sp2C, &sp20, &sp20);
fn_1_8AEC(temp_r31->unk58[temp_r29], &sp20);
}
fn_1_5BEC(object);
if(fn_1_1D54() == 5 && temp_r27) {
temp_r31->unk38 = 0;
object->func = fn_1_5AB0;
}
}
s32 fn_1_6248(omObjData *object);
void fn_1_5AB0(omObjData *object)
{
Work4988 *temp_r31 = object->data;
s32 sp8[2] = { -1, 1 };
fn_1_5BEC(object);
switch(temp_r31->unk38) {
case 0:
temp_r31->unk38++;
break;
case 1:
Hu3DModelHookReset(object->model[0]);
Hu3DModelAttrSet(object->model[1], 1);
if(sp8[temp_r31->unk0] == fn_1_1D8C()) {
fn_1_60AC(object, 7);
} else {
fn_1_60AC(object, 8);
}
temp_r31->unk44 = 0;
temp_r31->unk48 = 0;
temp_r31->unk4C = 0.005f;
temp_r31->unk38++;
break;
case 2:
if(fn_1_6248(object)) {
temp_r31->unk38++;
}
break;
}
}
float fn_1_6690(float arg0, float arg1, float arg2);
void fn_1_5BEC(omObjData *object)
{
Work4988 *temp_r31 = object->data;
temp_r31->unk3A++;
object->trans.x = temp_r31->unk88.x;
object->trans.y = temp_r31->unk88.y;
object->trans.z = temp_r31->unk88.z;
temp_r31->unk48 += temp_r31->unk4C;
if(temp_r31->unk48 > 0.45f) {
temp_r31->unk48 = 0.45f;
}
temp_r31->unk40 = fn_1_6690(temp_r31->unk40, temp_r31->unk44, temp_r31->unk48);
object->rot.y = temp_r31->unk40;
}
void fn_1_5C98(omObjData *object)
{
Vec sp8;
Work4988 *temp_r31 = object->data;
s32 temp_r30;
s32 temp_r29 = 0;
s32 temp_r28;
switch(temp_r31->unk6C) {
case 0:
if(temp_r31->unk60) {
temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88);
if(temp_r31->unk70 < 0 || temp_r31->unk54 >= temp_r31->unk68 || fn_1_1D44() < 10) {
temp_r29 = 1;
}
if(temp_r31->unk54 && temp_r29) {
temp_r31->unk6C = 3;
temp_r31->unk80 = 0;
} else if(temp_r31->unk70 >= 0) {
temp_r31->unk6C = 1;
temp_r31->unk80 = 0;
fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74);
temp_r31->unk74.y = temp_r31->unk88.y;
}
}
break;
case 1:
temp_r31->unk1C = 0.73f*temp_r31->unk64;
if(temp_r31->unk54 && fn_1_1D44() < 10) {
temp_r31->unk6C = 0;
} else {
temp_r28 = fn_1_8D78(&temp_r31->unk88);
if(fn_1_8F3C(temp_r28) > 0) {
temp_r31->unk6C = 2;
temp_r31->unk80 = 0;
} else {
VECSubtract(&temp_r31->unk74, &temp_r31->unk88, &sp8);
temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), temp_r31->unk64*0.25f);
temp_r30 = 0;
if(VECMag(&sp8) < 50.0f) {
temp_r30 = 1;
}
if(temp_r30 && fn_1_8F3C(temp_r31->unk70) > 0) {
temp_r31->unk6C = 2;
temp_r31->unk80 = 0;
} else {
temp_r31->unk80++;
if(temp_r30 || temp_r31->unk80 > 60.0f) {
if(temp_r30 || frandmod(1000) < 10) {
temp_r31->unk70 = fn_1_8FA0(&temp_r31->unk88);
fn_1_8E2C(temp_r31->unk70, &temp_r31->unk74);
temp_r31->unk74.y = temp_r31->unk88.y;
temp_r31->unk80 = 0;
if(temp_r31->unk70 < 0) {
temp_r31->unk6C = 0;
}
}
}
}
}
}
break;
case 2:
temp_r31->unk80++;
if(temp_r31->unk80 < 120*temp_r31->unk64) {
temp_r31->unk1C = 0.4f;
temp_r31->unk20 = temp_r31->unk40+10.0f;
temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_A;
} else {
temp_r31->unk6C = 0;
}
break;
case 3:
temp_r31->unk1C = 0.75f+(0.25f*temp_r31->unk64);
VECSubtract(&temp_r31->unk28, &temp_r31->unk88, &sp8);
temp_r31->unk20 = fn_1_6690(temp_r31->unk40, atan2d(sp8.x, sp8.z), 0.2f);
if(VECMag(&sp8) < temp_r31->unk34-30.000002f) {
temp_r31->unk14 = temp_r31->unk18 = PAD_BUTTON_B;
temp_r31->unk6C = 0;
}
break;
}
}
void fn_1_60AC(omObjData *arg0, u32 arg1)
{
float temp_f31;
Work4988 *temp_r30 = arg0->data;
if(temp_r30->unk10 != arg1 && arg1 < 9) {
temp_f31 = lbl_1_data_224[arg1].unk4;
if(temp_r30->unk10 < 0) {
temp_f31 = 0;
}
temp_r30->unk10 = arg1;
CharModelMotionShiftSet(temp_r30->unk8, arg0->motion[lbl_1_data_224[arg1].unk0], 0, temp_f31, lbl_1_data_224[arg1].unkC);
CharModelMotionSpeedSet(temp_r30->unk8, 1.0f);
if(lbl_1_data_224[arg1].unk2) {
Hu3DMotionOverlaySet(arg0->model[0], arg0->motion[lbl_1_data_224[arg1].unk2]);
Hu3DMotionOverlayTimeSet(arg0->model[0], lbl_1_data_224[arg1].unk8);
Hu3DData[arg0->model[0]].unk_78 = 1.0f;
} else {
Hu3DMotionOverlayReset(arg0->model[0]);
}
}
}
s32 fn_1_6248(omObjData *object)
{
Work4988 *temp_r31 = object->data;
s32 temp_r30 = 0;
if(CharModelMotionEndCheck(temp_r31->unk8) && CharModelMotionShiftIDGet(temp_r31->unk8) < 0) {
temp_r30 = 1;
}
return temp_r30;
}
s32 fn_1_62BC(omObjData *arg0, u32 arg1)
{
s32 result = 0;
if(fn_1_6248(arg0)) {
fn_1_60AC(arg0, arg1);
result = 1;
}
return result;
}
s32 fn_1_649C(omObjData *object)
{
Work4988 *sp8 = object->data;
s32 temp_r31 = 0;
return temp_r31;
}
void fn_1_64C0(omObjData *object)
{
float temp_f31;
Vec sp8;
Work4988 *temp_r31;
Work4988 *temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
for(temp_r27=0; temp_r27<2; temp_r27++) {
for(temp_r29=0; temp_r29<4; temp_r29++) {
temp_r31 = lbl_1_bss_5870[temp_r29]->data;
for(temp_r28=0; temp_r28<4; temp_r28++) {
if(temp_r29 == temp_r28) {
continue;
}
temp_r30 = lbl_1_bss_5870[temp_r28]->data;
VECSubtract(&temp_r31->unk88, &temp_r30->unk88, &sp8);
temp_f31 = VECMag(&sp8);
if(temp_f31 < temp_r31->unk84+temp_r30->unk84) {
temp_f31 = 0.5f*((temp_r31->unk84+temp_r30->unk84)-temp_f31);
VECNormalize(&sp8, &sp8);
VECScale(&sp8, &sp8, temp_f31);
VECAdd(&temp_r31->unk88, &sp8, &temp_r31->unk88);
VECSubtract(&temp_r30->unk88, &sp8, &temp_r30->unk88);
}
}
sp8 = temp_r31->unk88;
sp8.y = 0;
temp_f31 = VECMag(&sp8);
if(temp_f31 > 510.0f-temp_r31->unk84) {
VECNormalize(&sp8, &sp8);
VECScale(&sp8, &sp8, -(temp_f31-(510.0f-temp_r31->unk84)));
VECAdd(&sp8, &temp_r31->unk88, &temp_r31->unk88);
}
}
}
}
float fn_1_6690(float arg0, float arg1, float arg2)
{
float temp_f31;
temp_f31 = fmodf(arg1-arg0, 360.0);
if(temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
if(temp_f31 > 180.0f) {
temp_f31 -= 360.0f;
}
temp_f31 = fmodf((arg2*temp_f31)+arg0, 360.0);
if(temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
return temp_f31;
}
float fn_1_67AC(float arg0, float arg1)
{
float temp_f31;
temp_f31 = fmodf(arg1-arg0, 360.0);
if(temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
if(temp_f31 > 180.0f) {
temp_f31 -= 360.0f;
}
return temp_f31;
}

View file

@ -116,8 +116,8 @@ s32 fn_1_2490(void)
Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0, -50, 0);
}
HuWinMesWait(lbl_1_bss_82);
temp_r26 = 0;
lbl_1_bss_80 = temp_r26;
lbl_1_bss_80 = temp_r26 = 0;
espAttrReset(lbl_1_bss_152[10], HUSPR_ATTR_DISPOFF);
espBankSet(lbl_1_bss_152[10], 0);
for(temp_r31=0; temp_r31<=10; temp_r31++) {

View file

@ -650,13 +650,13 @@ static s32 fn_1_157C(void) {
temp_curr = GWPlayer[GWSystem.player_curr].space_curr;
temp_r31 = BoardSpaceFlagGet(0, temp_curr) & 0x600000;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if (temp_r31 == 0x200000) {
fn_1_130C();
} else if (temp_r31 == 0x400000) {
fn_1_128C();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_1670(void) {
@ -1355,7 +1355,7 @@ static void fn_1_4FA8(void) {
static void fn_1_4FD8(void) {
lbl_1_bss_6B4 = GWSystem.player_curr;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if (BoardPlayerSizeGet(lbl_1_bss_6B4) == 2 || GWPlayer[lbl_1_bss_6B4].bowser_suit) {
return;
}
@ -1364,7 +1364,7 @@ static void fn_1_4FD8(void) {
while (lbl_1_bss_8) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_50D4(void) {
@ -1518,13 +1518,13 @@ static void fn_1_5694(s32 arg0) {
static void fn_1_586C(s32 arg0, s32 arg1) {
lbl_1_bss_29 = arg0;
lbl_1_bss_26 = arg1;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_14 = HuPrcChildCreate(fn_1_592C, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_14, fn_1_5B2C);
while (lbl_1_bss_14) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_592C(void) {
@ -1717,7 +1717,7 @@ static void fn_1_63F0(Bss18Work *arg0, omObjData *arg1) {
if (GWPlayer[GWSystem.player_curr].bowser_suit) {
BoardModelHookSet(arg0->unk04, lbl_1_data_604[lbl_1_bss_28], BoardBowserSuitModelGet());
} else {
BoardModelHookSet(arg0->unk04, lbl_1_data_604[lbl_1_bss_28], BoardPlayerModelGetCurr());
BoardModelHookSet(arg0->unk04, lbl_1_data_604[lbl_1_bss_28], BoardPlayerModelGet(GWSystem.player_curr));
}
var_r24 = lbl_1_bss_6C4[lbl_1_data_5DC[lbl_1_bss_29][lbl_1_bss_28]];
if (arg0->unk00_field3 != 0) {

View file

@ -1,228 +0,0 @@
#include "REL/w02Dll.h"
/* DATA */
extern char lbl_1_data_2A8[0x12];
extern char lbl_1_data_2BA[0x0D];
extern char lbl_1_data_2C8[0x10];
/* RODATA*/
extern f32 lbl_1_rodata_38;
extern f32 lbl_1_rodata_3C;
extern f32 lbl_1_rodata_40;
extern f32 lbl_1_rodata_44;
extern f32 lbl_1_rodata_48;
extern f32 lbl_1_rodata_4C;
/* STRUCTS*/
typedef struct {
/* 0x00 */ s16 unk00;
/* 0x02 */ s16 unk02;
/* 0x04 */ s32 unk04;
/* 0x08 */ u8 unk08[0x04];
/* 0x0C */ Vec unk0C;
/* 0x18 */ s16 unk18;
/* 0x1A */ s16 unk1A;
/* 0x1C */ u8 unk1C[0x6];
/* 0x22 */ s16 unk22;
/* 0x24 */ f32 unk24;
/* 0x28 */ s16 unk28;
/* 0x2A */ u8 unk2A[0x2];
/* 0x2C */ Process* unk2C;
/* 0x30 */ s16 unk30[3];
/* 0x36 */ s16 unk36[3];
/* 0x3C */ omObjData* unk3C[3];
/* 0x48 */ s16 unk48[3];
/* 0x4E */ u8 unk4E[0x2];
/* 0x50 */ s32 unk50[3];
/* 0x5C */ u8 unk5C[0x08];
/* 0x64 */ Vec unk64;
/* 0x70 */ Vec unk70;
/* 0x7C */ Vec unk7C;
/* 0x88 */ s32 unk88[3];
/* 0x94 */ s16 unk94;
/* 0x96 */ s16 unk96;
/* 0x98 */ f32 unk98;
/* 0x9C */ s16 unk9C;
} unkW02Dice;
typedef struct {
union {
/* 0x00 */ struct {
u8 unk7 : 1;
u8 unk6 : 1;
u8 unk3 : 3;
u8 unk1 : 2;
u8 unk0 : 1;
};
u8 unk00;
};
/* 0x01 */ u8 unk01;
/* 0x02 */ u8 unk02;
/* 0x03 */ u8 unk03;
/* 0x04 */ u16 unk04;
} unkW02DiceBitfields;
/* EXTERN FUNCTIONS */
void fn_1_13D0(void);
void fn_1_1574(unkW02Dice*); /* extern */
void fn_1_1794(unkW02Dice*); /* extern */
void fn_1_1850(omObjData*); /* extern */
void fn_1_2030(unkW02Dice*); /* extern */
void fn_1_2220(unkW02Dice*); /* extern */
s32 fn_1_233C(unkW02Dice*); /* extern */
void fn_1_23B4(unkW02Dice*, s32 i); /* extern */
void fn_1_272C(unkW02Dice*); /* extern */
/* LOCAL FUNCTIONS */
void fn_1_1254(unkW02Dice* arg0) {
Vec sp8;
s32 i;
OSReport(lbl_1_data_2A8);
arg0->unk2C = HuPrcChildCreate(&fn_1_13D0, 0x2005, 0x2000, 0, boardMainProc);
arg0->unk2C->user_data = arg0;
arg0->unk94 = 0;
arg0->unk9C = 0;
arg0->unk28 = 0;
Hu3D3Dto2D(&arg0->unk0C, 1, &sp8);
/* Initialize Matrix */
arg0->unk64 = arg0->unk70 = arg0->unk7C = sp8;
arg0->unk7C.y = arg0->unk70.y = arg0->unk64.y = lbl_1_rodata_38;
arg0->unk7C.z = arg0->unk70.z = arg0->unk64.z = lbl_1_rodata_3C;
arg0->unk96 = -1;
for (i = 0; i < 3; i++) {
arg0->unk3C[i] = 0;
arg0->unk50[i] = 0;
arg0->unk30[i] = -1;
arg0->unk48[i] = -1;
arg0->unk88[i] = -1;
}
}
void fn_1_13D0(void) {
s32 var_r29;
s32 i;
s32 var_r30_2;
unkW02Dice* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
temp_r31->unk36[0] = temp_r31->unk36[1] = temp_r31->unk36[2] = 0;
var_r29 = 0;
temp_r31->unk96 = 0;
while (temp_r31->unk96 < temp_r31->unk00) {
fn_1_1574(temp_r31);
fn_1_1794(temp_r31);
while (temp_r31->unk9C == 0) {
HuPrcVSleep();
}
fn_1_2220(temp_r31);
while (temp_r31->unk9C != 0) {
HuPrcVSleep();
}
temp_r31->unk96 += 1;
}
for ( i = 0; i < temp_r31->unk00; i++) {
var_r29 += temp_r31->unk36[i];
}
OSReport(lbl_1_data_2BA, var_r29);
while (fn_1_233C(temp_r31) == 0) {
HuPrcVSleep();
}
temp_r31->unk94 = (s16) var_r29;
temp_r31->unk28 = 1;
if (temp_r31->unk22 != 0) {
for (i = 0; i < temp_r31->unk00; i++) {
fn_1_23B4(temp_r31, i);
}
temp_r31->unk2C = NULL;
HuPrcEnd();
}
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1518(unkW02Dice* arg0) {
OSReport(lbl_1_data_2C8);
if (arg0->unk2C) {
HuPrcKill(arg0->unk2C);
}
fn_1_2030(arg0);
fn_1_272C(arg0);
}
void fn_1_1574(unkW02Dice* arg0) {
Vec sp8;
f32 temp_f0;
omObjData* temp_r3;
s32 temp_r28;
unkW02DiceBitfields* temp_r29;
temp_r28 = arg0->unk96;
arg0->unk30[temp_r28] = BoardModelCreate(arg0->unk04, NULL, 0);
arg0->unk98 = lbl_1_rodata_40 + BoardRandMod(arg0->unk1A);
BoardModelMotionStart(arg0->unk30[temp_r28], 0, 0x40000001U);
BoardModelMotionSpeedSet(arg0->unk30[temp_r28], lbl_1_rodata_44);
BoardModelMotionTimeSet(arg0->unk30[temp_r28], arg0->unk98);
temp_r3 = omAddObjEx(boardObjMan, 0x102, 0U, 0U, -1, fn_1_1850);
temp_r29 = (unkW02DiceBitfields*) temp_r3->work;
temp_r29->unk7 = 0;
temp_r29->unk6 = 0;
temp_r29->unk3 = 0;
temp_r29->unk1 = temp_r28;
temp_r29->unk04 = 0;
temp_r29->unk01 = 3;
temp_r29->unk02 = 0;
temp_r3->unk10 = (u32) arg0;
arg0->unk3C[temp_r28] = temp_r3;
sp8 = arg0->unk0C;
sp8.y += (lbl_1_rodata_48 * arg0->unk24);
temp_r3->trans.x = sp8.x;
temp_r3->trans.y = sp8.y;
temp_r3->trans.z = sp8.z;
temp_r3->scale.x = lbl_1_rodata_44;
temp_r3->scale.y = lbl_1_rodata_44;
temp_r3->scale.z = lbl_1_rodata_44;
sp8.z += lbl_1_rodata_4C;
HuAudFXPlay(0x302);
}
void fn_1_1794(unkW02Dice* arg0) {
unkW02DiceBitfields* temp_r30;
temp_r30 = (unkW02DiceBitfields*) arg0->unk3C[arg0->unk96]->work;
while (temp_r30->unk3 != 1) {
HuPrcVSleep();
}
}
s32 fn_1_17F4(unkW02Dice* arg0) {
unkW02DiceBitfields* temp;
if ( arg0->unk96 < 0) {
return 0;
}
temp = (unkW02DiceBitfields*) arg0->unk3C[arg0->unk96]->work;
if (temp->unk3 != 1) {
return 0;
}
return 1;
}
void fn_1_1F94(unkW02Dice* arg0, s32 arg1) {
if (arg0->unk30[arg1] != -1) {
BoardModelKill(arg0->unk30[arg1]);
arg0->unk30[arg1] = -1;
}
if (arg0->unk48[arg1] != -1) {
Hu3DParManKill(arg0->unk48[arg1]);
arg0->unk48[arg1] = -1;
}
}

View file

@ -1,9 +1,308 @@
#include "REL/w02Dll.h"
#include "game/audio.h"
#include "game/pad.h"
#include "game/objsub.h"
#include "game/board/basic_space.h"
Process* lbl_1_bss_50;
s32 lbl_1_bss_54;
Process* lbl_1_bss_50;
void fn_1_2D04();
void fn_1_2D04(void)
{
float temp_f31;
float temp_f30;
float temp_f29;
m02GenDice spEC;
m02GenDice sp4C;
s32 sp24[10] = {
0x0076001C,
0x0076001D,
0x0076001E,
0x0076001F,
0x00760020,
0x00760021,
0x00760022,
0x00760023,
0x00760024,
0x00760025
};
Vec sp18;
Vec spC;
BoardSpace *sp8;
s32 temp_r31;
s16 temp_r30;
s32 temp_r29;
s16 temp_r28;
s32 temp_r27;
s32 temp_r26;
s32 temp_r25;
u16 temp_r24;
temp_r31 = GWSystem.player_curr;
OSReport("gamble start %d\n", temp_r31);
sp8 = BoardSpaceGet(0, GWPlayer[temp_r31].space_curr);
BoardRollDispSet(0);
temp_r28 = BoardModelCreate(0x76000F, NULL, 0);
BoardModelVisibilitySet(temp_r28, 0);
switch(lbl_1_bss_54) {
case 0:
temp_r30 = lbl_1_bss_30[0];
break;
case 1:
temp_r30 = lbl_1_bss_30[1];
break;
case 2:
temp_r30 = lbl_1_bss_30[2];
break;
}
BoardPlayerIdleSet(temp_r31);
BoardPlayerMotBlendSet(temp_r31, -90, 30);
while(!BoardPlayerMotBlendCheck(temp_r31)) {
HuPrcVSleep();
}
BoardCameraViewSet(3);
BoardCameraMotionWait();
BoardModelMotionStart(lbl_1_data_286, 1, 0x40000001);
BoardModelHookSet(temp_r30, "kuri", lbl_1_data_286);
BoardModelVisibilitySet(lbl_1_data_286, 1);
BoardModelMotionTimeSet(temp_r30, 0);
BoardModelAttrReset(temp_r30, 0x40000002);
HuAudFXPlay(813);
while(BoardModelMotionTimeGet(temp_r30) < 30.0f) {
HuPrcVSleep();
}
BoardModelAttrSet(temp_r30, 0x40000002);
BoardModelHookReset(temp_r30);
BoardModelPosGet(temp_r30, &sp18);
BoardModelPosSetV(lbl_1_data_286, &sp18);
fn_1_121C(0x13000A);
spEC.unk00 = 1;
spEC.unk04 = 0x76001B;
spEC.unk08 = sp24;
spEC.unk0C = sp18;
spEC.unk18 = 1;
spEC.unk1A = 10;
spEC.unk22 = 0;
spEC.unk24 = 1;
temp_r25 = frandmod(100);
if(temp_r25 <= 59) {
spEC.unk1C[0] = frandmod(4)+4;
} else if(temp_r25 <= 89) {
if(temp_r25 & 0x1) {
spEC.unk1C[0] = 2;
} else {
spEC.unk1C[0] = 8;
}
spEC.unk1C[0] += frand() & 0x1;
} else {
if(temp_r25 & 0x1) {
spEC.unk1C[0] = 1;
} else {
spEC.unk1C[0] = 10;
}
}
fn_1_1254(&spEC);
while(!fn_1_17F4(&spEC)) {
HuPrcVSleep();
}
temp_r29 = frandmod(45)+45;
HuPrcSleep(temp_r29);
BoardModelPosGet(lbl_1_data_286, &spC);
BoardModelMotionStart(lbl_1_data_286, 4, 0);
temp_f29 = 15;
temp_f31 = 0;
while(1) {
temp_f30 = temp_f29-(0.08166667f*(0.25f*(temp_f31*temp_f31)));
temp_f31++;
spC.y += temp_f30;
if(spC.y >= (250.0f+sp18.y)-130.0f) {
spC.y = (250.0f+sp18.y)-130.0f;
temp_f29 = -10;
temp_f31 = 0;
spEC.unk9C = 1;
}
if(spC.y <= sp18.y) {
spC.y = sp18.y;
spEC.unk9C = 0;
break;
}
BoardModelPosSetV(lbl_1_data_286, &spC);
HuPrcVSleep();
}
BoardModelPosSetV(lbl_1_data_286, &sp18);
BoardModelMotionStart(lbl_1_data_286, 1, 0x40000001);
while(spEC.unk28 == 0) {
HuPrcVSleep();
}
temp_r27 = spEC.unk94;
if(temp_r27 == 10) {
HuAudPlayerVoicePlay(temp_r31, 302);
fn_1_121C(0x130010);
} else {
fn_1_121C(0x13000C);
}
BoardPlayerMotBlendSet(temp_r31, 0, 15);
while(!BoardPlayerMotBlendCheck(temp_r31)) {
HuPrcVSleep();
}
BoardCameraTargetModelSet(-1);
if(temp_r27 != 10) {
sp4C = spEC;
BoardPlayerPosGet(temp_r31, &sp4C.unk0C);
sp4C.unk24 = 1;
sp4C.unk1C[0] = frandmod(10)+1;
if(sp4C.unk1C[0] == temp_r27) {
if(sp4C.unk1C[0] == 9) {
sp4C.unk1C[0]--;
} else {
sp4C.unk1C[0]++;
}
}
fn_1_1254(&sp4C);
while(!fn_1_17F4(&sp4C)) {
HuPrcVSleep();
}
temp_r24 = 0;
while(!(temp_r24 & PAD_BUTTON_A)) {
HuPrcVSleep();
if(GWPlayer[temp_r31].com) {
temp_r29 = frandmod(45)+20;
HuPrcSleep(temp_r29);
temp_r24 = PAD_BUTTON_A;
} else {
temp_r24 = HuPadBtnDown[GWPlayer[temp_r31].port];
}
}
BoardPlayerDiceJumpStart(temp_r31);
while(!BoardPlayerDiceJumpCheck(temp_r31)) {
HuPrcVSleep();
}
sp4C.unk9C = 1;
while(GWPlayer[temp_r31].jump) {
HuPrcVSleep();
}
sp4C.unk9C = 0;
while(sp4C.unk28 == 0) {
HuPrcVSleep();
}
if(sp4C.unk94 > temp_r27) {
fn_1_121C(0x13000D);
} else {
HuAudPlayerVoicePlay(temp_r31, 302);
fn_1_121C(0x13000F);
}
} else {
sp4C.unk94 = 0;
}
fn_1_1518(&spEC);
if(temp_r27 != 10) {
fn_1_1518(&sp4C);
}
BoardPlayerPosGet(temp_r31, &spC);
if(sp4C.unk94 > temp_r27) {
spC.y += 250.0f;
HuAudFXPlay(839);
temp_r29 = BoardCoinChgCreate(&spC, 10);
while(!BoardCoinChgExist(temp_r29)) {
HuPrcVSleep();
}
for(temp_r29=0; temp_r29<10; temp_r29++) {
BoardPlayerCoinsAdd(temp_r31, 1);
HuAudFXPlay(7);
HuPrcSleep(6);
}
fn_1_121C(0x13000E);
} else {
temp_r26 = GWPlayer[temp_r31].space_curr;
BoardCameraTargetSpaceSet(temp_r26);
BoardPlayerMotionShiftSet(temp_r31, 6, 0, 5, 0x40000001);
HuPrcSleep(60);
HuPrcSleep(30);
BoardModelPosSetV(temp_r28, &spC);
BoardModelMotionTimeSet(temp_r28, 0);
BoardModelVisibilitySet(temp_r28, 1);
HuAudFXPlay(1058);
while(BoardModelMotionTimeGet(temp_r28) < BoardModelMotionMaxTimeGet(temp_r28)) {
HuPrcVSleep();
}
omVibrate(temp_r31, 12, 4, 2);
temp_f30 = -4;
for(temp_r29=0; temp_r29<30; temp_r29++) {
spC.y += temp_f30;
temp_f30 *= 1.08f;
BoardPlayerPosSetV(temp_r31, &spC);
HuPrcVSleep();
}
temp_r26 = BoardSpaceFlagSearch(0, 0x80000000);
BoardCameraMoveSet(0);
BoardCameraTargetSpaceSet(temp_r26);
HuPrcVSleep();
BoardCameraMoveSet(1);
BoardSpacePosGet(0, temp_r26, &sp18);
spC = sp18;
spC.y -= 180.0f;
BoardPlayerPosSetV(temp_r31, &spC);
GWPlayer[temp_r31].space_curr = temp_r26;
HuPrcSleep(15);
BoardModelPosSetV(temp_r28, &sp18);
BoardModelMotionTimeSet(temp_r28, 0);
HuAudFXPlay(1058);
while(BoardModelMotionTimeGet(temp_r28) < BoardModelMotionMaxTimeGet(temp_r28)) {
HuPrcVSleep();
}
HuPrcSleep(15);
temp_f29 = 22;
temp_f31 = 1;
while(1) {
temp_f30 = temp_f29-((90.0f/1200.0f)*(0.25f*(temp_f31*temp_f31)));
temp_f31++;
spC.y += temp_f30;
if(spC.y >= sp18.y) {
BoardModelAttrSet(temp_r28, 0x40000004);
}
if(temp_f30 < 0 && spC.y <= sp18.y) {
omVibrate(temp_r31, 12, 4, 2);
temp_f29 = -temp_f30*0.31f;
temp_f31 = 1;
HuAudFXPlay(1068);
if(fabs(temp_f29) <= 5.0) {
break;
}
spC.y = sp18.y;
}
BoardPlayerPosSetV(temp_r31, &spC);
HuPrcVSleep();
}
BoardPlayerPosSetV(temp_r31, &sp18);
HuPrcSleep(90);
BoardPlayerIdleSet(temp_r31);
HuPrcSleep(9);
BoardCameraTargetPlayerSet(temp_r31);
}
BoardModelHookSet(temp_r30, "kuri", lbl_1_data_286);
BoardModelAttrReset(temp_r30, 0x40000002);
if(sp4C.unk94 > temp_r27) {
HuPrcSleep(10);
HuAudFXPlay(815);
}
while(BoardModelMotionTimeGet(temp_r30) < BoardModelMotionMaxTimeGet(temp_r30)) {
HuPrcVSleep();
}
BoardModelHookReset(temp_r30);
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardRollDispSet(1);
BoardModelVisibilitySet(lbl_1_data_286, 0);
BoardModelKill(temp_r28);
HuPrcKill(NULL);
while(1) {
HuPrcVSleep();
}
}
void fn_1_3938(void) {

613
src/REL/w02Dll/gendice.c Normal file
View file

@ -0,0 +1,613 @@
#include "REL/w02Dll.h"
#include "ext_math.h"
typedef struct {
union {
/* 0x00 */ struct {
u8 unk7 : 1;
u8 unk6 : 1;
u8 unk3 : 3;
u8 unk1 : 2;
u8 unk0 : 1;
};
u8 unk00;
};
/* 0x01 */ u8 unk01;
/* 0x02 */ u8 unk02;
/* 0x03 */ u8 unk03;
/* 0x04 */ s16 unk04;
/* 0x06 */ s16 unk06;
} WorkGenDice;
/* EXTERN FUNCTIONS */
void fn_1_13D0(void);
void fn_1_1574(m02GenDice *arg0);
void fn_1_1794(m02GenDice *arg0);
void fn_1_1850(omObjData *object);
void fn_1_1F94(m02GenDice* arg0, s32 arg1);
void fn_1_2030(m02GenDice *arg0);
void fn_1_2100(m02GenDice *arg0, s32 arg1);
void fn_1_2220(m02GenDice *arg0);
s32 fn_1_233C(m02GenDice *arg0);
void fn_1_23FC(m02GenDice *arg0, s32 arg1);
void fn_1_23B4(m02GenDice *arg0, s32 arg1);
void fn_1_272C(m02GenDice *arg0);
/* LOCAL FUNCTIONS */
void fn_1_1254(m02GenDice* arg0) {
Vec sp8;
s32 i;
OSReport("m02GenDiceCreate\n");
arg0->unk2C = HuPrcChildCreate(fn_1_13D0, 0x2005, 0x2000, 0, boardMainProc);
arg0->unk2C->user_data = arg0;
arg0->unk94 = 0;
arg0->unk9C = 0;
arg0->unk28 = 0;
Hu3D3Dto2D(&arg0->unk0C, 1, &sp8);
/* Initialize Matrix */
arg0->unk64[0] = arg0->unk64[1] = arg0->unk7C = sp8;
arg0->unk7C.y = arg0->unk64[1].y = arg0->unk64[0].y = 155;
arg0->unk7C.z = arg0->unk64[1].z = arg0->unk64[0].z = 1400;
arg0->unk96 = -1;
for (i = 0; i < 3; i++) {
arg0->unk3C[i] = 0;
arg0->unk50[i] = 0;
arg0->unk30[i] = -1;
arg0->unk48[i] = -1;
arg0->unk88[i] = -1;
}
}
void fn_1_13D0(void) {
s32 var_r29;
s32 i;
s32 var_r30_2;
m02GenDice* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
temp_r31->unk36[0] = temp_r31->unk36[1] = temp_r31->unk36[2] = 0;
var_r29 = 0;
temp_r31->unk96 = 0;
while (temp_r31->unk96 < temp_r31->unk00) {
fn_1_1574(temp_r31);
fn_1_1794(temp_r31);
while (temp_r31->unk9C == 0) {
HuPrcVSleep();
}
fn_1_2220(temp_r31);
while (temp_r31->unk9C != 0) {
HuPrcVSleep();
}
temp_r31->unk96 += 1;
}
for ( i = 0; i < temp_r31->unk00; i++) {
var_r29 += temp_r31->unk36[i];
}
OSReport("Dice res: %d\n", var_r29);
while (fn_1_233C(temp_r31) == 0) {
HuPrcVSleep();
}
temp_r31->unk94 = (s16) var_r29;
temp_r31->unk28 = 1;
if (temp_r31->unk22 != 0) {
for (i = 0; i < temp_r31->unk00; i++) {
fn_1_23B4(temp_r31, i);
}
temp_r31->unk2C = NULL;
HuPrcEnd();
}
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1518(m02GenDice* arg0) {
OSReport("m02GenDiceKill\n");
if (arg0->unk2C) {
HuPrcKill(arg0->unk2C);
}
fn_1_2030(arg0);
fn_1_272C(arg0);
}
void fn_1_1574(m02GenDice* arg0) {
Vec sp8;
f32 temp_f0;
omObjData* temp_r3;
s32 temp_r28;
WorkGenDice* temp_r29;
temp_r28 = arg0->unk96;
arg0->unk30[temp_r28] = BoardModelCreate(arg0->unk04, NULL, 0);
arg0->unk98 = 0.5f + BoardRandMod(arg0->unk1A);
BoardModelMotionStart(arg0->unk30[temp_r28], 0, 0x40000001U);
BoardModelMotionSpeedSet(arg0->unk30[temp_r28], 0);
BoardModelMotionTimeSet(arg0->unk30[temp_r28], arg0->unk98);
temp_r3 = omAddObjEx(boardObjMan, 0x102, 0U, 0U, -1, fn_1_1850);
temp_r29 = (WorkGenDice*) temp_r3->work;
temp_r29->unk7 = 0;
temp_r29->unk6 = 0;
temp_r29->unk3 = 0;
temp_r29->unk1 = temp_r28;
temp_r29->unk04 = 0;
temp_r29->unk01 = 3;
temp_r29->unk02 = 0;
temp_r3->unk10 = (u32) arg0;
arg0->unk3C[temp_r28] = temp_r3;
sp8 = arg0->unk0C;
sp8.y += (250.0f * arg0->unk24);
temp_r3->trans.x = sp8.x;
temp_r3->trans.y = sp8.y;
temp_r3->trans.z = sp8.z;
temp_r3->scale.x = 0;
temp_r3->scale.y = 0;
temp_r3->scale.z = 0;
sp8.z += 70.0f;
HuAudFXPlay(0x302);
}
void fn_1_1794(m02GenDice* arg0) {
WorkGenDice* temp_r30;
temp_r30 = OM_GET_WORK_PTR(arg0->unk3C[arg0->unk96], WorkGenDice);
while (temp_r30->unk3 != 1) {
HuPrcVSleep();
}
}
s32 fn_1_17F4(m02GenDice* arg0)
{
WorkGenDice* temp;
if ( arg0->unk96 < 0) {
return 0;
}
temp = OM_GET_WORK_PTR(arg0->unk3C[arg0->unk96], WorkGenDice);
if (temp->unk3 != 1) {
return 0;
}
return 1;
}
void fn_1_1850(omObjData *object)
{
WorkGenDice *temp_r29;
m02GenDice *temp_r27;
s16 temp_r26;
s16 temp_r25;
float temp_f29;
float temp_f28;
float temp_f27;
temp_r27 = (m02GenDice *)object->unk10;
temp_r29 = OM_GET_WORK_PTR(object, WorkGenDice);
if(temp_r29->unk7 || BoardIsKill()) {
fn_1_1F94(temp_r27, temp_r29->unk1);
temp_r27->unk3C[temp_r29->unk1] = NULL;
omDelObjEx(HuPrcCurrentGet(), object);
return;
}
if(BoardPauseActiveCheck()) {
return;
}
switch(temp_r29->unk3) {
case 0:
if(temp_r29->unk06 >= 1080) {
temp_r29->unk3 = 1;
object->scale.x = object->scale.y = object->scale.z = 1;
object->rot.y = temp_r29->unk04 = 0;
} else {
if(!temp_r29->unk04 && temp_r27->unk88[temp_r29->unk1] == -1) {
temp_r27->unk88[temp_r29->unk1] = HuAudFXPlay(768);
}
object->rot.y = temp_r29->unk06%360;
temp_r29->unk06 += 25;
if(temp_r29->unk04 < 180) {
temp_f27 = 0;
temp_f28 = 1;
} else {
temp_f27 = 1;
temp_f28 = 0.5f;
}
object->scale.x = (temp_f28*sind((float)(temp_r29->unk04%180)))+temp_f27;
object->scale.y = object->scale.x;
object->scale.z = object->scale.x;
if(temp_r29->unk04 <= 360) {
if(temp_r29->unk04 < 180) {
temp_r29->unk04 += 6;
} else {
temp_r29->unk04 += 18;
}
if(temp_r29->unk04 > 360) {
temp_r29->unk04 = 360;
}
}
}
break;
case 1:
temp_r29->unk04 += 4;
if(temp_r29->unk04 > 360) {
temp_r29->unk04 -= 360;
}
OSs16tof32(&temp_r29->unk04, &temp_f29);
object->trans.y += sind(temp_f29)*0.2f;
break;
case 2:
temp_r29->unk04++;
if(temp_r29->unk04 >= 8) {
if(temp_r27->unk88[temp_r29->unk1] != -1) {
HuAudFXStop(temp_r27->unk88[temp_r29->unk1]);
temp_r27->unk88[temp_r29->unk1] = -1;
}
HuAudFXPlay(771);
HuAudFXPlay(780);
temp_r29->unk3 = 3;
temp_r29->unk04 = 0;
fn_1_23FC(temp_r27, temp_r27->unk36[temp_r29->unk1]);
fn_1_2100(temp_r27, temp_r29->unk1);
Hu3DParManPosSet(temp_r27->unk48[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z);
BoardModelVisibilitySet(temp_r27->unk30[temp_r29->unk1], 0);
} else {
OSs16tof32(&temp_r29->unk04, &temp_f29);
if(temp_r29->unk04 < 4) {
object->trans.y += (0.5f*temp_f29)+10.0f;
object->scale.x += (0.1f*sind(4.0f*temp_f29));
object->scale.y = object->scale.x;
object->scale.z = object->scale.x;
} else {
BoardModelAlphaSet(temp_r27->unk30[temp_r29->unk1], 255-(temp_r29->unk04*32));
}
object->trans.y += -0.49f*temp_f29*temp_f29;
}
break;
case 3:
if(++temp_r29->unk04 >= 150) {
temp_r29->unk7 = 1;
}
break;
}
if(!temp_r29->unk6 || temp_r29->unk3 != 3) {
if(temp_r29->unk02++ > temp_r29->unk01) {
temp_r29->unk02 = 0;
temp_r25 = BoardModelMotionTimeGet(temp_r27->unk30[temp_r29->unk1]);
do {
temp_r26 = BoardRandMod(temp_r27->unk1A);
} while(temp_r26 == temp_r25);
BoardModelMotionTimeSet(temp_r27->unk30[temp_r29->unk1], temp_r26+0.5f);
}
}
BoardModelPosSet(temp_r27->unk30[temp_r29->unk1], object->trans.x, object->trans.y, object->trans.z);
BoardModelRotSet(temp_r27->unk30[temp_r29->unk1], object->rot.x, object->rot.y, object->rot.z);
BoardModelScaleSet(temp_r27->unk30[temp_r29->unk1], object->scale.x, object->scale.y, object->scale.z);
}
void fn_1_1F94(m02GenDice* arg0, s32 arg1) {
if (arg0->unk30[arg1] != -1) {
BoardModelKill(arg0->unk30[arg1]);
arg0->unk30[arg1] = -1;
}
if (arg0->unk48[arg1] != -1) {
Hu3DParManKill(arg0->unk48[arg1]);
arg0->unk48[arg1] = -1;
}
}
void fn_1_2030(m02GenDice *arg0)
{
fn_1_1F94(arg0, 0);
fn_1_1F94(arg0, 1);
fn_1_1F94(arg0, 2);
}
HsfanimStruct00 lbl_1_data_2D8 = {
150,
{ 0x00, 0x00 }, // padding?
50,
0,
65.0f,
{ 0.0f, -0.195f, 0.0f },
100.0f,
0.99f,
40.0f,
0.999f,
0x0004,
{
0xFF, 0xFF, 0x20, 0xFF,
0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF
},
{
0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0x00
}
};
void fn_1_2100(m02GenDice *arg0, s32 arg1)
{
s16 temp_r29;
AnimData *temp_r28;
void *temp_r27;
temp_r27 = HuDataSelHeapReadNum(0x120001, MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r28 = HuSprAnimRead(temp_r27);
arg0->unk48[arg1] = Hu3DParManCreate(temp_r28, 100, &lbl_1_data_2D8);
Hu3DParManAttrSet(arg0->unk48[arg1], 0x108);
Hu3DParManRotSet(arg0->unk48[arg1], 0, 0, 0);
Hu3DParManVecSet(arg0->unk48[arg1], 0, 0.4f, 0.2f);
temp_r29 = Hu3DParManModelIDGet(arg0->unk48[arg1]);
Hu3DModelLayerSet(temp_r29, 2);
Hu3DParticleBlendModeSet(temp_r29, 0);
}
void fn_1_2220(m02GenDice *arg0)
{
s32 temp_r30;
WorkGenDice *temp_r29;
temp_r30 = arg0->unk96;
temp_r29 = OM_GET_WORK_PTR(arg0->unk3C[temp_r30], WorkGenDice);
temp_r29->unk3 = 2;
temp_r29->unk04 = 0;
BoardModelMotionSpeedSet(arg0->unk30[temp_r30], 0);
arg0->unk36[temp_r30] = arg0->unk1C[temp_r30];
}
typedef struct {
u8 field0_bit0 : 1;
u8 field0_bit1 : 1;
u8 field0_bit2 : 1;
u8 field0_bit3 : 2;
s8 unk01;
s16 unk02;
s16 unk04[2];
float unk08;
} WorkGenDiceNum;
void fn_1_22BC(m02GenDice *arg0)
{
s32 temp_r31;
WorkGenDiceNum *temp_r30;
for(temp_r31=0; temp_r31<arg0->unk00; temp_r31++) {
if(arg0->unk50[temp_r31]) {
temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum);
temp_r30->field0_bit1 = 1;
temp_r30->field0_bit2 = 1;
temp_r30->unk02 = 0;
}
}
}
s32 fn_1_233C(m02GenDice* arg0)
{
s32 temp_r31;
WorkGenDiceNum *temp_r30;
for(temp_r31=0; temp_r31<arg0->unk00; temp_r31++) {
if(!arg0->unk50[temp_r31]) {
continue;
}
temp_r30 = OM_GET_WORK_PTR(arg0->unk50[temp_r31], WorkGenDiceNum);
if(temp_r30->field0_bit2) {
return 0;
}
}
return 1;
}
void fn_1_23B4(m02GenDice *arg0, s32 arg1)
{
WorkGenDiceNum *work;
if(!arg0->unk50[arg1]) {
return;
}
work = OM_GET_WORK_PTR(arg0->unk50[arg1], WorkGenDiceNum);
work->field0_bit0 = 1;
}
void fn_1_25D0(omObjData *object);
void fn_1_23FC(m02GenDice *arg0, s32 arg1)
{
Vec spC;
s16 sp8[2];
WorkGenDiceNum *temp_r31;
s16 temp_r29;
omObjData *temp_r28;
s32 temp_r26;
s16 temp_r25;
temp_r26 = arg0->unk96;
if(arg1 > 99) {
arg1 = 99;
}
sp8[0] = arg1%10;
sp8[1] = arg1/10;
spC = arg0->unk0C;
spC.y += 300.0f;
temp_r28 = omAddObjEx(boardObjMan, 258, 0, 0, -1, fn_1_25D0);
temp_r28->unk10 = (u32)arg0;
temp_r31 = OM_GET_WORK_PTR(temp_r28, WorkGenDiceNum);
temp_r31->field0_bit0 = 0;
temp_r31->field0_bit1 = 0;
temp_r31->field0_bit2 = 0;
temp_r31->field0_bit3 = temp_r26;
temp_r31->unk08 = 0.3f;
temp_r31->unk01 = arg1;
temp_r31->unk02 = 360;
for(temp_r29=0; temp_r29<2; temp_r29++) {
temp_r25 = BoardModelCreate(arg0->unk08[sp8[temp_r29]], NULL, 0);
BoardModelPosSetV(temp_r25, &spC);
temp_r31->unk04[temp_r29] = temp_r25;
}
if(sp8[1] == 0) {
BoardModelVisibilitySet(temp_r31->unk04[1], 0);
}
arg0->unk50[temp_r26] = temp_r28;
}
void fn_1_2694(WorkGenDiceNum *arg0);
void fn_1_2830(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2);
void fn_1_2BE4(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2);
void fn_1_25D0(omObjData *object)
{
WorkGenDiceNum *temp_r31;
m02GenDice *temp_r30;
temp_r30 = (m02GenDice *)object->unk10;
temp_r31 = OM_GET_WORK_PTR(object, WorkGenDiceNum);
if(temp_r31->field0_bit0 || BoardIsKill()) {
fn_1_2694(temp_r31);
temp_r30->unk50[temp_r31->field0_bit3] = NULL;
omDelObjEx(HuPrcCurrentGet(), object);
return;
}
if(BoardPauseActiveCheck()) {
return;
}
fn_1_2830(temp_r30, temp_r31, temp_r31->field0_bit1);
fn_1_2BE4(temp_r30, temp_r31, temp_r31->field0_bit1);
}
void fn_1_2694(WorkGenDiceNum *arg0)
{
s32 i;
for(i=0; i<2; i++) {
if(arg0->unk04[i] == -1) {
continue;
}
OSReport("%d:GenDiceNumExitOM Kill %d\n", i, arg0->unk04[i]);
BoardModelKill(arg0->unk04[i]);
arg0->unk04[i] = -1;
(void)i;
}
}
void fn_1_272C(m02GenDice *arg0)
{
s32 i;
WorkGenDiceNum *work;
s32 j;
for(i=0; i<3; i++) {
if(!arg0->unk50[i]) {
continue;
}
work = OM_GET_WORK_PTR(arg0->unk50[i], WorkGenDiceNum);
for(j=0; j<2; j++) {
if(work->unk04[j] == -1) {
continue;
}
OSReport("%d:GenDiceNumOMKillAll %d\n", j, work->unk04[j]);
BoardModelKill(work->unk04[j]);
work->unk04[j] = -1;
(void)j;
}
fn_1_23B4(arg0, i);
}
}
void fn_1_2830(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2)
{
float temp_f31;
s16 temp_r31;
Vec *temp_r29;
s16 temp_r27;
s32 sp8 = 0;
Vec sp30;
Vec sp24;
Vec sp18 = { 288, 155, 1400 };
Vec sp54[2];
Vec sp3C[2] = {
{ 144, 155, 1400 },
{ 432, 155, 1400 }
};
Vec sp6C[3] = {
{ 144, 155, 1400 },
{ 432, 155, 1400 },
{ 288, 155, 1400 }
};
Vec spC = { 288, 176, 1400 };
temp_r27 = arg1->unk01/10;
if(arg2) {
temp_r29 = &spC;
temp_f31 = -20.0f*arg1->field0_bit3;
} else {
switch(arg0->unk00) {
case 1:
temp_r29 = &arg0->unk7C;
break;
case 2:
case 3:
temp_r29 = &arg0->unk64[arg1->field0_bit3];
break;
}
temp_f31 = 0;
}
for(temp_r31=0; temp_r31<2; temp_r31++) {
if(temp_r27 == 0) {
sp54[temp_r31].x = temp_r29->x;
} else {
if(temp_r31) {
sp54[temp_r31].x = temp_r29->x-30;
} else {
sp54[temp_r31].x = temp_r29->x+30;
}
}
sp54[temp_r31].y = temp_r29->y;
sp54[temp_r31].z = temp_r29->z+temp_f31;
}
for(temp_r31=0; temp_r31<2; temp_r31++) {
BoardModelPosGet(arg1->unk04[temp_r31], &sp30);
Hu3D2Dto3D(&sp54[temp_r31], 1, &sp54[temp_r31]);
VECSubtract(&sp54[temp_r31], &sp30, &sp24);
if(VECMag(&sp24) < 0.01f) {
arg1->field0_bit2 = 0;
if(arg2 && arg1->field0_bit3) {
BoardModelVisibilitySet(arg1->unk04[temp_r31], 0);
}
} else {
arg1->field0_bit2 = 1;
}
VECScale(&sp24, &sp24, arg1->unk08);
VECAdd(&sp30, &sp24, &sp30);
BoardModelPosSetV(arg1->unk04[temp_r31], &sp30);
}
}
void fn_1_2BE4(m02GenDice *arg0, WorkGenDiceNum *arg1, s32 arg2)
{
s32 temp_r29;
float temp_f30;
if(arg2) {
arg1->unk02 += 18;
if(arg1->unk02 >= 360) {
arg1->unk02 = 360;
}
} else {
arg1->unk02 -= 18;
if(arg1->unk02 <= 0) {
arg1->unk02 = 0;
}
}
OSs16tof32(&arg1->unk02, &temp_f30);
for(temp_r29=0; temp_r29<2; temp_r29++) {
if(arg1->unk04[temp_r29] == -1) {
continue;
}
BoardModelRotSet(arg1->unk04[temp_r29], 0, temp_f30, 0);
}
}

View file

@ -23,8 +23,8 @@
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;
Vec lbl_1_bss_20;
Vec lbl_1_bss_14;
s32* lbl_1_bss_10;
s16 lbl_1_bss_8[4]; // Item List
Process* lbl_1_bss_4;
@ -432,7 +432,7 @@ s32 fn_1_1128(void) {
s16 currSpace;
currSpace = GWPlayer[GWSystem.player_curr].space_curr;
spaceFlags = BoardSpaceFlagGet(0, currSpace) & 0x600000;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if (spaceFlags & 0x200000) {
fn_1_990();
@ -444,7 +444,7 @@ s32 fn_1_1128(void) {
}
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
void fn_1_121C(u32 mesg) {
@ -453,4 +453,4 @@ void fn_1_121C(u32 mesg) {
BoardWinKill();
}
f32 const padMain = 0.0f;
f32 const padMain = 0.0f;

683
src/REL/w02Dll/mg_coin.c Normal file
View file

@ -0,0 +1,683 @@
#include "REL/w02Dll.h"
#include "game/audio.h"
#include "game/pad.h"
#include "game/objsub.h"
#include "game/frand.h"
#include "game/objsub.h"
#include "game/chrman.h"
#include "ext_math.h"
#include "game/minigame_seq.h"
s16 lbl_1_bss_C2[3];
s16 lbl_1_bss_BC[3];
float lbl_1_bss_B0[3];
omObjData *lbl_1_bss_AC;
omObjData *lbl_1_bss_A8;
omObjData *lbl_1_bss_A4;
u16 lbl_1_bss_A0;
Vec lbl_1_bss_94;
Vec lbl_1_bss_88;
s16 lbl_1_bss_86;
s16 lbl_1_bss_84;
s16 lbl_1_bss_5C[20];
s32 lbl_1_bss_58;
Vec lbl_1_data_378[3] = {
{ -45, 155, 108 },
{ 0, 155, 108 },
{ 45, 155, 108 }
};
Vec lbl_1_data_39C[3] = {
{ -45, 25, 200 },
{ 0, 25, 200 },
{ 45, 25, 200 }
};
s32 lbl_1_data_3C0[9] = {
5, 10, 20,
5, 10, 20,
5, 10, 20
};
s32 lbl_1_data_3E4[8] = {
0x5F0008,
0x1A0008,
0x6D0008,
0x8A0008,
0x850008,
0x110008,
0x0D0008,
0x810008
};
s32 lbl_1_data_404[8] = {
0x5F000A,
0x1A000A,
0x6D000A,
0x8A000A,
0x85000A,
0x11000A,
0x0D000A,
0x81000A
};
void fn_1_51B4(Vec *arg0);
void fn_1_39F4(void)
{
Vec sp8;
s32 temp_r31;
BoardModelVisibilitySet(lbl_1_bss_30[7], 1);
BoardModelVisibilitySet(lbl_1_bss_30[8], 1);
BoardModelVisibilitySet(lbl_1_bss_30[9], 0);
BoardModelAttrSet(lbl_1_bss_30[8], 0x40000002);
BoardModelAttrSet(lbl_1_bss_30[9], 0x40000003);
BoardModelAttrSet(lbl_1_bss_30[7], 0x40000001);
BoardModelPosGet(lbl_1_bss_30[8], &lbl_1_bss_94);
for(temp_r31=0; temp_r31<3; temp_r31++) {
lbl_1_bss_C2[temp_r31] = BoardModelCreate(0x760013, NULL, 1);
lbl_1_bss_BC[temp_r31] = BoardModelCreate(0x760014, NULL, 1);
BoardModelAttrSet(lbl_1_bss_BC[temp_r31], 0x40000002);
lbl_1_bss_B0[temp_r31] = (s32)frandmod(9)*40.0f;
sp8.x = lbl_1_bss_B0[temp_r31];
sp8.y = sp8.z = 0;
BoardModelRotSetV(lbl_1_bss_C2[temp_r31], &sp8);
}
BoardModelPosSetV(lbl_1_bss_30[7], &lbl_1_bss_94);
fn_1_51B4(&lbl_1_bss_94);
}
void fn_1_3F0C(omObjData *object);
void fn_1_4050(omObjData *object);
typedef struct work_mgcoin_player {
float unk0[3];
float unkC[3];
float unk18[3];
s16 unk24[3];
} WorkMGCoinPlayer;
typedef struct work_mgcoin {
float unk0;
float unk4;
s16 unk8;
Vec unkC;
s16 unk18;
s16 unk1A;
s16 unk1C;
s16 unk1E;
s16 unk20;
} WorkMGCoin;
void fn_1_3BF4(void)
{
Vec sp8;
s32 temp_r31;
WorkMGCoinPlayer *temp_r30;
lbl_1_bss_86 = GWSystem.player_curr;
lbl_1_bss_AC = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_3F0C);
lbl_1_bss_A4 = omAddObjEx(boardObjMan, 257, 0, 0, -1, fn_1_4050);
lbl_1_bss_A8 = omAddObjEx(boardObjMan, 257, 0, 2, -1, NULL);
lbl_1_bss_A8->motion[0] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_3E4[GWPlayer[lbl_1_bss_86].character]);
lbl_1_bss_A8->motion[1] = BoardPlayerMotionCreate(lbl_1_bss_86, lbl_1_data_404[GWPlayer[lbl_1_bss_86].character]);
lbl_1_bss_A4->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoinPlayer), MEMORY_DEFAULT_NUM);
temp_r30 = lbl_1_bss_A4->data;
for(temp_r31=0; temp_r31<3; temp_r31++) {
temp_r30->unk0[temp_r31] = lbl_1_bss_B0[temp_r31];
temp_r30->unkC[temp_r31] = 0;
temp_r30->unk18[temp_r31] = 0;
temp_r30->unk24[temp_r31] = 0;
}
lbl_1_bss_A8->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkMGCoin), MEMORY_DEFAULT_NUM);
BoardPlayerPosGet(lbl_1_bss_86, &sp8);
lbl_1_bss_A8->trans.x = sp8.x;
lbl_1_bss_A8->trans.y = sp8.y;
lbl_1_bss_A8->trans.z = sp8.z;
for(temp_r31=0; temp_r31<20; temp_r31++) {
lbl_1_bss_5C[temp_r31] = BoardModelCreate(0x7000A, NULL, 1);
BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0);
}
lbl_1_bss_A0 = 0;
}
void fn_1_3F94(void);
void fn_1_3F0C(omObjData *object)
{
if(lbl_1_bss_A0 && BoardMGDoneFlagGet() == 1) {
fn_1_3F94();
omDelObjEx(boardObjMan, object);
}
}
void fn_1_3F64(void)
{
lbl_1_bss_A0 = 1;
BoardMGExit();
}
void fn_1_3F94(void)
{
s32 temp_r31;
BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[0]);
BoardPlayerMotionKill(lbl_1_bss_86, lbl_1_bss_A8->motion[1]);
omDelObjEx(boardObjMan, lbl_1_bss_A8);
for(temp_r31=0; temp_r31<20; temp_r31++) {
BoardModelKill(lbl_1_bss_5C[temp_r31]);
}
BoardMGDoneFlagSet(0);
}
void fn_1_4100(omObjData *object);
void fn_1_4050(omObjData *object)
{
if(object->work[0] == 0) {
object->work[0] = MGSeqStartCreate();
return;
}
if(MGSeqStatGet(object->work[0])) {
return;
}
object->func = fn_1_4100;
BoardModelMotionTimeSet(lbl_1_bss_30[8], 0);
BoardModelAttrReset(lbl_1_bss_30[8], 0x40000006);
HuAudFXPlay(1062);
}
void fn_1_41B8(omObjData *object);
void fn_1_4100(omObjData *object)
{
if(BoardModelMotionTimeGet(lbl_1_bss_30[8]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_30[8])) {
object->work[0] = 0;
object->work[1] = 0;
object->work[2] = 1;
object->work[3] = 0;
object->func = fn_1_41B8;
BoardModelAttrSet(lbl_1_bss_30[8], 0x40000004);
lbl_1_bss_58 = HuAudFXPlay(1063);
}
}
void fn_1_4378(omObjData *object);
void fn_1_5290(omObjData *object);
void fn_1_41B8(omObjData *object)
{
Vec sp8;
WorkMGCoinPlayer *temp_r30;
s32 temp_r29;
s32 temp_r28;
u32 temp_r27;
temp_r30 = object->data;
if(object->work[1] == 0) {
object->work[0] |= object->work[2];
object->work[1] = 12;
object->work[2] <<= 1;
} else {
object->work[1]--;
}
sp8.y = sp8.z = 0;
temp_r28 = 0;
for(temp_r29=0; temp_r29<3; temp_r29++) {
temp_r27 = 1 << temp_r29;
if(object->work[0] & temp_r27) {
temp_r30->unkC[temp_r29] += 0.25f;
if(temp_r30->unkC[temp_r29] > 5.0f) {
temp_r30->unkC[temp_r29] = 5.0f;
temp_r28++;
}
temp_r30->unk0[temp_r29] += temp_r30->unkC[temp_r29];
if(temp_r30->unk0[temp_r29] >= 360.0f) {
temp_r30->unk0[temp_r29] -= 360.0f;
}
sp8.x = temp_r30->unk0[temp_r29];
BoardModelRotSetV(lbl_1_bss_C2[temp_r29], &sp8);
}
}
if(temp_r28 == 3) {
object->func = fn_1_4378;
lbl_1_bss_A8->func = fn_1_5290;
}
}
void fn_1_4698(omObjData *object);
void fn_1_46E8(void);
void fn_1_4378(omObjData *object)
{
Vec sp8;
float temp_f31;
WorkMGCoinPlayer *temp_r31;
s32 temp_r30;
s32 temp_r28;
Process *temp_r27;
temp_r31 = object->data;
sp8.y = sp8.z = 0;
for(temp_r30=0; temp_r30<3; temp_r30++) {
temp_r28 = 1<<temp_r30;
if(object->work[0] & temp_r28) {
if(object->work[3] & temp_r28) {
temp_r31->unk18[temp_r30] = 360;
temp_r31->unk24[temp_r30] = 1;
object->work[3] &= ~temp_r28;
}
if(temp_r31->unk24[temp_r30]) {
if(0.0f == temp_r31->unk18[temp_r30]) {
temp_f31 = fmod(temp_r31->unk0[temp_r30], 40.0);
if(temp_f31+temp_r31->unkC[temp_r30] >= 40.0f) {
temp_r31->unk0[temp_r30] += (temp_f31+temp_r31->unkC[temp_r30])-40.0f;
temp_f31 = 0;
}
if(0.0f == temp_f31) {
HuAudFXPlay(1067);
object->work[0] &= ~temp_r28;
temp_r31->unkC[temp_r30] = 0;
lbl_1_bss_A8->work[2] = 60;
if(temp_r30 != 2) {
lbl_1_bss_A8->func = fn_1_5290;
} else {
BoardAudSeqFadeOut(1, 100);
temp_r27 = HuPrcCreate(fn_1_46E8, 8196, 6144, 0);
temp_r27->user_data = object;
HuAudFXStop(lbl_1_bss_58);
object->func = fn_1_4698;
}
}
} else {
temp_r31->unk18[temp_r30] -= temp_r31->unkC[temp_r30];
if(temp_r31->unk18[temp_r30] < 0.0f) {
temp_r31->unk18[temp_r30] = 0.0f;
}
}
}
temp_r31->unk0[temp_r30] += temp_r31->unkC[temp_r30];
if(temp_r31->unk0[temp_r30] >= 360.0f) {
temp_r31->unk0[temp_r30] -= 360.0f;
}
}
sp8.x = temp_r31->unk0[temp_r30];
BoardModelRotSetV(lbl_1_bss_C2[temp_r30], &sp8);
}
}
void fn_1_4698(omObjData *object)
{
if(msmMusGetStatus(1) == 0) {
BoardAudSeqPause(0, 0, 1000);
object->func = NULL;
}
}
void fn_1_511C(omObjData *object);
void fn_1_46E8(void)
{
Vec sp21C[20];
Vec sp12C[20];
Vec sp3C[20];
s32 sp30[3];
Vec sp24;
Vec sp18;
Vec spC;
char sp8[4];
float temp_f31;
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
omObjData *temp_r27;
for(temp_r31=0; temp_r31<3; temp_r31++) {
BoardModelRotGet(lbl_1_bss_C2[temp_r31], &sp24);
sp30[temp_r31] = lbl_1_data_3C0[(int)(sp24.x/40.0f)];
}
if(sp30[0] == sp30[1] && sp30[0] == sp30[2]) {
lbl_1_bss_84 = sp30[0];
} else {
lbl_1_bss_84 = 1;
}
if(lbl_1_bss_84 != 1) {
BoardModelVisibilitySet(lbl_1_bss_30[9], 1);
BoardModelAttrReset(lbl_1_bss_30[9], 0x40000002);
}
sprintf(sp8, "%d", lbl_1_bss_84);
BoardWinCreate(2, 0x130013, 4);
BoardWinInsertMesSet((u32)sp8, 0);
BoardWinWait();
BoardWinKill();
BoardCameraTargetModelSet(-1);
temp_r30 = 0;
temp_r29 = 45;
temp_f31 = 0;
sp18 = lbl_1_bss_94;
HuAudFXPlay(1065);
while(1) {
temp_r28 = 0;
if(temp_r29 == 0 && temp_r30 < lbl_1_bss_84) {
HuAudFXPlay(18);
BoardModelVisibilitySet(lbl_1_bss_5C[temp_r30], 1);
sp21C[temp_r30].x = -5.0f+((1.0f/255.0f)*(10.0f*frand8()));
sp21C[temp_r30].y = 212.5f;
sp21C[temp_r30].z = 130.0f;
VECAdd(&sp21C[temp_r30], &sp18, &sp21C[temp_r30]);
BoardModelPosSetV(lbl_1_bss_5C[temp_r30], &sp21C[temp_r30]);
sp12C[temp_r30].x = -1.0f+((1.0f/255.0f)*(2.0f*frand8()));
sp12C[temp_r30].y = 18.0f;
sp12C[temp_r30].z = 0.0f;
temp_r29 = frandmod(3)+5;
temp_r30++;
} else {
temp_r29--;
}
for(temp_r31=0; temp_r31<temp_r30; temp_r31++) {
if(sp21C[temp_r31].y >= 500.0f) {
BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0);
temp_r28++;
} else {
VECAdd(&sp21C[temp_r31], &sp12C[temp_r31], &sp21C[temp_r31]);
}
BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]);
}
sp18.y += 0.8f*sind(temp_f31);
temp_f31 += 45.0f;
if(temp_f31 >= 360.0f) {
temp_f31 -= 360.0f;
}
fn_1_51B4(&sp18);
if(temp_r28 == lbl_1_bss_84) {
break;
}
HuPrcVSleep();
}
fn_1_51B4(&lbl_1_bss_94);
BoardModelAttrSet(lbl_1_bss_30[9], 0x40000002);
BoardModelMotionTimeSet(lbl_1_bss_30[9], 0);
BoardModelVisibilitySet(lbl_1_bss_30[9], 0);
BoardPlayerPosGet(lbl_1_bss_86, &sp18);
for(temp_r31=0; temp_r31<lbl_1_bss_84; temp_r31++) {
BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 1);
sp21C[temp_r31] = sp18;
sp21C[temp_r31].y += (temp_r31*120)+600.0f;
sp21C[temp_r31].x += -25.0f+((1.0f/255.0f)*(50.0f*frand8()));
sp21C[temp_r31].z += -25.0f+((1.0f/255.0f)*(50.0f*frand8()));
sp3C[temp_r31].x = sp3C[temp_r31].z = 0;
sp3C[temp_r31].y = ((1.0f/255.0f)*(360.0f*frand8()));
BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]);
BoardModelRotSetV(lbl_1_bss_5C[temp_r31], &sp3C[temp_r31]);
}
temp_f31 = -1;
temp_r30 = 0;
while(1) {
for(temp_r31=0; temp_r31<lbl_1_bss_84; temp_r31++) {
if(temp_r31 < temp_r30) {
continue;
}
sp21C[temp_r31].y += temp_f31;
BoardModelPosSetV(lbl_1_bss_5C[temp_r31], &sp21C[temp_r31]);
sp3C[temp_r31].y += 45.0f;
if(sp3C[temp_r31].y >= 360.0f) {
sp3C[temp_r31].y -= 360.0f;
}
BoardModelRotSetV(lbl_1_bss_5C[temp_r31], &sp3C[temp_r31]);
if(sp21C[temp_r31].y <= 80.0f+sp18.y) {
spC = sp21C[temp_r31];
CharModelCoinEffectCreate(1, &spC);
BoardModelVisibilitySet(lbl_1_bss_5C[temp_r31], 0);
temp_r30++;
BoardPlayerCoinsAdd(lbl_1_bss_86, 1);
HuAudFXPlay(7);
omVibrate(lbl_1_bss_86, 12, 6, 6);
}
}
temp_f31 *= 1.05f;
if(temp_f31 < -20.0f) {
temp_f31 = -20.0f;
}
if(temp_r30 == lbl_1_bss_84) {
BoardPlayerMotionShiftSet(lbl_1_bss_86, 7, 0, 10, 0);
break;
}
HuPrcVSleep();
}
while(!BoardPlayerMotionEndCheck(lbl_1_bss_86)) {
HuPrcVSleep();
}
fn_1_121C(0x130014);
temp_r27 = HuPrcCurrentGet()->user_data;
temp_r27->func = fn_1_511C;
HuPrcEnd();
}
void fn_1_511C(omObjData *object)
{
Vec spC;
s32 temp_r31;
for(temp_r31=0; temp_r31<3; temp_r31++) {
BoardModelRotGet(lbl_1_bss_C2[temp_r31], &spC);
lbl_1_bss_B0[temp_r31] = spC.x;
}
fn_1_3F64();
omDelObjEx(boardObjMan, object);
}
void fn_1_51B4(Vec *arg0)
{
s32 temp_r31;
Vec sp8;
BoardModelPosSetV(lbl_1_bss_30[8], arg0);
BoardModelPosSetV(lbl_1_bss_30[9], arg0);
for(temp_r31=0; temp_r31<3; temp_r31++) {
VECAdd(arg0, &lbl_1_data_378[temp_r31], &sp8);
BoardModelPosSetV(lbl_1_bss_C2[temp_r31], &sp8);
VECAdd(arg0, &lbl_1_data_39C[temp_r31], &sp8);
BoardModelPosSetV(lbl_1_bss_BC[temp_r31], &sp8);
}
}
void fn_1_53B8(omObjData *object);
void fn_1_5290(omObjData *object)
{
WorkMGCoin *temp_r31;
float sp8[2];
if(object->work[2] == 0) {
temp_r31 = object->data;
temp_r31->unk18 = 5;
temp_r31->unk1A = 60;
temp_r31->unk1C = MGSeqTimerCreateXY(temp_r31->unk18, 288, 64);
HuWinMesMaxSizeGet(1, sp8, 0x130015);
temp_r31->unk1E = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0);
HuWinMesSet(temp_r31->unk1E, 0x130015);
HuWinBGTPLvlSet(temp_r31->unk1E, 0);
HuWinMesSpeedSet(temp_r31->unk1E, 0);
temp_r31->unk20 = frandmod(100)+20;
object->func = fn_1_53B8;
} else {
object->work[2]--;
}
}
void fn_1_5634(omObjData *object);
void fn_1_53B8(omObjData *object)
{
Vec sp14;
Vec sp8;
WorkMGCoin *temp_r31;
s32 temp_r29;
s32 temp_r28;
temp_r31 = object->data;
temp_r28 = GWPlayer[lbl_1_bss_86].port;
if(--temp_r31->unk1A == 0) {
temp_r31->unk1A = 60;
if(--temp_r31->unk18 >= 0) {
MGSeqParamSet(temp_r31->unk1C, 1, temp_r31->unk18);
}
}
if(!GWPlayer[lbl_1_bss_86].com) {
temp_r29 = HuPadBtnDown[temp_r28];
} else {
if(--temp_r31->unk20 == 0) {
temp_r29 = PAD_BUTTON_A;
}
}
if((temp_r29 & PAD_BUTTON_A) || temp_r31->unk18 < 0) {
MGSeqParamSet(temp_r31->unk1C, 2, -1);
HuWinKill(temp_r31->unk1E);
BoardPlayerMotionShiftSet(lbl_1_bss_86, 4, 0, 5, 0);
temp_r31->unk0 = 10;
temp_r31->unk4 = 0;
if(lbl_1_bss_A4->work[0] & 0x1) {
temp_r31->unk8 = 0;
} else {
if(lbl_1_bss_A4->work[0] & 0x2) {
temp_r31->unk8 = 1;
} else {
temp_r31->unk8 = 2;
}
}
BoardPlayerPosGet(lbl_1_bss_86, &sp14);
sp8 = lbl_1_bss_94;
VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8);
VECSubtract(&sp8, &sp14, &temp_r31->unkC);
VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.05f);
object->work[0] = 1;
object->func = fn_1_5634;
}
}
void fn_1_5868(omObjData *object);
void fn_1_5634(omObjData *object)
{
Vec sp14;
Vec sp8;
float temp_f31;
WorkMGCoin *temp_r31;
temp_r31 = object->data;
if(object->work[0] == 1) {
BoardPlayerPosGet(lbl_1_bss_86, &sp14);
temp_r31->unkC.y = temp_r31->unk0-(0.075f*(0.25f*(temp_r31->unk4*temp_r31->unk4)));
temp_r31->unk4++;
VECAdd(&sp14, &temp_r31->unkC, &sp14);
if(sp14.y <= lbl_1_bss_94.y) {
sp14.y = lbl_1_bss_94.y;
}
BoardPlayerPosSetV(lbl_1_bss_86, &sp14);
sp8 = lbl_1_bss_94;
VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8);
sp8.y = sp14.y = 0;
VECSubtract(&sp8, &sp14, &sp14);
temp_f31 = VECMag(&sp14);
if(temp_f31 <= 1.0f) {
BoardPlayerMotionStart(lbl_1_bss_86, object->motion[0], 0);
object->work[0] = 0;
}
} else {
if(BoardPlayerMotionTimeGet(lbl_1_bss_86) >= BoardPlayerMotionMaxTimeGet(lbl_1_bss_86)) {
temp_r31->unk0 = -5;
temp_r31->unk4 = 0;
temp_r31->unkC.x = temp_r31->unkC.z = 0;
object->func = fn_1_5868;
}
}
}
void fn_1_5AC0(omObjData *object);
void fn_1_5868(omObjData *object)
{
Vec sp14;
Vec sp8;
WorkMGCoin *temp_r31;
temp_r31 = object->data;
BoardPlayerPosGet(lbl_1_bss_86, &sp14);
temp_r31->unkC.y = temp_r31->unk0-(0.075f*(0.25f*(temp_r31->unk4*temp_r31->unk4)));
temp_r31->unk4++;
VECAdd(&sp14, &temp_r31->unkC, &sp14);
sp8 = lbl_1_bss_94;
VECAdd(&sp8, &lbl_1_data_39C[temp_r31->unk8], &sp8);
sp8.y += 16.0f;
if(sp14.y <= sp8.y) {
sp14.y = sp8.y;
}
BoardPlayerPosSetV(lbl_1_bss_86, &sp14);
if(sp14.y == sp8.y) {
BoardModelMotionTimeSet(lbl_1_bss_BC[temp_r31->unk8], 0);
BoardModelAttrReset(lbl_1_bss_BC[temp_r31->unk8], 0x40000002);
BoardPlayerMotionShiftSet(lbl_1_bss_86, object->motion[1], 0, 5, 0);
lbl_1_bss_A4->work[3] |= 1 << temp_r31->unk8;
temp_r31->unk0 = 5;
temp_r31->unk4 = 0;
sp8.x = object->trans.x;
sp8.y = object->trans.y;
sp8.z = object->trans.z;
VECSubtract(&sp8, &sp14, &temp_r31->unkC);
VECScale(&temp_r31->unkC, &temp_r31->unkC, 0.03f);
HuAudFXPlay(1064);
object->func = fn_1_5AC0;
}
}
void fn_1_5C84(omObjData *object);
void fn_1_5AC0(omObjData *object)
{
float temp_f31;
float temp_f30;
Vec sp14;
Vec sp8;
WorkMGCoin *temp_r30;
temp_r30 = object->data;
BoardPlayerPosGet(lbl_1_bss_86, &sp14);
temp_r30->unkC.y = temp_r30->unk0-(0.075f*(0.25f*(temp_r30->unk4*temp_r30->unk4)));
temp_r30->unk4++;
VECAdd(&sp14, &temp_r30->unkC, &sp14);
sp8.x = object->trans.x;
sp8.y = 0;
sp8.z = object->trans.z;
temp_f30 = sp14.y;
sp14.y = 0;
VECSubtract(&sp8, &sp14, &sp8);
sp14.y = temp_f30;
temp_f31 = VECMag(&sp8);
if(temp_f31 <= 1.0f) {
temp_r30->unkC.x = temp_r30->unkC.z = 0;
}
if(sp14.y <= object->trans.y) {
sp14.x = object->trans.x;
sp14.y = object->trans.y;
sp14.z = object->trans.z;
BoardPlayerIdleSet(lbl_1_bss_86);
if(temp_r30->unk8 != 2) {
object->func = NULL;
} else {
object->work[1] = 8;
object->func = fn_1_5C84;
}
}
BoardPlayerPosSetV(lbl_1_bss_86, &sp14);
}
void fn_1_5C84(omObjData *object)
{
WorkMGCoin *sp8;
sp8 = object->data;
if(object->work[1] != 0) {
if(--object->work[1] == 0) {
BoardPlayerMotBlendSet(lbl_1_bss_86, 0, 15);
object->func = NULL;
}
(void)object;
} else {
(void)object;
}
}

1000
src/REL/w02Dll/mg_item.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,80 +1,30 @@
#include "REL/w02Dll.h"
#include "game/audio.h"
#include "game/frand.h"
#include "game/chrman.h"
#include "game/pad.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
#include "ext_math.h"
/* 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[];
s32 lbl_1_data_4D0[] = {
-1, 2, 2, 2,
-1, 1, 1, 1,
-1, 0, 0, 0,
-1, 3, 3, 3
};
/* 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();
Process *lbl_1_bss_38C;
s16 lbl_1_bss_388;
s32 lbl_1_bss_384;
float lbl_1_bss_380;
//Local Functions
void fn_1_D3AC(void);
s32 fn_1_D8C4(void);
void fn_1_DF48(void);
s32 fn_1_E2AC(void);
void fn_1_E310(f32);
@ -90,13 +40,13 @@ 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;
sp8.z -= 90.0f;
sp8.y += 50.0f;
BoardModelPosSetV(lbl_1_bss_30[6], &sp8);
BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002);
BoardModelMotionTimeSet(lbl_1_bss_30[5], lbl_1_rodata_410);
BoardModelMotionTimeSet(lbl_1_bss_30[5], 0.0f);
BoardModelRotGet(lbl_1_bss_30[15], &sp8);
sp8.y = lbl_1_rodata_410;
sp8.y = 0.0f;
BoardModelRotSetV(lbl_1_bss_30[15], &sp8);
}
@ -105,20 +55,20 @@ void fn_1_BCFC(void) {
s32 temp_r30;
s32 temp_r29;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(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);
BoardPlayerIdleSet(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);
BoardModelRotYSet(lbl_1_bss_30[15], -90.0f);
fn_1_121C(0x130000);
HuAudFXPlay(0x44);
temp_r29 = fn_1_BE88();
@ -129,7 +79,7 @@ void fn_1_BCFC(void) {
BoardCameraViewSet(1);
BoardStatusShowSetAll(1);
BoardCameraMotionWait();
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
HuPrcKill(NULL);
while(TRUE) {
HuPrcVSleep();
@ -160,7 +110,7 @@ s32 fn_1_BE88(void) {
BoardWinCreateChoice(2, 0x13001DU, 4, 0);
/* COM has 50% to bribe goomba */
if (GWPlayer[lbl_1_bss_388].com) {
if (frand() & 1) {
if (frandBool()) {
BoardComKeySetRight();
} else {
BoardComKeySetLeft();
@ -170,7 +120,7 @@ s32 fn_1_BE88(void) {
BoardWinKill();
rouletteChoice = BoardWinChoiceGet();
// If chose to play roulette
if (rouletteChoice == ROULETTE_CHOICE_YES) {
if (rouletteChoice == 0) {
BoardWinCreateChoice(1, 0x130003U, 4, 0);
playerCoinRegion = 3;
if (coinAmount < 0x14) {
@ -186,7 +136,7 @@ s32 fn_1_BE88(void) {
if (GWPlayer[lbl_1_bss_388].com) {
if (playerCoinRegion < 2) {
BoardComKeySetUp();
} else if (frand() & 1) {
} else if (frandBool()) {
BoardComKeySetUp();
} else {
BoardComKeySetDown();
@ -195,24 +145,24 @@ s32 fn_1_BE88(void) {
BoardWinWait();
BoardWinKill();
bribeChoice = BoardWinChoiceGet();
if (bribeChoice == BRIBE_CHOICE_INVALID ||
bribeChoice == BRIBE_CHOICE_NVM) {
if (bribeChoice == -1 ||
bribeChoice == 3) {
continue;
}
// Coin amount is now the bribe amount in coins
switch (bribeChoice) {
case BRIBE_CHOICE_20:
case 0:
mesg = 0x130004;
coinAmount = 0x14;
var_r30 = 0x5A; // 90%
break;
case BRIBE_CHOICE_10:
case 1:
mesg = 0x130005;
coinAmount = 0xA;
var_r30 = 0x3C; // 60%
break;
case BRIBE_CHOICE_5:
case 2:
mesg = 0x130006;
coinAmount = 5;
var_r30 = 0x1E; // 30%
@ -228,22 +178,21 @@ s32 fn_1_BE88(void) {
}
HuAudFXPlay(0xF);
// If chose to view map
} else if (rouletteChoice == ROULETTE_CHOICE_MAP) {
} else if (rouletteChoice == 2) {
BoardViewMapExec(lbl_1_bss_388);
}
} while (rouletteChoice == ROULETTE_CHOICE_MAP); // While viewing map
} while (rouletteChoice == 2); // 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;
Vec sp10;
f32 var_f27;
@ -273,7 +222,7 @@ s32 fn_1_C108(s32 arg0) {
var_r29 = frandmod(0x10U);
var_r27 = frandmod(4U);
}
BoardModelPosGet(lbl_1_bss_30[4], &spC.point);
BoardModelPosGet(lbl_1_bss_30[4], &sp10);
BoardCameraViewSet(1);
BoardCameraMotionWait();
var_r26 = BoardSpaceFlagSearch(0, 0x800U);
@ -282,32 +231,32 @@ s32 fn_1_C108(s32 arg0) {
BoardModelRotGet(lbl_1_bss_30[15], &sp34);
for (i = 0; i < 0xF; i++) {
sp34.y -= lbl_1_rodata_418;
sp34.y -= 6.0f;
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
HuPrcVSleep();
}
sp34.y = lbl_1_rodata_41C;
sp34.y = 180.0f;
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
BoardCameraMotionWait();
lbl_1_bss_384 = HuAudFXPlay(0x41D);
var_r28 = -0x1FFF;
var_f29 = lbl_1_rodata_410;
var_f29 = 0.0f;
for (i = 0; i < 0x3C; i++) {
var_f29 -= lbl_1_rodata_420;
var_f29 -= 0.375f;
fn_1_E310(var_f29);
var_r28 = (s16) ((f32) (s16) var_r28 + lbl_1_rodata_424);
var_r28 += 136.51666f;
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
HuPrcVSleep();
}
var_f29 = lbl_1_rodata_428;
var_f29 = -22.5f;
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;
sp34.z += 2.1f;
BoardModelPosSetV(lbl_1_bss_30[15], &sp34);
fn_1_E310(var_f29);
HuPrcVSleep();
@ -319,69 +268,57 @@ s32 fn_1_C108(s32 arg0) {
var_r29 -= 1;
}
BoardModelMotionStart(lbl_1_bss_30[15], 3, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_430);
BoardModelMotionSpeedSet(lbl_1_bss_30[15], 4.0f);
for (i = 0; i < 0xA; i++) {
sp34.z -= lbl_1_rodata_434;
sp34.z -= 6.2999997f;
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);
BoardModelMotionSpeedSet(lbl_1_bss_30[15], 1.0f);
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;
var_f31 = 0.0f;
var_f27 = 16.0f;
sp1C.x = 0.0f;
sp1C.z = -50.0f;
// 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;
sp1C.y = var_f27 - (0.55833334f * (0.25f * (var_f31 * var_f31)));
var_f31 += 1.0f;
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);
var_f25 = VECDistanceXZ(&sp28, &sp10);
if (var_f25 >= 430.0f) {
if (sp28.y <= (55.0f + sp10.y)) {
PSVECSubtract(&sp28, &sp10, (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);
sp1C.y = 0.0f;
PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, 429.0f);
PSVECAdd((Vec* ) &sp1C, &sp10, (Vec* ) &sp1C);
sp28.x = sp1C.x;
sp28.z = sp1C.z;
sp1C.x = lbl_1_rodata_46C;
sp1C.z = lbl_1_rodata_470;
sp1C.x = -5.0f;
sp1C.z = 10.0f;
}
}
if (sp28.y < spC.point.y) {
sp28.y = spC.point.y;
if (sp28.y < sp10.y) {
sp28.y = sp10.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_f31 = ((1.0f/255.0f) * (6.0f * frand8()));
var_f27 = 6.0f + ((1.0f/255.0f) * (6.0f * frand8()));
var_f31 = 1.0f;
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()));
//var_f31 = ((1.0f/255.0f) * (5.0f * frand8()));
sp1C.x = 15.0f + ((1.0f/255.0f) * (5.0f * frand8()));
sp1C.z = 15.0f + ((1.0f/255.0f) * (5.0f * frand8()));
HuAudFXPlay(0x41E);
}
@ -391,58 +328,58 @@ s32 fn_1_C108(s32 arg0) {
}
HuAudFXPlay(0x41E);
PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C);
PSVECSubtract(&sp28, &sp10, (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));
var_f31 = atan2d(-sp1C.z, sp1C.x);
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;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
var_r30 = (s32) (var_f31 / lbl_1_rodata_494);
if (fmod(var_f31, lbl_1_rodata_498) > lbl_1_rodata_4A0) {
var_r30 = (s32) (var_f31 / 22.5f);
if (fmod(var_f31, 22.5) > 11.25) {
var_r30 += 1;
}
if (var_r30 >= 0x10) {
var_r30 -= 0x10;
}
sp1C.y = lbl_1_rodata_410;
sp1C.y = 0.0f;
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);
var_f31 = (22.5f * var_r30) + sp34.y; // TODO: Update rodata for asm change
sp1C.x = cosd(var_f31);
sp1C.z = -sind(var_f31);
PSVECScale(&sp1C, &sp1C, 429.0f);
PSVECAdd(&sp1C, &sp10, &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) {
if (sp34.y >= 292.5f &&
sp34.y < 315.0f) {
break;
}
HuPrcVSleep();
}
for (i = 0; i < 0x3C; i++) {
var_f29 += lbl_1_rodata_420;
var_f29 += 0.375f;
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);
var_f31 = (22.5f * (f32) var_r30) + sp34.y;
sp1C.x = cosd(var_f31);
sp1C.z = -sind(var_f31);
PSVECScale(&sp1C, &sp1C, 429.0f);
PSVECAdd((Vec* ) &sp1C, &sp10, (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
var_r28 += -136.51666f;
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_30[4], lbl_1_rodata_410);
BoardModelRotYSet(lbl_1_bss_30[4], 0.0f);
HuAudFXStop(lbl_1_bss_384);
return lbl_1_data_4D0[var_r30];
}
@ -482,25 +419,25 @@ void fn_1_CD04(s32 arg0) {
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) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 25.0f) {
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;
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 30.0f) {
spC.x -= 0.25f;
spC.y -= 0.25f;
//temp_f1 = spC.z;
spC.z = spC.z - lbl_1_rodata_448;
spC.z = spC.z - 0.25f;
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
HuPrcVSleep();
}
spC.x = spC.y = spC.z = lbl_1_rodata_4C8;
spC.x = spC.y = spC.z = 1.25f;
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
}
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 30.0f) {
HuPrcVSleep();
}
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
@ -512,18 +449,18 @@ void fn_1_CD04(s32 arg0) {
HuAudFXPlay(0x421);
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4CC) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 60.0f) {
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);
temp_f30 = atan2d(sp24.x - sp18.x, sp24.z - sp18.z)/30;
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_408) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 90.0f) {
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)));
BoardModelRotYSet(lbl_1_bss_30[5], atan2d(sp24.x - sp18.x, sp24.z - sp18.z));
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
@ -544,15 +481,15 @@ void fn_1_CD04(s32 arg0) {
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)));
BoardPlayerRotYSet(lbl_1_bss_388, atan2d(sp18.x - sp24.x, sp18.z - sp24.z));
}
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;
while (var_f31 < 2.5f) {
var_f31 += 0.104166664f;
if (var_f31 > 2.5f) {
var_f31 = 2.5f;
}
spC.z = var_f31;
spC.y = var_f31;
@ -565,20 +502,313 @@ void fn_1_CD04(s32 arg0) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < BoardModelMotionMaxTimeGet(lbl_1_bss_30[5])) {
HuPrcVSleep();
}
HuPrcCreate(&fn_1_DF48, 0x2004, 0x1000, 0);
HuPrcCreate(fn_1_DF48, 0x2004, 0x1000, 0);
}
void fn_1_D3AC(void)
{
float temp_f31;
float temp_f30;
s32 temp_r31;
s32 temp_r30;
s16 sp38[20];
Vec sp2C;
Vec sp20;
Vec sp14;
float sp8[3] = { 1.0f, 0.3f, 2.5f };
fn_1_121C(0x130008);
BoardStatusShowSetAll(1);
BoardPlayerMotBlendSet(lbl_1_bss_388, 0, 15);
BoardPlayerPosGet(lbl_1_bss_388, &sp14);
for(temp_r31=0; temp_r31<20; temp_r31++) {
sp38[temp_r31] = BoardModelCreate(0x7000A, NULL, 1);
sp2C.x = (sp14.x-25.0f)+((1.0f/255.0f)*(frand8()*50.0f));
sp2C.y = (sp14.y+1200.0f)+(temp_r31*130.0f)+((1.0f/255.0f)*(frand8()*60.0f));
sp2C.z = (sp14.z-25.0f)+((1.0f/255.0f)*(frand8()*50.0f));
BoardModelPosSetV(sp38[temp_r31], &sp2C);
sp20.x = sp20.z = 0;
sp20.y = (1.0f/255.0f)*(frand8()*360.0f);
BoardModelRotSetV(sp38[temp_r31], &sp20);
}
temp_f31 = -4;
temp_r30 = 0;
temp_f30 = sp8[BoardPlayerSizeGet(lbl_1_bss_388)];
while(1) {
for(temp_r31=0; temp_r31<20; temp_r31++) {
if(temp_r31 < temp_r30) {
continue;
}
BoardModelPosGet(sp38[temp_r31], &sp2C);
BoardModelRotGet(sp38[temp_r31], &sp20);
sp2C.y += temp_f31;
sp20.y += 45.0f;
BoardModelPosSetV(sp38[temp_r31], &sp2C);
BoardModelRotSetV(sp38[temp_r31], &sp20);
if(sp2C.y <= sp14.y+(180.0f*temp_f30)) {
CharModelCoinEffectCreate(1, &sp2C);
BoardModelVisibilitySet(sp38[temp_r31], 0);
temp_r30++;
BoardPlayerCoinsAdd(lbl_1_bss_388, 1);
HuAudFXPlay(7);
omVibrate(lbl_1_bss_388, 12, 6, 6);
}
}
temp_f31 *= 1.05f;
if(temp_f31 < -40.0f) {
temp_f31 = -40.0f;
}
if(temp_r30 == 20) {
BoardPlayerMotionShiftSet(lbl_1_bss_388, 7, 0, 10, 0);
break;
}
HuPrcVSleep();
}
while(!BoardPlayerMotionEndCheck(lbl_1_bss_388)) {
HuPrcVSleep();
}
for(temp_r31=0; temp_r31<20; temp_r31++) {
BoardModelKill(sp38[temp_r31]);
}
HuPrcSleep(60);
BoardPlayerMotBlendSet(lbl_1_bss_388, 180, 15);
BoardStatusShowSetAll(0);
while(!BoardPlayerMotBlendCheck(lbl_1_bss_388)) {
HuPrcVSleep();
}
}
s32 fn_1_D8C4(void)
{
Vec sp40;
Vec sp34;
Vec sp28;
Vec sp1C;
s16 sp14[4];
float spC[2];
s32 sp8;
float temp_f31;
float temp_f30;
s32 temp_r31;
s16 temp_r30;
BoardSpace *temp_r29;
s32 temp_r28;
s16 temp_r27;
s16 temp_r26;
s32 temp_r25;
s16 temp_r24;
s16 temp_r23;
s16 temp_r22;
u32 temp_r21;
fn_1_121C(0x130009);
temp_r29 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800));
BoardModelPosGet(lbl_1_bss_30[3], &sp40);
for(temp_r31=0; temp_r31<4; temp_r31++) {
sp14[temp_r31] = BoardModelCreate(0x70000, NULL, 1);
BoardModelLayerSet(sp14[temp_r31], 2);
for(temp_r28=0; temp_r28<temp_r29->link_cnt; temp_r28++) {
temp_r21 = (BoardSpaceFlagGet(0, temp_r29->link[temp_r28]) & 0xE) >> 1;
if(temp_r21 == temp_r31+2) {
break;
}
}
sp8 = BoardSpacePosGet(0, temp_r29->link[temp_r28], &sp28);
VECSubtract(&sp28, &sp40, &sp34);
BoardModelRotYSet(sp14[temp_r31], atan2d(sp34.x, sp34.z));
VECNormalize(&sp34, &sp34);
VECScale(&sp34, &sp34, 400);
VECAdd(&sp34, &sp40, &sp34);
sp34.y += 300.0f;
BoardModelPosSetV(sp14[temp_r31], &sp34);
sp1C.x = sp1C.y = sp1C.z = 3;
BoardModelScaleSetV(sp14[temp_r31], &sp1C);
}
temp_r25 = fn_1_E2AC();
HuWinMesMaxSizeGet(1, spC, 0x13001E);
temp_r30 = HuWinCreate(-10000, 356, spC[0], spC[1], 0);
HuWinMesSet(temp_r30, 0x13001E);
HuWinBGTPLvlSet(temp_r30, 0);
HuWinMesSpeedSet(temp_r30, 0);
temp_r23 = GWPlayer[lbl_1_bss_388].port;
temp_f30 = 0;
temp_r22 = frandmod(20)+20;
restart:
while(1) {
if(GWPlayer[lbl_1_bss_388].com) {
temp_r27 = 0;
temp_r26 = 0;
if(temp_r22) {
temp_r22--;
temp_r24 = 0;
} else {
temp_r24 = PAD_BUTTON_A;
}
break;
}
temp_r24 = HuPadBtnDown[temp_r23];
temp_r27 = HuPadStkX[temp_r23];
temp_r26 = HuPadStkY[temp_r23];
if(!(temp_r24 & PAD_TRIGGER_Z)) {
break;
}
HuAudFXPlay(1);
for(temp_r31=0; temp_r31<4; temp_r31++) {
BoardModelVisibilitySet(sp14[temp_r31], 0);
}
HuWinDispOff(temp_r30);
BoardViewMapExec(lbl_1_bss_388);
HuWinDispOn(temp_r30);
for(temp_r31=0; temp_r31<4; temp_r31++) {
BoardModelVisibilitySet(sp14[temp_r31], 1);
}
}
if(!(temp_r24 & PAD_BUTTON_A)) {
if(abs(temp_r27) < 10) {
temp_r27 = 0;
}
if(abs(temp_r26) < 10) {
temp_r26 = 0;
}
if(temp_r27 != 0 || temp_r26 != 0) {
temp_f31 = atan2d(-temp_r27, -temp_r26);
if(temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
temp_r31 = temp_f31/90.0f;
temp_f31 = fmod(temp_f31, 90.0);
if(temp_r31 != temp_r25 && temp_f31 >= 20.0f && temp_f31 <= 70.0f){
temp_f30 = 0;
temp_r25 = temp_r31;
HuAudFXPlay(0);
}
}
for(temp_r31=0; temp_r31<4; temp_r31++) {
if(temp_r31 == temp_r25) {
sp1C.x = sp1C.y = sp1C.z = sind(temp_f30)+3.0;
temp_f30 += 8.0f;
if(temp_f30 > 180.0f) {
temp_f30 -= 180.0f;
}
} else {
sp1C.x = sp1C.y = sp1C.z = 3.0f;
}
BoardModelScaleSetV(sp14[temp_r31], &sp1C);
}
HuPrcVSleep();
goto restart;
} else {
HuAudFXPlay(2);
for(temp_r31=0; temp_r31<4; temp_r31++) {
BoardModelKill(sp14[temp_r31]);
}
HuWinKill(temp_r30);
return temp_r25;
}
}
void fn_1_DF48(void)
{
Vec sp14;
Vec sp8;
s32 temp_r31;
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
BoardModelMotionTimeSet(lbl_1_bss_30[5], 0);
BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002);
temp_f31 = BoardModelRotYGet(lbl_1_bss_30[5]);
temp_f29 = -temp_f31/20.0f;
temp_f30 = BoardModelRotYGet(lbl_1_bss_30[15]);
temp_f28 = -temp_f30/20.0f;
BoardModelScaleGet(lbl_1_bss_30[6], &sp14);
for(temp_r31=0; temp_r31<10; temp_r31++) {
sp14.x = sp14.y = sp14.z = 1.0f-(temp_r31*0.1f);
if(sp14.x < 0.0f) {
sp14.x = sp14.y = sp14.z = 0.0f;
}
BoardModelScaleSetV(lbl_1_bss_30[6], &sp14);
temp_f31 += temp_f29;
BoardModelRotYSet(lbl_1_bss_30[5], temp_f31);
temp_f30 += temp_f28;
BoardModelRotYSet(lbl_1_bss_30[15], temp_f30);
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_bss_30[15], &sp8);
sp8.z -= 90.0f;
sp8.y += 50.0f;
BoardModelPosSetV(lbl_1_bss_30[6], &sp8);
for(temp_r31=0; temp_r31<10; temp_r31++) {
sp14.x = sp14.y = sp14.z = temp_r31*0.1f;
if(sp14.x > 1.0f) {
sp14.x = sp14.y = sp14.z = 1.0f;
}
BoardModelScaleSetV(lbl_1_bss_30[6], &sp14);
temp_f31 += temp_f29;
BoardModelRotYSet(lbl_1_bss_30[5], temp_f31);
temp_f30 += temp_f28;
BoardModelRotYSet(lbl_1_bss_30[15], temp_f30);
HuPrcVSleep();
}
sp14.x = sp14.y = sp14.z = 1.0f;
BoardModelScaleSetV(lbl_1_bss_30[6], &sp14);
BoardModelRotYSet(lbl_1_bss_30[5], 0);
BoardModelRotYSet(lbl_1_bss_30[15], 0);
HuPrcEnd();
}
s32 fn_1_E2AC(void)
{
switch(GWSystem.star_pos) {
case 0:
return 3;
case 1:
case 2:
return 0;
case 3:
case 4:
return 1;
case 5:
case 6:
case 7:
return 2;
default:
return -1;
}
}
/* 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 >= 360.0f) {
lbl_1_bss_380 -= 360.0f;
}
if (lbl_1_bss_380 < lbl_1_rodata_410) {
lbl_1_bss_380 += lbl_1_rodata_490;
if (lbl_1_bss_380 < 0.0f) {
lbl_1_bss_380 += 360.0f;
}
BoardModelRotGet(lbl_1_bss_30[4], &spC);
spC.y = lbl_1_bss_380;
BoardModelRotSetV(lbl_1_bss_30[4], &spC);
}
void fn_1_E41C(void)
{
lbl_1_bss_388 = GWSystem.player_curr;
OSReport("Roulette Player %d\n", lbl_1_bss_388);
lbl_1_bss_38C = HuPrcChildCreate(fn_1_BCFC, 8195, 8192, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_38C, (void *)fn_1_BE74); //fn_1_BE74 requires implicit return
while(lbl_1_bss_38C) {
HuPrcVSleep();
}
}

View file

@ -0,0 +1,585 @@
#include "REL/w02Dll.h"
#include "game/audio.h"
#include "game/pad.h"
#include "game/objsub.h"
#include "game/frand.h"
#include "game/chrman.h"
#include "ext_math.h"
Process *lbl_1_bss_378;
Process *lbl_1_bss_374;
s16 lbl_1_bss_370;
s16 lbl_1_bss_36E;
s16 lbl_1_bss_36C;
s16 lbl_1_bss_36A;
s16 lbl_1_bss_34C[15];
Vec lbl_1_bss_298[15];
Vec lbl_1_bss_1E4[15];
s16 lbl_1_bss_1C4[15];
s16 lbl_1_bss_1C0[2];
float lbl_1_bss_1BC;
Vec lbl_1_bss_1B0;
s16 lbl_1_bss_1AC;
Vec lbl_1_bss_1A0;
s32 lbl_1_data_490[8] = {
0x0076002E,
0x0076002F,
0x00760030,
0x00760031,
0x00760032,
0x00760033,
0x00760034,
0x00760035
};
s32 lbl_1_data_4B0[8] = {
0x00760026,
0x00760027,
0x00760028,
0x00760029,
0x0076002A,
0x0076002B,
0x0076002C,
0x0076002D
};
s32 fn_1_9250(void)
{
s32 temp_r31;
Vec sp14;
Vec sp8;
BoardModelVisibilitySet(lbl_1_bss_30[13], 1);
BoardModelVisibilitySet(lbl_1_bss_30[14], 1);
sp8.x = sp8.y = sp8.z = 0;
BoardModelRotSetV(lbl_1_bss_30[13], &sp8);
BoardModelRotSetV(lbl_1_bss_30[14], &sp8);
BoardModelPosSetV(lbl_1_bss_30[13], &lbl_1_bss_20);
BoardModelPosSetV(lbl_1_bss_30[14], &lbl_1_bss_14);
BoardModelVisibilitySet(lbl_1_bss_2E, 1);
BoardModelVisibilitySet(lbl_1_bss_2C, 1);
temp_r31 = BoardSpaceFlagSearch(0, 0x200);
BoardSpacePosGet(0, temp_r31, &sp14);
BoardModelPosSetV(lbl_1_bss_2E, &sp14);
BoardModelRotSetV(lbl_1_bss_2E, &sp8);
temp_r31 = BoardSpaceFlagSearch(0, 0x400);
BoardSpacePosGet(0, temp_r31, &sp14);
BoardModelPosSetV(lbl_1_bss_2C, &sp14);
BoardModelRotSetV(lbl_1_bss_2C, &sp8);
return 1;
}
s32 fn_1_94AC(void);
void fn_1_94C0(void);
void fn_1_93C8(u32 arg0)
{
BoardEventFlagSet();
if(arg0 < 2) {
lbl_1_bss_370 = 0;
} else {
lbl_1_bss_370 = 1;
}
lbl_1_bss_36E = GWSystem.player_curr;
BoardPlayerPostTurnHookSet(lbl_1_bss_36E, fn_1_9250);
lbl_1_bss_378 = HuPrcCreate(fn_1_94C0, 8196, 8192, 0);
HuPrcDestructorSet2(lbl_1_bss_378, (void *)fn_1_94AC);
while(lbl_1_bss_378) {
HuPrcVSleep();
}
BoardEventFlagReset();
}
s32 fn_1_94AC(void)
{
lbl_1_bss_378 = NULL;
}
void fn_1_98D8(void);
void fn_1_9EC4(void);
void fn_1_A558(void);
void fn_1_A8E8(void);
void fn_1_B450(s32 arg0);
void fn_1_94C0(void)
{
s32 temp_r31;
s32 temp_r30;
Vec sp10;
float sp8[2];
if(lbl_1_bss_370) {
BoardModelVisibilitySet(lbl_1_bss_2E, 0);
BoardModelVisibilitySet(lbl_1_bss_30[13], 0);
lbl_1_bss_36A = lbl_1_bss_30[14];
lbl_1_bss_36C = lbl_1_bss_2C;
sp10.x = sp10.z = 0;
sp10.y = -90;
temp_r30 = BoardSpaceFlagSearch(0, 0x40);
} else {
BoardModelVisibilitySet(lbl_1_bss_2C, 0);
BoardModelVisibilitySet(lbl_1_bss_30[14], 0);
lbl_1_bss_36A = lbl_1_bss_30[13];
lbl_1_bss_36C = lbl_1_bss_2E;
sp10.x = sp10.z = 0;
sp10.y = 90;
temp_r30 = BoardSpaceFlagSearch(0, 0x100);
}
lbl_1_bss_1C0[0] = BoardPlayerMotionCreate(lbl_1_bss_36E, lbl_1_data_490[GWPlayer[lbl_1_bss_36E].character]);
lbl_1_bss_1C0[1] = BoardPlayerMotionCreate(lbl_1_bss_36E, lbl_1_data_4B0[GWPlayer[lbl_1_bss_36E].character]);
fn_1_98D8();
BoardModelRotSetV(lbl_1_bss_36A, &sp10);
BoardCameraMoveSet(0);
BoardCameraTargetPlayerSet(lbl_1_bss_36E);
BoardCameraRotSet(-10, -sp10.y);
BoardCameraZoomSet(900);
BoardStatusShowSetAll(0);
HuWinMesMaxSizeGet(1, sp8, 0x13001C);
lbl_1_bss_1AC = HuWinCreate(-10000, 400, sp8[0], sp8[1], 0);
HuWinMesSet(lbl_1_bss_1AC, 0x13001C);
HuWinBGTPLvlSet(lbl_1_bss_1AC, 0);
HuWinMesSpeedSet(lbl_1_bss_1AC, 0);
fn_1_9EC4();
BoardAudSeqPause(0, 1, 1000);
HuPrcSleep(45);
BoardCameraTargetGet(&lbl_1_bss_1A0);
BoardCameraTargetModelSet(-1);
fn_1_A558();
HuAudPlayerVoicePlay(lbl_1_bss_36E, 291);
fn_1_A8E8();
HuPrcKill(lbl_1_bss_374);
for(temp_r31=0; temp_r31<15; temp_r31++) {
BoardModelKill(lbl_1_bss_34C[temp_r31]);
}
BoardStatusShowSetAll(1);
BoardCameraMoveSet(0);
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardCameraMoveSet(1);
BoardAudSeqPause(0, 0, 1000);
fn_1_B450(temp_r30);
BoardPlayerMotionKill(lbl_1_bss_36E, lbl_1_bss_1C0[0]);
BoardPlayerMotionKill(lbl_1_bss_36E, lbl_1_bss_1C0[1]);
HuPrcEnd();
}
void fn_1_98D8(void)
{
Vec sp1C;
Vec sp10;
float temp_f27;
float temp_f26;
float temp_f23;
float temp_f22;
BoardModelPosGet(lbl_1_bss_36C, &lbl_1_bss_1B0);
BoardPlayerPosGet(lbl_1_bss_36E, &sp1C);
temp_f23 = atan2d(lbl_1_bss_1B0.x-sp1C.x, lbl_1_bss_1B0.z-sp1C.z);
BoardPlayerMotBlendSet(lbl_1_bss_36E, temp_f23, 15);
while(!BoardPlayerMotBlendCheck(lbl_1_bss_36E)) {
HuPrcVSleep();
}
BoardCameraTargetModelSet(-1);
temp_f26 = VECDistanceXZ(&lbl_1_bss_1B0, &sp1C);
VECSubtract(&lbl_1_bss_1B0, &sp1C, &sp10);
VECNormalize(&sp10, &sp10);
VECScale(&sp10, &sp10, temp_f26/45.0f);
BoardPlayerMotionStart(lbl_1_bss_36E, 4, 0);
temp_f27 = 0;
temp_f22 = 15;
while(1) {
sp10.y = temp_f22-(0.075f*(0.25f*(temp_f27*temp_f27)));
temp_f27++;
VECAdd(&sp1C, &sp10, &sp1C);
temp_f26 = VECDistanceXZ(&lbl_1_bss_1B0, &sp1C);
if(temp_f26 < 5.0f) {
sp10.x = sp10.z = 0;
sp1C.x = lbl_1_bss_1B0.x;
sp1C.z = lbl_1_bss_1B0.z;
}
if(sp1C.y <= lbl_1_bss_1B0.y+8.5f) {
sp1C.y = lbl_1_bss_1B0.y+8.5f;
break;
}
BoardPlayerPosSetV(lbl_1_bss_36E, &sp1C);
HuPrcVSleep();
}
BoardPlayerPosSetV(lbl_1_bss_36E, &sp1C);
BoardPlayerIdleSet(lbl_1_bss_36E);
HuPrcSleep(8);
if(lbl_1_bss_370) {
BoardPlayerMotBlendSet(lbl_1_bss_36E, -90, 15);
} else {
BoardPlayerMotBlendSet(lbl_1_bss_36E, 90, 15);
}
while(!BoardPlayerMotBlendCheck(lbl_1_bss_36E)) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(lbl_1_bss_36E, lbl_1_bss_1C0[0], 0, 10, 0x40000001);
HuPrcSleep(20);
}
void fn_1_BB30(void);
void fn_1_9EC4(void)
{
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
float temp_f27;
s32 sp80[15];
float sp44[15];
float sp8[15];
s32 temp_r31;
s32 temp_r30;
for(temp_r31=0; temp_r31<15; temp_r31++) {
lbl_1_bss_34C[temp_r31] = BoardModelCreate(0x7000A, NULL, 1);
BoardModelVisibilitySet(lbl_1_bss_34C[temp_r31], 0);
lbl_1_bss_1C4[temp_r31] = 1;
}
temp_f31 = ((1.0f/255.0f)*(90.0f*frand8()))+45;
if(frandBool()) {
temp_f31 += 180.0f;
}
if(lbl_1_bss_370) {
temp_f30 = 1430;
temp_f29 = -1730;
} else {
temp_f30 = -1730;
temp_f29 = 1430;
}
temp_f27 = (temp_f29-temp_f30)/15.0f;
for(temp_r31=0; temp_r31<15; temp_r31++) {
lbl_1_bss_298[temp_r31].x = temp_f30+(temp_f27*temp_r31);
lbl_1_bss_298[temp_r31].z = -2100+(190*sind(temp_f31));
lbl_1_bss_298[temp_r31].y = (500.0f+(50.0f+lbl_1_bss_1B0.y))+(temp_r31*50)+(400.0f*((1.0f/255.0f)*frand8()));
temp_f31 += 60.0f;
lbl_1_bss_1E4[temp_r31].x = lbl_1_bss_1E4[temp_r31].z = 0;
lbl_1_bss_1E4[temp_r31].y = (360.0f*((1.0f/255.0f)*frand8()));
BoardModelVisibilitySet(lbl_1_bss_34C[temp_r31], 1);
BoardModelPosSetV(lbl_1_bss_34C[temp_r31], &lbl_1_bss_298[temp_r31]);
BoardModelRotSetV(lbl_1_bss_34C[temp_r31], &lbl_1_bss_1E4[temp_r31]);
}
lbl_1_bss_374 = HuPrcCreate(fn_1_BB30, 8196, 2048, 0);
for(temp_r31=0; temp_r31<15; temp_r31++) {
sp8[temp_r31] = sp44[temp_r31] = 0;
sp80[temp_r31] = 1;
}
while(1) {
temp_r30 = 0;
for(temp_r31=0; temp_r31<15; temp_r31++) {
if(sp80[temp_r31] == 1) {
temp_f28 = sp44[temp_r31]-((1.0f/15.0f)*(0.25f*(sp8[temp_r31]*sp8[temp_r31])));
lbl_1_bss_298[temp_r31].y += temp_f28;
if(lbl_1_bss_298[temp_r31].y <= 50.0f+lbl_1_bss_1B0.y) {
lbl_1_bss_298[temp_r31].y = 50.0f+lbl_1_bss_1B0.y;
sp44[temp_r31] = -temp_f28*0.2f;
sp8[temp_r31] = 0;
if(sp44[temp_r31] < 5.0f) {
sp44[temp_r31] = 0;
sp80[temp_r31] = 0;
}
HuAudFXPlay(18);
}
BoardModelPosSetV(lbl_1_bss_34C[temp_r31], &lbl_1_bss_298[temp_r31]);
sp8[temp_r31]++;
} else {
temp_r30++;
}
}
if(temp_r30 == 15) {
break;
}
HuPrcVSleep();
}
}
void fn_1_A558(void)
{
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
float temp_f31;
s32 temp_r31;
BoardMusStart(1, 20, 127, 0);
BoardModelPosGet(lbl_1_bss_36A, &sp2C);
BoardModelMotionStart(lbl_1_bss_36A, 2, 0x40000001);
for(temp_r31=0; temp_r31<60; temp_r31++) {
if(lbl_1_bss_370) {
sp2C.x += 5.0f;
} else {
sp2C.x -= 5.0f;
}
BoardModelPosSetV(lbl_1_bss_36A, &sp2C);
HuPrcVSleep();
}
BoardModelRotGet(lbl_1_bss_36A, &sp14);
BoardPlayerPosGet(lbl_1_bss_36E, &sp20);
VECSubtract(&sp20, &sp2C, &sp8);
temp_f31 = VECMag(&sp8);
sp14.y = atan2d(lbl_1_bss_298[0].x-sp20.x, lbl_1_bss_298[0].z-sp20.z);
sp2C.x = sp20.x+(temp_f31*sind(sp14.y-180.0f));
sp2C.z = sp20.z+(temp_f31*cosd(sp14.y-180.0f));
BoardModelPosSetV(lbl_1_bss_36A, &sp2C);
BoardModelRotSetV(lbl_1_bss_36A, &sp14);
lbl_1_bss_1BC = sp14.y;
HuPrcSleep(20);
BoardModelMotionStart(lbl_1_bss_36A, 3, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_36A, 4.0f);
VECSubtract(&sp20, &sp2C, &sp8);
temp_f31 = ((VECMag(&sp8)-50)-50)/20;
VECNormalize(&sp8, &sp8);
VECScale(&sp8, &sp8, temp_f31);
for(temp_r31=0; temp_r31<20; temp_r31++) {
VECAdd(&sp2C, &sp8, &sp2C);
BoardModelPosSetV(lbl_1_bss_36A, &sp2C);
HuPrcVSleep();
}
BoardModelMotionStart(lbl_1_bss_36A, 1, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_36A, 1.0f);
omVibrate(lbl_1_bss_36E, 12, 4, 2);
HuAudFXPlay(1069);
}
void fn_1_B8A8(s8 *arg0);
void fn_1_A8E8(void)
{
Vec sp28;
Vec sp1C;
Vec sp10;
s8 sp8;
float temp_f29;
float temp_f28;
float temp_f27;
float temp_f26;
float temp_f25;
s16 temp_r31;
s8 temp_r30;
s16 temp_r29;
temp_r29 = GWPlayer[lbl_1_bss_36E].port;
if(lbl_1_bss_370) {
temp_f27 = 2430;
temp_f26 = -1830;
} else {
temp_f27 = -2730;
temp_f26 = 1530;
}
temp_f25 = (temp_f26-temp_f27)/2;
while(1) {
temp_r30 = 0;
BoardPlayerPosGet(lbl_1_bss_36E, &sp28);
if(GWPlayer[lbl_1_bss_36E].com) {
fn_1_B8A8(&sp8);
} else {
sp8 = HuPadStkX[temp_r29];
}
temp_f28 = -sp8*0.025f;
if(lbl_1_bss_370) {
if(lbl_1_bss_1BC < -90.0f) {
lbl_1_bss_1BC += temp_f28;
if(lbl_1_bss_1BC < -165.0f) {
lbl_1_bss_1BC = -165.0f;
}
if(lbl_1_bss_1BC > -105.0f) {
lbl_1_bss_1BC = -105.0f;
}
} else {
lbl_1_bss_1BC += temp_f28;
if(lbl_1_bss_1BC < -75.0f) {
lbl_1_bss_1BC = -75.0f;
}
if(lbl_1_bss_1BC > -15.0f) {
lbl_1_bss_1BC = -15.0f;
}
}
} else {
if(lbl_1_bss_1BC > 90.0f) {
lbl_1_bss_1BC += temp_f28;
if(lbl_1_bss_1BC > 165.0f) {
lbl_1_bss_1BC = 165.0f;
}
if(lbl_1_bss_1BC < 105.0f) {
lbl_1_bss_1BC = 105.0f;
}
} else {
lbl_1_bss_1BC += temp_f28;
if(lbl_1_bss_1BC > 75.0f) {
lbl_1_bss_1BC = 75.0f;
}
if(lbl_1_bss_1BC < 15.0f) {
lbl_1_bss_1BC = 15.0f;
}
}
}
temp_f29 = 4.0+(15.0*(1.0-fabs((sp28.x-(temp_f25+temp_f27))/temp_f25)));
sp28.x += temp_f29*sind(lbl_1_bss_1BC);
sp28.z += temp_f29*cosd(lbl_1_bss_1BC);
if(lbl_1_bss_370) {
if(sp28.z-50 < -2340) {
sp28.z = -2290;
lbl_1_bss_1BC = (-90-lbl_1_bss_1BC)+-90;
temp_r30 = 1;
} else if(sp28.z+50 > -1860) {
lbl_1_bss_1BC = (-90-lbl_1_bss_1BC)+-90;
sp28.z = -1910;
temp_r30 = 1;
}
} else {
if(sp28.z-50 < -2340) {
sp28.z = -2290;
lbl_1_bss_1BC = (90-lbl_1_bss_1BC)+90;
temp_r30 = 1;
} else if(sp28.z+50 > -1860) {
lbl_1_bss_1BC = (90-lbl_1_bss_1BC)+90;
sp28.z = -1910;
temp_r30 = 1;
}
}
BoardPlayerPosSetV(lbl_1_bss_36E, &sp28);
sp28.y -= 8.5f;
BoardModelPosSetV(lbl_1_bss_36C, &sp28);
if(temp_r30) {
HuAudFXPlay(1060);
}
BoardPlayerRotGet(lbl_1_bss_36E, &sp1C);
sp1C.y += 1.25f*temp_f29;
if(sp1C.y >= 360.0f) {
sp1C.y -= 360.0f;
}
BoardPlayerRotSetV(lbl_1_bss_36E, &sp1C);
BoardModelRotGet(lbl_1_bss_36C, &sp1C);
sp1C.y += 1.25f*temp_f29;
if(sp1C.y >= 360.0f) {
sp1C.y -= 360.0f;
}
BoardModelRotSetV(lbl_1_bss_36C, &sp1C);
for(temp_r31=0; temp_r31<15; temp_r31++) {
if(lbl_1_bss_1C4[temp_r31] == 0) {
continue;
}
BoardModelPosGet(lbl_1_bss_34C[temp_r31], &sp10);
if(VECDistanceXZ(&sp10, &sp28) < 100.0f) {
lbl_1_bss_1C4[temp_r31] = 0;
BoardModelVisibilitySet(lbl_1_bss_34C[temp_r31], 0);
CharModelCoinEffectCreate(1, &sp10);
BoardPlayerCoinsAdd(lbl_1_bss_36E, 1);
HuAudFXPlay(7);
}
}
lbl_1_bss_1A0.x = sp28.x;
BoardCameraTargetSet(lbl_1_bss_1A0.x, lbl_1_bss_1A0.y, lbl_1_bss_1A0.z);
if(temp_f29 <= 3.0f) {
break;
}
HuPrcVSleep();
}
HuWinKill(lbl_1_bss_1AC);
BoardPlayerMotionStart(lbl_1_bss_36E, lbl_1_bss_1C0[1], 0);
BoardPlayerMotionEndWait(lbl_1_bss_36E);
BoardPlayerMotionShiftSet(lbl_1_bss_36E, 6, 0, 15, 0x40000001);
HuPrcSleep(40);
BoardAudSeqFadeOut(1, 1000);
HuPrcSleep(70);
BoardPlayerMotBlendSet(lbl_1_bss_36E, 0, 1);
}
void fn_1_B450(s32 arg0)
{
float temp_f27;
float temp_f26;
float temp_f23;
Vec sp28;
Vec sp1C;
Vec sp10;
BoardSpacePosGet(0, arg0, &sp28);
BoardPlayerPosGet(lbl_1_bss_36E, &sp1C);
HuAudPlayerVoicePlay(lbl_1_bss_36E, 290);
temp_f26 = VECDistanceXZ(&sp28, &sp1C);
VECSubtract(&sp28, &sp1C, &sp10);
VECNormalize(&sp10, &sp10);
VECScale(&sp10, &sp10, temp_f26/45.0f);
BoardPlayerMotionStart(lbl_1_bss_36E, 4, 0);
temp_f27 = 0;
temp_f23 = 15;
while(1) {
sp10.y = temp_f23-(0.075f*(0.25f*(temp_f27*temp_f27)));
temp_f27++;
VECAdd(&sp1C, &sp10, &sp1C);
temp_f26 = VECDistanceXZ(&sp28, &sp1C);
if(temp_f26 < 5.0f) {
sp10.x = sp10.z = 0;
sp1C.x = sp28.x;
sp1C.z = sp28.z;
}
if(sp1C.y <= sp28.y) {
sp1C.y = sp28.y;
break;
}
BoardPlayerPosSetV(lbl_1_bss_36E, &sp1C);
HuPrcVSleep();
}
BoardPlayerPosSetV(lbl_1_bss_36E, &sp1C);
GWPlayer[lbl_1_bss_36E].space_curr = arg0;
BoardPlayerIdleSet(lbl_1_bss_36E);
HuPrcSleep(8);
HuPrcSleep(20);
}
void fn_1_B8A8(s8 *arg0)
{
float temp_f29;
float temp_f28;
Vec spC;
s32 temp_r31;
s32 temp_r29;
*arg0 = 0;
BoardPlayerPosGet(lbl_1_bss_36E, &spC);
temp_f29 = -1000;
temp_r29 = -1;
for(temp_r31=0; temp_r31<15; temp_r31++) {
if(lbl_1_bss_1C4[temp_r31] == 0) {
continue;
}
temp_f28 = VECDistanceXZ(&spC, &lbl_1_bss_298[temp_r31]);
if(temp_f28 > temp_f29) {
temp_f29 = temp_f28;
temp_r29 = temp_r31;
}
}
if(temp_r29 >= 0) {
if(spC.z > lbl_1_bss_298[temp_r31].z) {
*arg0 = -70;
} else {
*arg0 = 70;
}
if(lbl_1_bss_370) {
*arg0 = -(*arg0);
}
}
}
void fn_1_BB30(void)
{
s32 temp_r31;
while(1) {
for(temp_r31=0; temp_r31<15; temp_r31++) {
if(lbl_1_bss_1C4[temp_r31] == 0) {
continue;
}
lbl_1_bss_1E4[temp_r31].y += 10.0f;
if(lbl_1_bss_1E4[temp_r31].y >= 360.0f) {
lbl_1_bss_1E4[temp_r31].y -= 360.0f;
}
BoardModelRotSetV(lbl_1_bss_34C[temp_r31], &lbl_1_bss_1E4[temp_r31]);
}
HuPrcVSleep();
}
}

View file

@ -105,7 +105,7 @@ void fn_1_3058(void) {
}
s32 fn_1_309C(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_70 = HuPrcChildCreate(fn_1_313C, 0x2003U, 0x2000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_70, fn_1_3218);
@ -113,7 +113,7 @@ s32 fn_1_309C(void) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
return lbl_1_bss_7C;
}

View file

@ -94,13 +94,13 @@ void fn_1_7B58(void) {
}
void fn_1_7BA8(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_140 = HuPrcChildCreate(&fn_1_7C98, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_140, &fn_1_7C38);
while (lbl_1_bss_140) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
void fn_1_7C38(void) {

View file

@ -19,6 +19,7 @@
#include "game/hsfmotion.h"
#include "game/pad.h"
#include "game/frand.h"
#include "ext_math.h"
typedef struct someBits {
/* 0x00 */ struct {
@ -141,7 +142,7 @@ void fn_1_9A9C(void) {
}
void fn_1_9AA0(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
@ -149,7 +150,7 @@ void fn_1_9AA0(void) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
void fn_1_9B30(void) {
@ -939,7 +940,7 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
HsfanimStruct01* var_r31;
s32 i, j;
if (particle->unk_34 == 0U) {
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;
@ -952,7 +953,7 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
temp_f31 = sp8.x;
BoardModelPosGet(particle->unk_02, &sp8);
for (i = 0; i < 0x16; i++) {
for (i = 0; i < 22; i++) {
var_r31 = particle->unk_48;
for (j = 0; j < particle->unk_30; j++, var_r31++) {
if (0.0f == var_r31->unk2C) {
@ -960,13 +961,13 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
}
}
if (j != particle->unk_30) {
temp_f30 = 360.0f * (0.003921569f * frand8());
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * frand8())));
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 * frand8())))));
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * frand8())));
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * frand8())));
temp_f30 = 360.0f * ((1.0f/255.0f) * frand8());
temp_f29 = temp_f31 * (20.0f + (60.0f * ((1.0f/255.0f) * frand8())));
var_r31->unk34.x = (sp8.x + (temp_f29 * sind(temp_f30)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cosd(temp_f30)));
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * ((1.0f/255.0f) * frand8())))));
var_r31->unk08.x = (0.5f + (3.0f * ((1.0f/255.0f) * frand8())));
var_r31->unk08.y = (0.3f + (2.0f * ((1.0f/255.0f) * frand8())));
var_r31->unk40.a = 180;
var_r31->unk2C = (15.0f * temp_f31);
}

View file

@ -101,7 +101,7 @@ s32 fn_1_6698(void) {
}
s16 fn_1_675C(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
@ -109,7 +109,7 @@ s16 fn_1_675C(void) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
return lbl_1_bss_128;
}

View file

@ -53,7 +53,7 @@ s8 lbl_1_bss_2C;
Process* lbl_1_bss_28;
void fn_1_12C8(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_28 = HuPrcChildCreate(&fn_1_1358, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_28, &fn_1_152C);
@ -61,7 +61,7 @@ void fn_1_12C8(void) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
void fn_1_1358(void) {

View file

@ -180,7 +180,7 @@ static void fn_1_20EC(void) {
}
fn_1_5648();
fn_1_2C10();
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerMotBlendSet(temp_r30, 180, 15);
BoardCameraViewSet(2);
while (!BoardPlayerMotBlendCheck(temp_r30)) {
@ -238,7 +238,7 @@ static void fn_1_20EC(void) {
fn_1_28BC();
fn_1_2B8C();
BoardAudSeqPause(0, 0, 1000);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardPlayerMotionKill(temp_r30, lbl_1_bss_52[temp_r30][0]);

View file

@ -101,7 +101,7 @@ void fn_1_1618(void) {
temp_r31 = GWSystem.player_curr;
temp_r30 = BoardPlayerMotionCreate(temp_r31, lbl_1_data_2AC[GWPlayer[temp_r31].character]);
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerMotBlendSet(temp_r31, 180, 15);
BoardCameraViewSet(2);
while (!BoardPlayerMotBlendCheck(temp_r31)) {
@ -125,7 +125,7 @@ void fn_1_1618(void) {
BoardPlayerMotionShiftSet(temp_r31, 1, 0.0f, 10.0f, 0x40000001);
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
BoardPlayerMotionKill(temp_r31, temp_r30);
HuPrcKill(NULL);
while (TRUE) {

View file

@ -208,12 +208,12 @@ static s32 fn_1_7FC(void) {
if (lbl_1_bss_0->unk00 & 1) {
fn_1_55B4();
} else {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerIdleSet(temp_r31);
BoardWinCreate(0, MAKE_MESSID(32, 25), -1);
BoardWinWait();
BoardWinKill();
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
return 1;
}
@ -389,7 +389,7 @@ static s32 fn_1_103C(void) {
var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if (temp_r31 & 0x200000) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_958, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_CF8);
@ -399,7 +399,7 @@ static s32 fn_1_103C(void) {
} else if (temp_r31 & 0x400000) {
fn_1_DB0();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
s32 fn_1_1130(s16 arg0, float arg1, float arg2) {

View file

@ -69,7 +69,7 @@ void fn_1_155C(void) {
u32 var_r31;
lbl_1_bss_28 = GWSystem.player_curr;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
temp_r28 = BoardModelMotionCreate(lbl_1_bss_14[4], lbl_1_data_180);
temp_f30 = BoardPlayerRotYGet(lbl_1_bss_28);
BoardPlayerPosGet(lbl_1_bss_28, &sp58);
@ -195,7 +195,7 @@ void fn_1_155C(void) {
}
BoardCameraMotionWait();
BoardModelMotionKill(lbl_1_bss_14[4], temp_r28);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
s32 lbl_1_data_188[4] = { 0x79000C, 0x79000E, 0x79000F, 0x790010 };
@ -229,7 +229,7 @@ void fn_1_1E44(void) {
s32 var_r30;
lbl_1_bss_28 = GWSystem.player_curr;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
for (var_r31 = 0; var_r31 < 4; var_r31++) {
sp8[var_r31] = BoardModelMotionCreate(lbl_1_bss_14[4], lbl_1_data_188[var_r31]);

View file

@ -404,7 +404,7 @@ s32 fn_1_1114(void) {
s16 var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if ((temp_r31 & 0x200000) != 0) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_954, 0x2003, 0x3000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_D4C);
@ -415,7 +415,7 @@ s32 fn_1_1114(void) {
} else if ((temp_r31 & 0x400000) != 0) {
fn_1_E40();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) {

View file

@ -62,7 +62,7 @@ void fn_1_2C7C(s32 arg0) {
for (var_r31 = 0; var_r31 < 3; var_r31++) {
lbl_1_bss_30[var_r31] = BoardPlayerMotionCreate(lbl_1_bss_4C, lbl_1_data_1CC[var_r31] | lbl_1_data_124[GWPlayer[lbl_1_bss_4C].character]);
}
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerIdleSet(lbl_1_bss_4C);
spC.y = 100.0f;
spC.z = 0.0f;
@ -83,7 +83,7 @@ void fn_1_2C7C(s32 arg0) {
BoardPlayerIdleSet(lbl_1_bss_4C);
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
for (var_r31 = 0; var_r31 < 2; var_r31++) {
BoardModelKill(lbl_1_bss_44[var_r31]);
@ -333,4 +333,4 @@ void fn_1_3E8C(void) {
HuPrcVSleep();
}
HuPrcEnd();
}
}

View file

@ -172,7 +172,7 @@ void fn_1_91D8(void) {
}
void fn_1_9294(s32 arg0, s32 arg1) {
BoardDiceDigit2DInit(arg0, 0);
BoardRollCreate(arg0, 0);
fn_1_92D8(arg0, arg1);
}
@ -182,13 +182,13 @@ s32 fn_1_92D8(s32 arg0, s32 arg1) {
return lbl_1_bss_F0;
}
lbl_1_bss_F4 = arg0;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_E8 = HuPrcChildCreate(fn_1_93C8, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_E8, fn_1_94D4);
while (lbl_1_bss_E8) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
return lbl_1_bss_F0;
}
@ -564,7 +564,7 @@ static void fn_1_A408(s32 arg0) {
}
HuAudFXAllStop();
BoardAudSeqFadeOutAll();
lbl_1_bss_0->unk06 = BoardRollTypeGet() + 1;
lbl_1_bss_0->unk06 = BoardItemPrevGet() + 1;
if (BoardRandMod(100) < 50) {
var_r29 = OVL_M457;
GWMGAvailSet(0x1C9);
@ -575,7 +575,7 @@ static void fn_1_A408(s32 arg0) {
GWSystem.mg_next = 0x39;
}
_SetFlag(FLAG_ID_MAKE(1, 6));
BoardDiceDigit2DUpdateEnable(arg0);
BoardRollUpdateSet(arg0);
if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
GWPlayer->coin_win = 0;
}
@ -620,7 +620,7 @@ static void fn_1_A408(s32 arg0) {
_ClearFlag(FLAG_ID_MAKE(1, 6));
BoardCameraViewSet(1);
BoardCameraMotionWait();
BoardDiceDigit2DInit(arg0, 0);
BoardRollCreate(arg0, 0);
} else {
BoardNextOvlSet(var_r29);
}
@ -651,7 +651,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) {
}
BoardStatusItemSet(1);
BoardMusStart(1, 6, 0x7F, 0);
BoardRollTypeSet(lbl_1_bss_0->unk06 - 1);
BoardItemPrevSet(lbl_1_bss_0->unk06 - 1);
lbl_1_bss_0->unk06 = 0;
BoardSpacePosGet(0, arg1, &sp3C);
BoardPlayerPosSetV(arg0, &sp3C);

View file

@ -171,7 +171,7 @@ void fn_1_7FA4(void) {
}
void fn_1_8264(s32 arg0, s16 arg1) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_E6 = arg0;
lbl_1_bss_E4 = arg1;
lbl_1_bss_C8 = HuPrcChildCreate(fn_1_8320, 0x2003, 0x3800, 0, boardMainProc);
@ -179,7 +179,7 @@ void fn_1_8264(s32 arg0, s16 arg1) {
while (lbl_1_bss_C8) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_8320(void) {

View file

@ -67,13 +67,13 @@ static s32 lbl_1_data_230[] = {
};
void fn_1_6EF0(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_90 = HuPrcChildCreate(fn_1_6F80, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_90, fn_1_7210);
while (lbl_1_bss_90) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_6F80(void) {

View file

@ -138,13 +138,13 @@ void fn_1_4A10(void) {
void fn_1_4A60(void) {
lbl_1_bss_8C = 0;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(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);
BoardRollDispSet(1);
}
static void fn_1_4B00(void) {

View file

@ -174,13 +174,13 @@ void fn_1_F6C(void) {
}
void fn_1_1054(void) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lbl_1_bss_18 = HuPrcChildCreate(fn_1_1148, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_18, fn_1_10E4);
while (lbl_1_bss_18) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void fn_1_10E4(void) {

View file

@ -50,7 +50,7 @@ void HostPosSet(s16 arg0) {
hostPos = arg0;
}
void UpdateHost(void) {
static void UpdateHost(void) {
Mtx rot;
Vec sp14;
Vec sp8;
@ -64,7 +64,7 @@ void UpdateHost(void) {
Hu3D2Dto3D(&hostPosTbl[hostPos], 1, &sp14);
BoardModelPosSetV(hostMdl, &sp14);
BoardCameraRotGet(&sp8);
PSMTXRotRad(rot, 'y', 0.2617994f);
MTXRotDeg(rot, 'y', 15);
BoardModelMtxSet(hostMdl, &rot);
BoardModelRotSet(hostMdl, sp8.x, 0.0f, 0.0f);
BoardModelScaleSet(hostMdl, 0.2f, 0.2f, 0.2f);

View file

@ -86,7 +86,7 @@ void HuAudStreamPauseOff(void) {
AISetStreamPlayState(1);
}
void HuAudStreamFadeOut(void) {
void HuAudStreamFadeOut(s32 arg0) {
}
void HuAudAllStop(void) {

View file

@ -120,13 +120,13 @@ void BoardBooHouseKill(void) {
void BoardBooHouseExec(s32 arg0) {
currPlayer = arg0;
if (BoardPlayerSizeGet(currPlayer) != 2) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
houseProc = HuPrcChildCreate(&ExecBooHouse, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(houseProc, &DestroyBooHouse);
while (houseProc != 0U) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
}
@ -181,7 +181,7 @@ static void ExecBooHouse(void) {
}
}
BoardWinKill();
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardAudSeqPause(0, 1, 0x3E8);
BoardDataAsyncWait(var_r28);
temp_r29 = BoardSpaceLinkFlagSearch(0, var_r30, 0x02000000);

View file

@ -210,13 +210,13 @@ void BoardLotteryExec(void) {
if (BoardPlayerSizeGet(GWSystem.player_curr) == 2) {
return;
}
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
lotteryProc = HuPrcChildCreate(ExecLottery, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(lotteryProc, DestroyLottery);
while (lotteryProc) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
void BoardLotteryInit(void) {

View file

@ -794,7 +794,7 @@ void BoardCameraViewSet(s32 type)
} else {
size = 1.0f;
}
BoardCameraTargetModelSet(BoardPlayerModelGetCurr());
BoardCameraTargetModelSet(BoardPlayerModelGet(GWSystem.player_curr));
BoardPlayerPosGet(GWSystem.player_curr, &focus->target_end);
BoardCameraOffsetSet(0.0f, 100.0f*size, 0.0f);
focus->target_end.y += 100.0f*size;

View file

@ -154,7 +154,7 @@ void BoardPauseStart(void) {
static void PauseExit(void) {
if (pauseQuitF == 0) {
BoardRollWinDispSet(1);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
BoardStatusItemSet(1);
BoardRollUPauseSet(1);
BoardLast5GfxShowSet(1);
@ -200,7 +200,7 @@ static void PauseProcess(void) {
BoardFilterFadeInit(30, 0xA0);
temp_r31 = BoardDataDirReadAsync(DATADIR_BPAUSE);
BoardRollWinDispSet(0);
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardStatusItemSet(0);
BoardRollUPauseSet(0);
BoardLast5GfxShowSet(0);

View file

@ -30,8 +30,8 @@ static s32 ExecJunction(s32, s16*);
static void PlayerPosLerpFunc(omObjData*);
static void DiceJumpFunc(omObjData*);
static void UpdateDiceDigitSprite(omObjData*);
static void UpdateDiceDigit2D(omObjData*);
static void UpdateRollSprite(omObjData*);
static void UpdateRoll(omObjData*);
static void MoveAwayObjFunc(omObjData*);
static void MoveAwayObjFunc(omObjData*);
@ -42,7 +42,7 @@ static void MegaSquishFunc(omObjData *object);
static s32 DoSparkSpace(s32 player, s32 pause_cam);
static void RemoveSparkSpace(s32 player);
static void SetRollPlayerSize(s32 player);
static void SetPlayerSizeAuto(s32 player);
static s32 MegaPlayerPassFunc(s32 player, s32 space);
static s32 MegaExecJump(s32 player, s32 space);
@ -67,15 +67,15 @@ static s32 (*preTurnHook[4])();
s16 boardPlayerMdl[4];
static s16 playerMot[4];
static s8 rollType;
static s8 itemPrev;
static s8 moveAwayPlayer[4];
static s16 junctionArrowRot[4];
static omObjData* moveAwayObj;
static omObjData* diceDigit2DObj;
static omObjData* rollObj;
static omObjData* junctionObj;
static s32 junctionMask;
static omObjData* bowserSuitObj;
static s32 rollResized;
static s32 megaDoubleDiceF;
static s16 suitMdl = -1;
static s16 suitPlayerMdl = -1;
@ -84,7 +84,7 @@ static s16 suitCurrMot = -1;
static omObjData* diceJumpObj[4] = {0, 0, 0, 0};
static omObjData* motDoneF[4] = {0, 0, 0, 0};
static s16 bowserSuitMot[5] = {-1, -1, -1, -1, -1};
char* lbl_8013993C[8][2] = {
static char* eyeMatTbl[8][2] = {
{ "eye1", "eye2" },
{ "eye1", "eye2" },
{ "mat14", "mat16" },
@ -141,21 +141,19 @@ static s32 boardSparkSfxTblAlt[] = {
0x223, 0x263, 0x2A3, 0x2E3,
};
static omObjData *megaSquishObj[] = {
0, 0, 0, 0,
};
static omObjData *megaSquishObj[4] = {};
static s32 megaSquishSfxTbl[] = {
0x128, 0x168, 0x1A8, 0x1E8,
0x228, 0x268, 0x2A8, 0x2E8,
};
s32 BoardRollTypeGet(void) {
return rollType;
s32 BoardItemPrevGet(void) {
return itemPrev;
}
void BoardRollTypeSet(s32 type) {
rollType = type;
void BoardItemPrevSet(s32 type) {
itemPrev = type;
}
s32 BoardPlayerGetCharMess(s32 player) {
@ -696,10 +694,10 @@ void BoardPlayerTurnExec(s32 arg0) {
if (_CheckFlag(0x10006U) == 0) {
BoardCameraViewSet(2);
omVibrate((s16) arg0, 0xC, 4, 2);
rollType = -1;
BoardItemPrevSet(-1);
BoardYourTurnExec(arg0);
rollResized = 0;
SetRollPlayerSize(arg0);
megaDoubleDiceF = 0;
SetPlayerSizeAuto(arg0);
if (preTurnHook[arg0] != 0U) {
if (preTurnHook[arg0]() != 0) {
preTurnHook[arg0] = 0;
@ -716,10 +714,6 @@ void BoardPlayerTurnExec(s32 arg0) {
BoardPlayerTurnMoveExec(arg0);
}
static inline s32 PlayerItemUseExec(s32 arg0) {
return BoardItemUseExec(arg0);
}
void BoardPlayerTurnRollExec(s32 arg0) {
s32 temp_r28;
s32 temp_r30;
@ -735,8 +729,8 @@ void BoardPlayerTurnRollExec(s32 arg0) {
BoardRollKill();
BoardCameraTargetPlayerSet(arg0);
BoardCameraMotionWait();
rollType = PlayerItemUseExec(arg0);
if (BoardRollTypeGet() == 0xC) {
BoardItemPrevSet(BoardItemUseExec(arg0));
if (BoardItemPrevGet() == 0xC) {
_SetFlag(0x10016);
BoardSpaceLandExec(arg0, GWPlayer[arg0].space_curr);
BoardCameraMoveSet(1);
@ -830,7 +824,7 @@ block_14:
if (--GWPlayer[arg0].roll == 0) break;
} while (1);
BoardPauseDisableSet(1);
BoardDiceDigit2DUpdateEnable(arg0);
BoardRollUpdateSet(arg0);
BoardPlayerIdleSet(arg0);
if (GWPlayer[arg0].bowser_suit != 0) {
BoardCameraTargetPlayerSet(arg0);
@ -838,15 +832,15 @@ block_14:
if (_CheckFlag(0x1000BU) != 0) {
BoardTutorialHookExec(7, 0);
}
if (BoardRollTypeGet() != -1) {
BoardItemPlayerRestore(arg0, BoardRollTypeGet());
if (BoardItemPrevGet() != -1) {
BoardItemPlayerRestore(arg0, BoardItemPrevGet());
while (BoardItemDoneCheck() == 0) {
HuPrcVSleep();
}
rollType = -1;
BoardItemPrevSet(-1);
}
BoardPlayerSizeRestore(arg0);
rollResized = 0;
megaDoubleDiceF = 0;
if (_CheckFlag(0x1000BU) != 0) {
BoardTutorialHookExec(8, 0);
}
@ -1247,12 +1241,12 @@ static s32 DoDebugMove(s32 arg0, s16* arg1) {
goto end;
} else {
if (HuPadBtnDown[var_r20] == 0x10) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerIdleSet(arg0);
StopJunctionPlayer(0);
BoardViewMapExec(arg0);
InitJunction(arg0, sp28->space_curr, -1.0f);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
goto loop_21;
}
if ((0.0f != spA0.x) || (0.0f != spA0.z)) {
@ -1444,7 +1438,7 @@ static s32 ExecJunction(s32 arg0, s16* arg1) {
break;
} else if (var_r20 == 0x20 || var_r20 == 0x10) {
HuAudFXPlay(1);
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
BoardPlayerIdleSet(arg0);
StopJunctionPlayer(0);
if (var_r20 == 0x10) {
@ -1453,7 +1447,7 @@ static s32 ExecJunction(s32 arg0, s16* arg1) {
BoardViewOverheadExec(arg0);
}
InitJunction(arg0, sp30->space_curr, var_f28);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
} else {
if ((0.0f != spC4.x) || (0.0f != spC4.z)) {
var_f29 = (90.0 + (180.0 * (atan2(spC4.z, spC4.x) / M_PI)));
@ -1762,6 +1756,8 @@ void BoardPlayerIdleSet(s32 arg0)
BoardPlayerMotionShiftSet(arg0, 1, 0.0f, 8.0f, 0x40000001);
}
static void ExecMotBlend(omObjData *arg0);
void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
s16 sp1C;
f32 temp_f25;
@ -1792,7 +1788,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
}
if (arg2 > 0) {
var_r18 = GWPlayer[arg0].character;
temp_r3 = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, &BoardPlayerMotBlendExec);
temp_r3 = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, ExecMotBlend);
temp_r26 = OM_GET_WORK_PTR(temp_r3, bitcopy2);
temp_r26->field00_bit0 = 0;
temp_r26->unk_02 = arg2;
@ -1843,7 +1839,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
}
}
void BoardPlayerMotBlendExec(omObjData* arg0) {
static void ExecMotBlend(omObjData* arg0) {
f32 sp48;
f32 var_f27;
bitcopy2* temp_r30;
@ -1900,13 +1896,13 @@ typedef struct bitcopy3 {
s16 unk_06[5];
} bitcopy3;
void BoardDiceDigit2DInit(s32 arg0, s32 arg1) {
void BoardRollCreate(s32 arg0, s32 arg1) {
omObjData* temp_r3;
s32 var_r30;
bitcopy3* temp_r31;
temp_r3 = omAddObjEx(boardObjMan, 0x105, 0, 0, -1, &UpdateDiceDigit2D);
temp_r31 = OM_GET_WORK_PTR(temp_r3, bitcopy3);;
temp_r3 = omAddObjEx(boardObjMan, 0x105, 0, 0, -1, &UpdateRoll);
temp_r31 = OM_GET_WORK_PTR(temp_r3, bitcopy3);
temp_r31->field00_bit0 = 0;
temp_r31->field00_bit1 = 1;
temp_r31->unk_01 = 0;
@ -1924,24 +1920,24 @@ void BoardDiceDigit2DInit(s32 arg0, s32 arg1) {
HuSprPosSet(temp_r31->unk_04, var_r30, 288.0f, 240.0f);
HuSprAttrSet(temp_r31->unk_04, var_r30, 4);
}
diceDigit2DObj = temp_r3;
rollObj = temp_r3;
}
void BoardDiceDigit2DUpdateEnable(s32 arg0) {
void BoardRollUpdateSet(s32 arg0) {
bitcopy3* temp_r31;
if (diceDigit2DObj != 0) {
temp_r31 = OM_GET_WORK_PTR(diceDigit2DObj, bitcopy3);
if (rollObj != 0) {
temp_r31 = OM_GET_WORK_PTR(rollObj, bitcopy3);
temp_r31->field00_bit0 = 1;
}
}
void BoardDiceDigit2DShowSet(s32 arg0) {
void BoardRollDispSet(s32 arg0) {
s32 var_r30;
bitcopy3* temp_r31;
if (diceDigit2DObj != 0) {
temp_r31 = OM_GET_WORK_PTR(diceDigit2DObj, bitcopy3);
if (rollObj != 0) {
temp_r31 = OM_GET_WORK_PTR(rollObj, bitcopy3);
for (var_r30 = 0; var_r30 < 2; var_r30++) {
if (arg0 != 0) {
@ -1956,11 +1952,11 @@ void BoardDiceDigit2DShowSet(s32 arg0) {
HuSprAttrSet(temp_r31->unk_04, var_r30, 4);
}
}
UpdateDiceDigitSprite(diceDigit2DObj);
UpdateRollSprite(rollObj);
}
}
static void UpdateDiceDigitSprite(omObjData* arg0) {
static void UpdateRollSprite(omObjData* arg0) {
Vec sp1C;
s32 sp14[2];
f32 spC[2] = { 320.0f, 256.0f };
@ -1994,17 +1990,17 @@ static void UpdateDiceDigitSprite(omObjData* arg0) {
}
}
static void UpdateDiceDigit2D(omObjData* arg0) {
static void UpdateRoll(omObjData* arg0) {
f32 var_f30;
bitcopy3* temp_r30;
temp_r30 = OM_GET_WORK_PTR(diceDigit2DObj, bitcopy3);
temp_r30 = OM_GET_WORK_PTR(rollObj, bitcopy3);
if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) {
if (temp_r30->unk_04 != -1) {
HuSprGrpKill(temp_r30->unk_04);
temp_r30->unk_04 = -1;
}
diceDigit2DObj = NULL;
rollObj = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
@ -2020,7 +2016,7 @@ static void UpdateDiceDigit2D(omObjData* arg0) {
var_f30 -= 90.0f;
}
}
UpdateDiceDigitSprite(arg0);
UpdateRollSprite(arg0);
}
void BoardPlayerBtnDownWait(s32 arg0, u32 arg1) {
@ -2231,7 +2227,7 @@ void BoardBowserSuitPlayerModelKill(void) {
}
}
void UpdateBowserSuit(omObjData* arg0) {
static void UpdateBowserSuit(omObjData* arg0) {
s16 temp_r30;
bitcopy3* temp_r31;
@ -2296,7 +2292,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
if(!sp138) {
return 0;
}
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
if(pause_cam) {
BoardCameraMoveSet(0);
} else {
@ -2350,7 +2346,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
BoardModelAlphaSet(sp2E, sp2C);
HuPrcVSleep();
}
temp_r17 = BoardRollTypeGet();
temp_r17 = BoardItemPrevGet();
if(temp_r17 == 0 || temp_r17 == 1 || temp_r17 == 2 || temp_r17 == 3 || temp_r17 == 10) {
BoardCameraTargetPlayerSet(player);
BoardPlayerIdleSet(player);
@ -2359,11 +2355,11 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
while(!BoardItemDoneCheck()) {
HuPrcVSleep();
}
rollType = -1;
BoardItemPrevSet(-1);
}
if(rollResized) {
if(megaDoubleDiceF) {
BoardPlayerSizeRestore(player);
rollResized = 0;
megaDoubleDiceF = 0;
}
if(sp128 != -1) {
HuAudFXPlay(boardSparkSfxTbl[GWPlayer[sp128].character]);
@ -2417,7 +2413,7 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
BoardCameraTargetPlayerSet(sp30);
BoardCameraMotionWait();
BoardCameraMoveSet(1);
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
return 1;
}
@ -2432,7 +2428,7 @@ static void RemoveSparkSpace(s32 player)
}
}
static void SetRollPlayerSize(s32 player)
static void SetPlayerSizeAuto(s32 player)
{
s32 auto_size = BoardPlayerAutoSizeGet(player);
if(auto_size != 0) {
@ -2450,14 +2446,13 @@ static void SetRollPlayerSize(s32 player)
BoardPlayerResizeAnimExec(player, auto_size);
BoardPlayerSizeSet(player, auto_size);
HuPrcSleep(30);
rollResized = 1;
megaDoubleDiceF = 1;
}
}
s32 BoardRollResizeCheck(void)
s32 BoardMegaDoubleDiceCheck(void)
{
return rollResized;
return megaDoubleDiceF;
}
void BoardPlayerResizeAnimExec(s32 player, s32 size)
@ -2850,7 +2845,7 @@ void BoardPlayerCopyEyeMat(s32 arg0, s32 arg1) {
material = hsfData->material;
var_r29 = playerMatCopy[arg0];
if (arg1 != 0) {
temp_r28 = &lbl_8013993C[GWPlayer[arg0].character][0];
temp_r28 = &eyeMatTbl[GWPlayer[arg0].character][0];
for (var_r25 = 0; var_r25 < hsfData->materialCnt; var_r25++, material++, var_r29++) {
var_r24 = 1;

View file

@ -41,7 +41,6 @@ typedef struct {
float unk08;
} DiceDigitWork;
s32 BoardRollResizeCheck(void);
static void RollMain(void);
static void DiceCreate(s32 arg0);
@ -129,7 +128,7 @@ s32 BoardRollExec(s32 arg0) {
numDice = 1;
diceSize = 0;
maxRoll = 0xA;
switch (BoardRollTypeGet()) {
switch (BoardItemPrevGet()) {
case 0:
numDice = 1;
break;
@ -149,7 +148,7 @@ s32 BoardRollExec(s32 arg0) {
} else if (BoardPlayerSizeGet(arg0) == 2) {
diceSize = 2;
maxRoll = 10;
if (BoardRollResizeCheck() != 0) {
if (BoardMegaDoubleDiceCheck() != 0) {
numDice = 2;
}
}
@ -226,7 +225,7 @@ static void RollMain(void) {
temp_r25 = BoardPlayerSameTeamFind(temp_r26);
var_r27 += BoardPlayerItemCount(temp_r25);
}
if (BoardRollTypeGet() != -1 || var_r27 == 0 || _CheckFlag(0x10009) || BoardRollResizeCheck()) {
if (BoardItemPrevGet() != -1 || var_r27 == 0 || _CheckFlag(0x10009) || BoardMegaDoubleDiceCheck()) {
var_r29 = 0x90004;
} else {
var_r29 = 0x90002;
@ -296,7 +295,7 @@ static void RollMain(void) {
}
destMode = var_r30;
GWPlayer[rollPlayer].roll = var_r30;
BoardDiceDigit2DInit(rollPlayer, 1);
BoardRollCreate(rollPlayer, 1);
if (_CheckFlag(0x1000B)) {
BoardTutorialHookExec(6, 0);
}
@ -389,7 +388,7 @@ static void DoInput(s32 arg0) {
var_r30 = BoardPlayerSameTeamFind(rollPlayer);
var_r31 += BoardPlayerItemCount(var_r30);
}
if (var_r31 == 0 || BoardRollTypeGet() != -1 || BoardRollResizeCheck() || _CheckFlag(0x10009)) {
if (var_r31 == 0 || BoardItemPrevGet() != -1 || BoardMegaDoubleDiceCheck() || _CheckFlag(0x10009)) {
if (_CheckFlag(0x10009) && GWBoardGet() == 5 && *sp8 == 0x200 && var_r31 != 0) {
HuAudFXPlay(4);
}
@ -910,7 +909,7 @@ static s32 GetBtnRoll(s32 arg0) {
var_r31 = HuPadBtnDown[var_r29];
return var_r31;
}
if (_CheckFlag(0x10009) || BoardRollTypeGet() != -1) {
if (_CheckFlag(0x10009) || BoardItemPrevGet() != -1) {
return 0x100;
}
var_r31 = GetComBtnRoll(arg0);
@ -918,7 +917,7 @@ static s32 GetBtnRoll(s32 arg0) {
}
static s32 GetComBtnRoll(s32 arg0) {
if (BoardRollTypeGet() != -1 || BoardPlayerItemCount(arg0) == 0 || BoardRollResizeCheck() || _CheckFlag(0x10009)) {
if (BoardItemPrevGet() != -1 || BoardPlayerItemCount(arg0) == 0 || BoardMegaDoubleDiceCheck() || _CheckFlag(0x10009)) {
return 0x100;
}
if (BoardComUseItemCheck(arg0)) {

View file

@ -194,13 +194,13 @@ void BoardShopExec(s32 player, s32 space) {
return;
}
shopPlayer = player;
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
shopProc = HuPrcChildCreate(ExecShop, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(shopProc, DestroyShop);
while (shopProc) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
static void ExecShop(void) {

View file

@ -161,13 +161,13 @@ void BoardStarExec(s32 arg0, s32 arg1) {
return;
}
if (BoardPlayerSizeGet(arg0) != 2) {
BoardDiceDigit2DShowSet(0);
BoardRollDispSet(0);
starProc = HuPrcChildCreate(ExecStar, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(starProc, DestroyStar);
while (starProc != NULL) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
BoardRollDispSet(1);
}
}
@ -671,7 +671,7 @@ void BoardStarShowNext(s32 arg0) {
HuPrcSleep(18);
}
BoardStatusItemSet(0);
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarGiveHook) {
if (GWBoardGet() == 5 && BoardItemPrevGet() != 9 && boardStarGiveHook) {
boardStarGiveHook();
}
BoardSpaceStarMove();
@ -753,7 +753,7 @@ void BoardStarShowNext(s32 arg0) {
BoardWinCreate(3, var_r30, -1);
BoardWinWait();
BoardWinKill();
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarShowNextHook) {
if (GWBoardGet() == 5 && BoardItemPrevGet() != 9 && boardStarShowNextHook) {
boardStarShowNextHook();
}
BoardAudSeqFadeOut(1, 1000);

View file

@ -1096,7 +1096,7 @@ static void ItemUseProc(void) {
BoardDataAsyncWait(var_r24);
}
HideItemWindow();
BoardRollTypeSet(itemUsed);
BoardItemPrevSet(itemUsed);
if (itemUsed != -1) {
switch (itemUsed) {
case 13:

View file

@ -2,6 +2,7 @@
#include "game/hsfanim.h"
#include "game/hsfformat.h"
#include "game/hsfload.h"
#include "game/sprite.h"
#include "ext_math.h"
#include "string.h"
@ -116,11 +117,6 @@ static s16 oneceF = 1;
static GXColor firstTev = { 0xFF, 0xFF, 0x00, 0x00 };
static GXColor secondTev = { 0x00, 0x00, 0xFF, 0xFF };
// TODO: move to GXVert
static inline void GXUnknownu16(const u16 x) {
GXWGFifo.u16 = x;
}
void Hu3DDrawPreInit(void) {
DrawObjIdx = 0;
}
@ -2379,14 +2375,14 @@ static void ObjDraw(HsfDrawObject *arg0) {
}
}
void MakeDisplayList(s16 arg0, HsfData *arg1) {
void MakeDisplayList(s16 arg0, u32 arg1) {
HsfData *temp_r31;
ModelData *var_r30;
temp_r31 = Hu3DData[arg0].hsfData;
var_r30 = &Hu3DData[arg0];
curModelID = arg0;
mallocNo = (u32) arg1;
mallocNo = arg1;
faceNumBuf = HuMemDirectMallocNum(HEAP_DATA, 0x800 * sizeof(u16), mallocNo);
MDObjCall(temp_r31, temp_r31->root);
HuMemDirectFree(faceNumBuf);

View file

@ -38,7 +38,7 @@ s32 shadowModelDrawF;
s16 Hu3DProjectionNum;
s16 Hu3DCameraNo;
s16 Hu3DCameraBit;
HsfData* Hu3DMallocNo;
u32 Hu3DMallocNo;
s16 Hu3DPauseF;
u16 Hu3DCameraExistF;
static u16 NoSyncF;
@ -343,11 +343,11 @@ s16 Hu3DModelCreate(void *arg0) {
return -1;
}
var_r31->hsfData = LoadHSF(arg0);
var_r31->unk_48 = Hu3DMallocNo = var_r31->hsfData;
var_r31->unk_48 = Hu3DMallocNo = (u32)var_r31->hsfData;
var_r31->attr = 0;
var_r31->motion_attr = 0;
var_r31->unk_02 = 0;
MakeDisplayList(var_r30, (HsfData* ) var_r31->unk_48);
MakeDisplayList(var_r30, var_r31->unk_48);
var_r31->unk_68 = 1.0f;
for (i = 0; i < 4; i++) {
var_r31->unk_10[i] = -1;
@ -424,10 +424,10 @@ s16 Hu3DModelLink(s16 arg0) {
return -1;
}
var_r31->unk_C8 = temp_r30->hsfData;
var_r31->hsfData = HuMemDirectMallocNum(HEAP_DATA, 0x80, (u32)var_r31->unk_4C);
var_r31->unk_4C = var_r31->hsfData;
var_r31->hsfData = HuMemDirectMallocNum(HEAP_DATA, 0x80, var_r31->unk_4C);
var_r31->unk_4C = (u32)var_r31->hsfData;
*var_r31->hsfData = *temp_r30->hsfData;
temp_r3_2 = Hu3DObjDuplicate(var_r31->hsfData, (u32)var_r31->unk_4C);
temp_r3_2 = Hu3DObjDuplicate(var_r31->hsfData, var_r31->unk_4C);
var_r31->hsfData->root = (HsfObject*)((u32)temp_r3_2 + ((u32)var_r31->hsfData->root - (u32)var_r31->hsfData->object));
var_r31->hsfData->object = temp_r3_2;
var_r31->unk_48 = temp_r30->unk_48;
@ -487,7 +487,7 @@ s16 Hu3DHookFuncCreate(ModelHookFunc hook) {
return -1;
}
var_r31->hook = hook;
var_r31->unk_48 = (HsfData *)(var_r29 + 10000);
var_r31->unk_48 = var_r29+10000;
var_r31->attr = 0x10;
var_r31->motion_attr = 0;
var_r31->pos.x = var_r31->pos.y = var_r31->pos.z = 0.0f;
@ -536,7 +536,7 @@ void Hu3DModelKill(s16 arg0) {
layerNum[temp_r31->layer] -= 1;
if ((temp_r31->attr & 0x10) != 0) {
HuMemDirectFreeNum(HEAP_DATA, (u32) temp_r31->unk_48);
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
if ((temp_r31->attr & 0x20) != 0) {
copy = temp_r31->unk_120;
HuSprAnimKill(copy->unk_44);
@ -551,14 +551,14 @@ void Hu3DModelKill(s16 arg0) {
if (temp_r31->unk_08 != -1) {
Hu3DMotionKill(temp_r31->unk_08);
}
HuMemDirectFreeNum(HEAP_DATA, (u32) temp_r31->unk_48);
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
temp_r31->hsfData = NULL;
return;
}
Hu3DAnimModelKill(arg0);
if (temp_r31->unk_24 != -1) {
HuMemDirectFree(temp_r31->hsfData);
HuMemDirectFreeNum(HEAP_DATA, (u32) temp_r31->unk_4C);
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_4C);
var_r28 = temp_r31->unk_C8;
temp_r31->hsfData = var_r28;
}
@ -586,7 +586,7 @@ void Hu3DModelKill(s16 arg0) {
}
if (temp_r31->unk_20 != -1 && Hu3DMotionKill(temp_r31->unk_20) == 0) {
Hu3DMotion[temp_r31->unk_20].unk_02 = -1;
HuMemDirectFreeNum(HEAP_DATA, (u32) temp_r31->unk_48);
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
temp_r31->hsfData = NULL;
if (modelKillAllF == 0) {
HuMemDCFlush(HEAP_DATA);
@ -594,7 +594,7 @@ void Hu3DModelKill(s16 arg0) {
return;
}
HuMemDirectFree(temp_r31->hsfData);
HuMemDirectFreeNum(HEAP_DATA, (u32) temp_r31->unk_48);
HuMemDirectFreeNum(HEAP_DATA, temp_r31->unk_48);
for (i = 0; i < temp_r31->unk_26; i++) {
Hu3DGLightKill(temp_r31->unk_28[i]);
}
@ -2103,7 +2103,7 @@ void Hu3DMipMapSet(char* arg0, s16 arg1, s32 arg2, f32 arg8) {
for ( i = 0, var_r24 = i; i < temp_r3->bmpNum; i++, var_r30++) {
var_r24 += var_r30->dataSize;
}
var_r23 = HuMemDirectMallocNum(HEAP_DATA, var_r24, (u32)temp_r25->unk_48);
var_r23 = HuMemDirectMallocNum(HEAP_DATA, var_r24, temp_r25->unk_48);
temp_r22 = var_r23;
var_r30 = temp_r3->bmp;
temp_r31->data = temp_r22;

View file

@ -903,8 +903,8 @@ void BoardPlayerIdleSet(void);
void BoardPlayerMotBlendSet(void);
void BoardPlayerMotBlendCheck(void);
void BoardPlayerRankCalc(void);
void BoardRollTypeGet(void);
void BoardRollTypeSet(void);
void BoardItemPrevGet(void);
void BoardItemPrevSet(void);
void BoardPlayerItemRemove(void);
void BoardPlayerItemFind(void);
void BoardPlayerItemAdd(void);
@ -918,9 +918,9 @@ void BoardPlayerPosLerpStart(void);
void BoardPlayerMoveToAsync(void);
void BoardPlayerDiceJumpStart(void);
void BoardPlayerDiceJumpCheck(void);
void BoardDiceDigit2DInit(void);
void BoardDiceDigit2DUpdateEnable(void);
void BoardDiceDigit2DShowSet(void);
void BoardRollCreate(void);
void BoardRollUpdateSet(void);
void BoardRollDispSet(void);
void BoardPlayerBtnDownWait(void);
void BoardPlayerAutoSizeSet(void);
void BoardPlayerAutoSizeGet(void);
@ -1920,8 +1920,8 @@ extern void _kerjmp_BoardPlayerIdleSet(void);
extern void _kerjmp_BoardPlayerMotBlendSet(void);
extern void _kerjmp_BoardPlayerMotBlendCheck(void);
extern void _kerjmp_BoardPlayerRankCalc(void);
extern void _kerjmp_BoardRollTypeGet(void);
extern void _kerjmp_BoardRollTypeSet(void);
extern void _kerjmp_BoardItemPrevGet(void);
extern void _kerjmp_BoardItemPrevSet(void);
extern void _kerjmp_BoardPlayerItemRemove(void);
extern void _kerjmp_BoardPlayerItemFind(void);
extern void _kerjmp_BoardPlayerItemAdd(void);
@ -1935,9 +1935,9 @@ extern void _kerjmp_BoardPlayerPosLerpStart(void);
extern void _kerjmp_BoardPlayerMoveToAsync(void);
extern void _kerjmp_BoardPlayerDiceJumpStart(void);
extern void _kerjmp_BoardPlayerDiceJumpCheck(void);
extern void _kerjmp_BoardDiceDigit2DInit(void);
extern void _kerjmp_BoardDiceDigit2DUpdateEnable(void);
extern void _kerjmp_BoardDiceDigit2DShowSet(void);
extern void _kerjmp_BoardRollCreate(void);
extern void _kerjmp_BoardRollUpdateSet(void);
extern void _kerjmp_BoardRollDispSet(void);
extern void _kerjmp_BoardPlayerBtnDownWait(void);
extern void _kerjmp_BoardPlayerAutoSizeSet(void);
extern void _kerjmp_BoardPlayerAutoSizeGet(void);
@ -3845,10 +3845,10 @@ asm void _kerent(void) {
b BoardPlayerMotBlendCheck
entry _kerjmp_BoardPlayerRankCalc
b BoardPlayerRankCalc
entry _kerjmp_BoardRollTypeGet
b BoardRollTypeGet
entry _kerjmp_BoardRollTypeSet
b BoardRollTypeSet
entry _kerjmp_BoardItemPrevGet
b BoardItemPrevGet
entry _kerjmp_BoardItemPrevSet
b BoardItemPrevSet
entry _kerjmp_BoardPlayerItemRemove
b BoardPlayerItemRemove
entry _kerjmp_BoardPlayerItemFind
@ -3875,12 +3875,12 @@ asm void _kerent(void) {
b BoardPlayerDiceJumpStart
entry _kerjmp_BoardPlayerDiceJumpCheck
b BoardPlayerDiceJumpCheck
entry _kerjmp_BoardDiceDigit2DInit
b BoardDiceDigit2DInit
entry _kerjmp_BoardDiceDigit2DUpdateEnable
b BoardDiceDigit2DUpdateEnable
entry _kerjmp_BoardDiceDigit2DShowSet
b BoardDiceDigit2DShowSet
entry _kerjmp_BoardRollCreate
b BoardRollCreate
entry _kerjmp_BoardRollUpdateSet
b BoardRollUpdateSet
entry _kerjmp_BoardRollDispSet
b BoardRollDispSet
entry _kerjmp_BoardPlayerBtnDownWait
b BoardPlayerBtnDownWait
entry _kerjmp_BoardPlayerAutoSizeSet
@ -4072,4 +4072,4 @@ asm void _kerent(void) {
entry _kerjmp_BoardBooHouseTutorialExec
b BoardBooHouseTutorialExec
#endif
}
}