diff --git a/include/d/d_ovlp_fade4.h b/include/d/d_ovlp_fade4.h new file mode 100644 index 000000000..796eca97d --- /dev/null +++ b/include/d/d_ovlp_fade4.h @@ -0,0 +1,85 @@ +#ifndef D_OVLP_FADE4_H +#define D_OVLP_FADE4_H + +#include "d/d_drawlist.h" +#include "f_op/f_op_overlap_mng.h" + +class dDlst_snapShot2_c : public dDlst_base_c { +public: + ~dDlst_snapShot2_c() {} + void draw(); + + /* 0x04 */ void* field_0x4; + /* 0x08 */ u16 field_0x8; + /* 0x0A */ u16 field_0xa; +}; + +class dDlst_2Dt_Sp_c : public dDlst_base_c { +public: + ~dDlst_2Dt_Sp_c() {} + void draw(); + void init(ResTIMG*, f32, f32, f32, f32, _GXColor); + + /* 0x04 */ GXTexObj field_0x4; + /* 0x24 */ ResTIMG* field_0x24; + /* 0x28 */ void* field_0x28; + /* 0x2C */ u32 field_0x2c; + /* 0x30 */ u32 field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ f32 field_0x38; + /* 0x3C */ f32 field_0x3c; + /* 0x40 */ f32 field_0x40; + /* 0x44 */ GXColor field_0x44; + /* 0x48 */ f32 field_0x48; +}; + +class dDlst_2DtEff1_c : public dDlst_base_c { +public: + ~dDlst_2DtEff1_c() {} + void init(_GXColor); + void draw(); + + /* 0x004 */ f32 field_0x4; + /* 0x008 */ u8 field_0x8[0xC - 0x8]; + /* 0x00C */ dDlst_snapShot2_c field_0xc; + /* 0x018 */ dDlst_2Dt_Sp_c field_0x18; + /* 0x064 */ dDlst_snapShot2_c field_0x64; + /* 0x070 */ dDlst_2Dt_Sp_c field_0x70; + /* 0x0BC */ dDlst_snapShot2_c field_0xbc; + /* 0x0C8 */ dDlst_2Dt_Sp_c field_0xc8; + /* 0x114 */ short field_0x114; + /* 0x118 */ short field_0x118; +}; + +class dOvlpFd4_c : public overlap_task_class { +public: + dOvlpFd4_c(); + void drawFadeOut(); + void drawFadeIn(); + void execFirstSnap(); + void execFadeOut(); + void execNextSnap(); + void execFadeIn(); + + /* 0x0CC */ void (dOvlpFd4_c::*field_0xcc)(); + /* 0x0D8 */ void (dOvlpFd4_c::*field_0xd8)(); + /* 0x0E4 */ dDlst_snapShot2_c field_0xe4; + /* 0x0F0 */ dDlst_snapShot2_c field_0xf0; + /* 0x0FC */ dDlst_2Dt_Sp_c field_0xfc; + /* 0x148 */ dDlst_2Dt_Sp_c field_0x148; + /* 0x194 */ dDlst_2DtEff1_c field_0x194; + /* 0x2AC */ u8 field_0x2ac; + /* 0x2AD */ u8 field_0x2ad; + /* 0x2AE */ u8 field_0x2ae; + /* 0x2B0 */ short field_0x2b0; + /* 0x2B4 */ f32 field_0x2b4; + /* 0x2B8 */ u8 field_0x2b8[0x2BC - 0x2B8]; + /* 0x2BC */ f32 field_0x2bc; + /* 0x2C0 */ u8 field_0x2c0; + /* 0x2C1 */ u8 field_0x2c1; + /* 0x2C2 */ u8 field_0x2c2[0x2C8 - 0x2C2]; + /* 0x2C8 */ f32 field_0x2c8; + /* 0x2CC */ u8 field_0x2cc; +}; + +#endif /* D_OVLP_FADE4_H */ diff --git a/src/d/d_ovlp_fade4.cpp b/src/d/d_ovlp_fade4.cpp index d396e1ccb..2d6e5e90c 100644 --- a/src/d/d_ovlp_fade4.cpp +++ b/src/d/d_ovlp_fade4.cpp @@ -3,8 +3,12 @@ // Translation Unit: d_ovlp_fade4.cpp // -#include "d_ovlp_fade4.h" -#include "dolphin/types.h" +#include "d/d_ovlp_fade4.h" +#include "d/d_com_inf_game.h" +#include "d/d_procname.h" +#include "f_op/f_op_overlap.h" +#include "m_Do/m_Do_graphic.h" +#include "new.h" /* 80224390-80224484 .text init__15dDlst_2DtEff1_cF8_GXColor */ void dDlst_2DtEff1_c::init(_GXColor) { @@ -22,12 +26,12 @@ void dDlst_snapShot2_c::draw() { } /* 80224748-80224884 .text dDlst_setResTimgObj__FPC7ResTIMGP9_GXTexObjPvUlUl */ -void dDlst_setResTimgObj(const ResTIMG*, _GXTexObj*, void*, unsigned long, unsigned long) { +void dDlst_setResTimgObj(const ResTIMG*, _GXTexObj*, void*, u32, u32) { /* Nonmatching */ } /* 80224884-802249C4 .text cnvAddress__FffPfPf */ -void cnvAddress(float, float, float*, float*) { +void cnvAddress(f32, f32, f32*, f32*) { /* Nonmatching */ } @@ -37,13 +41,35 @@ void dDlst_2Dt_Sp_c::draw() { } /* 80224CC4-80224DBC .text init__14dDlst_2Dt_Sp_cFP7ResTIMGffff8_GXColor */ -void dDlst_2Dt_Sp_c::init(ResTIMG*, float, float, float, float, _GXColor) { +void dDlst_2Dt_Sp_c::init(ResTIMG*, f32, f32, f32, f32, _GXColor) { /* Nonmatching */ } /* 80224DBC-80224F98 .text __ct__10dOvlpFd4_cFv */ dOvlpFd4_c::dOvlpFd4_c() { /* Nonmatching */ + field_0x2ac = 1; + field_0xcc = &dOvlpFd4_c::execFirstSnap; + field_0xd8 = &dOvlpFd4_c::drawFadeOut; + if (mBase.mProcName == PROC_OVERLAP4) { + field_0xfc.init(mDoGph_gInf_c::mFrameBufferTimg, 0.0f, 0.0f, 640.0f, 480.0f, g_saftyWhiteColor); + } else { + GXColor tmp = {0, 0, 0, 0}; + field_0xfc.init(mDoGph_gInf_c::mFrameBufferTimg, 0.0f, 0.0f, 640.0f, 480.0f, tmp); + } + field_0x148.init(mDoGph_gInf_c::mFrameBufferTimg, 0.0f, 0.0f, 640.0f, 480.0f, g_whiteColor); + field_0xe4.field_0x4 = mDoGph_gInf_c::mFrameBufferTex; + field_0xe4.field_0x8 = 640; + field_0xe4.field_0xa = 480; + field_0xf0.field_0x4 = mDoGph_gInf_c::mFrameBufferTex; + field_0xf0.field_0x8 = 640; + field_0xf0.field_0xa = 480; + field_0x194.init(g_saftyWhiteColor); + dComIfGp_2dShowOff(); + field_0x2b0 = 2; + field_0x2ae = 39; + field_0x2b4 = 0.0f; + field_0x2ad = 0; } /* 80224F98-80225060 .text drawFadeOut__10dOvlpFd4_cFv */ @@ -77,42 +103,68 @@ void dOvlpFd4_c::execFadeIn() { } /* 802255F4-80225658 .text dOvlpFd4_Draw__FP10dOvlpFd4_c */ -void dOvlpFd4_Draw(dOvlpFd4_c*) { - /* Nonmatching */ +s32 dOvlpFd4_Draw(dOvlpFd4_c* i_this) { + void (dOvlpFd4_c::*tmp)() = i_this->field_0xd8; + if (tmp) { + (i_this->*i_this->field_0xd8)(); + } + return 1; } /* 80225658-80225684 .text dOvlpFd4_Execute__FP10dOvlpFd4_c */ -void dOvlpFd4_Execute(dOvlpFd4_c*) { - /* Nonmatching */ +s32 dOvlpFd4_Execute(dOvlpFd4_c* i_this) { + (i_this->*i_this->field_0xcc)(); + return 1; } /* 80225684-8022568C .text dOvlpFd4_IsDelete__FP10dOvlpFd4_c */ -void dOvlpFd4_IsDelete(dOvlpFd4_c*) { - /* Nonmatching */ +s32 dOvlpFd4_IsDelete(dOvlpFd4_c*) { + return 1; } /* 8022568C-80225694 .text dOvlpFd4_Delete__FP10dOvlpFd4_c */ -void dOvlpFd4_Delete(dOvlpFd4_c*) { - /* Nonmatching */ +s32 dOvlpFd4_Delete(dOvlpFd4_c*) { + return 1; } /* 80225694-802256C0 .text dOvlpFd4_Create__FPv */ -void dOvlpFd4_Create(void*) { - /* Nonmatching */ +s32 dOvlpFd4_Create(void* i_this) { + new (i_this) dOvlpFd4_c(); + return 4; } -/* 802256C0-80225810 .text __dt__15dDlst_2DtEff1_cFv */ -dDlst_2DtEff1_c::~dDlst_2DtEff1_c() { - /* Nonmatching */ -} +overlap_method_class l_dOvlpFd4_Method = { + (process_method_func)dOvlpFd4_Create, + (process_method_func)dOvlpFd4_Delete, + (process_method_func)dOvlpFd4_Execute, + (process_method_func)dOvlpFd4_IsDelete, + (process_method_func)dOvlpFd4_Draw, +}; -/* 80225810-8022586C .text __dt__14dDlst_2Dt_Sp_cFv */ -dDlst_2Dt_Sp_c::~dDlst_2Dt_Sp_c() { - /* Nonmatching */ -} - -/* 8022586C-802258C8 .text __dt__17dDlst_snapShot2_cFv */ -dDlst_snapShot2_c::~dDlst_snapShot2_c() { - /* Nonmatching */ -} +overlap_process_profile_definition g_profile_OVERLAP4 = { + fpcLy_ROOT_e, + 2, + fpcPi_CURRENT_e, + PROC_OVERLAP4, + &g_fpcLf_Method.mBase, + sizeof(dOvlpFd4_c), + 0, + 0, + &g_fopOvlp_Method, + 0x1E5, + &l_dOvlpFd4_Method, +}; +overlap_process_profile_definition g_profile_OVERLAP5 = { + fpcLy_ROOT_e, + 2, + fpcPi_CURRENT_e, + PROC_OVERLAP5, + &g_fpcLf_Method.mBase, + sizeof(dOvlpFd4_c), + 0, + 0, + &g_fopOvlp_Method, + 0x1E6, + &l_dOvlpFd4_Method, +};