336 lines
10 KiB
C
336 lines
10 KiB
C
#include "REL/w05Dll.h"
|
|
|
|
#include "game/hsfdraw.h"
|
|
#include "game/frand.h"
|
|
|
|
#include "game/board/model.h"
|
|
#include "game/board/player.h"
|
|
|
|
// data
|
|
s32 lbl_1_data_1A8[3] = { 0x0079001F, 0x00790020, 0xFFFFFFFF };
|
|
char *lbl_1_data_1C4[2] = { "monkyA", "monkyB"};
|
|
s32 lbl_1_data_1CC[3] = { 0x78, 0x6F, 0x70 };
|
|
|
|
// bss
|
|
s16 lbl_1_bss_4E[2];
|
|
s16 lbl_1_bss_4C;
|
|
s16 lbl_1_bss_4A;
|
|
s16 lbl_1_bss_48;
|
|
s16 lbl_1_bss_44[2];
|
|
Vec lbl_1_bss_38;
|
|
s16 lbl_1_bss_30[4];
|
|
|
|
void fn_1_2B40(void) {
|
|
s32 var_r31;
|
|
|
|
BoardModelAttrSet(lbl_1_bss_14[2], 0x40000002);
|
|
BoardModelAttrSet(lbl_1_bss_14[3], 0x40000002);
|
|
BoardModelMotionTimeSet(lbl_1_bss_14[2], 0.0f);
|
|
BoardModelMotionTimeSet(lbl_1_bss_14[3], 0.0f);
|
|
|
|
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
|
lbl_1_bss_4E[var_r31] = BoardModelCreate(0x79001E, lbl_1_data_1A8, 0);
|
|
BoardModelAttrSet(lbl_1_bss_4E[var_r31], 0x40000001);
|
|
}
|
|
BoardModelHookSet(lbl_1_bss_14[2], lbl_1_data_1C4[0], lbl_1_bss_4E[0]);
|
|
BoardModelHookSet(lbl_1_bss_14[3], lbl_1_data_1C4[1], lbl_1_bss_4E[1]);
|
|
}
|
|
|
|
void fn_1_2C7C(s32 arg0) {
|
|
Vec spC;
|
|
s32 var_r31;
|
|
|
|
lbl_1_bss_4C = GWSystem.player_curr;
|
|
lbl_1_bss_48 = arg0;
|
|
if (lbl_1_bss_48 == 0) {
|
|
lbl_1_bss_4A = lbl_1_bss_14[2];
|
|
spC.x = 150.0f;
|
|
BoardModelPosGet(lbl_1_bss_4A, &lbl_1_bss_38);
|
|
lbl_1_bss_38.x += 140.0f;
|
|
} else {
|
|
lbl_1_bss_4A = lbl_1_bss_14[3];
|
|
spC.x = -150.0f;
|
|
BoardModelPosGet(lbl_1_bss_4A, &lbl_1_bss_38);
|
|
lbl_1_bss_38.x -= 140.0f;
|
|
}
|
|
lbl_1_bss_44[0] = BoardModelCreate(0x79001C, NULL, 0);
|
|
lbl_1_bss_44[1] = BoardModelCreate(0x79001D, NULL, 0);
|
|
BoardModelVisibilitySet(lbl_1_bss_44[0], 0);
|
|
BoardModelVisibilitySet(lbl_1_bss_44[1], 0);
|
|
BoardModelAttrSet(lbl_1_bss_44[0], 0x40000001);
|
|
|
|
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]);
|
|
}
|
|
BoardRollDispSet(0);
|
|
BoardPlayerIdleSet(lbl_1_bss_4C);
|
|
spC.y = 100.0f;
|
|
spC.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_bss_4A, NULL, &spC, 2300.0f, -1.0f, 0x1E);
|
|
BoardCameraRotSet(-33.0f, 0.0f);
|
|
BoardCameraMotionWait();
|
|
HuAudFXPlay(0x48A);
|
|
BoardWinCreate(0, 0x270018, -1);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
fn_1_3044();
|
|
fn_1_3430();
|
|
if (GWPlayer[lbl_1_bss_4C].bowser_suit != 0) {
|
|
fn_1_3D88();
|
|
} else {
|
|
fn_1_3514();
|
|
}
|
|
BoardPlayerIdleSet(lbl_1_bss_4C);
|
|
BoardCameraViewSet(1);
|
|
BoardCameraMotionWait();
|
|
BoardRollDispSet(1);
|
|
|
|
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
|
BoardModelKill(lbl_1_bss_44[var_r31]);
|
|
}
|
|
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
BoardPlayerMotionKill(lbl_1_bss_4C, lbl_1_bss_30[var_r31]);
|
|
}
|
|
}
|
|
|
|
void fn_1_3044(void) {
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
f32 temp_f30;
|
|
f32 var_f29;
|
|
f32 temp_f28;
|
|
f32 var_f31;
|
|
|
|
HuPrcSleep(0x1E);
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 1, 0);
|
|
BoardModelAttrReset(lbl_1_bss_4A, 0x40000002);
|
|
BoardModelMotionTimeSet(lbl_1_bss_4A, 0.0f);
|
|
HuPrcSleep(0x88);
|
|
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_4A), lbl_1_data_1C4[lbl_1_bss_48], &sp20);
|
|
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_4E[lbl_1_bss_48]), "bakawa1", &sp14);
|
|
PSVECAdd(&sp20, &sp14, &sp14);
|
|
BoardModelPosSetV(lbl_1_bss_44[0], &sp14);
|
|
BoardModelVisibilitySet(lbl_1_bss_44[0], 1);
|
|
BoardModelMotionTimeSet(lbl_1_bss_44[0], 0.0f);
|
|
HuAudFXPlay(0x48C);
|
|
PSVECSubtract(&lbl_1_bss_38, &sp14, &sp8);
|
|
sp8.y = 0.0f;
|
|
PSVECNormalize(&sp8, &sp8);
|
|
PSVECScale(&sp8, &sp8, 8.0f);
|
|
temp_f30 = 11.0f;
|
|
var_f31 = 0.0f;
|
|
|
|
while (1) {
|
|
sp8.y = (temp_f30 - (0.075 * (0.25f * (var_f31 * var_f31))));
|
|
var_f31 += 1.0f;
|
|
PSVECAdd(&sp14, &sp8, &sp14);
|
|
PSVECSubtract(&lbl_1_bss_38, &sp14, &sp20);
|
|
sp20.y = 0.0f;
|
|
var_f29 = PSVECMag(&sp20);
|
|
if (var_f29 <= 8.0f) {
|
|
sp14.x = lbl_1_bss_38.x;
|
|
sp14.z = lbl_1_bss_38.z;
|
|
sp8.x = sp8.z = 0.0f;
|
|
}
|
|
if (sp14.y <= lbl_1_bss_38.y) {
|
|
sp14.y = lbl_1_bss_38.y;
|
|
BoardModelVisibilitySet(lbl_1_bss_44[0], 0);
|
|
BoardModelVisibilitySet(lbl_1_bss_44[1], 1);
|
|
BoardModelPosSetV(lbl_1_bss_44[1], &sp14);
|
|
BoardModelMotionTimeSet(lbl_1_bss_44[1], 0.0f);
|
|
break;
|
|
} else {
|
|
BoardModelPosSetV(lbl_1_bss_44[0], &sp14);
|
|
if (BoardModelMotionTimeGet(lbl_1_bss_4E[lbl_1_bss_48]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_4E[lbl_1_bss_48])) {
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 0, 0x40000001);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_3430(void) {
|
|
if (GWPlayer[lbl_1_bss_4C].bowser_suit == 0) {
|
|
BoardPlayerMotionShiftSet(lbl_1_bss_4C, lbl_1_bss_30[2], 0.0f, 8.0f, 0);
|
|
HuPrcSleep(8);
|
|
|
|
while (BoardPlayerMotionEndCheck(lbl_1_bss_4C) == 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerMotionStart(lbl_1_bss_4C, lbl_1_bss_30[1], 0x40000001);
|
|
HuPrcSleep(0x5A);
|
|
return;
|
|
}
|
|
HuPrcSleep(0x2D);
|
|
}
|
|
|
|
void fn_1_3514(void) {
|
|
Vec sp2C; /* compiler-managed */
|
|
Vec sp20; /* compiler-managed */
|
|
Vec sp14;
|
|
Vec sp8;
|
|
f32 var_f29;
|
|
f32 var_f30;
|
|
f32 var_f31;
|
|
s32 var_r30;
|
|
s32 var_r31;
|
|
|
|
BoardPlayerPosGet(lbl_1_bss_4C, &sp2C);
|
|
BoardPlayerMotionShiftSet(lbl_1_bss_4C, 4, 0.0f, 5.0f, 0);
|
|
PSVECSubtract(&lbl_1_bss_38, &sp2C, &sp20);
|
|
sp20.y = 0.0f;
|
|
PSVECNormalize(&sp20, &sp20);
|
|
PSVECScale(&sp20, &sp20, 7.2f);
|
|
var_f30 = 10.0f;
|
|
var_f31 = 0.0f;
|
|
while (1) {
|
|
sp20.y = (var_f30 - (0.075f * (0.25f * (var_f31 * var_f31))));
|
|
var_f31 += 1.0f;
|
|
PSVECAdd(&sp2C, &sp20, &sp2C);
|
|
PSVECSubtract(&lbl_1_bss_38, &sp2C, &sp14);
|
|
sp14.y = 0.0f;
|
|
var_f29 = PSVECMag(&sp14);
|
|
if (var_f29 <= 7.2f) {
|
|
sp2C.x = lbl_1_bss_38.x;
|
|
sp2C.z = lbl_1_bss_38.z;
|
|
sp20.x = sp20.z = 0.0f;
|
|
}
|
|
if (sp2C.y <= lbl_1_bss_38.y) {
|
|
sp2C.y = lbl_1_bss_38.y;
|
|
BoardPlayerMotionStart(lbl_1_bss_4C, lbl_1_bss_30[0], 0);
|
|
break;
|
|
} else {
|
|
BoardPlayerPosSetV(lbl_1_bss_4C, &sp2C);
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
HuAudFXPlay(0x48B);
|
|
HuAudPlayerVoicePlay(lbl_1_bss_4C, 0x123);
|
|
HuPrcChildCreate(fn_1_3E8C, 0x2001, 0x1000, 0, boardMainProc);
|
|
HuAudFXPlay(0x48A);
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 2, 0);
|
|
var_r31 = BoardSpaceLinkFlagSearch(0, GWPlayer[lbl_1_bss_4C].space_curr, 0x100);
|
|
if (frandBool() != 0) {
|
|
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x200);
|
|
} else {
|
|
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x400);
|
|
}
|
|
BoardSpacePosGet(0, var_r31, &sp8);
|
|
PSVECSubtract(&sp8, &sp2C, &sp20);
|
|
sp20.y = 0.0f;
|
|
PSVECNormalize(&sp20, &sp20);
|
|
PSVECScale(&sp20, &sp20, 10.0f);
|
|
var_f30 = 9.0f;
|
|
var_f31 = 0.0f;
|
|
while (1) {
|
|
sp20.y = var_f30 - (0.075f * (0.25f * (var_f31 * var_f31)));
|
|
var_f31 += 1.0f;
|
|
PSVECAdd(&sp2C, &sp20, &sp2C);
|
|
PSVECSubtract(&sp8, &sp2C, &sp14);
|
|
sp14.y = 0.0f;
|
|
var_f29 = PSVECMag(&sp14);
|
|
if (var_f29 <= 10.0f) {
|
|
sp2C.x = sp8.x;
|
|
sp2C.z = sp8.z;
|
|
sp20.x = sp20.z = 0.0f;
|
|
}
|
|
if (sp2C.y <= sp8.y) {
|
|
sp2C.y = sp8.y;
|
|
omVibrate(lbl_1_bss_4C, 0xC, 4, 2);
|
|
break;
|
|
}
|
|
BoardPlayerPosSetV(lbl_1_bss_4C, &sp2C);
|
|
if (BoardModelMotionTimeGet(lbl_1_bss_4E[lbl_1_bss_48]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_4E[lbl_1_bss_48])) {
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 0, 0x40000001);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
var_f30 = 10.0f;
|
|
var_f31 = 0.0f;
|
|
if (BoardPlayerSizeGet(lbl_1_bss_4C) == 2) {
|
|
HuAudFXPlay(0x490);
|
|
} else if (BoardPlayerSizeGet(lbl_1_bss_4C) == 1) {
|
|
HuAudFXPlay(0x48F);
|
|
} else {
|
|
HuAudPlayerVoicePlay(lbl_1_bss_4C, 0x119);
|
|
}
|
|
while (1) {
|
|
sp20.y = var_f30 - (0.18333334f * (0.25f * (var_f31 * var_f31)));
|
|
var_f31 += 1.0f;
|
|
sp2C.y += sp20.y;
|
|
if (sp2C.y <= sp8.y) {
|
|
var_f30 = 0.25f * -sp20.y;
|
|
var_f31 = 0.0f;
|
|
sp2C.y = sp8.y;
|
|
if (BoardPlayerSizeGet(lbl_1_bss_4C) == 2) {
|
|
OSReport("big se\n");
|
|
HuAudFXPlay(0x490);
|
|
} else {
|
|
if (BoardPlayerSizeGet(lbl_1_bss_4C) == 1) {
|
|
OSReport("small se\n");
|
|
HuAudFXPlay(0x48F);
|
|
} else {
|
|
OSReport("normal se\n");
|
|
HuAudPlayerVoicePlay(lbl_1_bss_4C, 0x119);
|
|
}
|
|
}
|
|
}
|
|
BoardPlayerPosSetV(lbl_1_bss_4C, &sp2C);
|
|
if (!(fabs(var_f30) < 5.0)) {
|
|
if (BoardModelMotionTimeGet(lbl_1_bss_4E[lbl_1_bss_48]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_4E[lbl_1_bss_48])) {
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 0, 0x40000001U);
|
|
}
|
|
HuPrcVSleep();
|
|
} else {
|
|
BoardPlayerMotionShiftSet(lbl_1_bss_4C, 6, 0.0f, 8.0f, 0x40000001U);
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_r30 = 0x44;
|
|
while (var_r30--, var_r30 != 0) {
|
|
if (BoardModelMotionTimeGet(lbl_1_bss_4E[lbl_1_bss_48]) >= BoardModelMotionMaxTimeGet(lbl_1_bss_4E[lbl_1_bss_48])) {
|
|
BoardModelMotionStart(lbl_1_bss_4E[lbl_1_bss_48], 0, 0x40000001U);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
GWPlayer[lbl_1_bss_4C].space_curr = var_r31;
|
|
}
|
|
|
|
void fn_1_3D88(void) {
|
|
s32 temp_r3;
|
|
|
|
temp_r3 = BoardSpaceLinkFlagSearch(0, GWPlayer[lbl_1_bss_4C].space_curr, 0x100U);
|
|
BoardPlayerMoveBetween(lbl_1_bss_4C, GWPlayer[lbl_1_bss_4C].space_curr, temp_r3);
|
|
GWPlayer[lbl_1_bss_4C].space_curr = temp_r3;
|
|
HuAudFXPlay(0x48B);
|
|
HuPrcChildCreate(fn_1_3E8C, 0x2001U, 0x1000U, 0, boardMainProc);
|
|
BoardPlayerIdleSet(lbl_1_bss_4C);
|
|
BoardWinCreate(0, 0x270019, -1);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
}
|
|
|
|
void fn_1_3E8C(void) {
|
|
Vec sp14;
|
|
Vec sp8;
|
|
s32 i;
|
|
|
|
BoardModelPosGet(lbl_1_bss_44[1], &sp14);
|
|
sp8.z = 0.0f;
|
|
sp8.y = 10.0f;
|
|
if (lbl_1_bss_48 == 0) {
|
|
sp8.x = -25.0f;
|
|
} else {
|
|
sp8.x = 25.0f;
|
|
}
|
|
for (i = 0; i < 60; i++) {
|
|
PSVECAdd(&sp14, &sp8, &sp14);
|
|
sp8.y -= 0.625f;
|
|
BoardModelPosSetV(lbl_1_bss_44[1], &sp14);
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcEnd();
|
|
}
|