match w03Dll smoke.c, add almost last matching function for bootDll main.c
This commit is contained in:
parent
eb1ae5ea18
commit
c68649cfa0
4 changed files with 153 additions and 14 deletions
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
extern int SystemInitF;
|
||||
|
||||
static Process *objman;
|
||||
static Process *objman[2];
|
||||
Vec lbl_1_bss_3C[2];
|
||||
Vec lbl_1_bss_24[2];
|
||||
float lbl_1_bss_1C[2];
|
||||
|
|
@ -42,11 +42,13 @@ static BOOL TitleProc(void);
|
|||
|
||||
void *logoReadNintendo(void);
|
||||
|
||||
#define M_PI 3.141592653589793
|
||||
|
||||
void ModuleProlog(void)
|
||||
{
|
||||
omOvlHisData *history;
|
||||
OSReport("******* Boot ObjectSetup *********\n");
|
||||
objman = omInitObjMan(50, 8192);
|
||||
objman[0] = omInitObjMan(50, 8192);
|
||||
lbl_1_bss_3C[0].x = -67;
|
||||
lbl_1_bss_3C[0].y = 40;
|
||||
lbl_1_bss_3C[0].z = 0;
|
||||
|
|
@ -384,9 +386,62 @@ void fn_1_1178(void)
|
|||
}
|
||||
}
|
||||
|
||||
void fn_1_152C(void)
|
||||
{
|
||||
|
||||
//NON_MATCHING, only one in file
|
||||
void fn_1_152C(void) {
|
||||
Point3d temp_f0;
|
||||
Point3d temp_f0_4;
|
||||
Point3d temp_f0_7;
|
||||
Point3d sp8;
|
||||
|
||||
f32 temp_f31;
|
||||
s32 var_r30;
|
||||
s8 temp_r31;
|
||||
|
||||
if ((HuPadBtnDown[0] & 0x800)) {
|
||||
if (lbl_1_bss_0 != 0) {
|
||||
var_r30 = 0;
|
||||
} else {
|
||||
var_r30 = 1;
|
||||
}
|
||||
lbl_1_bss_0 = var_r30;
|
||||
}
|
||||
if (lbl_1_bss_0 != 0) {
|
||||
lbl_1_bss_3C->y += 0.1f * HuPadStkX[0];
|
||||
lbl_1_bss_3C->x += 0.1f * HuPadStkY[0];
|
||||
*lbl_1_bss_1C += HuPadTrigL[0] / 2;
|
||||
*lbl_1_bss_1C -= HuPadTrigR[0] / 2;
|
||||
if (*lbl_1_bss_1C < 100.0f) {
|
||||
*lbl_1_bss_1C = 100.0f;
|
||||
}
|
||||
temp_f0.x = lbl_1_bss_24->x + (*lbl_1_bss_1C * (sin((M_PI * lbl_1_bss_3C->y) / 180.0) * cos((M_PI * lbl_1_bss_3C->x) / 180.0)));
|
||||
temp_f0.y = (lbl_1_bss_24->y + (*lbl_1_bss_1C * -sin((M_PI * lbl_1_bss_3C->x) / 180.0)));
|
||||
temp_f0.z = (lbl_1_bss_24->z + (*lbl_1_bss_1C * (cos((M_PI * lbl_1_bss_3C->y) / 180.0) * cos((M_PI * lbl_1_bss_3C->x) / 180.0))));
|
||||
temp_f0_4.x = lbl_1_bss_24->x - temp_f0.x;
|
||||
temp_f0_4.y = lbl_1_bss_24->y - temp_f0.y;
|
||||
temp_f0_4.z = lbl_1_bss_24->z - temp_f0.z;
|
||||
temp_f0_7.x = (sin((M_PI * lbl_1_bss_3C->y) / 180.0) * sin((M_PI * lbl_1_bss_3C->x) / 180.0));
|
||||
temp_f0_7.y = cos((M_PI * lbl_1_bss_3C->x) / 180.0);
|
||||
temp_f0_7.z = (cos((M_PI * lbl_1_bss_3C->y) / 180.0) * sin((M_PI * lbl_1_bss_3C->x) / 180.0));
|
||||
temp_f31 = lbl_1_bss_3C->z;
|
||||
sp8.x = ((temp_f0_7.x * ((temp_f0_4.x * temp_f0_4.x) + ((1.0f - (temp_f0_4.x * temp_f0_4.x)) * cos((M_PI * temp_f31) / 180.0)))) + temp_f0_7.y * (((temp_f0_4.x * temp_f0_4.y) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.z * sin((M_PI * temp_f31) / 180.0)) + temp_f0_7.z * (((temp_f0_4.x * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.y * sin((M_PI * temp_f31) / 180.0)));
|
||||
sp8.y = ((temp_f0_7.y * ((temp_f0_4.y * temp_f0_4.y) + ((1.0f - (temp_f0_4.y * temp_f0_4.y)) * cos((M_PI * temp_f31) / 180.0)))) + temp_f0_7.x * (((temp_f0_4.x * temp_f0_4.y) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.z * sin((M_PI * temp_f31) / 180.0)) + temp_f0_7.z * (((temp_f0_4.y * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.x * sin((M_PI * temp_f31) / 180.0)));
|
||||
sp8.z = ((temp_f0_7.z * (temp_f0_4.z * temp_f0_4.z + ((1.0f - (temp_f0_4.z * temp_f0_4.z)) * cos((M_PI * temp_f31) / 180.0)))) + (temp_f0_7.x * (((temp_f0_4.x * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.y * sin((M_PI * temp_f31) / 180.0))) + temp_f0_7.y * (((temp_f0_4.y * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.x * sin((M_PI * temp_f31) / 180.0)));
|
||||
PSVECCrossProduct(&temp_f0_7, &temp_f0_4, &temp_f0_4);
|
||||
PSVECNormalize(&temp_f0_4, &temp_f0_4);
|
||||
temp_r31 = (HuPadSubStkX[0] & 0xF8);
|
||||
if (temp_r31 != 0) {
|
||||
lbl_1_bss_24->x += 0.05f * (temp_f0_4.x * temp_r31);
|
||||
lbl_1_bss_24->y += 0.05f * (temp_f0_4.y * temp_r31);
|
||||
lbl_1_bss_24->z += 0.05f * (temp_f0_4.z * temp_r31);
|
||||
}
|
||||
PSVECNormalize(&sp8, &temp_f0_4);
|
||||
temp_r31 = -(HuPadSubStkY[0] & 0xF8);
|
||||
if (temp_r31 != 0) {
|
||||
lbl_1_bss_24->x += 0.05f * (temp_f0_4.x * temp_r31);
|
||||
lbl_1_bss_24->y += 0.05f * (temp_f0_4.y * temp_r31);
|
||||
lbl_1_bss_24->z += 0.05f * (temp_f0_4.z * temp_r31);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void TitleInit(void)
|
||||
|
|
@ -486,5 +541,6 @@ static BOOL TitleProc(void)
|
|||
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN);
|
||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN);
|
||||
fn_1_152C();
|
||||
return 0;
|
||||
}
|
||||
83
src/REL/w03Dll/smoke.c
Normal file
83
src/REL/w03Dll/smoke.c
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#include "dolphin.h"
|
||||
#include "game/object.h"
|
||||
#include "REL/w03Dll.h"
|
||||
#include "board_unsplit.h"
|
||||
#include "game/board/main.h"
|
||||
|
||||
typedef struct w03UnkWorkStruct {
|
||||
s16 unk_00[5];
|
||||
char unk_0A[2];
|
||||
f32 unk_0C;
|
||||
} w03UnkWorkStruct;
|
||||
|
||||
extern w03State* lbl_1_bss_0;
|
||||
extern omObjData* lbl_1_bss_138;
|
||||
extern Process *boardObjMan;
|
||||
extern s16 lbl_1_data_1E0;
|
||||
|
||||
void fn_1_79E0(omObjData* arg0);
|
||||
f32 BoardModelMotionMaxTimeGet(s16);
|
||||
|
||||
char kemuri1[] = "kemuri1";
|
||||
char kemuri2[] = "kemuri2";
|
||||
char kemuri3[] = "kemuri3";
|
||||
char kemuri4[] = "kemuri4";
|
||||
char kemuri5[] = "kemuri5";
|
||||
|
||||
char* kemuri_strings[] = {
|
||||
kemuri1, kemuri2, kemuri3,
|
||||
kemuri4, kemuri5
|
||||
};
|
||||
|
||||
void fn_1_785C(void) {
|
||||
f32 var_f31;
|
||||
s32 i;
|
||||
w03UnkWorkStruct* temp_r31;
|
||||
char* temp_r29;
|
||||
|
||||
lbl_1_bss_138 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
|
||||
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138->work[0];
|
||||
for (i = 0; i < 5; i++) {
|
||||
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
|
||||
temp_r29 = kemuri_strings[i];
|
||||
if (0.0f == temp_r31->unk_0C) {
|
||||
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
|
||||
}
|
||||
var_f31 = temp_r31->unk_0C * BoardRandFloat();
|
||||
if (var_f31 < 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
|
||||
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
|
||||
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
|
||||
BoardModelLayerSet(temp_r31->unk_00[i], 2);
|
||||
BoardModelPassSet(temp_r31->unk_00[i], 0);
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_79E0(omObjData* arg0) {
|
||||
s32 var_r29;
|
||||
s32 i;
|
||||
w03UnkWorkStruct* temp_r30;
|
||||
|
||||
temp_r30 = (w03UnkWorkStruct*)&arg0->work[0];
|
||||
|
||||
if (BoardIsKill() != 0) {
|
||||
for (i = 0; i < 5; i++) {
|
||||
BoardModelKill(temp_r30->unk_00[i]);
|
||||
}
|
||||
lbl_1_bss_138 = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
if (lbl_1_bss_0->unk3 != 0) {
|
||||
var_r29 = 0;
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
|
||||
}
|
||||
}
|
||||
|
||||
char pad[4] = "\0\0\0\0";
|
||||
Loading…
Add table
Add a link
Reference in a new issue