dol2asm OK

This commit is contained in:
Julgodis
2021-03-28 22:49:05 +02:00
parent 88eb837a9c
commit d244b7cb0d
60106 changed files with 4755965 additions and 1107375 deletions
File diff suppressed because it is too large Load Diff
+344 -72
View File
@@ -1,96 +1,368 @@
#include "JSystem/JKernel/JKRAramArchive/JKRAramArchive.h"
#include "JSystem/JKernel/JKRAram/JKRAram.h"
#include "JSystem/JKernel/JKRExpHeap/JKRExpHeap.h"
#include "JSystem/JKernel/JKRFile/JKRFile.h"
#include "global.h"
#include "msl_c/string.h"
extern "C" {
int abs(int);
void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode(void);
void __ct__10JKRDvdFileFl(void);
void __dl__FPv(void);
void __dt__10JKRArchiveFv(void);
void __nw__FUlP7JKRHeapi(void);
void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode(void);
void alloc__7JKRHeapFUli(void);
void alloc__7JKRHeapFUliP7JKRHeap(void);
void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl(void);
void copyMemory__7JKRHeapFPvPvUl(void);
void DCInvalidateRange(void*, u32);
void fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc(void);
void fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli(void);
void findFsResource__10JKRArchiveCFPCcUl(void);
void findPtrResource__10JKRArchiveCFPCv(void);
void free__7JKRHeapFPv(void);
void free__7JKRHeapFPvP7JKRHeap(void);
void getAramAddress_Entry__14JKRAramArchiveFP12SDIFileEntry(void);
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(void);
void loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl(
void);
void open__14JKRAramArchiveFl(void);
void prepend__10JSUPtrListFP10JSUPtrLink(void);
void remove__10JSUPtrListFP10JSUPtrLink(void);
//
// Generated By: dol2asm
// Translation Unit: JKRAramArchive
//
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAramArchive.h"
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUPtrLink {
};
struct JSUPtrList {
/* 802DBFF0 */ void prepend(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
struct JKRHeap {
/* 802CE4D4 */ void alloc(u32, int);
/* 802CE474 */ void alloc(u32, int, JKRHeap*);
/* 802CE500 */ void free(void*, JKRHeap*);
/* 802CE548 */ void free(void*);
/* 802CEB18 */ void copyMemory(void*, void*, u32);
};
struct JKRFileLoader {
/* 802D41D4 */ void unmount();
};
struct JKRFile {
/* 802D7B90 */ ~JKRFile();
};
struct JKRExpandSwitch {
};
struct JKRDvdRipper {
struct EAllocDirection {
};
/* 802D9C54 */ void loadToMainRAM(s32, u8*, JKRExpandSwitch, u32, JKRHeap*, JKRDvdRipper::EAllocDirection, u32, int*, u32*);
};
struct JKRDvdFile {
/* 802D96A0 */ JKRDvdFile(s32);
};
struct JKRDvdAramRipper {
/* 802DA874 */ void loadToAram(s32, u32, JKRExpandSwitch, u32, u32, u32*);
};
struct JKRDisposer {
/* 802D14E4 */ ~JKRDisposer();
};
struct JKRArchive {
struct EMountDirection {
};
struct SDIFileEntry {
};
struct EMountMode {
};
/* 802D5A38 */ void becomeCurrent(char const*);
/* 802D5C64 */ void getResource(u32, char const*);
/* 802D5BE8 */ void getResource(char const*);
/* 802D5D8C */ void readResource(void*, u32, u32, char const*);
/* 802D5E30 */ void readResource(void*, u32, char const*);
/* 802D5FB4 */ void removeResourceAll();
/* 802D603C */ void removeResource(void*);
/* 802D609C */ void detachResource(void*);
/* 802D60D8 */ void getResSize(void const*) const;
/* 802D6150 */ void countFile(char const*) const;
/* 802D61B0 */ void getFirstFile(char const*) const;
/* 802D6294 */ JKRArchive(s32, JKRArchive::EMountMode);
/* 802D6334 */ ~JKRArchive();
/* 802D65A4 */ void findFsResource(char const*, u32) const;
/* 802D6734 */ void findPtrResource(void const*) const;
/* 802D693C */ void setExpandSize(JKRArchive::SDIFileEntry*, u32);
/* 802D6978 */ void getExpandSize(JKRArchive::SDIFileEntry*) const;
};
struct JKRAramHeap {
struct EAllocMode {
};
/* 802D2FBC */ void alloc(u32, JKRAramHeap::EAllocMode);
};
struct JKRAramArchive {
/* 802D70C0 */ JKRAramArchive(s32, JKRArchive::EMountDirection);
/* 802D7168 */ ~JKRAramArchive();
/* 802D72A8 */ void open(s32);
/* 802D75E0 */ void fetchResource(JKRArchive::SDIFileEntry*, u32*);
/* 802D76F4 */ void fetchResource(void*, u32, JKRArchive::SDIFileEntry*, u32*);
/* 802D77F8 */ void getAramAddress_Entry(JKRArchive::SDIFileEntry*);
/* 802D781C */ void getAramAddress(char const*);
/* 802D7914 */ void fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**);
/* 802D7858 */ void fetchResource_subroutine(u32, u32, u8*, u32, int);
/* 802D7A64 */ void getExpandedResSize(void const*) const;
};
struct JKRAram {
/* 802D25B4 */ void aramToMainRam(u32, u8*, u32, JKRExpandSwitch, u32, JKRHeap*, int, u32*);
};
//
// Forward References:
//
extern "C" extern char const* const JKRAramArchive__stringBase0;
extern "C" extern void* __vt__7JKRFile[8];
extern "C" void __ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection();
extern "C" void __dt__14JKRAramArchiveFv();
extern "C" void open__14JKRAramArchiveFl();
extern "C" void fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl();
extern "C" void fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl();
extern "C" void getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry();
extern "C" void getAramAddress__14JKRAramArchiveFPCc();
extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli();
extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc();
extern "C" void getExpandedResSize__14JKRAramArchiveCFPCv();
extern "C" void __dt__7JKRFileFv();
extern "C" extern char const* const JKRAramArchive__stringBase0;
extern "C" extern void* __vt__7JKRFile[8];
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" extern u8 sVolumeList__13JKRFileLoader[12];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sAramObject__7JKRAram[4];
SECTION_INIT void memset();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void alloc__7JKRHeapFUli();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void free__7JKRHeapFPv();
extern "C" void copyMemory__7JKRHeapFPvPvUl();
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void __dt__11JKRDisposerFv();
extern "C" void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl();
extern "C" void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode();
extern "C" void unmount__13JKRFileLoaderFv();
extern "C" void becomeCurrent__10JKRArchiveFPCc();
extern "C" void getResource__10JKRArchiveFPCc();
extern "C" void getResource__10JKRArchiveFUlPCc();
extern "C" void readResource__10JKRArchiveFPvUlUlPCc();
extern "C" void readResource__10JKRArchiveFPvUlPCc();
extern "C" void removeResourceAll__10JKRArchiveFv();
extern "C" void removeResource__10JKRArchiveFPv();
extern "C" void detachResource__10JKRArchiveFPv();
extern "C" void getResSize__10JKRArchiveCFPCv();
extern "C" void countFile__10JKRArchiveCFPCc();
extern "C" void getFirstFile__10JKRArchiveCFPCc();
extern "C" void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode();
extern "C" void __dt__10JKRArchiveFv();
extern "C" void findFsResource__10JKRArchiveCFPCcUl();
extern "C" void findPtrResource__10JKRArchiveCFPCv();
extern "C" void setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl();
extern "C" void getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry();
extern "C" void __ct__10JKRDvdFileFl();
extern "C" void loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl();
extern "C" void prepend__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void DCInvalidateRange();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void abs();
extern "C" extern u8 sVolumeList__13JKRFileLoader[12];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sAramObject__7JKRAram[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC328-803CC348 0020+00 s=1 e=4 z=0 None .data __vt__7JKRFile */
SECTION_DATA void* __vt__7JKRFile[8] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__7JKRFileFv,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 803CC348-803CC398 0050+00 s=2 e=0 z=0 None .data __vt__14JKRAramArchive */
SECTION_DATA static void* __vt__14JKRAramArchive[20] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__14JKRAramArchiveFv,
(void*)unmount__13JKRFileLoaderFv,
(void*)becomeCurrent__10JKRArchiveFPCc,
(void*)getResource__10JKRArchiveFPCc,
(void*)getResource__10JKRArchiveFUlPCc,
(void*)readResource__10JKRArchiveFPvUlPCc,
(void*)readResource__10JKRArchiveFPvUlUlPCc,
(void*)removeResourceAll__10JKRArchiveFv,
(void*)removeResource__10JKRArchiveFPv,
(void*)detachResource__10JKRArchiveFPv,
(void*)getResSize__10JKRArchiveCFPCv,
(void*)countFile__10JKRArchiveCFPCc,
(void*)getFirstFile__10JKRArchiveCFPCc,
(void*)getExpandedResSize__14JKRAramArchiveCFPCv,
(void*)fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl,
(void*)fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl,
(void*)setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl,
(void*)getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry,
};
/* 802D70C0-802D7168 00A8+00 s=0 e=1 z=0 None .text __ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramArchive::JKRAramArchive(s32 param_0, JKRArchive::EMountDirection param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s"
}
#pragma pop
extern JKRExpHeap* sSystemHeap__7JKRHeap;
extern u8 lbl_803CC348; // JKRAramArchive::__vt
extern JSUList<JKRFileLoader> sVolumeList__13JKRFileLoader; // JKRFileLoader::sVolumeList
extern u8 lbl_8039D188; // "JKRAramArchive.cpp"
asm JKRAramArchive::JKRAramArchive(long, JKRArchive::EMountDirection) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D70C0.s"
}
/* 802D7168-802D72A8 0140+00 s=1 e=0 z=0 None .text __dt__14JKRAramArchiveFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramArchive::~JKRAramArchive() {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D7168.s"
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s"
}
#pragma pop
asm void JKRAramArchive::open(long) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D72A8.s"
/* 802D72A8-802D75E0 0338+00 s=1 e=0 z=0 None .text open__14JKRAramArchiveFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::open(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/open__14JKRAramArchiveFl.s"
}
#pragma pop
asm void* JKRAramArchive::fetchResource(SDIFileEntry*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D75E0.s"
/* 802D75E0-802D76F4 0114+00 s=1 e=0 z=0 None .text fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::fetchResource(JKRArchive::SDIFileEntry* param_0, u32* param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s"
}
#pragma pop
asm void* JKRAramArchive::fetchResource(void*, u32, SDIFileEntry*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D76F4.s"
/* 802D76F4-802D77F8 0104+00 s=1 e=0 z=0 None .text fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::fetchResource(void* param_0, u32 param_1, JKRArchive::SDIFileEntry* param_2, u32* param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl.s"
}
#pragma pop
asm void JKRAramArchive::getAramAddress_Entry(SDIFileEntry*) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D77F8.s"
/* 802D77F8-802D781C 0024+00 s=1 e=0 z=0 None .text getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::getAramAddress_Entry(JKRArchive::SDIFileEntry* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s"
}
#pragma pop
asm void JKRAramArchive::getAramAddress(char const*) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D781C.s"
/* 802D781C-802D7858 003C+00 s=0 e=1 z=0 None .text getAramAddress__14JKRAramArchiveFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::getAramAddress(char const* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s"
}
#pragma pop
asm void JKRAramArchive::fetchResource_subroutine(u32, u32, u8*, u32, int) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D7858.s"
/* ############################################################################################## */
/* 8039D188-8039D1B0 0028+00 s=2 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D188 = "JKRAramArchive.cpp";
SECTION_DEAD char const* const stringBase_8039D19B = "%s";
SECTION_DEAD char const* const stringBase_8039D19E = "??? bad sequence\n";
#pragma pop
/* 802D7858-802D7914 00BC+00 s=1 e=1 z=0 None .text fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, u8* param_2, u32 param_3, int param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s"
}
#pragma pop
asm void JKRAramArchive::fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D7914.s"
/* 802D7914-802D7A64 0150+00 s=1 e=1 z=0 None .text fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, JKRHeap* param_2, int param_3, u8** param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc.s"
}
#pragma pop
asm u32 JKRAramArchive::getExpandedResSize(void const*) {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D7A64.s"
/* 802D7A64-802D7B90 012C+00 s=1 e=0 z=0 None .text getExpandedResSize__14JKRAramArchiveCFPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramArchive::getExpandedResSize(void const* param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s"
}
#pragma pop
#if 0
/* 802D7B90-802D7BF0 0060+00 s=1 e=0 z=0 None .text __dt__7JKRFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRFile::~JKRFile() {
nofralloc
#include "JSystem/JKernel/JKRAramArchive/asm/func_802D7B90.s"
nofralloc
#include "asm/JSystem/JKernel/JKRAramArchive/__dt__7JKRFileFv.s"
}
#endif
#pragma pop
+112 -50
View File
@@ -1,60 +1,122 @@
#include "JSystem/JKernel/JKRAramBlock/JKRAramBlock.h"
#include "JSystem/JKernel/JKRAramHeap/JKRAramHeap.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRAramBlock
//
JKRAramBlock::JKRAramBlock(u32 address, u32 size, u32 freeSize, u8 groupId, bool isTempMemory)
: mBlockLink(this) {
mAddress = address;
mSize = size;
mFreeSize = freeSize;
mGroupId = groupId;
mIsTempMemory = isTempMemory;
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAramBlock.h"
//
// Types:
//
struct JSUPtrLink {
/* 802DBDFC */ JSUPtrLink(void*);
/* 802DBE14 */ ~JSUPtrLink();
};
struct JSUPtrList {
/* 802DC094 */ void insert(JSUPtrLink*, JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
struct JKRHeap {
};
struct JKRAramHeap {
};
struct JKRAramBlock {
/* 802D3304 */ JKRAramBlock(u32, u32, u32, u8, bool);
/* 802D3378 */ ~JKRAramBlock();
/* 802D3434 */ void allocHead(u32, u8, JKRAramHeap*);
/* 802D34D0 */ void allocTail(u32, u8, JKRAramHeap*);
};
//
// Forward References:
//
extern "C" void __ct__12JKRAramBlockFUlUlUlUcb();
extern "C" void __dt__12JKRAramBlockFv();
extern "C" void allocHead__12JKRAramBlockFUlUcP11JKRAramHeap();
extern "C" void allocTail__12JKRAramBlockFUlUcP11JKRAramHeap();
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void __ct__10JSUPtrLinkFPv();
extern "C" void __dt__10JSUPtrLinkFv();
extern "C" void insert__10JSUPtrListFP10JSUPtrLinkP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC178-803CC188 000C+04 s=2 e=0 z=0 None .data __vt__12JKRAramBlock */
SECTION_DATA static void* __vt__12JKRAramBlock[3 + 1 /* padding */] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__12JKRAramBlockFv,
/* padding */
NULL,
};
/* 802D3304-802D3378 0074+00 s=2 e=1 z=0 None .text __ct__12JKRAramBlockFUlUlUlUcb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramBlock::JKRAramBlock(u32 param_0, u32 param_1, u32 param_2, u8 param_3, bool param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramBlock/__ct__12JKRAramBlockFUlUlUlUcb.s"
}
#pragma pop
JKRAramBlock::~JKRAramBlock() {
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
JSULink<JKRAramBlock>* prev = mBlockLink.getPrev();
if (prev) {
JKRAramBlock* block = prev->getObject();
block->mFreeSize = mSize + mFreeSize + block->mFreeSize;
list->remove(&mBlockLink);
} else {
mFreeSize = mFreeSize + mSize;
mSize = 0;
}
/* 802D3378-802D3434 00BC+00 s=1 e=0 z=0 None .text __dt__12JKRAramBlockFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramBlock::~JKRAramBlock() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramBlock/__dt__12JKRAramBlockFv.s"
}
#pragma pop
JKRAramBlock* JKRAramBlock::allocHead(u32 size, u8 groupId, JKRAramHeap* aramHeap) {
u32 address = mAddress;
u32 usedSize = mSize;
u32 nextAddress = address + usedSize;
u32 freeSize = mFreeSize;
u32 nextFreeSize = freeSize - size;
JKRAramBlock* block = new (aramHeap->getMgrHeap(), 0)
JKRAramBlock(nextAddress, size, nextFreeSize, groupId, false);
mFreeSize = 0;
JSULink<JKRAramBlock>* next = mBlockLink.getNext();
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
list->insert(next, &block->mBlockLink);
return block;
/* 802D3434-802D34D0 009C+00 s=0 e=1 z=0 None .text allocHead__12JKRAramBlockFUlUcP11JKRAramHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramBlock::allocHead(u32 param_0, u8 param_1, JKRAramHeap* param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramBlock/allocHead__12JKRAramBlockFUlUcP11JKRAramHeap.s"
}
#pragma pop
JKRAramBlock* JKRAramBlock::allocTail(u32 size, u8 groupId, JKRAramHeap* aramHeap) {
u32 freeSize = mFreeSize;
u32 address = mAddress;
u32 usedSize = mSize;
u32 endAddress = address + usedSize + freeSize;
u32 tailAddress = endAddress - size;
JKRAramBlock* block =
new (aramHeap->getMgrHeap(), 0) JKRAramBlock(tailAddress, size, 0, groupId, true);
mFreeSize -= size;
JSULink<JKRAramBlock>* next = mBlockLink.getNext();
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
list->insert(next, &block->mBlockLink);
return block;
/* 802D34D0-802D3574 00A4+00 s=0 e=1 z=0 None .text allocTail__12JKRAramBlockFUlUcP11JKRAramHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramBlock::allocTail(u32 param_0, u8 param_1, JKRAramHeap* param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramBlock/allocTail__12JKRAramBlockFUlUcP11JKRAramHeap.s"
}
#pragma pop
+203 -136
View File
@@ -1,162 +1,229 @@
#include "JSystem/JKernel/JKRAramHeap/JKRAramHeap.h"
#include "JSystem/JKernel/JKRAramBlock/JKRAramBlock.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
extern "C" {
void __dl__FPv(void);
void __dt__11JKRDisposerFv(void);
//
// Generated By: dol2asm
// Translation Unit: JKRAramHeap
//
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAramHeap.h"
//
// Types:
//
struct JSUPtrLink {
};
struct JSUPtrList {
/* 802DBEAC */ ~JSUPtrList();
/* 802DBF14 */ void initiate();
/* 802DBF4C */ void append(JSUPtrLink*);
};
template <typename A0>
struct JSUList { };
/* JSUList<JKRAramBlock> */
struct JSUList__template6 {
/* 802D32B0 */ ~JSUList__template6();
};
struct JKRHeap {
/* 802CE83C */ void findFromRoot(void*);
};
struct JKRDisposer {
/* 802D147C */ JKRDisposer();
/* 802D14E4 */ ~JKRDisposer();
};
struct JKRAramHeap {
struct EAllocMode {
};
/* 802D2E44 */ JKRAramHeap(u32, u32);
/* 802D2F14 */ ~JKRAramHeap();
/* 802D2FBC */ void alloc(u32, JKRAramHeap::EAllocMode);
/* 802D3034 */ void allocFromHead(u32);
/* 802D30BC */ void allocFromTail(u32);
/* 802D3134 */ void getFreeSize();
/* 802D31AC */ void getTotalFreeSize();
/* 802D3218 */ void dump();
};
struct JKRAramBlock {
/* 802D3304 */ JKRAramBlock(u32, u32, u32, u8, bool);
/* 802D3434 */ void allocHead(u32, u8, JKRAramHeap*);
/* 802D34D0 */ void allocTail(u32, u8, JKRAramHeap*);
};
//
// Forward References:
//
extern "C" void __ct__11JKRAramHeapFUlUl();
extern "C" void __dt__11JKRAramHeapFv();
extern "C" void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode();
extern "C" void allocFromHead__11JKRAramHeapFUl();
extern "C" void allocFromTail__11JKRAramHeapFUl();
extern "C" void getFreeSize__11JKRAramHeapFv();
extern "C" void getTotalFreeSize__11JKRAramHeapFv();
extern "C" void dump__11JKRAramHeapFv();
extern "C" void __sinit_JKRAramHeap_cpp();
extern "C" void func_802D32B0();
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" void findFromRoot__7JKRHeapFPv();
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void __ct__11JKRDisposerFv();
extern "C" void __dt__11JKRDisposerFv();
extern "C" void __ct__12JKRAramBlockFUlUlUlUcb();
extern "C" void allocHead__12JKRAramBlockFUlUcP11JKRAramHeap();
extern "C" void allocTail__12JKRAramBlockFUlUcP11JKRAramHeap();
extern "C" void __dt__10JSUPtrListFv();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void OSInitMutex();
extern "C" void OSLockMutex();
extern "C" void OSUnlockMutex();
extern "C" void __register_global_object();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC168-803CC178 000C+04 s=2 e=0 z=0 None .data __vt__11JKRAramHeap */
SECTION_DATA static void* __vt__11JKRAramHeap[3 + 1 /* padding */] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__11JKRAramHeapFv,
/* padding */
NULL,
};
/* 80434300-8043430C 000C+00 s=1 e=0 z=0 None .bss @297 */
static u8 lit_297[12];
/* 8043430C-80434318 000C+00 s=8 e=0 z=0 None .bss sAramList__11JKRAramHeap */
static u8 sAramList__11JKRAramHeap[12];
/* 802D2E44-802D2F14 00D0+00 s=0 e=1 z=0 None .text __ct__11JKRAramHeapFUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramHeap::JKRAramHeap(u32 param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/__ct__11JKRAramHeapFUlUl.s"
}
#pragma pop
extern JSUList<JKRAramBlock> lbl_8043430C; // JKRAramHeap::sAramList
extern u8 lbl_803CC168; // JKRAramHeap::__vt
JKRAramHeap::JKRAramHeap(u32 startAddress, u32 size) {
OSInitMutex(&mMutex);
mHeap = JKRHeap::findFromRoot(this);
mSize = ALIGN_PREV(size, 0x20);
mHeadAddress = ALIGN_NEXT(startAddress, 0x20);
mTailAddress = mHeadAddress + mSize;
mGroupId = -1;
JKRAramBlock* block = new (mHeap, 0) JKRAramBlock(mHeadAddress, 0, mSize, -1, false);
lbl_8043430C.append(&block->mBlockLink);
}
// close match, regalloc problem in the beginning of the while loop
#if NONMATCHING
JKRAramHeap::~JKRAramHeap() {
JSUList<JKRAramBlock>* list = &lbl_8043430C;
JSUListIterator<JKRAramBlock> iterator = list;
while (iterator != list->getEnd()) {
JSUListIterator<JKRAramBlock> prev = iterator;
JKRAramBlock* block = prev.getObject();
delete block;
}
}
#else
/* 802D2F14-802D2FBC 00A8+00 s=1 e=0 z=0 None .text __dt__11JKRAramHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramHeap::~JKRAramHeap() {
nofralloc
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D2F14.s"
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/__dt__11JKRAramHeapFv.s"
}
#endif
#pragma pop
JKRAramBlock* JKRAramHeap::alloc(u32 size, JKRAramHeap::EAllocMode allocationMode) {
lock();
JKRAramBlock* block;
if (allocationMode == JKRAramHeap::HEAD) {
block = allocFromHead(size);
} else {
block = allocFromTail(size);
}
unlock();
return block;
/* 802D2FBC-802D3034 0078+00 s=0 e=5 z=0 None .text alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::alloc(u32 param_0, JKRAramHeap::EAllocMode param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode.s"
}
#pragma pop
JKRAramBlock* JKRAramHeap::allocFromHead(u32 size) {
u32 alignedSize = ALIGN_NEXT(size, 0x20);
u32 bestFreeSize = UINT32_MAX;
JKRAramBlock* bestBlock = NULL;
JSUList<JKRAramBlock>* list = &lbl_8043430C;
for (JSUListIterator<JKRAramBlock> iterator = list; iterator != list->getEnd(); ++iterator) {
JKRAramBlock* block = iterator.getObject();
if (block->mFreeSize < alignedSize)
continue;
if (bestFreeSize <= block->mFreeSize)
continue;
bestFreeSize = block->mFreeSize;
bestBlock = block;
if (block->mFreeSize == alignedSize) {
break;
}
}
if (bestBlock) {
return bestBlock->allocHead(alignedSize, mGroupId, this);
}
return NULL;
/* 802D3034-802D30BC 0088+00 s=1 e=0 z=0 None .text allocFromHead__11JKRAramHeapFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::allocFromHead(u32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/allocFromHead__11JKRAramHeapFUl.s"
}
#pragma pop
JKRAramBlock* JKRAramHeap::allocFromTail(u32 size) {
u32 alignedSize = ALIGN_NEXT(size, 0x20);
JKRAramBlock* tailBlock = NULL;
JSUList<JKRAramBlock>* list = &lbl_8043430C;
JSUListIterator<JKRAramBlock> iterator = list->getLast();
for (; iterator != list->getEnd(); --iterator) {
JKRAramBlock* block = iterator.getObject();
if (block->mFreeSize >= alignedSize) {
tailBlock = block;
break;
}
}
if (tailBlock) {
return tailBlock->allocTail(alignedSize, mGroupId, this);
}
return NULL;
/* 802D30BC-802D3134 0078+00 s=1 e=0 z=0 None .text allocFromTail__11JKRAramHeapFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::allocFromTail(u32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/allocFromTail__11JKRAramHeapFUl.s"
}
#pragma pop
u32 JKRAramHeap::getFreeSize(void) {
u32 maxFreeSize = 0;
lock();
JSUList<JKRAramBlock>* list = &lbl_8043430C;
JSUListIterator<JKRAramBlock> iterator = list;
for (; iterator != list->getEnd(); ++iterator) {
if (iterator->mFreeSize > maxFreeSize) {
maxFreeSize = iterator->mFreeSize;
}
}
unlock();
return maxFreeSize;
/* 802D3134-802D31AC 0078+00 s=0 e=1 z=0 None .text getFreeSize__11JKRAramHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::getFreeSize() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/getFreeSize__11JKRAramHeapFv.s"
}
#pragma pop
u32 JKRAramHeap::getTotalFreeSize(void) {
u32 totalFreeSize = 0;
lock();
JSUList<JKRAramBlock>* list = &lbl_8043430C;
JSUListIterator<JKRAramBlock> iterator = list;
for (; iterator != list->getEnd(); ++iterator) {
totalFreeSize += iterator->mFreeSize;
}
unlock();
return totalFreeSize;
/* 802D31AC-802D3218 006C+00 s=0 e=2 z=0 None .text getTotalFreeSize__11JKRAramHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::getTotalFreeSize() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/getTotalFreeSize__11JKRAramHeapFv.s"
}
#pragma pop
void JKRAramHeap::dump(void) {
lock();
JSUList<JKRAramBlock>* list = &lbl_8043430C;
JSUListIterator<JKRAramBlock> iterator = list;
for (; iterator != list->getEnd(); ++iterator) {
// The debug version calls OSReport
}
unlock();
/* 802D3218-802D326C 0054+00 s=0 e=2 z=0 None .text dump__11JKRAramHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramHeap::dump() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/dump__11JKRAramHeapFv.s"
}
#pragma pop
#if 0
asm void __sinit_JKRAramHeap_cpp {
nofralloc
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D326C.s"
}
asm JSUList<12JKRAramBlock>::~JSUList<12JKRAramBlock>(void) {
nofralloc
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D32B0.s"
/* 802D326C-802D32B0 0044+00 s=0 e=1 z=0 None .text __sinit_JKRAramHeap_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __sinit_JKRAramHeap_cpp() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/__sinit_JKRAramHeap_cpp.s"
}
#endif
#pragma pop
/* 802D32B0-802D3304 0054+00 s=1 e=0 z=0 None .text __dt__23JSUList<12JKRAramBlock>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JSUList__template6::~JSUList__template6() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramHeap/func_802D32B0.s"
}
#pragma pop
+230 -124
View File
@@ -1,152 +1,258 @@
#include "JSystem/JKernel/JKRAramPiece/JKRAramPiece.h"
#include "JSystem/JKernel/JKRAram/JKRAram.h"
#include "JSystem/JKernel/JKRDecomp/JKRDecomp.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRAramPiece
//
extern "C" {
void DCInvalidateRange(void*, u32);
void DCStoreRange(void*, u32);
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAramPiece.h"
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUPtrLink {
/* 802DBDFC */ JSUPtrLink(void*);
/* 802DBE14 */ ~JSUPtrLink();
};
struct JSUPtrList {
/* 802DBF14 */ void initiate();
/* 802DBF4C */ void append(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
template <typename A0>
struct JSUList { };
/* JSUList<JKRAMCommand> */
struct JSUList__template5 {
/* 802D2DF0 */ ~JSUList__template5();
};
struct JKRHeap {
/* 802CE500 */ void free(void*, JKRHeap*);
};
struct JKRDecompCommand {
};
struct JKRDecomp {
/* 802DB8D0 */ void sendCommand(JKRDecompCommand*);
};
struct JKRAramBlock {
};
struct JKRAMCommand {
/* 802D39EC */ JKRAMCommand();
/* 802D3A5C */ ~JKRAMCommand();
};
struct JKRAramPiece {
/* 802D3574 */ void prepareCommand(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
/* 802D35F4 */ void sendCommand(JKRAMCommand*);
/* 802D3614 */ void orderAsync(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
/* 802D3770 */ void sync(JKRAMCommand*, int);
/* 802D3838 */ void orderSync(int, u32, u32, u32, JKRAramBlock*);
/* 802D38CC */ void startDMA(JKRAMCommand*);
/* 802D3944 */ void doneDMA(u32);
};
//
// Forward References:
//
extern "C" extern char const* const JKRAramPiece__stringBase0;
extern "C" void prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v();
extern "C" void sendCommand__12JKRAramPieceFP12JKRAMCommand();
extern "C" void orderAsync__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v();
extern "C" void sync__12JKRAramPieceFP12JKRAMCommandi();
extern "C" void orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock();
extern "C" void startDMA__12JKRAramPieceFP12JKRAMCommand();
extern "C" void doneDMA__12JKRAramPieceFUl();
extern "C" void __ct__12JKRAMCommandFv();
extern "C" void __dt__12JKRAMCommandFv();
extern "C" void __sinit_JKRAramPiece_cpp();
extern "C" extern char const* const JKRAramPiece__stringBase0;
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" extern u8 sMessageQueue__7JKRAram[32];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" void OSReport();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void func_802D2DF0();
extern "C" void sendCommand__9JKRDecompFP16JKRDecompCommand();
extern "C" void __ct__10JSUPtrLinkFPv();
extern "C" void __dt__10JSUPtrLinkFv();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void DCInvalidateRange();
extern "C" void DCStoreRange();
extern "C" void OSInitMessageQueue();
extern "C" void OSSendMessage();
extern "C" void OSReceiveMessage();
extern "C" void OSLockMutex();
extern "C" void OSUnlockMutex();
extern "C" void ARQPostRequest();
extern "C" void __register_global_object();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" extern u8 sMessageQueue__7JKRAram[32];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
//
// Declarations:
//
/* 802D3574-802D35F4 0080+00 s=1 e=0 z=0 None .text prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::prepareCommand(int param_0, u32 param_1, u32 param_2, u32 param_3, JKRAramBlock* param_4, void (*)(u32)) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v.s"
}
#pragma pop
extern JSUList<JKRAMCommand> lbl_80434324; // JKRAramPiece::sAramPieceCommandList
JKRAMCommand* JKRAramPiece::prepareCommand(int direction, u32 src, u32 dst, u32 length,
JKRAramBlock* block,
JKRAMCommand::AsyncCallback callback) {
JKRAMCommand* command = new (JKRHeap::getSystemHeap(), -4) JKRAMCommand();
command->mTransferDirection = direction;
command->mSrc = src;
command->mDst = dst;
command->mAramBlock = block;
command->mDataLength = length;
command->mCallback = callback;
return command;
/* 802D35F4-802D3614 0020+00 s=0 e=1 z=0 None .text sendCommand__12JKRAramPieceFP12JKRAMCommand */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::sendCommand(JKRAMCommand* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/sendCommand__12JKRAramPieceFP12JKRAMCommand.s"
}
#pragma pop
void JKRAramPiece::sendCommand(JKRAMCommand* command) {
startDMA(command);
/* ############################################################################################## */
/* 8039D0B8-8039D120 0068+00 s=1 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D0B8 = "direction = %x\n";
SECTION_DEAD char const* const stringBase_8039D0C8 = "source = %x\n";
SECTION_DEAD char const* const stringBase_8039D0D5 = "destination = %x\n";
SECTION_DEAD char const* const stringBase_8039D0E7 = "length = %x\n";
SECTION_DEAD char const* const stringBase_8039D0F4 = "JKRAramPiece.cpp";
SECTION_DEAD char const* const stringBase_8039D105 = "%s";
SECTION_DEAD char const* const stringBase_8039D108 = "illegal address. abort.";
#pragma pop
/* 80434318-80434324 000C+00 s=1 e=0 z=0 None .bss @492 */
static u8 lit_492[12];
/* 80434324-80434330 000C+00 s=3 e=0 z=0 None .bss sAramPieceCommandList__12JKRAramPiece */
static u8 sAramPieceCommandList__12JKRAramPiece[12];
/* 80434330-80434348 0018+00 s=3 e=0 z=0 None .bss mMutex__12JKRAramPiece */
static u8 mMutex__12JKRAramPiece[24];
/* 802D3614-802D3770 015C+00 s=1 e=0 z=0 None .text orderAsync__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::orderAsync(int param_0, u32 param_1, u32 param_2, u32 param_3, JKRAramBlock* param_4, void (*)(u32)) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/orderAsync__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v.s"
}
#pragma pop
JKRAMCommand* JKRAramPiece::orderAsync(int direction, u32 source, u32 destination, u32 length,
JKRAramBlock* block, JKRAMCommand::AsyncCallback callback) {
lock();
if (((source & 0x1f) != 0) || ((destination & 0x1f) != 0)) {
OSReport("direction = %x\n", direction);
OSReport("source = %x\n", source);
OSReport("destination = %x\n", destination);
OSReport("length = %x\n", length);
panic_f__12JUTExceptionFPCciPCce("JKRAramPiece.cpp", 0x6c, "%s", "illegal address. abort.");
}
Message* message = new (JKRHeap::getSystemHeap(), -4) Message();
JKRAMCommand* command =
JKRAramPiece::prepareCommand(direction, source, destination, length, block, callback);
message->field_0x00 = 1;
message->command = command;
OSSendMessage(&JKRAram::sMessageQueue, message, OS_MESSAGE_BLOCKING);
if (command->mCallback != NULL) {
lbl_80434324.append(&command->mPieceLink);
}
unlock();
return command;
/* 802D3770-802D3838 00C8+00 s=1 e=0 z=0 None .text sync__12JKRAramPieceFP12JKRAMCommandi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::sync(JKRAMCommand* param_0, int param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/sync__12JKRAramPieceFP12JKRAMCommandi.s"
}
#pragma pop
BOOL JKRAramPiece::sync(JKRAMCommand* command, int is_non_blocking) {
OSMessage message;
lock();
if (is_non_blocking == 0) {
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_BLOCKING);
lbl_80434324.remove(&command->mPieceLink);
unlock();
return TRUE;
}
BOOL result = OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_NON_BLOCKING);
if (!result) {
unlock();
return FALSE;
}
lbl_80434324.remove(&command->mPieceLink);
unlock();
return TRUE;
/* 802D3838-802D38CC 0094+00 s=0 e=6 z=0 None .text orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::orderSync(int param_0, u32 param_1, u32 param_2, u32 param_3, JKRAramBlock* param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock.s"
}
#pragma pop
BOOL JKRAramPiece::orderSync(int direction, u32 source, u32 destination, u32 length,
JKRAramBlock* block) {
lock();
JKRAMCommand* command =
JKRAramPiece::orderAsync(direction, source, destination, length, block, NULL);
BOOL result = JKRAramPiece::sync(command, 0);
delete command;
unlock();
return result;
/* 802D38CC-802D3944 0078+00 s=1 e=1 z=0 None .text startDMA__12JKRAramPieceFP12JKRAMCommand */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::startDMA(JKRAMCommand* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/startDMA__12JKRAramPieceFP12JKRAMCommand.s"
}
#pragma pop
void JKRAramPiece::startDMA(JKRAMCommand* command) {
if (command->mTransferDirection == 1) {
DCInvalidateRange((void*)command->mDst, command->mDataLength);
} else {
DCStoreRange((void*)command->mSrc, command->mDataLength);
}
ARQPostRequest(&command->mRequest, 0, command->mTransferDirection, 0, command->mSrc,
command->mDst, command->mDataLength, JKRAramPiece::doneDMA);
/* 802D3944-802D39EC 00A8+00 s=1 e=0 z=0 None .text doneDMA__12JKRAramPieceFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramPiece::doneDMA(u32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/doneDMA__12JKRAramPieceFUl.s"
}
#pragma pop
void JKRAramPiece::doneDMA(u32 requestAddress) {
JKRAMCommand* command = (JKRAMCommand*)requestAddress;
if (command->mTransferDirection == 1) {
DCInvalidateRange((void*)command->mDst, command->mDataLength);
}
if (command->field_0x60 != 0) {
if (command->field_0x60 == 2) {
JKRDecomp::sendCommand(command->mDecompCommand);
}
return;
}
if (command->mCallback) {
(*command->mCallback)(requestAddress);
} else if (command->field_0x5C) {
OSSendMessage(command->field_0x5C, command, OS_MESSAGE_NON_BLOCKING);
} else {
OSSendMessage(&command->mMessageQueue, command, OS_MESSAGE_NON_BLOCKING);
}
/* 802D39EC-802D3A5C 0070+00 s=1 e=0 z=0 None .text __ct__12JKRAMCommandFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAMCommand::JKRAMCommand() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/__ct__12JKRAMCommandFv.s"
}
#pragma pop
JKRAMCommand::JKRAMCommand() : mPieceLink(this), field_0x30(this) {
OSInitMessageQueue(&mMessageQueue, &mMessage, 1);
mCallback = NULL;
field_0x5C = NULL;
field_0x60 = 0;
field_0x8C = NULL;
field_0x90 = NULL;
field_0x94 = NULL;
/* 802D3A5C-802D3B04 00A8+00 s=1 e=0 z=0 None .text __dt__12JKRAMCommandFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAMCommand::~JKRAMCommand() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/__dt__12JKRAMCommandFv.s"
}
#pragma pop
JKRAMCommand::~JKRAMCommand() {
if (field_0x8C)
delete field_0x8C;
if (field_0x90)
delete field_0x90;
if (field_0x94)
JKRHeap::free(field_0x94, NULL);
/* 802D3B04-802D3B48 0044+00 s=0 e=1 z=0 None .text __sinit_JKRAramPiece_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __sinit_JKRAramPiece_cpp() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramPiece/__sinit_JKRAramPiece_cpp.s"
}
#pragma pop
#if 0
asm void __sinit_JKRAramPiece_cpp {
nofralloc
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3B04.s"
}
#endif
+264 -205
View File
@@ -1,223 +1,282 @@
#include "JSystem/JKernel/JKRAramStream/JKRAramStream.h"
#include "JSystem/JKernel/JKRAramPiece/JKRAramPiece.h"
#include "JSystem/JKernel/JKRExpHeap/JKRExpHeap.h"
#include "global.h"
extern "C" {
s32 read__14JSUInputStreamFPvl(JSUInputStream*, u8*, u32);
void alloc__7JKRHeapFUli(void);
void alloc__7JKRHeapFUliP7JKRHeap(void);
void free__7JKRHeapFPvP7JKRHeap(void);
void seek__20JSURandomInputStreamFl17JSUStreamSeekFrom(JSURandomInputStream*, u32, u32);
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
void orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock(void);
//
// Generated By: dol2asm
// Translation Unit: JKRAramStream
//
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAramStream.h"
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUStreamSeekFrom {
};
struct JSURandomInputStream {
/* 802D4094 */ void getAvailable() const;
/* 802DC4DC */ void seek(s32, JSUStreamSeekFrom);
};
struct JSUInputStream {
/* 802DC298 */ void read(void*, s32);
};
struct JSUFileInputStream {
};
struct JKRThread {
/* 802D1568 */ JKRThread(u32, int, int);
/* 802D1758 */ ~JKRThread();
};
struct JKRHeap {
/* 802CE4D4 */ void alloc(u32, int);
/* 802CE474 */ void alloc(u32, int, JKRHeap*);
/* 802CE500 */ void free(void*, JKRHeap*);
};
struct JKRAramStreamCommand {
/* 802D4088 */ JKRAramStreamCommand();
};
struct JKRAramStream {
/* 802D3B48 */ void create(s32);
/* 802D3BB8 */ JKRAramStream(s32);
/* 802D3C08 */ ~JKRAramStream();
/* 802D3C68 */ void run();
/* 802D3CD8 */ bool readFromAram();
/* 802D3CE0 */ void writeToAram(JKRAramStreamCommand*);
/* 802D3ED0 */ void write_StreamToAram_Async(JSUFileInputStream*, u32, u32, u32, u32*);
/* 802D3FA0 */ void sync(JKRAramStreamCommand*, int);
/* 802D4034 */ void setTransBuffer(u8*, u32, JKRHeap*);
};
struct JKRAramBlock {
};
struct JKRAramPiece {
/* 802D3838 */ void orderSync(int, u32, u32, u32, JKRAramBlock*);
};
//
// Forward References:
//
extern "C" extern char const* const JKRAramStream__stringBase0;
extern "C" void create__13JKRAramStreamFl();
extern "C" void __ct__13JKRAramStreamFl();
extern "C" void __dt__13JKRAramStreamFv();
extern "C" void run__13JKRAramStreamFv();
extern "C" bool readFromAram__13JKRAramStreamFv();
extern "C" void writeToAram__13JKRAramStreamFP20JKRAramStreamCommand();
extern "C" void write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl();
extern "C" void sync__13JKRAramStreamFP20JKRAramStreamCommandi();
extern "C" void setTransBuffer__13JKRAramStreamFPUcUlP7JKRHeap();
extern "C" void __ct__20JKRAramStreamCommandFv();
extern "C" void getAvailable__20JSURandomInputStreamCFv();
extern "C" extern char const* const JKRAramStream__stringBase0;
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sCurrentHeap__7JKRHeap[4];
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void alloc__7JKRHeapFUli();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void __ct__9JKRThreadFUlii();
extern "C" void __dt__9JKRThreadFv();
extern "C" void orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock();
extern "C" void read__14JSUInputStreamFPvl();
extern "C" void seek__20JSURandomInputStreamFl17JSUStreamSeekFrom();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void OSInitMessageQueue();
extern "C" void OSSendMessage();
extern "C" void OSReceiveMessage();
extern "C" void OSResumeThread();
extern "C" void _savegpr_24();
extern "C" void _savegpr_26();
extern "C" void _restgpr_24();
extern "C" void _restgpr_26();
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sCurrentHeap__7JKRHeap[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 80451408-8045140C 0004+00 s=1 e=0 z=0 None .sbss sAramStreamObject__13JKRAramStream */
static u8 sAramStreamObject__13JKRAramStream[4];
/* 802D3B48-802D3BB8 0070+00 s=0 e=1 z=0 None .text create__13JKRAramStreamFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::create(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/create__13JKRAramStreamFl.s"
}
#pragma pop
/* ############################################################################################## */
/* 803CC188-803CC198 0010+00 s=1 e=0 z=0 None .data sMessageBuffer__13JKRAramStream */
SECTION_DATA static u8 sMessageBuffer__13JKRAramStream[16] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803CC198-803CC1B8 0020+00 s=2 e=0 z=0 None .data sMessageQueue__13JKRAramStream */
SECTION_DATA static u8 sMessageQueue__13JKRAramStream[32] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803CC1B8-803CC1C8 0010+00 s=2 e=0 z=0 None .data __vt__13JKRAramStream */
SECTION_DATA static void* __vt__13JKRAramStream[4] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__13JKRAramStreamFv,
(void*)run__13JKRAramStreamFv,
};
/* 802D3BB8-802D3C08 0050+00 s=1 e=0 z=0 None .text __ct__13JKRAramStreamFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramStream::JKRAramStream(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/__ct__13JKRAramStreamFl.s"
}
#pragma pop
/* 802D3C08-802D3C68 0060+00 s=1 e=0 z=0 None .text __dt__13JKRAramStreamFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramStream::~JKRAramStream() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/__dt__13JKRAramStreamFv.s"
}
#pragma pop
/* 802D3C68-802D3CD8 0070+00 s=1 e=0 z=0 None .text run__13JKRAramStreamFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::run() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/run__13JKRAramStreamFv.s"
}
#pragma pop
/* 802D3CD8-802D3CE0 0008+00 s=1 e=0 z=0 None .text readFromAram__13JKRAramStreamFv */
bool JKRAramStream::readFromAram() {
return true;
}
extern char lbl_8039D120[32];
extern JKRExpHeap* sSystemHeap__7JKRHeap;
extern JKRHeap* sCurrentHeap__7JKRHeap;
JKRAramStream* JKRAramStream::create(long priority) {
if (!sAramStreamObject) {
sAramStreamObject = new (JKRGetSystemHeap(), 0) JKRAramStream(priority);
setTransBuffer(NULL, 0, NULL);
}
/* ############################################################################################## */
/* 8039D120-8039D150 002D+03 s=1 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D120 = "JKRAramStream.cpp";
SECTION_DEAD char const* const stringBase_8039D132 = "%s";
SECTION_DEAD char const* const stringBase_8039D135 = ":::Cannot alloc memory\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039D14D = "\0\0";
#pragma pop
return sAramStreamObject;
/* 802D3CE0-802D3ED0 01F0+00 s=1 e=0 z=0 None .text writeToAram__13JKRAramStreamFP20JKRAramStreamCommand */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::writeToAram(JKRAramStreamCommand* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/writeToAram__13JKRAramStreamFP20JKRAramStreamCommand.s"
}
#pragma pop
JKRAramStream::JKRAramStream(long priority) : JKRThread(0xc00, 0x10, priority) {
resume();
/* ############################################################################################## */
/* 8045140C-80451410 0004+00 s=2 e=0 z=0 None .sbss transBuffer__13JKRAramStream */
static u8 transBuffer__13JKRAramStream[4];
/* 80451410-80451414 0004+00 s=2 e=0 z=0 None .sbss transSize__13JKRAramStream */
static u8 transSize__13JKRAramStream[4];
/* 80451414-80451418 0004+00 s=2 e=0 z=0 None .sbss transHeap__13JKRAramStream */
static u8 transHeap__13JKRAramStream[4];
/* 802D3ED0-802D3FA0 00D0+00 s=0 e=1 z=0 None .text write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::write_StreamToAram_Async(JSUFileInputStream* param_0, u32 param_1, u32 param_2, u32 param_3, u32* param_4) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamUlUlUlPUl.s"
}
#pragma pop
JKRAramStream::~JKRAramStream() {}
void* JKRAramStream::run(void) {
OSInitMessageQueue(&sMessageQueue, sMessageBuffer, ARRAY_SIZE(sMessageBuffer));
for (;;) {
OSMessage message;
OSReceiveMessage(&sMessageQueue, &message, OS_MESSAGE_BLOCKING);
JKRAramStreamCommand* command = (JKRAramStreamCommand*)message;
switch (command->mType) {
case JKRAramStreamCommand::READ:
readFromAram();
break;
case JKRAramStreamCommand::WRITE:
writeToAram(command);
break;
}
}
/* 802D3FA0-802D4034 0094+00 s=0 e=1 z=0 None .text sync__13JKRAramStreamFP20JKRAramStreamCommandi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::sync(JKRAramStreamCommand* param_0, int param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/sync__13JKRAramStreamFP20JKRAramStreamCommandi.s"
}
#pragma pop
s32 JKRAramStream::readFromAram(void) {
return 1;
/* 802D4034-802D4088 0054+00 s=1 e=1 z=0 None .text setTransBuffer__13JKRAramStreamFPUcUlP7JKRHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAramStream::setTransBuffer(u8* param_0, u32 param_1, JKRHeap* param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/setTransBuffer__13JKRAramStreamFPUcUlP7JKRHeap.s"
}
#pragma pop
// regalloc problems
#ifdef NONMATCHING
s32 JKRAramStream::writeToAram(JKRAramStreamCommand* command) {
u32 size;
u32 dstSize = command->mDstLength;
u32 offset = command->mOffset;
u32 writtenLength = 0;
u32 destination = command->mDst;
u8* buffer = command->mTransferBuffer;
u32 bufferSize = command->mTransferBufferSize;
JKRHeap* heap = command->mHeap;
if (buffer) {
if (bufferSize) {
size = bufferSize;
} else {
size = 0x8000;
}
command->mTransferBufferSize = size;
command->mAllocatedTransferBuffer = false;
} else {
if (bufferSize) {
size = bufferSize;
} else {
size = 0x8000;
}
if (heap) {
buffer = (u8*)JKRAllocFromHeap(heap, size, -0x20);
command->mTransferBuffer = buffer;
} else {
buffer = (u8*)JKRAllocFromSysHeap(size, -0x20);
command->mTransferBuffer = buffer;
}
command->mTransferBufferSize = size;
command->mAllocatedTransferBuffer = true;
}
if (!buffer) {
if (!heap) {
JKRGetCurrentHeap()->dump();
} else {
heap->dump();
}
panic_f__12JUTExceptionFPCciPCce("JKRAramStream.cpp", 0xac, "%s",
":::Cannot alloc memory\n");
}
if (buffer) {
seek__20JSURandomInputStreamFl17JSUStreamSeekFrom((JSURandomInputStream*)command->mStream,
offset, 0);
while (dstSize != 0) {
u32 length;
if (dstSize > size) {
length = size;
} else {
length = dstSize;
}
s32 readLength =
read__14JSUInputStreamFPvl((JSUInputStream*)command->mStream, buffer, length);
if (readLength == 0) {
writtenLength = 0;
break;
}
JKRAramPcs(0, (u32)buffer, destination, length, NULL);
dstSize -= length;
writtenLength += writtenLength;
destination += length;
if (command->mReturnSize) {
*command->mReturnSize += length;
}
}
if (command->mAllocatedTransferBuffer) {
JKRFree(buffer);
command->mAllocatedTransferBuffer = false;
}
}
OSSendMessage(&command->mMessageQueue, (OSMessage)writtenLength, OS_MESSAGE_NON_BLOCKING);
return writtenLength;
/* 802D4088-802D4094 000C+00 s=1 e=0 z=0 None .text __ct__20JKRAramStreamCommandFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAramStreamCommand::JKRAramStreamCommand() {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/__ct__20JKRAramStreamCommandFv.s"
}
#else
asm s32 JKRAramStream::writeToAram(JKRAramStreamCommand* command) {
nofralloc
#include "JSystem/JKernel/JKRAramStream/asm/func_802D3CE0.s"
#pragma pop
/* 802D4094-802D40F0 005C+00 s=0 e=3 z=0 None .text getAvailable__20JSURandomInputStreamCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JSURandomInputStream::getAvailable() const {
nofralloc
#include "asm/JSystem/JKernel/JKRAramStream/getAvailable__20JSURandomInputStreamCFv.s"
}
#endif
#pragma pop
JKRAramStreamCommand* JKRAramStream::write_StreamToAram_Async(JSUFileInputStream* stream, u32 addr,
u32 size, u32 offset,
u32* returnSize) {
JKRAramStreamCommand* command = new (JKRGetSystemHeap(), -4) JKRAramStreamCommand();
command->mType = JKRAramStreamCommand::WRITE;
command->mAddress = addr;
command->mSize = size;
command->mStream = stream;
command->field_0x2c = 0;
command->mOffset = offset;
command->mTransferBuffer = transBuffer;
command->mHeap = transHeap;
command->mTransferBufferSize = transSize;
command->mReturnSize = returnSize;
if (returnSize) {
*returnSize = 0;
}
OSInitMessageQueue(&command->mMessageQueue, &command->mMessage, 1);
OSSendMessage(&sMessageQueue, command, OS_MESSAGE_BLOCKING);
return command;
}
JKRAramStreamCommand* JKRAramStream::sync(JKRAramStreamCommand* command, BOOL isNonBlocking) {
OSMessage message;
if (isNonBlocking == 0) {
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_BLOCKING);
if (message == NULL) {
command = NULL;
return command;
} else {
return command;
}
} else {
BOOL receiveResult =
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_NON_BLOCKING);
if (receiveResult == FALSE) {
command = NULL;
return command;
} else if (message == NULL) {
command = NULL;
return command;
} else {
return command;
}
}
}
void JKRAramStream::setTransBuffer(u8* buffer, u32 bufferSize, JKRHeap* heap) {
transBuffer = NULL;
transSize = 0x8000;
transHeap = NULL;
if (buffer) {
transBuffer = (u8*)ALIGN_NEXT((u32)buffer, 0x20);
}
if (bufferSize) {
transSize = ALIGN_PREV(bufferSize, 0x20);
}
if (heap && !buffer) {
transHeap = heap;
}
}
JKRAramStreamCommand::JKRAramStreamCommand() {
mAllocatedTransferBuffer = false;
}
s32 JSURandomInputStream::getAvailable() const {
return getLength() - getPosition();
}
+227 -170
View File
@@ -1,213 +1,270 @@
#include "JSystem/JKernel/JKRArchive/JKRArchive.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
#include "msl_c/string.h"
//
// Generated By: dol2asm
// Translation Unit: JKRArchivePri
//
JKRArchive::JKRArchive(long entryNumber, JKRArchive::EMountMode mountMode) {
mIsMounted = false;
mMountMode = mountMode;
mMountCount = 1;
field_0x58 = 1;
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRArchivePri.h"
mHeap = JKRHeap::findFromRoot(this);
if (mHeap == NULL) {
mHeap = JKRHeap::getCurrentHeap();
}
//
// Types:
//
mEntryNum = entryNumber;
if (getCurrentVolume() == NULL) {
setCurrentVolume(this);
setCurrentDirID(0);
}
struct JKRHeap {
/* 802CE83C */ void findFromRoot(void*);
};
struct JKRFileLoader {
/* 802D40F0 */ JKRFileLoader();
/* 802D4148 */ ~JKRFileLoader();
};
struct JKRArchive {
struct EMountMode {
};
struct CArcName {
/* 802D6884 */ void store(char const*, char);
/* 802D67F4 */ void store(char const*);
};
struct SDIFileEntry {
};
/* 802D6294 */ JKRArchive(s32, JKRArchive::EMountMode);
/* 802D6334 */ ~JKRArchive();
/* 802D6394 */ void isSameName(JKRArchive::CArcName&, u32, u16) const;
/* 802D63E0 */ void findResType(u32) const;
/* 802D641C */ void findDirectory(char const*, u32) const;
/* 802D64F4 */ void findTypeResource(u32, char const*) const;
/* 802D65A4 */ void findFsResource(char const*, u32) const;
/* 802D6684 */ void findIdxResource(u32) const;
/* 802D66AC */ void findNameResource(char const*) const;
/* 802D6734 */ void findPtrResource(void const*) const;
/* 802D6770 */ void findIdResource(u16) const;
/* 802D693C */ void setExpandSize(JKRArchive::SDIFileEntry*, u32);
/* 802D6978 */ void getExpandSize(JKRArchive::SDIFileEntry*) const;
};
//
// Forward References:
//
extern "C" extern u8 sCurrentDirID__10JKRArchive[4 + 4 /* padding */];
extern "C" void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode();
extern "C" void __dt__10JKRArchiveFv();
extern "C" void isSameName__10JKRArchiveCFRQ210JKRArchive8CArcNameUlUs();
extern "C" void findResType__10JKRArchiveCFUl();
extern "C" void findDirectory__10JKRArchiveCFPCcUl();
extern "C" void findTypeResource__10JKRArchiveCFUlPCc();
extern "C" void findFsResource__10JKRArchiveCFPCcUl();
extern "C" void findIdxResource__10JKRArchiveCFUl();
extern "C" void findNameResource__10JKRArchiveCFPCc();
extern "C" void findPtrResource__10JKRArchiveCFPCv();
extern "C" void findIdResource__10JKRArchiveCFUs();
extern "C" void store__Q210JKRArchive8CArcNameFPCc();
extern "C" void store__Q210JKRArchive8CArcNameFPCcc();
extern "C" void setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl();
extern "C" void getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry();
extern "C" extern u8 sCurrentDirID__10JKRArchive[4 + 4 /* padding */];
//
// External References:
//
void operator delete(void*);
extern "C" extern void* __vt__10JKRArchive[20];
extern "C" extern u8 sCurrentHeap__7JKRHeap[4];
extern "C" extern u8 sCurrentVolume__13JKRFileLoader[4 + 4 /* padding */];
extern "C" void findFromRoot__7JKRHeapFPv();
extern "C" void __dl__FPv();
extern "C" void __ct__13JKRFileLoaderFv();
extern "C" void __dt__13JKRFileLoaderFv();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void tolower();
extern "C" void strcmp();
extern "C" extern void* __vt__10JKRArchive[20];
extern "C" extern u8 sCurrentHeap__7JKRHeap[4];
extern "C" extern u8 sCurrentVolume__13JKRFileLoader[4 + 4 /* padding */];
//
// Declarations:
//
/* ############################################################################################## */
/* 80451420-80451428 0004+04 s=1 e=5 z=0 None .sbss sCurrentDirID__10JKRArchive */
u8 sCurrentDirID__10JKRArchive[4 + 4 /* padding */];
/* 802D6294-802D6334 00A0+00 s=0 e=5 z=0 None .text __ct__10JKRArchiveFlQ210JKRArchive10EMountMode */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRArchive::JKRArchive(s32 param_0, JKRArchive::EMountMode param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/__ct__10JKRArchiveFlQ210JKRArchive10EMountMode.s"
}
#pragma pop
JKRArchive::~JKRArchive() {}
bool JKRArchive::isSameName(JKRArchive::CArcName& name, u32 nameOffset, u16 nameHash) const {
u16 hash = name.getHash();
if (hash != nameHash)
return false;
return strcmp(mStringTable + nameOffset, name.getString()) == 0;
/* 802D6334-802D6394 0060+00 s=0 e=5 z=0 None .text __dt__10JKRArchiveFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRArchive::~JKRArchive() {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/__dt__10JKRArchiveFv.s"
}
#pragma pop
SDirEntry* JKRArchive::findResType(u32 type) const {
SDirEntry* node = mNodes;
u32 count = 0;
while (count < mArcInfoBlock->num_nodes) {
if (node->type == type) {
return node;
}
node++;
count++;
}
return NULL;
/* 802D6394-802D63E0 004C+00 s=4 e=0 z=0 None .text isSameName__10JKRArchiveCFRQ210JKRArchive8CArcNameUlUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::isSameName(JKRArchive::CArcName& param_0, u32 param_1, u16 param_2) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/isSameName__10JKRArchiveCFRQ210JKRArchive8CArcNameUlUs.s"
}
#pragma pop
SDirEntry* JKRArchive::findDirectory(const char* name, u32 directoryId) const {
if (name == NULL) {
return mNodes + directoryId;
}
CArcName arcName(&name, '/');
SDirEntry* dirEntry = mNodes + directoryId;
SDIFileEntry* fileEntry = mFiles + dirEntry->first_file_index;
for (int i = 0; i < dirEntry->num_entries; fileEntry++, i++) {
// regalloc doesn't like fileEntry->getNameHash()
if (isSameName(arcName, fileEntry->getNameOffset(), fileEntry->name_hash)) {
if (fileEntry->isDirectory()) {
return findDirectory(name, fileEntry->data_offset);
}
break;
}
}
return NULL;
/* 802D63E0-802D641C 003C+00 s=1 e=0 z=0 None .text findResType__10JKRArchiveCFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findResType(u32 param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findResType__10JKRArchiveCFUl.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findTypeResource(u32 type, const char* name) const {
if (type) {
CArcName arcName(name);
SDirEntry* dirEntry = findResType(type);
if (dirEntry) {
SDIFileEntry* fileEntry = mFiles + dirEntry->first_file_index;
for (int i = 0; i < dirEntry->num_entries; fileEntry++, i++) {
if (isSameName(arcName, fileEntry->getNameOffset(), fileEntry->getNameHash())) {
return fileEntry;
}
}
}
}
return NULL;
/* 802D641C-802D64F4 00D8+00 s=0 e=3 z=0 None .text findDirectory__10JKRArchiveCFPCcUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findDirectory(char const* param_0, u32 param_1) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findDirectory__10JKRArchiveCFPCcUl.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findFsResource(const char* name, u32 directoryId) const {
if (name) {
CArcName arcName(&name, '/');
SDirEntry* dirEntry = mNodes + directoryId;
SDIFileEntry* fileEntry = mFiles + dirEntry->first_file_index;
for (int i = 0; i < dirEntry->num_entries; fileEntry++, i++) {
// regalloc doesn't like fileEntry->getNameHash()
if (isSameName(arcName, fileEntry->getNameOffset(), fileEntry->name_hash)) {
if (fileEntry->isDirectory()) {
return findFsResource(name, fileEntry->data_offset);
}
if (name == NULL) {
return fileEntry;
}
return NULL;
}
}
}
return NULL;
/* 802D64F4-802D65A4 00B0+00 s=0 e=2 z=0 None .text findTypeResource__10JKRArchiveCFUlPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findTypeResource(u32 param_0, char const* param_1) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findTypeResource__10JKRArchiveCFUlPCc.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findIdxResource(u32 fileIndex) const {
if (fileIndex < mArcInfoBlock->num_file_entries) {
return mFiles + fileIndex;
}
return NULL;
/* 802D65A4-802D6684 00E0+00 s=0 e=4 z=0 None .text findFsResource__10JKRArchiveCFPCcUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findFsResource(char const* param_0, u32 param_1) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findFsResource__10JKRArchiveCFPCcUl.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findNameResource(const char* name) const {
SDIFileEntry* fileEntry = mFiles;
CArcName arcName(name);
for (int i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
if (isSameName(arcName, fileEntry->getNameOffset(), fileEntry->getNameHash())) {
return fileEntry;
}
}
return NULL;
/* 802D6684-802D66AC 0028+00 s=0 e=7 z=0 None .text findIdxResource__10JKRArchiveCFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findIdxResource(u32 param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findIdxResource__10JKRArchiveCFUl.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findPtrResource(const void* resource) const {
SDIFileEntry* fileEntry = mFiles;
for (int i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
if (fileEntry->data == resource) {
return fileEntry;
}
}
return NULL;
/* 802D66AC-802D6734 0088+00 s=0 e=4 z=0 None .text findNameResource__10JKRArchiveCFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findNameResource(char const* param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findNameResource__10JKRArchiveCFPCc.s"
}
#pragma pop
SDIFileEntry* JKRArchive::findIdResource(u16 id) const {
if (id != 0xFFFF) {
if (id < mArcInfoBlock->num_file_entries) {
SDIFileEntry* fileEntry = mFiles + id;
if (fileEntry->file_id == id && fileEntry->isUnknownFlag1()) {
return fileEntry;
}
}
SDIFileEntry* fileEntry = mFiles;
for (int i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
if (fileEntry->file_id == id && fileEntry->isUnknownFlag1()) {
return fileEntry;
}
}
}
return NULL;
/* 802D6734-802D6770 003C+00 s=0 e=9 z=0 None .text findPtrResource__10JKRArchiveCFPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findPtrResource(void const* param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findPtrResource__10JKRArchiveCFPCv.s"
}
#pragma pop
void JKRArchive::CArcName::store(const char* name) {
mHash = 0;
s32 length = 0;
while (*name) {
s32 ch = tolower(*name);
mHash = ch + mHash * 3;
if (length < (s32)ARRAY_SIZE(mData)) {
mData[length++] = ch;
}
name++;
}
mLength = (u16)length;
mData[length] = 0;
/* 802D6770-802D67F4 0084+00 s=0 e=4 z=0 None .text findIdResource__10JKRArchiveCFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::findIdResource(u16 param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/findIdResource__10JKRArchiveCFUs.s"
}
#pragma pop
const char* JKRArchive::CArcName::store(const char* name, char endChar) {
mHash = 0;
s32 length = 0;
while (*name && *name != endChar) {
s32 lch = tolower((int)*name);
mHash = lch + mHash * 3;
if (length < (s32)ARRAY_SIZE(mData)) {
mData[length++] = lch;
}
name++;
}
mLength = (u16)length;
mData[length] = 0;
if (*name == 0)
return NULL;
return name + 1;
/* 802D67F4-802D6884 0090+00 s=2 e=0 z=0 None .text store__Q210JKRArchive8CArcNameFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::CArcName::store(char const* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/store__Q210JKRArchive8CArcNameFPCc.s"
}
#pragma pop
void JKRArchive::setExpandSize(SDIFileEntry* fileEntry, u32 expandSize) {
int index = fileEntry - mFiles;
if (!mExpandedSize || index >= mArcInfoBlock->num_file_entries)
return;
mExpandedSize[index] = expandSize;
/* 802D6884-802D693C 00B8+00 s=2 e=0 z=0 None .text store__Q210JKRArchive8CArcNameFPCcc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::CArcName::store(char const* param_0, char param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/store__Q210JKRArchive8CArcNameFPCcc.s"
}
#pragma pop
u32 JKRArchive::getExpandSize(SDIFileEntry* fileEntry) const {
int index = fileEntry - mFiles;
if (!mExpandedSize || index >= mArcInfoBlock->num_file_entries)
return 0;
return mExpandedSize[index];
/* 802D693C-802D6978 003C+00 s=0 e=5 z=0 None .text setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::setExpandSize(JKRArchive::SDIFileEntry* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl.s"
}
#pragma pop
/* 802D6978-802D69B8 0040+00 s=0 e=5 z=0 None .text getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArchive::getExpandSize(JKRArchive::SDIFileEntry* param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRArchivePri/getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
+239 -52
View File
@@ -1,85 +1,272 @@
#include "JSystem/JKernel/JKRAssertHeap/JKRAssertHeap.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRAssertHeap
//
JKRAssertHeap::JKRAssertHeap(void* data, unsigned long size, JKRHeap* parent, bool errorFlag)
: JKRHeap(data, size, parent, errorFlag) {}
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRAssertHeap.h"
JKRAssertHeap::~JKRAssertHeap() {
this->dispose();
//
// Types:
//
struct JKRHeap {
struct TState {
};
/* 802CE138 */ JKRHeap(void*, u32, JKRHeap*, bool);
/* 802CE264 */ ~JKRHeap();
/* 802CE474 */ void alloc(u32, int, JKRHeap*);
/* 802CE574 */ void callAllDisposer();
/* 802CEAC0 */ void dispose();
/* 802CED84 */ void state_register(JKRHeap::TState*, u32) const;
/* 802CED88 */ void state_compare(JKRHeap::TState const&, JKRHeap::TState const&) const;
/* 802CEDA0 */ void state_dump(JKRHeap::TState const&) const;
};
struct JKRAssertHeap {
/* 802D12C4 */ JKRAssertHeap(void*, u32, JKRHeap*, bool);
/* 802D1300 */ ~JKRAssertHeap();
/* 802D1368 */ void create(JKRHeap*);
/* 802D13D8 */ void do_destroy();
/* 802D1408 */ void getHeapType();
/* 802D1414 */ bool check();
/* 802D141C */ bool dump();
/* 802D1424 */ bool dump_sort();
/* 802D142C */ bool do_changeGroupID(u8);
/* 802D1434 */ bool do_getCurrentGroupId();
/* 802D143C */ bool do_alloc(u32, int);
/* 802D1444 */ void do_free(void*);
/* 802D1448 */ void do_freeAll();
/* 802D144C */ void do_freeTail();
/* 802D1450 */ void do_fillFreeArea();
/* 802D1454 */ bool do_resize(void*, u32);
/* 802D145C */ bool do_getSize(void*);
/* 802D1464 */ bool do_getFreeSize();
/* 802D146C */ bool do_getMaxFreeBlock();
/* 802D1474 */ bool do_getTotalFreeSize();
};
//
// Forward References:
//
extern "C" void __ct__13JKRAssertHeapFPvUlP7JKRHeapb();
extern "C" void __dt__13JKRAssertHeapFv();
extern "C" void create__13JKRAssertHeapFP7JKRHeap();
extern "C" void do_destroy__13JKRAssertHeapFv();
extern "C" void getHeapType__13JKRAssertHeapFv();
extern "C" bool check__13JKRAssertHeapFv();
extern "C" bool dump__13JKRAssertHeapFv();
extern "C" bool dump_sort__13JKRAssertHeapFv();
extern "C" bool do_changeGroupID__13JKRAssertHeapFUc();
extern "C" bool do_getCurrentGroupId__13JKRAssertHeapFv();
extern "C" bool do_alloc__13JKRAssertHeapFUli();
extern "C" void do_free__13JKRAssertHeapFPv();
extern "C" void do_freeAll__13JKRAssertHeapFv();
extern "C" void do_freeTail__13JKRAssertHeapFv();
extern "C" void do_fillFreeArea__13JKRAssertHeapFv();
extern "C" bool do_resize__13JKRAssertHeapFPvUl();
extern "C" bool do_getSize__13JKRAssertHeapFPv();
extern "C" bool do_getFreeSize__13JKRAssertHeapFv();
extern "C" bool do_getMaxFreeBlock__13JKRAssertHeapFv();
extern "C" bool do_getTotalFreeSize__13JKRAssertHeapFv();
//
// External References:
//
void operator delete(void*);
extern "C" extern u8 sRootHeap__7JKRHeap[4];
extern "C" void __ct__7JKRHeapFPvUlP7JKRHeapb();
extern "C" void __dt__7JKRHeapFv();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void callAllDisposer__7JKRHeapFv();
extern "C" void dispose__7JKRHeapFv();
extern "C" void __dl__FPv();
extern "C" void state_register__7JKRHeapCFPQ27JKRHeap6TStateUl();
extern "C" void state_compare__7JKRHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState();
extern "C" void state_dump__7JKRHeapCFRCQ27JKRHeap6TState();
extern "C" extern u8 sRootHeap__7JKRHeap[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC090-803CC0F0 0060+00 s=2 e=0 z=0 None .data __vt__13JKRAssertHeap */
SECTION_DATA static void* __vt__13JKRAssertHeap[24] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__13JKRAssertHeapFv,
(void*)callAllDisposer__7JKRHeapFv,
(void*)getHeapType__13JKRAssertHeapFv,
(void*)check__13JKRAssertHeapFv,
(void*)dump_sort__13JKRAssertHeapFv,
(void*)dump__13JKRAssertHeapFv,
(void*)do_destroy__13JKRAssertHeapFv,
(void*)do_alloc__13JKRAssertHeapFUli,
(void*)do_free__13JKRAssertHeapFPv,
(void*)do_freeAll__13JKRAssertHeapFv,
(void*)do_freeTail__13JKRAssertHeapFv,
(void*)do_fillFreeArea__13JKRAssertHeapFv,
(void*)do_resize__13JKRAssertHeapFPvUl,
(void*)do_getSize__13JKRAssertHeapFPv,
(void*)do_getFreeSize__13JKRAssertHeapFv,
(void*)do_getMaxFreeBlock__13JKRAssertHeapFv,
(void*)do_getTotalFreeSize__13JKRAssertHeapFv,
(void*)do_changeGroupID__13JKRAssertHeapFUc,
(void*)do_getCurrentGroupId__13JKRAssertHeapFv,
(void*)state_register__7JKRHeapCFPQ27JKRHeap6TStateUl,
(void*)state_compare__7JKRHeapCFRCQ27JKRHeap6TStateRCQ27JKRHeap6TState,
(void*)state_dump__7JKRHeapCFRCQ27JKRHeap6TState,
};
/* 802D12C4-802D1300 003C+00 s=1 e=0 z=0 None .text __ct__13JKRAssertHeapFPvUlP7JKRHeapb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAssertHeap::JKRAssertHeap(void* param_0, u32 param_1, JKRHeap* param_2, bool param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRAssertHeap/__ct__13JKRAssertHeapFPvUlP7JKRHeapb.s"
}
#pragma pop
/* 802D1300-802D1368 0068+00 s=1 e=0 z=0 None .text __dt__13JKRAssertHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRAssertHeap::~JKRAssertHeap() {
nofralloc
#include "asm/JSystem/JKernel/JKRAssertHeap/__dt__13JKRAssertHeapFv.s"
}
#pragma pop
/* 802D1368-802D13D8 0070+00 s=0 e=1 z=0 None .text create__13JKRAssertHeapFP7JKRHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAssertHeap::create(JKRHeap* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRAssertHeap/create__13JKRAssertHeapFP7JKRHeap.s"
}
#pragma pop
/* 802D13D8-802D1408 0030+00 s=1 e=0 z=0 None .text do_destroy__13JKRAssertHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAssertHeap::do_destroy() {
nofralloc
#include "asm/JSystem/JKernel/JKRAssertHeap/do_destroy__13JKRAssertHeapFv.s"
}
#pragma pop
/* 802D1408-802D1414 000C+00 s=1 e=0 z=0 None .text getHeapType__13JKRAssertHeapFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRAssertHeap::getHeapType() {
nofralloc
#include "asm/JSystem/JKernel/JKRAssertHeap/getHeapType__13JKRAssertHeapFv.s"
}
#pragma pop
/* 802D1414-802D141C 0008+00 s=1 e=0 z=0 None .text check__13JKRAssertHeapFv */
bool JKRAssertHeap::check() {
return true;
}
JKRAssertHeap* JKRAssertHeap::create(JKRHeap* parent) {
if (!parent) {
parent = JKRHeap::getRootHeap();
}
// 0x70 is sizeof(JKRAssertHeap) aligned to 16 bytes
u32 size = 0x70;
int alignment = 16;
void* ptr = JKRHeap::alloc(size, alignment, parent);
if (!ptr)
return NULL;
return new (ptr) JKRAssertHeap(NULL, 0, parent, false);
/* 802D141C-802D1424 0008+00 s=1 e=0 z=0 None .text dump__13JKRAssertHeapFv */
bool JKRAssertHeap::dump() {
return true;
}
void JKRAssertHeap::do_destroy(void) {
this->~JKRAssertHeap();
/* 802D1424-802D142C 0008+00 s=1 e=0 z=0 None .text dump_sort__13JKRAssertHeapFv */
bool JKRAssertHeap::dump_sort() {
return true;
}
u32 JKRAssertHeap::getHeapType(void) const {
return 'ASTH';
/* 802D142C-802D1434 0008+00 s=1 e=0 z=0 None .text do_changeGroupID__13JKRAssertHeapFUc */
bool JKRAssertHeap::do_changeGroupID(u8 param_0) {
return false;
}
bool JKRAssertHeap::check(void) {
return true;
/* 802D1434-802D143C 0008+00 s=1 e=0 z=0 None .text do_getCurrentGroupId__13JKRAssertHeapFv */
bool JKRAssertHeap::do_getCurrentGroupId() {
return false;
}
bool JKRAssertHeap::dump(void) {
return true;
/* 802D143C-802D1444 0008+00 s=1 e=0 z=0 None .text do_alloc__13JKRAssertHeapFUli */
bool JKRAssertHeap::do_alloc(u32 param_0, int param_1) {
return false;
}
bool JKRAssertHeap::dump_sort(void) {
return true;
/* 802D1444-802D1448 0004+00 s=1 e=0 z=0 None .text do_free__13JKRAssertHeapFPv */
void JKRAssertHeap::do_free(void* param_0) {
/* empty function */
}
u8 JKRAssertHeap::do_changeGroupID(u8) {
return 0;
/* 802D1448-802D144C 0004+00 s=1 e=0 z=0 None .text do_freeAll__13JKRAssertHeapFv */
void JKRAssertHeap::do_freeAll() {
/* empty function */
}
u8 JKRAssertHeap::do_getCurrentGroupId(void) const {
return 0;
/* 802D144C-802D1450 0004+00 s=1 e=0 z=0 None .text do_freeTail__13JKRAssertHeapFv */
void JKRAssertHeap::do_freeTail() {
/* empty function */
}
void* JKRAssertHeap::do_alloc(u32, int) {
return NULL;
/* 802D1450-802D1454 0004+00 s=1 e=0 z=0 None .text do_fillFreeArea__13JKRAssertHeapFv */
void JKRAssertHeap::do_fillFreeArea() {
/* empty function */
}
void JKRAssertHeap::do_free(void*) {}
void JKRAssertHeap::do_freeAll(void) {}
void JKRAssertHeap::do_freeTail(void) {}
void JKRAssertHeap::do_fillFreeArea(void) {}
s32 JKRAssertHeap::do_resize(void*, u32) {
return 0;
/* 802D1454-802D145C 0008+00 s=1 e=0 z=0 None .text do_resize__13JKRAssertHeapFPvUl */
bool JKRAssertHeap::do_resize(void* param_0, u32 param_1) {
return false;
}
s32 JKRAssertHeap::do_getSize(void*) const {
return 0;
/* 802D145C-802D1464 0008+00 s=1 e=0 z=0 None .text do_getSize__13JKRAssertHeapFPv */
bool JKRAssertHeap::do_getSize(void* param_0) {
return false;
}
s32 JKRAssertHeap::do_getFreeSize(void) const {
return 0;
/* 802D1464-802D146C 0008+00 s=1 e=0 z=0 None .text do_getFreeSize__13JKRAssertHeapFv */
bool JKRAssertHeap::do_getFreeSize() {
return false;
}
void* JKRAssertHeap::do_getMaxFreeBlock(void) const {
return NULL;
/* 802D146C-802D1474 0008+00 s=1 e=0 z=0 None .text do_getMaxFreeBlock__13JKRAssertHeapFv */
bool JKRAssertHeap::do_getMaxFreeBlock() {
return false;
}
s32 JKRAssertHeap::do_getTotalFreeSize(void) const {
return 0;
/* 802D1474-802D147C 0008+00 s=1 e=0 z=0 None .text do_getTotalFreeSize__13JKRAssertHeapFv */
bool JKRAssertHeap::do_getTotalFreeSize() {
return false;
}
+315 -67
View File
@@ -1,82 +1,330 @@
#include "JSystem/JKernel/JKRCompArchive/JKRCompArchive.h"
#include "JSystem/JKernel/JKRAram/JKRAram.h"
#include "JSystem/JKernel/JKRExpHeap/JKRExpHeap.h"
#include "global.h"
#include "msl_c/string.h"
//
// Generated By: dol2asm
// Translation Unit: JKRCompArchive
//
extern "C" {
int abs(int);
void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode(void);
void __ct__10JKRDvdFileFl(void);
void __dl__FPv(void);
void __dt__10JKRArchiveFv(void);
void __nw__FUlP7JKRHeapi(void);
void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode(void);
void alloc__7JKRHeapFUli(void);
void alloc__7JKRHeapFUliP7JKRHeap(void);
void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl(void);
void copyMemory__7JKRHeapFPvPvUl(void);
void DCInvalidateRange(void*, u32);
void fetchResource_subroutine__13JKRDvdArchiveFlUlUlP7JKRHeapiiPPUc(void);
void fetchResource_subroutine__13JKRDvdArchiveFlUlUlPUcUlii(void);
void fetchResource_subroutine__13JKRMemArchiveFPUcUlPUcUli(void);
void fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc(void);
void fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli(void);
void findPtrResource__10JKRArchiveCFPCv(void);
void free__7JKRHeapFPv(void);
void free__7JKRHeapFPvP7JKRHeap(void);
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(void);
void loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl(
void);
void mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl(void);
void open__14JKRCompArchiveFl(void);
void orderSync__9JKRDecompFPUcPUcUlUl(void);
void prepend__10JSUPtrListFP10JSUPtrLink(void);
void remove__10JSUPtrListFP10JSUPtrLink(void);
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRCompArchive.h"
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUPtrLink {
};
struct JSUPtrList {
/* 802DBFF0 */ void prepend(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
struct JKRMemArchive {
/* 802D6F5C */ void fetchResource_subroutine(u8*, u32, u8*, u32, int);
};
struct JKRHeap {
/* 802CE4D4 */ void alloc(u32, int);
/* 802CE474 */ void alloc(u32, int, JKRHeap*);
/* 802CE500 */ void free(void*, JKRHeap*);
/* 802CE548 */ void free(void*);
/* 802CEB18 */ void copyMemory(void*, void*, u32);
};
struct JKRFileLoader {
/* 802D41D4 */ void unmount();
};
struct JKRExpandSwitch {
};
struct JKRDvdRipper {
struct EAllocDirection {
};
/* 802D9C54 */ void loadToMainRAM(s32, u8*, JKRExpandSwitch, u32, JKRHeap*, JKRDvdRipper::EAllocDirection, u32, int*, u32*);
};
struct JKRDvdFile {
/* 802D96A0 */ JKRDvdFile(s32);
};
struct JKRDvdArchive {
/* 802D8474 */ void fetchResource_subroutine(s32, u32, u32, JKRHeap*, int, int, u8**);
/* 802D826C */ void fetchResource_subroutine(s32, u32, u32, u8*, u32, int, int);
};
struct JKRDvdAramRipper {
/* 802DA874 */ void loadToAram(s32, u32, JKRExpandSwitch, u32, u32, u32*);
};
struct JKRDecomp {
/* 802DB988 */ void orderSync(u8*, u8*, u32, u32);
};
struct JKRArchive {
struct EMountDirection {
};
struct SDIFileEntry {
};
struct EMountMode {
};
/* 802D5A38 */ void becomeCurrent(char const*);
/* 802D5C64 */ void getResource(u32, char const*);
/* 802D5BE8 */ void getResource(char const*);
/* 802D5D8C */ void readResource(void*, u32, u32, char const*);
/* 802D5E30 */ void readResource(void*, u32, char const*);
/* 802D609C */ void detachResource(void*);
/* 802D60D8 */ void getResSize(void const*) const;
/* 802D6150 */ void countFile(char const*) const;
/* 802D61B0 */ void getFirstFile(char const*) const;
/* 802D6294 */ JKRArchive(s32, JKRArchive::EMountMode);
/* 802D6334 */ ~JKRArchive();
/* 802D6734 */ void findPtrResource(void const*) const;
/* 802D693C */ void setExpandSize(JKRArchive::SDIFileEntry*, u32);
/* 802D6978 */ void getExpandSize(JKRArchive::SDIFileEntry*) const;
};
struct JKRCompArchive {
/* 802D87D4 */ JKRCompArchive(s32, JKRArchive::EMountDirection);
/* 802D887C */ ~JKRCompArchive();
/* 802D89BC */ void open(s32);
/* 802D8F40 */ void fetchResource(JKRArchive::SDIFileEntry*, u32*);
/* 802D90C0 */ void fetchResource(void*, u32, JKRArchive::SDIFileEntry*, u32*);
/* 802D9260 */ void removeResourceAll();
/* 802D92F4 */ void removeResource(void*);
/* 802D9360 */ void getExpandedResSize(void const*) const;
};
struct JKRAramHeap {
struct EAllocMode {
};
/* 802D2FBC */ void alloc(u32, JKRAramHeap::EAllocMode);
};
struct JKRAramArchive {
/* 802D7858 */ void fetchResource_subroutine(u32, u32, u8*, u32, int);
/* 802D7914 */ void fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**);
};
struct JKRAram {
/* 802D233C */ void mainRamToAram(u8*, u32, u32, JKRExpandSwitch, u32, JKRHeap*, int, u32*);
/* 802D25B4 */ void aramToMainRam(u32, u8*, u32, JKRExpandSwitch, u32, JKRHeap*, int, u32*);
};
//
// Forward References:
//
extern "C" extern char const* const JKRCompArchive__stringBase0;
extern "C" void __ct__14JKRCompArchiveFlQ210JKRArchive15EMountDirection();
extern "C" void __dt__14JKRCompArchiveFv();
extern "C" void open__14JKRCompArchiveFl();
extern "C" void fetchResource__14JKRCompArchiveFPQ210JKRArchive12SDIFileEntryPUl();
extern "C" void fetchResource__14JKRCompArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl();
extern "C" void removeResourceAll__14JKRCompArchiveFv();
extern "C" void removeResource__14JKRCompArchiveFPv();
extern "C" void getExpandedResSize__14JKRCompArchiveCFPCv();
extern "C" extern char const* const JKRCompArchive__stringBase0;
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" extern u8 sVolumeList__13JKRFileLoader[12];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sAramObject__7JKRAram[4];
SECTION_INIT void memset();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void alloc__7JKRHeapFUli();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void free__7JKRHeapFPv();
extern "C" void copyMemory__7JKRHeapFPvPvUl();
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl();
extern "C" void aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl();
extern "C" void alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode();
extern "C" void unmount__13JKRFileLoaderFv();
extern "C" void becomeCurrent__10JKRArchiveFPCc();
extern "C" void getResource__10JKRArchiveFPCc();
extern "C" void getResource__10JKRArchiveFUlPCc();
extern "C" void readResource__10JKRArchiveFPvUlUlPCc();
extern "C" void readResource__10JKRArchiveFPvUlPCc();
extern "C" void detachResource__10JKRArchiveFPv();
extern "C" void getResSize__10JKRArchiveCFPCv();
extern "C" void countFile__10JKRArchiveCFPCc();
extern "C" void getFirstFile__10JKRArchiveCFPCc();
extern "C" void __ct__10JKRArchiveFlQ210JKRArchive10EMountMode();
extern "C" void __dt__10JKRArchiveFv();
extern "C" void findPtrResource__10JKRArchiveCFPCv();
extern "C" void setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl();
extern "C" void getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry();
extern "C" void fetchResource_subroutine__13JKRMemArchiveFPUcUlPUcUli();
extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli();
extern "C" void fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc();
extern "C" void fetchResource_subroutine__13JKRDvdArchiveFlUlUlPUcUlii();
extern "C" void fetchResource_subroutine__13JKRDvdArchiveFlUlUlP7JKRHeapiiPPUc();
extern "C" void __ct__10JKRDvdFileFl();
extern "C" void loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl();
extern "C" void orderSync__9JKRDecompFPUcPUcUlUl();
extern "C" void prepend__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void DCInvalidateRange();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void abs();
extern "C" extern u8 sVolumeList__13JKRFileLoader[12];
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" extern u8 sAramObject__7JKRAram[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC3E8-803CC438 0050+00 s=2 e=0 z=0 None .data __vt__14JKRCompArchive */
SECTION_DATA static void* __vt__14JKRCompArchive[20] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__14JKRCompArchiveFv,
(void*)unmount__13JKRFileLoaderFv,
(void*)becomeCurrent__10JKRArchiveFPCc,
(void*)getResource__10JKRArchiveFPCc,
(void*)getResource__10JKRArchiveFUlPCc,
(void*)readResource__10JKRArchiveFPvUlPCc,
(void*)readResource__10JKRArchiveFPvUlUlPCc,
(void*)removeResourceAll__14JKRCompArchiveFv,
(void*)removeResource__14JKRCompArchiveFPv,
(void*)detachResource__10JKRArchiveFPv,
(void*)getResSize__10JKRArchiveCFPCv,
(void*)countFile__10JKRArchiveCFPCc,
(void*)getFirstFile__10JKRArchiveCFPCc,
(void*)getExpandedResSize__14JKRCompArchiveCFPCv,
(void*)fetchResource__14JKRCompArchiveFPQ210JKRArchive12SDIFileEntryPUl,
(void*)fetchResource__14JKRCompArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl,
(void*)setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl,
(void*)getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry,
};
/* 802D87D4-802D887C 00A8+00 s=0 e=1 z=0 None .text __ct__14JKRCompArchiveFlQ210JKRArchive15EMountDirection */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRCompArchive::JKRCompArchive(s32 param_0, JKRArchive::EMountDirection param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/__ct__14JKRCompArchiveFlQ210JKRArchive15EMountDirection.s"
}
#pragma pop
extern JKRExpHeap* sSystemHeap__7JKRHeap;
extern u8 lbl_803CC3E8; // JKRCompArchive::__vt
extern JSUList<JKRFileLoader> sVolumeList__13JKRFileLoader; // JKRFileLoader::sVolumeList
extern u8 lbl_8039D220; // "JKRCompArchive.cpp"
asm JKRCompArchive::JKRCompArchive(long, JKRArchive::EMountDirection) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D87D4.s"
/* 802D887C-802D89BC 0140+00 s=1 e=0 z=0 None .text __dt__14JKRCompArchiveFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRCompArchive::~JKRCompArchive() {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/__dt__14JKRCompArchiveFv.s"
}
#pragma pop
asm JKRCompArchive::~JKRCompArchive(void) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D887C.s"
}
asm void JKRCompArchive::open(long) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D89BC.s"
/* 802D89BC-802D8F40 0584+00 s=1 e=0 z=0 None .text open__14JKRCompArchiveFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::open(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/open__14JKRCompArchiveFl.s"
}
#pragma pop
asm void* JKRCompArchive::fetchResource(SDIFileEntry*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D8F40.s"
}
asm void* JKRCompArchive::fetchResource(void*, u32, SDIFileEntry*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D90C0.s"
/* 802D8F40-802D90C0 0180+00 s=1 e=0 z=0 None .text fetchResource__14JKRCompArchiveFPQ210JKRArchive12SDIFileEntryPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::fetchResource(JKRArchive::SDIFileEntry* param_0, u32* param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/fetchResource__14JKRCompArchiveFPQ210JKRArchive12SDIFileEntryPUl.s"
}
#pragma pop
asm void JKRCompArchive::removeResourceAll(void) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D9260.s"
}
asm bool JKRCompArchive::removeResource(void*) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D92F4.s"
}
/* ############################################################################################## */
/* 8039D220-8039D260 0039+07 s=2 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D220 = "JKRCompArchive.cpp";
SECTION_DEAD char const* const stringBase_8039D233 = "%s";
SECTION_DEAD char const* const stringBase_8039D236 = "illegal archive.";
SECTION_DEAD char const* const stringBase_8039D247 = "illegal resource.";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039D259 = "\0\0\0\0\0\0";
#pragma pop
asm u32 JKRCompArchive::getExpandedResSize(void const*) {
nofralloc
#include "JSystem/JKernel/JKRCompArchive/asm/func_802D9360.s"
/* 802D90C0-802D9260 01A0+00 s=1 e=0 z=0 None .text fetchResource__14JKRCompArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::fetchResource(void* param_0, u32 param_1, JKRArchive::SDIFileEntry* param_2, u32* param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/fetchResource__14JKRCompArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl.s"
}
#pragma pop
/* 802D9260-802D92F4 0094+00 s=1 e=0 z=0 None .text removeResourceAll__14JKRCompArchiveFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::removeResourceAll() {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/removeResourceAll__14JKRCompArchiveFv.s"
}
#pragma pop
/* 802D92F4-802D9360 006C+00 s=1 e=0 z=0 None .text removeResource__14JKRCompArchiveFPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::removeResource(void* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/removeResource__14JKRCompArchiveFPv.s"
}
#pragma pop
/* 802D9360-802D9518 01B8+00 s=1 e=0 z=0 None .text getExpandedResSize__14JKRCompArchiveCFPCv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRCompArchive::getExpandedResSize(void const* param_0) const {
nofralloc
#include "asm/JSystem/JKernel/JKRCompArchive/getExpandedResSize__14JKRCompArchiveCFPCv.s"
}
#pragma pop
+256 -193
View File
@@ -1,224 +1,287 @@
#include "JSystem/JKernel/JKRDecomp/JKRDecomp.h"
#include "JSystem/JKernel/JKRAramPiece/JKRAramPiece.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRDecomp
//
extern JKRDecomp* lbl_804514B0; // JKRDecomp::sDecompObject
extern OSMessage lbl_803CC460[8]; // JKRDecomp::sMessageBuffer
extern OSMessageQueue lbl_803CC480; // JKRDecomp::sMessageQueue
extern u8 lbl_803CC4A0; // JKRDecomp::__vt
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDecomp.h"
JKRDecomp* JKRDecomp::create(long priority) {
if (!lbl_804514B0) {
lbl_804514B0 = new (JKRHeap::getSystemHeap(), 0) JKRDecomp(priority);
}
//
// Types:
//
return lbl_804514B0;
struct JKRThread {
/* 802D1568 */ JKRThread(u32, int, int);
/* 802D1758 */ ~JKRThread();
};
struct JKRHeap {
};
struct JKRDecompCommand {
/* 802DBD70 */ JKRDecompCommand();
/* 802DBDC0 */ ~JKRDecompCommand();
};
struct JKRDecomp {
/* 802DB680 */ void create(s32);
/* 802DB6E0 */ JKRDecomp(s32);
/* 802DB730 */ ~JKRDecomp();
/* 802DB790 */ void run();
/* 802DB858 */ void prepareCommand(u8*, u8*, u32, u32, void (*)(u32));
/* 802DB8D0 */ void sendCommand(JKRDecompCommand*);
/* 802DB900 */ void orderAsync(u8*, u8*, u32, u32, void (*)(u32));
/* 802DB934 */ void sync(JKRDecompCommand*, int);
/* 802DB988 */ void orderSync(u8*, u8*, u32, u32);
/* 802DB9DC */ void decode(u8*, u8*, u32, u32);
/* 802DBA58 */ void decodeSZP(u8*, u8*, u32, u32);
/* 802DBC14 */ void decodeSZS(u8*, u8*, u32, u32);
/* 802DBCF8 */ void checkCompressed(u8*);
};
struct JKRAMCommand {
};
struct JKRAramPiece {
/* 802D35F4 */ void sendCommand(JKRAMCommand*);
};
//
// Forward References:
//
extern "C" void create__9JKRDecompFl();
extern "C" void __ct__9JKRDecompFl();
extern "C" void __dt__9JKRDecompFv();
extern "C" void run__9JKRDecompFv();
extern "C" void prepareCommand__9JKRDecompFPUcPUcUlUlPFUl_v();
extern "C" void sendCommand__9JKRDecompFP16JKRDecompCommand();
extern "C" void orderAsync__9JKRDecompFPUcPUcUlUlPFUl_v();
extern "C" void sync__9JKRDecompFP16JKRDecompCommandi();
extern "C" void orderSync__9JKRDecompFPUcPUcUlUl();
extern "C" void decode__9JKRDecompFPUcPUcUlUl();
extern "C" void decodeSZP__9JKRDecompFPUcPUcUlUl();
extern "C" void decodeSZS__9JKRDecompFPUcPUcUlUl();
extern "C" void checkCompressed__9JKRDecompFPUc();
extern "C" void __ct__16JKRDecompCommandFv();
extern "C" void __dt__16JKRDecompCommandFv();
//
// External References:
//
void* operator new(u32, JKRHeap*, int);
void operator delete(void*);
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
extern "C" void* __nw__FUlP7JKRHeapi();
extern "C" void __dl__FPv();
extern "C" void __ct__9JKRThreadFUlii();
extern "C" void __dt__9JKRThreadFv();
extern "C" void sendCommand__12JKRAramPieceFP12JKRAMCommand();
extern "C" void OSInitMessageQueue();
extern "C" void OSSendMessage();
extern "C" void OSReceiveMessage();
extern "C" void OSResumeThread();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 804514B0-804514B8 0004+04 s=1 e=0 z=0 None .sbss sDecompObject__9JKRDecomp */
static u8 sDecompObject__9JKRDecomp[4 + 4 /* padding */];
/* 802DB680-802DB6E0 0060+00 s=0 e=1 z=0 None .text create__9JKRDecompFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::create(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/create__9JKRDecompFl.s"
}
#pragma pop
JKRDecomp::JKRDecomp(long priority) : JKRThread(0x800, 0x10, priority) {
resume();
/* ############################################################################################## */
/* 803CC460-803CC480 0020+00 s=1 e=0 z=0 None .data sMessageBuffer__9JKRDecomp */
SECTION_DATA static u8 sMessageBuffer__9JKRDecomp[32] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803CC480-803CC4A0 0020+00 s=2 e=0 z=0 None .data sMessageQueue__9JKRDecomp */
SECTION_DATA static u8 sMessageQueue__9JKRDecomp[32] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803CC4A0-803CC4B0 0010+00 s=2 e=0 z=0 None .data __vt__9JKRDecomp */
SECTION_DATA static void* __vt__9JKRDecomp[4] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__9JKRDecompFv,
(void*)run__9JKRDecompFv,
};
/* 802DB6E0-802DB730 0050+00 s=1 e=0 z=0 None .text __ct__9JKRDecompFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDecomp::JKRDecomp(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/__ct__9JKRDecompFl.s"
}
#pragma pop
JKRDecomp::~JKRDecomp() {}
void* JKRDecomp::run(void) {
OSInitMessageQueue(&lbl_803CC480, lbl_803CC460, 8);
for (;;) {
OSMessage message;
OSReceiveMessage(&lbl_803CC480, &message, OS_MESSAGE_BLOCKING);
JKRDecompCommand* command = (JKRDecompCommand*)message;
decode(command->mSrcBuffer, command->mDstBuffer, command->mSrcLength, command->mDstLength);
if (command->field_0x20 != 0) {
if (command->field_0x20 == 1) {
JKRAramPiece::sendCommand(command->mAMCommand);
}
continue;
}
if (command->mCallback) {
(*command->mCallback)((u32)command);
continue;
}
if (command->field_0x1c) {
OSSendMessage(command->field_0x1c, (OSMessage)1, OS_MESSAGE_NON_BLOCKING);
} else {
OSSendMessage(&command->mMessageQueue, (OSMessage)1, OS_MESSAGE_NON_BLOCKING);
}
}
/* 802DB730-802DB790 0060+00 s=1 e=0 z=0 None .text __dt__9JKRDecompFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDecomp::~JKRDecomp() {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/__dt__9JKRDecompFv.s"
}
#pragma pop
JKRDecompCommand* JKRDecomp::prepareCommand(u8* srcBuffer, u8* dstBuffer, u32 srcLength,
u32 dstLength,
JKRDecompCommand::AsyncCallback callback) {
JKRDecompCommand* command = new (JKRHeap::getSystemHeap(), -4) JKRDecompCommand();
command->mSrcBuffer = srcBuffer;
command->mDstBuffer = dstBuffer;
command->mSrcLength = srcLength;
command->mDstLength = dstLength;
command->mCallback = callback;
return command;
/* 802DB790-802DB858 00C8+00 s=1 e=0 z=0 None .text run__9JKRDecompFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::run() {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/run__9JKRDecompFv.s"
}
#pragma pop
void JKRDecomp::sendCommand(JKRDecompCommand* command) {
OSSendMessage(&lbl_803CC480, command, OS_MESSAGE_NON_BLOCKING);
/* 802DB858-802DB8D0 0078+00 s=1 e=0 z=0 None .text prepareCommand__9JKRDecompFPUcPUcUlUlPFUl_v */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::prepareCommand(u8* param_0, u8* param_1, u32 param_2, u32 param_3, void (*)(u32)) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/prepareCommand__9JKRDecompFPUcPUcUlUlPFUl_v.s"
}
#pragma pop
JKRDecompCommand* JKRDecomp::orderAsync(u8* srcBuffer, u8* dstBuffer, u32 srcLength, u32 dstLength,
JKRDecompCommand::AsyncCallback callback) {
JKRDecompCommand* command =
prepareCommand(srcBuffer, dstBuffer, srcLength, dstLength, callback);
sendCommand(command);
return command;
/* 802DB8D0-802DB900 0030+00 s=1 e=1 z=0 None .text sendCommand__9JKRDecompFP16JKRDecompCommand */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::sendCommand(JKRDecompCommand* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/sendCommand__9JKRDecompFP16JKRDecompCommand.s"
}
#pragma pop
bool JKRDecomp::sync(JKRDecompCommand* command, int isNonBlocking) {
OSMessage message;
bool result;
if (isNonBlocking == JKRDECOMP_SYNC_BLOCKING) {
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_BLOCKING);
result = true;
} else {
result =
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_NON_BLOCKING) != FALSE;
}
return result;
/* 802DB900-802DB934 0034+00 s=1 e=0 z=0 None .text orderAsync__9JKRDecompFPUcPUcUlUlPFUl_v */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::orderAsync(u8* param_0, u8* param_1, u32 param_2, u32 param_3, void (*)(u32)) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/orderAsync__9JKRDecompFPUcPUcUlUlPFUl_v.s"
}
#pragma pop
bool JKRDecomp::orderSync(u8* srcBuffer, u8* dstBuffer, u32 srcLength, u32 dstLength) {
JKRDecompCommand* command = orderAsync(srcBuffer, dstBuffer, srcLength, dstLength, NULL);
bool result = sync(command, JKRDECOMP_SYNC_BLOCKING);
delete command;
return result;
/* 802DB934-802DB988 0054+00 s=1 e=0 z=0 None .text sync__9JKRDecompFP16JKRDecompCommandi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::sync(JKRDecompCommand* param_0, int param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/sync__9JKRDecompFP16JKRDecompCommandi.s"
}
#pragma pop
void JKRDecomp::decode(u8* srcBuffer, u8* dstBuffer, u32 srcLength, u32 dstLength) {
JKRCompression compression = checkCompressed(srcBuffer);
if (compression == COMPRESSION_YAY0) {
decodeSZP(srcBuffer, dstBuffer, srcLength, dstLength);
} else if (compression == COMPRESSION_YAZ0) {
decodeSZS(srcBuffer, dstBuffer, srcLength, dstLength);
}
/* 802DB988-802DB9DC 0054+00 s=0 e=5 z=0 None .text orderSync__9JKRDecompFPUcPUcUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::orderSync(u8* param_0, u8* param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/orderSync__9JKRDecompFPUcPUcUlUl.s"
}
#pragma pop
// All instructions match. Wrong registers are used.
#ifdef NONMATCHING
void JKRDecomp::decodeSZP(u8* src, u8* dst, u32 srcLength, u32 dstLength) {
u32 decodedSize;
s32 srcChunkOffset;
s32 count;
s32 dstOffset;
u32 length;
u32 counter;
u32 srcDataOffset;
u32 linkTableOffset;
s32 offset;
s32 i;
decodedSize = read_big_endian_u32(src + 4);
linkTableOffset = read_big_endian_u32(src + 8);
srcDataOffset = read_big_endian_u32(src + 12);
dstOffset = 0;
counter = 0;
srcChunkOffset = 16;
u32 chunkBits;
if (srcLength == 0)
return;
if (dstLength > decodedSize)
return;
length = srcLength;
do {
if (counter == 0) {
chunkBits = read_big_endian_u32(src + srcChunkOffset);
srcChunkOffset += 4;
counter = 32;
}
if (chunkBits & 0x80000000) {
if (dstLength == 0) {
dst[dstOffset] = src[srcDataOffset];
length--;
if (length == 0) {
return;
}
} else {
dstLength--;
}
dstOffset++;
srcDataOffset++;
} else {
u32 linkInfo = read_big_endian_u16(src + linkTableOffset);
linkTableOffset += 2;
offset = dstOffset - (linkInfo & 0xFFF);
count = ((s32)linkInfo) >> 12;
if (count == 0) {
count = (u32)src[srcDataOffset] + 0x12;
srcDataOffset++;
} else {
count += 2;
}
if (count > decodedSize - dstOffset) {
count = decodedSize - dstOffset;
}
for (i = 0; i < count; i++, dstOffset++, offset++) {
if (dstLength == 0) {
dst[dstOffset] = dst[offset - 1];
length--;
if (length == 0) {
return;
}
} else {
dstLength--;
}
}
}
chunkBits <<= 1;
counter--;
} while ((s32)dstLength < decodedSize);
/* 802DB9DC-802DBA58 007C+00 s=1 e=0 z=0 None .text decode__9JKRDecompFPUcPUcUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::decode(u8* param_0, u8* param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/decode__9JKRDecompFPUcPUcUlUl.s"
}
#else
asm void JKRDecomp::decodeSZP(u8*, u8*, u32, u32) {
nofralloc
#include "JSystem/JKernel/JKRDecomp/asm/func_802DBA58.s"
}
#endif
#pragma pop
asm void JKRDecomp::decodeSZS(u8*, u8*, u32, u32){nofralloc
#include "JSystem/JKernel/JKRDecomp/asm/func_802DBC14.s"
}
JKRCompression JKRDecomp::checkCompressed(u8* src) {
if ((src[0] == 'Y') && (src[1] == 'a') && (src[3] == '0')) {
if (src[2] == 'y') {
return COMPRESSION_YAY0;
}
if (src[2] == 'z') {
return COMPRESSION_YAZ0;
}
}
if ((src[0] == 'A') && (src[1] == 'S') && (src[2] == 'R')) {
return COMPRESSION_ASR;
}
return COMPRESSION_NONE;
/* 802DBA58-802DBC14 01BC+00 s=1 e=0 z=0 None .text decodeSZP__9JKRDecompFPUcPUcUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::decodeSZP(u8* param_0, u8* param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/decodeSZP__9JKRDecompFPUcPUcUlUl.s"
}
#pragma pop
JKRDecompCommand::JKRDecompCommand() {
OSInitMessageQueue(&mMessageQueue, &mMessage, 1);
mCallback = NULL;
field_0x1c = NULL;
mThis = this;
field_0x20 = 0;
/* 802DBC14-802DBCF8 00E4+00 s=1 e=0 z=0 None .text decodeSZS__9JKRDecompFPUcPUcUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::decodeSZS(u8* param_0, u8* param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/decodeSZS__9JKRDecompFPUcPUcUlUl.s"
}
#pragma pop
/* 802DBCF8-802DBD70 0078+00 s=1 e=4 z=0 None .text checkCompressed__9JKRDecompFPUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDecomp::checkCompressed(u8* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/checkCompressed__9JKRDecompFPUc.s"
}
#pragma pop
/* 802DBD70-802DBDC0 0050+00 s=1 e=0 z=0 None .text __ct__16JKRDecompCommandFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDecompCommand::JKRDecompCommand() {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/__ct__16JKRDecompCommandFv.s"
}
#pragma pop
/* 802DBDC0-802DBDFC 003C+00 s=1 e=0 z=0 None .text __dt__16JKRDecompCommandFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDecompCommand::~JKRDecompCommand() {
nofralloc
#include "asm/JSystem/JKernel/JKRDecomp/__dt__16JKRDecompCommandFv.s"
}
#pragma pop
JKRDecompCommand::~JKRDecompCommand() {}
+86 -14
View File
@@ -1,17 +1,89 @@
#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h"
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRDisposer
//
JKRDisposer::JKRDisposer() : mLink(this) {
mHeap = JKRHeap::findFromRoot(this);
if (mHeap) {
mHeap->appendDisposer(this);
}
}
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDisposer.h"
JKRDisposer::~JKRDisposer() {
JKRHeap* heap = mHeap;
if (heap) {
heap->removeDisposer(this);
}
//
// Types:
//
struct JSUPtrLink {
/* 802DBDFC */ JSUPtrLink(void*);
/* 802DBE14 */ ~JSUPtrLink();
};
struct JSUPtrList {
/* 802DBF4C */ void append(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
struct JKRHeap {
/* 802CE83C */ void findFromRoot(void*);
};
struct JKRDisposer {
/* 802D147C */ JKRDisposer();
/* 802D14E4 */ ~JKRDisposer();
};
//
// Forward References:
//
extern "C" void __ct__11JKRDisposerFv();
extern "C" void __dt__11JKRDisposerFv();
//
// External References:
//
void operator delete(void*);
extern "C" void findFromRoot__7JKRHeapFPv();
extern "C" void __dl__FPv();
extern "C" void __ct__10JSUPtrLinkFPv();
extern "C" void __dt__10JSUPtrLinkFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC0F0-803CC100 000C+04 s=2 e=0 z=0 None .data __vt__11JKRDisposer */
SECTION_DATA static void* __vt__11JKRDisposer[3 + 1 /* padding */] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__11JKRDisposerFv,
/* padding */
NULL,
};
/* 802D147C-802D14E4 0068+00 s=0 e=12 z=0 None .text __ct__11JKRDisposerFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDisposer::JKRDisposer() {
nofralloc
#include "asm/JSystem/JKernel/JKRDisposer/__ct__11JKRDisposerFv.s"
}
#pragma pop
/* 802D14E4-802D1568 0084+00 s=1 e=10 z=0 None .text __dt__11JKRDisposerFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDisposer::~JKRDisposer() {
nofralloc
#include "asm/JSystem/JKernel/JKRDisposer/__dt__11JKRDisposerFv.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+303 -118
View File
@@ -1,133 +1,318 @@
#include "JSystem/JKernel/JKRDvdFile/JKRDvdFile.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRDvdFile
//
extern "C" {
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDvdFile.h"
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUPtrLink {
/* 802DBDFC */ JSUPtrLink(void*);
/* 802DBE14 */ ~JSUPtrLink();
};
struct JSUPtrList {
/* 802DBEAC */ ~JSUPtrList();
/* 802DBF14 */ void initiate();
/* 802DBF4C */ void append(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
template <typename A0>
struct JSUList { };
/* JSUList<JKRDvdFile> */
struct JSUList__template8 {
/* 802D9B44 */ ~JSUList__template8();
};
struct DVDFileInfo {
};
struct JKRDvdFile {
/* 802D96A0 */ JKRDvdFile(s32);
/* 802D9584 */ JKRDvdFile();
/* 802D95F8 */ JKRDvdFile(char const*);
/* 802D9748 */ ~JKRDvdFile();
/* 802D97E4 */ void initiate();
/* 802D98C4 */ void open(s32);
/* 802D9850 */ void open(char const*);
/* 802D9938 */ void close();
/* 802D99B4 */ void readData(void*, s32, s32);
/* 802D9A68 */ s32 writeData(void const*, s32, s32);
/* 802D9A70 */ void sync();
/* 802D9AC4 */ void doneProcess(s32, DVDFileInfo*);
/* 802D9AF8 */ void getFileSize() const;
};
struct JKRDisposer {
/* 802D147C */ JKRDisposer();
/* 802D14E4 */ ~JKRDisposer();
};
//
// Forward References:
//
extern "C" extern char const* const JKRDvdFile__stringBase0;
extern "C" void __ct__10JKRDvdFileFv();
extern "C" void __ct__10JKRDvdFileFPCc();
extern "C" void __ct__10JKRDvdFileFl();
extern "C" void __dt__10JKRDvdFileFv();
extern "C" void initiate__10JKRDvdFileFv();
extern "C" void open__10JKRDvdFileFPCc();
extern "C" void open__10JKRDvdFileFl();
extern "C" void close__10JKRDvdFileFv();
extern "C" void readData__10JKRDvdFileFPvll();
extern "C" s32 writeData__10JKRDvdFileFPCvll();
extern "C" void sync__10JKRDvdFileFv();
extern "C" void doneProcess__10JKRDvdFileFlP11DVDFileInfo();
extern "C" void getFileSize__10JKRDvdFileCFv();
extern "C" void __sinit_JKRDvdFile_cpp();
extern "C" void func_802D9B44();
extern "C" extern char const* const JKRDvdFile__stringBase0;
//
// External References:
//
void operator delete(void*);
extern "C" extern void* __vt__7JKRFile[8];
extern "C" void __dl__FPv();
extern "C" void __ct__11JKRDisposerFv();
extern "C" void __dt__11JKRDisposerFv();
extern "C" void __ct__10JSUPtrLinkFPv();
extern "C" void __dt__10JSUPtrLinkFv();
extern "C" void __dt__10JSUPtrListFv();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void OSInitMessageQueue();
extern "C" void OSSendMessage();
extern "C" void OSReceiveMessage();
extern "C" void OSInitMutex();
extern "C" void OSLockMutex();
extern "C" void OSUnlockMutex();
extern "C" void OSGetCurrentThread();
extern "C" void DVDFastOpen();
extern "C" void DVDOpen();
extern "C" void DVDClose();
extern "C" void DVDReadAsyncPrio();
extern "C" void DVDGetCommandBlockStatus();
extern "C" void __register_global_object();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__7JKRFile[8];
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC438-803CC460 0024+04 s=4 e=0 z=0 None .data __vt__10JKRDvdFile */
SECTION_DATA static void* __vt__10JKRDvdFile[9 + 1 /* padding */] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__10JKRDvdFileFv,
(void*)open__10JKRDvdFileFPCc,
(void*)close__10JKRDvdFileFv,
(void*)readData__10JKRDvdFileFPvll,
(void*)writeData__10JKRDvdFileFPCvll,
(void*)getFileSize__10JKRDvdFileCFv,
(void*)open__10JKRDvdFileFl,
/* padding */
NULL,
};
/* 802D9584-802D95F8 0074+00 s=0 e=3 z=0 None .text __ct__10JKRDvdFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFile::JKRDvdFile() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/__ct__10JKRDvdFileFv.s"
}
#pragma pop
/* 802D95F8-802D96A0 00A8+00 s=0 e=2 z=0 None .text __ct__10JKRDvdFileFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFile::JKRDvdFile(char const* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/__ct__10JKRDvdFileFPCc.s"
}
#pragma pop
/* 802D96A0-802D9748 00A8+00 s=0 e=3 z=0 None .text __ct__10JKRDvdFileFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFile::JKRDvdFile(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/__ct__10JKRDvdFileFl.s"
}
#pragma pop
/* 802D9748-802D97E4 009C+00 s=1 e=5 z=0 None .text __dt__10JKRDvdFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFile::~JKRDvdFile() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/__dt__10JKRDvdFileFv.s"
}
#pragma pop
/* 802D97E4-802D9850 006C+00 s=3 e=0 z=0 None .text initiate__10JKRDvdFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::initiate() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/initiate__10JKRDvdFileFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80434360-8043436C 000C+00 s=1 e=0 z=0 None .bss @657 */
static u8 lit_657[12];
/* 8043436C-80434378 000C+00 s=4 e=0 z=0 None .bss sDvdList__10JKRDvdFile */
static u8 sDvdList__10JKRDvdFile[12];
/* 802D9850-802D98C4 0074+00 s=1 e=1 z=0 None .text open__10JKRDvdFileFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::open(char const* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/open__10JKRDvdFileFPCc.s"
}
#pragma pop
/* 802D98C4-802D9938 0074+00 s=1 e=2 z=0 None .text open__10JKRDvdFileFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::open(s32 param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/open__10JKRDvdFileFl.s"
}
#pragma pop
/* ############################################################################################## */
/* 8039D260-8039D290 0029+07 s=1 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D260 = "JKRDvdFile.cpp";
SECTION_DEAD char const* const stringBase_8039D26F = "%s";
SECTION_DEAD char const* const stringBase_8039D272 = "cannot close DVD file\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039D289 = "\0\0\0\0\0\0";
#pragma pop
/* 802D9938-802D99B4 007C+00 s=1 e=0 z=0 None .text close__10JKRDvdFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::close() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/close__10JKRDvdFileFv.s"
}
#pragma pop
/* 802D99B4-802D9A68 00B4+00 s=1 e=0 z=0 None .text readData__10JKRDvdFileFPvll */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::readData(void* param_0, s32 param_1, s32 param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/readData__10JKRDvdFileFPvll.s"
}
#pragma pop
/* 802D9A68-802D9A70 0008+00 s=1 e=0 z=0 None .text writeData__10JKRDvdFileFPCvll */
s32 JKRDvdFile::writeData(void const* param_0, s32 param_1, s32 param_2) {
return -1;
}
extern char lbl_8039D260[12]; // "JKRDvdFile.cpp"
JKRDvdFile::JKRDvdFile() : JKRFile(), mDvdLink(this) {
initiate();
/* 802D9A70-802D9AC4 0054+00 s=1 e=0 z=0 None .text sync__10JKRDvdFileFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::sync() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/sync__10JKRDvdFileFv.s"
}
#pragma pop
JKRDvdFile::JKRDvdFile(const char* name) : JKRFile(), mDvdLink(this) {
initiate();
bool result = open(name);
mIsAvailable = result;
// weird code. doesn't match without this, maybe remains from assert or something?
if (mIsAvailable)
return;
else
return;
/* 802D9AC4-802D9AF8 0034+00 s=1 e=0 z=0 None .text doneProcess__10JKRDvdFileFlP11DVDFileInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::doneProcess(s32 param_0, DVDFileInfo* param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/doneProcess__10JKRDvdFileFlP11DVDFileInfo.s"
}
#pragma pop
JKRDvdFile::JKRDvdFile(long entryNum) : JKRFile(), mDvdLink(this) {
initiate();
bool result = open(entryNum);
mIsAvailable = result;
// weird code. doesn't match without this, maybe remains from assert or something?
if (mIsAvailable)
return;
else
return;
/* 802D9AF8-802D9B00 0008+00 s=1 e=0 z=0 None .text getFileSize__10JKRDvdFileCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFile::getFileSize() const {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/getFileSize__10JKRDvdFileCFv.s"
}
#pragma pop
JKRDvdFile::~JKRDvdFile() {
close();
/* 802D9B00-802D9B44 0044+00 s=0 e=1 z=0 None .text __sinit_JKRDvdFile_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __sinit_JKRDvdFile_cpp() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/__sinit_JKRDvdFile_cpp.s"
}
#pragma pop
void JKRDvdFile::initiate(void) {
mDvdFile = this;
OSInitMutex(&mMutex1);
OSInitMutex(&mMutex2);
OSInitMessageQueue(&mMessageQueue2, &mMessage2, 1);
OSInitMessageQueue(&mMessageQueue1, &mMessage1, 1);
mOSThread = NULL;
field_0x50 = 0;
field_0x58 = 0;
/* 802D9B44-802D9B98 0054+00 s=1 e=0 z=0 None .text __dt__21JSUList<10JKRDvdFile>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JSUList__template8::~JSUList__template8() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdFile/func_802D9B44.s"
}
#pragma pop
bool JKRDvdFile::open(const char* param_1) {
if (!mIsAvailable) {
mIsAvailable = DVDOpen(param_1, &mFileInfo);
if (mIsAvailable) {
getDvdList().append(&mDvdLink);
getStatus();
}
}
return mIsAvailable;
}
bool JKRDvdFile::open(long entryNum) {
if (!mIsAvailable) {
mIsAvailable = DVDFastOpen(entryNum, &mFileInfo);
if (mIsAvailable) {
getDvdList().append(&mDvdLink);
getStatus();
}
}
return mIsAvailable;
}
void JKRDvdFile::close() {
if (mIsAvailable) {
s32 result = DVDClose(&mFileInfo);
if (result != 0) {
mIsAvailable = false;
getDvdList().remove(&mDvdLink);
} else {
const char* filename = lbl_8039D260; // "JKRDvdFile.cpp"
const char* format = lbl_8039D260 + 0x0F; // "%s"
const char* arg1 = lbl_8039D260 + 0x12; // "cannot close DVD file\n"
panic_f__12JUTExceptionFPCciPCce(filename, 0xd5, format, arg1);
}
}
}
s32 JKRDvdFile::readData(void* param_1, long length, long param_3) {
JUT_ASSERT((length & 0x1f) == 0);
OSLockMutex(&mMutex1);
if (mOSThread) {
OSUnlockMutex(&mMutex1);
return -1;
}
mOSThread = OSGetCurrentThread();
s32 result = -1;
s32 readAsyncResult =
DVDReadAsyncPrio(&mFileInfo, param_1, length, param_3, JKRDvdFile::doneProcess, 2);
if (readAsyncResult) {
result = sync();
}
mOSThread = NULL;
OSUnlockMutex(&mMutex1);
return result;
}
s32 JKRDvdFile::writeData(const void*, long, long) {
return -1;
}
s32 JKRDvdFile::sync(void) {
OSMessage message;
OSLockMutex(&mMutex1);
OSReceiveMessage(&mMessageQueue2, &message, 1);
mOSThread = NULL;
OSUnlockMutex(&mMutex1);
return (int)message;
}
void JKRDvdFile::doneProcess(long id, DVDFileInfo* fileInfo) {
// fileInfo->field_0x3c looks like some kind of user pointer?
JKRDvdFile* dvdFile = *(JKRDvdFile**)((u8*)fileInfo + 0x3c);
OSSendMessage(&dvdFile->mMessageQueue2, (OSMessage)id, OS_MESSAGE_NON_BLOCKING);
}
s32 JKRDvdFile::getFileSize(void) const {
return mFileInfo.length;
}
+300 -93
View File
@@ -1,110 +1,317 @@
#include "JSystem/JKernel/JKRDvdRipper/JKRDvdRipper.h"
#include "JSystem/JKernel/JKRExpHeap/JKRExpHeap.h"
#include "dvd/dvd.h"
#include "global.h"
#include "msl_c/string.h"
//
// Generated By: dol2asm
// Translation Unit: JKRDvdRipper
//
extern "C" {
void __ct__10JKRDvdFileFv(void);
void __dt__10JKRDvdFileFv(void);
void __RAS_OSDisableInterrupts_begin(void);
void alloc__7JKRHeapFUli(void);
void alloc__7JKRHeapFUliP7JKRHeap(void);
void checkCompressed__9JKRDecompFPUc(void);
void DCInvalidateRange(void*, u32);
void DCStoreRangeNoSync(void);
void decompSZS_subroutine__FPUcPUc(void);
void free__7JKRHeapFPvP7JKRHeap(void);
void isErrorRetry__12JKRDvdRipperFv(void);
void JKRDecompressFromDVD__FP10JKRDvdFilePvUlUlUlUlPUl(void);
void panic_f__12JUTExceptionFPCciPCce(const char* filename, int line, const char* format, ...);
void loadToMainRAM__12JKRDvdRipperFP10JKRDvdFilePUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl(
void);
void nextSrcData__FPUc(void);
void open__10JKRDvdFileFl(void);
void open__10JKRDvdFileFPCc(void);
void orderSync__9JKRDecompFPUcPUcUlUl(void);
void VIWaitForRetrace(void);
}
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDvdRipper.h"
extern JKRExpHeap* sSystemHeap__7JKRHeap;
extern u8 lbl_804508C8;
extern u8 lbl_8039D290; // "JKRDvdRipper.cpp"
extern u8 lbl_80451458; // DAT_80451458 (init global mutex)
extern u8 lbl_80434390; // JKernel::decompMutex
extern u8 lbl_804508CC; // JKRDvdRipper::sSZSBufferSize
extern u8 lbl_80451428; // JKernel::szpBuf
extern u8 lbl_8045142C; // JKernel::szpEnd
extern u8 lbl_80451430; // JKernel::refBuf
extern u8 lbl_80451434; // JKernel::refEnd
extern u8 lbl_80451438; // JKernel::refCurrent
extern u8 lbl_8045143C; // JKernel::srcOffset
extern u8 lbl_80451440; // JKernel::transLeft
extern u8 lbl_80451444; // JKernel::srcLimit
extern u8 lbl_80451448; // JKernel::srcFile
extern u8 lbl_8045144C; // JKernel::fileOffset
extern u8 lbl_80451450; // JKernel::readCount
extern u8 lbl_80451454; // JKernel::maxDest
extern u8 lbl_8045145C; // JKernel::tsPtr
extern u8 lbl_804508D0;
extern u8 lbl_804343B4; // JKRDvdAramRipper::sDvdAramAsyncList
//
// Types:
//
struct JUTException {
/* 802E21FC */ void panic_f(char const*, int, char const*, ...);
};
struct JSUPtrList {
/* 802DBEAC */ ~JSUPtrList();
/* 802DBF14 */ void initiate();
};
template <typename A0>
struct JSUList { };
/* JSUList<JKRDMCommand> */
struct JSUList__template9 {
/* 802DA820 */ ~JSUList__template9();
};
struct JKRHeap {
/* 802CE4D4 */ void alloc(u32, int);
/* 802CE474 */ void alloc(u32, int, JKRHeap*);
/* 802CE500 */ void free(void*, JKRHeap*);
};
struct JKRExpandSwitch {
};
struct JKRDvdFile {
/* 802D9584 */ JKRDvdFile();
/* 802D9748 */ ~JKRDvdFile();
/* 802D9850 */ void open(char const*);
/* 802D98C4 */ void open(s32);
};
struct JKRDvdRipper {
struct EAllocDirection {
};
/* 802D9B98 */ void loadToMainRAM(char const*, u8*, JKRExpandSwitch, u32, JKRHeap*, JKRDvdRipper::EAllocDirection, u32, int*, u32*);
/* 802D9D10 */ void loadToMainRAM(JKRDvdFile*, u8*, JKRExpandSwitch, u32, JKRHeap*, JKRDvdRipper::EAllocDirection, u32, int*, u32*);
/* 802D9C54 */ void loadToMainRAM(s32, u8*, JKRExpandSwitch, u32, JKRHeap*, JKRDvdRipper::EAllocDirection, u32, int*, u32*);
/* 802DA7D4 */ void isErrorRetry();
};
struct JKRDecomp {
/* 802DB988 */ void orderSync(u8*, u8*, u32, u32);
/* 802DBCF8 */ void checkCompressed(u8*);
};
//
// Forward References:
//
static void JKRDecompressFromDVD(JKRDvdFile*, void*, u32, u32, u32, u32, u32*);
static void decompSZS_subroutine(u8*, u8*);
static u8* firstSrcData(void);
static u8* nextSrcData(u8*);
extern "C" void firstSrcData__Fv();
static void firstSrcData();
static void nextSrcData(u8*);
extern "C" extern char const* const JKRDvdRipper__stringBase0;
extern "C" extern u32 sSZSBufferSize__12JKRDvdRipper;
asm void* JKRDvdRipper::loadToMainRAM(const char*, u8*, JKRExpandSwitch, u32, JKRHeap*,
JKRDvdRipper::EAllocDirection, u32, JKRCompression*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802D9B98.s"
}
extern "C" void loadToMainRAM__12JKRDvdRipperFPCcPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" void loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" void loadToMainRAM__12JKRDvdRipperFP10JKRDvdFilePUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" static void JKRDecompressFromDVD__FP10JKRDvdFilePvUlUlUlUlPUl();
extern "C" static void decompSZS_subroutine__FPUcPUc();
extern "C" static void firstSrcData__Fv();
extern "C" static void nextSrcData__FPUc();
extern "C" void isErrorRetry__12JKRDvdRipperFv();
extern "C" void __sinit_JKRDvdRipper_cpp();
extern "C" void func_802DA820();
extern "C" extern char const* const JKRDvdRipper__stringBase0;
extern "C" extern u32 sSZSBufferSize__12JKRDvdRipper;
asm void* JKRDvdRipper::loadToMainRAM(long, u8*, JKRExpandSwitch, u32, JKRHeap*,
JKRDvdRipper::EAllocDirection, u32, JKRCompression*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802D9C54.s"
}
//
// External References:
//
asm void* JKRDvdRipper::loadToMainRAM(JKRDvdFile*, u8*, JKRExpandSwitch, u32, JKRHeap*,
JKRDvdRipper::EAllocDirection, u32, JKRCompression*, u32*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802D9D10.s"
}
void operator delete(void*);
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
asm void JKRDecompressFromDVD(JKRDvdFile*, void*, u32, u32, u32, u32, u32*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA1E4.s"
}
SECTION_INIT void memcpy();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void alloc__7JKRHeapFUli();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void __dl__FPv();
extern "C" void __ct__10JKRDvdFileFv();
extern "C" void __dt__10JKRDvdFileFv();
extern "C" void open__10JKRDvdFileFPCc();
extern "C" void open__10JKRDvdFileFl();
extern "C" void orderSync__9JKRDecompFPUcPUcUlUl();
extern "C" void checkCompressed__9JKRDecompFPUc();
extern "C" void __dt__10JSUPtrListFv();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void panic_f__12JUTExceptionFPCciPCce();
extern "C" void DCInvalidateRange();
extern "C" void DCStoreRangeNoSync();
extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void OSInitMutex();
extern "C" void OSLockMutex();
extern "C" void OSUnlockMutex();
extern "C" void DVDReadPrio();
extern "C" void VIWaitForRetrace();
extern "C" void __register_global_object();
extern "C" void _savegpr_18();
extern "C" void _savegpr_23();
extern "C" void _savegpr_24();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_18();
extern "C" void _restgpr_23();
extern "C" void _restgpr_24();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 sSystemHeap__7JKRHeap[4];
asm void decompSZS_subroutine(u8*, u8*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA35C.s"
}
//
// Declarations:
//
asm u8* firstSrcData(void) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA60C.s"
/* 802D9B98-802D9C54 00BC+00 s=0 e=1 z=0 None .text loadToMainRAM__12JKRDvdRipperFPCcPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdRipper::loadToMainRAM(char const* param_0, u8* param_1, JKRExpandSwitch param_2, u32 param_3, JKRHeap* param_4, JKRDvdRipper::EAllocDirection param_5, u32 param_6, int* param_7, u32* param_8) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/func_802D9B98.s"
}
#pragma pop
asm u8* nextSrcData(u8*) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA6D8.s"
}
asm void JKRDvdRipper::isErrorRetry(void) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA7D4.s"
/* 802D9C54-802D9D10 00BC+00 s=0 e=9 z=0 None .text loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdRipper::loadToMainRAM(s32 param_0, u8* param_1, JKRExpandSwitch param_2, u32 param_3, JKRHeap* param_4, JKRDvdRipper::EAllocDirection param_5, u32 param_6, int* param_7, u32* param_8) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/func_802D9C54.s"
}
#pragma pop
#if 0
asm void __sinit_JKRDvdRipper_cpp {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA7DC.s"
}
asm JSUList<12JKRDMCommand>::~JSUList<12JKRDMCommand>(void) {
nofralloc
#include "JSystem/JKernel/JKRDvdRipper/asm/func_802DA820.s"
/* ############################################################################################## */
/* 8039D290-8039D2F0 0059+07 s=1 e=0 z=0 None .rodata @stringBase0 */
#pragma push
#pragma force_active on
#pragma section ".dead"
SECTION_DEAD char const* const stringBase_8039D290 = "JKRDvdRipper.cpp";
SECTION_DEAD char const* const stringBase_8039D2A1 = "%s";
SECTION_DEAD char const* const stringBase_8039D2A4 =
"Sorry, not applied for SZP archive.";
SECTION_DEAD char const* const stringBase_8039D2C8 =
"Not support SZP with offset read";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039D2E9 = "\0\0\0\0\0\0";
#pragma pop
/* 804508C8-804508CC 0004+00 s=3 e=0 z=0 None .sdata None */
SECTION_SDATA static u32 data_804508C8 = 0x01000000;
/* 802D9D10-802DA1E4 04D4+00 s=2 e=0 z=0 None .text loadToMainRAM__12JKRDvdRipperFP10JKRDvdFilePUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdRipper::loadToMainRAM(JKRDvdFile* param_0, u8* param_1, JKRExpandSwitch param_2, u32 param_3, JKRHeap* param_4, JKRDvdRipper::EAllocDirection param_5, u32 param_6, int* param_7, u32* param_8) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/func_802D9D10.s"
}
#endif
#pragma pop
/* ############################################################################################## */
/* 80434378-80434384 000C+00 s=1 e=0 z=0 None .bss @491 */
static u8 lit_491[12];
/* 80434384-80434390 000C+00 s=1 e=0 z=0 None .bss sDvdAsyncList__12JKRDvdRipper */
static u8 sDvdAsyncList__12JKRDvdRipper[12];
/* 80434390-804343A8 0018+00 s=1 e=0 z=0 None .bss decompMutex */
static u8 decompMutex[24];
/* 804508CC-804508D0 0004+00 s=1 e=1 z=0 None .sdata sSZSBufferSize__12JKRDvdRipper */
SECTION_SDATA u32 sSZSBufferSize__12JKRDvdRipper = 0x00000400;
/* 80451428-8045142C 0004+00 s=3 e=0 z=0 None .sbss szpBuf */
static u8 szpBuf[4];
/* 8045142C-80451430 0004+00 s=3 e=0 z=0 None .sbss szpEnd */
static u8 szpEnd[4];
/* 80451430-80451434 0004+00 s=2 e=0 z=0 None .sbss refBuf */
static u8 refBuf[4];
/* 80451434-80451438 0004+00 s=2 e=0 z=0 None .sbss refEnd */
static u8 refEnd[4];
/* 80451438-8045143C 0004+00 s=2 e=0 z=0 None .sbss refCurrent */
static u8 refCurrent[4];
/* 8045143C-80451440 0004+00 s=3 e=0 z=0 None .sbss srcOffset */
static u8 srcOffset[4];
/* 80451440-80451444 0004+00 s=4 e=0 z=0 None .sbss transLeft */
static u8 transLeft[4];
/* 80451444-80451448 0004+00 s=3 e=0 z=0 None .sbss srcLimit */
static u8 srcLimit[4];
/* 80451448-8045144C 0004+00 s=3 e=0 z=0 None .sbss srcFile */
static u8 srcFile[4];
/* 8045144C-80451450 0004+00 s=2 e=0 z=0 None .sbss fileOffset */
static u8 fileOffset[4];
/* 80451450-80451454 0004+00 s=2 e=0 z=0 None .sbss readCount */
static u8 readCount[4];
/* 80451454-80451458 0004+00 s=2 e=0 z=0 None .sbss maxDest */
static u8 maxDest[4];
/* 80451458-8045145C 0004+00 s=1 e=0 z=0 None .sbss None */
static u8 data_80451458[4];
/* 8045145C-80451460 0004+00 s=2 e=0 z=0 None .sbss tsPtr */
static u8 tsPtr[4];
/* 80451460-80451468 0004+04 s=1 e=0 z=0 None .sbss tsArea */
static u8 tsArea[4 + 4 /* padding */];
/* 802DA1E4-802DA35C 0178+00 s=1 e=0 z=0 None .text JKRDecompressFromDVD__FP10JKRDvdFilePvUlUlUlUlPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm static void JKRDecompressFromDVD(JKRDvdFile* param_0, void* param_1, u32 param_2, u32 param_3, u32 param_4, u32 param_5, u32* param_6) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/JKRDecompressFromDVD__FP10JKRDvdFilePvUlUlUlUlPUl.s"
}
#pragma pop
/* 802DA35C-802DA60C 02B0+00 s=1 e=0 z=0 None .text decompSZS_subroutine__FPUcPUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm static void decompSZS_subroutine(u8* param_0, u8* param_1) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/decompSZS_subroutine__FPUcPUc.s"
}
#pragma pop
/* 802DA60C-802DA6D8 00CC+00 s=1 e=0 z=0 None .text firstSrcData__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm static void firstSrcData() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/firstSrcData__Fv.s"
}
#pragma pop
/* 802DA6D8-802DA7D4 00FC+00 s=1 e=0 z=0 None .text nextSrcData__FPUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm static void nextSrcData(u8* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/nextSrcData__FPUc.s"
}
#pragma pop
/* 802DA7D4-802DA7DC 0008+00 s=1 e=0 z=0 None .text isErrorRetry__12JKRDvdRipperFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdRipper::isErrorRetry() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/isErrorRetry__12JKRDvdRipperFv.s"
}
#pragma pop
/* 802DA7DC-802DA820 0044+00 s=0 e=1 z=0 None .text __sinit_JKRDvdRipper_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __sinit_JKRDvdRipper_cpp() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/__sinit_JKRDvdRipper_cpp.s"
}
#pragma pop
/* 802DA820-802DA874 0054+00 s=1 e=0 z=0 None .text __dt__23JSUList<12JKRDMCommand>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JSUList__template9::~JSUList__template9() {
nofralloc
#include "asm/JSystem/JKernel/JKRDvdRipper/func_802DA820.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
+45 -13
View File
@@ -1,16 +1,48 @@
#include "JSystem/JKernel/JKRFile/JKRFile.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRFile
//
extern "C" {
void VIWaitForRetrace(void);
}
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRFile.h"
s32 JKRFile::read(void* data, s32 size, long offset) {
while (true) {
s32 result = readData(data, size, offset);
if (size != result)
VIWaitForRetrace();
else
return result;
}
//
// Types:
//
struct JKRFile {
/* 802D9518 */ void read(void*, s32, s32);
};
//
// Forward References:
//
extern "C" void read__7JKRFileFPvll();
//
// External References:
//
extern "C" void VIWaitForRetrace();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
//
// Declarations:
//
/* 802D9518-802D9584 006C+00 s=0 e=2 z=0 None .text read__7JKRFileFPvll */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRFile::read(void* param_0, s32 param_1, s32 param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRFile/read__7JKRFileFPvll.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
+147 -83
View File
@@ -1,103 +1,167 @@
#include "JSystem/JKernel/JKRFileFinder/JKRFileFinder.h"
#include "JSystem/JKernel/JKRArchive/JKRArchive.h"
#include "dvd/dvd.h"
#include "global.h"
//
// Generated By: dol2asm
// Translation Unit: JKRFileFinder
//
extern "C" {
void __dl__FPv(void);
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRFileFinder.h"
//
// Types:
//
struct JKRFileFinder {
/* 802D4910 */ ~JKRFileFinder();
};
struct JKRDvdFinder {
/* 802D4770 */ JKRDvdFinder(char const*);
/* 802D47F4 */ ~JKRDvdFinder();
/* 802D4874 */ void findNextFile();
};
struct JKRArchive {
struct SDirEntry {
};
/* 802D5AC0 */ void getDirEntry(JKRArchive::SDirEntry*, u32) const;
};
struct JKRArcFinder {
/* 802D4638 */ JKRArcFinder(JKRArchive*, s32, s32);
/* 802D46C4 */ void findNextFile();
/* 802D4958 */ ~JKRArcFinder();
};
//
// Forward References:
//
extern "C" void __ct__12JKRArcFinderFP10JKRArchivell();
extern "C" void findNextFile__12JKRArcFinderFv();
extern "C" void __ct__12JKRDvdFinderFPCc();
extern "C" void __dt__12JKRDvdFinderFv();
extern "C" void findNextFile__12JKRDvdFinderFv();
extern "C" void __dt__13JKRFileFinderFv();
extern "C" void __dt__12JKRArcFinderFv();
//
// External References:
//
void operator delete(void*);
extern "C" void __dl__FPv();
extern "C" void getDirEntry__10JKRArchiveCFPQ210JKRArchive9SDirEntryUl();
extern "C" void DVDOpenDir();
extern "C" void DVDReadDir();
extern "C" bool DVDCloseDir();
//
// Declarations:
//
/* ############################################################################################## */
/* 803CC208-803CC218 0010+00 s=2 e=0 z=0 None .data __vt__12JKRDvdFinder */
SECTION_DATA static void* __vt__12JKRDvdFinder[4] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__12JKRDvdFinderFv,
(void*)findNextFile__12JKRDvdFinderFv,
};
/* 803CC218-803CC228 0010+00 s=2 e=0 z=0 None .data __vt__12JKRArcFinder */
SECTION_DATA static void* __vt__12JKRArcFinder[4] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__12JKRArcFinderFv,
(void*)findNextFile__12JKRArcFinderFv,
};
/* 803CC228-803CC238 0010+00 s=5 e=0 z=0 None .data __vt__13JKRFileFinder */
SECTION_DATA static void* __vt__13JKRFileFinder[4] = {
(void*)NULL,
(void*)NULL,
(void*)__dt__13JKRFileFinderFv,
(void*)NULL,
};
/* 802D4638-802D46C4 008C+00 s=0 e=1 z=0 None .text __ct__12JKRArcFinderFP10JKRArchivell */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRArcFinder::JKRArcFinder(JKRArchive* param_0, s32 param_1, s32 param_2) {
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/__ct__12JKRArcFinderFP10JKRArchivell.s"
}
#pragma pop
extern u8 lbl_803CC208;
extern u8 lbl_803CC228;
extern u8 lbl_803CC218;
JKRArcFinder::JKRArcFinder(JKRArchive* archive, s32 startIndex, u32 numEntries) : JKRFileFinder() {
mArchive = archive;
mIsAvailable = (s32)numEntries > 0;
mStartIndex = startIndex;
mEndIndex = startIndex + numEntries - 1;
mNextIndex = mStartIndex;
findNextFile();
/* 802D46C4-802D4770 00AC+00 s=1 e=0 z=0 None .text findNextFile__12JKRArcFinderFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRArcFinder::findNextFile() {
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/findNextFile__12JKRArcFinderFv.s"
}
#pragma pop
bool JKRArcFinder::findNextFile(void) {
SDirEntry entry;
if (mIsAvailable) {
mIsAvailable = !(mNextIndex > mEndIndex);
if (mIsAvailable) {
mIsAvailable = mArchive->getDirEntry(&entry, mNextIndex);
mEntryName = entry.name;
mEntryFileIndex = mNextIndex;
mEntryId = entry.other.id;
mEntryTypeFlags = entry.other.flags;
mIsFileOrDirectory = (mEntryTypeFlags >> 1) & 1;
mNextIndex++;
}
}
return mIsAvailable;
/* 802D4770-802D47F4 0084+00 s=0 e=1 z=0 None .text __ct__12JKRDvdFinderFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFinder::JKRDvdFinder(char const* param_0) {
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/__ct__12JKRDvdFinderFPCc.s"
}
#pragma pop
JKRDvdFinder::JKRDvdFinder(const char* directory) : JKRFileFinder() {
mDvdIsOpen = DVDOpenDir(directory, &mDvdDirectory);
mIsAvailable = mDvdIsOpen;
findNextFile();
}
// JKRFileFinder::~JKRFileFinder is not inlined
#ifdef NONMATCHING
JKRDvdFinder::~JKRDvdFinder() {
if (mDvdIsOpen) {
DVDCloseDir(&mDvdDirectory);
}
}
#else
/* 802D47F4-802D4874 0080+00 s=1 e=0 z=0 None .text __dt__12JKRDvdFinderFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRDvdFinder::~JKRDvdFinder() {
nofralloc
#include "JSystem/JKernel/JKRFileFinder/asm/func_802D47F4.s"
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__12JKRDvdFinderFv.s"
}
#endif
#pragma pop
// everything matches except:
// u16 flags = 1;
// if(mIsFileOrDirectory) flags = 2;
// mEntryTypeFlags = flags;
#ifdef NONMATCHING
bool JKRDvdFinder::findNextFile(void) {
if (mIsAvailable) {
DVDDirectoryEntry directoryEntry;
mIsAvailable = DVDReadDir(&mDvdDirectory, &directoryEntry);
if (mIsAvailable) {
mIsFileOrDirectory = directoryEntry.is_directory != 0;
mEntryNameOffset = directoryEntry.name;
mEntryFileIndex = directoryEntry.entry_number;
mEntryId = 0;
u16 flags = 1;
if (mIsFileOrDirectory)
flags = 2;
mEntryTypeFlags = flags;
}
}
return mIsAvailable;
/* 802D4874-802D4910 009C+00 s=1 e=0 z=0 None .text findNextFile__12JKRDvdFinderFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JKRDvdFinder::findNextFile() {
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/findNextFile__12JKRDvdFinderFv.s"
}
#else
asm bool JKRDvdFinder::findNextFile(void) {
nofralloc
#include "JSystem/JKernel/JKRFileFinder/asm/func_802D4874.s"
#pragma pop
/* 802D4910-802D4958 0048+00 s=1 e=0 z=0 None .text __dt__13JKRFileFinderFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRFileFinder::~JKRFileFinder() {
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__13JKRFileFinderFv.s"
}
#endif
#pragma pop
JKRFileFinder::~JKRFileFinder() {}
// JKRFileFinder::~JKRFileFinder is not inlined (same problem as with JKRDvdFinder::~JKRDvdFinder)
#ifdef NONMATCHING
JKRArcFinder::~JKRArcFinder() {}
#else
/* 802D4958-802D49B4 005C+00 s=1 e=0 z=0 None .text __dt__12JKRArcFinderFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JKRArcFinder::~JKRArcFinder() {
nofralloc
#include "JSystem/JKernel/JKRFileFinder/asm/func_802D4958.s"
nofralloc
#include "asm/JSystem/JKernel/JKRFileFinder/__dt__12JKRArcFinderFv.s"
}
#endif
#pragma pop

Some files were not shown because too many files have changed in this diff Show More