mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 21:30:47 -04:00
work on m_Do_controller_pad / m_Do_gba_com (#36)
This commit is contained in:
@@ -242,10 +242,9 @@ public:
|
||||
/* 0x7C */ JSULink<JUTGamePad> mLink;
|
||||
/* 0x8C */ JUTGamePadRecordBase* mPadRecord;
|
||||
/* 0x90 */ JUTGamePadRecordBase* mPadReplay;
|
||||
/* 0x94 */ C3ButtonReset mButtonReset;
|
||||
/* 0x98 */ u8 field_0x98[4];
|
||||
/* 0x94 */ u8 field_0x94[4];
|
||||
/* 0x98 */ C3ButtonReset mButtonReset;
|
||||
/* 0x9C */ OSTime mResetTime;
|
||||
/* 0xA4 */ u8 field_0xa4;
|
||||
|
||||
static JSUList<JUTGamePad> mPadList;
|
||||
static bool mListInitialized;
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#ifndef JUTGBA_H
|
||||
#define JUTGBA_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct JUTGbaParam;
|
||||
struct JUTGbaThreadVar;
|
||||
|
||||
typedef void (*JUTGba_Func)(JUTGbaParam*, void*);
|
||||
|
||||
class JUTGba {
|
||||
public:
|
||||
JUTGba();
|
||||
|
||||
static void create();
|
||||
void result_common(int, u32, u32*);
|
||||
void resultStatus_common(int, u32, u8*);
|
||||
void doJoyBoot(int, s32, s32, u8*, u32, JUTGba_Func, void*);
|
||||
void resultJoyBoot(int, u8*);
|
||||
void doInitProbe(int, JUTGba_Func, void*);
|
||||
void resultInitProbe(int, u32*);
|
||||
void doProbe(int, JUTGba_Func, void*);
|
||||
BOOL resultProbe(int, u32*);
|
||||
void doReset(int, JUTGba_Func, void*);
|
||||
BOOL resultReset(int, u8*);
|
||||
void doRead(int, u8*, JUTGba_Func, void*);
|
||||
BOOL resultRead(int, u8*);
|
||||
void doWrite(int, u8*, JUTGba_Func, void*);
|
||||
BOOL resultWrite(int, u8*);
|
||||
void doGetStatus(int, JUTGba_Func, void*);
|
||||
BOOL resultGetStatus(int, u8*);
|
||||
void gbaThreadMain(void*);
|
||||
void gbaThread_sleep(s64);
|
||||
void gbaThread_Destroy(JUTGbaThreadVar*);
|
||||
void gbaThread_JoyBoot(JUTGbaThreadVar*);
|
||||
void gbaThread_InitProbe(JUTGbaThreadVar*);
|
||||
void gbaThread_Probe(JUTGbaThreadVar*);
|
||||
void gbaThread_Reset(JUTGbaThreadVar*);
|
||||
void gbaThread_Read(JUTGbaThreadVar*);
|
||||
void gbaThread_Write(JUTGbaThreadVar*);
|
||||
void gbaThread_GetStatus(JUTGbaThreadVar*);
|
||||
|
||||
static JUTGba* getManager() { return sManager; }
|
||||
|
||||
static JUTGba* sManager;
|
||||
};
|
||||
|
||||
#endif /* JUTGBA_H */
|
||||
@@ -33,7 +33,7 @@ extern interface_of_controller_pad g_mDoCPd_cpadInfo[4];
|
||||
#define CPad_CHECK_TRIG_RIGHT(padNo) ((g_mDoCPd_cpadInfo[padNo].mButtonTrig0 >> 6) & 1)
|
||||
#define CPad_CHECK_TRIG_LEFT(padNo) ((g_mDoCPd_cpadInfo[padNo].mButtonTrig0 >> 7) & 1)
|
||||
|
||||
void mDoCPd_Create();
|
||||
void mDoCPd_Read();
|
||||
int mDoCPd_Create();
|
||||
int mDoCPd_Read();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
#ifndef M_DO_GBA_COM_H
|
||||
#define M_DO_GBA_COM_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class mDoGaC_DataManag_c {
|
||||
public:
|
||||
/* 0x0 */ u32 field_0x0;
|
||||
/* 0x4 */ u8 field_0x4;
|
||||
/* 0x5 */ u8 field_0x5;
|
||||
};
|
||||
|
||||
struct mDoGaC_unk_data {
|
||||
/* 0x00 */ u32* field_0x0;
|
||||
/* 0x04 */ int field_0x4;
|
||||
/* 0x08 */ u8 field_0x8;
|
||||
/* 0x0C */ u32 field_0xc;
|
||||
};
|
||||
|
||||
class mDoGaC_agbCom_c {
|
||||
public:
|
||||
void mDoGaC_Initial(mDoGaC_DataManag_c*, u8);
|
||||
void mDoGaC_ComOpen();
|
||||
void mDoGaC_ComClose();
|
||||
void mDoGaC_ComStart();
|
||||
void mDoGaC_ComStop();
|
||||
void mDoGaC_GbaReboot();
|
||||
void mDoGaC_GbaReset();
|
||||
void mDoGaC_ComRestart();
|
||||
void mDoGaC_Connect();
|
||||
void mDoGaC_ConnectSleep();
|
||||
void mDoGaC_ConnectWake();
|
||||
int mDoGaC_GbaLink();
|
||||
int mDoGaC_SendDataSet(u32*, int, u8, u32);
|
||||
void mDoGaC_SendDataWrite();
|
||||
int mDoGaC_SendEntry(u8, u32);
|
||||
int mDoGaC_SendStatusCheck(u8);
|
||||
int mDoGaC_SendEndCheck(u8);
|
||||
bool mDoGaC_RecvStatusCheck(u8);
|
||||
void mDoGaC_DataStatusReset(u8);
|
||||
int mDoGaC_StatusSendSet(u8);
|
||||
void mDoGaC_ProbeCheck0();
|
||||
void mDoGaC_ProbeCheck1();
|
||||
void mDoGaC_CodeExchange0();
|
||||
void mDoGaC_CodeExchange1();
|
||||
void mDoGaC_CodeExchange2();
|
||||
void mDoGaC_CodeExchange3();
|
||||
void mDoGaC_CodeExchange4();
|
||||
void mDoGaC_ContextCheck();
|
||||
void mDoGaC_ContextSend();
|
||||
void mDoGaC_ContextRead();
|
||||
void mDoGaC_GbaWrite();
|
||||
void mDoGaC_WriteResult();
|
||||
void mDoGaC_GbaRead();
|
||||
void mDoGaC_ReadResult();
|
||||
|
||||
~mDoGaC_agbCom_c();
|
||||
|
||||
u8 getPortNo() { return mPortNo; }
|
||||
|
||||
/* 0x000 */ u8 field_0x0;
|
||||
/* 0x001 */ u8 field_0x1;
|
||||
/* 0x002 */ u8 field_0x2;
|
||||
/* 0x003 */ u8 field_0x3;
|
||||
/* 0x004 */ u8 field_0x4;
|
||||
/* 0x005 */ u8 field_0x5;
|
||||
/* 0x006 */ u8 field_0x6;
|
||||
/* 0x007 */ u8 field_0x7;
|
||||
/* 0x008 */ u8 field_0x8;
|
||||
/* 0x009 */ u8 field_0x9;
|
||||
/* 0x00A */ u8 field_0xa;
|
||||
/* 0x00B */ u8 field_0xb;
|
||||
/* 0x00C */ mDoGaC_unk_data field_0xc[16];
|
||||
/* 0x10C */ u8 field_0x10c;
|
||||
/* 0x10D */ u8 mPortNo;
|
||||
/* 0x10E */ u8 field_0x10e;
|
||||
/* 0x10F */ u8 field_0x10F[0x110 - 0x10F];
|
||||
/* 0x110 */ mDoGaC_DataManag_c* field_0x110;
|
||||
/* 0x114 */ u32 field_0x114;
|
||||
/* 0x118 */ u32 field_0x118;
|
||||
/* 0x11C */ u32 field_0x11C;
|
||||
/* 0x120 */ u32 field_0x120;
|
||||
/* 0x124 */ u8 field_0x124[0x128 - 0x124];
|
||||
/* 0x128 */ u8 field_0x128;
|
||||
/* 0x129 */ u8 field_0x129[0x12C - 0x129];
|
||||
union {
|
||||
/* 0x12C */ u32 U32;
|
||||
/* 0x12C */ u8 U8;
|
||||
struct {
|
||||
/* 0x12C */ u16 _12c;
|
||||
/* 0x12C */ u16 _12e;
|
||||
} U16;
|
||||
} field_0x12c;
|
||||
};
|
||||
|
||||
extern mDoGaC_agbCom_c g_mDoGaC_gbaCom;
|
||||
extern mDoGaC_DataManag_c TestDataManager[16];
|
||||
|
||||
inline u8 mDoGaC_getPortNo() {
|
||||
return g_mDoGaC_gbaCom.getPortNo();
|
||||
}
|
||||
|
||||
#endif /* M_DO_GBA_COM_H */
|
||||
@@ -4,9 +4,12 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_controller_pad.h"
|
||||
#include "JSystem/JUtility/JUTGba.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
#include "m_Do/m_Do_main.h"
|
||||
#include "f_ap/f_ap_game.h"
|
||||
#include "m_Do/m_Do_Reset.h"
|
||||
#include "m_Do/m_Do_gba_com.h"
|
||||
#include "m_Do/m_Do_main.h"
|
||||
|
||||
JUTGamePad* g_mDoCPd_gamePad[4];
|
||||
interface_of_controller_pad g_mDoCPd_cpadInfo[4];
|
||||
@@ -26,6 +29,7 @@ inline void mDoCPd_TRIGGER_CONV(u8 analog, f32& param_1) {
|
||||
}
|
||||
|
||||
/* 80007598-800078C0 .text mDoCPd_Convert__FP27interface_of_controller_padP10JUTGamePad */
|
||||
// NONMATCHING
|
||||
static s32 mDoCPd_Convert(interface_of_controller_pad* pInterface, JUTGamePad* pPad) {
|
||||
// pInterface->mButtonFlags = pPad->getButton();
|
||||
pInterface->mMainStickPosX = pPad->getMainStickX();
|
||||
@@ -47,7 +51,7 @@ static s32 mDoCPd_Convert(interface_of_controller_pad* pInterface, JUTGamePad* p
|
||||
}
|
||||
|
||||
/* 800078C0-80007A70 .text mDoCPd_Read__Fv */
|
||||
void mDoCPd_Read(void) {
|
||||
int mDoCPd_Read() {
|
||||
JUTGamePad::read();
|
||||
|
||||
if (!mDoRst::isReset() && mDoRst::is3ButtonReset()) {
|
||||
@@ -61,32 +65,60 @@ void mDoCPd_Read(void) {
|
||||
JUTGamePad** pad = g_mDoCPd_gamePad;
|
||||
interface_of_controller_pad* interface = g_mDoCPd_cpadInfo;
|
||||
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (*pad == NULL) {
|
||||
cLib_memSet(interface, 0, sizeof(interface_of_controller_pad));
|
||||
cLib_memSet(interface++, 0, sizeof(interface_of_controller_pad));
|
||||
} else {
|
||||
mDoCPd_Convert(interface, *pad);
|
||||
mDoCPd_Convert(interface++, *pad);
|
||||
}
|
||||
|
||||
pad++;
|
||||
interface++;
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
f32 threshold_lo = g_HIO.mTriggerThreshLo;
|
||||
f32 threshold_hi = g_HIO.mTriggerThreshHi;
|
||||
|
||||
f32 trigL = g_mDoCPd_cpadInfo[i].mTriggerLeft;
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockL = false;
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockR = false;
|
||||
|
||||
if (trigL > threshold_lo) {
|
||||
if (g_mDoCPd_cpadInfo[i].mHoldLockL != true) {
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockL = true;
|
||||
}
|
||||
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockL = true;
|
||||
} else if (trigL < threshold_hi) {
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockL = false;
|
||||
}
|
||||
|
||||
f32 trigR = g_mDoCPd_cpadInfo[i].mTriggerRight;
|
||||
if (trigR > threshold_lo) {
|
||||
if (g_mDoCPd_cpadInfo[i].mHoldLockR != true) {
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockR = true;
|
||||
}
|
||||
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockR = true;
|
||||
} else if (trigR < threshold_hi) {
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockR = false;
|
||||
}
|
||||
}
|
||||
|
||||
g_mDoGaC_gbaCom.mDoGaC_Connect();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80007A70-80007BBC .text mDoCPd_Create__Fv */
|
||||
void mDoCPd_Create(void) {
|
||||
// NONMATCHING - weird ending
|
||||
int mDoCPd_Create() {
|
||||
JUTGamePad::sSuppressPadReset = 1;
|
||||
|
||||
JUTGamePad* pad = new JUTGamePad(JUTGamePad::Port_1);
|
||||
g_mDoCPd_gamePad[0] = pad;
|
||||
g_mDoCPd_gamePad[1] = NULL;
|
||||
|
||||
if (mDoMain::developmentMode != 0) {
|
||||
if (mDoMain::developmentMode) {
|
||||
g_mDoCPd_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3);
|
||||
g_mDoCPd_gamePad[3] = new JUTGamePad(JUTGamePad::Port_4);
|
||||
} else {
|
||||
@@ -100,15 +132,15 @@ void mDoCPd_Create(void) {
|
||||
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
|
||||
}
|
||||
|
||||
// JUTGba::create();
|
||||
// mDoGaC_Initial();
|
||||
JUTGba::create();
|
||||
g_mDoGaC_gbaCom.mDoGaC_Initial(TestDataManager, 16);
|
||||
|
||||
interface_of_controller_pad* cpad = &g_mDoCPd_cpadInfo[0];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
cpad->mTrigLockL = false;
|
||||
cpad->mHoldLockL = false;
|
||||
cpad->mTrigLockR = false;
|
||||
cpad->mHoldLockR = false;
|
||||
cpad++;
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockL = false;
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockL = false;
|
||||
g_mDoCPd_cpadInfo[i].mTrigLockR = false;
|
||||
g_mDoCPd_cpadInfo[i].mHoldLockR = false;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
+510
-62
@@ -4,249 +4,697 @@
|
||||
//
|
||||
|
||||
#include "m_Do/m_Do_gba_com.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JUtility/JUTGba.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "m_Do/m_Do_Reset.h"
|
||||
|
||||
mDoGaC_agbCom_c g_mDoGaC_gbaCom;
|
||||
mDoGaC_DataManag_c TestDataManager[16];
|
||||
|
||||
static u32 BigLittleChange(u32);
|
||||
|
||||
/* 8001A498-8001A4C0 .text ProbeCheck_0__FP11JUTGbaParamPv */
|
||||
void ProbeCheck_0(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ProbeCheck0();
|
||||
}
|
||||
|
||||
/* 8001A4C0-8001A4E8 .text ProbeCheck_1__FP11JUTGbaParamPv */
|
||||
void ProbeCheck_1(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ProbeCheck1();
|
||||
}
|
||||
|
||||
/* 8001A4E8-8001A510 .text CodeExchange_0__FP11JUTGbaParamPv */
|
||||
void CodeExchange_0(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_CodeExchange0();
|
||||
}
|
||||
|
||||
/* 8001A510-8001A538 .text CodeExchange_1__FP11JUTGbaParamPv */
|
||||
void CodeExchange_1(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_CodeExchange1();
|
||||
}
|
||||
|
||||
/* 8001A538-8001A560 .text CodeExchange_2__FP11JUTGbaParamPv */
|
||||
void CodeExchange_2(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_CodeExchange2();
|
||||
}
|
||||
|
||||
/* 8001A560-8001A588 .text CodeExchange_3__FP11JUTGbaParamPv */
|
||||
void CodeExchange_3(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_CodeExchange3();
|
||||
}
|
||||
|
||||
/* 8001A588-8001A5B0 .text CodeExchange_4__FP11JUTGbaParamPv */
|
||||
void CodeExchange_4(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_CodeExchange4();
|
||||
}
|
||||
|
||||
/* 8001A5B0-8001A5D8 .text ContextCheck__FP11JUTGbaParamPv */
|
||||
void ContextCheck(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ContextCheck();
|
||||
}
|
||||
|
||||
/* 8001A5D8-8001A600 .text ContextSend__FP11JUTGbaParamPv */
|
||||
void ContextSend(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ContextSend();
|
||||
}
|
||||
|
||||
/* 8001A600-8001A628 .text ContextRead__FP11JUTGbaParamPv */
|
||||
void ContextRead(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ContextRead();
|
||||
}
|
||||
|
||||
/* 8001A628-8001A650 .text GbaWriteResult__FP11JUTGbaParamPv */
|
||||
void GbaWriteResult(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_WriteResult();
|
||||
}
|
||||
|
||||
/* 8001A650-8001A678 .text GbaReadResult__FP11JUTGbaParamPv */
|
||||
void GbaReadResult(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_ReadResult();
|
||||
}
|
||||
|
||||
/* 8001A678-8001A6A0 .text GbaReset__FP11JUTGbaParamPv */
|
||||
void GbaReset(JUTGbaParam*, void*) {
|
||||
/* Nonmatching */
|
||||
g_mDoGaC_gbaCom.mDoGaC_GbaReset();
|
||||
}
|
||||
|
||||
/* 8001A6A0-8001A7B8 .text mDoGaC_Initial__15mDoGaC_agbCom_cFP18mDoGaC_DataManag_cUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_Initial(mDoGaC_DataManag_c*, unsigned char) {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - loop / end issues
|
||||
void mDoGaC_agbCom_c::mDoGaC_Initial(mDoGaC_DataManag_c* param_0, u8 param_1) {
|
||||
field_0x0 = 0;
|
||||
field_0x1 = 0;
|
||||
field_0x2 = 0;
|
||||
field_0x3 = 0;
|
||||
field_0x4 = 1;
|
||||
field_0x5 = 0;
|
||||
mPortNo = 1;
|
||||
field_0x10e = 0;
|
||||
field_0x7 = 0;
|
||||
field_0x8 = 0;
|
||||
field_0x10c = param_1;
|
||||
field_0x9 = 0;
|
||||
field_0xa = 0;
|
||||
field_0xb = 0;
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
field_0xc[i].field_0x0 = 0;
|
||||
field_0xc[i].field_0x4 = 0;
|
||||
field_0xc[i].field_0x8 = 0;
|
||||
field_0xc[i].field_0xc = 0;
|
||||
}
|
||||
|
||||
field_0x110 = param_0;
|
||||
if (param_1 != 0) {
|
||||
for (int i = 0; i < param_1; i++) {
|
||||
param_0[i].field_0x0 = 0;
|
||||
param_0[i].field_0x4 = 0;
|
||||
param_0[i].field_0x5 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
field_0x114 = -1;
|
||||
field_0x118 = 0;
|
||||
|
||||
field_0x12c.U16._12e |= (u32)cM_rndF(32767.0f);
|
||||
field_0x12c.U32 |= (u32)cM_rndF(32767.0f);
|
||||
field_0x12c.U8 = (field_0x12c.U8 & 0x3F) | 0x40;
|
||||
field_0x128 = 0;
|
||||
}
|
||||
|
||||
/* 8001A7B8-8001A7C4 .text mDoGaC_ComOpen__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ComOpen() {
|
||||
/* Nonmatching */
|
||||
field_0x2 = 2;
|
||||
}
|
||||
|
||||
/* 8001A7C4-8001A814 .text mDoGaC_ComClose__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ComClose() {
|
||||
/* Nonmatching */
|
||||
field_0x4 = 1;
|
||||
field_0x2 = 0;
|
||||
field_0x10e = 0;
|
||||
|
||||
for (int i = 0; i < field_0x10c; i++) {
|
||||
field_0x110[i].field_0x4 = 9;
|
||||
field_0x110[i].field_0x5 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001A814-8001A820 .text mDoGaC_ComStart__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ComStart() {
|
||||
/* Nonmatching */
|
||||
field_0x1 = 1;
|
||||
}
|
||||
|
||||
/* 8001A820-8001A858 .text mDoGaC_ComStop__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ComStop() {
|
||||
/* Nonmatching */
|
||||
mDoGaC_ComClose();
|
||||
field_0x1 = 0;
|
||||
field_0x5 = 0;
|
||||
}
|
||||
|
||||
/* 8001A858-8001A8B4 .text mDoGaC_GbaReboot__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_GbaReboot() {
|
||||
/* Nonmatching */
|
||||
mDoGaC_ComStop();
|
||||
field_0x0 = 0;
|
||||
field_0x3 = 0;
|
||||
field_0x12c.U32 |= (u32)cM_rndF(32767.0f);
|
||||
field_0x128 = 0;
|
||||
}
|
||||
|
||||
/* 8001A8B4-8001A94C .text mDoGaC_GbaReset__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_GbaReset() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
|
||||
if (JUTGba::getManager()->resultReset(mDoGaC_getPortNo(), sp8)) {
|
||||
mDoGaC_GbaReboot();
|
||||
} else {
|
||||
field_0x6++;
|
||||
if (field_0x6 > 60) {
|
||||
mDoGaC_GbaReboot();
|
||||
} else {
|
||||
JUTGba::getManager()->doReset(mDoGaC_getPortNo(), GbaReset, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001A94C-8001A9A4 .text mDoGaC_ComRestart__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ComRestart() {
|
||||
/* Nonmatching */
|
||||
field_0x4 = 0;
|
||||
field_0x7 = 0;
|
||||
field_0x8 = 0;
|
||||
field_0x9 = 0;
|
||||
field_0xa = 0;
|
||||
field_0xb = 0;
|
||||
|
||||
for (int i = 0; i < field_0x10c; i++) {
|
||||
field_0x110[i].field_0x4 = 0;
|
||||
field_0x110[i].field_0x5 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001A9A4-8001AAD4 .text mDoGaC_Connect__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_Connect() {
|
||||
/* Nonmatching */
|
||||
if (field_0x0 != 0) {
|
||||
if (mDoRst::isReset()) {
|
||||
mDoGaC_ComStop();
|
||||
field_0x6 = 0;
|
||||
JUTGba::getManager()->doReset(mDoGaC_getPortNo(), GbaReset, NULL);
|
||||
} else if (field_0x1 != 0) {
|
||||
switch (field_0x2) {
|
||||
case 0:
|
||||
field_0x2 = 1;
|
||||
JUTGba::getManager()->doProbe(mDoGaC_getPortNo(), ProbeCheck_0, NULL);
|
||||
if (field_0x10e < 3) {
|
||||
field_0x10e++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
mDoGaC_ComRestart();
|
||||
mDoGaC_GbaWrite();
|
||||
field_0x2 = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (field_0x5 == 0) {
|
||||
mDoGaC_SendDataWrite();
|
||||
}
|
||||
|
||||
if (field_0x4 == 1) {
|
||||
mDoGaC_ComClose();
|
||||
}
|
||||
|
||||
field_0x10e = 0;
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AAD4-8001AAEC .text mDoGaC_ConnectSleep__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ConnectSleep() {
|
||||
/* Nonmatching */
|
||||
if (field_0x2 == 0) {
|
||||
field_0x2 = 4;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AAEC-8001AAF8 .text mDoGaC_ConnectWake__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ConnectWake() {
|
||||
/* Nonmatching */
|
||||
field_0x2 = 0;
|
||||
}
|
||||
|
||||
/* 8001AAF8-8001AB4C .text mDoGaC_GbaLink__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_GbaLink() {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_GbaLink() {
|
||||
if (field_0x0 == 1 && field_0x2 == 3 && field_0x4 == 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (field_0x128 == 1 && field_0x10e < 3) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 8001AB4C-8001AC14 .text mDoGaC_SendDataSet__15mDoGaC_agbCom_cFPUliUcUl */
|
||||
void mDoGaC_agbCom_c::mDoGaC_SendDataSet(unsigned long*, int, unsigned char, unsigned long) {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_SendDataSet(u32* param_0, int param_1, u8 param_2, u32 param_3) {
|
||||
u8 uvar1 = field_0x9 + 1;
|
||||
if (uvar1 >= 16) {
|
||||
uvar1 = 0;
|
||||
}
|
||||
|
||||
if (uvar1 == field_0xa || param_1 <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (param_1 < 4) {
|
||||
param_1 = 4;
|
||||
}
|
||||
|
||||
field_0xc[field_0x9].field_0x0 = param_0;
|
||||
field_0xc[field_0x9].field_0x4 = param_1;
|
||||
field_0xc[field_0x9].field_0x8 = param_2;
|
||||
field_0xc[field_0x9].field_0xc = param_3;
|
||||
field_0x110[param_2].field_0x4 = 2;
|
||||
|
||||
field_0x9++;
|
||||
if (field_0x9 >= 16) {
|
||||
field_0x9 = 0;
|
||||
}
|
||||
|
||||
field_0xb++;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8001AC14-8001AD48 .text mDoGaC_SendDataWrite__15mDoGaC_agbCom_cFv */
|
||||
// NONMATCHING - regswap
|
||||
void mDoGaC_agbCom_c::mDoGaC_SendDataWrite() {
|
||||
/* Nonmatching */
|
||||
u8 var_r5 = 0;
|
||||
while (field_0x10c > var_r5) {
|
||||
u8 var_r0 = field_0x110[var_r5].field_0x5;
|
||||
if (var_r0 != 0) {
|
||||
u8 temp_r0 = field_0x9 + 1;
|
||||
if (temp_r0 >= 16) {
|
||||
temp_r0 = 0;
|
||||
}
|
||||
|
||||
if (temp_r0 == field_0xa) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (field_0x110[var_r5].field_0x4 == 0 || field_0x110[var_r5].field_0x4 == 1) {
|
||||
if (var_r0 == 1) {
|
||||
field_0xc[field_0x9].field_0x0 = &field_0x11C;
|
||||
field_0xc[field_0x9].field_0x4 = 4;
|
||||
} else {
|
||||
field_0xc[field_0x9].field_0x0 = &field_0x120;
|
||||
field_0xc[field_0x9].field_0x4 = 8;
|
||||
}
|
||||
|
||||
field_0xc[field_0x9].field_0x8 = var_r5;
|
||||
field_0xc[field_0x9].field_0xc = 0;
|
||||
field_0x110[var_r5].field_0x4 = 2;
|
||||
|
||||
field_0x9++;
|
||||
if (field_0x9 >= 16) {
|
||||
field_0x9 = 0;
|
||||
}
|
||||
|
||||
field_0xb++;
|
||||
field_0x110[var_r5].field_0x5 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
var_r5++;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AD48-8001AD84 .text mDoGaC_SendEntry__15mDoGaC_agbCom_cFUcUl */
|
||||
void mDoGaC_agbCom_c::mDoGaC_SendEntry(unsigned char, unsigned long) {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_SendEntry(u8 param_0, u32 param_1) {
|
||||
if (field_0x110[param_0].field_0x5 == 0) {
|
||||
field_0x11C = param_1;
|
||||
field_0x110[param_0].field_0x5 = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 8001AD84-8001ADB4 .text mDoGaC_SendStatusCheck__15mDoGaC_agbCom_cFUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_SendStatusCheck(unsigned char) {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_SendStatusCheck(u8 param_0) {
|
||||
if (field_0x110[param_0].field_0x4 == 0 || field_0x110[param_0].field_0x4 == 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 8001ADB4-8001ADE4 .text mDoGaC_SendEndCheck__15mDoGaC_agbCom_cFUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_SendEndCheck(unsigned char) {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_SendEndCheck(u8 param_0) {
|
||||
if (field_0x110[param_0].field_0x4 == 4 || field_0x110[param_0].field_0x4 == 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 8001ADE4-8001AE04 .text mDoGaC_RecvStatusCheck__15mDoGaC_agbCom_cFUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_RecvStatusCheck(unsigned char) {
|
||||
/* Nonmatching */
|
||||
bool mDoGaC_agbCom_c::mDoGaC_RecvStatusCheck(u8 param_0) {
|
||||
return field_0x110[param_0].field_0x4 == 8;
|
||||
}
|
||||
|
||||
/* 8001AE04-8001AE44 .text mDoGaC_DataStatusReset__15mDoGaC_agbCom_cFUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_DataStatusReset(unsigned char) {
|
||||
/* Nonmatching */
|
||||
void mDoGaC_agbCom_c::mDoGaC_DataStatusReset(u8 param_0) {
|
||||
if (field_0x110[param_0].field_0x4 == 8) {
|
||||
field_0x110[param_0].field_0x4 = 0;
|
||||
mDoGaC_StatusSendSet(param_0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AE44-8001AEE4 .text mDoGaC_StatusSendSet__15mDoGaC_agbCom_cFUc */
|
||||
void mDoGaC_agbCom_c::mDoGaC_StatusSendSet(unsigned char) {
|
||||
/* Nonmatching */
|
||||
int mDoGaC_agbCom_c::mDoGaC_StatusSendSet(u8 param_0) {
|
||||
u8 temp_r0 = field_0x9 + 1;
|
||||
if (temp_r0 >= 16) {
|
||||
temp_r0 = 0;
|
||||
}
|
||||
|
||||
if (temp_r0 == field_0xa) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
field_0xc[field_0x9].field_0x0 = 0;
|
||||
field_0xc[field_0x9].field_0x4 = 0;
|
||||
field_0xc[field_0x9].field_0x8 = param_0;
|
||||
field_0xc[field_0x9].field_0xc = 0;
|
||||
|
||||
field_0x9++;
|
||||
if (field_0x9 >= 16) {
|
||||
field_0x9 = 0;
|
||||
}
|
||||
|
||||
field_0xb++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8001AEE4-8001AF68 .text mDoGaC_ProbeCheck0__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ProbeCheck0() {
|
||||
/* Nonmatching */
|
||||
u32 sp8;
|
||||
if (!JUTGba::getManager()->resultProbe(mDoGaC_getPortNo(), &sp8) && sp8 == 0x40000) {
|
||||
JUTGba::getManager()->doReset(mDoGaC_getPortNo(), ProbeCheck_1, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AF68-8001AFDC .text mDoGaC_ProbeCheck1__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ProbeCheck1() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultReset(mDoGaC_getPortNo(), sp8)) {
|
||||
JUTGba::getManager()->doGetStatus(mDoGaC_getPortNo(), CodeExchange_0, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001AFDC-8001B060 .text mDoGaC_CodeExchange0__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_CodeExchange0() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultGetStatus(mDoGaC_getPortNo(), sp8) && sp8[0] == 0x28) {
|
||||
JUTGba::getManager()->doRead(mDoGaC_getPortNo(), (u8*)&field_0x118, CodeExchange_1, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B060-8001B0F4 .text mDoGaC_CodeExchange1__15mDoGaC_agbCom_cFv */
|
||||
// NONMATCHING - weird string load
|
||||
void mDoGaC_agbCom_c::mDoGaC_CodeExchange1() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultRead(mDoGaC_getPortNo(), sp8)) {
|
||||
if (field_0x118 == (u32) "GZLE") {
|
||||
JUTGba::getManager()->doGetStatus(mDoGaC_getPortNo(), CodeExchange_2, NULL);
|
||||
} else {
|
||||
mDoGaC_GbaReboot();
|
||||
}
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B0F4-8001B184 .text mDoGaC_CodeExchange2__15mDoGaC_agbCom_cFv */
|
||||
// NONMATCHING - weird string load
|
||||
void mDoGaC_agbCom_c::mDoGaC_CodeExchange2() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultGetStatus(mDoGaC_getPortNo(), sp8) && sp8[0] == 0x20) {
|
||||
field_0x114 = (u32) "GZLE";
|
||||
JUTGba::getManager()->doWrite(mDoGaC_getPortNo(), (u8*)&field_0x114, CodeExchange_3, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B184-8001B1F8 .text mDoGaC_CodeExchange3__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_CodeExchange3() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultWrite(mDoGaC_getPortNo(), sp8)) {
|
||||
JUTGba::getManager()->doGetStatus(mDoGaC_getPortNo(), CodeExchange_4, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B1F8-8001B298 .text mDoGaC_CodeExchange4__15mDoGaC_agbCom_cFv */
|
||||
// NONMATCHING - weird bit shifting
|
||||
void mDoGaC_agbCom_c::mDoGaC_CodeExchange4() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultGetStatus(mDoGaC_getPortNo(), sp8) && sp8[0] == 0x30) {
|
||||
field_0x12c.U8 = (field_0x12c.U8 & ~0xC0) | (mDoGaC_getPortNo() & 0xC0);
|
||||
field_0x114 = BigLittleChange(field_0x12c.U32);
|
||||
JUTGba::getManager()->doWrite(mDoGaC_getPortNo(), (u8*)&field_0x114, ContextSend, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B298-8001B334 .text mDoGaC_ContextCheck__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ContextCheck() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultRead(mDoGaC_getPortNo(), sp8)) {
|
||||
u32 var_r0 = BigLittleChange(field_0x118);
|
||||
if (var_r0 == field_0x12c.U32) {
|
||||
if (field_0x128 == 1) {
|
||||
field_0x3 = 1;
|
||||
} else {
|
||||
field_0x128 = 1;
|
||||
}
|
||||
|
||||
mDoGaC_ComOpen();
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B334-8001B3A8 .text mDoGaC_ContextSend__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ContextSend() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultWrite(mDoGaC_getPortNo(), sp8)) {
|
||||
JUTGba::getManager()->doGetStatus(mDoGaC_getPortNo(), ContextRead, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B3A8-8001B42C .text mDoGaC_ContextRead__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_ContextRead() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultGetStatus(mDoGaC_getPortNo(), sp8) && sp8[0] == 0x38) {
|
||||
JUTGba::getManager()->doRead(mDoGaC_getPortNo(), (u8*)&field_0x118, ContextRead, NULL);
|
||||
} else {
|
||||
field_0x2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B42C-8001B6CC .text mDoGaC_GbaWrite__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_GbaWrite() {
|
||||
/* Nonmatching */
|
||||
static int flag = 0;
|
||||
|
||||
if (field_0xa == field_0x9) {
|
||||
if (field_0x5 == 1) {
|
||||
mDoGaC_ComStop();
|
||||
field_0x114 = -0x10101011;
|
||||
} else {
|
||||
field_0x114 = -1;
|
||||
}
|
||||
} else {
|
||||
mDoGaC_unk_data* temp_r31 = &field_0xc[field_0xa];
|
||||
switch (field_0x8) {
|
||||
case 0:
|
||||
field_0x114 = BigLittleChange(-0x01010102);
|
||||
field_0x8 = 1;
|
||||
break;
|
||||
case 1:
|
||||
field_0x114 = BigLittleChange(temp_r31->field_0x8);
|
||||
field_0x8 = 2;
|
||||
break;
|
||||
case 2:
|
||||
u8 temp_r3_2 = field_0x110[temp_r31->field_0x8].field_0x4;
|
||||
if (temp_r3_2 == 2) {
|
||||
field_0x110[temp_r31->field_0x8].field_0x4 = 3;
|
||||
field_0x114 = BigLittleChange(3);
|
||||
field_0x8 = 3;
|
||||
} else {
|
||||
field_0x114 = BigLittleChange(temp_r3_2);
|
||||
if (field_0x110[temp_r31->field_0x8].field_0x4 == 5) {
|
||||
field_0x110[temp_r31->field_0x8].field_0x4 = 6;
|
||||
}
|
||||
|
||||
field_0xb--;
|
||||
field_0xa++;
|
||||
if (field_0xa >= 16) {
|
||||
field_0xa = 0;
|
||||
}
|
||||
|
||||
field_0x8 = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
field_0x114 = BigLittleChange(temp_r31->field_0x4);
|
||||
temp_r31->field_0xc = 0;
|
||||
field_0x8 = 5;
|
||||
break;
|
||||
case 4:
|
||||
field_0x114 = BigLittleChange(temp_r31->field_0xc);
|
||||
field_0x110[temp_r31->field_0x8].field_0x4 = 4;
|
||||
|
||||
field_0xb--;
|
||||
field_0xa++;
|
||||
if (field_0xa >= 16) {
|
||||
field_0xa = 0;
|
||||
}
|
||||
field_0x8 = 0;
|
||||
break;
|
||||
case 5:
|
||||
field_0x114 = *temp_r31->field_0x0;
|
||||
temp_r31->field_0xc += BigLittleChange(field_0x114);
|
||||
temp_r31->field_0x4 -= 4;
|
||||
if (temp_r31->field_0x4 <= 0) {
|
||||
field_0x8 = 4;
|
||||
} else {
|
||||
temp_r31->field_0x0++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
field_0x114 = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
JUTGba::getManager()->doWrite(mDoGaC_getPortNo(), (u8*)&field_0x114, GbaWriteResult, NULL);
|
||||
}
|
||||
|
||||
/* 8001B6CC-8001B734 .text mDoGaC_WriteResult__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_WriteResult() {
|
||||
/* Nonmatching */
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultWrite(mDoGaC_getPortNo(), sp8) && field_0x4 == 0) {
|
||||
mDoGaC_GbaRead();
|
||||
} else {
|
||||
field_0x4 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001B734-8001B778 .text mDoGaC_GbaRead__15mDoGaC_agbCom_cFv */
|
||||
void mDoGaC_agbCom_c::mDoGaC_GbaRead() {
|
||||
/* Nonmatching */
|
||||
JUTGba::getManager()->doRead(mDoGaC_getPortNo(), (u8*)&field_0x118, GbaReadResult, NULL);
|
||||
}
|
||||
|
||||
/* 8001B778-8001BA34 .text mDoGaC_ReadResult__15mDoGaC_agbCom_cFv */
|
||||
// NONMATCHING - almost
|
||||
void mDoGaC_agbCom_c::mDoGaC_ReadResult() {
|
||||
/* Nonmatching */
|
||||
static u8 data_type = 0;
|
||||
static u32 check_sum = 0;
|
||||
static u32 data_sum = 0;
|
||||
static u32* recv_p = NULL;
|
||||
static u32* end_p = NULL;
|
||||
|
||||
u8 sp8[16];
|
||||
if (!JUTGba::getManager()->resultRead(mDoGaC_getPortNo(), sp8) && field_0x4 == 0) {
|
||||
switch (field_0x7) {
|
||||
case 0:
|
||||
u32 temp_r0 = BigLittleChange(field_0x118);
|
||||
if (temp_r0 == -0x1010102) {
|
||||
field_0x7 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
u32 temp_r0_2 = BigLittleChange(field_0x118);
|
||||
data_type = temp_r0_2;
|
||||
if ((temp_r0_2 & 0xFF) < 0x10) {
|
||||
recv_p = &field_0x110[temp_r0_2 & 0xFF].field_0x0;
|
||||
} else {
|
||||
recv_p = NULL;
|
||||
}
|
||||
field_0x7 = 2;
|
||||
break;
|
||||
case 2:
|
||||
u32 temp_r0_3 = BigLittleChange(field_0x118);
|
||||
field_0x110[data_type].field_0x4 = temp_r0_3;
|
||||
if (temp_r0_3 == 7) {
|
||||
field_0x7 = 3;
|
||||
} else {
|
||||
field_0x7 = 0;
|
||||
if (temp_r0_3 == 9) {
|
||||
field_0x4 = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
u32 temp_r0_4 = BigLittleChange(field_0x118);
|
||||
end_p = &field_0x110[data_type].field_0x0 + temp_r0_4;
|
||||
data_sum = 0;
|
||||
if (recv_p == NULL) {
|
||||
field_0x7 = 6;
|
||||
} else {
|
||||
field_0x7 = 5;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
check_sum = BigLittleChange(field_0x118);
|
||||
if (data_sum == check_sum) {
|
||||
field_0x110[data_type].field_0x4 = 8;
|
||||
} else {
|
||||
field_0x110[data_type].field_0x4 = 9;
|
||||
mDoGaC_StatusSendSet(data_type);
|
||||
field_0x4 = 1;
|
||||
}
|
||||
field_0x7 = 0;
|
||||
break;
|
||||
case 5:
|
||||
*recv_p = field_0x118;
|
||||
data_sum += BigLittleChange(field_0x118);
|
||||
case 6:
|
||||
recv_p++;
|
||||
if (recv_p >= end_p) {
|
||||
field_0x7 = 4;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
mDoGaC_GbaWrite();
|
||||
} else {
|
||||
field_0x4 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 8001BA34-8001BA68 .text BigLittleChange__FUl */
|
||||
void BigLittleChange(unsigned long) {
|
||||
/* Nonmatching */
|
||||
// NONMATCHING - not even close
|
||||
u32 BigLittleChange(u32 param_0) {
|
||||
u8 b1 = param_0 >> 8;
|
||||
u8 b2 = param_0 >> 0x10;
|
||||
u8 b3 = param_0 >> 0x18;
|
||||
return (param_0 << 0x18) | (b1 << 0x10) | (b2 << 8) | b3;
|
||||
}
|
||||
|
||||
/* 8001BAA0-8001BADC .text __dt__15mDoGaC_agbCom_cFv */
|
||||
mDoGaC_agbCom_c::~mDoGaC_agbCom_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
mDoGaC_agbCom_c::~mDoGaC_agbCom_c() {}
|
||||
|
||||
Reference in New Issue
Block a user