From 612f26c132280da43ecfa5fa8c8cc32966f06eb6 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:24:14 -0800 Subject: d_kankyo_wether / d_eye_hl (#178) * d_eye_hl / d_kankyo_wether wip * more d_kankyo_wether + format * remove asm * some d_kankyo wip * fix dccs vtable * some m_Do_graphic / d_meter2_draw work --- src/DynamicLink.cpp | 335 ++++++++++++++++++++++++++++------------------------ 1 file changed, 182 insertions(+), 153 deletions(-) (limited to 'src/DynamicLink.cpp') diff --git a/src/DynamicLink.cpp b/src/DynamicLink.cpp index 8c505b9a12..e86cd9ad3d 100644 --- a/src/DynamicLink.cpp +++ b/src/DynamicLink.cpp @@ -4,13 +4,13 @@ // #include "DynamicLink.h" +#include "JSystem/JKernel/JKRDvdRipper.h" +#include "JSystem/JUtility/JUTConsole.h" +#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h" #include "dol2asm.h" -#include "dolphin/types.h" #include "dolphin/os/OS.h" -#include "JSystem/JUtility/JUTConsole.h" +#include "dolphin/types.h" #include "m_Do/m_Do_ext.h" -#include "MSL_C.PPCEABI.bare.H/MSL_Common/Src/printf.h" -#include "JSystem/JKernel/JKRDvdRipper.h" // // Forward References: @@ -39,8 +39,8 @@ extern "C" void getModuleTypeString__20DynamicModuleControlCFv(); extern "C" void ModuleProlog(); extern "C" void ModuleEpilog(); extern "C" void ModuleUnresolved(); -extern "C" void ModuleConstructorsX(void(**ctors)()); -extern "C" void ModuleDestructorsX(void(**dtors)()); +extern "C" void ModuleConstructorsX(void (**ctors)()); +extern "C" void ModuleDestructorsX(void (**dtors)()); extern "C" bool do_link__24DynamicModuleControlBaseFv(); extern "C" bool do_load__24DynamicModuleControlBaseFv(); extern "C" bool do_unload__24DynamicModuleControlBaseFv(); @@ -103,16 +103,16 @@ DynamicModuleControlBase* DynamicModuleControlBase::mLast; */ DynamicModuleControlBase::~DynamicModuleControlBase() { force_unlink(); - if (mPrev!=NULL) { + if (mPrev != NULL) { mPrev->mNext = mNext; } - if (mNext!=NULL) { + if (mNext != NULL) { mNext->mPrev = mPrev; } - if (mFirst==this) { + if (mFirst == this) { mFirst = mNext; } - if (mLast==this) { + if (mLast == this) { mLast = mPrev; } mNext = NULL; @@ -125,11 +125,11 @@ DynamicModuleControlBase::DynamicModuleControlBase() { mLinkCount = 0; mDoLinkCount = 0; mNext = NULL; - if (mFirst==NULL) { + if (mFirst == NULL) { mFirst = this; } mPrev = mLast; - if (mPrev!=NULL) { + if (mPrev != NULL) { mPrev->mNext = this; } mLast = this; @@ -138,16 +138,16 @@ DynamicModuleControlBase::DynamicModuleControlBase() { /* 802622D0-80262364 25CC10 0094+00 0/0 2/2 0/0 .text link__24DynamicModuleControlBaseFv */ bool DynamicModuleControlBase::link() { - if (mLinkCount==0) { + if (mLinkCount == 0) { do_load(); - if (do_link()==false) { + if (do_link() == false) { return false; } - if (mDoLinkCount<0xFFFF) { + if (mDoLinkCount < 0xFFFF) { mDoLinkCount++; } } - if(mLinkCount<0xFFFF) { + if (mLinkCount < 0xFFFF) { mLinkCount++; } return true; @@ -155,21 +155,22 @@ bool DynamicModuleControlBase::link() { /* 80262364-802623EC 25CCA4 0088+00 0/0 1/1 0/0 .text unlink__24DynamicModuleControlBaseFv */ bool DynamicModuleControlBase::unlink() { - if(mLinkCount!=0) { + if (mLinkCount != 0) { mLinkCount--; - if(mLinkCount==0) { + if (mLinkCount == 0) { do_unlink(); do_unload(); } - }else{ - OSReport_Warning("%08x DynamicModuleControlBase::unlink() mLinkCount id already zero.\n",this); + } else { + OSReport_Warning("%08x DynamicModuleControlBase::unlink() mLinkCount id already zero.\n", + this); } return true; } /* 802623EC-8026242C 25CD2C 0040+00 0/0 1/1 0/0 .text load_async__24DynamicModuleControlBaseFv */ bool DynamicModuleControlBase::load_async() { - if (mLinkCount==0) { + if (mLinkCount == 0) { return do_load_async(); } return true; @@ -178,7 +179,7 @@ bool DynamicModuleControlBase::load_async() { /* 8026242C-80262470 25CD6C 0044+00 1/1 0/0 0/0 .text force_unlink__24DynamicModuleControlBaseFv */ bool DynamicModuleControlBase::force_unlink() { - if (mLinkCount!=0) { + if (mLinkCount != 0) { mLinkCount = 0; do_unlink(); } @@ -191,43 +192,45 @@ void DynamicModuleControlBase::dump() { int totalSize = 0; JUTReportConsole_f("\nDynamicModuleControlBase::dump()\n"); JUTReportConsole_f("Do Lnk Size Name\n"); - //lbl_80262608 - while (current!=NULL) { - //lbl_802624B8 + // lbl_80262608 + while (current != NULL) { + // lbl_802624B8 u16 doLinkCount = current->mDoLinkCount; u16 linkCount = current->mLinkCount; - if (doLinkCount!=0||linkCount!=0) { - //lbl_802624D0 + if (doLinkCount != 0 || linkCount != 0) { + // lbl_802624D0 u32 size = current->getModuleSize(); const char* name = current->getModuleName(); - if(size<0xFFFFFFFF) { - name = (name!=NULL) ? name : "(Null)"; - //lbl_80262524 + if (size < 0xFFFFFFFF) { + name = (name != NULL) ? name : "(Null)"; + // lbl_80262524 const char* type = current->getModuleTypeString(); - 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 + 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 ",doLinkCount,linkCount,type,name); + JUTReportConsole_f("%3d%3d ???? ????? %-4s %-24s ", doLinkCount, linkCount, type, + name); } - //lbl_802625DC + // lbl_802625DC current->dump2(); JUTReportConsole_f("\n"); } - //lbl_80262604 + // lbl_80262604 current = getNextClass(); } - //lbl_80262608 - JUTReportConsole_f("TotalSize %6.2f %06x\n\n",(1.0f/1024.0f)*totalSize,totalSize); + // lbl_80262608 + JUTReportConsole_f("TotalSize %6.2f %06x\n\n", (1.0f / 1024.0f) * totalSize, totalSize); } #else /* ############################################################################################## */ /* 80455008-80455010 003608 0004+04 1/1 0/0 0/0 .sdata2 @3772 */ SECTION_SDATA2 static f32 lit_3772[1 + 1 /* padding */] = { - 0.0009765625f, // 1/1024 + 0.0009765625f, // 1/1024 /* padding */ 0.0f, }; @@ -291,10 +294,13 @@ SECTION_DEAD static char const* const stringBase_8039A57B = "Base"; /* 802626D0-8026275C 25D010 008C+00 1/1 0/0 0/0 .text mountCallback__20DynamicModuleControlFPv */ 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); + sFileCache = JKRFileCache::mount("/rel/Final/Release", heap, NULL); + sArchive = JKRArchive::mount("RELS.arc", JKRArchive::MOUNT_COMP, heap, + JKRArchive::MOUNT_DIRECTION_HEAD); if (sArchive == NULL) { - OSReport_Warning("マウント失敗ですが単にアーカイブを作ってないだけなら遅いだけです %s\n","RELS.arc"); + // "Mount failure, but if the archive isn't created, it was too slow %s\n" + OSReport_Warning("マウント失敗ですが単にアーカイブを作ってないだけなら遅いだけです %s\n", + "RELS.arc"); } return sArchive; } @@ -318,9 +324,9 @@ void* DynamicModuleControl::callback(void* moduleControlPtr) { /* 802627C0-802627E8 25D100 0028+00 1/1 0/0 0/0 .text calcSum2__FPCUsUl */ static u32 calcSum2(u16 const* data, u32 size) { u32 sum = 0; - while (size>0) { + while (size > 0) { sum = sum + *data; - size=size-2; + size = size - 2; data++; } return sum; @@ -328,83 +334,93 @@ static u32 calcSum2(u16 const* data, u32 size) { #ifdef NONMATCHING bool DynamicModuleControl::do_load() { - if (mModule!=NULL) { + if (mModule != NULL) { return true; } JKRExpHeap* heap = mDoExt_getArchiveHeap(); s32 i = 0; - while(true) { - if(mModule != NULL) { - JKRHeap::free(mModule,NULL); + while (true) { + if (mModule != NULL) { + JKRHeap::free(mModule, NULL); mModule = NULL; } char buffer[64]; - snprintf(buffer,64,"%s.rel",mName); - if(mModule==NULL&&sArchive!=NULL) { - if(mModule==NULL) { - mModule = (OSModuleInfo*)JKRArchive::getGlbResource(0x4D4D454D/*MMEM*/,buffer,sArchive); - if(mModule!=NULL) { + snprintf(buffer, 64, "%s.rel", mName); + if (mModule == NULL && sArchive != NULL) { + if (mModule == NULL) { + mModule = (OSModuleInfo*)JKRArchive::getGlbResource('MMEM', buffer, sArchive); + if (mModule != NULL) { mResourceType = 1; } } - if(mModule==NULL) { - mModule = (OSModuleInfo*)JKRArchive::getGlbResource(0x414D454D/*AMEM*/,buffer,sArchive); - if(mModule!=NULL) { + if (mModule == NULL) { + mModule = (OSModuleInfo*)JKRArchive::getGlbResource('AMEM', buffer, sArchive); + if (mModule != NULL) { mResourceType = 2; } } - if(mModule==NULL) { - mModule = (OSModuleInfo*)JKRArchive::getGlbResource(0x444D454D/*DMEM*/,buffer,sArchive); - if(mModule!=NULL) { + if (mModule == NULL) { + mModule = (OSModuleInfo*)JKRArchive::getGlbResource('DMEM', buffer, sArchive); + if (mModule != NULL) { mResourceType = 3; } } } - if(mModule!=NULL) { + if (mModule != NULL) { mSize = sArchive->getExpandedResSize(mModule); - JKRFileLoader::detachResource(mModule,NULL); - }else if(mModule==NULL){ - snprintf(buffer,64,"/rel/Final/Release/%s.rel",mName); - mModule = (OSModuleInfo*)JKRDvdRipper::loadToMainRAM(buffer,NULL,EXPAND_SWITCH_UNKNOWN1,0,heap,JKRDvdRipper::ALLOC_DIRECTION_FORWARD,0,NULL,NULL); - if(mModule!=NULL) { + JKRFileLoader::detachResource(mModule, NULL); + } else if (mModule == NULL) { + snprintf(buffer, 64, "/rel/Final/Release/%s.rel", mName); + mModule = (OSModuleInfo*)JKRDvdRipper::loadToMainRAM( + buffer, NULL, EXPAND_SWITCH_UNKNOWN1, 0, heap, + JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, NULL, NULL); + if (mModule != NULL) { mSize = 0; mResourceType = 7; } } - if(mModule==NULL&&sFileCache!=NULL) { - mModule = (OSModuleInfo*)sFileCache->getResource(0x72656C73/*rels*/,buffer); - if(mModule!=NULL) { + if (mModule == NULL && sFileCache != NULL) { + mModule = (OSModuleInfo*)sFileCache->getResource('rels', buffer); + if (mModule != NULL) { mSize = 0; mResourceType = 11; - JKRFileLoader::detachResource(mModule,NULL); + JKRFileLoader::detachResource(mModule, NULL); } } - if(mModule==NULL) { - OSReport_Error("\x44\x79\x6E\x61\x6D\x69\x63\x4D\x6F\x64\x75\x6C\x65\x43\x6F\x6E\x74\x72\x6F\x6C\x3A\x3A\x64\x6F\x5F\x6C\x6F\x61\x64\x28\x29\x20\x83\x8A\x83\x5C\x81\x5B\x83\x58\x93\xC7\x82\xDD\x8D\x9E\x82\xDD\x8E\xB8\x94\x73\x20\x5B\x25\x73\x5D\x0A",mName); + if (mModule == NULL) { + // "DynamicModuleControl::do_load() Resource load failure [%s]\n" + OSReport_Error( + "\x44\x79\x6E\x61\x6D\x69\x63\x4D\x6F\x64\x75\x6C\x65\x43\x6F\x6E\x74\x72\x6F\x6C" + "\x3A\x3A\x64\x6F\x5F\x6C\x6F\x61\x64\x28\x29\x20\x83\x8A\x83\x5C\x81\x5B\x83\x58" + "\x93\xC7\x82\xDD\x8D\x9E\x82\xDD\x8E\xB8\x94\x73\x20\x5B\x25\x73\x5D\x0A", + mName); return false; } - if(mSize>0) { - u32 sum = calcSum2((u16*)mModule,mSize); - if(unk_33==0) { - mChecksum=sum; + if (mSize > 0) { + u32 sum = calcSum2((u16*)mModule, mSize); + if (unk_33 == 0) { + mChecksum = sum; unk_33++; - }else{ - u32 newsum = sum&0xFFFF; - if(newsum!=mChecksum) { - OSReport_Error("DynamicModuleControl::do_load() チェックサムエラー %04x %04x[%s]\n",newsum,mChecksum,mName); + } else { + u32 newsum = sum & 0xFFFF; + if (newsum != mChecksum) { + OSReport_Error( + // "DynamicModuleControl::do_load() Checksum Error %04x %04x[%s]\n" + "DynamicModuleControl::do_load() チェックサムエラー %04x %04x[%s]\n", + newsum, mChecksum, mName); unk_33 = 0; i++; - if(i>=3) { + if (i >= 3) { return false; } } } - if(unk_33<0xFF) { + if (unk_33 < 0xFF) { unk_33++; return true; } } - if(unk_33<0xFF) { + if (unk_33 < 0xFF) { unk_33++; return true; } @@ -443,20 +459,23 @@ asm bool DynamicModuleControl::do_load() { /* 80262AFC-80262BC4 25D43C 00C8+00 1/0 0/0 0/0 .text do_load_async__20DynamicModuleControlFv */ bool DynamicModuleControl::do_load_async() { - if (mAsyncLoadCallback==NULL) { - if(mModule!=NULL) { + if (mAsyncLoadCallback == NULL) { + if (mModule != NULL) { return true; } - mAsyncLoadCallback = mDoDvdThd_callback_c::create(DynamicModuleControl::callback,this); - if(mAsyncLoadCallback==NULL) { - OSReport_Error("DynamicModuleControl::do_load_async() 非同期読み込みコールバック登録失敗 [%s]\n",mName); + mAsyncLoadCallback = mDoDvdThd_callback_c::create(DynamicModuleControl::callback, this); + if (mAsyncLoadCallback == NULL) { + OSReport_Error( + // "DynamicModuleControl::do_load_async() async load callback entry failure [%s]\n" + "DynamicModuleControl::do_load_async() 非同期読み込みコールバック登録失敗 [%s]\n", + mName); } } - if (mAsyncLoadCallback!=NULL&&mAsyncLoadCallback->sync()) { + if (mAsyncLoadCallback != NULL && mAsyncLoadCallback->sync()) { mAsyncLoadCallback->destroy(); mAsyncLoadCallback = NULL; return true; - }else{ + } else { return false; } } @@ -464,7 +483,7 @@ bool DynamicModuleControl::do_load_async() { /* 80262BC4-80262C0C 25D504 0048+00 1/0 0/0 0/0 .text do_unload__20DynamicModuleControlFv */ bool DynamicModuleControl::do_unload() { - if (mModule!=NULL){ + if (mModule != NULL) { JKRFree(mModule); mModule = NULL; } @@ -473,79 +492,87 @@ bool DynamicModuleControl::do_unload() { /* 80262C0C-80262C5C 25D54C 0050+00 1/0 0/0 0/0 .text dump2__20DynamicModuleControlFv */ void DynamicModuleControl::dump2() { - if (mModule!=NULL) { + if (mModule != NULL) { OSSectionInfo* section = (OSSectionInfo*)mModule->info.sectionInfoOffset; - OSSectionInfo* section2 = section+1; + OSSectionInfo* section2 = section + 1; u32 offset = section2->mOffset & ~(1); - OSReport("%08x-%08x %08x %08x",mModule,offset,offset+section2->mSize); + OSReport("%08x-%08x %08x %08x", mModule, offset, offset + section2->mSize); } } #ifdef NONMATCHING BOOL DynamicModuleControl::do_link() { OSGetTime(); - if(mModule==NULL) { + if (mModule == NULL) { do_load(); } - if(mModule!=NULL) { + if (mModule != NULL) { ASSERT(mModule->info.sectionInfoOffset < 0x80000000); ASSERT((u32)mModule + mModule->fixSize < 0x82000000); OSGetTime(); OSGetTime(); - if(mModule->mModuleVersion>=3) { + if (mModule->mModuleVersion >= 3) { u32 unk = mModule->fixSize; - u32 unk3 = (unk+0x1f) & ~0x1f; - u32 unk2 = (u32)mModule+unk3; - s32 size = JKRHeap::getSize(mModule,NULL); - if(size<0) { - void* bss = JKRHeap::alloc(mModule->mBssSize,0x20,NULL); - if (bss==NULL) { + u32 unk3 = (unk + 0x1f) & ~0x1f; + u32 unk2 = (u32)mModule + unk3; + s32 size = JKRHeap::getSize(mModule, NULL); + if (size < 0) { + void* bss = JKRHeap::alloc(mModule->mBssSize, 0x20, NULL); + if (bss == NULL) { + // "BSS Memory allocation failed\n" OSReport_Error("BSSメモリ確保失敗\n"); goto end; - }else{ + } else { mBss = bss; BOOL linkResult = OSLink(mModule); - if(linkResult==FALSE) { + if (linkResult == FALSE) { + // "link failed\n" OSReport_Error("リンク失敗\n"); goto end; } } - }else{ - if(mModule->mBssSize+unkmBssSize + unk < size) { + BOOL linkResult = OSLinkFixed(mModule, unk2); + if (linkResult == FALSE) { + // "link failed\n" OSReport_Error("リンク失敗\n"); goto end; - }else{ - s32 result = JKRHeap::resize(mModule,mModule->mBssSize+unk,NULL); - if (result<0) { + } else { + s32 result = JKRHeap::resize(mModule, mModule->mBssSize + unk, NULL); + if (result < 0) { + // "Module size (resize) failed\n" OSReport_Error("モジュールリサイズ(縮小)失敗\n"); } } - }else{ //lbl_80262DB0 - s32 result = JKRHeap::resize(mModule,mModule->mBssSize+unk,NULL); - if (result>0) { - BOOL linkResult = OSLinkFixed(mModule,unk2); - if(linkResult==FALSE) { + } else { // lbl_80262DB0 + s32 result = JKRHeap::resize(mModule, mModule->mBssSize + unk, NULL); + if (result > 0) { + BOOL linkResult = OSLinkFixed(mModule, unk2); + if (linkResult == FALSE) { + // "link failed\n" OSReport_Error("リンク失敗\n"); goto end; } - }else{ //lbl_80262DF0 - void* bss = JKRHeap::alloc(mModule->mBssSize,0x20,NULL); - if (bss==NULL) { - OSReport_Error("BSSメモリ確保失敗 [%x]\n",mModule->mBssSize); + } else { // lbl_80262DF0 + void* bss = JKRHeap::alloc(mModule->mBssSize, 0x20, NULL); + if (bss == NULL) { + // "BSS Memory allocation failure [%x]\n" + OSReport_Error("BSSメモリ確保失敗 [%x]\n", mModule->mBssSize); goto end; - }else{ //lbl_80262E2C + } else { // lbl_80262E2C mBss = bss; - BOOL linkResult = OSLinkFixed(mModule,(u32)bss); - if (linkResult==FALSE) { + BOOL linkResult = OSLinkFixed(mModule, (u32)bss); + if (linkResult == FALSE) { + // "link failed\n" OSReport_Error("リンク失敗\n"); goto end; } - //lbl_80262E58 - s32 result = JKRHeap::resize(mModule,unk3,NULL); - if (result<0) { + // lbl_80262E58 + s32 result = JKRHeap::resize(mModule, unk3, NULL); + if (result < 0) { + // "Module size (resize) failed\n" OSReport_Error("モジュールリサイズ(縮小)失敗\n"); } } @@ -553,7 +580,7 @@ BOOL DynamicModuleControl::do_link() { } } } - //lbl_80262E84 + // lbl_80262E84 OSGetTime(); sAllocBytes = sAllocBytes + getModuleSize(); OSGetTime(); @@ -562,14 +589,14 @@ BOOL DynamicModuleControl::do_link() { return TRUE; } -end: //lbl_80262ECC +end: // lbl_80262ECC unk_33 = 0; - if(mBss!=NULL) { - JKRHeap::free(mBss,NULL); + if (mBss != NULL) { + JKRHeap::free(mBss, NULL); mBss = NULL; } - if(mModule!=NULL) { - JKRHeap::free(mModule,NULL); + if (mModule != NULL) { + JKRHeap::free(mModule, NULL); mModule = NULL; } return FALSE; @@ -603,28 +630,29 @@ bool DynamicModuleControl::do_unlink() { OSTime time2 = OSGetTime(); BOOL unklink = OSUnlink(mModule); OSTime time3 = OSGetTime(); - if (unklink==FALSE) { - OSReport_Error("アンリンク失敗 mModule=%08x mBss=%08x\n",mModule,mBss); + if (unklink == FALSE) { + // "Unlink failed mModule=%08x mBss=%08x\n" + OSReport_Error("アンリンク失敗 mModule=%08x mBss=%08x\n", mModule, mBss); return false; } sAllocBytes = sAllocBytes - getModuleSize(); - if (mBss!=NULL) { + if (mBss != NULL) { JKRFree(mBss); mBss = NULL; } do_unload(); return true; -} +} /* 80263000-80263070 25D940 0070+00 1/0 0/0 0/0 .text getModuleSize__20DynamicModuleControlCFv */ int DynamicModuleControl::getModuleSize() const { - if (mModule!=NULL){ - u32 size = JKRGetMemBlockSize(NULL,mModule); - if (mBss!=NULL) { - JKRGetMemBlockSize(NULL,mBss); + if (mModule != NULL) { + u32 size = JKRGetMemBlockSize(NULL, mModule); + if (mBss != NULL) { + JKRGetMemBlockSize(NULL, mBss); } - return size+mModule->mBssSize; - }else{ + return size + mModule->mBssSize; + } else { return 0; } } @@ -632,8 +660,8 @@ int DynamicModuleControl::getModuleSize() const { /* 80263070-80263088 25D9B0 0018+00 1/0 0/0 0/0 .text * getModuleTypeString__20DynamicModuleControlCFv */ const char* DynamicModuleControl::getModuleTypeString() const { - static const char* strings[4] = {"????","MEM","ARAM","DVD"}; - return strings[mResourceType&3]; + static const char* strings[4] = {"????", "MEM", "ARAM", "DVD"}; + return strings[mResourceType & 3]; } /* 803C34C0-803C34F4 0205E0 0034+00 1/1 2/2 0/0 .data __vt__20DynamicModuleControl */ @@ -665,28 +693,29 @@ extern "C" void ModuleEpilog() { /* 80263090-8026314C 25D9D0 00BC+00 0/0 0/0 757/757 .text ModuleUnresolved */ extern "C" void ModuleUnresolved() { + // "\nError: Unlinked function was called.\n" OSReport_Error("\nError: リンクされていない関数が呼び出されました.\n"); OSReport_Error("Address: Back Chain LR Save\n"); u32 i = 0; u32* stackPtr = (u32*)OSGetStackPointer(); - while((stackPtr != NULL) && ((u32)stackPtr != 0xFFFFFFFF) && (i++ < 0x10)) { - OSReport_Error("0x%08x: 0x%08x 0x%08x\n",stackPtr,*stackPtr,*(stackPtr+1)); + while ((stackPtr != NULL) && ((u32)stackPtr != 0xFFFFFFFF) && (i++ < 0x10)) { + OSReport_Error("0x%08x: 0x%08x 0x%08x\n", stackPtr, *stackPtr, *(stackPtr + 1)); stackPtr = (u32*)*stackPtr; } OSReport_Error("\n"); } /* 8026314C-80263190 25DA8C 0044+00 0/0 0/0 757/757 .text ModuleConstructorsX */ -extern "C" void ModuleConstructorsX(void(**ctors)()) { - while (*ctors!=0) { +extern "C" void ModuleConstructorsX(void (**ctors)()) { + while (*ctors != 0) { (**ctors)(); ctors++; } } /* 80263190-802631D4 25DAD0 0044+00 0/0 0/0 757/757 .text ModuleDestructorsX */ -extern "C" void ModuleDestructorsX(void(**dtors)()) { - while (*dtors!=0) { +extern "C" void ModuleDestructorsX(void (**dtors)()) { + while (*dtors != 0) { (**dtors)(); dtors++; } -- cgit v1.2.3