Matched REL/w04 + applying ext_math macros
This commit is contained in:
parent
5d8d3669e1
commit
8b15b82b25
14 changed files with 1538 additions and 218 deletions
|
|
@ -10,6 +10,7 @@
|
|||
#include "game/msm.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/wipe.h"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "game/gamework_data.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "game/data.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/object.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/boo_house.h"
|
||||
#include "game/board/com.h"
|
||||
|
|
|
|||
663
src/REL/w04Dll/mg_coin.c
Executable file
663
src/REL/w04Dll/mg_coin.c
Executable file
|
|
@ -0,0 +1,663 @@
|
|||
#include "REL/w04Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/data.h"
|
||||
#include "game/frand.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/msm.h"
|
||||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
static void fn_1_CF8C(omObjData *arg0);
|
||||
static void fn_1_D0AC(void);
|
||||
static void fn_1_D0DC(void);
|
||||
static void fn_1_D174(omObjData *arg0);
|
||||
static void fn_1_D230(omObjData *arg0);
|
||||
static void fn_1_D2A4(omObjData *arg0);
|
||||
static void fn_1_D554(omObjData *arg0);
|
||||
static void fn_1_D6A8(omObjData *arg0);
|
||||
static void fn_1_D70C(omObjData *arg0);
|
||||
static void fn_1_D770(void);
|
||||
static void fn_1_E004(void);
|
||||
static void fn_1_E144(omObjData *arg0);
|
||||
static void fn_1_E18C(omObjData *arg0);
|
||||
static void fn_1_E374(omObjData *arg0);
|
||||
static void fn_1_E4C0(omObjData *arg0);
|
||||
static void fn_1_E6AC(omObjData *arg0);
|
||||
static s16 fn_1_E880(omObjData *arg0);
|
||||
|
||||
static u16 lbl_1_bss_326;
|
||||
static s16 lbl_1_bss_324;
|
||||
static omObjData *lbl_1_bss_320;
|
||||
static omObjData *lbl_1_bss_31C;
|
||||
static omObjData *lbl_1_bss_318;
|
||||
static s16 lbl_1_bss_314;
|
||||
static Vec lbl_1_bss_308;
|
||||
static Vec lbl_1_bss_2FC;
|
||||
static s16 lbl_1_bss_2FA;
|
||||
static s16 lbl_1_bss_2F8;
|
||||
static s16 lbl_1_bss_2D0[20];
|
||||
static u16 lbl_1_bss_2C2[7];
|
||||
static u16 lbl_1_bss_2B4[7];
|
||||
static s32 lbl_1_bss_2B0;
|
||||
|
||||
static s32 lbl_1_data_588 = -1;
|
||||
|
||||
static char *lbl_1_data_5BC[] = {
|
||||
"pia1", "pia2", "pia3", "pia4",
|
||||
"pia5", "pia6", "pia7", "pia8",
|
||||
"pia9"
|
||||
};
|
||||
|
||||
static u16 lbl_1_data_5E0[] = {
|
||||
0x0100, 0x0200, 0x0040, 0x0020,
|
||||
0x0800, 0x0400, 0x0010
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_5F0[] = {
|
||||
0x0000046D,
|
||||
0x0000046E,
|
||||
0x0000046F,
|
||||
0x00000470,
|
||||
0x00000471,
|
||||
0x00000472,
|
||||
0x00000473,
|
||||
0x00000474
|
||||
};
|
||||
|
||||
void fn_1_C7A0(void) {
|
||||
BoardModelAttrSet(lbl_1_bss_14[7], 0x40000002);
|
||||
}
|
||||
|
||||
void fn_1_C7D4(void) {
|
||||
Vec sp38;
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
float temp_f30;
|
||||
float var_f31;
|
||||
float var_f29;
|
||||
s16 temp_r30;
|
||||
s32 i;
|
||||
|
||||
BoardModelLayerSet(lbl_1_bss_14[9], 1);
|
||||
lbl_1_bss_324 = GWSystem.player_curr;
|
||||
lbl_1_data_588 = -1;
|
||||
lbl_1_bss_2FA = 0;
|
||||
for (i = 0; i < 7; i++) {
|
||||
lbl_1_bss_2B4[i] = 0;
|
||||
}
|
||||
for (i = 0; i < 7; i++) {
|
||||
do {
|
||||
temp_r30 = frandmod(7);
|
||||
} while (lbl_1_bss_2B4[temp_r30] != 0);
|
||||
lbl_1_bss_2B4[temp_r30] = i + 1;
|
||||
lbl_1_bss_2C2[temp_r30] = lbl_1_data_5E0[i];
|
||||
}
|
||||
for (i = 0; i < 7; i++) {
|
||||
OSReport("%d: %d %04X\n", i, lbl_1_bss_2B4[i], lbl_1_bss_2C2[i]);
|
||||
}
|
||||
lbl_1_bss_2F8 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 16), NULL, 0);
|
||||
BoardModelVisibilitySet(lbl_1_bss_2F8, 0);
|
||||
BoardModelAttrSet(lbl_1_bss_2F8, 0x40000002);
|
||||
for (i = 0; i < 20; i++) {
|
||||
lbl_1_bss_2D0[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1);
|
||||
BoardModelVisibilitySet(lbl_1_bss_2D0[i], 0);
|
||||
}
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_324, 0xB4, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardWinCreate(2, MAKE_MESSID(32, 19), 3);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &lbl_1_bss_308);
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &lbl_1_bss_2FC);
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp38);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[0], &sp2C);
|
||||
sp20 = sp2C;
|
||||
sp20.z = sp38.z;
|
||||
sp20.y = sp38.y;
|
||||
BoardPlayerPosLerpStart(lbl_1_bss_324, &sp38, &sp20, 0x3C);
|
||||
while (fn_1_1130(lbl_1_bss_14[9], 270.0f, 30.0f) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &sp8);
|
||||
sp14 = sp8;
|
||||
sp14.x = sp2C.x;
|
||||
PSVECSubtract(&sp14, &sp8, &sp38);
|
||||
PSVECScale(&sp38, &sp38, 0.022727273f);
|
||||
for (i = 0; i < 44; i++) {
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &sp8);
|
||||
PSVECAdd(&sp8, &sp38, &sp8);
|
||||
BoardModelPosSetV(lbl_1_bss_14[9], &sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelPosSetV(lbl_1_bss_14[9], &sp14);
|
||||
while (fn_1_1130(lbl_1_bss_14[9], 0.0f, 30.0f) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
while (GWPlayer[lbl_1_bss_324].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_324, 0xB4, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0);
|
||||
var_f31 = 0.0f;
|
||||
temp_f30 = 8.0f;
|
||||
PSVECSubtract(&sp2C, &sp20, &sp38);
|
||||
PSVECScale(&sp38, &sp38, 0.05f);
|
||||
while (TRUE) {
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp20);
|
||||
sp38.y = temp_f30 - var_f31 * var_f31 * 0.25f * 0.075f;
|
||||
var_f31 += 1.0f;
|
||||
PSVECAdd(&sp38, &sp20, &sp20);
|
||||
sp14 = sp2C;
|
||||
sp14.y = sp20.y;
|
||||
PSVECSubtract(&sp14, &sp20, &sp14);
|
||||
var_f29 = PSVECMag(&sp14);
|
||||
if (var_f29 <= 1.0f) {
|
||||
sp38.x = sp38.z = 0.0f;
|
||||
sp20.x = sp2C.x;
|
||||
sp20.z = sp2C.z;
|
||||
}
|
||||
if (sp20.y <= sp2C.y && sp38.y < 0.0f) {
|
||||
sp20.y = sp2C.y;
|
||||
break;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp20);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp20);
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_324, 0x5A, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuPrcSleep(60);
|
||||
lbl_1_bss_320 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_CF8C);
|
||||
lbl_1_bss_318 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_D174);
|
||||
lbl_1_bss_31C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, NULL);
|
||||
lbl_1_bss_318->scale.x = 255.0f;
|
||||
lbl_1_bss_314 = 0;
|
||||
lbl_1_bss_326 = 0;
|
||||
}
|
||||
|
||||
static void fn_1_CF8C(omObjData *arg0) {
|
||||
s32 spC;
|
||||
|
||||
if (lbl_1_data_588 != -1) {
|
||||
spC = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1);
|
||||
if (msmMusGetStatus(lbl_1_data_588) == 0) {
|
||||
HuAudSeqFadeOut(lbl_1_data_588, 100);
|
||||
lbl_1_bss_2FA = 1;
|
||||
}
|
||||
if (lbl_1_bss_2FA == 1 && msmMusGetStatus(lbl_1_data_588) == 0) {
|
||||
lbl_1_data_588 = -1;
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
OSReport("BGM1 Restore\n");
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_326 != 0 && BoardMGDoneFlagGet() == 1) {
|
||||
fn_1_D0DC();
|
||||
omDelObjEx(boardObjMan, arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D0AC(void) {
|
||||
lbl_1_bss_326 = 1;
|
||||
BoardMGExit();
|
||||
}
|
||||
|
||||
static void fn_1_D0DC(void) {
|
||||
s32 i;
|
||||
|
||||
omDelObjEx(boardObjMan, lbl_1_bss_31C);
|
||||
BoardModelKill(lbl_1_bss_2F8);
|
||||
for (i = 0; i < 20; i++) {
|
||||
BoardModelKill(lbl_1_bss_2D0[i]);
|
||||
}
|
||||
BoardModelLayerSet(lbl_1_bss_14[9], 0);
|
||||
BoardMGDoneFlagSet(0);
|
||||
}
|
||||
|
||||
static void fn_1_D174(omObjData *arg0) {
|
||||
UnkMsmStruct_03 sp8;
|
||||
|
||||
if (arg0->work[0] == 0) {
|
||||
arg0->work[0] = MGSeqCreate(3, 0);
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
return;
|
||||
}
|
||||
if (MGSeqStatGet(arg0->work[0]) == 0) {
|
||||
sp8.unk00 = 1;
|
||||
sp8.unk06 = 0;
|
||||
sp8.unk05 = 0x7F;
|
||||
sp8.unk04 = 1;
|
||||
lbl_1_data_588 = msmMusPlay(0x1D, &sp8);
|
||||
arg0->func = fn_1_D230;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D230(omObjData *arg0) {
|
||||
s32 temp_r3;
|
||||
|
||||
temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1);
|
||||
if (temp_r3 >= 10 && temp_r3 <= 19) {
|
||||
arg0->work[1]++;
|
||||
arg0->func = fn_1_D2A4;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D2A4(omObjData *arg0) {
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float sp8;
|
||||
ModelData *temp_r30;
|
||||
s32 temp_r3;
|
||||
|
||||
temp_r30 = &Hu3DData[BoardModelIDGet(lbl_1_bss_2F8)];
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_14[9]);
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &spC);
|
||||
if (arg0->scale.x != 0.0f) {
|
||||
arg0->scale.x -= 8.5f;
|
||||
if (arg0->scale.x < 0.0f) {
|
||||
arg0->scale.x = 0.0f;
|
||||
}
|
||||
BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x);
|
||||
return;
|
||||
}
|
||||
temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1);
|
||||
if (temp_r3 >= 20 && temp_r3 <= 29) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp18);
|
||||
spC.x = sp18.x;
|
||||
BoardModelPosSetV(lbl_1_bss_14[9], &spC);
|
||||
arg0->func = fn_1_D554;
|
||||
if (arg0->work[1] < 8) {
|
||||
BoardModelHookReset(lbl_1_bss_14[7]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_2F8, 1);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_2F8, lbl_1_bss_2B4[arg0->work[1] - 1]);
|
||||
BoardModelHookSet(lbl_1_bss_14[7], lbl_1_data_5BC[arg0->work[1]], lbl_1_bss_2F8);
|
||||
Hu3DMotionExec(BoardModelIDGet(lbl_1_bss_2F8), temp_r30->unk_08, temp_r30->unk_64, 0);
|
||||
}
|
||||
lbl_1_bss_31C->work[0] = 60;
|
||||
lbl_1_bss_31C->unk10 = frandmod(40) + 10;
|
||||
lbl_1_bss_31C->work[1] = arg0->work[1];
|
||||
lbl_1_bss_31C->func = fn_1_E18C;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D554(omObjData *arg0) {
|
||||
float sp8;
|
||||
|
||||
sp8 = BoardModelRotYGet(lbl_1_bss_14[9]);
|
||||
arg0->scale.x += 8.5f;
|
||||
if (arg0->scale.x > 255.0f) {
|
||||
arg0->scale.x = 255.0f;
|
||||
}
|
||||
BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x);
|
||||
if (arg0->scale.x == 255.0f) {
|
||||
arg0->work[0] = 0;
|
||||
lbl_1_bss_31C->work[1] = arg0->work[1];
|
||||
arg0->scale.x = 255.0f;
|
||||
BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x);
|
||||
if (arg0->work[1] == 8) {
|
||||
arg0->func = fn_1_D70C;
|
||||
lbl_1_bss_31C->work[2] = 1;
|
||||
lbl_1_bss_31C->func = fn_1_E374;
|
||||
} else {
|
||||
arg0->func = fn_1_D6A8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D6A8(omObjData *arg0) {
|
||||
if (arg0->work[0] != 0) {
|
||||
BoardModelHookReset(lbl_1_bss_14[7]);
|
||||
BoardModelVisibilitySet(lbl_1_bss_2F8, 0);
|
||||
arg0->func = fn_1_D230;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_D70C(omObjData *arg0) {
|
||||
Process *var_r30;
|
||||
|
||||
if (arg0->work[0] == 1) {
|
||||
var_r30 = HuPrcCreate(fn_1_D770, 0x2004, 0x1800, 0);
|
||||
var_r30->user_data = arg0;
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
s16 lbl_1_data_62C[] = {
|
||||
1, 3, 5, 7, 10, 14, 18, 20
|
||||
};
|
||||
|
||||
static void fn_1_D770(void) {
|
||||
Vec sp114[20];
|
||||
Vec sp24[20];
|
||||
Vec sp18;
|
||||
Vec spC;
|
||||
float temp_f29;
|
||||
float var_f30;
|
||||
float var_f31;
|
||||
char sp8[4];
|
||||
Process *temp_r3;
|
||||
omObjData *var_r28;
|
||||
s32 var_r29;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_314 = lbl_1_data_62C[lbl_1_bss_314 - 1];
|
||||
sprintf(sp8, "%d", lbl_1_bss_314);
|
||||
BoardWinCreate(2, MAKE_MESSID(32, 20), 3);
|
||||
BoardWinInsertMesSet(MAKE_MESSID_PTR(sp8), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_324, 0, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp18);
|
||||
for (i = 0; i < lbl_1_bss_314; i++) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_2D0[i], 1);
|
||||
sp114[i] = sp18;
|
||||
sp114[i].y += 800.0f + i * 120;
|
||||
sp114[i].x += -25.0f + 50.0f * frand8() * 0.003921569f;
|
||||
sp114[i].z += -25.0f + 50.0f * frand8() * 0.003921569f;
|
||||
sp24[i].x = sp24[i].z = 0.0f;
|
||||
sp24[i].y = 360.0f * frand8() * 0.003921569f;
|
||||
BoardModelPosSetV(lbl_1_bss_2D0[i], &sp114[i]);
|
||||
BoardModelRotSetV(lbl_1_bss_2D0[i], &sp24[i]);
|
||||
}
|
||||
var_f31 = -1.0f;
|
||||
var_r29 = 0;
|
||||
while (TRUE) {
|
||||
for (i = 0; i < lbl_1_bss_314; i++) {
|
||||
if (i < var_r29) {
|
||||
continue;
|
||||
}
|
||||
sp114[i].y += var_f31;
|
||||
BoardModelPosSetV(lbl_1_bss_2D0[i], &sp114[i]);
|
||||
sp24[i].y += 45.0f;
|
||||
if (sp24[i].y >= 360.0f) {
|
||||
sp24[i].y -= 360.0f;
|
||||
}
|
||||
BoardModelRotSetV(lbl_1_bss_2D0[i], &sp24[i]);
|
||||
if (sp114[i].y <= sp18.y + 80.0f) {
|
||||
spC = sp114[i];
|
||||
CharModelCoinEffectCreate(1, &spC);
|
||||
BoardModelVisibilitySet(lbl_1_bss_2D0[i], 0);
|
||||
var_r29 += 1;
|
||||
BoardPlayerCoinsAdd(lbl_1_bss_324, 1);
|
||||
HuAudFXPlay(7);
|
||||
omVibrate(lbl_1_bss_324, 12, 6, 6);
|
||||
}
|
||||
}
|
||||
var_f31 *= 1.05f;
|
||||
if (var_f31 < -20.0f) {
|
||||
var_f31 = -20.0f;
|
||||
}
|
||||
if (var_r29 == lbl_1_bss_314) {
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_324, 7, 0.0f, 10.0f, 0);
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
while (!BoardPlayerMotionEndCheck(lbl_1_bss_324)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardWinCreate(2, MAKE_MESSID(32, 21), 3);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
temp_r3 = HuPrcCreate(fn_1_E004, 0x2004, 0x1000, 0);
|
||||
temp_r3->user_data = NULL;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0);
|
||||
var_f30 = 0.0f;
|
||||
temp_f29 = 8.0f;
|
||||
lbl_1_bss_308.z = sp18.z + 100.0f;
|
||||
lbl_1_bss_308.x = sp18.x + 50.0f;
|
||||
PSVECSubtract(&lbl_1_bss_308, &sp18, &spC);
|
||||
PSVECScale(&spC, &spC, 0.04f);
|
||||
while (TRUE) {
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp18);
|
||||
spC.y = temp_f29 - var_f30 * var_f30 * 0.25f * 0.075f;
|
||||
var_f30 += 1.0f;
|
||||
PSVECAdd(&spC, &sp18, &sp18);
|
||||
sp114[0] = lbl_1_bss_308;
|
||||
sp114[0].y = sp18.y;
|
||||
PSVECSubtract(&sp114[0], &sp18, &sp114[0]);
|
||||
var_f31 = PSVECMag(&sp114[0]);
|
||||
if (var_f31 <= 1.0f) {
|
||||
spC.x = spC.z = 0.0f;
|
||||
sp18.x = lbl_1_bss_308.x;
|
||||
sp18.z = lbl_1_bss_308.z;
|
||||
}
|
||||
if (sp18.y <= lbl_1_bss_308.y && spC.y < 0.0f) {
|
||||
sp18.y = lbl_1_bss_308.y;
|
||||
break;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp18);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp18);
|
||||
omVibrate(lbl_1_bss_324, 12, 6, 6);
|
||||
while (!temp_r3->user_data) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuPrcKill(temp_r3);
|
||||
var_r28 = HuPrcCurrentGet()->user_data;
|
||||
var_r28->func = fn_1_E144;
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
static void fn_1_E004(void) {
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s32 i;
|
||||
|
||||
while (fn_1_1130(lbl_1_bss_14[9], 90.0f, 30.0f) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &sp14);
|
||||
PSVECSubtract(&lbl_1_bss_2FC, &sp14, &sp8);
|
||||
PSVECScale(&sp8, &sp8, 0.1f);
|
||||
for (i = 0; i < 10; i++) {
|
||||
BoardModelPosGet(lbl_1_bss_14[9], &sp14);
|
||||
PSVECAdd(&sp14, &sp8, &sp14);
|
||||
BoardModelPosSetV(lbl_1_bss_14[9], &sp14);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelPosSetV(lbl_1_bss_14[9], &lbl_1_bss_2FC);
|
||||
while (fn_1_1130(lbl_1_bss_14[9], 0.0f, 30.0f) == 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuPrcCurrentGet()->user_data = (void*) 1;
|
||||
while (TRUE) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_E144(omObjData *arg0) {
|
||||
lbl_1_bss_326 = 1;
|
||||
BoardMGExit();
|
||||
omDelObjEx(boardObjMan, arg0);
|
||||
}
|
||||
|
||||
static void fn_1_E18C(omObjData *arg0) {
|
||||
s32 var_r29;
|
||||
s16 var_r28;
|
||||
s16 var_r30;
|
||||
|
||||
var_r29 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1);
|
||||
if (var_r29 >= 20 && var_r29 <= 29) {
|
||||
var_r28 = GWPlayer[lbl_1_bss_324].port;
|
||||
var_r30 = 0;
|
||||
if (GWPlayer[lbl_1_bss_324].com) {
|
||||
if (--arg0->unk10 == 0) {
|
||||
var_r30 = fn_1_E880(arg0);
|
||||
}
|
||||
} else {
|
||||
var_r30 = HuPadBtnDown[var_r28];
|
||||
}
|
||||
if (var_r30 & 0xF70) {
|
||||
if ((var_r30 & lbl_1_bss_2C2[arg0->work[1] - 1]) && !(var_r30 & ~lbl_1_bss_2C2[arg0->work[1] - 1])) {
|
||||
arg0->work[2] = 1;
|
||||
} else {
|
||||
arg0->work[2] = 0;
|
||||
}
|
||||
BoardModelVisibilitySet(lbl_1_bss_2F8, 0);
|
||||
arg0->func = fn_1_E374;
|
||||
}
|
||||
} else {
|
||||
BoardModelVisibilitySet(lbl_1_bss_2F8, 0);
|
||||
arg0->work[2] = 0;
|
||||
arg0->func = fn_1_E374;
|
||||
lbl_1_bss_318->work[0] = 1;
|
||||
fn_1_E374(arg0);
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_E374(omObjData *arg0) {
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s32 temp_r3;
|
||||
|
||||
temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1);
|
||||
if (temp_r3 >= 30 && temp_r3 <= 39) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp14);
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp20);
|
||||
PSVECSubtract(&sp14, &sp20, &sp8);
|
||||
PSVECScale(&sp8, &sp8, 0.04f);
|
||||
arg0->trans.x = sp8.x;
|
||||
arg0->trans.z = sp8.z;
|
||||
arg0->trans.y = 5.0f;
|
||||
arg0->rot.x = 0.0f;
|
||||
arg0->scale.x = sp14.x;
|
||||
arg0->scale.y = sp14.y;
|
||||
arg0->scale.z = sp14.z;
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0);
|
||||
arg0->func = fn_1_E4C0;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_E4C0(omObjData *arg0) {
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
|
||||
BoardPlayerPosGet(lbl_1_bss_324, &sp2C);
|
||||
sp14.x = arg0->scale.x;
|
||||
sp14.y = arg0->scale.y;
|
||||
sp14.z = arg0->scale.z;
|
||||
sp20.x = arg0->trans.x;
|
||||
sp20.z = arg0->trans.z;
|
||||
sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * 0.075f;
|
||||
arg0->rot.x += 1.0f;
|
||||
PSVECAdd(&sp2C, &sp20, &sp2C);
|
||||
sp8 = sp2C;
|
||||
sp8.y = sp14.y;
|
||||
PSVECSubtract(&sp14, &sp8, &sp8);
|
||||
var_f31 = PSVECMag(&sp8);
|
||||
if (var_f31 <= 1.0f) {
|
||||
arg0->trans.x = arg0->trans.z = 0.0f;
|
||||
sp2C.x = sp14.x;
|
||||
sp2C.z = sp14.z;
|
||||
}
|
||||
if (sp2C.y <= sp14.y && sp20.y < 0.0f) {
|
||||
sp2C.y = sp14.y;
|
||||
BoardPlayerIdleSet(lbl_1_bss_324);
|
||||
arg0->work[3] = 0;
|
||||
if (arg0->work[2] != 0) {
|
||||
arg0->func = fn_1_E6AC;
|
||||
} else {
|
||||
lbl_1_bss_318->work[0] = 1;
|
||||
HuAudFXPlay(0x475);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp2C);
|
||||
}
|
||||
|
||||
static void fn_1_E6AC(omObjData *arg0) {
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
|
||||
if (arg0->work[3] == 0) {
|
||||
lbl_1_bss_2B0 = -1;
|
||||
var_f31 = 4.0f + 20.0f * (arg0->work[1] - 1);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_14[7], var_f31);
|
||||
BoardModelAttrReset(lbl_1_bss_14[7], 0x40000002);
|
||||
lbl_1_bss_314++;
|
||||
arg0->work[3] = 1;
|
||||
arg0->work[0] = 0x10;
|
||||
lbl_1_bss_2B0 = HuAudFXPlay(lbl_1_data_5F0[arg0->work[1] - 1]);
|
||||
}
|
||||
if (--arg0->work[0] != 0) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp8);
|
||||
BoardPlayerPosSetV(lbl_1_bss_324, &sp8);
|
||||
return;
|
||||
}
|
||||
if (lbl_1_bss_2B0 >= 0) {
|
||||
HuAudFXStop(lbl_1_bss_2B0);
|
||||
}
|
||||
lbl_1_bss_318->work[0] = 1;
|
||||
BoardModelAttrSet(lbl_1_bss_14[7], 0x40000002);
|
||||
arg0->func = NULL;
|
||||
}
|
||||
|
||||
static s16 fn_1_E880(omObjData *arg0) {
|
||||
s16 temp_r28;
|
||||
s16 var_r30;
|
||||
s32 temp_r29;
|
||||
|
||||
temp_r28 = GWPlayer[lbl_1_bss_324].diff;
|
||||
var_r30 = 0;
|
||||
temp_r29 = frandmod(100);
|
||||
switch (temp_r28) {
|
||||
case 0:
|
||||
if (temp_r29 < 35) {
|
||||
var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1];
|
||||
} else if (temp_r29 < 90) {
|
||||
var_r30 = -1;
|
||||
} else {
|
||||
arg0->unk10 = 100;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (temp_r29 < 55) {
|
||||
var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1];
|
||||
} else if (temp_r29 < 90) {
|
||||
var_r30 = -1;
|
||||
} else {
|
||||
arg0->unk10 = 100;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (temp_r29 < 85) {
|
||||
var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1];
|
||||
} else {
|
||||
var_r30 = -1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1];
|
||||
break;
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
656
src/REL/w04Dll/mg_item.c
Executable file
656
src/REL/w04Dll/mg_item.c
Executable file
|
|
@ -0,0 +1,656 @@
|
|||
#include "REL/w04Dll.h"
|
||||
#include "game/audio.h"
|
||||
#include "game/data.h"
|
||||
#include "game/frand.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/hsfman.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/pad.h"
|
||||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/window.h"
|
||||
#include "game/board/audio.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/model.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/window.h"
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "ext_math.h"
|
||||
|
||||
static void fn_1_A71C(void);
|
||||
static void fn_1_A7E8(void);
|
||||
static void fn_1_C388(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
|
||||
static s16 lbl_1_bss_2AC;
|
||||
static s16 lbl_1_bss_2A6[3];
|
||||
static s16 lbl_1_bss_29E[4];
|
||||
static s16 lbl_1_bss_298[3];
|
||||
static float lbl_1_bss_294;
|
||||
static s32 lbl_1_bss_290_pad;
|
||||
static s32 lbl_1_bss_28C;
|
||||
static AnimData *lbl_1_bss_288;
|
||||
|
||||
static char *lbl_1_data_51C[] = {
|
||||
"item1", "item2", "item3",
|
||||
"switch1", "switch2", "switch3"
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_534[] = {
|
||||
0x00000466,
|
||||
0x00000467,
|
||||
0x00000468
|
||||
};
|
||||
|
||||
static s32 lbl_1_data_540[] = {
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 109),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 110),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 111),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 112),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 113),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 114),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 115),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 116),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 118),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 119),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 120),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 121),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 122),
|
||||
DATA_MAKE_NUM(DATADIR_BOARD, 123),
|
||||
DATA_MAKE_NUM(DATADIR_W02, 24),
|
||||
DATA_MAKE_NUM(DATADIR_W02, 25),
|
||||
DATA_MAKE_NUM(DATADIR_W02, 26),
|
||||
-1
|
||||
};
|
||||
|
||||
void fn_1_A0F8(void) {
|
||||
Vec sp8;
|
||||
s32 i;
|
||||
|
||||
BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002);
|
||||
for (i = 0; i < 3; i++) {
|
||||
lbl_1_bss_29E[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 13), NULL, 1);
|
||||
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]);
|
||||
BoardModelAttrSet(lbl_1_bss_29E[i], 0x40000002);
|
||||
}
|
||||
BoardModelPosGet(lbl_1_bss_14[6], &sp8);
|
||||
lbl_1_bss_294 = sp8.y;
|
||||
}
|
||||
|
||||
void fn_1_A1F0(void) {
|
||||
Vec sp38[3];
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
s16 temp_r29;
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
|
||||
lbl_1_bss_2AC = GWSystem.player_curr;
|
||||
temp_r29 = BoardModelMotionCreate(lbl_1_bss_14[10], DATA_MAKE_NUM(DATADIR_BGUEST, 25));
|
||||
HuPrcSleep(60);
|
||||
var_f31 = 0.0f;
|
||||
for (i = 0; i < 30; i++) {
|
||||
var_f31 += 3.0f;
|
||||
BoardModelRotYSet(lbl_1_bss_14[10], var_f31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionStart(lbl_1_bss_14[10], temp_r29, 0);
|
||||
for (i = 0; i < 3; i++) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i], &sp38[i]);
|
||||
}
|
||||
while (TRUE) {
|
||||
var_r30 = 0;
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelPosGet(lbl_1_bss_298[i], &sp2C);
|
||||
sp2C.y += 2.0f;
|
||||
if (sp2C.y >= sp38[i].y) {
|
||||
sp2C.y = sp38[i].y;
|
||||
var_r30++;
|
||||
}
|
||||
BoardModelPosSetV(lbl_1_bss_298[i], &sp2C);
|
||||
}
|
||||
if (var_r30 == 3) {
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i], lbl_1_bss_298[i]);
|
||||
}
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_14[10]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[10])) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionShiftSet(lbl_1_bss_14[10], 1, 0.0f, 5.0f, 0x40000001);
|
||||
BoardAudSeqPause(0, 1, 1000);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f);
|
||||
BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002);
|
||||
HuPrcSleep(20);
|
||||
HuAudFXPlay(0x469);
|
||||
HuPrcSleep(50);
|
||||
BoardMusStart(1, 0x1E, 0x7F, 0);
|
||||
HuAudFXPlay(0x46C);
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < 202.0f) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelMotionTimeSet(lbl_1_bss_14[6], 202.0f);
|
||||
BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002);
|
||||
BoardModelMotionKill(lbl_1_bss_14[10], temp_r29);
|
||||
sp14.x = -35.0f;
|
||||
sp14.y = sp14.z = 0.0f;
|
||||
sp8.x = 0.0f;
|
||||
sp8.y = 0.0f;
|
||||
sp8.z = -150.0f;
|
||||
BoardCameraMotionStartEx(lbl_1_bss_14[6], &sp14, &sp8, 1500.0f, 25.0f, 21);
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp2C);
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[4], &sp20);
|
||||
sp20.z = sp2C.z - 50.0f;
|
||||
sp20.y = sp2C.y;
|
||||
BoardPlayerPosLerpStart(lbl_1_bss_2AC, &sp2C, &sp20, 0x3C);
|
||||
while (GWPlayer[lbl_1_bss_2AC].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0xB4, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardCameraMotionWait();
|
||||
fn_1_A7E8();
|
||||
BoardMGExit();
|
||||
while (TRUE) {
|
||||
if (BoardMGDoneFlagGet() == 1) {
|
||||
BoardMGDoneFlagSet(0);
|
||||
fn_1_BA7C();
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuPrcEnd();
|
||||
}
|
||||
|
||||
static void fn_1_A71C(void) {
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
s16 temp_r31;
|
||||
|
||||
var_f31 = 0.0f;
|
||||
temp_r31 = (s16) HuPrcCurrentGet()->user_data;
|
||||
while (TRUE) {
|
||||
BoardModelPosGet(temp_r31, &sp8);
|
||||
sp8.y += 0.25 * sind(var_f31);
|
||||
var_f31 += 5.0f;
|
||||
if (var_f31 >= 360.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
BoardModelPosSetV(temp_r31, &sp8);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_A7E8(void) {
|
||||
Vec sp54[3];
|
||||
Vec sp48;
|
||||
Vec sp3C;
|
||||
Vec sp30;
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
float sp10[2];
|
||||
float var_f29;
|
||||
float var_f30;
|
||||
float var_f31;
|
||||
Process *var_r20;
|
||||
s16 var_r30;
|
||||
s16 var_r28;
|
||||
s16 var_r27;
|
||||
s16 var_r26;
|
||||
s16 var_r25;
|
||||
s16 var_r24;
|
||||
u16 temp_r29;
|
||||
u16 var_r23;
|
||||
s16 var_r22;
|
||||
s16 var_r21;
|
||||
s16 var_r19;
|
||||
u16 temp_r18;
|
||||
u16 var_r17;
|
||||
ParticleData *spC;
|
||||
s32 sp8;
|
||||
s32 i;
|
||||
|
||||
var_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 14), NULL, 0);
|
||||
BoardModelAttrSet(var_r28, 0x40000001);
|
||||
BoardModelVisibilitySet(var_r28, 0);
|
||||
var_r30 = 1;
|
||||
for (i = 0; i < 3; i++) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i + 3], &sp54[i]);
|
||||
sp54[i].y += 50.0f;
|
||||
}
|
||||
var_r25 = MGSeqCreate(3, 0);
|
||||
while (MGSeqStatGet(var_r25) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
var_r24 = 5;
|
||||
var_r21 = 60;
|
||||
var_r25 = MGSeqCreate(1, var_r24, 0x120, 0x40);
|
||||
HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(32, 22));
|
||||
var_r27 = HuWinCreate(-10000.0f, 368.0f, sp10[0], sp10[1], 0);
|
||||
HuWinMesSet(var_r27, MAKE_MESSID(32, 22));
|
||||
HuWinBGTPLvlSet(var_r27, 0.0f);
|
||||
HuWinMesSpeedSet(var_r27, 0);
|
||||
BoardModelVisibilitySet(var_r28, 1);
|
||||
BoardModelPosSetV(var_r28, &sp54[var_r30]);
|
||||
var_r22 = 30;
|
||||
var_r19 = 0;
|
||||
temp_r18 = GWPlayer[lbl_1_bss_2AC].port;
|
||||
while (TRUE) {
|
||||
var_r21--;
|
||||
if (var_r21 == 0) {
|
||||
var_r21 = 60;
|
||||
if (--var_r24 < 0) {
|
||||
break;
|
||||
}
|
||||
MGSeqParamSet(var_r25, 1, var_r24);
|
||||
}
|
||||
if (GWPlayer[lbl_1_bss_2AC].com) {
|
||||
if (var_r22 != 0) {
|
||||
var_r22--;
|
||||
} else {
|
||||
var_r22 = frandmod(30) + 15;
|
||||
if (frandBool() || var_r19 == 3) {
|
||||
var_r17 = 0x100;
|
||||
} else {
|
||||
if (frandBool()) {
|
||||
var_r23 = 1;
|
||||
} else {
|
||||
var_r23 = 2;
|
||||
}
|
||||
var_r19++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var_r17 = HuPadBtnDown[temp_r18];
|
||||
var_r23 = HuPadDStkRep[temp_r18];
|
||||
}
|
||||
if (var_r17 & 0x100) {
|
||||
break;
|
||||
}
|
||||
if ((var_r23 & 1) && var_r30 != 0) {
|
||||
HuAudFXPlay(0);
|
||||
var_r30--;
|
||||
}
|
||||
if ((var_r23 & 2) && var_r30 != 2) {
|
||||
HuAudFXPlay(0);
|
||||
var_r30++;
|
||||
}
|
||||
BoardModelPosSetV(var_r28, &sp54[var_r30]);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuAudFXPlay(2);
|
||||
MGSeqParamSet(var_r25, 2, -1);
|
||||
HuWinKill(var_r27);
|
||||
for (i = 0; i < 360; i += 12) {
|
||||
sp48.x = sp48.y = sp48.z = 1.0 + 0.8f * sind(i % 180);
|
||||
BoardModelScaleSetV(var_r28, &sp48);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelVisibilitySet(var_r28, 0);
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp18);
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0);
|
||||
var_f30 = 0.0f;
|
||||
var_f29 = 12.0f;
|
||||
sp3C = sp54[var_r30];
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
PSVECSubtract(&sp3C, &sp30, &sp3C);
|
||||
PSVECScale(&sp3C, &sp3C, 0.05f);
|
||||
while (TRUE) {
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f;
|
||||
var_f30 += 1.0f;
|
||||
PSVECAdd(&sp3C, &sp30, &sp30);
|
||||
if (sp30.y <= sp54[var_r30].y - 40.0f && sp3C.y < 0.0f) {
|
||||
sp30.y = sp54[var_r30].y - 40.0f;
|
||||
break;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30);
|
||||
sp48 = sp54[var_r30];
|
||||
sp48.y = sp30.y = 0.0f;
|
||||
PSVECSubtract(&sp48, &sp30, &sp30);
|
||||
var_f31 = PSVECMag(&sp30);
|
||||
if (var_f31 <= 1.0f) {
|
||||
sp3C.x = sp3C.z = 0.0f;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqFadeOut(1, 100);
|
||||
HuAudFXPlay(lbl_1_data_534[var_r30]);
|
||||
BoardModelMotionTimeSet(lbl_1_bss_29E[var_r30], 0.0f);
|
||||
BoardModelAttrReset(lbl_1_bss_29E[var_r30], 0x40000002);
|
||||
BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30);
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001);
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) < BoardModelMotionMaxTimeGet(lbl_1_bss_29E[var_r30])) {
|
||||
if (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) >= 13.0f) {
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
sp30.y += 1.0f;
|
||||
BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30);
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
temp_r29 = frandmod(3);
|
||||
BoardModelHookReset(lbl_1_bss_14[6]);
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]);
|
||||
if (i != temp_r29) {
|
||||
BoardModelVisibilitySet(lbl_1_bss_298[i], 0);
|
||||
}
|
||||
}
|
||||
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[1], lbl_1_bss_298[temp_r29]);
|
||||
BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002);
|
||||
HuPrcSleep(30);
|
||||
HuAudFXPlay(0x310);
|
||||
while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[6])) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelHookReset(lbl_1_bss_14[6]);
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]);
|
||||
}
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[1], &sp24);
|
||||
BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24);
|
||||
var_r20 = HuPrcChildCreate(fn_1_A71C, 0x2002, 0x800, 0, boardMainProc);
|
||||
var_r20->user_data = (void*) lbl_1_bss_298[temp_r29];
|
||||
var_r26 = Hu3DParticleCreate(lbl_1_bss_288, 100);
|
||||
spC = Hu3DData[var_r26].unk_120;
|
||||
spC->unk_02 = lbl_1_bss_298[temp_r29];
|
||||
Hu3DParticleHookSet(var_r26, fn_1_C388);
|
||||
Hu3DParticleColSet(var_r26, 0xFF, 0xFF, 0);
|
||||
Hu3DModelPosSet(var_r26, 0.0f, 0.0f, 0.0f);
|
||||
Hu3DParticleBlendModeSet(var_r26, 1);
|
||||
Hu3DModelLayerSet(var_r26, 2);
|
||||
lbl_1_bss_28C = HuAudFXPlay(0x35F);
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0);
|
||||
var_f30 = 0.0f;
|
||||
var_f29 = 12.0f;
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
PSVECSubtract(&sp18, &sp30, &sp3C);
|
||||
PSVECScale(&sp3C, &sp3C, 0.05f);
|
||||
while (TRUE) {
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f;
|
||||
var_f30 += 1.0f;
|
||||
PSVECAdd(&sp3C, &sp30, &sp30);
|
||||
if (sp30.y < sp18.y) {
|
||||
sp30.y = sp18.y;
|
||||
break;
|
||||
}
|
||||
BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30);
|
||||
sp48 = sp18;
|
||||
sp48.y = sp30.y = 0.0f;
|
||||
PSVECSubtract(&sp48, &sp30, &sp30);
|
||||
var_f31 = PSVECMag(&sp30);
|
||||
if (var_f31 <= 1.0f) {
|
||||
sp3C.x = sp3C.z = 0.0f;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
omVibrate(lbl_1_bss_2AC, 12, 6, 6);
|
||||
BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30);
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001);
|
||||
BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24);
|
||||
sp3C = sp24;
|
||||
sp3C.z += 100.0f;
|
||||
PSVECSubtract(&sp3C, &sp24, &sp3C);
|
||||
PSVECScale(&sp3C, &sp3C, 0.033333335f);
|
||||
for (i = 0; i < 30; i++) {
|
||||
BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24);
|
||||
PSVECAdd(&sp24, &sp3C, &sp24);
|
||||
BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
sp24.y = sp30.y;
|
||||
BoardPlayerPosLerpStart(lbl_1_bss_2AC, &sp30, &sp24, 0x3C);
|
||||
while (GWPlayer[lbl_1_bss_2AC].moving) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0, 0xF);
|
||||
while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
var_f31 = 90.0f;
|
||||
for (i = 0; i < 15; i++) {
|
||||
var_f31 -= 3.0f;
|
||||
BoardModelRotYSet(lbl_1_bss_14[10], var_f31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardWinCreate(2, MAKE_MESSID(32, 15), 3);
|
||||
BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_2A6[temp_r29]), 0);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
HuAudFXPlay(0x30D);
|
||||
HuPrcKill(var_r20);
|
||||
BoardPlayerPosGet(lbl_1_bss_2AC, &sp30);
|
||||
BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24);
|
||||
var_f29 = 1.0f;
|
||||
var_f31 = (sp30.y - sp24.y) / 30.0f;
|
||||
var_f30 = -0.04f;
|
||||
var_r27 = 0;
|
||||
HuAudFXFadeOut(lbl_1_bss_28C, 0x1F3);
|
||||
while (var_r27 == 0) {
|
||||
sp24.y += var_f31;
|
||||
var_f29 += var_f30;
|
||||
if (var_f29 < 0.0f) {
|
||||
var_f29 = 0.0f;
|
||||
var_r27 = 1;
|
||||
}
|
||||
sp48.x = sp48.y = sp48.z = var_f29;
|
||||
BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24);
|
||||
BoardModelScaleSetV(lbl_1_bss_298[temp_r29], &sp48);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
HuAudFXStop(lbl_1_bss_28C);
|
||||
BoardModelVisibilitySet(lbl_1_bss_298[temp_r29], 0);
|
||||
BoardPlayerItemAdd(lbl_1_bss_2AC, lbl_1_bss_2A6[temp_r29]);
|
||||
omVibrate(lbl_1_bss_2AC, 12, 6, 6);
|
||||
sp8 = HuAudSStreamPlay(2);
|
||||
BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 7, 0.0f, 5.0f, 0);
|
||||
while (!BoardPlayerMotionEndCheck(lbl_1_bss_2AC)) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
var_f31 = 45.0f;
|
||||
for (i = 0; i < 15; i++) {
|
||||
var_f31 -= 3.0f;
|
||||
BoardModelRotYSet(lbl_1_bss_14[10], var_f31);
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardModelRotYSet(lbl_1_bss_14[10], 0.0f);
|
||||
HuPrcSleep(30);
|
||||
while (HuAudSStreamStatGet(sp8) != 0) {
|
||||
HuPrcVSleep();
|
||||
}
|
||||
BoardAudSeqPause(0, 0, 1000);
|
||||
BoardWinCreate(2, MAKE_MESSID(32, 16), 3);
|
||||
BoardWinWait();
|
||||
BoardWinKill();
|
||||
BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f);
|
||||
BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002);
|
||||
Hu3DModelKill(var_r26);
|
||||
BoardModelKill(var_r28);
|
||||
}
|
||||
|
||||
void fn_1_BA7C(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelKill(lbl_1_bss_298[i]);
|
||||
}
|
||||
if (lbl_1_bss_288) {
|
||||
HuSprAnimKill(lbl_1_bss_288);
|
||||
lbl_1_bss_288 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_BB00(s16 *arg0) {
|
||||
Vec sp54[3];
|
||||
Vec sp30[3];
|
||||
Vec sp24;
|
||||
Vec sp18;
|
||||
float spC[3];
|
||||
float temp_f28;
|
||||
float var_f27;
|
||||
float var_f29;
|
||||
s32 var_r30;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
lbl_1_bss_2A6[i] = arg0[i];
|
||||
lbl_1_bss_298[i] = BoardModelCreate(lbl_1_data_540[lbl_1_bss_2A6[i]], NULL, 0);
|
||||
BoardModelVisibilitySet(lbl_1_bss_298[i], 0);
|
||||
if (lbl_1_bss_2A6[i] == 11) {
|
||||
BoardModelAttrSet(lbl_1_bss_298[i], 0x40000001);
|
||||
}
|
||||
if (lbl_1_bss_2A6[i] == 5) {
|
||||
Hu3DData[BoardModelIDGet(lbl_1_bss_298[i])].unk_F0[1][3] = -50.0f;
|
||||
}
|
||||
if (lbl_1_bss_2A6[i] == 4) {
|
||||
BoardModelMotionSpeedSet(lbl_1_bss_298[i], 0.0f);
|
||||
}
|
||||
}
|
||||
if (lbl_1_bss_288 == NULL) {
|
||||
lbl_1_bss_288 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0));
|
||||
HuSprAnimLock(lbl_1_bss_288);
|
||||
}
|
||||
BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f);
|
||||
BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002);
|
||||
sp18.x = sp18.y = sp18.z = 0.0f;
|
||||
for (i = 0; i < 3; i++) {
|
||||
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i], &sp54[i]);
|
||||
sp54[i].y += -50.0f;
|
||||
BoardModelVisibilitySet(lbl_1_bss_298[i], 1);
|
||||
BoardModelPosSetV(lbl_1_bss_298[i], &sp54[i]);
|
||||
BoardModelPosGet(lbl_1_bss_14[10], &sp24);
|
||||
BoardModelPosSetV(lbl_1_bss_298[i], &sp24);
|
||||
BoardModelScaleSetV(lbl_1_bss_298[i], &sp18);
|
||||
PSVECSubtract(&sp54[i], &sp24, &sp30[i]);
|
||||
PSVECNormalize(&sp30[i], &sp30[i]);
|
||||
spC[i] = 0.0f;
|
||||
}
|
||||
sp30[0].y = 16.0f;
|
||||
sp30[1].y = 13.0f;
|
||||
sp30[2].y = 10.0f;
|
||||
HuAudFXPlay(0x362);
|
||||
var_f29 = 0.0f;
|
||||
while (TRUE) {
|
||||
var_r30 = 0;
|
||||
var_f29 += 0.05f;
|
||||
if (var_f29 > 1.0f) {
|
||||
var_f29 = 1.0f;
|
||||
}
|
||||
sp18.x = sp18.y = sp18.z = var_f29;
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelPosGet(lbl_1_bss_298[i], &sp24);
|
||||
temp_f28 = sp30[i].y - spC[i] * spC[i] * 0.25f * 0.075f;
|
||||
sp24.x += 6.55f * sp30[i].x;
|
||||
sp24.z += 6.55f * sp30[i].z;
|
||||
sp24.y += temp_f28;
|
||||
var_f27 = VECDistanceXZ(&sp54[i], &sp24);
|
||||
if (var_f27 < 3.0f) {
|
||||
sp30[i].x = sp30[i].z = 0.0f;
|
||||
sp24.x = sp54[i].x;
|
||||
sp24.z = sp54[i].z;
|
||||
}
|
||||
if (sp24.y <= sp54[i].y && temp_f28 < 0.0f) {
|
||||
sp24.y = sp54[i].y;
|
||||
var_r30++;
|
||||
}
|
||||
BoardModelPosSetV(lbl_1_bss_298[i], &sp24);
|
||||
BoardModelScaleSetV(lbl_1_bss_298[i], &sp18);
|
||||
spC[i] += 1.0f;
|
||||
}
|
||||
if (var_r30 == 3) {
|
||||
break;
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
BoardModelPosSetV(lbl_1_bss_298[i], &sp54[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_C2BC(void) {
|
||||
Vec sp8;
|
||||
float var_f31;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
var_f31 = 1.0f;
|
||||
for (i = 0; i < 20; i++) {
|
||||
var_f31 -= 0.05f;
|
||||
if (var_f31 < 0.0f) {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
sp8.x = sp8.y = sp8.z = var_f31;
|
||||
for (j = 0; j < 3; j++) {
|
||||
BoardModelScaleSetV(lbl_1_bss_298[j], &sp8);
|
||||
}
|
||||
HuPrcVSleep();
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_1_C388(ModelData *model, ParticleData *particle, Mtx matrix) {
|
||||
Vec sp8;
|
||||
HsfanimStruct01 *var_r31;
|
||||
float var_f31;
|
||||
float temp_f30;
|
||||
float temp_f29;
|
||||
s32 var_r28;
|
||||
s32 i;
|
||||
|
||||
if (particle->unk_34 == 0) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
var_r31->unk40.a = 0;
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
BoardModelScaleGet(particle->unk_02, &sp8);
|
||||
var_f31 = sp8.x;
|
||||
BoardModelPosGet(particle->unk_02, &sp8);
|
||||
for (i = 0; i < 22; i++) {
|
||||
var_r31 = particle->unk_48;
|
||||
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
||||
if (var_r31->unk2C == 0.0f) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (var_r28 != particle->unk_30) {
|
||||
temp_f30 = 0.003921569f * frand8() * 360.0f;
|
||||
temp_f29 = var_f31 * (20.0f + 0.003921569f * frand8() * 60.0f);
|
||||
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 + var_f31 * (-30.0f + 0.003921569f * frand8() * 40.0f);
|
||||
var_r31->unk08.x = 0.5f + 0.003921569f * frand8() * 3.0f;
|
||||
var_r31->unk08.y = 0.3f + 0.003921569f * frand8() * 2.0f;
|
||||
var_r31->unk40.a = 0xB4;
|
||||
var_r31->unk2C = var_f31 * 15.0f;
|
||||
}
|
||||
}
|
||||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
var_r31->unk34.y -= var_r31->unk08.x;
|
||||
var_r31->unk2C -= var_r31->unk08.y;
|
||||
if (var_r31->unk2C <= 0.0f) {
|
||||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk00;
|
||||
|
|
@ -401,13 +401,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
break;
|
||||
}
|
||||
if (!(arg4 & 0xF) && !(temp_r29->unkAC & 0x10)) {
|
||||
effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(0xA);
|
||||
effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
sp1C.y = temp_r30->pos.y;
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(0xA) + 0x1E, &effectDustParam);
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(10) + 30, &effectDustParam);
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (lbl_801309A0[character * 4 + i] == arg4) {
|
||||
|
|
@ -424,13 +424,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
break;
|
||||
}
|
||||
if (!(arg4 & 3) && !(temp_r29->unkAC & 0x10)) {
|
||||
effectDustParam.unk0C.x = 4.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(0xA);
|
||||
effectDustParam.unk0C.z = 4.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
sp1C.y = temp_r30->pos.y;
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(0xA) + 0x1E, &effectDustParam);
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(10) + 30, &effectDustParam);
|
||||
}
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (lbl_801309C0[character * 4 + i] == arg4) {
|
||||
|
|
@ -441,13 +441,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
break;
|
||||
case 4:
|
||||
if (arg4 < 5 && !(temp_r29->unkAC & 0x10)) {
|
||||
effectDustParam.unk0C.x = 6.0 * sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 6.0 * cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 6.0 * sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.z = 6.0 * cosd(temp_r30->rot.y);
|
||||
for (i = 0; i < 5; i++) {
|
||||
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(0xA);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10);
|
||||
sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
sp1C.y = temp_r30->pos.y;
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19);
|
||||
sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25);
|
||||
CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
}
|
||||
|
|
@ -458,15 +458,15 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
case 6:
|
||||
if (arg4 == 5 && !(temp_r29->unkAC & 0x10)) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectDustParam.unk0C.x = 4.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.x = 4.0 * sind(45.0f * i) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.y = 0.0f;
|
||||
effectDustParam.unk0C.z = 4.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i) * temp_r30->scale.x;
|
||||
CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectDustParam.unk0C.x = 2.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.x = 2.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.y = 0.0f;
|
||||
effectDustParam.unk0C.z = 2.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.z = 2.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
}
|
||||
|
|
@ -518,15 +518,15 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
if (arg4 == 0) {
|
||||
if (!(temp_r29->unkAC & 0x10)) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectStarParam.unk0C.x = 10.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.y = 0.0f;
|
||||
effectStarParam.unk0C.z = 10.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x;
|
||||
CreateEffectStar(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.y = 0.0f;
|
||||
effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
}
|
||||
|
|
@ -560,9 +560,9 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4,
|
|||
}
|
||||
if (arg4 == 30) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.y = 0.0f;
|
||||
effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
}
|
||||
|
|
@ -972,12 +972,12 @@ static void RotateEffect(HsfanimStruct01 *arg0) {
|
|||
|
||||
temp_r30 = &Hu3DData[(s32) arg0->unk08.x];
|
||||
if (arg0->unk00_s16 < 8) {
|
||||
var_f31 = 0.3 + sin((40.0f + 10.0f * (arg0->unk00_s16 + 1)) * M_PI / 180.0);
|
||||
var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00_s16 + 1));
|
||||
arg0->unk2C = 50.0f * var_f31 * temp_r30->scale.x;
|
||||
arg0->unk40.a = 0xFF;
|
||||
var_f31 = 0.3 + sin((15.0f * (arg0->unk00_s16 + 1)) * M_PI / 180.0);
|
||||
var_f31 = 0.3 + sind(15.0f * (arg0->unk00_s16 + 1));
|
||||
} else {
|
||||
var_f31 = 0.3 + sin(3 * M_PI / 4);
|
||||
var_f31 = 0.3 + sind(135);
|
||||
}
|
||||
var_f31 *= temp_r30->scale.x;
|
||||
arg0->unk34.x = temp_r30->pos.x + arg0->unk14.x * var_f31;
|
||||
|
|
@ -1020,9 +1020,9 @@ static void PlayEffectSound(HsfanimStruct01 *arg0) {
|
|||
var_r25 = voiceParam[temp_r28 * 2 + 1];
|
||||
}
|
||||
temp_r26 = (arg0->unk00_s16 * 5) % 360;
|
||||
arg0->unk34.x = temp_r30->pos.x + 40.0 * sin((arg0->unk08.y + temp_r26) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
arg0->unk34.x = temp_r30->pos.x + 40.0 * sind(arg0->unk08.y + temp_r26) * temp_r30->scale.x;
|
||||
arg0->unk34.y = temp_r30->pos.y + var_r25 * temp_r30->scale.x;
|
||||
arg0->unk34.z = temp_r30->pos.z + 40.0 * cos((arg0->unk08.y + temp_r26) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
arg0->unk34.z = temp_r30->pos.z + 40.0 * cosd(arg0->unk08.y + temp_r26) * temp_r30->scale.x;
|
||||
arg0->unk00_s16++;
|
||||
if (arg0->unk00_s16 >= 0x8F) {
|
||||
arg0->unk00_s16 = 0x48;
|
||||
|
|
@ -1477,8 +1477,8 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) {
|
|||
var_r27 = var_r26->unk_120;
|
||||
var_r31 = &var_r27->unk_48[temp_r28];
|
||||
var_r31->unk02 = 2;
|
||||
var_r31->unk08.x = 30.0 * sin(i * 45 * M_PI / 180.0);
|
||||
var_r31->unk08.y = 30.0 * cos(i * 45 * M_PI / 180.0);
|
||||
var_r31->unk08.x = 30.0 * sind(i * 45);
|
||||
var_r31->unk08.y = 30.0 * cosd(i * 45);
|
||||
var_r31->unk08.z = 0.0f;
|
||||
var_r31->unk14 = *arg1;
|
||||
var_r31->unk20 = 1.15f;
|
||||
|
|
@ -1527,7 +1527,7 @@ static void OrbitEffect(HsfanimStruct01 *arg0) {
|
|||
if (var_f30 > 90.0f) {
|
||||
var_f30 = 90.0f;
|
||||
}
|
||||
temp_f31 = sin((M_PI * var_f30) / 180.0);
|
||||
temp_f31 = sind(var_f30);
|
||||
arg0->unk34.x = arg0->unk14.x + arg0->unk08.x * temp_f31;
|
||||
arg0->unk34.y = arg0->unk14.y + arg0->unk08.y * temp_f31;
|
||||
arg0->unk34.z = arg0->unk14.z + arg0->unk08.z * temp_f31;
|
||||
|
|
@ -1569,9 +1569,9 @@ void CharModelCoinEffectCreate(s16 arg0, Vec *arg1) {
|
|||
|
||||
for (i = 0; i < 16; i++) {
|
||||
temp_r29 = i * 22.5f;
|
||||
coinParticleParam.unk0C.x = 5.0 * sin(temp_r29 * M_PI / 180.0);
|
||||
coinParticleParam.unk0C.x = 5.0 * sind(temp_r29);
|
||||
coinParticleParam.unk0C.y = 0.1f * (frandmod(100) - 50);
|
||||
coinParticleParam.unk0C.z = 5.0 * cos(temp_r29 * M_PI / 180.0);
|
||||
coinParticleParam.unk0C.z = 5.0 * cosd(temp_r29);
|
||||
var_r28 = CreateEffect(effectMdl[5], arg0, arg1->x, arg1->y, arg1->z, 30.0f, &coinParticleParam);
|
||||
if (var_r28 == -1) {
|
||||
break;
|
||||
|
|
@ -1650,9 +1650,9 @@ void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) {
|
|||
sp20.z = sp2C[2][2];
|
||||
for (i = 0; i < 8; i++) {
|
||||
temp_f31 = i * 45;
|
||||
sp14.x = sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0);
|
||||
sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0);
|
||||
sp14.z = sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0);
|
||||
sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31);
|
||||
sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31);
|
||||
sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31);
|
||||
PSVECNormalize(&sp14, &sp14);
|
||||
PSVECScale(&sp14, &lbl_80131030.unk0C, 10.0f);
|
||||
var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_80131030);
|
||||
|
|
@ -1732,9 +1732,9 @@ void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) {
|
|||
sp20.z = sp2C[2][2];
|
||||
for (i = 0; i < 8; i++) {
|
||||
temp_f31 = i * 45;
|
||||
sp14.x = sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0);
|
||||
sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0);
|
||||
sp14.z = sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0);
|
||||
sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31);
|
||||
sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31);
|
||||
sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31);
|
||||
PSVECNormalize(&sp14, &sp14);
|
||||
PSVECScale(&sp14, &lbl_801310BC.unk0C, 10.0f);
|
||||
var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_801310BC);
|
||||
|
|
@ -1931,9 +1931,9 @@ static void UpdateNpcEffect(void) {
|
|||
switch (temp_r27[2]) {
|
||||
case 0:
|
||||
if (!(temp_r26 & 0xF) && !(lbl_801975B0[temp_r28] & 0x10)) {
|
||||
effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
|
||||
sp2C.x = temp_r30->pos.x + (frandmod(50) - 25);
|
||||
sp2C.y = temp_r30->pos.y;
|
||||
sp2C.z = temp_r30->pos.z + (frandmod(50) - 25);
|
||||
|
|
@ -1950,9 +1950,9 @@ static void UpdateNpcEffect(void) {
|
|||
break;
|
||||
case 1:
|
||||
if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) {
|
||||
effectDustParam.unk0C.x = 4.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 4.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y);
|
||||
sp2C.x = temp_r30->pos.x + (frandmod(50) - 25);
|
||||
sp2C.y = temp_r30->pos.y;
|
||||
sp2C.z = temp_r30->pos.z + (frandmod(50) - 25);
|
||||
|
|
@ -1970,9 +1970,9 @@ static void UpdateNpcEffect(void) {
|
|||
case 2:
|
||||
if (temp_r28 != -1) {
|
||||
if (!(temp_r26 & 0x1F) && !(lbl_801975B0[temp_r28] & 0x10)) {
|
||||
effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
|
||||
sp2C.x = temp_r30->pos.x + (frandmod(50) - 25);
|
||||
sp2C.y = temp_r30->pos.y;
|
||||
sp2C.z = temp_r30->pos.z + (frandmod(50) - 25);
|
||||
|
|
@ -1989,9 +1989,9 @@ static void UpdateNpcEffect(void) {
|
|||
case 3:
|
||||
if (temp_r28 != -1) {
|
||||
if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) {
|
||||
effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
|
||||
sp2C.x = temp_r30->pos.x + (frandmod(50) - 25);
|
||||
sp2C.y = temp_r30->pos.y;
|
||||
sp2C.z = temp_r30->pos.z + (frandmod(50) - 25);
|
||||
|
|
@ -2008,9 +2008,9 @@ static void UpdateNpcEffect(void) {
|
|||
case 4:
|
||||
if (temp_r28 != -1) {
|
||||
if (!(temp_r26 & 7) && !(lbl_801975B0[temp_r28] & 0x10)) {
|
||||
effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y);
|
||||
effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10);
|
||||
effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0);
|
||||
effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y);
|
||||
sp2C.x = temp_r30->pos.x + (frandmod(50) - 25);
|
||||
sp2C.y = temp_r30->pos.y;
|
||||
sp2C.z = temp_r30->pos.z + (frandmod(50) - 25);
|
||||
|
|
@ -2032,15 +2032,15 @@ static void UpdateNpcEffect(void) {
|
|||
break;
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectStarParam.unk0C.x = 10.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.y = 0.0f;
|
||||
effectStarParam.unk0C.z = 10.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x;
|
||||
CreateEffectStar(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam);
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.y = 0.0f;
|
||||
effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x;
|
||||
effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x;
|
||||
CreateEffectDust(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam);
|
||||
}
|
||||
if (temp_r28 != -1) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include "game/process.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
#include "string.h"
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -1148,8 +1148,8 @@ static void ParManFunc(void) {
|
|||
PSVECCrossProduct(&sp14, &sp2C, &sp8);
|
||||
}
|
||||
PSVECNormalize(&sp8, &sp8);
|
||||
temp_f31 = sin(M_PI * var_f28 / 180.0);
|
||||
temp_f30 = cos(M_PI * var_f28 / 180.0);
|
||||
temp_f31 = sind(var_f28);
|
||||
temp_f30 = cosd(var_f28);
|
||||
sp14.x = sp8.x * (sp2C.x * sp2C.x + temp_f30 * (1.0f - sp2C.x * sp2C.x))
|
||||
+ sp8.y * (sp2C.x * sp2C.y * (1.0f - temp_f30) - sp2C.z * temp_f31)
|
||||
+ sp8.z * (sp2C.x * sp2C.z * (1.0f - temp_f30) + sp2C.y * temp_f31);
|
||||
|
|
@ -1160,8 +1160,8 @@ static void ParManFunc(void) {
|
|||
+ sp8.y * (sp2C.y * sp2C.z * (1.0f - temp_f30) + sp2C.x * temp_f31)
|
||||
+ sp8.z * (sp2C.z * sp2C.z + temp_f30 * (1.0f - sp2C.z * sp2C.z));
|
||||
PSVECCrossProduct(&sp14, &sp2C, &sp8);
|
||||
temp_f31 = sin(M_PI * var_f29 / 180.0);
|
||||
temp_f30 = cos(M_PI * var_f29 / 180.0);
|
||||
temp_f31 = sind(var_f29);
|
||||
temp_f30 = cosd(var_f29);
|
||||
sp14.x = sp2C.x * (sp8.x * sp8.x + temp_f30 * (1.0f - sp8.x * sp8.x))
|
||||
+ sp2C.y * (sp8.x * sp8.y * (1.0f - temp_f30) - sp8.z * temp_f31)
|
||||
+ sp2C.z * (sp8.x * sp8.z * (1.0f - temp_f30) + sp8.y * temp_f31);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,9 @@
|
|||
#include "game/hsfformat.h"
|
||||
#include "game/hsfload.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
#include "string.h"
|
||||
|
||||
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ModelData *unk00;
|
||||
/* 0x04 */ HsfObject *unk04;
|
||||
|
|
@ -408,7 +406,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) {
|
|||
if (temp_f18 + temp_f21 < temp_r30->near || temp_f18 - temp_f21 > temp_r30->far) {
|
||||
return 0;
|
||||
}
|
||||
sp24 = sin(temp_r30->fov * 0.5 * M_PI / 180.0) / cos(temp_r30->fov * 0.5 * M_PI / 180.0);
|
||||
sp24 = sind(temp_r30->fov * 0.5) / cosd(temp_r30->fov * 0.5);
|
||||
temp_f27 = sp24 * temp_f18;
|
||||
temp_f24 = 1.2f * temp_f27;
|
||||
temp_f24 = temp_f21 + ABS(temp_f24);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
#include "game/init.h"
|
||||
#include "game/ShapeExec.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
#include "string.h"
|
||||
|
||||
static s32 SearchObjectIndex(HsfData *arg0, u32 arg1);
|
||||
|
|
@ -1098,9 +1098,9 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) {
|
|||
if (var_r30 & temp_r28) {
|
||||
PSVECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC);
|
||||
PSVECNormalize(&spC, &spC);
|
||||
sp18.x = spC.x * spC.y * (1.0 - cos(M_PI * arg2 / 180.0)) - spC.z * sin(M_PI * arg2 / 180.0);
|
||||
sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cos(M_PI * arg2 / 180.0);
|
||||
sp18.z = spC.y * spC.z * (1.0 - cos(M_PI * arg2 / 180.0)) + spC.x * sin(M_PI * arg2 / 180.0);
|
||||
sp18.x = spC.x * spC.y * (1.0 - cosd(arg2)) - spC.z * sind(arg2);
|
||||
sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cosd(arg2);
|
||||
sp18.z = spC.y * spC.z * (1.0 - cosd(arg2)) + spC.x * sind(arg2);
|
||||
PSVECNormalize(&sp18, &Hu3DCamera[i].up);
|
||||
Hu3DCamera[i].aspect_dupe = arg2;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue