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

@ -250,8 +250,8 @@ lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float
lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
@ -372,12 +372,12 @@ lbl_1_data_3B1 = .data:0x000003B1; // type:object size:0x7
lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x48 lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x48
lbl_1_data_400 = .data:0x00000400; // type:object size:0x3 data:string lbl_1_data_400 = .data:0x00000400; // type:object size:0x3 data:string
lbl_1_data_403 = .data:0x00000403; // type:object size:0xD lbl_1_data_403 = .data:0x00000403; // type:object size:0xD
lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 data:string lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 scope:local data:string
lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 data:string lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 scope:local data:string
lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 data:string lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 scope:local data:string
lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 data:string lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 scope:local data:string
lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 data:string lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 scope:local data:string
lbl_1_data_438 = .data:0x00000438; // type:object size:0x18 lbl_1_data_438 = .data:0x00000438; // type:object size:0x18 scope:local
lbl_1_data_450 = .data:0x00000450; // type:object size:0x4 data:4byte lbl_1_data_450 = .data:0x00000450; // type:object size:0x4 data:4byte
lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte
lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte

View file

@ -995,7 +995,7 @@ config.libs = [
Object(Matching, "REL/w03Dll/statue.c"), Object(Matching, "REL/w03Dll/statue.c"),
Object(NonMatching, "REL/w03Dll/condor.c"), Object(NonMatching, "REL/w03Dll/condor.c"),
Object(NonMatching, "REL/w03Dll/river.c"), Object(NonMatching, "REL/w03Dll/river.c"),
Object(NonMatching, "REL/w03Dll/smoke.c"), Object(Matching, "REL/w03Dll/smoke.c"),
Object(NonMatching, "REL/w03Dll/mg_coin.c"), Object(NonMatching, "REL/w03Dll/mg_coin.c"),
Object(NonMatching, "REL/w03Dll/mg_item.c"), Object(NonMatching, "REL/w03Dll/mg_item.c"),
} }

View file

@ -19,7 +19,7 @@
extern int SystemInitF; extern int SystemInitF;
static Process *objman; static Process *objman[2];
Vec lbl_1_bss_3C[2]; Vec lbl_1_bss_3C[2];
Vec lbl_1_bss_24[2]; Vec lbl_1_bss_24[2];
float lbl_1_bss_1C[2]; float lbl_1_bss_1C[2];
@ -42,11 +42,13 @@ static BOOL TitleProc(void);
void *logoReadNintendo(void); void *logoReadNintendo(void);
#define M_PI 3.141592653589793
void ModuleProlog(void) void ModuleProlog(void)
{ {
omOvlHisData *history; omOvlHisData *history;
OSReport("******* Boot ObjectSetup *********\n"); 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].x = -67;
lbl_1_bss_3C[0].y = 40; lbl_1_bss_3C[0].y = 40;
lbl_1_bss_3C[0].z = 0; 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) static void TitleInit(void)
@ -486,5 +541,6 @@ static BOOL TitleProc(void)
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN);
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN);
fn_1_152C();
return 0; 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";