match w03Dll smoke.c, add almost last matching function for bootDll main.c

This commit is contained in:
Rainchus 2024-01-20 05:39:09 -06:00
parent eb1ae5ea18
commit c68649cfa0
4 changed files with 153 additions and 14 deletions

View file

@ -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
View 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";