mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
JKRDvdRipper, JKRSolidHeap (#199)
This commit is contained in:
@@ -80,7 +80,6 @@ extern "C" void calc__15J3DVtxColorCalcFP8J3DModel();
|
||||
extern "C" void offAllFlag__13J3DDeformDataFUl();
|
||||
extern "C" void deform__13J3DDeformDataFP8J3DModel();
|
||||
extern "C" void entryIn__8J3DJointFv();
|
||||
extern "C" void DCStoreRangeNoSync();
|
||||
extern "C" void __construct_new_array();
|
||||
extern "C" void _savegpr_23();
|
||||
extern "C" void _savegpr_25();
|
||||
|
||||
@@ -252,13 +252,13 @@ static u8* szpBuf;
|
||||
static u8* szpEnd;
|
||||
|
||||
/* 804513D4-804513D8 0008D4 0004+00 2/2 0/0 0/0 .sbss refBuf */
|
||||
static u8 refBuf[4];
|
||||
static u8* refBuf;
|
||||
|
||||
/* 804513D8-804513DC 0008D8 0004+00 2/2 0/0 0/0 .sbss refEnd */
|
||||
static u8 refEnd[4];
|
||||
static u8* refEnd;
|
||||
|
||||
/* 804513DC-804513E0 0008DC 0004+00 2/2 0/0 0/0 .sbss refCurrent */
|
||||
static u8 refCurrent[4];
|
||||
static u8* refCurrent;
|
||||
|
||||
/* 804513E0-804513E4 0008E0 0004+00 3/3 0/0 0/0 .sbss srcOffset */
|
||||
static u32 srcOffset;
|
||||
@@ -267,28 +267,28 @@ static u32 srcOffset;
|
||||
static u32 transLeft;
|
||||
|
||||
/* 804513E8-804513EC 0008E8 0004+00 3/3 0/0 0/0 .sbss srcLimit */
|
||||
static u32 srcLimit;
|
||||
static u8* srcLimit;
|
||||
|
||||
/* 804513EC-804513F0 0008EC 0004+00 3/3 0/0 0/0 .sbss srcAddress */
|
||||
static u32 srcAddress;
|
||||
|
||||
/* 804513F0-804513F4 0008F0 0004+00 2/2 0/0 0/0 .sbss fileOffset */
|
||||
static u8 fileOffset[4];
|
||||
static u32 fileOffset;
|
||||
|
||||
/* 804513F4-804513F8 0008F4 0004+00 2/2 0/0 0/0 .sbss readCount */
|
||||
static u8 readCount[4];
|
||||
static u32 readCount;
|
||||
|
||||
/* 804513F8-804513FC 0008F8 0004+00 2/2 0/0 0/0 .sbss maxDest */
|
||||
static u8 maxDest[4];
|
||||
static u32 maxDest;
|
||||
|
||||
/* 804513FC-80451400 0008FC 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_804513FC[4];
|
||||
|
||||
/* 80451400-80451404 000900 0004+00 2/2 0/0 0/0 .sbss tsPtr */
|
||||
static u8 tsPtr[4];
|
||||
static u32* tsPtr;
|
||||
|
||||
/* 80451404-80451408 000904 0004+00 1/1 0/0 0/0 .sbss tsArea */
|
||||
static u8 tsArea[4];
|
||||
static u32 tsArea;
|
||||
|
||||
/* 802D2830-802D29A0 2CD170 0170+00 1/1 0/0 0/0 .text
|
||||
* JKRDecompressFromAramToMainRam__FUlPvUlUlUlPUl */
|
||||
@@ -371,7 +371,7 @@ static asm void JKRDecompressFromAramToMainRam(u32 param_0, void* param_1, u32 p
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void decompSZS_subroutine(u8* param_0, u8* param_1) {
|
||||
static asm int decompSZS_subroutine(u8* param_0, u8* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRAram/decompSZS_subroutine__FPUcPUc.s"
|
||||
}
|
||||
@@ -379,7 +379,7 @@ static asm void decompSZS_subroutine(u8* param_0, u8* param_1) {
|
||||
|
||||
/* 802D2C40-802D2CE4 2CD580 00A4+00 1/1 0/0 0/0 .text firstSrcData__Fv */
|
||||
static u8* firstSrcData(void) {
|
||||
srcLimit = (u32)(szpEnd - 0x19);
|
||||
srcLimit = szpEnd - 0x19;
|
||||
u8* buffer = szpBuf;
|
||||
|
||||
u32 length;
|
||||
@@ -398,7 +398,7 @@ static u8* firstSrcData(void) {
|
||||
srcOffset += length;
|
||||
transLeft -= length;
|
||||
if (!transLeft) {
|
||||
srcLimit = (u32)(buffer + length);
|
||||
srcLimit = buffer + length;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
@@ -441,7 +441,7 @@ static u8* nextSrcData(u8* current) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void nextSrcData(u8* param_0) {
|
||||
static asm u8* nextSrcData(u8* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRAram/nextSrcData__FPUc.s"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -222,14 +222,14 @@ void* JKRFileCache::getResource(const char* path) {
|
||||
CCacheBlock* cacheBlock = findCacheBlock(dvdFile.getFileID());
|
||||
if (!cacheBlock) {
|
||||
// dvdFile.getFileSize() not inlined
|
||||
u32 fileSize = dvdFile.getFileInfo().length;
|
||||
u32 fileSize = dvdFile.getFileInfo()->length;
|
||||
u32 alignedSize = ALIGN_NEXT(fileSize, 0x20);
|
||||
buffer = JKRAllocFromHeap(mParentHeap, alignedSize, 0x20);
|
||||
if (buffer) {
|
||||
dvdFile.read(buffer, alignedSize, 0);
|
||||
|
||||
cacheBlock = new (JKRHeap::getSystemHeap(), 0)
|
||||
CCacheBlock(dvdFile.getFileID(), dvdFile.getFileInfo().length, buffer);
|
||||
CCacheBlock(dvdFile.getFileID(), dvdFile.getFileInfo()->length, buffer);
|
||||
mCacheBlockList.append(&cacheBlock->mCacheBlockLink);
|
||||
}
|
||||
} else {
|
||||
@@ -273,7 +273,7 @@ u32 JKRFileCache::readResource(void* dst, u32 dstLength, const char* path) {
|
||||
loop:
|
||||
if (dvdFile.isAvailable()) {
|
||||
// dvdFile.getFileSize() not inlined
|
||||
u32 fileSize = dvdFile.getFileInfo().length;
|
||||
u32 fileSize = dvdFile.getFileInfo()->length;
|
||||
resourceSize = ALIGN_NEXT(fileSize, 0x20);
|
||||
dstLength = ALIGN_PREV(dstLength, 0x20);
|
||||
if (resourceSize > dstLength) {
|
||||
|
||||
@@ -121,40 +121,27 @@ JKRSolidHeap::~JKRSolidHeap(void) {
|
||||
}
|
||||
|
||||
/* 802D0BF4-802D0CB0 2CB534 00BC+00 0/0 5/5 1/1 .text adjustSize__12JKRSolidHeapFv */
|
||||
#ifdef NONMATCHING
|
||||
s32 JKRSolidHeap::adjustSize(void) {
|
||||
JKRHeap* parent = getParent();
|
||||
if (parent) {
|
||||
lock();
|
||||
s32 start = mStart;
|
||||
s32 newSize = (s32)this->mSolidHead - ALIGN_NEXT(start, 0x20);
|
||||
s32 newSizeThis = newSize + (start - (s32)this);
|
||||
s32 actualSize = parent->resize(this, newSizeThis);
|
||||
if (actualSize != -1) {
|
||||
u32 thisSize = (u32)mStart - (u32)this;
|
||||
u32 newSize = ALIGN_NEXT(mSolidHead - mStart, 0x20);
|
||||
if (parent->resize(this, thisSize + newSize) != -1) {
|
||||
mFreeSize = 0;
|
||||
mSize = newSize;
|
||||
mEnd = mStart + mSize;
|
||||
mSolidHead = (void*)mEnd;
|
||||
mSolidTail = (void*)mEnd;
|
||||
mSolidHead = mEnd;
|
||||
mSolidTail = mEnd;
|
||||
}
|
||||
|
||||
unlock();
|
||||
|
||||
return newSizeThis;
|
||||
return thisSize + newSize;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm s32 JKRSolidHeap::adjustSize() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRSolidHeap/adjustSize__12JKRSolidHeapFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802D0CB0-802D0D58 2CB5F0 00A8+00 1/0 0/0 0/0 .text do_alloc__12JKRSolidHeapFUli */
|
||||
void* JKRSolidHeap::do_alloc(u32 size, int alignment) {
|
||||
@@ -190,28 +177,14 @@ void* JKRSolidHeap::do_alloc(u32 size, int alignment) {
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039CE50-8039CE50 0294B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_8039CE50 =
|
||||
"allocFromHead: cannot alloc memory (0x%x byte).\n";
|
||||
#pragma pop
|
||||
|
||||
/* 802D0D58-802D0E20 2CB698 00C8+00 1/1 0/0 0/0 .text allocFromHead__12JKRSolidHeapFUli
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
void* JKRSolidHeap::allocFromHead(u32 size, int alignment) {
|
||||
void* ptr;
|
||||
u32 offset;
|
||||
u32 alignedSize;
|
||||
u32 alignedStart;
|
||||
u32 totalSize;
|
||||
alignedSize = ALIGN_NEXT(size, 0x4);
|
||||
ptr = NULL;
|
||||
alignedStart = (alignment - 1 + (u32)mSolidHead) & ~(alignment - 1);
|
||||
offset = alignedStart - (u32)mSolidHead;
|
||||
totalSize = alignedSize + offset;
|
||||
size = ALIGN_NEXT(size, 0x4);
|
||||
void* ptr = NULL;
|
||||
u32 alignedStart = (alignment - 1 + (u32)mSolidHead) & ~(alignment - 1);
|
||||
u32 offset = alignedStart - (u32)mSolidHead;
|
||||
u32 totalSize = size + offset;
|
||||
if (totalSize <= mFreeSize) {
|
||||
ptr = (void*)alignedStart;
|
||||
mSolidHead += totalSize;
|
||||
@@ -219,41 +192,32 @@ void* JKRSolidHeap::allocFromHead(u32 size, int alignment) {
|
||||
} else {
|
||||
JUTWarningConsole_f("allocFromHead: cannot alloc memory (0x%x byte).\n", totalSize);
|
||||
if (getErrorFlag() == true) {
|
||||
callErrorHandler(this, alignedSize, alignment);
|
||||
callErrorHandler(this, size, alignment);
|
||||
}
|
||||
}
|
||||
|
||||
return ptr;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* JKRSolidHeap::allocFromHead(u32 param_0, int param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRSolidHeap/allocFromHead__12JKRSolidHeapFUli.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039CE50-8039CE50 0294B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_8039CE81 =
|
||||
"allocFromTail: cannot alloc memory (0x%x byte).\n";
|
||||
#pragma pop
|
||||
|
||||
/* 802D0E20-802D0EE4 2CB760 00C4+00 1/1 0/0 0/0 .text allocFromTail__12JKRSolidHeapFUli
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* JKRSolidHeap::allocFromTail(u32 param_0, int param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRSolidHeap/allocFromTail__12JKRSolidHeapFUli.s"
|
||||
void* JKRSolidHeap::allocFromTail(u32 size, int alignment) {
|
||||
size = ALIGN_NEXT(size, 4);
|
||||
void* ptr = NULL;
|
||||
u32 alignedStart = ALIGN_PREV((u32)mSolidTail - size, alignment);
|
||||
u32 totalSize = (u32)mSolidTail - (u32)alignedStart;
|
||||
if (totalSize <= mFreeSize) {
|
||||
ptr = (void*)alignedStart;
|
||||
mSolidTail -= totalSize;
|
||||
mFreeSize -= totalSize;
|
||||
} else {
|
||||
JUTWarningConsole_f("allocFromTail: cannot alloc memory (0x%x byte).\n", totalSize);
|
||||
if (getErrorFlag() == true) {
|
||||
callErrorHandler(this, size, alignment);
|
||||
}
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802D0EE4-802D0F14 2CB824 0030+00 1/0 0/0 0/0 .text do_free__12JKRSolidHeapFPv */
|
||||
void JKRSolidHeap::do_free(void* ptr) {
|
||||
|
||||
Reference in New Issue
Block a user