mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
d_point_wind match, d_path start
This commit is contained in:
+1
-1
@@ -404,7 +404,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/d_a_npc_mk_static.cpp"),
|
||||
Object(NonMatching, "d/d_salvage.cpp"),
|
||||
Object(NonMatching, "d/d_snap.cpp"),
|
||||
Object(NonMatching, "d/d_point_wind.cpp"),
|
||||
Object(Matching, "d/d_point_wind.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_agb.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_arrow.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_bg.cpp"),
|
||||
|
||||
@@ -97,11 +97,6 @@ public:
|
||||
/* 0x0 */ u8 field_0x0[0x28];
|
||||
};
|
||||
|
||||
class dPa_smokeEcallBack {
|
||||
public:
|
||||
/* 0x0 */ u8 field_0x0[0x20];
|
||||
};
|
||||
|
||||
class dPa_cutTurnEcallBack_c {
|
||||
public:
|
||||
/* 0x0 */ u8 field_0x0[0x10];
|
||||
|
||||
@@ -35,7 +35,7 @@ struct WIND_INFLUENCE {
|
||||
/* 0x18 */ f32 mRadius;
|
||||
/* 0x1C */ f32 mStrength;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ int field_0x24;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ u8 mbConstant;
|
||||
};
|
||||
|
||||
|
||||
@@ -337,5 +337,6 @@ f32* dKyw_get_wind_power();
|
||||
void squal_proc();
|
||||
void dKyw_pntwind_set(WIND_INFLUENCE*);
|
||||
void dKyw_pntwind_cut(WIND_INFLUENCE*);
|
||||
void dKyw_pwind_cylinder_set(WIND_INFLUENCE*);
|
||||
|
||||
#endif /* D_KANKYO_WETHER_H */
|
||||
+1
-1
@@ -13,7 +13,7 @@ struct dPath__Point {
|
||||
};
|
||||
|
||||
struct dPath {
|
||||
/* 0x00 */ u16 mNum;
|
||||
/* 0x00 */ u16 m_num;
|
||||
/* 0x02 */ u16 mNextPathId;
|
||||
/* 0x04 */ u8 mArg0;
|
||||
/* 0x05 */ u8 mLoops;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef D_POINT_WIND_H
|
||||
#define D_POINT_WIND_H
|
||||
|
||||
#include "SSystem/SComponent/c_m3d_g_cps.h"
|
||||
#include "d/d_kankyo.h"
|
||||
|
||||
class dPointWind_c {
|
||||
public:
|
||||
cM3dGCpsS * mpCps;
|
||||
WIND_INFLUENCE mWind;
|
||||
|
||||
void set_pwind_init(cM3dGCpsS * pCps);
|
||||
void set_pwind_move();
|
||||
void set_pwind_delete();
|
||||
};
|
||||
|
||||
#endif /* D_POINT_WIND_H */
|
||||
+2
-3
@@ -770,9 +770,8 @@ public:
|
||||
};
|
||||
|
||||
class dBgW_base;
|
||||
class dStage_roomStatus_c {
|
||||
class dStage_roomStatus_c : public dStage_roomDt_c {
|
||||
public:
|
||||
/* 0x000 */ dStage_roomDt_c mRoomDt;
|
||||
/* 0x054 */ dKy_tevstr_c mTevStr;
|
||||
/* 0x104 */ u8 mFlags;
|
||||
/* 0x105 */ bool mDraw;
|
||||
@@ -800,7 +799,7 @@ public:
|
||||
void zoneCountCheck(int) const;
|
||||
void checkDrawArea() const;
|
||||
dStage_darkStatus_c* getDarkStatus();
|
||||
void getDarkMode();
|
||||
u32 getDarkMode();
|
||||
void getBgW(int);
|
||||
|
||||
static JKRExpHeap* createMemoryBlock(int, u32);
|
||||
|
||||
+47
-7
@@ -4,21 +4,61 @@
|
||||
//
|
||||
|
||||
#include "d/d_path.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
/* 80080018-8008010C .text dPath_GetPnt__FP5dPathi */
|
||||
dPath__Point* dPath_GetPnt(dPath*, int) {
|
||||
/* Nonmatching */
|
||||
dPath__Point* dPath_GetPnt(dPath* path, int pnt_index) {
|
||||
JUT_ASSERT(14, path != 0);
|
||||
JUT_ASSERT(15, 0 <= pnt_index && pnt_index < path->m_num);
|
||||
|
||||
if (path == NULL || path->mpPnt == NULL || 0 > pnt_index || pnt_index >= path->m_num)
|
||||
return NULL;
|
||||
else
|
||||
return &path->mpPnt[pnt_index];
|
||||
}
|
||||
|
||||
/* 8008010C-80080218 .text dPath_GetRoomPath__Fii */
|
||||
dPath* dPath_GetRoomPath(int, int) {
|
||||
/* Nonmatching */
|
||||
dPath* dPath_GetRoomPath(int path_index, int room_no) {
|
||||
dStage_dPath_c * pd;
|
||||
if (room_no == -1) {
|
||||
pd = dComIfGp_getStage().getPath2Inf();
|
||||
} else {
|
||||
JUT_ASSERT(0x3d, 0 <= room_no && room_no < 64);
|
||||
dStage_roomStatus_c * pRoom = dComIfGp_roomControl_getStatusRoomDt(room_no);
|
||||
if (pRoom == NULL)
|
||||
return NULL;
|
||||
pd = pRoom->getPath2Inf();
|
||||
}
|
||||
|
||||
if (pd == NULL || 0 > path_index || path_index >= pd->num)
|
||||
return NULL;
|
||||
else
|
||||
return &pd->m_path[path_index];
|
||||
}
|
||||
|
||||
/* 80080218-80080340 .text dPath_GetNextRoomPath__FP5dPathi */
|
||||
void dPath_GetNextRoomPath(dPath*, int) {
|
||||
/* Nonmatching */
|
||||
dPath* dPath_GetNextRoomPath(dPath* path, int room_no) {
|
||||
dStage_dPath_c * pd;
|
||||
if (room_no == -1) {
|
||||
pd = dComIfGp_getStage().getPath2Inf();
|
||||
} else {
|
||||
dStage_roomStatus_c * pRoom = dComIfGp_roomControl_getStatusRoomDt(room_no);
|
||||
if (pRoom == NULL)
|
||||
return NULL;
|
||||
pd = pRoom->getPath2Inf();
|
||||
}
|
||||
|
||||
s32 next_id = path->mNextPathId;
|
||||
if (pd == NULL || (next_id & 0xFFFF) == 0xFFFF) {
|
||||
return NULL;
|
||||
} else {
|
||||
JUT_ASSERT(0x72, 0 <= next_id && next_id < pd->num);
|
||||
if (0 > next_id || next_id >= pd->num)
|
||||
return NULL;
|
||||
else
|
||||
return &pd->m_path[next_id];
|
||||
}
|
||||
}
|
||||
|
||||
/* 80080340-800804A4 .text dPath_GetPolyRoomPathVec__FR13cBgS_PolyInfoP4cXyzPi */
|
||||
|
||||
+43
-6
@@ -3,21 +3,58 @@
|
||||
// Translation Unit: d_point_wind.cpp
|
||||
//
|
||||
|
||||
#include "d_point_wind.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_point_wind.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_kankyo_rain.h"
|
||||
#include "d/d_kankyo_wether.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
|
||||
/* 800CF31C-800CF398 .text set_pwind_init__12dPointWind_cFP9cM3dGCpsS */
|
||||
void dPointWind_c::set_pwind_init(cM3dGCpsS*) {
|
||||
/* Nonmatching */
|
||||
void dPointWind_c::set_pwind_init(cM3dGCpsS* pCps) {
|
||||
mpCps = pCps;
|
||||
mWind.mPos = mpCps->mStart;
|
||||
mWind.mDir = mpCps->mEnd;
|
||||
mWind.mRadius = mpCps->mRadius;
|
||||
mWind.field_0x20 = 0.0f;
|
||||
mWind.mStrength = 1.0f;
|
||||
dKyw_pwind_cylinder_set(&mWind);
|
||||
}
|
||||
|
||||
/* 800CF398-800CF5C8 .text set_pwind_move__12dPointWind_cFv */
|
||||
void dPointWind_c::set_pwind_move() {
|
||||
/* Nonmatching */
|
||||
f32 radScale = 1.8f;
|
||||
BOOL animate = TRUE;
|
||||
|
||||
cXyz p0 = mpCps->mStart;
|
||||
cXyz p1 = mpCps->mEnd;
|
||||
cXyz dir;
|
||||
dKyr_get_vectle_calc(&p0, &p1, &dir);
|
||||
|
||||
if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 && dComIfGp_roomControl_getStayNo() == 4) {
|
||||
radScale = 11.0f;
|
||||
animate = false;
|
||||
mWind.mPos = p0 + (dir * -100.0f);
|
||||
}
|
||||
|
||||
mWind.mDir = dir;
|
||||
mWind.mRadius = mpCps->mRadius * radScale;
|
||||
mWind.field_0x20 = 0.0f;
|
||||
|
||||
if (animate) {
|
||||
cLib_addCalc(&mWind.mPos.x, mpCps->mEnd.x, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f);
|
||||
cLib_addCalc(&mWind.mPos.y, mpCps->mEnd.y, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f);
|
||||
cLib_addCalc(&mWind.mPos.z, mpCps->mEnd.z, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f);
|
||||
|
||||
if (mWind.mPos.abs(p1) < mWind.mRadius) {
|
||||
mWind.mPos.x = mpCps->mStart.x;
|
||||
mWind.mPos.y = mpCps->mStart.y;
|
||||
mWind.mPos.z = mpCps->mStart.z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800CF5C8-800CF5EC .text set_pwind_delete__12dPointWind_cFv */
|
||||
void dPointWind_c::set_pwind_delete() {
|
||||
/* Nonmatching */
|
||||
dKyw_pntwind_cut(&mWind);
|
||||
}
|
||||
|
||||
|
||||
+66
-17
@@ -35,14 +35,25 @@ void dStage_SetErrorRoom() {}
|
||||
/* 8004093C-80040940 .text dStage_SetErrorStage__Fv */
|
||||
void dStage_SetErrorStage() {}
|
||||
|
||||
class dStage_KeepTresureInfo {
|
||||
u8 unk[0x404];
|
||||
};
|
||||
|
||||
class dStage_KeepDoorInfo {
|
||||
u8 unk[0x904];
|
||||
};
|
||||
|
||||
dStage_KeepTresureInfo TresureInfo;
|
||||
dStage_KeepDoorInfo DoorInfo;
|
||||
|
||||
/* 80040940-8004094C .text dStage_GetKeepTresureInfo__Fv */
|
||||
void dStage_GetKeepTresureInfo() {
|
||||
/* Nonmatching */
|
||||
dStage_KeepTresureInfo * dStage_GetKeepTresureInfo() {
|
||||
return &TresureInfo;
|
||||
}
|
||||
|
||||
/* 8004094C-80040958 .text dStage_GetKeepDoorInfo__Fv */
|
||||
void dStage_GetKeepDoorInfo() {
|
||||
/* Nonmatching */
|
||||
dStage_KeepDoorInfo * dStage_GetKeepDoorInfo() {
|
||||
return &DoorInfo;
|
||||
}
|
||||
|
||||
/* 80040958-80040A78 .text dStage_KeepTresureInfoProc__FP11dStage_dt_cP19stage_tresure_class
|
||||
@@ -86,7 +97,7 @@ void dStage_roomControl_c::init() {
|
||||
|
||||
dStage_roomStatus_c* status = mStatus;
|
||||
for (int i = 0; i < 64; i++) {
|
||||
status->mRoomDt.init();
|
||||
status->init();
|
||||
setStatusFlag(i, 0);
|
||||
status->mDraw = false;
|
||||
|
||||
@@ -202,17 +213,25 @@ void dStage_roomControl_c::checkDrawArea() const {
|
||||
/* 800412EC-80041330 .text getDarkStatus__20dStage_roomControl_cFv */
|
||||
// NONMATCHING
|
||||
dStage_darkStatus_c* dStage_roomControl_c::getDarkStatus() {
|
||||
dStage_FileList_dt_c* plist_p = mStatus[mStayNo].mRoomDt.mpFileList;
|
||||
if (plist_p == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
dStage_roomStatus_c * pRoomStatus = &mStatus[mStayNo];
|
||||
dStage_FileList_dt_c* plist_p = pRoomStatus->mpFileList;
|
||||
|
||||
if (plist_p == NULL)
|
||||
return NULL;
|
||||
|
||||
// pointer math here seems wrong...
|
||||
return &mDarkStatus[plist_p->mParam & 0x78];
|
||||
}
|
||||
|
||||
/* 80041330-80041370 .text getDarkMode__20dStage_roomControl_cFv */
|
||||
void dStage_roomControl_c::getDarkMode() {
|
||||
/* Nonmatching */
|
||||
u32 dStage_roomControl_c::getDarkMode() {
|
||||
dStage_roomStatus_c * pRoomStatus = &mStatus[mStayNo];
|
||||
dStage_FileList_dt_c* plist_p = pRoomStatus->mpFileList;
|
||||
|
||||
u8 mode = 0;
|
||||
if (plist_p != NULL && (plist_p->mParam & 1) != 0)
|
||||
mode = 1;
|
||||
return mode;
|
||||
}
|
||||
|
||||
/* 80041370-800413D4 .text createMemoryBlock__20dStage_roomControl_cFiUl */
|
||||
@@ -1201,8 +1220,25 @@ void dStage_playerInitIkada(fopAcM_prm_class*, void*) {
|
||||
}
|
||||
|
||||
/* 800419D0-80041AEC .text dStage_chkPlayerId__Fii */
|
||||
void dStage_chkPlayerId(int, int) {
|
||||
/* Nonmatching */
|
||||
u32 dStage_chkPlayerId(int playerId, int room_no) {
|
||||
stage_actor_class * player;
|
||||
|
||||
if (room_no == -1) {
|
||||
player = dComIfGp_getStage().getPlayer();
|
||||
} else {
|
||||
JUT_ASSERT(0x689, 0 <= room_no && room_no < 64);
|
||||
player = dComIfGp_roomControl_getStatusRoomDt(room_no)->getPlayer();
|
||||
}
|
||||
|
||||
if (player == NULL)
|
||||
return FALSE;
|
||||
|
||||
stage_actor_data_class * actor = player->m_entries;
|
||||
for (int i = 0; i < player->num; i++, actor++)
|
||||
if ((u8)actor->mAngle.z == playerId)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 80041AF4-80041E84 .text dStage_playerInit__FP11dStage_dt_cPviPv */
|
||||
@@ -1509,8 +1545,20 @@ int dStage_tgscInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) {
|
||||
}
|
||||
|
||||
/* 8004259C-80042628 .text dStage_roomReadInit__FP11dStage_dt_cPviPv */
|
||||
int dStage_roomReadInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) {
|
||||
/* Nonmatching */
|
||||
int dStage_roomReadInit(dStage_dt_c* i_stage, void* i_data, int i_num, void* i_file) {
|
||||
// logic is bad
|
||||
dStage_nodeHeader* room_info = (dStage_nodeHeader*)(i_data);
|
||||
roomRead_class* pRoom = (roomRead_class*)room_info->m_offset;
|
||||
i_stage->setRoom(pRoom);
|
||||
|
||||
roomRead_data_class ** ppEntry = pRoom->m_entries;
|
||||
for (s32 i = 0; i < room_info->m_entryNum; i++, ppEntry++) {
|
||||
(u8*)(*ppEntry) = (u8*)(i_file) + (u32)ppEntry;
|
||||
roomRead_data_class * pEntry = *ppEntry;
|
||||
pEntry->field_0x4 = (u8*)(i_file) + ((u32)pEntry->field_0x4);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80042628-80042658 .text dStage_roomRead_dt_c_GetReverbStage__FR14roomRead_classi */
|
||||
@@ -1552,7 +1600,8 @@ int dStage_soundInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) {
|
||||
|
||||
/* 80042814-80042848 .text dStage_eventInfoInit__FP11dStage_dt_cPviPv */
|
||||
int dStage_eventInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, void*) {
|
||||
/* Nonmatching */
|
||||
i_stage->setEventInfo((dStage_EventInfo_c*)((char*)i_data + 4));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80042848-8004287C .text dStage_floorInfoInit__FP11dStage_dt_cPviPv */
|
||||
@@ -2075,7 +2124,7 @@ int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no) {
|
||||
scls = dComIfGp_getStageSclsInfo();
|
||||
} else {
|
||||
JUT_ASSERT(4192, 0 <= room_no && room_no < 64);
|
||||
scls = dComIfGp_roomControl_getStatusRoomDt(room_no)->mRoomDt.getSclsInfo();
|
||||
scls = dComIfGp_roomControl_getStatusRoomDt(room_no)->getSclsInfo();
|
||||
}
|
||||
|
||||
if (scls == NULL) {
|
||||
|
||||
Reference in New Issue
Block a user