dol2asm OK

This commit is contained in:
Julgodis
2021-03-28 22:49:05 +02:00
parent 3d66902e1a
commit 1e95d29b60
60106 changed files with 4755966 additions and 1107376 deletions
+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();
}