Match destructor and msl_c header include fixes

This commit is contained in:
jdflyer 2022-01-11 19:36:28 -07:00
parent 346215bd49
commit 7e97dfab7b
6 changed files with 115 additions and 118 deletions

View File

@ -2,5 +2,72 @@
#define DYNAMICLINK_H
#include "dolphin/types.h"
#include "dolphin/os/OSLink.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "JSystem/JKernel/JKRFileCache.h"
struct DynamicModuleControlBase {
u16 mLinkCount; //0x0
u16 mDoLinkCount; //0x2
DynamicModuleControlBase* mPrev; //0x4
DynamicModuleControlBase* mNext; //0x8
/* 802621CC */ virtual ~DynamicModuleControlBase(); //0xC
/* 800188DC */ virtual const char* getModuleName() const;
/* 80263210 */ virtual int getModuleSize() const;
/* 80263200 */ virtual const char* getModuleTypeString() const;
/* 80262470 */ virtual void dump();
/* 802631FC */ virtual void dump2();
/* 802631DC */ virtual bool do_load();
/* 802631F4 */ virtual bool do_load_async();
/* 802631E4 */ virtual bool do_unload();
/* 802631D4 */ virtual BOOL do_link();
/* 802631EC */ virtual bool do_unlink();
/* 80262284 */ DynamicModuleControlBase();
/* 802622D0 */ bool link();
/* 80262364 */ bool unlink();
/* 802623EC */ bool load_async();
/* 8026242C */ bool force_unlink();
static inline DynamicModuleControlBase* getFirstClass() {return mFirst;}
inline DynamicModuleControlBase* getNextClass() {return mNext;}
static DynamicModuleControlBase* mFirst;
static DynamicModuleControlBase* mLast;
};
struct DynamicModuleControl : DynamicModuleControlBase {
/* 800188E4 */ virtual ~DynamicModuleControl();
/* 80263218 */ virtual const char* getModuleName() const;
/* 80263000 */ virtual int getModuleSize() const;
/* 80263070 */ virtual const char* getModuleTypeString() const;
virtual void dump() = 0;
/* 80262C0C */ virtual void dump2();
/* 802627E8 */ virtual bool do_load();
/* 80262AFC */ virtual bool do_load_async();
/* 80262BC4 */ virtual bool do_unload();
/* 80262C5C */ virtual BOOL do_link();
/* 80262F28 */ virtual bool do_unlink();
/* 80262660 */ DynamicModuleControl(char const*);
/* 802626D0 */ static JKRArchive* mountCallback(void*);
/* 8026275C */ bool initialize();
/* 80262794 */ static void* callback(void*);
OSModuleInfo* mModule; //0x10
void* mBss; //0x14
u32 unk_24; //0x18
const char* mName; //0x1c
u8 mResourceType; //0x20
u8 unk_33; //0x21
u16 mChecksum; //0x22
s32 mSize; //0x24
mDoDvdThd_callback_c* mAsyncLoadCallback; //0x28
static u32 sAllocBytes;
static JKRArchive* sArchive;
static JKRFileCache* sFileCache;
};
#endif /* DYNAMICLINK_H */

View File

@ -1,8 +1,8 @@
#ifndef D_SAVE_D_SAVE_H
#define D_SAVE_D_SAVE_H
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/printf.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/string.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/string.h"
#include "SSystem/SComponent/c_xyz.h"
#include "dolphin/types.h"

View File

@ -13,7 +13,7 @@ struct OSModuleInfo {
OSModuleInfo* mNext;
OSModuleInfo* mPrev;
u32 mNumSections;
struct { //Needed to get an assert corret; very likely bigger
struct { //Needed to get an assert correct; very likely bigger
u32 sectionInfoOffset;
} info;
u32 mModuleNameOffset;

View File

@ -6,7 +6,7 @@
#include "JSystem/JKernel/JKRThread.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/printf.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h"
#include "dol2asm.h"
#include "dolphin/types.h"

View File

@ -4,7 +4,7 @@
//
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/printf.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h"
#include "Runtime.PPCEABI.H/__va_arg.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"

View File

@ -8,76 +8,10 @@
#include "dolphin/types.h"
#include "dolphin/os/OS.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_ext.h"
#include "JSystem/JKernel/JKRFileCache.h"
#include "dolphin/os/OSLink.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h"
#include "JSystem/JKernel/JKRDvdRipper.h"
struct DynamicModuleControlBase {
u16 mLinkCount; //0x0
u16 mDoLinkCount; //0x2
DynamicModuleControlBase* mPrev; //0x4
DynamicModuleControlBase* mNext; //0x8
/* 802621CC */ virtual ~DynamicModuleControlBase(); //0xC
/* 800188DC */ virtual const char* getModuleName() const;
/* 80263210 */ virtual int getModuleSize() const;
/* 80263200 */ virtual const char* getModuleTypeString() const;
/* 80262470 */ virtual void dump();
/* 802631FC */ virtual void dump2();
/* 802631DC */ virtual bool do_load();
/* 802631F4 */ virtual bool do_load_async();
/* 802631E4 */ virtual bool do_unload();
/* 802631D4 */ virtual BOOL do_link();
/* 802631EC */ virtual bool do_unlink();
/* 80262284 */ DynamicModuleControlBase();
/* 802622D0 */ bool link();
/* 80262364 */ bool unlink();
/* 802623EC */ bool load_async();
/* 8026242C */ bool force_unlink();
static inline DynamicModuleControlBase* getFirstClass() {return mFirst;}
inline DynamicModuleControlBase* getNextClass() {return mNext;}
static DynamicModuleControlBase* mFirst;
static DynamicModuleControlBase* mLast;
};
struct DynamicModuleControl : DynamicModuleControlBase {
/* 800188E4 */ virtual ~DynamicModuleControl();
/* 80263218 */ virtual const char* getModuleName() const;
/* 80263000 */ virtual int getModuleSize() const;
/* 80263070 */ virtual const char* getModuleTypeString() const;
//virtual void dump();
/* 80262C0C */ virtual void dump2();
/* 802627E8 */ virtual bool do_load();
/* 80262AFC */ virtual bool do_load_async();
/* 80262BC4 */ virtual bool do_unload();
/* 80262C5C */ virtual BOOL do_link();
/* 80262F28 */ virtual bool do_unlink();
/* 80262660 */ DynamicModuleControl(char const*);
/* 802626D0 */ static JKRArchive* mountCallback(void*);
/* 8026275C */ bool initialize();
/* 80262794 */ static void* callback(void*);
OSModuleInfo* mModule; //0x10
void* mBss; //0x14
u32 unk_24; //0x18
const char* mName; //0x1c
u8 mResourceType; //0x20
u8 unk_33; //0x21
u16 mChecksum; //0x22
s32 mSize; //0x24
mDoDvdThd_callback_c* mAsyncLoadCallback; //0x28
static u32 sAllocBytes;
static JKRArchive* sArchive;
static JKRFileCache* sFileCache;
};
//
// Forward References:
//
@ -167,14 +101,23 @@ DynamicModuleControlBase* DynamicModuleControlBase::mLast;
/* 802621CC-80262284 25CB0C 00B8+00 1/0 2/2 0/0 .text __dt__24DynamicModuleControlBaseFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm DynamicModuleControlBase::~DynamicModuleControlBase() {
nofralloc
#include "asm/DynamicLink/__dt__24DynamicModuleControlBaseFv.s"
DynamicModuleControlBase::~DynamicModuleControlBase() {
force_unlink();
if (mPrev!=NULL) {
mPrev->mNext = mNext;
}
if (mNext!=NULL) {
mNext->mPrev = mPrev;
}
if (mFirst==this) {
mFirst = mNext;
}
if (mLast==this) {
mLast = mPrev;
}
mNext = NULL;
mPrev = NULL;
}
#pragma pop
/* 80262284-802622D0 25CBC4 004C+00 1/1 0/0 0/0 .text __ct__24DynamicModuleControlBaseFv
*/
@ -248,30 +191,37 @@ void DynamicModuleControlBase::dump() {
int totalSize = 0;
JUTReportConsole_f("\nDynamicModuleControlBase::dump()\n");
JUTReportConsole_f("Do Lnk Size Name\n");
//lbl_80262608
while (current!=NULL) {
if (current->mDoLinkCount!=0||current->mLinkCount!=0) {
int size = current->getModuleSize();
//lbl_802624B8
u16 doLinkCount = current->mDoLinkCount;
u16 linkCount = current->mLinkCount;
if (doLinkCount!=0||linkCount!=0) {
//lbl_802624D0
u32 size = current->getModuleSize();
const char* name = current->getModuleName();
if (size>=0) {
if (name==NULL) {
name = "(Null)";
}
if(size<0xFFFFFFFF) {
name = (name!=NULL) ? name : "(Null)";
//lbl_80262524
const char* type = current->getModuleTypeString();
JUTReportConsole_f("%3d%3d%5.1f %05x %-4s %-24s ",mDoLinkCount,mLinkCount,(float)size*((float)1/(float)1024),size,type,name);
totalSize = totalSize + size;
}else{
if (name==NULL) {
name = "(Null)";
}
JUTReportConsole_f("%3d%3d%5.1f %05x %-4s %-24s ",doLinkCount,linkCount,size*(1.0f/1024.0f),size,type,name);
totalSize=totalSize+size;
}else{
//lbl_80262588
name = (name!=NULL) ? name : "(Null)";
//lbl_802625A4
const char* type = current->getModuleTypeString();
JUTReportConsole_f("%3d%3d ???? ????? %-4s %-24s ",mDoLinkCount,mLinkCount,type,name);
JUTReportConsole_f("%3d%3d ???? ????? %-4s %-24s ",doLinkCount,linkCount,type,name);
}
//lbl_802625DC
current->dump2();
JUTReportConsole_f("\n");
}
current->dump2();
JUTReportConsole_f("\n");
current=current->getNextClass();
//lbl_80262604
current = getNextClass();
}
JUTReportConsole_f("TotalSize %6.2f %06x\n\n",(float)totalSize*(float)(1/1024),totalSize);
//lbl_80262608
JUTReportConsole_f("TotalSize %6.2f %06x\n\n",(1.0f/1024.0f)*totalSize,totalSize);
}
#else
/* ############################################################################################## */
@ -342,7 +292,7 @@ SECTION_DEAD static char const* const stringBase_8039A57B = "Base";
JKRArchive* DynamicModuleControl::mountCallback(void* param_0) {
JKRExpHeap* heap = mDoExt_getArchiveHeap();
sFileCache = JKRFileCache::mount("/rel/Final/Release",heap,NULL);
sArchive = JKRArchive::mount("RELS.arc",JKRArchive::MOUNT_COMP,heap,JKRArchive::MOUNT_DIRECTION_HEAD);
sArchive = JKRArchive::mount("aRELS.arc",JKRArchive::MOUNT_COMP,heap,JKRArchive::MOUNT_DIRECTION_HEAD);
if (sArchive == NULL) {
OSReport_Warning("マウント失敗ですが単にアーカイブを作ってないだけなら遅いだけです %s\n","RELS.arc");
}
@ -378,7 +328,6 @@ static u32 calcSum2(u16 const* data, u32 size) {
#ifdef NONMATCHING
bool DynamicModuleControl::do_load() {
if (mModule!=NULL) {
return true;
}
@ -545,8 +494,8 @@ BOOL DynamicModuleControl::do_link() {
OSGetTime();
OSGetTime();
if(mModule->mModuleVersion>=3) {
u32 unk = mModule->fixSize + 0x1f;
u32 unk3 = unk & ~0x1f;
u32 unk = mModule->fixSize;
u32 unk3 = (unk+0x1f) & ~0x1f;
u32 unk2 = (u32)mModule+unk3;
s32 size = JKRHeap::getSize(mModule,NULL);
if(size<0) {
@ -704,25 +653,6 @@ SECTION_DATA extern void* __vt__20DynamicModuleControl[13] = {
(void*)do_unlink__20DynamicModuleControlFv,
};
/* 803C34F4-803C3528 020614 0034+00 2/2 0/0 0/0 .data __vt__24DynamicModuleControlBase */
SECTION_DATA extern void* __vt__24DynamicModuleControlBase[13] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__24DynamicModuleControlBaseFv,
(void*)getModuleName__24DynamicModuleControlBaseCFv,
(void*)getModuleSize__24DynamicModuleControlBaseCFv,
(void*)getModuleTypeString__24DynamicModuleControlBaseCFv,
(void*)dump__24DynamicModuleControlBaseFv,
(void*)dump2__24DynamicModuleControlBaseFv,
(void*)do_load__24DynamicModuleControlBaseFv,
(void*)do_load_async__24DynamicModuleControlBaseFv,
(void*)do_unload__24DynamicModuleControlBaseFv,
(void*)do_link__24DynamicModuleControlBaseFv,
(void*)do_unlink__24DynamicModuleControlBaseFv,
};
/* 80263088-8026308C 25D9C8 0004+00 0/0 0/0 756/756 .text ModuleProlog */
extern "C" void ModuleProlog() {
/* empty function */