summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2018-02-06 21:20:07 -0600
committercamthesaxman <cameronghall@cox.net>2018-02-06 21:20:07 -0600
commit377710a0cb9cd85f2d1d221c1de30f671b4286cd (patch)
treefaecb347280d96a4169d905b4ceb986ffb55a02c
parentc79d259508d47a8b5bde5b9060b8fe8c6989bd44 (diff)
decompile debug code in cable_club.c
-rw-r--r--include/field_specials.h1
-rw-r--r--include/link.h7
-rw-r--r--include/overworld.h10
-rw-r--r--src/engine/cable_club.c548
-rw-r--r--src/engine/link.c2
-rw-r--r--sym_ewram.txt7
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);