Jsupport stream and JKRAramArchive (#143)

* JSupport streams

* JKRAramArchive
This commit is contained in:
lepelog
2021-08-28 16:32:14 +02:00
committed by GitHub
parent daf45f768d
commit f25c24699b
38 changed files with 511 additions and 1270 deletions
+49 -51
View File
@@ -6,7 +6,7 @@
#include "JSystem/JSupport/JSUInputStream.h"
#include "JSystem/JSupport/JSURandomInputStream.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "global.h"
//
// Types:
@@ -68,72 +68,70 @@ SECTION_DATA extern void* __vt__14JSUInputStream[6 + 1 /* padding */] = {
};
/* 802DC23C-802DC298 2D6B7C 005C+00 1/0 6/6 0/0 .text __dt__14JSUInputStreamFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JSUInputStream::~JSUInputStream() {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s"
}
#pragma pop
JSUInputStream::~JSUInputStream() {}
/* 802DC298-802DC2F0 2D6BD8 0058+00 1/1 20/20 0/0 .text read__14JSUInputStreamFPvl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JSUInputStream::read(void* param_0, s32 param_1) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s"
s32 JSUInputStream::read(void* buffer, s32 numBytes) {
s32 bytesRead = this->readData(buffer, numBytes);
if (bytesRead != numBytes) {
this->setState(IOS_STATE_1);
}
return bytesRead;
}
#pragma pop
/* 802DC2F0-802DC370 2D6C30 0080+00 1/0 0/0 0/0 .text skip__14JSUInputStreamFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 JSUInputStream::skip(s32 param_0) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s"
s32 JSUInputStream::skip(s32 count) {
s32 skipCount = 0;
u8 buffer[1];
while (count > skipCount) {
if (this->readData(&buffer, 1) != 1) {
setState(IOS_STATE_1);
break;
}
skipCount++;
}
return skipCount;
}
#pragma pop
/* 802DC370-802DC3FC 2D6CB0 008C+00 0/0 1/1 0/0 .text align__20JSURandomInputStreamFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JSURandomInputStream::align(s32 param_0) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s"
s32 JSURandomInputStream::align(s32 alignment) {
s32 currentPos = this->getPosition();
s32 offset = (alignment + currentPos);
offset -= 1;
offset &= ~(alignment - 1);
s32 alignmentOffset = offset - currentPos;
if (alignmentOffset != 0) {
s32 seekLen = this->seekPos(offset, JSUStreamSeekFrom_SET);
if (seekLen != alignmentOffset) {
this->setState(IOS_STATE_1);
}
}
return alignmentOffset;
}
#pragma pop
/* 802DC3FC-802DC458 2D6D3C 005C+00 1/0 2/0 0/0 .text skip__20JSURandomInputStreamFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 JSURandomInputStream::skip(s32 param_0) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s"
s32 JSURandomInputStream::skip(s32 param_0) {
s32 val = this->seekPos(param_0, JSUStreamSeekFrom_CUR);
if (val != param_0) {
this->setState(IOS_STATE_1);
}
return val;
}
#pragma pop
/* 802DC458-802DC4DC 2D6D98 0084+00 0/0 8/8 0/0 .text peek__20JSURandomInputStreamFPvl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JSURandomInputStream::peek(void* param_0, s32 param_1) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s"
s32 JSURandomInputStream::peek(void* buffer, s32 numBytes) {
s32 oldPos = this->getPosition();
s32 bytesRead = this->read(buffer, numBytes);
if (bytesRead != 0) {
this->seekPos(oldPos, JSUStreamSeekFrom_SET);
}
return bytesRead;
}
#pragma pop
/* 802DC4DC-802DC520 2D6E1C 0044+00 0/0 16/16 0/0 .text
* seek__20JSURandomInputStreamFl17JSUStreamSeekFrom */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JSURandomInputStream::seek(s32 param_0, JSUStreamSeekFrom param_1) {
nofralloc
#include "asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s"
s32 JSURandomInputStream::seek(s32 param_0, JSUStreamSeekFrom param_1) {
s32 seekResult = this->seekPos(param_0, param_1);
this->clrState(IOS_STATE_1);
return seekResult;
}
#pragma pop