From c1d05bc46c5227958324c6b814cf1ac53046c7af Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Thu, 7 Jan 2021 22:56:08 -0500 Subject: [PATCH] main01 attempt, fix dcomifg_play_c members --- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 2 + .../JKernel/JKRSolidHeap/JKRSolidHeap.h | 4 + include/SComponent/c_cc_d/c_cc_d.h | 8 +- include/d/d_attention/d_attention.h | 5 + include/d/d_bg/d_bg_s/d_bg_s.h | 7 +- .../d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h | 3 +- include/d/d_cc/d_cc_mass_s/d_cc_mass_s.h | 38 ++--- include/d/d_cc/d_cc_s/d_cc_s.h | 6 +- .../d/d_com/d_com_inf_game/d_com_inf_game.h | 45 +++--- include/d/d_drawlist/d_drawlist.h | 9 +- include/d/d_event/d_event/d_event.h | 4 + include/d/d_event/d_event_data/d_event_data.h | 3 +- .../d_event/d_event_manager/d_event_manager.h | 2 + include/d/d_resource/d_resource.h | 2 + include/d/d_stage/d_stage.h | 18 +++ include/d/d_vibration/d_vibration.h | 2 + include/functions.h | 3 +- .../m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h | 14 +- include/m_Do/m_Do_ext/m_Do_ext.h | 12 ++ include/m_Do/m_Do_main/m_Do_main.h | 30 ++-- include/variables.h | 5 +- src/m_Do/m_Do_main.cpp | 140 ++++++++++++------ 22 files changed, 253 insertions(+), 109 deletions(-) diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index bebf8037431..e8f6f772985 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -3,6 +3,7 @@ #include "global.h" +#pragma pack(push, 1) class J3DFrameCtrl { public: private: @@ -15,5 +16,6 @@ private: float field_0xc; float field_0x10; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h b/include/JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h index 671becc5528..4adf468423a 100644 --- a/include/JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h +++ b/include/JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h @@ -57,4 +57,8 @@ public: static JKRSolidHeap* create(u32, JKRHeap*, bool); }; +extern "C" { + JKRSolidHeap* JKRSolidHeap_NS_create(u32 size, JKRHeap* heap, bool use_default_error_handler); +} + #endif diff --git a/include/SComponent/c_cc_d/c_cc_d.h b/include/SComponent/c_cc_d/c_cc_d.h index 593c9e2c028..441dbab97b2 100644 --- a/include/SComponent/c_cc_d/c_cc_d.h +++ b/include/SComponent/c_cc_d/c_cc_d.h @@ -7,15 +7,15 @@ class cCcD_ShapeAttr { public: private: - cM3dGAab cm3dgaab; - void* vtable; + /* 0x00 */ cM3dGAab cm3dgaab; + /* 0x1C */ void* vtable; }; class cCcD_CpsAttr { public: private: - cCcD_ShapeAttr cccd_shapeattr; - cM3dGCps cm3dgcps; + /* 0x00 */ cCcD_ShapeAttr cccd_shapeattr; + /* 0x20 */ cM3dGCps cm3dgcps; }; class cCcD_CylAttr { diff --git a/include/d/d_attention/d_attention.h b/include/d/d_attention/d_attention.h index 55ff2b944b8..2981266f3b1 100644 --- a/include/d/d_attention/d_attention.h +++ b/include/d/d_attention/d_attention.h @@ -59,6 +59,7 @@ private: float field_0x8; }; +#pragma pack(push, 1) class dAttList_c { public: private: @@ -66,7 +67,9 @@ private: cSAngle angle; u8 field_0xa[10]; }; +#pragma pack(pop) +#pragma pack(push, 1) class dAttDraw_c { u8 field_0x0; u8 field_0x1; @@ -91,6 +94,8 @@ class dAttDraw_c { mDoExt_brkAnm brkAnm3; mDoExt_btkAnm btkAnm2; }; +#pragma pack(pop) + class dAttDraw_CallBack_c { mDoExt_McaMorfCallBack1_c mDoExt_McaMorfCallback; diff --git a/include/d/d_bg/d_bg_s/d_bg_s.h b/include/d/d_bg/d_bg_s/d_bg_s.h index d6adcc01769..f8c4c2f1bf1 100644 --- a/include/d/d_bg/d_bg_s/d_bg_s.h +++ b/include/d/d_bg/d_bg_s/d_bg_s.h @@ -3,7 +3,7 @@ #include "d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h" #include "global.h" - +#pragma pack(push,1) class cBgS_ChkElm { /* 0x00 */ dBgW_Base* bgw_base_pointer; /* 0x04 */ u8 used; @@ -12,10 +12,13 @@ class cBgS_ChkElm { /* 0x0C */ void* actor_pointer; /* 0x10 */ u32 field_0x10; }; +#pragma pack(pop) +#pragma pack(push,1) class cBgS { /* 0x0000 */ cBgS_ChkElm cbgs_elements[256]; }; +#pragma pack(pop) class dBgS_HIO { /* 0x00 */ u8 vtable[4]; @@ -29,6 +32,7 @@ class dBgS_HIO { /* 0x30 */ u8 field_0x30[4]; }; +#pragma pack(push,1) class dBgS { public: private: @@ -36,4 +40,5 @@ private: /* 0x1400 */ u8 vtable[8]; /* 0x1408 */ dBgS_HIO dbgs_hio; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h b/include/d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h index 200633a60bc..877d650297c 100644 --- a/include/d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h +++ b/include/d/d_bg/d_bg_w/d_bg_w_base/d_bg_w_base.h @@ -2,7 +2,7 @@ #define __D_BG_W_BASE_H_ #include "global.h" - +#pragma pack(push,1) class dBgW_Base { public: private: @@ -16,5 +16,6 @@ private: s16 field_0xc; s16 field_0xe; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/d/d_cc/d_cc_mass_s/d_cc_mass_s.h b/include/d/d_cc/d_cc_mass_s/d_cc_mass_s.h index bcb11c8e36c..be138ec0cd0 100644 --- a/include/d/d_cc/d_cc_mass_s/d_cc_mass_s.h +++ b/include/d/d_cc/d_cc_mass_s/d_cc_mass_s.h @@ -12,23 +12,23 @@ private: class dCcMassS_Mng { public: private: - cCcD_DivideArea cccd_dividearea; - u8 field_0x20[36]; - dCcMassS_Obj dccmasss_obj; - u8 field_0x64[292]; - dCcMassS_Obj dccmasss_obj2; - u8 field_0x1a8[32]; - cCcD_CylAttr cccd_cylattr; - u8 field_0x200[2]; - u8 field_0x202; - u8 field_0x203; - float field_0x204; - float field_0x208; - float field_0x20c; - float field_0x210; - float field_0x214; - float field_0x218; - u8 field_0x21c[8]; - cCcD_CpsAttr cccd_cpsattr; - cCcD_DivideInfo cccd_divideinfo; + /* 0x0000 */ cCcD_DivideArea cccd_dividearea; + /* 0x0020 */ u8 field_0x20[36]; + /* 0x0044 */ dCcMassS_Obj dccmasss_obj; + /* 0x0064 */ u8 field_0x64[292]; + /* 0x0188 */ dCcMassS_Obj dccmasss_obj2; + /* 0x01A8 */ u8 field_0x1a8[32]; + /* 0x01C8 */ cCcD_CylAttr cccd_cylattr; + /* 0x0200 */ u8 field_0x200[2]; + /* 0x0202 */ u8 field_0x202; + /* 0x0203 */ u8 field_0x203; + /* 0x0204 */ float cam_x_pos; + /* 0x0208 */ float cam_y_pos; + /* 0x020C */ float cam_z_pos; + /* 0x0210 */ float field_0x210; + /* 0x0214 */ float field_0x214; + /* 0x0218 */ float field_0x218; + /* 0x021C */ u8 field_0x21c[8]; + /* 0x0224 */ cCcD_CpsAttr cccd_cpsattr; + /* 0x0288 */ cCcD_DivideInfo cccd_divideinfo; }; \ No newline at end of file diff --git a/include/d/d_cc/d_cc_s/d_cc_s.h b/include/d/d_cc/d_cc_s/d_cc_s.h index 3ba173d647d..b577cdd54fd 100644 --- a/include/d/d_cc/d_cc_s/d_cc_s.h +++ b/include/d/d_cc/d_cc_s/d_cc_s.h @@ -8,9 +8,9 @@ class dCcS { public: private: - cCcS cccs; - u8 field_0x2834[36]; - dCcMassS_Mng dccmass_mng; + /* 0x0000 */ cCcS cccs; + /* 0x2834 */ u8 field_0x2834[36]; + /* 0x2858 */ dCcMassS_Mng dccmass_mng; }; #endif \ No newline at end of file diff --git a/include/d/d_com/d_com_inf_game/d_com_inf_game.h b/include/d/d_com/d_com_inf_game/d_com_inf_game.h index 288b58423b4..3f198d13d54 100644 --- a/include/d/d_com/d_com_inf_game/d_com_inf_game.h +++ b/include/d/d_com/d_com_inf_game/d_com_inf_game.h @@ -13,6 +13,7 @@ #include "d/d_stage/d_stage.h" #include "d/d_vibration/d_vibration.h" +#pragma pack(push,1) struct item_func { float hearts; // bf80 u32 rupees; // bf84 @@ -33,7 +34,9 @@ struct item_func { s16 arrows; // bfb4 s16 seeds; // bfb6 }; +#pragma pack(pop) +#pragma pack(push,1) class dComIfG_camera_info_class { public: private: @@ -41,7 +44,9 @@ private: cXyz field_0xc; cXyz field_0x18; }; +#pragma pack(pop) +#pragma pack(push,1) class dDlst_window_c { public: private: @@ -57,13 +62,15 @@ private: float scissor4; int camera_id; }; +#pragma pack(pop) +#pragma pack(push,1) class dComIfG_play_c { public: void ct(void); void init(void); u32 getNowVibration(); - dStage_roomControl_c& getRoomControl() { return room_control; } + dStage_roomControl_c& getRoomControl() { return mRoomControl; } item_func& getGiveItem() { return give_item; } u8& getUnkHeart() { return unk_heart; } void setUnkWarashibe1(u8 num) { field_0x4ec0[0x85] = num; } @@ -85,39 +92,39 @@ public: void setItemMaxLifeCount(short max) { give_item.max_life += max; } void setOxygen(long oxygen) { give_item.oxygen = oxygen; } void setMaxOxygen(long max) { give_item.max_oxygen = max; } - private: /* 0x00000 */ dBgS dbgs; - /* 0x0143C */ dCcS dccs; - /* 0x03F08 */ u8 field_0x3f08[0x16]; - /* 0x03F1E */ dStage_nextStage_c next_stage; + /* 0x0143C */ u8 field_0x143c[0x2A8C]; + /* 0x03EC8 */ dStage_startStage_c mStartStage; + /* 0x03ED5 */ u8 field_0x3ed5[0x49]; + /* 0x03F1E */ dStage_nextStage_c mNextStage; /* 0x03F2F */ u8 padding; - /* 0x03F30 */ dStage_stageDt_c stage_data; - /* 0x03F34 */ dStage_roomControl_c room_control; - /* 0x03FD8 */ dEvt_control_c event_control; + /* 0x03F30 */ dStage_stageDt_c mStageData; + /* 0x03F34 */ dStage_roomControl_c mRoomControl; + /* 0x03FD8 */ dEvt_control_c mEventControl; /* 0x0409C */ u8 field_0x409c[0x24]; - /* 0x040C0 */ dEvent_manager_c event_manager; + /* 0x040C0 */ dEvent_manager_c mEventManager; /* 0x0475B */ u8 field_0x475B[0x2D]; /* 0x04788 */ void* vtable; /* 0x0478C */ u8 field_0x478c[0x1C]; - /* 0x047A8 */ dAttDraw_c attention_draw; + /* 0x047A8 */ dAttDraw_c mAttentionDraw; /* 0x0490C */ u8 field_0x490c[0x1AC]; - /* 0x04AB8 */ dAttList_c attention_list1; + /* 0x04AB8 */ dAttList_c mAttentionList1; /* 0x04ACC */ u8 field_0x4acc[0x94]; - /* 0x04B60 */ dAttList_c attention_list2; + /* 0x04B60 */ dAttList_c mAttentionList2; /* 0x04B74 */ u8 field_0x4b74[0x44]; - /* 0x04BB8 */ dAttList_c attention_list3; + /* 0x04BB8 */ dAttList_c mAttentionList3; /* 0x04BCC */ u8 field_0x4bcc[0xBC]; /* 0x04c88 */ void* vtable2; /* 0x04C8C */ u8 field_0x4c8c[0x55]; /* 0x04CE1 */ u8 field_0x4ce1[0x37]; - /* 0x04D18 */ dVibration_c vibration; + /* 0x04D18 */ dVibration_c mVibration; /* 0x04DA8 */ u8 field_0x4da8[0x5C]; /* 0x04E04 */ u32 field_0x4e04; /* 0x04E08 */ u8 field_0x4e08[0x4]; /* 0x04E0C */ u8 field_0x4e0c[0x4]; - /* 0x04E10 */ dDlst_window_c draw_list_window; - /* 0x04ED4 */ dComIfG_camera_info_class camera_info; + /* 0x04E10 */ dDlst_window_c mDrawlistWindow; + /* 0x04ED4 */ dComIfG_camera_info_class mCameraInfo; /* 0x04E60 */ u8 field_0x4e60[0x28]; /* 0x04E88 */ item_func give_item; /* 0x04EC0 */ u8 field_0x4ec0[0xBE]; @@ -128,9 +135,11 @@ private: /* 0x05000 */ u32 field_0x5000; /* 0x05004 */ u32 field_0x5004; /* 0x05008 */ u8 field_0x5008[0x1C]; - /* 0x05024 */ u8 field_0x5024[8]; + /* 0x05024 */ u8 field_0x5024[0x8]; }; +#pragma pack(pop) +#pragma pack(push,1) class dComIfG_inf_c { public: // temp until we map the item short function names @@ -155,6 +164,7 @@ private: /* 0x00F28 */ u32 saveStartTime; /* 0x00F2C */ u32 field_0xf30; /* 0x00F30 */ u32 field_0xf34; + u8 unk[3]; /* 0x00F34 */ dComIfG_play_c play; /* 0x05F60 */ u8 field_0x5f60[0x10]; /* 0x05F70 */ dDlst_list_c draw_list_list; @@ -178,6 +188,7 @@ private: /* 0x1DE0A */ u8 unk33; /* 0x1DE0B */ u8 unk34[0x5]; // probably padding }; +#pragma pack(pop) extern dComIfG_inf_c g_dComIfG_gameInfo; diff --git a/include/d/d_drawlist/d_drawlist.h b/include/d/d_drawlist/d_drawlist.h index f9a50937f93..c7e818c8d2c 100644 --- a/include/d/d_drawlist/d_drawlist.h +++ b/include/d/d_drawlist/d_drawlist.h @@ -3,6 +3,7 @@ #include "dolphin/types.h" + class dDlst_FileInfo_c { public: void draw(void); @@ -11,10 +12,13 @@ public: private: }; +#pragma pack(push,1) class dDlst_peekZ_c { - u8 unk[4]; + u8 unk[7]; }; // actual size unknown!!! +#pragma pack(pop) +#pragma pack(push,1) class dDlst_list_c { public: static u32 mWipeColor; @@ -25,7 +29,8 @@ public: // private: /* 0x00000 */ u8 unk[0x16180]; /* 0x16180 */ dDlst_peekZ_c dlstPeekZ; - /* 0x16184 */ u8 unk_0x16194[0x1C]; + /* 0x16184 */ u8 unk_0x16194[0x1F]; }; // Size: 0x161A0 +#pragma pack(pop) #endif D_DRAWLIST_H_ diff --git a/include/d/d_event/d_event/d_event.h b/include/d/d_event/d_event/d_event.h index 049b2c9a47f..345dda57656 100644 --- a/include/d/d_event/d_event/d_event.h +++ b/include/d/d_event/d_event/d_event.h @@ -3,6 +3,7 @@ #include "dolphin/types.h" +#pragma pack(push,1) class dEvt_order_c { public: private: @@ -198,7 +199,9 @@ private: u8 field_0xbd; u8 field_0xbe; }; +#pragma pack(pop) +#pragma pack(push,1) class dEvt_control_c { public: void searchMapEventData(u8 param_1); @@ -208,5 +211,6 @@ private: dEvt_order_c event_order; u8 field_0xc3; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/d/d_event/d_event_data/d_event_data.h b/include/d/d_event/d_event_data/d_event_data.h index 6b487948db5..82f1ba25e27 100644 --- a/include/d/d_event/d_event_data/d_event_data.h +++ b/include/d/d_event/d_event_data/d_event_data.h @@ -8,7 +8,7 @@ public: private: u8 field_0x0[320]; }; - +#pragma pack(push,1) class dEvDtBase_c { public: private: @@ -22,5 +22,6 @@ private: u32 field_0x1c; u32 field_0x20; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/d/d_event/d_event_manager/d_event_manager.h b/include/d/d_event/d_event_manager/d_event_manager.h index 376785e4d2c..1fc7650f9bc 100644 --- a/include/d/d_event/d_event_manager/d_event_manager.h +++ b/include/d/d_event/d_event_manager/d_event_manager.h @@ -4,6 +4,7 @@ #include "d/d_event/d_event_data/d_event_data.h" #include "dolphin/types.h" +#pragma pack(push, 1) class dEvent_exception_c { public: private: @@ -14,6 +15,7 @@ private: u8 field_0x7; u32 field_0x8; }; +#pragma pack(pop) #pragma pack(push, 1) struct dEvent_manager_c { diff --git a/include/d/d_resource/d_resource.h b/include/d/d_resource/d_resource.h index 48ab4b9e249..0efd75d5310 100644 --- a/include/d/d_resource/d_resource.h +++ b/include/d/d_resource/d_resource.h @@ -7,6 +7,7 @@ #include "dolphin/types.h" #include "m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h" +#pragma pack(push,1) class dRes_info_c { public: private: @@ -22,6 +23,7 @@ private: // JKRSolidHeap* solid_heap; // void** resource_buffer; }; +#pragma pack(pop) struct J3DAnmBase {}; diff --git a/include/d/d_stage/d_stage.h b/include/d/d_stage/d_stage.h index 2c27b137ccd..d6770bbd2f7 100644 --- a/include/d/d_stage/d_stage.h +++ b/include/d/d_stage/d_stage.h @@ -2,18 +2,23 @@ #define __D_STAGE_H_ #include "global.h" +#pragma pack(push,1) class dStage_roomControl_c { public: private: u8 field_0x0[164]; }; +#pragma pack(pop) +#pragma pack(push,1) class dStage_stageDt_c { public: private: void* vtable; }; +#pragma pack(pop) +#pragma pack(push,1) class dStage_nextStage_c { public: private: @@ -35,5 +40,18 @@ private: u8 wipe; u8 wipe_speed; }; +#pragma pack(pop) + +#pragma pack(push,1) +class dStage_startStage_c { + public: + private: + /* 0x0 */ char mStage[8]; + /* 0x8 */ s16 mPoint; + /* 0xA */ s8 mRoomNo; + /* 0xB */ s8 mLayer; + /* 0xC */ s8 mDarkArea; +}; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/d/d_vibration/d_vibration.h b/include/d/d_vibration/d_vibration.h index 99ab56a990d..2a4b08ef0c9 100644 --- a/include/d/d_vibration/d_vibration.h +++ b/include/d/d_vibration/d_vibration.h @@ -3,6 +3,7 @@ #include "global.h" +#pragma pack(push,1) class dVibration_c { public: private: @@ -43,5 +44,6 @@ private: u32 field_0x88; u32 field_0x8c; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/functions.h b/include/functions.h index 5d1bbdd6c3b..dcfc37729b1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -108,7 +108,6 @@ void debug__Fv(void); void mDoAud_Execute(void); void fapGm_Execute(void); void mDoMemCd_Ctrl_c_NS_update(void); -void JKRSolidHeap_NS_create(void); void cDyl_InitAsync(void); void fopAcM_initManager(void); void fapGm_Create(void); @@ -319,7 +318,7 @@ void mDoAud_Execute(void); void fapGm_Execute(void); void mDoCPd_c_NS_read(void); void mDoMemCd_Ctrl_c_NS_update(void); -void JKRSolidHeap_NS_create(void); +//void JKRSolidHeap_NS_create(void); void cDyl_InitAsync(void); void fopAcM_initManager(void); void fapGm_Create(void); diff --git a/include/m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h b/include/m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h index b0b9db1f60a..2ef1db9bf08 100644 --- a/include/m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h +++ b/include/m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h @@ -3,6 +3,18 @@ #include "dolphin/types.h" -class mDoDVDThd_command_c {}; +class mDoDVDThd_command_c { + public: + + private: +}; + +class mDoDVDThd_callback_c { + public: + mDoDVDThd_callback_c(void *(void*),void*); + ~mDoDVDThd_callback_c(); + mDoDVDThd_command_c* create(void *(void*),void*); + mDoDVDThd_command_c* execute(); +}; #endif \ No newline at end of file diff --git a/include/m_Do/m_Do_ext/m_Do_ext.h b/include/m_Do/m_Do_ext/m_Do_ext.h index 127519655f9..538fc2b1b99 100644 --- a/include/m_Do/m_Do_ext/m_Do_ext.h +++ b/include/m_Do/m_Do_ext/m_Do_ext.h @@ -14,33 +14,42 @@ JKRExpHeap* mDoExt_getHostIOHeap(); JKRExpHeap* mDoExt_getCommandHeap(); } +#pragma pack(push, 1) class mDoExt_baseAnm { public: private: J3DFrameCtrl frame_control; }; +#pragma pack(pop) +#pragma pack(push, 1) class mDoExt_btkAnm { public: private: mDoExt_baseAnm base_anm; u32 field_0x14; }; +#pragma pack(pop) +#pragma pack(push, 1) class mDoExt_brkAnm { public: private: mDoExt_baseAnm mDoExt_baseAnm; u32 field_0x14; }; +#pragma pack(pop) +#pragma pack(push, 1) class mDoExt_bpkAnm { public: private: mDoExt_baseAnm mDoExt_baseAnm; u32 field_0x14; }; +#pragma pack(pop) +#pragma pack(push, 1) class mDoExt_bckAnm { public: private: @@ -48,11 +57,14 @@ private: u8 field_0x14[4]; u32 field_0x18; }; +#pragma pack(pop) +#pragma pack(push, 1) class mDoExt_McaMorfCallBack1_c { public: private: void* vtable; }; +#pragma pack(pop) #endif \ No newline at end of file diff --git a/include/m_Do/m_Do_main/m_Do_main.h b/include/m_Do/m_Do_main/m_Do_main.h index 31b2759e29d..7a668eb374f 100644 --- a/include/m_Do/m_Do_main/m_Do_main.h +++ b/include/m_Do/m_Do_main/m_Do_main.h @@ -1,5 +1,6 @@ #include "JSystem/JKernel/JKRExpHeap/JKRExpHeap.h" #include "JSystem/JKernel/JKRHeap/JKRHeap.h" +#include "JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h" #include "dolphin/types.h" class HeapCheck { @@ -14,18 +15,29 @@ public: void setHeapSize(u32 i_size) { heap_size = i_size; } private: - char* names[2]; - JKRExpHeap* heap; - s32 max_total_used_size; - s32 max_total_free_size; - u8 unk20[8]; // 8 bytes - u32 heap_size; - u32 used_count; - u32 total_used_size; + /* 0x00 */ char* names[2]; + /* 0x08 */ JKRExpHeap* heap; + /* 0x0C */ s32 max_total_used_size; + /* 0x10 */ s32 max_total_free_size; + /* 0x14 */ u8 unk20[8]; + /* 0x1C */ u32 heap_size; + /* 0x20 */ u32 used_count; + /* 0x24 */ u32 total_used_size; }; extern HeapCheck* HeapCheckTable[8]; +extern HeapCheck lbl_803D32E0[8]; // RootHeapCheck +// extern HeapCheck lbl_803D3308; // SystemHeapCheck +// extern HeapCheck lbl_803D3330; // ZeldaHeapCheck +// extern HeapCheck lbl_803D3358; // GameHeapCheck +// extern HeapCheck lbl_803D3380; // ArchiveHeapCheck +// extern HeapCheck lbl_803D33A8; // J2dHeapCheck +// extern HeapCheck lbl_803D33D0; // HostioHeapCheck +// extern HeapCheck lbl_803D33F8; // CommandHeapCheck extern s8 lbl_80450580[4]; extern u8 lbl_80450B1A[2]; extern u8 lbl_80450B18; -extern u8 lbl_80450588[8]; \ No newline at end of file +extern u8 lbl_80450588[8]; +extern u8 lbl_804511B8[4]; +extern u8 lbl_80451210[4]; +extern JKRSolidHeap* lbl_80450BBC; \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index 42e3bd8eba6..5e60075a689 100644 --- a/include/variables.h +++ b/include/variables.h @@ -13,7 +13,7 @@ extern u8 lbl_803A2EF4; extern char lbl_803A2EE0[20]; extern u8 lbl_80450B19; // extern u8 lbl_80450588; -extern u8 lbl_804511B8; +// extern u8 lbl_804511B8; extern u8 lbl_80450B20; extern u8 lbl_80451A00; extern u8 lbl_80450B1C; @@ -49,8 +49,7 @@ extern u8 lbl_80450B1C; struct JUTGamePad; extern JUTGamePad* m_gamePad[4]; extern u8 lbl_80450B18; -extern u8 lbl_803D32E0; -extern u8 lbl_80450BBC; +//extern u8 lbl_803D32E0; extern u8 lbl_803EAF40[]; extern u8 lbl_80450B34; extern u8 lbl_80450B00; diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index 9be76e792d3..0a4f5cd8354 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -8,6 +8,7 @@ #include "m_Do/m_Do_graphic/m_Do_graphic.h" #include "m_Do/m_Do_machine/m_Do_machine.h" #include "m_Do/m_Do_reset/m_Do_reset.h" +#include "m_Do/m_Do_dvd_thread/m_Do_dvd_thread.h" void version_check(void) { if ((!strcmp((char*)lbl_803739A0, (char*)lbl_803739A0)) && @@ -21,15 +22,15 @@ void version_check(void) { } void HeapCheck::CheckHeap1(void) { - s32 totalUsedSize = this->heap->getTotalUsedSize(); - s32 freeSize = this->heap->getFreeSize(); + s32 totalUsedSize = heap->getTotalUsedSize(); + s32 freeSize = heap->getFreeSize(); - if (this->max_total_used_size < totalUsedSize) { - this->max_total_used_size = totalUsedSize; + if (max_total_used_size < totalUsedSize) { + max_total_used_size = totalUsedSize; } - if (this->max_total_free_size > freeSize) { - this->max_total_free_size = freeSize; + if (max_total_free_size > freeSize) { + max_total_free_size = freeSize; } } @@ -80,32 +81,32 @@ int countUsed(JKRExpHeap* heap) { } s32 HeapCheck::getUsedCount(void) const { - return countUsed(this->heap); + return countUsed(heap); } void HeapCheck::heapDisplay(void) const { - s32 heap_size1 = this->heap->getSize(); - s32 heap_size2 = heap_size1 - this->heap_size; + s32 heap_size1 = heap->getSize(); + s32 heap_size2 = heap_size1 - heap_size; - s32 heap_total_used_size = this->heap->getTotalUsedSize(); - s32 heap_total_free_size = this->heap->getTotalFreeSize(); - s32 heap_free_size = this->heap->getFreeSize(); + s32 heap_total_used_size = heap->getTotalUsedSize(); + s32 heap_total_free_size = heap->getTotalFreeSize(); + s32 heap_free_size = heap->getFreeSize(); - JUTReport__FiiPCce(0x64, 0xd4, lbl_803739A0 + 0x3C, this->names[0]); + JUTReport__FiiPCce(0x64, 0xd4, lbl_803739A0 + 0x3C, names[0]); JUTReport__FiiPCce(0x64, 0xe3, lbl_803739A0 + 0x45, heap_size1); - JUTReport__FiiPCce(0x64, 0xf0, lbl_803739A0 + 0x5B, this->heap_size); + JUTReport__FiiPCce(0x64, 0xf0, lbl_803739A0 + 0x5B, heap_size); JUTReport__FiiPCce(0x64, 0xfd, lbl_803739A0 + 0x71, heap_total_free_size - heap_size2); JUTReport__FiiPCce(0x64, 0x10a, lbl_803739A0 + 0x87, heap_free_size - heap_size2); JUTReport__FiiPCce(0x64, 0x117, lbl_803739A0 + 0x9D, heap_total_used_size); JUTReport__FiiPCce(0x64, 0x124, lbl_803739A0 + 0xB3, - (int)(heap_total_used_size * 0x64) / (int)this->heap_size); - JUTReport__FiiPCce(0x64, 0x131, lbl_803739A0 + 0xCF, this->max_total_used_size); + (int)(heap_total_used_size * 0x64) / (int)heap_size); + JUTReport__FiiPCce(0x64, 0x131, lbl_803739A0 + 0xCF, max_total_used_size); JUTReport__FiiPCce(0x64, 0x13e, lbl_803739A0 + 0xE5, - (this->max_total_used_size * 0x64) / (int)this->heap_size); - JUTReport__FiiPCce(0x64, 0x14b, lbl_803739A0 + 0x101, this->max_total_free_size - heap_size2); + (max_total_used_size * 0x64) / (int)heap_size); + JUTReport__FiiPCce(0x64, 0x14b, lbl_803739A0 + 0x101, max_total_free_size - heap_size2); JUTReport__FiiPCce(0x64, 0x158, lbl_803739A0 + 0x117, - ((this->max_total_free_size - heap_size2) * 0x64) / (int)this->heap_size); - heap_size2 = countUsed(this->heap); + ((max_total_free_size - heap_size2) * 0x64) / (int)heap_size); + heap_size2 = countUsed(heap); JUTReport__FiiPCce(0x64, 0x165, lbl_803739A0 + 0x133, heap_size2); } @@ -169,55 +170,102 @@ void debug(void) { } #ifdef NONMATCHING void main01(void) { - mDoCPd_c controller; - + HeapCheck* heaps = lbl_803D32E0; mDoMch_Create(); mDoGph_Create(); - - controller.create(); + create__8mDoCPd_cFv(); + mDoDVDThd_callback_c thread_callback; + //JKRSolidHeap audio_heap; // Root Heap - HeapCheckTable[0]->setHeap(lbl_80451378); + heaps[0].setHeap((JKRExpHeap *)lbl_80451378); if (lbl_80451378) { - HeapCheckTable[0]->setHeapSize(lbl_80451378->getSize()); + heaps[0].setHeapSize(lbl_80451378->getSize()); } + // System Heap - HeapCheckTable[1]->setHeap(lbl_80451370); + heaps[1].setHeap((JKRExpHeap *)lbl_80451370); if (lbl_80451370) { - HeapCheckTable[1]->setHeapSize(lbl_80451370->getSize()); + heaps[1].setHeapSize(lbl_80451370->getSize()); } // Zelda Heap - HeapCheckTable[2]->setHeap(mDoExt_getZeldaHeap()); - if (HeapCheckTable[2]->getHeap()) { - HeapCheckTable[2]->setHeapSize(HeapCheckTable[2]->getHeap()->getSize()); + heaps[2].setHeap(mDoExt_getZeldaHeap()); + if (heaps[2].getHeap()) { + heaps[2].setHeapSize(heaps[2].getHeap()->getSize()); } - HeapCheckTable[3]->setHeap(mDoExt_getGameHeap()); - if (HeapCheckTable[3]->getHeap()) { - HeapCheckTable[3]->setHeapSize(HeapCheckTable[3]->getHeap()->getSize()); + // Game Heap + heaps[3].setHeap(mDoExt_getGameHeap()); + if (heaps[3].getHeap()) { + heaps[3].setHeapSize(heaps[3].getHeap()->getSize()); } - HeapCheckTable[4]->setHeap(mDoExt_getArchiveHeap()); - if (HeapCheckTable[4]->getHeap()) { - HeapCheckTable[4]->setHeapSize(HeapCheckTable[4]->getHeap()->getSize()); + // Archive Heap + heaps[4].setHeap(mDoExt_getArchiveHeap()); + if (heaps[4].getHeap()) { + heaps[4].setHeapSize(heaps[4].getHeap()->getSize()); } - HeapCheckTable[5]->setHeap(mDoExt_getJ2dHeap()); - if (HeapCheckTable[5]->getHeap()) { - HeapCheckTable[5]->setHeapSize(HeapCheckTable[5]->getHeap()->getSize()); + // J2D Heap + heaps[5].setHeap(mDoExt_getJ2dHeap()); + if (heaps[5].getHeap()) { + heaps[5].setHeapSize(heaps[5].getHeap()->getSize()); } - HeapCheckTable[6]->setHeap(mDoExt_getHostIOHeap()); - if (HeapCheckTable[6]->getHeap()) { - HeapCheckTable[6]->setHeapSize(HeapCheckTable[6]->getHeap()->getSize()); + // HostIO Heap + heaps[6].setHeap(mDoExt_getHostIOHeap()); + if (heaps[6].getHeap()) { + heaps[6].setHeapSize(heaps[6].getHeap()->getSize()); } - HeapCheckTable[7]->setHeap(mDoExt_getCommandHeap()); - if (HeapCheckTable[7]->getHeap()) { - HeapCheckTable[7]->setHeapSize(HeapCheckTable[7]->getHeap()->getSize()); + // Command Heap + heaps[7].setHeap(mDoExt_getCommandHeap()); + + u8* systemConsole = lbl_804511B8; + + if (heaps[7].getHeap()) { + heaps[7].setHeapSize(heaps[7].getHeap()->getSize()); } + + int unk = 0; + if (lbl_80450580) { + unk = 3; + } + + *(lbl_804511B8+0x58) = unk; + *(systemConsole+0x40) = 0x20; + *(systemConsole+0x44) = 0x2a; + + // lol + thread_callback.create((void * (*)(void *))LOAD_COPYDATE,0); + fapGm_Create(); + fopAcM_initManager(); + lbl_80450B18 = 0; + cDyl_InitAsync(); + + // g_mDoAud_audioHeap + + lbl_80450BBC = JKRSolidHeap_NS_create(0x14d800,lbl_80451374,false); + + // main loop + do { + // global frame counter? + lbl_80450B34++; + + if (lbl_80450B00 && (lbl_80450B34 == ((lbl_80450B34 / lbl_80450B00) * lbl_80450B00))) { + mDoMch_HeapCheckAll(); + } + + if (lbl_80450C80) { + mDoMemCd_Ctrl_c_NS_update(); + } + mDoCPd_c_NS_read(); + fapGm_Execute(); + mDoAud_Execute(); + debug(); + } while (true); } #else asm void main01(void) {