Improving padmgr volatile situation

This commit is contained in:
silv3rwing07 2020-04-04 10:12:58 -07:00
parent cd3927a77f
commit a9417cc4b2
3 changed files with 8 additions and 12 deletions

View File

@ -21,7 +21,7 @@ typedef struct {
/* 0x0080 */ OSThread thread;
/* 0x0230 */ Input inputs[4]; //0x18 each = 0x60 total
/* 0x0290 */ PadState pads[4]; //0x6 each = 0x18 total
/* 0x02A8 */ u8 valid_ctrlrs_mask;
/* 0x02A8 */ volatile u8 valid_ctrlrs_mask;
/* 0x02A9 */ u8 ncontrollers;
/* 0x02AA */ u8 Key_switch[4]; //means the controller is connected
/* 0x02AE */ u8 pak_type[4]; //1 if vibration pack, 2 if (maybe controller pack)?

View File

@ -39,13 +39,11 @@ void Locale_ResetRegion() {
}
u32 func_80001F48() {
PadMgr* padMgr = (PadMgr*)(u32)&gPadMgr; // cast required to match
if (gCurrentRegion == REGION_NATIVE) {
return 0;
}
if (padMgr->valid_ctrlrs_mask & 4) {
if (gPadMgr.valid_ctrlrs_mask & 4) {
return 0;
}
@ -53,13 +51,11 @@ u32 func_80001F48() {
}
u32 func_80001F8C() {
PadMgr* padMgr = (PadMgr*)(u32)&gPadMgr; // cast required to match
if (gCurrentRegion == REGION_NATIVE) {
return 0;
}
if (padMgr->valid_ctrlrs_mask & 4) {
if (gPadMgr.valid_ctrlrs_mask & 4) {
return 1;
}

View File

@ -67,7 +67,7 @@ void padmgr_UnlockContData(PadMgr* padmgr) {
#ifdef NON_MATCHING
// regalloc and minor ordering differences
void padmgr_RumbleControl(PadMgr* padmgr) {
static u32 D_8012D284 = 0;
static u32 errcnt = 0;
static u32 D_8016A4F0;
s32 temp;
s32 tried_rumble_comm;
@ -77,7 +77,7 @@ void padmgr_RumbleControl(PadMgr* padmgr) {
s32 i;
temp = 1;
ctrlrqueue = PadMgr_LockGetControllerQueue(padmgr);
ctrlrqueue = padmgr_LockSerialMesgQ(padmgr);
tried_rumble_comm = 0;
for (i = 0; i < 4; i++) {
@ -156,7 +156,7 @@ void padmgr_RumbleControl(PadMgr* padmgr) {
padmgr->pak_type[ctrlr] = 2;
} else if (var4 == 4) {
LogUtils_LogThreadId("../padmgr.c", 282);
osSyncPrintf("++errcnt = %d\n", ++D_8012D284);
osSyncPrintf("++errcnt = %d\n", ++errcnt);
osSyncPrintf(VT_FGCOL(YELLOW));
osSyncPrintf("padmgr: %dコン: %s\n", ctrlr + 1, "コントローラパックの通信エラー");
osSyncPrintf(VT_RST);
@ -165,10 +165,10 @@ void padmgr_RumbleControl(PadMgr* padmgr) {
}
D_8016A4F0++;
PadMgr_UnlockReleaseControllerQueue(padmgr, ctrlrqueue);
padmgr_UnlockSerialMesgQ(padmgr, ctrlrqueue);
}
#else
u32 D_8012D284 = 0;
u32 D_8012D284 = 0; //errcnt
u32 D_8016A4F0;
#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/padmgr_RumbleControl.s")
#endif