mirror of https://github.com/zeldaret/tp.git
Match most of DynamicLink
This commit is contained in:
parent
6c681c985c
commit
346215bd49
|
|
@ -221,4 +221,8 @@ inline JKRHeap* JKRGetCurrentHeap() {
|
|||
return JKRHeap::getCurrentHeap();
|
||||
}
|
||||
|
||||
inline u32 JKRGetMemBlockSize(JKRHeap* heap,void* block) {
|
||||
return JKRHeap::getSize(block,heap);
|
||||
}
|
||||
|
||||
#endif /* JKRHEAP_H */
|
||||
|
|
|
|||
|
|
@ -115,12 +115,12 @@ private:
|
|||
/* 0x10 */ JUTConsole* mDirectConsole;
|
||||
}; // Size: 0x14
|
||||
|
||||
void JUTConsole_print_f_va_(JUTConsole*, const char*, va_list);
|
||||
void JUTSetReportConsole(JUTConsole*);
|
||||
JUTConsole* JUTGetReportConsole();
|
||||
void JUTSetWarningConsole(JUTConsole*);
|
||||
JUTConsole* JUTGetWarningConsole();
|
||||
void JUTReportConsole_f_va(const char*, va_list);
|
||||
void JUTReportConsole_f(const char*, ...);
|
||||
extern "C" void JUTConsole_print_f_va_(JUTConsole*, const char*, va_list);
|
||||
extern "C" void JUTSetReportConsole(JUTConsole*);
|
||||
extern "C" JUTConsole* JUTGetReportConsole();
|
||||
extern "C" void JUTSetWarningConsole(JUTConsole*);
|
||||
extern "C" JUTConsole* JUTGetWarningConsole();
|
||||
extern "C" void JUTReportConsole_f_va(const char*, va_list);
|
||||
extern "C" void JUTReportConsole_f(const char*, ...);
|
||||
|
||||
#endif /* JUTCONSOLE_H */
|
||||
|
|
|
|||
|
|
@ -3,34 +3,40 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct OSModuleInfo {
|
||||
u32 id;
|
||||
OSModuleInfo* next;
|
||||
OSModuleInfo* prev;
|
||||
u32 num_sections;
|
||||
u32 section_info_offset;
|
||||
u32 name_offset;
|
||||
u32 name_size;
|
||||
u32 version;
|
||||
u32 bss_size;
|
||||
u32 rel_offset;
|
||||
u32 imp_offset;
|
||||
u32 imp_size;
|
||||
u8 prolog_section;
|
||||
u8 epilog_section;
|
||||
u8 unresolved_section;
|
||||
u8 bss_section;
|
||||
u32 prolog;
|
||||
u32 epilog;
|
||||
u32 unresolved;
|
||||
u32 align;
|
||||
u32 bss_align;
|
||||
u32 fix_size;
|
||||
struct OSSectionInfo {
|
||||
u32 mOffset;
|
||||
u32 mSize;
|
||||
};
|
||||
|
||||
struct OSSectionInfo {
|
||||
u32 offset;
|
||||
u32 size;
|
||||
struct OSModuleInfo {
|
||||
u32 mId;
|
||||
OSModuleInfo* mNext;
|
||||
OSModuleInfo* mPrev;
|
||||
u32 mNumSections;
|
||||
struct { //Needed to get an assert corret; very likely bigger
|
||||
u32 sectionInfoOffset;
|
||||
} info;
|
||||
u32 mModuleNameOffset;
|
||||
u32 mModuleNameSize;
|
||||
u32 mModuleVersion;
|
||||
u32 mBssSize;
|
||||
u32 mRelocationTableOffset;
|
||||
u32 mImportTableOffset;
|
||||
u32 mImportTableSize;
|
||||
u8 mPrologSection;
|
||||
u8 mEpilogSection;
|
||||
u8 mUnresolvedSection;
|
||||
u8 mBssSection;
|
||||
u32 (*prolog)();
|
||||
void(*epilog)();
|
||||
u32 mUnresolvedFuncOffset;
|
||||
u32 mModuleAlignment;
|
||||
u32 mBssAlignment;
|
||||
u32 fixSize;
|
||||
};
|
||||
|
||||
extern "C" BOOL OSLink(OSModuleInfo*);
|
||||
extern "C" BOOL OSLinkFixed(OSModuleInfo*,u32);
|
||||
extern "C" BOOL OSUnlink(OSModuleInfo*);
|
||||
|
||||
#endif /* OSLINK_H */
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ public:
|
|||
public:
|
||||
/* 800158FC */ virtual ~mDoDvdThd_command_c();
|
||||
/* 80015B74 */ mDoDvdThd_command_c();
|
||||
inline s32 sync() {return mIsDone;}
|
||||
inline void destroy() {delete this;}
|
||||
virtual s32 execute() = 0;
|
||||
}; // Size = 0x14
|
||||
|
||||
|
|
|
|||
|
|
@ -111,8 +111,6 @@ extern "C" void create__12JUTAssertionFv();
|
|||
extern "C" void createManager__8JUTVideoFPC16_GXRenderModeObj();
|
||||
extern "C" void create__10JUTConsoleFUiUiP7JKRHeap();
|
||||
extern "C" void createManager__17JUTConsoleManagerFP7JKRHeap();
|
||||
extern "C" void JUTSetReportConsole();
|
||||
extern "C" void JUTSetWarningConsole();
|
||||
extern "C" void OSInit();
|
||||
extern "C" void OSGetCurrentThread();
|
||||
extern "C" void DVDInit();
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@ asm void JUTConsole::print(char const* param_0) {
|
|||
#pragma pop
|
||||
|
||||
/* 802E7F30-802E7F7C 2E2870 004C+00 1/1 1/1 0/0 .text JUTConsole_print_f_va_ */
|
||||
void JUTConsole_print_f_va_(JUTConsole* console, const char* fmt, va_list args) {
|
||||
extern "C" void JUTConsole_print_f_va_(JUTConsole* console, const char* fmt, va_list args) {
|
||||
char buf[1024];
|
||||
vsnprintf(buf, sizeof(buf), fmt, args);
|
||||
console->print(buf);
|
||||
|
|
@ -415,12 +415,12 @@ void JUTConsoleManager::setDirectConsole(JUTConsole* pConsole) {
|
|||
static JUTConsole* sReportConsole;
|
||||
|
||||
/* 802E8520-802E8528 2E2E60 0008+00 1/1 1/1 0/0 .text JUTSetReportConsole */
|
||||
void JUTSetReportConsole(JUTConsole* pConsole) {
|
||||
extern "C" void JUTSetReportConsole(JUTConsole* pConsole) {
|
||||
sReportConsole = pConsole;
|
||||
}
|
||||
|
||||
/* 802E8528-802E8530 -00001 0008+00 0/0 0/0 0/0 .text JUTGetReportConsole */
|
||||
JUTConsole* JUTGetReportConsole() {
|
||||
extern "C" JUTConsole* JUTGetReportConsole() {
|
||||
return sReportConsole;
|
||||
}
|
||||
|
||||
|
|
@ -429,17 +429,17 @@ JUTConsole* JUTGetReportConsole() {
|
|||
static JUTConsole* sWarningConsole;
|
||||
|
||||
/* 802E8530-802E8538 2E2E70 0008+00 1/1 1/1 0/0 .text JUTSetWarningConsole */
|
||||
void JUTSetWarningConsole(JUTConsole* pConsole) {
|
||||
extern "C" void JUTSetWarningConsole(JUTConsole* pConsole) {
|
||||
sWarningConsole = pConsole;
|
||||
}
|
||||
|
||||
/* 802E8538-802E8540 -00001 0008+00 0/0 0/0 0/0 .text JUTGetWarningConsole */
|
||||
JUTConsole* JUTGetWarningConsole() {
|
||||
extern "C" JUTConsole* JUTGetWarningConsole() {
|
||||
return sWarningConsole;
|
||||
}
|
||||
|
||||
/* 802E8540-802E85C8 2E2E80 0088+00 2/2 0/0 0/0 .text JUTReportConsole_f_va */
|
||||
void JUTReportConsole_f_va(const char* fmt, va_list args) {
|
||||
extern "C" void JUTReportConsole_f_va(const char* fmt, va_list args) {
|
||||
char buf[256];
|
||||
|
||||
if (JUTGetReportConsole() == NULL) {
|
||||
|
|
@ -451,7 +451,7 @@ void JUTReportConsole_f_va(const char* fmt, va_list args) {
|
|||
}
|
||||
|
||||
/* 802E85C8-802E8648 2E2F08 0080+00 2/2 8/8 0/0 .text JUTReportConsole_f */
|
||||
void JUTReportConsole_f(const char* fmt, ...) {
|
||||
extern "C" void JUTReportConsole_f(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
JUTReportConsole_f_va(fmt, args);
|
||||
|
|
|
|||
|
|
@ -338,25 +338,25 @@ bool JUTException::searchPartialModule(u32 address, u32* module_id, u32* section
|
|||
|
||||
OSModuleInfo* module = *(OSModuleInfo**)0x800030C8;
|
||||
while (module) {
|
||||
OSSectionInfo* section = (OSSectionInfo*)module->section_info_offset;
|
||||
for (u32 i = 0; i < module->num_sections; section++, i++) {
|
||||
if (section->size) {
|
||||
u32 addr = ALIGN_PREV(section->offset, 2);
|
||||
if ((addr <= address) && (address < addr + section->size)) {
|
||||
OSSectionInfo* section = (OSSectionInfo*)module->info.sectionInfoOffset;
|
||||
for (u32 i = 0; i < module->mNumSections; section=section+1, i++) {
|
||||
if (section->mSize) {
|
||||
u32 addr = ALIGN_PREV(section->mOffset, 2);
|
||||
if ((addr <= address) && (address < addr + section->mSize)) {
|
||||
if (module_id)
|
||||
*module_id = module->id;
|
||||
*module_id = module->mId;
|
||||
if (section_id)
|
||||
*section_id = i;
|
||||
if (section_offset)
|
||||
*section_offset = address - addr;
|
||||
if (name_offset)
|
||||
*name_offset = module->name_offset;
|
||||
*name_offset = module->mModuleNameOffset;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module = module->next;
|
||||
module = module->mNext;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -16,10 +16,7 @@ extern "C" static void OSNotifyUnlink();
|
|||
extern "C" void OSSetStringTable();
|
||||
extern "C" static void Relocate();
|
||||
extern "C" static void Link();
|
||||
extern "C" void OSLink();
|
||||
extern "C" void OSLinkFixed();
|
||||
extern "C" static void Undo();
|
||||
extern "C" void OSUnlink();
|
||||
extern "C" void __OSModuleInit();
|
||||
|
||||
//
|
||||
|
|
@ -125,7 +122,7 @@ static asm void Link() {
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void OSLink() {
|
||||
extern "C" asm BOOL OSLink(OSModuleInfo* info) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSLink.s"
|
||||
}
|
||||
|
|
@ -135,7 +132,7 @@ asm void OSLink() {
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void OSLinkFixed() {
|
||||
extern "C" asm BOOL OSLinkFixed(OSModuleInfo* info, u32 unk) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSLinkFixed.s"
|
||||
}
|
||||
|
|
@ -201,7 +198,7 @@ static asm void Undo() {
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void OSUnlink() {
|
||||
extern "C" asm BOOL OSUnlink(OSModuleInfo* info) {
|
||||
nofralloc
|
||||
#include "asm/dolphin/os/OSLink/OSUnlink.s"
|
||||
}
|
||||
|
|
|
|||
1009
src/DynamicLink.cpp
1009
src/DynamicLink.cpp
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue