diff --git a/include/d/d_ovlp_fade2.h b/include/d/d_ovlp_fade2.h new file mode 100644 index 000000000..3a4fc3711 --- /dev/null +++ b/include/d/d_ovlp_fade2.h @@ -0,0 +1,28 @@ +#ifndef D_OVLP_FADE2_H +#define D_OVLP_FADE2_H + +#include "d/d_drawlist.h" +#include "f_op/f_op_overlap_mng.h" + +class dOvlpFd2_dlst_c : public dDlst_base_c { +public: + ~dOvlpFd2_dlst_c() {} + void draw(); +}; + +class dOvlpFd2_c : public overlap_task_class { +public: + dOvlpFd2_c(); + void execFirstSnap(); + void execFadeOut(); + void execNextSnap(); + void execFadeIn(); + + /* 0x0CC */ void (dOvlpFd2_c::*field_0xcc)(); + /* 0x0D8 */ dDlst_snapShot_c field_0xd8; + /* 0x0DC */ dOvlpFd2_dlst_c field_0xdc; + /* 0x0E0 */ u8 field_0xe0[0x11D - 0xE0]; + /* 0x11D */ u8 field_0x11d; +}; + +#endif /* D_OVLP_FADE2_H */ diff --git a/src/d/d_ovlp_fade2.cpp b/src/d/d_ovlp_fade2.cpp index c4daa8e6f..8d479e7df 100644 --- a/src/d/d_ovlp_fade2.cpp +++ b/src/d/d_ovlp_fade2.cpp @@ -3,8 +3,11 @@ // Translation Unit: d_ovlp_fade2.cpp // -#include "d_ovlp_fade2.h" -#include "dolphin/types.h" +#include "d/d_ovlp_fade2.h" +#include "d/d_com_inf_game.h" +#include "d/d_procname.h" +#include "f_op/f_op_overlap.h" +#include "new.h" /* 802237F4-80223D20 .text draw__15dOvlpFd2_dlst_cFv */ void dOvlpFd2_dlst_c::draw() { @@ -13,7 +16,9 @@ void dOvlpFd2_dlst_c::draw() { /* 80223D20-80223D84 .text __ct__10dOvlpFd2_cFv */ dOvlpFd2_c::dOvlpFd2_c() { - /* Nonmatching */ + field_0xcc = &dOvlpFd2_c::execFirstSnap; + dComIfGp_2dShowOff(); + field_0x11d = 2; } /* 80223D84-80223E18 .text execFirstSnap__10dOvlpFd2_cFv */ @@ -42,32 +47,59 @@ void dOvlpFd2_Draw(dOvlpFd2_c*) { } /* 80224200-8022422C .text dOvlpFd2_Execute__FP10dOvlpFd2_c */ -void dOvlpFd2_Execute(dOvlpFd2_c*) { - /* Nonmatching */ +s32 dOvlpFd2_Execute(dOvlpFd2_c* i_this) { + (i_this->*i_this->field_0xcc)(); + return 1; } /* 8022422C-80224234 .text dOvlpFd2_IsDelete__FP10dOvlpFd2_c */ -void dOvlpFd2_IsDelete(dOvlpFd2_c*) { - /* Nonmatching */ +s32 dOvlpFd2_IsDelete(dOvlpFd2_c*) { + return 1; } /* 80224234-8022423C .text dOvlpFd2_Delete__FP10dOvlpFd2_c */ -void dOvlpFd2_Delete(dOvlpFd2_c*) { - /* Nonmatching */ +s32 dOvlpFd2_Delete(dOvlpFd2_c*) { + return 1; } /* 8022423C-80224268 .text dOvlpFd2_Create__FPv */ -void dOvlpFd2_Create(void*) { - /* Nonmatching */ +s32 dOvlpFd2_Create(void* i_this) { + new (i_this) dOvlpFd2_c(); + return 4; } -/* 80224284-802242E0 .text __dt__15dOvlpFd2_dlst_cFv */ -dOvlpFd2_dlst_c::~dOvlpFd2_dlst_c() { - /* Nonmatching */ -} +overlap_method_class l_dOvlpFd2_Method = { + (process_method_func)dOvlpFd2_Create, + (process_method_func)dOvlpFd2_Delete, + (process_method_func)dOvlpFd2_Execute, + (process_method_func)dOvlpFd2_IsDelete, + (process_method_func)dOvlpFd2_Draw, +}; -/* 802242E0-8022433C .text __dt__16dDlst_snapShot_cFv */ -dDlst_snapShot_c::~dDlst_snapShot_c() { - /* Nonmatching */ -} +overlap_process_profile_definition g_profile_OVERLAP2 = { + fpcLy_ROOT_e, + 2, + fpcPi_CURRENT_e, + PROC_OVERLAP2, + &g_fpcLf_Method.mBase, + sizeof(dOvlpFd2_c), + 0, + 0, + &g_fopOvlp_Method, + 0x1E3, + &l_dOvlpFd2_Method, +}; +overlap_process_profile_definition g_profile_OVERLAP3 = { + fpcLy_ROOT_e, + 2, + fpcPi_CURRENT_e, + PROC_OVERLAP3, + &g_fpcLf_Method.mBase, + sizeof(dOvlpFd2_c), + 0, + 0, + &g_fopOvlp_Method, + 0x1E4, + &l_dOvlpFd2_Method, +};