diff options
author | camthesaxman <cameronghall@cox.net> | 2018-02-06 21:20:07 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2018-02-06 21:20:07 -0600 |
commit | 377710a0cb9cd85f2d1d221c1de30f671b4286cd (patch) | |
tree | faecb347280d96a4169d905b4ceb986ffb55a02c | |
parent | c79d259508d47a8b5bde5b9060b8fe8c6989bd44 (diff) |
decompile debug code in cable_club.c
-rw-r--r-- | include/field_specials.h | 1 | ||||
-rw-r--r-- | include/link.h | 7 | ||||
-rw-r--r-- | include/overworld.h | 10 | ||||
-rw-r--r-- | src/engine/cable_club.c | 548 | ||||
-rw-r--r-- | src/engine/link.c | 2 | ||||
-rw-r--r-- | sym_ewram.txt | 7 |
6 files changed, 108 insertions, 467 deletions
diff --git a/include/field_specials.h b/include/field_specials.h index 52325879c..a8e8d3da7 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -26,5 +26,6 @@ void SetShoalItemFlag(u16); u8 GetLeadMonIndex(void); void ResetFanClub(void); u8 sub_810FB10(u8 a0); +void sub_810FEFC(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/link.h b/include/link.h index 6a7212645..d8c6690ea 100644 --- a/include/link.h +++ b/include/link.h @@ -131,10 +131,11 @@ extern const struct BlockRequest sBlockRequestLookupTable[5]; extern struct Link gLink; extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS]; +// TODO: Why is gBlockSendBuffer a u8 array, while gBlockRecvBuffer is a u16 array? extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; +extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gLinkType; extern u32 gLinkStatus; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; #if GERMAN @@ -145,6 +146,8 @@ extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkOpen; +extern bool8 gLinkPlayerPending[MAX_LINK_PLAYERS]; +void (*gLinkCallback)(void); void Task_DestroySelf(u8); void sub_8007270(u8); @@ -198,5 +201,7 @@ void LinkTestScreen(void); void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3); void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0); u32 sub_8007E40(void); +void PrintHex(u32, u8, u8, u8); +void InitLinkTestBG_Unused(u8, u8, u8, u8); #endif // GUARD_LINK_H diff --git a/include/overworld.h b/include/overworld.h index 50089593f..734f751d4 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -24,6 +24,8 @@ struct UCoords32 extern const struct UCoords32 gUnknown_0821664C[]; extern void (*gFieldCallback)(void); +extern u8 gFieldLinkPlayerCount; +extern u8 gUnknown_03004860; // sub_8052F5C void Overworld_ResetStateAfterFly(void); @@ -91,7 +93,7 @@ void sub_8053D14(u16); // GetLocationMusic // GetCurrLocationDefaultMusic // GetWarpDestinationMusic -// Overworld_ResetMapMusic +void Overworld_ResetMapMusic(void); void Overworld_PlaySpecialMapMusic(void); void Overworld_SetSavedMusic(u16); void Overworld_ClearSavedMusic(void); @@ -185,11 +187,11 @@ u16 sub_8055438(u32); // sub_80554B8 // sub_80554BC // sub_80554E4 -// sub_80554F8 +s32 sub_80554F8(void); // unref_sub_8055568 -// sub_8055574 +void sub_8055574(void); u16 sub_8055588(void); -// sub_805559C +void sub_805559C(void); void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3); bool32 sub_8055618(struct UnkStruct_8054FF8 *); bool32 sub_8055630(struct UnkStruct_8054FF8 *); diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index ff73e638e..0cb148d73 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -2,7 +2,9 @@ #include "battle.h" #include "battle_records.h" #include "cable_club.h" +#include "event_data.h" #include "field_message_box.h" +#include "field_specials.h" #include "field_weather.h" #include "link.h" #include "load_save.h" @@ -21,16 +23,9 @@ #include "strings2.h" #include "task.h" #include "text.h" +#include "trade.h" #include "trainer_card.h" -extern u8 unk_2030220; -extern u16 gSpecialVar_Result; -extern struct TrainerCard gTrainerCards[4]; -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; extern u16 gBattleTypeFlags; extern const u8 gUnknown_081A4932[]; extern const u8 gUnknown_081A4975[]; @@ -42,12 +37,13 @@ extern struct u8 field1; } gUnknown_020297D8; -/*static*/ void sub_8082F20(u8 taskId); +static void sub_8082F20(u8 taskId); static void sub_8082F68(u8 taskId); static void sub_8082FEC(u8 taskId); static void sub_808303C(u8 taskId); static void sub_80830E4(u8 taskId); static void sub_8083188(u8 taskId); +static void sub_80831F8(u8 taskId); static void sub_8083288(u8 taskId); static void sub_8083314(u8 taskId); static void sub_80833C4(u8 taskId); @@ -66,15 +62,9 @@ static void sub_8083AAC(u8 taskId); static void sub_8083B44(u8 taskId); static void sub_8083B6C(void); static void sub_8083CA4(u8 taskId); - -extern void sub_80831F8(u8 taskId); -extern void Overworld_ResetMapMusic(void); -extern void sub_810FEFC(void); -extern void sub_8047CD8(void); -extern void sub_805559C(void); -extern void sub_8055574(void); -extern s32 sub_80554F8(void); -extern void sub_805465C(void); +#if DEBUG +static u8 debug_sub_808B850(void); +#endif #ifdef GERMAN const u8 TrainerCardColorName_Bronze[] = _("BRONZE"); @@ -97,392 +87,86 @@ const u8 *const gTrainerCardColorNames[] = }; #if DEBUG - -__attribute__((naked)) -int debug_sub_808A4D0() -{ - asm("\ - push {lr}\n\ - add r1, r0, #0\n\ - ldr r0, ._3 @ sub_8082F68\n\ - cmp r1, r0\n\ - bne ._1 @cond_branch\n\ - mov r0, #0x1\n\ - b ._30\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word sub_8082F68+1\n\ -._1:\n\ - ldr r0, ._7 @ sub_8082FEC\n\ - cmp r1, r0\n\ - bne ._5 @cond_branch\n\ - mov r0, #0x11\n\ - b ._30\n\ -._8:\n\ - .align 2, 0\n\ -._7:\n\ - .word sub_8082FEC+1\n\ -._5:\n\ - ldr r0, ._11 @ sub_808303C\n\ - cmp r1, r0\n\ - bne ._9 @cond_branch\n\ - mov r0, #0x12\n\ - b ._30\n\ -._12:\n\ - .align 2, 0\n\ -._11:\n\ - .word sub_808303C+1\n\ -._9:\n\ - ldr r0, ._15 @ sub_8083188\n\ - cmp r1, r0\n\ - bne ._13 @cond_branch\n\ - mov r0, #0x13\n\ - b ._30\n\ -._16:\n\ - .align 2, 0\n\ -._15:\n\ - .word sub_8083188+1\n\ -._13:\n\ - ldr r0, ._19 @ sub_80830E4\n\ - cmp r1, r0\n\ - bne ._17 @cond_branch\n\ - mov r0, #0x14\n\ - b ._30\n\ -._20:\n\ - .align 2, 0\n\ -._19:\n\ - .word sub_80830E4+1\n\ -._17:\n\ - ldr r0, ._23 @ sub_80831F8\n\ - cmp r1, r0\n\ - bne ._21 @cond_branch\n\ - mov r0, #0x21\n\ - b ._30\n\ -._24:\n\ - .align 2, 0\n\ -._23:\n\ - .word sub_80831F8+1\n\ -._21:\n\ - ldr r0, ._27 @ sub_8083314\n\ - cmp r1, r0\n\ - bne ._25 @cond_branch\n\ - mov r0, #0x2\n\ - b ._30\n\ -._28:\n\ - .align 2, 0\n\ -._27:\n\ - .word sub_8083314+1\n\ -._25:\n\ - ldr r0, ._31 @ sub_80833C4\n\ - cmp r1, r0\n\ - beq ._29 @cond_branch\n\ - mov r0, #0x0\n\ - b ._30\n\ -._32:\n\ - .align 2, 0\n\ -._31:\n\ - .word sub_80833C4+1\n\ -._29:\n\ - mov r0, #0x3\n\ -._30:\n\ - pop {r1}\n\ - bx r1"); +u8 debug_sub_808A4D0(TaskFunc func) +{ + if (func == sub_8082F68) + return 1; + if (func == sub_8082FEC) + return 17; + if (func == sub_808303C) + return 18; + if (func == sub_8083188) + return 19; + if (func == sub_80830E4) + return 20; + if (func == sub_80831F8) + return 33; + if (func == sub_8083314) + return 2; + if (func == sub_80833C4) + return 3; + return 0; } -__attribute__((naked)) -void debug_sub_808A55C() +void debug_sub_808A55C(u8 taskId) { - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - ldr r2, ._37 @ gTasks\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r4, r0, r2\n\ - mov r0, #0x8\n\ - ldsh r1, [r4, r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldrb r0, [r0, #0x4]\n\ - cmp r0, #0\n\ - bne ._33 @cond_branch\n\ - mov r1, #0xa\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0x5\n\ - bne ._34 @cond_branch\n\ - add r0, r7, #0\n\ - bl DestroyTask\n\ -._34:\n\ - ldrh r0, [r4, #0xa]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0xa]\n\ -._33:\n\ - ldr r0, ._37 + 4 @ gShouldAdvanceLinkState\n\ - ldrb r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0x0\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 8 @ gBlockSendBuffer\n\ - ldrb r0, [r0]\n\ - mov r1, #0x16\n\ - mov r2, #0x5\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r4, #0x0\n\ - lsl r3, r7, #0x2\n\ - mov r8, r3\n\ - mov r6, #0xc0\n\ - lsl r6, r6, #0x13\n\ - mov r5, #0xa0\n\ - lsl r5, r5, #0x13\n\ -._35:\n\ - ldr r0, ._37 + 12 @ gLinkPlayerPending\n\ - add r0, r4, r0\n\ - ldrb r0, [r0]\n\ - lsr r1, r5, #0x18\n\ - mov r2, #0x0\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r1, ._37 + 16 @ gBlockRecvBuffer\n\ - lsl r0, r4, #0x8\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - lsr r2, r6, #0x18\n\ - mov r1, #0x16\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x11\n\ - add r6, r6, r0\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x12\n\ - add r5, r5, r1\n\ - add r4, r4, #0x1\n\ - cmp r4, #0x3\n\ - ble ._35 @cond_branch\n\ - ldr r4, ._37 + 20 @ gLinkStatus\n\ - ldr r0, [r4]\n\ - mov r1, #0xf\n\ - mov r2, #0x0\n\ - mov r3, #0x8\n\ - bl PrintHex\n\ - ldr r0, ._37 + 24 @ gLink\n\ - ldrb r0, [r0, #0x1]\n\ - mov r1, #0x2\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl GetMultiplayerId\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x7\n\ - mov r2, #0xc\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl GetBlockReceivedStatus\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x7\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 28 @ gReceivedRemoteLinkPlayers\n\ - ldrb r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0xc\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r0, ._37 + 32 @ gSpecialVar_Result\n\ - ldrh r0, [r0]\n\ - mov r1, #0xb\n\ - mov r2, #0x8\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, [r4]\n\ - mov r1, #0x1c\n\ - and r0, r0, r1\n\ - lsr r0, r0, #0x2\n\ - mov r1, #0xb\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - bl IsLinkConnectionEstablished\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xb\n\ - mov r2, #0xc\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - bl IsLinkTaskFinished\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xf\n\ - mov r2, #0xa\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r2, ._37 @ gTasks\n\ - mov r3, r8\n\ - add r0, r3, r7\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - mov r3, #0x8\n\ - ldsh r1, [r0, r3]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - bl debug_sub_808A4D0\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0xf\n\ - mov r2, #0xc\n\ - mov r3, #0x2\n\ - bl PrintHex\n\ - ldr r0, ._37 + 36 @ gLinkCallback\n\ - ldr r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0xd\n\ - mov r3, #0x8\n\ - bl PrintHex\n\ - bl HasLinkErrorOccurred\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x2\n\ - mov r2, #0x2\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - ldr r0, ._37 + 40 @ gLinkPlayers\n\ - mov r6, #0x80\n\ - lsl r6, r6, #0x12\n\ - add r5, r0, #0\n\ - add r5, r5, #0x14\n\ - mov r4, #0x3\n\ -._36:\n\ - ldr r0, [r5]\n\ - lsr r1, r6, #0x18\n\ - mov r2, #0x3\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - mov r0, #0xc0\n\ - lsl r0, r0, #0x13\n\ - add r6, r6, r0\n\ - add r5, r5, #0x1c\n\ - sub r4, r4, #0x1\n\ - cmp r4, #0\n\ - bge ._36 @cond_branch\n\ - ldr r0, ._37 + 44 @ 0x4000128\n\ - ldrh r0, [r0]\n\ - mov r1, #0x2\n\ - mov r2, #0x6\n\ - mov r3, #0x4\n\ - bl PrintHex\n\ - bl debug_sub_808B850\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r1, #0x19\n\ - mov r2, #0x3\n\ - mov r3, #0x1\n\ - bl PrintHex\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._38:\n\ - .align 2, 0\n\ -._37:\n\ - .word gTasks\n\ - .word gShouldAdvanceLinkState\n\ - .word gBlockSendBuffer\n\ - .word gLinkPlayerPending\n\ - .word gBlockRecvBuffer\n\ - .word gLinkStatus\n\ - .word gLink\n\ - .word gReceivedRemoteLinkPlayers\n\ - .word gSpecialVar_Result\n\ - .word gLinkCallback\n\ - .word gLinkPlayers\n\ - .word 0x4000128"); + s32 i; + + if (!gTasks[gTasks[taskId].data[0]].isActive) + { + if (gTasks[taskId].data[1] == 5) + DestroyTask(taskId); + gTasks[taskId].data[1]++; + } + + PrintHex(gShouldAdvanceLinkState, 2, 0, 2); + PrintHex((u8)gBlockSendBuffer[0], 22, 5, 4); + for (i = 0; i < 4; i++) + { + PrintHex(gLinkPlayerPending[i], 5 + i * 2, 0, 1); + PrintHex(gBlockRecvBuffer[i][0], 22, 6 + i, 4); + } + PrintHex(gLinkStatus, 15, 0, 8); + PrintHex(gLink.state, 2, 10, 2); + PrintHex(GetMultiplayerId(), 7, 12, 2); + PrintHex(GetBlockReceivedStatus(), 7, 10, 2); + PrintHex(gReceivedRemoteLinkPlayers, 2, 12, 1); + PrintHex(gSpecialVar_Result, 11, 8, 2); + PrintHex((gLinkStatus & 0x1C) >> 2, 11, 10, 2); + PrintHex(IsLinkConnectionEstablished(), 11, 12, 1); + PrintHex(IsLinkTaskFinished(), 15, 10, 1); + PrintHex(debug_sub_808A4D0(gTasks[gTasks[taskId].data[0]].func), 15, 12, 2); + PrintHex((uintptr_t)gLinkCallback, 2, 13, 8); + PrintHex(HasLinkErrorOccurred(), 2, 2, 1); + for (i = 0; i < 4; i++) + PrintHex(gLinkPlayers[i].linkType, 2 + i * 6, 3, 4); + PrintHex(REG_SIOCNT, 2, 6, 4); + PrintHex(debug_sub_808B850(), 25, 3, 1); } #endif -#if DEBUG -__attribute__((naked)) -static void sub_8082CD4(u8 arg0, u8 arg1) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - lsl r1, r1, #0x18\n\ - lsr r6, r1, #0x18\n\ - mov r0, #0xc\n\ - mov r1, #0x0\n\ - mov r2, #0x1f\n\ - mov r3, #0x2\n\ - bl InitLinkTestBG_Unused\n\ - ldr r4, ._40 @ sub_8082F20\n\ - add r0, r4, #0\n\ - bl FindTaskIdByFunc\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._39 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - add r4, r0, #0\n\ - lsl r4, r4, #0x18\n\ - lsr r4, r4, #0x18\n\ - ldr r5, ._40 + 4 @ gTasks\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r4\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r5\n\ - strh r7, [r0, #0xa]\n\ - strh r6, [r0, #0xc]\n\ - ldr r0, ._40 + 8 @ debug_sub_808A55C\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r5\n\ - strh r4, [r1, #0x8]\n\ -._39:\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._41:\n\ - .align 2, 0\n\ -._40:\n\ - .word sub_8082F20+1\n\ - .word gTasks\n\ - .word debug_sub_808A55C+1"); -} -#else static void sub_8082CD4(u8 arg0, u8 arg1) { +#if DEBUG + InitLinkTestBG_Unused(12, 0, 31, 2); +#endif if (FindTaskIdByFunc(sub_8082F20) == 0xFF) { - u8 taskId = CreateTask(sub_8082F20, 80); + u8 taskId1; +#if DEBUG + u8 taskId2; +#endif + + taskId1 = CreateTask(sub_8082F20, 80); + gTasks[taskId1].data[1] = arg0; + gTasks[taskId1].data[2] = arg1; - gTasks[taskId].data[1] = arg0; - gTasks[taskId].data[2] = arg1; +#if DEBUG + taskId2 = CreateTask(debug_sub_808A55C, 80); + gTasks[taskId2].data[0] = taskId1; +#endif } } -#endif static void sub_8082D18(u32 value) { @@ -727,7 +411,7 @@ static void sub_8083188(u8 taskId) } } -void sub_80831F8(u8 taskId) +static void sub_80831F8(u8 taskId) { u8 local1, local2; @@ -1291,70 +975,26 @@ void sub_8083C50(u8 taskId) } #if DEBUG +extern u16 unk_3004E94; +extern u32 unk_3004E98; + +static void debug_sub_808B7A8(u8); -__attribute__((naked)) -void debug_sub_808B778() +void debug_sub_808B778(void) { - asm("\ - push {r4, lr}\n\ - ldr r4, ._390 @ debug_sub_808B7A8\n\ - add r0, r4, #0\n\ - bl FuncIsActiveTask\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._389 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ -._389:\n\ - ldr r1, ._390 + 4 @ unk_3004E98\n\ - ldr r0, [r1]\n\ - add r0, r0, #0x1\n\ - str r0, [r1]\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._391:\n\ - .align 2, 0\n\ -._390:\n\ - .word debug_sub_808B7A8+1\n\ - .word unk_3004E98"); + if (!FuncIsActiveTask(debug_sub_808B7A8)) + CreateTask(debug_sub_808B7A8, 80); + unk_3004E98++; } -__attribute__((naked)) -void debug_sub_808B7A8() +static void debug_sub_808B7A8(u8 taskId) { - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._393 @ gTasks\n\ - lsl r1, r0, #0x2\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r2\n\ - ldrh r0, [r1, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1, #0x8]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x1e\n\ - bne ._392 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r1, #0x8]\n\ - ldr r2, ._393 + 4 @ unk_3004E94\n\ - ldrh r0, [r2]\n\ - mov r1, #0x1\n\ - orr r0, r0, r1\n\ - strh r0, [r2]\n\ -._392:\n\ - pop {r0}\n\ - bx r0\n\ -._394:\n\ - .align 2, 0\n\ -._393:\n\ - .word gTasks\n\ - .word unk_3004E94"); + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 30) + { + gTasks[taskId].data[0] = 0; + unk_3004E94 |= 1; + } } #endif @@ -1374,6 +1014,7 @@ void unref_sub_8083CC8(u8 taskId) } #if DEBUG +EWRAM_DATA static u8 unk_2030220 = 0; void debug_sub_808B82C(void) { @@ -1385,9 +1026,8 @@ void debug_sub_808B838(u8 a) unk_2030220 |= 1 << a; } -int debug_sub_808B850(void) +static u8 debug_sub_808B850(void) { return unk_2030220; } - -#endif
\ No newline at end of file +#endif diff --git a/src/engine/link.c b/src/engine/link.c index 00c084069..70c2b85cc 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -45,7 +45,6 @@ extern u16 word_3004858; extern void Blender_SetBankBerryData(u8 bank, u16 itemID); static void InitLinkTestBG(u8, u8, u8, u8); -void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); static void InitLocalLinkPlayer(void); static void VBlankCB_LinkTest(void); @@ -68,7 +67,6 @@ u32 sub_8007E40(void); static void SetBlockReceivedFlag(u8); static u16 LinkTestCalcBlockChecksum(void *, u16); static void PrintHexDigit(u8, u8, u8); -void PrintHex(u32, u8, u8, u8); static void LinkCB_RequestPlayerDataExchange(void); static void Task_PrintTestData(u8); bool8 sub_8008224(void); diff --git a/sym_ewram.txt b/sym_ewram.txt index 012a32cc6..87c2802a7 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -339,13 +339,8 @@ gBattleMonForms = .; /* 2024E84 */ . = ALIGN(4); src/scene/title_screen.o(ewram_data); . = ALIGN(4); src/field/field_weather.o(ewram_data); . = ALIGN(4); src/battle/battle_setup.o(ewram_data); - -#if DEBUG -unk_2030220 = .; - . += 0x4; +. = ALIGN(4); src/engine/cable_club.o(ewram_data); . = ALIGN(4); src/debug/taya_debug_window.o(ewram_data); -#endif - . = ALIGN(4); src/field/wild_encounter.o(ewram_data); . = ALIGN(4); src/field/field_effect.o(ewram_data); . = ALIGN(4); src/scanline_effect.o(ewram_data); |