From e7a2f4c20953fa266633a4945c064483041c57bd Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 9 Oct 2023 17:50:46 -0400 Subject: [PATCH] Add sea headers --- include/d/actor/d_a_sea.h | 115 ++++++++++++++++++++++++++++++++++++++ src/d/actor/d_a_sea.cpp | 31 ++++------ src/d/d_bg_s_acch.cpp | 4 +- 3 files changed, 127 insertions(+), 23 deletions(-) create mode 100644 include/d/actor/d_a_sea.h diff --git a/include/d/actor/d_a_sea.h b/include/d/actor/d_a_sea.h new file mode 100644 index 000000000..39f4070ea --- /dev/null +++ b/include/d/actor/d_a_sea.h @@ -0,0 +1,115 @@ +#ifndef D_A_SEA_H +#define D_A_SEA_H + +#include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "JSystem/J3DGraphBase/J3DPacket.h" +#include "JSystem/JGeometry.h" + +class daSea_WaterHeightInfo_Mng { +public: + /* 0x00 */ u8 mHeight[9][9]; + /* 0x51 */ u8 m51[0x54 - 0x51]; + /* 0x54 */ /* vtable */ + +public: + void Pos2Index(f32, f32*); + void GetHeight(f32, f32); + void GetHeight(int, int); + void GetArea(int, int, f32*, f32*, f32*, f32*); + void SetInf(); + virtual ~daSea_WaterHeightInfo_Mng() {} +}; +STATIC_ASSERT(sizeof(daSea_WaterHeightInfo_Mng) == 0x58); + +struct daSea_WaveInfo__Table { + /* 0x00 */ f32 mHeight; + /* 0x04 */ f32 mKm; + /* 0x08 */ s16 mPhase; + /* 0x0A */ u8 m0A[0x0C - 0x0A]; + /* 0x0C */ f32 mScaleX; + /* 0x10 */ f32 mScaleZ; + /* 0x14 */ int mCounterMax; +}; + +class daSea_WaveInfo { +public: + /* 0x00 */ daSea_WaveInfo__Table* mWaveInfoTable; + /* 0x04 */ f32 m04[4]; + /* 0x14 */ int mCounters[4]; + /* 0x24 */ f32 mCurScale; + /* 0x28 */ /* vtable */ + +public: + daSea_WaveInfo(); + virtual ~daSea_WaveInfo(); + void AddCounter(); + void GetRatio(int); + void GetKm(int); + void GetScale(f32); +}; + +class daSea_packet_c : public J3DPacket { +public: + void create(cXyz&); + void CleanUp(); + daSea_packet_c(); + void SetFlat(); + void ClrFlat(); + void CalcFlatInterTarget(cXyz&); + void CalcFlatInter(); + void SetCullStopFlag(); + void CheckRoomChange(); + void execute(cXyz&); + void draw(); + ~daSea_packet_c(); + +public: + /* 0x010 */ daSea_WaterHeightInfo_Mng mWaterHeightMgr; + /* 0x068 */ daSea_WaveInfo mWaveInfo; + /* 0x094 */ JGeometry::TVec3 mPlayerPos; + /* 0x0A0 */ int mIdxX; + /* 0x0A4 */ int mIdxZ; + /* 0x0A8 */ f32 mFlatInter; + /* 0x0AC */ f32 mFlatTarget; + /* 0x0B0 */ f32 mFlatInterCounter; + /* 0x0B4 */ _GXTexObj mTexSea0; + /* 0x0D4 */ _GXTexObj mTexSea1; + /* 0x0F4 */ _GXTexObj mpTexWyurayura; + /* 0x114 */ f32 mDrawMinX; + /* 0x118 */ f32 mDrawMinZ; + /* 0x11C */ f32 mDrawMaxX; + /* 0x120 */ f32 mDrawMaxZ; + /* 0x124 */ float* mpHeightTable; + /* 0x128 */ JGeometry::TVec3 mCurPos; + /* 0x134 */ JGeometry::TVec3* mpDrawVtx; + /* 0x138 */ u8 mbIsDelete; + /* 0x139 */ u8 mCullStopFlag; + /* 0x13A */ u8 m13A; + /* 0x13B */ u8 m13B[0x13C - 0x13B]; + /* 0x13C */ int mRoomNo; + /* 0x140 */ int mFlags; + /* 0x144 */ s16 mAnimCounter; + /* 0x146 */ u8 field_146[0x148 - 0x146]; + + static f32 BASE_HEIGHT; +}; + +class sea_class; + +void get_wave_max(int); +void calcMinMax(int, f32*, f32*); +void daSea_Init(); +void daSea_ChkAreaBeforePos(f32, f32); +bool daSea_ChkArea(f32, f32); +f32 daSea_calcWave(f32, f32); +void daSea_GetPoly(void*, void (*)(void*, cXyz&, cXyz&, cXyz&), const cXyz&, const cXyz&); +void daSea_execute(cXyz&); +void daSea_Draw(sea_class*); +void daSea_Execute(sea_class*); +void daSea_IsDelete(sea_class*); +void daSea_Delete(sea_class*); +void CheckCreateHeap(fopAc_ac_c*); +void daSea_Create(fopAc_ac_c*); + +#endif /* D_A_SEA_H */ diff --git a/src/d/actor/d_a_sea.cpp b/src/d/actor/d_a_sea.cpp index d960e1bc6..6956e07d4 100644 --- a/src/d/actor/d_a_sea.cpp +++ b/src/d/actor/d_a_sea.cpp @@ -3,16 +3,18 @@ // Translation Unit: d_a_sea.cpp // -#include "d_a_sea.h" +#include "d/actor/d_a_sea.h" #include "dolphin/types.h" +f32 daSea_packet_c::BASE_HEIGHT = 1.0; + /* 8015B0A4-8015B0FC .text Pos2Index__25daSea_WaterHeightInfo_MngFfPf */ -void daSea_WaterHeightInfo_Mng::Pos2Index(float, float*) { +void daSea_WaterHeightInfo_Mng::Pos2Index(f32, f32*) { /* Nonmatching */ } /* 8015B0FC-8015B164 .text GetHeight__25daSea_WaterHeightInfo_MngFff */ -void daSea_WaterHeightInfo_Mng::GetHeight(float, float) { +void daSea_WaterHeightInfo_Mng::GetHeight(f32, f32) { /* Nonmatching */ } @@ -27,12 +29,12 @@ void daSea_WaterHeightInfo_Mng::GetHeight(int, int) { } /* 8015B288-8015B2D0 .text calcMinMax__FiPfPf */ -void calcMinMax(int, float*, float*) { +void calcMinMax(int, f32*, f32*) { /* Nonmatching */ } /* 8015B2D0-8015B328 .text GetArea__25daSea_WaterHeightInfo_MngFiiPfPfPfPf */ -void daSea_WaterHeightInfo_Mng::GetArea(int, int, float*, float*, float*, float*) { +void daSea_WaterHeightInfo_Mng::GetArea(int, int, f32*, f32*, f32*, f32*) { /* Nonmatching */ } @@ -67,7 +69,7 @@ void daSea_WaveInfo::GetKm(int) { } /* 8015B54C-8015B56C .text GetScale__14daSea_WaveInfoFf */ -void daSea_WaveInfo::GetScale(float) { +void daSea_WaveInfo::GetScale(f32) { /* Nonmatching */ } @@ -112,17 +114,17 @@ void daSea_Init() { } /* 8015BAF8-8015BB60 .text daSea_ChkAreaBeforePos__Fff */ -void daSea_ChkAreaBeforePos(float, float) { +void daSea_ChkAreaBeforePos(f32, f32) { /* Nonmatching */ } /* 8015BB60-8015BBFC .text daSea_ChkArea__Fff */ -void daSea_ChkArea(float, float) { +bool daSea_ChkArea(f32, f32) { /* Nonmatching */ } /* 8015BBFC-8015BDB0 .text daSea_calcWave__Fff */ -void daSea_calcWave(float, float) { +f32 daSea_calcWave(f32, f32) { /* Nonmatching */ } @@ -186,18 +188,7 @@ void daSea_Create(fopAc_ac_c*) { /* Nonmatching */ } -/* 8015D99C-8015D9E4 .text __dt__25daSea_WaterHeightInfo_MngFv */ -daSea_WaterHeightInfo_Mng::~daSea_WaterHeightInfo_Mng() { - /* Nonmatching */ -} - /* 8015D9E4-8015DA70 .text __dt__14daSea_packet_cFv */ daSea_packet_c::~daSea_packet_c() { /* Nonmatching */ } - -/* 8015DAAC-8015DAF4 .text __dt__8cM2dGBoxFv */ -cM2dGBox::~cM2dGBox() { - /* Nonmatching */ -} - diff --git a/src/d/d_bg_s_acch.cpp b/src/d/d_bg_s_acch.cpp index 108f8fcee..0e63f4693 100644 --- a/src/d/d_bg_s_acch.cpp +++ b/src/d/d_bg_s_acch.cpp @@ -9,9 +9,7 @@ #include "JSystem/JUtility/JUTAssert.h" #include "f_op/f_op_actor_mng.h" #include "d/d_com_inf_game.h" - -bool daSea_ChkArea(f32, f32); -f32 daSea_calcWave(f32, f32); +#include "d/actor/d_a_sea.h" #define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1)); #define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f);