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
|
|
@ -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_298 = .rodata:0x00000298; // 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_2AC = .rodata:0x000002AC; // 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 scope:local 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_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_400 = .data:0x00000400; // type:object size:0x3 data:string
|
||||
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_418 = .data:0x00000418; // type:object size:0x8 data:string
|
||||
lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 data:string
|
||||
lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 data:string
|
||||
lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 data:string
|
||||
lbl_1_data_438 = .data:0x00000438; // type:object size:0x18
|
||||
lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 scope:local 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 scope:local 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 scope:local data:string
|
||||
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_454 = .data:0x00000454; // type:object size:0x2 data:2byte
|
||||
lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte
|
||||
|
|
|
|||
|
|
@ -995,7 +995,7 @@ config.libs = [
|
|||
Object(Matching, "REL/w03Dll/statue.c"),
|
||||
Object(NonMatching, "REL/w03Dll/condor.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_item.c"),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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