mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
JUTGba match
This commit is contained in:
+1
-1
@@ -829,7 +829,7 @@ config.libs = [
|
||||
Object(NonMatching, "JSystem/JUtility/JUTProcBar.cpp"),
|
||||
Object(NonMatching, "JSystem/JUtility/JUTConsole.cpp"),
|
||||
Object(Matching, "JSystem/JUtility/JUTDirectFile.cpp"),
|
||||
Object(NonMatching, "JSystem/JUtility/JUTGba.cpp"),
|
||||
Object(Matching, "JSystem/JUtility/JUTGba.cpp"),
|
||||
Object(NonMatching, "JSystem/JUtility/JUTFontData_Ascfont_fix12.s"),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -9,8 +9,8 @@ struct JUTGbaParam;
|
||||
typedef void (*JUTGba_Func)(JUTGbaParam*, void*);
|
||||
|
||||
struct JUTGbaParam {
|
||||
/* 0x00 */ OSMessageQueue field_0x0;
|
||||
/* 0x20 */ OSMessage field_0x20;
|
||||
/* 0x00 */ OSMessageQueue msg_q;
|
||||
/* 0x20 */ OSMessage msg[1];
|
||||
/* 0x24 */ u32 field_0x24;
|
||||
/* 0x28 */ s32 channel;
|
||||
/* 0x2C */ u8* program;
|
||||
@@ -33,6 +33,7 @@ struct JUTGbaThreadVar {
|
||||
/* 0x10 */ u32 field_0x10;
|
||||
/* 0x14 */ u32 field_0x14;
|
||||
/* 0x18 */ u32 field_0x18;
|
||||
/* 0x1C */ s32 field_0x1c;
|
||||
};
|
||||
|
||||
class JUTGba {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "dolphin/gba/GBA.h"
|
||||
#include "dolphin/si/SIBios.h"
|
||||
#include "global.h"
|
||||
|
||||
typedef struct OSAlarm OSAlarm;
|
||||
typedef struct OSContext OSContext;
|
||||
@@ -37,14 +38,16 @@ JUTGba* JUTGba::create() {
|
||||
param->program = 0;
|
||||
param->length = 0;
|
||||
param->field_0x24 = 0;
|
||||
OSInitMessageQueue(¶m->field_0x0, ¶m->field_0x20, 1);
|
||||
OSInitMessageQueue(¶m->msg_q, param->msg, ARRAY_SIZE(param->msg));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
JUTGbaParam* param = &sManager->mParams[i];
|
||||
OSReport(":::GBA: Create Thread %d\n", i);
|
||||
OSCreateThread(&sManager->mThreads[i], &gbaThreadMain, param, sManager->mStacks + i + 1, 0x1000, 8, 0);
|
||||
OSResumeThread(&sManager->mThreads[i]);
|
||||
}
|
||||
|
||||
return sManager;
|
||||
}
|
||||
|
||||
@@ -89,7 +92,7 @@ void JUTGba::doJoyBoot(int param_1, s32 palette_color, s32 palette_speed, u8* pr
|
||||
param->field_0x4c = param_6;
|
||||
param->field_0x50 = param_7;
|
||||
param->field_0x3c = 0;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)1, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)1, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC1F8-802CC308 .text resultJoyBoot__6JUTGbaFiPUc */
|
||||
@@ -126,7 +129,7 @@ void JUTGba::doInitProbe(int param_1, JUTGba_Func param_2, void* param_3) {
|
||||
param->field_0x4c = param_2;
|
||||
param->field_0x50 = param_3;
|
||||
param->field_0x3c = 0;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)2, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)2, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC3A8-802CC430 .text resultInitProbe__6JUTGbaFiPUl */
|
||||
@@ -142,7 +145,7 @@ void JUTGba::doProbe(int param_1, JUTGba_Func param_2, void* param_3) {
|
||||
param->field_0x4c = param_2;
|
||||
param->field_0x50 = param_3;
|
||||
param->field_0x3c = 0;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)3, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)3, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC4D0-802CC558 .text resultProbe__6JUTGbaFiPUl */
|
||||
@@ -158,7 +161,7 @@ void JUTGba::doReset(int param_1, JUTGba_Func param_2, void* param_3) {
|
||||
param->field_0x4c = param_2;
|
||||
param->field_0x50 = param_3;
|
||||
param->field_0x3c = 0;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)4, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)4, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC5F8-802CC680 .text resultReset__6JUTGbaFiPUc */
|
||||
@@ -175,7 +178,7 @@ void JUTGba::doRead(int param_1, u8* param_2, JUTGba_Func param_3, void* param_4
|
||||
param->field_0x50 = param_4;
|
||||
param->field_0x3c = 0;
|
||||
param->field_0x48 = param_2;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)5, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)5, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC728-802CC7B0 .text resultRead__6JUTGbaFiPUc */
|
||||
@@ -192,7 +195,7 @@ void JUTGba::doWrite(int param_1, u8* param_2, JUTGba_Func param_3, void* param_
|
||||
param->field_0x50 = param_4;
|
||||
param->field_0x3c = 0;
|
||||
param->field_0x48 = param_2;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)6, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)6, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC858-802CC8E0 .text resultWrite__6JUTGbaFiPUc */
|
||||
@@ -208,7 +211,7 @@ void JUTGba::doGetStatus(int param_1, JUTGba_Func param_2, void* param_3) {
|
||||
param->field_0x4c = param_2;
|
||||
param->field_0x50 = param_3;
|
||||
param->field_0x3c = 0;
|
||||
OSSendMessage(¶m->field_0x0, (OSMessage)7, OS_MESSAGE_BLOCK);
|
||||
OSSendMessage(¶m->msg_q, (OSMessage)7, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
|
||||
/* 802CC980-802CCA08 .text resultGetStatus__6JUTGbaFiPUc */
|
||||
@@ -226,9 +229,10 @@ void* JUTGba::gbaThreadMain(void* param_1) {
|
||||
JUTGbaThreadVar threadVar;
|
||||
threadVar.field_0x0 = param;
|
||||
while (true) {
|
||||
if (!OSReceiveMessage(¶m->field_0x0, (OSMessage*)&threadVar.field_0x10, OS_MESSAGE_NOBLOCK)) {
|
||||
threadVar.field_0x1c = OSReceiveMessage(¶m->msg_q, (OSMessage*)&threadVar.field_0x10, OS_MESSAGE_NOBLOCK);
|
||||
if (!threadVar.field_0x1c) {
|
||||
param->field_0x54 = 0;
|
||||
OSReceiveMessage(¶m->field_0x0, (OSMessage*)&threadVar.field_0x10, OS_MESSAGE_BLOCK);
|
||||
OSReceiveMessage(¶m->msg_q, (OSMessage*)&threadVar.field_0x10, OS_MESSAGE_BLOCK);
|
||||
}
|
||||
param->field_0x54 = 1;
|
||||
param->field_0x40 = 0;
|
||||
|
||||
Reference in New Issue
Block a user