From 2a2b9c2f4e8dcae7934b708524bf67c22dfa5f54 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 15 Sep 2023 00:48:57 -0400 Subject: [PATCH] Match & link DynamicLink.cpp --- config/GZLE01/symbols.txt | 2 +- config/GZLJ01/symbols.txt | 2 +- config/GZLP01/symbols.txt | 2 +- configure.py | 2 +- include/JSystem/JKernel/JKRArchive.h | 14 +++++++------- src/DynamicLink.cpp | 7 +------ 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/config/GZLE01/symbols.txt b/config/GZLE01/symbols.txt index 003cce896..7eb6fa99a 100644 --- a/config/GZLE01/symbols.txt +++ b/config/GZLE01/symbols.txt @@ -8122,7 +8122,7 @@ __ct__20DynamicModuleControlFPCc = .text:0x802405BC; // type:function size:0x70 mountCallback__20DynamicModuleControlFPv = .text:0x8024062C; // type:function size:0x8C scope:global align:4 initialize__20DynamicModuleControlFv = .text:0x802406B8; // type:function size:0x38 scope:global align:4 callback__20DynamicModuleControlFPv = .text:0x802406F0; // type:function size:0x2C scope:global align:4 -calcSum2__FPCUsUl = .text:0x8024071C; // type:function size:0x28 scope:global align:4 +calcSum2__FPCUsUl = .text:0x8024071C; // type:function size:0x28 scope:local align:4 do_load__20DynamicModuleControlFv = .text:0x80240744; // type:function size:0x304 scope:global align:4 do_load_async__20DynamicModuleControlFv = .text:0x80240A48; // type:function size:0xC8 scope:global align:4 do_unload__20DynamicModuleControlFv = .text:0x80240B10; // type:function size:0x48 scope:global align:4 diff --git a/config/GZLJ01/symbols.txt b/config/GZLJ01/symbols.txt index 4bb09d3f0..eda8f7aaf 100644 --- a/config/GZLJ01/symbols.txt +++ b/config/GZLJ01/symbols.txt @@ -8056,7 +8056,7 @@ __ct__20DynamicModuleControlFPCc = .text:0x8023DD4C; // type:function size:0x70 mountCallback__20DynamicModuleControlFPv = .text:0x8023DDBC; // type:function size:0x8C scope:global align:4 initialize__20DynamicModuleControlFv = .text:0x8023DE48; // type:function size:0x38 scope:global align:4 callback__20DynamicModuleControlFPv = .text:0x8023DE80; // type:function size:0x2C scope:global align:4 -calcSum2__FPCUsUl = .text:0x8023DEAC; // type:function size:0x28 scope:global align:4 +calcSum2__FPCUsUl = .text:0x8023DEAC; // type:function size:0x28 scope:local align:4 do_load__20DynamicModuleControlFv = .text:0x8023DED4; // type:function size:0x304 scope:global align:4 do_load_async__20DynamicModuleControlFv = .text:0x8023E1D8; // type:function size:0xC8 scope:global align:4 do_unload__20DynamicModuleControlFv = .text:0x8023E2A0; // type:function size:0x48 scope:global align:4 diff --git a/config/GZLP01/symbols.txt b/config/GZLP01/symbols.txt index 9d5a6d301..fa7c5da59 100644 --- a/config/GZLP01/symbols.txt +++ b/config/GZLP01/symbols.txt @@ -8105,7 +8105,7 @@ __ct__20DynamicModuleControlFPCc = .text:0x8024575C; // type:function size:0x70 mountCallback__20DynamicModuleControlFPv = .text:0x802457CC; // type:function size:0x8C scope:global align:4 initialize__20DynamicModuleControlFv = .text:0x80245858; // type:function size:0x38 scope:global align:4 callback__20DynamicModuleControlFPv = .text:0x80245890; // type:function size:0x2C scope:global align:4 -calcSum2__FPCUsUl = .text:0x802458BC; // type:function size:0x28 scope:global align:4 +calcSum2__FPCUsUl = .text:0x802458BC; // type:function size:0x28 scope:local align:4 do_load__20DynamicModuleControlFv = .text:0x802458E4; // type:function size:0x304 scope:global align:4 do_load_async__20DynamicModuleControlFv = .text:0x80245BE8; // type:function size:0xC8 scope:global align:4 do_unload__20DynamicModuleControlFv = .text:0x80245CB0; // type:function size:0x48 scope:global align:4 diff --git a/configure.py b/configure.py index 056d39bdc..0c8764cad 100644 --- a/configure.py +++ b/configure.py @@ -391,7 +391,7 @@ config.libs = [ Object(NonMatching, "d/actor/d_a_itembase.cpp"), # ? - Object(NonMatching, "DynamicLink.cpp"), + Object(Matching, "DynamicLink.cpp"), ], }, Rel(Matching, "f_pc_profile_lst", "f_pc/f_pc_profile_lst.cpp"), diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index b1b6b13d2..4211d3edd 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -40,7 +40,7 @@ inline u16 read_big_endian_u16(void* ptr) { return ((u16)uptr[0] << 8) | ((u16)uptr[1]); } -inline u32 JKRDecompExpandSize(u8 * pBuf) { +inline u32 JKRDecompExpandSize(u8* pBuf) { return (pBuf[4] << 0x18) | (pBuf[5] << 0x10) | (pBuf[6] << 8) | pBuf[7]; } @@ -151,10 +151,12 @@ public: /* vt[09] */ virtual void removeResourceAll(void); /* override */ /* vt[10] */ virtual bool removeResource(void*); /* override */ /* vt[11] */ virtual bool detachResource(void*); /* override */ - /* vt[12] */ virtual u32 getResSize(const void*) const; /* override */ + /* vt[12] */ virtual u32 getResSize(const void* resource) const; /* override */ /* vt[13] */ virtual u32 countFile(const char*) const; /* override */ /* vt[14] */ virtual JKRFileFinder* getFirstFile(const char*) const; /* override */ - /* vt[15] */ virtual u32 getExpandedResSize(const void*) const; + /* vt[15] */ virtual u32 getExpandedResSize(const void* resource) const { + return getResSize(resource); + } /* vt[16] */ virtual void* fetchResource(SDIFileEntry*, u32*) = 0; /* vt[17] */ virtual void* fetchResource(void*, u32, SDIFileEntry*, u32*) = 0; /* vt[18] */ virtual void setExpandSize(SDIFileEntry*, u32); @@ -163,9 +165,7 @@ public: u32 countFile() const { return mArcInfoBlock->num_file_entries; } s32 countDirectory() const { return mArcInfoBlock->num_nodes; } u8 getMountMode() const { return mMountMode; } - bool isFileEntry(u32 param_0) { - return getFileAttribute(param_0) & 1; - } + bool isFileEntry(u32 param_0) { return getFileAttribute(param_0) & 1; } public: /* 0x00 */ // vtable @@ -224,4 +224,4 @@ inline void* JKRGetTypeResource(u32 tag, const char* name, JKRArchive* arc) { return JKRArchive::getGlbResource(tag, name, arc); } -#endif \ No newline at end of file +#endif diff --git a/src/DynamicLink.cpp b/src/DynamicLink.cpp index 0bc3cc716..a9d3cd5bb 100644 --- a/src/DynamicLink.cpp +++ b/src/DynamicLink.cpp @@ -13,14 +13,9 @@ #include "MSL_C/stdio.h" #include "REL/executor.h" #include "m_Do/m_Do_dvd_thread.h" +#include "m_Do/m_Do_ext.h" #include "dolphin/os/OS.h" -// TODO -// #include "m_Do/m_Do_ext.h" -JKRExpHeap* mDoExt_getArchiveHeap(); -extern JKRExpHeap* archiveHeap; -// end m_Do_ext.h - DynamicModuleControlBase* DynamicModuleControlBase::mFirst; DynamicModuleControlBase* DynamicModuleControlBase::mLast;