mirror of https://github.com/zeldaret/tp.git
JHOSTIO almost comletely linked (#2689)
This commit is contained in:
parent
68b4af5eab
commit
169c7ae4a2
16
configure.py
16
configure.py
|
|
@ -1180,17 +1180,17 @@ config.libs = [
|
|||
JSystemLib(
|
||||
"JHostIO",
|
||||
[
|
||||
Object(NonMatching, "JSystem/JHostIO/JHIComm.cpp"),
|
||||
Object(NonMatching, "JSystem/JHostIO/JHICommonMem.cpp"),
|
||||
Object(NonMatching, "JSystem/JHostIO/JORServer.cpp"),
|
||||
Object(Equivalent, "JSystem/JHostIO/JOREntry.cpp"), # debug weak func order
|
||||
Object(NonMatching, "JSystem/JHostIO/JORFile.cpp"),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIComm.cpp"),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHICommonMem.cpp"),
|
||||
Object(Equivalent, "JSystem/JHostIO/JORServer.cpp"), # weak func order
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JOREntry.cpp", extra_cflags=["-sym off"]), # debug weak func order
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORFile.cpp", extra_cflags=["-sym off"]),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORMessageBox.cpp"),
|
||||
Object(Equivalent, "JSystem/JHostIO/JORHostInfo.cpp"), # debug weak func order
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORHostInfo.cpp", extra_cflags=["-sym off"]), # debug weak func order
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JORShellExecute.cpp"),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIMemBuf.cpp"),
|
||||
Object(NonMatching, "JSystem/JHostIO/JHIhioASync.cpp"),
|
||||
Object(NonMatching, "JSystem/JHostIO/JHIMccBuf.cpp"),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIhioASync.cpp", extra_cflags=["-sym off"]),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIMccBuf.cpp", extra_cflags=["-sym off"]),
|
||||
Object(MatchingFor("ShieldD"), "JSystem/JHostIO/JHIRMcc.cpp"),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -18,18 +18,18 @@ struct JHITag {
|
|||
mp_data = NULL;
|
||||
}
|
||||
|
||||
// NONMATCHING - stack stuff
|
||||
const void* send(const void* param_0, s32 param_1) {
|
||||
u32 sp10 = JHIhtonl(m_tag);
|
||||
u32 sp14 = JHIhtonl(param_1);
|
||||
s32 send(const void* param_0, s32 param_1) {
|
||||
u32 sp10[2];
|
||||
sp10[0] = JHIhtonl(m_tag);
|
||||
sp10[1] = JHIhtonl(param_1);
|
||||
|
||||
if (mp_data->sendBegin() >= param_1 + 8) {
|
||||
mp_data->sendCont(&sp10, 8);
|
||||
mp_data->sendCont(sp10, 8);
|
||||
mp_data->sendCont(param_0, param_1);
|
||||
mp_data->sendEnd();
|
||||
}
|
||||
|
||||
return param_0;
|
||||
return param_1;
|
||||
}
|
||||
|
||||
virtual ~JHITag() {}
|
||||
|
|
|
|||
|
|
@ -80,31 +80,28 @@ void JHICommBufReader::readEnd() {
|
|||
m_header.updateGetAdrs();
|
||||
}
|
||||
|
||||
// NONMATCHING - stack / branch issues
|
||||
int JHICommBufReader::read(void* param_0, int param_1) {
|
||||
int sp2C = min(param_1, m_header.getReadableSize());
|
||||
u32 sp28;
|
||||
int var_r28 = sp2C;
|
||||
u8* var_r30 = (u8*)param_0;
|
||||
|
||||
if (var_r28 > 0) {
|
||||
int sp24 = m_header.getContSize();
|
||||
if (sp24 > 0) {
|
||||
int sp20 = min(var_r28, 4 - sp24);
|
||||
m_header.alignGetAdrs();
|
||||
int sp24;
|
||||
if (var_r28 > 0 && (sp24 = m_header.getContSize()) > 0) {
|
||||
int sp20 = min(var_r28, 4 - sp24);
|
||||
m_header.alignGetAdrs();
|
||||
|
||||
mp_memBuffer->readIO(m_header.getGetAdrs(), &sp28);
|
||||
|
||||
int sp1C = sp24;
|
||||
int sp18 = sp24 + sp20;
|
||||
for (; sp1C < sp18; sp1C++) {
|
||||
*var_r30 = sp28 >> ((3 - sp1C) * 8);
|
||||
var_r30++;
|
||||
}
|
||||
|
||||
var_r28 -= sp20;
|
||||
m_header.addGetAdrs(sp24 + sp20);
|
||||
mp_memBuffer->readIO(m_header.getGetAdrs(), &sp28);
|
||||
|
||||
int sp1C = sp24;
|
||||
int sp18 = sp24 + sp20;
|
||||
for (; sp1C < sp18; sp1C++) {
|
||||
*var_r30 = sp28 >> ((3 - sp1C) * 8);
|
||||
var_r30++;
|
||||
}
|
||||
|
||||
var_r28 -= sp20;
|
||||
m_header.addGetAdrs(sp24 + sp20);
|
||||
}
|
||||
|
||||
while (var_r28 >= 4) {
|
||||
|
|
@ -229,34 +226,31 @@ void JHICommBufWriter::writeEnd() {
|
|||
m_header.updatePutAdrs();
|
||||
}
|
||||
|
||||
// NONMATCHING - stack / misc issues
|
||||
int JHICommBufWriter::write(void* param_0, int param_1) {
|
||||
int sp28 = min(param_1, m_header.getWritebleSize());
|
||||
int var_r27 = sp28;
|
||||
u8* var_r29 = (u8*)param_0;
|
||||
u8* var_r30 = &m_header.field_0x30;
|
||||
|
||||
if (var_r27 > 0) {
|
||||
int sp24 = m_header.getRemSize();
|
||||
if (sp24 > 0) {
|
||||
int sp20 = min(4 - sp24, var_r27);
|
||||
|
||||
int sp1C = sp24;
|
||||
int sp18 = sp24 + sp20;
|
||||
for (; sp1C < sp18; sp1C++) {
|
||||
var_r30[sp1C] = *var_r29++;
|
||||
}
|
||||
|
||||
var_r27 -= sp20;
|
||||
m_header.alignPutAdrs();
|
||||
|
||||
mp_memBuffer->writeIO(m_header.getPutAdrs(),
|
||||
(m_header.field_0x30 << 0x18) |
|
||||
(m_header.field_0x31 << 0x10) |
|
||||
(m_header.field_0x32 << 0x08) |
|
||||
(m_header.field_0x33 << 0x00));
|
||||
m_header.addPutAdrs(sp24 + sp20);
|
||||
int sp24;
|
||||
if (var_r27 > 0 && (sp24 = m_header.getRemSize()) > 0) {
|
||||
int sp20 = min(4 - sp24, var_r27);
|
||||
|
||||
int sp1C = sp24;
|
||||
int sp18 = sp24 + sp20;
|
||||
for (; sp1C < sp18; sp1C++) {
|
||||
var_r30[sp1C] = *var_r29++;
|
||||
}
|
||||
|
||||
var_r27 -= sp20;
|
||||
m_header.alignPutAdrs();
|
||||
|
||||
mp_memBuffer->writeIO(m_header.getPutAdrs(),
|
||||
(var_r30[0] << 0x18) |
|
||||
(var_r30[1] << 0x10) |
|
||||
(var_r30[2] << 0x08) |
|
||||
(var_r30[3] << 0x00));
|
||||
m_header.addPutAdrs(sp24 + sp20);
|
||||
}
|
||||
|
||||
while (var_r27 >= 4) {
|
||||
|
|
@ -276,14 +270,14 @@ int JHICommBufWriter::write(void* param_0, int param_1) {
|
|||
int sp14 = var_r27;
|
||||
|
||||
for (int i = 0; i < sp14; i++) {
|
||||
var_r30[sp14] = *var_r29++;
|
||||
var_r30[i] = *var_r29++;
|
||||
}
|
||||
|
||||
mp_memBuffer->writeIO(m_header.getPutAdrs(),
|
||||
(m_header.field_0x30 << 0x18) |
|
||||
(m_header.field_0x31 << 0x10) |
|
||||
(m_header.field_0x32 << 0x08) |
|
||||
(m_header.field_0x33 << 0x00));
|
||||
(var_r30[0] << 0x18) |
|
||||
(var_r30[1] << 0x10) |
|
||||
(var_r30[2] << 0x08) |
|
||||
(var_r30[3] << 0x00));
|
||||
|
||||
var_r27 -= sp14;
|
||||
m_header.addPutAdrs(sp14);
|
||||
|
|
|
|||
|
|
@ -389,15 +389,19 @@ int JHIMccBufWriter::writeBegin() {
|
|||
return var_r29;
|
||||
}
|
||||
|
||||
// NONMATCHING - regswap, equivalent
|
||||
int JHIMccBufWriter::write(void* pBuffer, u32 size) {
|
||||
if (!isPort()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 var_r29 = setDataToBuf(pBuffer, size);
|
||||
|
||||
u32 var_r26;
|
||||
u32 var_r27;
|
||||
u32 var_r28;
|
||||
|
||||
// Probably fake match
|
||||
var_r28 = var_r28;
|
||||
|
||||
u32 var_r29 = setDataToBuf(pBuffer, size);
|
||||
if (mBeginPos == field_0xc) {
|
||||
var_r27 = field_0x1c + field_0xc;
|
||||
var_r27 -= 0x20;
|
||||
|
|
@ -405,10 +409,10 @@ int JHIMccBufWriter::write(void* pBuffer, u32 size) {
|
|||
var_r27 = mBeginPos - 0x20;
|
||||
}
|
||||
|
||||
u32 var_r26;
|
||||
if (mEndPos > var_r27) {
|
||||
int x;
|
||||
var_r26 = field_0x1c - (mEndPos - var_r27);
|
||||
u32 var_r28 = (field_0x1c + field_0xc) - mEndPos;
|
||||
var_r28 = (field_0x1c + field_0xc) - mEndPos;
|
||||
|
||||
if (var_r28 >= var_r29) {
|
||||
if (!JHIMCCWrite(mChannel, mWriteOffset + mEndPos, mTempBuf, var_r29)) {
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ static void dummyString() {
|
|||
DEAD_STRING("INFO:Quitting Hostio...");
|
||||
}
|
||||
|
||||
// NONMATCHING - small branch issue
|
||||
u32 JHIEventLoop() {
|
||||
static u32 tNowWrite;
|
||||
static u32 tNowRead;
|
||||
|
|
@ -141,6 +140,7 @@ u32 JHIEventLoop() {
|
|||
if (!gMccContext.mp_reader->isPort() || !gMccContext.mp_writer->isPort()) {
|
||||
gsEnableInterface = 0;
|
||||
}
|
||||
(void)0;
|
||||
} else if (!gsEnableInterface && gsEnableHostio != 0 && JHIInitInterface()) {
|
||||
OS_REPORT("INFO: JHostIO: Enabled USB2EXI Interface\n");
|
||||
bool sp8 = JHINegotiateInterface(800);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ JORFile::JORFile()
|
|||
mFileLength(0),
|
||||
mStatus(EStatus_WAIT),
|
||||
mNFileName(0),
|
||||
field_0x18(0) {}
|
||||
field_0x18(0),
|
||||
mDataStream() {}
|
||||
|
||||
int JORFile::countMaskSize(const char* mask) {
|
||||
u32 var_r28 = 0;
|
||||
|
|
@ -77,11 +78,11 @@ int JORFile::open(const char* path, u32 flags, const char* extMask, const char*
|
|||
return 1;
|
||||
}
|
||||
|
||||
// NONMATCHING, equivalent?
|
||||
void JORFile::close() {
|
||||
JORMContext* mctx;
|
||||
if (mHandle != 0) {
|
||||
mStatus = EStatus_WAIT;
|
||||
JORMContext* mctx = JORServer::getInstance()->attachMCTX(MCTX_MSG_FIO);
|
||||
mctx = JORServer::getInstance()->attachMCTX(MCTX_MSG_FIO);
|
||||
mctx->closeFile(this);
|
||||
JORServer::getInstance()->releaseMCTX(mctx);
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ void JORServer::releaseMCTX(JORMContext* mctx) {
|
|||
ASSERTMSGLINE(292, mctx->msgSize() < 0x10000, "JORServer:releaseMCTX: context buffer probably overflowed.\n");
|
||||
|
||||
if (mctx->msgSize() > 4) {
|
||||
const void* var_r28 = send(mctx->msgPtr(), mctx->msgSize());
|
||||
const s32 var_r28 = send(mctx->msgPtr(), mctx->msgSize());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue