diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-07 22:52:10 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-11-07 22:52:10 -0500 |
commit | 9029fb27c176cd962bb30a12a77e7138ed21f28b (patch) | |
tree | becb14097029a7fa5e349248c91a63c1aaf68fe6 | |
parent | f90106ae6ca4132c1ffdddee6580e46af3352f76 (diff) |
through sub_8009734
-rw-r--r-- | asm/link.s | 120 | ||||
-rw-r--r-- | include/link.h | 12 | ||||
-rw-r--r-- | include/main.h | 2 | ||||
-rw-r--r-- | src/link.c | 64 |
4 files changed, 78 insertions, 120 deletions
diff --git a/asm/link.s b/asm/link.s index cc3685971..f4fb4b75d 100644 --- a/asm/link.s +++ b/asm/link.s @@ -5,126 +5,6 @@ .text - thumb_func_start sub_80096BC -sub_80096BC: @ 80096BC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80096BC - - thumb_func_start sub_80096D0 -sub_80096D0: @ 80096D0 - push {lr} - ldr r3, =gUnknown_020229C4 - ldr r1, =gUnknown_03003110 - ldr r2, =0x0000efff - adds r0, r1, 0 - adds r0, 0xE -_080096DC: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080096DC - movs r0, 0x1 - strb r0, [r3] - bl sub_800B594 - pop {r0} - bx r0 - .pool - thumb_func_end sub_80096D0 - - thumb_func_start task02_080097CC -task02_080097CC: @ 80096FC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08009726 - ldr r1, =gUnknown_03003144 - movs r0, 0x1 - strb r0, [r1] - adds r0, r2, 0 - bl DestroyTask -_08009726: - pop {r0} - bx r0 - .pool - thumb_func_end task02_080097CC - - thumb_func_start sub_8009734 -sub_8009734: @ 8009734 - push {r4-r6,lr} - ldr r0, =gLinkVSyncDisabled - ldrb r4, [r0] - cmp r4, 0 - bne _080097A8 - bl sub_800B628 - bl sub_80096D0 - ldr r1, =gUnknown_03003140 - ldr r0, =sub_800A824 - str r0, [r1] - ldr r0, =gUnknown_03002748 - strb r4, [r0] - ldr r0, =gUnknown_0300306C - strb r4, [r0] - ldr r0, =gUnknown_030030F8 - strb r4, [r0] - bl ResetBlockReceivedFlags - bl sub_800A2E0 - ldr r0, =gUnknown_03000D54 - str r4, [r0] - ldr r0, =gUnknown_030030E8 - strb r4, [r0] - ldr r0, =gUnknown_030030E4 - strb r4, [r0] - ldr r0, =gUnknown_030030F4 - strh r4, [r0] - ldr r0, =task02_080097CC - movs r1, 0x2 - bl CreateTask - b _080097AC - .pool -_080097A8: - bl sub_800E700 -_080097AC: - ldr r1, =gReceivedRemoteLinkPlayers - movs r0, 0 - strb r0, [r1] - movs r1, 0 - ldr r6, =gUnknown_03003078 - movs r2, 0 - movs r5, 0x1 - ldr r4, =gUnknown_030030F0 - ldr r3, =gUnknown_030030EC -_080097BE: - adds r0, r1, r6 - strb r5, [r0] - adds r0, r1, r4 - strb r2, [r0] - adds r0, r1, r3 - strb r2, [r0] - adds r1, 0x1 - cmp r1, 0x3 - ble _080097BE - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8009734 - thumb_func_start sub_80097E8 sub_80097E8: @ 80097E8 push {r4,lr} diff --git a/include/link.h b/include/link.h index 0653a25e8..fa245cbdf 100644 --- a/include/link.h +++ b/include/link.h @@ -194,8 +194,20 @@ u8 sub_800ABAC(void); u8 sub_800ABBC(void); void sub_800AC34(void); +void sub_800B628(void); void sub_80097E8(void); +extern IWRAM_DATA u8 gUnknown_0300306C; +extern IWRAM_DATA u8 gUnknown_03003078[4]; +extern IWRAM_DATA u8 gUnknown_030030E4; +extern IWRAM_DATA u8 gUnknown_030030E8; +extern IWRAM_DATA u8 gUnknown_030030EC[4]; +extern IWRAM_DATA u8 gUnknown_030030F0[4]; +extern IWRAM_DATA u16 gUnknown_030030F4; +extern IWRAM_DATA u8 gUnknown_030030F8; +extern IWRAM_DATA u16 gUnknown_03003110[8]; extern IWRAM_DATA struct LinkTestBGInfo gUnknown_03003130; // common +extern IWRAM_DATA void (*gUnknown_03003140)(void); +extern IWRAM_DATA bool8 gUnknown_03003144; #endif // GUARD_LINK_H diff --git a/include/main.h b/include/main.h index 46c8fd681..4ce2e9b1a 100644 --- a/include/main.h +++ b/include/main.h @@ -50,6 +50,8 @@ extern bool8 gLinkVSyncDisabled; extern const u8 gGameVersion; extern const u8 gGameLanguage; +extern IWRAM_DATA u8 gUnknown_03002748; + void AgbMain(void); void SetMainCallback2(MainCallback callback); void InitKeys(void); diff --git a/src/link.c b/src/link.c index f95c1acb7..bcad97f53 100644 --- a/src/link.c +++ b/src/link.c @@ -57,6 +57,7 @@ IWRAM_DATA void *gUnknown_03000DA8; IWRAM_DATA void *gUnknown_03000DAC; IWRAM_DATA bool32 gUnknown_03000DB0; +bool8 gUnknown_020229C4 = 0; u16 gUnknown_020229C6 = 0; struct LinkPlayer gUnknown_020229CC = {}; @@ -67,6 +68,8 @@ void sub_80096BC(void); void c2_08009A8C(void); void sub_800A2E0(void); void task00_link_test(u8 taskId); +void sub_800A824(void); +void sub_800B594(void); void sub_800B4A4(void); u32 sub_800BEC0(void); void sub_800E700(void); @@ -202,3 +205,64 @@ void sub_8009638(void) gUnknown_020229CC.name[8] |= 0x10; } } + +void sub_80096BC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_80096D0(void) +{ + int i; + + for (i = 0; i < 8; i ++) + { + gUnknown_03003110[i] = 0xefff; + } + gUnknown_020229C4 = TRUE; + sub_800B594(); +} + +void task02_080097CC(u8 taskId) +{ + if (++ gTasks[taskId].data[0] == 5) + { + gUnknown_03003144 = TRUE; + DestroyTask(taskId); + } +} + +void sub_8009734(void) +{ + int i; + + if (!gLinkVSyncDisabled) + { + sub_800B628(); + sub_80096D0(); + gUnknown_03003140 = sub_800A824; + gUnknown_03002748 = 0; + gUnknown_0300306C = 0; + gUnknown_030030F8 = 0; + ResetBlockReceivedFlags(); + sub_800A2E0(); + gUnknown_03000D54 = 0; + gUnknown_030030E8 = 0; + gUnknown_030030E4 = 0; + gUnknown_030030F4 = 0; + CreateTask(task02_080097CC, 2); + } + else + { + sub_800E700(); + } + gReceivedRemoteLinkPlayers = 0; + for (i = 0; i < 4; i ++) + { + gUnknown_03003078[i] = 1; + gUnknown_030030F0[i] = 0; + gUnknown_030030EC[i] = 0; + } +} |