resolve a fake match

This commit is contained in:
jiangzhengwenjz
2020-01-07 12:09:18 +08:00
parent 1fda78fd0a
commit a7ec7175f1
3 changed files with 7 additions and 10 deletions
+1 -1
View File
@@ -347,7 +347,7 @@ void STWI_set_Callback_M(void *callbackM);
void STWI_set_Callback_S(void (*callbackS)(u16)); void STWI_set_Callback_S(void (*callbackS)(u16));
void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect); void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect);
void AgbRFU_SoftReset(void); void AgbRFU_SoftReset(void);
void STWI_set_CallbackUnk(void (*func)(void)); void STWI_set_Callback_ID(void (*func)(void));
u16 STWI_read_status(u8 index); u16 STWI_read_status(u8 index);
u16 STWI_poll_CommandEnd(void); u16 STWI_poll_CommandEnd(void);
void STWI_send_DataRxREQ(void); void STWI_send_DataRxREQ(void);
+5 -8
View File
@@ -1455,17 +1455,14 @@ s32 rfu_changeSendTarget(u8 r3, u8 r7, u8 r6)
s32 rfu_NI_stopReceivingData(u8 who) s32 rfu_NI_stopReceivingData(u8 who)
{ {
#ifndef NONMATCHING // r4, r5 register swap
register struct NIComm *r5 asm("r5");
#else
struct NIComm *r5; struct NIComm *r5;
#endif
u16 r4, r1; u16 r4, r1;
if (who > 3) if (who > 3)
return 0x400; return 0x400;
r5 = &gRfuSlotStatusNI[who]->sub.recv; r5 = &gRfuSlotStatusNI[who]->sub.recv;
r4 = REG_IME; r4 = REG_IME;
++r4; --r4; // fix r4, r5 register swap
REG_IME = 0; REG_IME = 0;
if (gRfuSlotStatusNI[who]->sub.recv.state & 0x8000) if (gRfuSlotStatusNI[who]->sub.recv.state & 0x8000)
{ {
@@ -2227,7 +2224,7 @@ static s32 sub_81E349C(u8 r5)
return -1; return -1;
r8 = REG_IE; r8 = REG_IE;
gRfuState->state = 10; gRfuState->state = 10;
STWI_set_CallbackUnk(sub_81E36B8); STWI_set_Callback_ID(sub_81E36B8);
sub_81E3550(); sub_81E3550();
r4 = &REG_TMCNT_L(gRfuState->timerSelect); r4 = &REG_TMCNT_L(gRfuState->timerSelect);
r5 *= 8; r5 *= 8;
@@ -2248,7 +2245,7 @@ static s32 sub_81E349C(u8 r5)
REG_IE = r8; REG_IE = r8;
REG_IME = 1; REG_IME = 1;
gRfuState->state = 0; gRfuState->state = 0;
STWI_set_CallbackUnk(NULL); STWI_set_Callback_ID(NULL);
return r6; return r6;
} }
@@ -2322,8 +2319,8 @@ static void sub_81E36B8(void)
u32 r5; u32 r5;
u16 r0; u16 r0;
#ifndef NONMATCHING #ifndef NONMATCHING
register u32 r1 asm("a2"); register u32 r1 asm("r1");
register u16 r0_ asm("a1"); register u16 r0_ asm("r0");
#else #else
u32 r1; u32 r1;
u16 r0_; u16 r0_;
+1 -1
View File
@@ -128,7 +128,7 @@ void STWI_set_Callback_S(void (*callbackS)(u16))
gRfuState->callbackS = callbackS; gRfuState->callbackS = callbackS;
} }
void STWI_set_CallbackUnk(void (*func)(void)) void STWI_set_Callback_ID(void (*func)(void)) // name in SDK, but is actually setting a function pointer
{ {
gRfuState->unk_20 = func; gRfuState->unk_20 = func;
} }