summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/berry_crush.s12
-rw-r--r--asm/link_rfu.s3175
-rw-r--r--asm/link_rfu_2.s10188
-rw-r--r--asm/overworld.s6
-rw-r--r--asm/pokemon_jump_2.s4
-rw-r--r--asm/union_room.s (renamed from asm/link_rfu_3.s)2058
-rw-r--r--asm/union_room_player_avatar.s2064
-rw-r--r--common_syms/link_rfu.txt1
-rw-r--r--common_syms/link_rfu_2.txt3
-rw-r--r--data/easy_chat_2.s (renamed from data/link_rfu.s)0
-rw-r--r--data/link_rfu_2.s277
-rw-r--r--data/union_room.s (renamed from data/link_rfu_3.s)2
-rw-r--r--include/global.h9
-rw-r--r--include/librfu.h30
-rw-r--r--include/link.h17
-rw-r--r--include/link_rfu.h255
-rw-r--r--include/mystery_gift_menu.h1
-rw-r--r--include/overworld.h25
-rw-r--r--include/trade.h6
-rw-r--r--include/union_room.h4
-rw-r--r--ld_script.txt15
-rw-r--r--src/librfu_rfu.c10
-rw-r--r--src/link.c2
-rw-r--r--src/link_rfu.c1381
-rw-r--r--src/link_rfu_2.c2834
-rw-r--r--src/link_rfu_3.c948
-rw-r--r--src/mevent_server_helpers.c8
-rw-r--r--src/party_menu.c4
-rw-r--r--src/trade.c4
-rw-r--r--sym_bss.txt21
-rw-r--r--sym_common.txt58
-rw-r--r--sym_ewram.txt14
32 files changed, 7589 insertions, 15847 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s
index 27d31829d..6502fc916 100644
--- a/asm/berry_crush.s
+++ b/asm/berry_crush.s
@@ -78,7 +78,7 @@ sub_814B754: @ 814B754
_0814B772:
adds r0, r4, 0
bl SetMainCallback2
- ldr r0, _0814B78C @ =gUnknown_3005450
+ ldr r0, _0814B78C @ =Rfu
mov r1, r8
strh r1, [r0, 0x10]
strh r1, [r0, 0x12]
@@ -86,7 +86,7 @@ _0814B772:
.align 2, 0
_0814B784: .4byte gReceivedRemoteLinkPlayers
_0814B788: .4byte gWirelessCommType
-_0814B78C: .4byte gUnknown_3005450
+_0814B78C: .4byte Rfu
_0814B790:
bl GetLinkPlayerCount
lsls r0, 24
@@ -103,13 +103,13 @@ _0814B790:
_0814B7AC:
adds r0, r4, 0
bl SetMainCallback2
- ldr r0, _0814B7BC @ =gUnknown_3005450
+ ldr r0, _0814B7BC @ =Rfu
movs r1, 0
strh r1, [r0, 0x10]
strh r1, [r0, 0x12]
b _0814B7DC
.align 2, 0
-_0814B7BC: .4byte gUnknown_3005450
+_0814B7BC: .4byte Rfu
_0814B7C0:
ldr r6, _0814B7E8 @ =gUnknown_203F3DC
ldr r0, _0814B7EC @ =0x000041c0
@@ -120,7 +120,7 @@ _0814B7C0:
bne _0814B7F4
adds r0, r4, 0
bl SetMainCallback2
- ldr r0, _0814B7F0 @ =gUnknown_3005450
+ ldr r0, _0814B7F0 @ =Rfu
strh r5, [r0, 0x10]
strh r5, [r0, 0x12]
_0814B7DC:
@@ -132,7 +132,7 @@ _0814B7DC:
.align 2, 0
_0814B7E8: .4byte gUnknown_203F3DC
_0814B7EC: .4byte 0x000041c0
-_0814B7F0: .4byte gUnknown_3005450
+_0814B7F0: .4byte Rfu
_0814B7F4:
str r4, [r5]
movs r4, 0
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
deleted file mode 100644
index 49fe3aef5..000000000
--- a/asm/link_rfu.s
+++ /dev/null
@@ -1,3175 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FD3A4
-sub_80FD3A4: @ 80FD3A4
- push {r4,lr}
- bl rfu_REQBN_softReset_and_checkID
- adds r4, r0, 0
- ldr r0, _080FD3E8 @ =0x00008001
- cmp r4, r0
- bne _080FD3B8
- ldr r1, _080FD3EC @ =gUnknown_3005E10
- movs r0, 0x1
- strb r0, [r1, 0x8]
-_080FD3B8:
- ldr r0, _080FD3EC @ =gUnknown_3005E10
- ldrb r2, [r0, 0x4]
- adds r1, r0, 0
- cmp r2, 0x17
- beq _080FD3CC
- cmp r2, 0x1
- beq _080FD3CC
- movs r0, 0
- strb r0, [r1, 0x5]
- strb r0, [r1, 0x4]
-_080FD3CC:
- movs r0, 0
- strb r0, [r1, 0x7]
- strb r0, [r1, 0xD]
- strb r0, [r1, 0x1]
- strb r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- bl sub_80FEAF4
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FD3E8: .4byte 0x00008001
-_080FD3EC: .4byte gUnknown_3005E10
- thumb_func_end sub_80FD3A4
-
- thumb_func_start rfu_REQ_sendData_wrapper
-rfu_REQ_sendData_wrapper: @ 80FD3F0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080FD410 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FD418
- ldr r0, _080FD414 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x2]
- movs r2, 0
- cmp r0, 0x1
- bne _080FD420
- movs r2, 0x1
- b _080FD420
- .align 2, 0
-_080FD410: .4byte gRfuLinkStatus
-_080FD414: .4byte gUnknown_3005E10
-_080FD418:
- ldr r0, _080FD42C @ =gUnknown_3005E10
- ldrb r1, [r0, 0x3]
- movs r1, 0
- strb r1, [r0, 0x3]
-_080FD420:
- adds r0, r2, 0
- bl rfu_REQ_sendData
- pop {r0}
- bx r0
- .align 2, 0
-_080FD42C: .4byte gUnknown_3005E10
- thumb_func_end rfu_REQ_sendData_wrapper
-
- thumb_func_start sub_80FD430
-sub_80FD430: @ 80FD430
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- cmp r5, 0
- beq _080FD478
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r4, _080FD468 @ =gUnknown_3005E10
- ldr r2, _080FD46C @ =0x01000024
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r4, 0x6]
- str r5, [r4, 0x40]
- str r6, [r4, 0x44]
- ldr r0, _080FD470 @ =sub_80FE394
- bl rfu_setMSCCallback
- ldr r0, _080FD474 @ =sub_80FDC98
- bl rfu_setREQCallback
- movs r0, 0
- b _080FD47A
- .align 2, 0
-_080FD468: .4byte gUnknown_3005E10
-_080FD46C: .4byte 0x01000024
-_080FD470: .4byte sub_80FE394
-_080FD474: .4byte sub_80FDC98
-_080FD478:
- movs r0, 0x4
-_080FD47A:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD430
-
- thumb_func_start sub_80FD484
-sub_80FD484: @ 80FD484
- push {r4,lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r4, _080FD4A8 @ =gUnknown_3005E10
- ldr r2, _080FD4AC @ =0x01000020
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r4, 0x6]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD4A8: .4byte gUnknown_3005E10
-_080FD4AC: .4byte 0x01000020
- thumb_func_end sub_80FD484
-
- thumb_func_start sub_80FD4B0
-sub_80FD4B0: @ 80FD4B0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80FD4E4
- ldr r1, _080FD4E0 @ =gUnknown_3005E10
- movs r2, 0x1
- strb r2, [r1, 0x4]
- movs r0, 0x2
- strb r0, [r1, 0x5]
- str r4, [r1, 0x3C]
- ldrb r0, [r4, 0x11]
- strb r0, [r1, 0x9]
- ldrh r0, [r4, 0x12]
- strh r0, [r1, 0x32]
- ldrh r0, [r4, 0x14]
- strh r0, [r1, 0x18]
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _080FD4D8
- strb r2, [r1, 0xB]
-_080FD4D8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD4E0: .4byte gUnknown_3005E10
- thumb_func_end sub_80FD4B0
-
- thumb_func_start sub_80FD4E4
-sub_80FD4E4: @ 80FD4E4
- push {r4,r5,lr}
- ldr r2, _080FD528 @ =gUnknown_3005E10
- movs r0, 0
- strb r0, [r2, 0x5]
- strb r0, [r2, 0x4]
- movs r1, 0xFF
- strb r1, [r2, 0x6]
- strb r0, [r2, 0x7]
- strb r0, [r2, 0x10]
- strb r0, [r2, 0xC]
- adds r1, r2, 0
- adds r1, 0x24
- strb r0, [r1]
- adds r1, 0xC
- strb r0, [r1]
- movs r3, 0
- adds r5, r2, 0
- adds r5, 0x28
- movs r4, 0
- adds r2, 0x34
-_080FD50C:
- lsls r1, r3, 1
- adds r0, r1, r5
- strh r4, [r0]
- adds r1, r2
- strh r4, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080FD50C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD528: .4byte gUnknown_3005E10
- thumb_func_end sub_80FD4E4
-
- thumb_func_start sub_80FD52C
-sub_80FD52C: @ 80FD52C
- ldr r1, _080FD534 @ =gUnknown_3005E10
- movs r0, 0x15
- strb r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_080FD534: .4byte gUnknown_3005E10
- thumb_func_end sub_80FD52C
-
- thumb_func_start sub_80FD538
-sub_80FD538: @ 80FD538
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r3, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- ldr r1, _080FD570 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080FD574
- cmp r0, 0x8
- bne _080FD55E
- cmp r5, 0x1
- beq _080FD574
-_080FD55E:
- movs r0, 0x1
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x1
- b _080FD606
- .align 2, 0
-_080FD570: .4byte gUnknown_3005E10
-_080FD574:
- bl rfu_getMasterSlave
- lsls r0, 24
- cmp r0, 0
- bne _080FD594
- ldr r1, _080FD590 @ =gUnknown_3005E10
- movs r0, 0x2
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x2
- b _080FD606
- .align 2, 0
-_080FD590: .4byte gUnknown_3005E10
-_080FD594:
- movs r2, 0
- ldrh r0, [r6]
- ldr r4, _080FD5C8 @ =0x0000ffff
- adds r1, r6, 0x2
- ldr r3, _080FD5CC @ =gUnknown_3005E10
- cmp r0, r4
- beq _080FD5B4
-_080FD5A2:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bhi _080FD5B4
- ldrh r0, [r1]
- adds r1, 0x2
- cmp r0, r4
- bne _080FD5A2
-_080FD5B4:
- cmp r2, 0x10
- bne _080FD5D0
- movs r0, 0x4
- strh r0, [r3, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x4
- b _080FD606
- .align 2, 0
-_080FD5C8: .4byte 0x0000ffff
-_080FD5CC: .4byte gUnknown_3005E10
-_080FD5D0:
- cmp r5, 0x1
- bls _080FD5DE
- movs r0, 0x1
- strb r0, [r3, 0x7]
- movs r5, 0x1
- movs r7, 0
- b _080FD5E2
-_080FD5DE:
- movs r0, 0
- strb r0, [r3, 0x7]
-_080FD5E2:
- cmp r5, 0
- beq _080FD5EC
- movs r0, 0x5
- strb r0, [r3, 0x4]
- b _080FD5FA
-_080FD5EC:
- movs r0, 0x9
- strb r0, [r3, 0x4]
- ldrb r0, [r3, 0xB]
- cmp r0, 0
- beq _080FD5FA
- movs r0, 0x2
- strb r0, [r3, 0xB]
-_080FD5FA:
- strb r5, [r3, 0x6]
- strh r7, [r3, 0x1A]
- mov r0, r8
- strh r0, [r3, 0x26]
- str r6, [r3, 0x20]
- movs r0, 0
-_080FD606:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD538
-
- thumb_func_start sub_80FD610
-sub_80FD610: @ 80FD610
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldr r1, _080FD644 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080FD648
- subs r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bls _080FD648
- movs r0, 0x1
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x1
- b _080FD6E8
- .align 2, 0
-_080FD644: .4byte gUnknown_3005E10
-_080FD648:
- bl rfu_getMasterSlave
- lsls r0, 24
- cmp r0, 0
- bne _080FD668
- ldr r1, _080FD664 @ =gUnknown_3005E10
- movs r0, 0x2
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x2
- b _080FD6E8
- .align 2, 0
-_080FD664: .4byte gUnknown_3005E10
-_080FD668:
- movs r2, 0
- ldr r0, _080FD6B4 @ =gRfuLinkStatus
- ldr r1, [r0]
- ldrb r3, [r1, 0x8]
- ldr r5, _080FD6B8 @ =gUnknown_3005E10
- adds r7, r0, 0
- cmp r2, r3
- bcs _080FD696
- ldrh r0, [r1, 0x14]
- cmp r0, r6
- beq _080FD696
- adds r4, r1, 0
- adds r1, r3, 0
-_080FD682:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r1
- bcs _080FD696
- lsls r0, r2, 5
- adds r0, r4, r0
- ldrh r0, [r0, 0x14]
- cmp r0, r6
- bne _080FD682
-_080FD696:
- ldr r0, [r7]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- beq _080FD6A2
- cmp r2, r0
- bne _080FD6BC
-_080FD6A2:
- movs r0, 0x3
- strh r0, [r5, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x3
- b _080FD6E8
- .align 2, 0
-_080FD6B4: .4byte gRfuLinkStatus
-_080FD6B8: .4byte gUnknown_3005E10
-_080FD6BC:
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- beq _080FD6C6
- cmp r0, 0x9
- bne _080FD6CE
-_080FD6C6:
- movs r0, 0xC
- strb r0, [r5, 0x4]
- movs r0, 0xD
- b _080FD6D4
-_080FD6CE:
- movs r0, 0xB
- strb r0, [r5, 0x4]
- movs r0, 0xC
-_080FD6D4:
- strb r0, [r5, 0x5]
- strh r6, [r5, 0x1E]
- mov r0, r8
- strh r0, [r5, 0x1A]
- ldrb r0, [r5, 0x7]
- cmp r0, 0
- beq _080FD6E6
- movs r0, 0x7
- strb r0, [r5, 0x7]
-_080FD6E6:
- movs r0, 0
-_080FD6E8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD610
-
- thumb_func_start sub_80FD6F4
-sub_80FD6F4: @ 80FD6F4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r6, _080FD758 @ =gUnknown_3005E10
- adds r3, r6, 0
- adds r3, 0x30
- ldrb r2, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080FD750
- adds r0, r2, 0
- bics r0, r1
- strb r0, [r3]
- movs r4, 0
- ldr r7, _080FD75C @ =gRfuLinkStatus
- movs r5, 0x1
- adds r3, 0x4
- movs r2, 0
-_080FD71A:
- adds r0, r1, 0
- asrs r0, r4
- ands r0, r5
- cmp r0, 0
- beq _080FD72A
- lsls r0, r4, 1
- adds r0, r3
- strh r2, [r0]
-_080FD72A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080FD71A
- ldr r0, [r7]
- ldrb r4, [r0, 0x3]
- ands r4, r1
- cmp r4, 0
- beq _080FD744
- adds r0, r4, 0
- bl sub_80FE818
-_080FD744:
- ldr r0, _080FD758 @ =gUnknown_3005E10
- strh r4, [r0, 0x14]
- movs r0, 0x33
- adds r1, r4, 0
- bl sub_80FE7F0
-_080FD750:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD758: .4byte gUnknown_3005E10
-_080FD75C: .4byte gRfuLinkStatus
- thumb_func_end sub_80FD6F4
-
- thumb_func_start sub_80FD760
-sub_80FD760: @ 80FD760
- push {r4,r5,lr}
- lsls r0, 24
- movs r2, 0
- ldr r1, _080FD77C @ =gUnknown_3005E10
- strb r2, [r1, 0x7]
- adds r5, r1, 0
- cmp r0, 0
- beq _080FD780
- bl sub_80FD4E4
- movs r0, 0x17
- strb r0, [r5, 0x4]
- b _080FD84A
- .align 2, 0
-_080FD77C: .4byte gUnknown_3005E10
-_080FD780:
- ldrb r0, [r5, 0x4]
- subs r0, 0x5
- cmp r0, 0xD
- bhi _080FD836
- lsls r0, 2
- ldr r1, _080FD794 @ =_080FD798
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FD794: .4byte _080FD798
- .align 2, 0
-_080FD798:
- .4byte _080FD7D0
- .4byte _080FD7DC
- .4byte _080FD7DC
- .4byte _080FD83C
- .4byte _080FD7E6
- .4byte _080FD7F0
- .4byte _080FD7F0
- .4byte _080FD7FA
- .4byte _080FD804
- .4byte _080FD804
- .4byte _080FD83C
- .4byte _080FD80A
- .4byte _080FD830
- .4byte _080FD830
-_080FD7D0:
- movs r1, 0
- movs r0, 0x8
- strb r0, [r5, 0x4]
- strb r1, [r5, 0x5]
- movs r2, 0x13
- b _080FD83C
-_080FD7DC:
- movs r0, 0x7
- strb r0, [r5, 0x4]
- movs r0, 0x8
- strb r0, [r5, 0x5]
- b _080FD83C
-_080FD7E6:
- movs r0, 0
- strb r0, [r5, 0x5]
- strb r0, [r5, 0x4]
- movs r2, 0x21
- b _080FD83C
-_080FD7F0:
- movs r1, 0
- movs r0, 0xB
- strb r0, [r5, 0x4]
- strb r1, [r5, 0x5]
- b _080FD83C
-_080FD7FA:
- movs r0, 0
- strb r0, [r5, 0x5]
- strb r0, [r5, 0x4]
- movs r2, 0x23
- b _080FD83C
-_080FD804:
- movs r0, 0xE
- strb r0, [r5, 0x4]
- b _080FD83C
-_080FD80A:
- ldrb r0, [r5, 0x11]
- strb r0, [r5, 0x4]
- ldrb r0, [r5, 0x12]
- strb r0, [r5, 0x5]
- ldr r4, _080FD82C @ =gRfuLinkStatus
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- bl sub_80FE818
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- strh r0, [r5, 0x14]
- movs r0, 0x33
- movs r1, 0x1
- bl sub_80FE7F0
- b _080FD84A
- .align 2, 0
-_080FD82C: .4byte gRfuLinkStatus
-_080FD830:
- movs r0, 0x12
- strb r0, [r5, 0x4]
- b _080FD83C
-_080FD836:
- strb r2, [r5, 0x5]
- strb r2, [r5, 0x4]
- movs r2, 0x43
-_080FD83C:
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- bne _080FD84A
- adds r0, r2, 0
- movs r1, 0
- bl sub_80FE7F0
-_080FD84A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FD760
-
- thumb_func_start sub_80FD850
-sub_80FD850: @ 80FD850
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- mov r8, r1
- mov r5, sp
- adds r5, 0x1
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r5, 0
- adds r3, r4, 0
- bl rfu_REQBN_watchLink
- mov r0, sp
- ldrb r0, [r0]
- adds r7, r4, 0
- cmp r0, 0
- beq _080FD922
- ldr r1, _080FD8EC @ =gUnknown_3005E10
- mov r0, sp
- ldrb r0, [r0]
- strh r0, [r1, 0x14]
- ldrb r0, [r5]
- strh r0, [r1, 0x16]
- ldrb r0, [r1, 0x9]
- adds r6, r1, 0
- cmp r0, 0
- beq _080FD90A
- movs r0, 0x1
- strb r0, [r6, 0xA]
- ldrb r0, [r6, 0x6]
- cmp r0, 0
- bne _080FD8A6
- ldrb r0, [r5]
- cmp r0, 0
- bne _080FD8A6
- movs r0, 0x4
- strb r0, [r6, 0xA]
-_080FD8A6:
- ldrb r0, [r6, 0xA]
- cmp r0, 0x1
- bne _080FD8F0
- movs r2, 0
- mov r4, sp
- movs r5, 0x1
- mov r12, r6
- mov r3, r12
- adds r3, 0x30
- movs r6, 0x34
- add r6, r12
- mov r9, r6
-_080FD8BE:
- ldrb r0, [r4]
- asrs r0, r2
- ands r0, r5
- cmp r0, 0
- beq _080FD8DC
- adds r0, r5, 0
- lsls r0, r2
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- lsls r0, r2, 1
- add r0, r9
- mov r6, r12
- ldrh r1, [r6, 0x32]
- strh r1, [r0]
-_080FD8DC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080FD8BE
- movs r0, 0x31
- b _080FD902
- .align 2, 0
-_080FD8EC: .4byte gUnknown_3005E10
-_080FD8F0:
- movs r0, 0
- strb r0, [r6, 0xA]
- mov r0, sp
- ldrb r0, [r0]
- bl sub_80FE818
- movs r0, 0x1
- mov r8, r0
- movs r0, 0x33
-_080FD902:
- movs r1, 0x1
- bl sub_80FE7F0
- b _080FD91E
-_080FD90A:
- mov r0, sp
- ldrb r0, [r0]
- bl sub_80FE818
- movs r1, 0x1
- mov r8, r1
- movs r0, 0x30
- movs r1, 0x2
- bl sub_80FE7F0
-_080FD91E:
- bl sub_80FEAF4
-_080FD922:
- ldr r0, _080FDA0C @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FD9FC
- ldrb r0, [r7]
- cmp r0, 0
- beq _080FD980
- movs r2, 0
- ldr r6, _080FDA10 @ =gUnknown_3005E10
- movs r3, 0x1
- adds r4, r6, 0
- adds r4, 0x34
- adds r6, 0x30
- adds r5, r7, 0
-_080FD940:
- ldrb r0, [r6]
- asrs r0, r2
- ands r0, r3
- cmp r0, 0
- beq _080FD95C
- ldrb r0, [r5]
- asrs r0, r2
- ands r0, r3
- cmp r0, 0
- beq _080FD95C
- lsls r0, r2, 1
- adds r0, r4
- movs r1, 0
- strh r1, [r0]
-_080FD95C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080FD940
- ldr r3, _080FDA10 @ =gUnknown_3005E10
- adds r2, r3, 0
- adds r2, 0x30
- ldrb r1, [r7]
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldrb r0, [r7]
- strh r0, [r3, 0x14]
- movs r0, 0x32
- movs r1, 0x1
- bl sub_80FE7F0
-_080FD980:
- ldr r0, _080FDA10 @ =gUnknown_3005E10
- adds r3, r0, 0
- adds r3, 0x30
- ldrb r1, [r3]
- adds r6, r0, 0
- cmp r1, 0
- beq _080FD9F8
- movs r4, 0
- movs r2, 0
- movs r5, 0x1
-_080FD994:
- ldrb r0, [r3]
- asrs r0, r2
- ands r0, r5
- cmp r0, 0
- beq _080FD9C6
- lsls r1, r2, 1
- adds r0, r6, 0
- adds r0, 0x34
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _080FD9C6
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080FD9C6
- adds r0, r5, 0
- lsls r0, r2
- ldrb r1, [r3]
- bics r1, r0
- strb r1, [r3]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080FD9C6:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080FD994
- cmp r4, 0
- beq _080FD9EA
- adds r0, r4, 0
- bl sub_80FE818
- movs r6, 0x1
- mov r8, r6
- ldr r0, _080FDA10 @ =gUnknown_3005E10
- strh r4, [r0, 0x14]
- movs r0, 0x33
- movs r1, 0x1
- bl sub_80FE7F0
-_080FD9EA:
- ldr r0, _080FDA10 @ =gUnknown_3005E10
- adds r1, r0, 0
- adds r1, 0x30
- ldrb r1, [r1]
- adds r6, r0, 0
- cmp r1, 0
- bne _080FD9FC
-_080FD9F8:
- movs r0, 0
- strb r0, [r6, 0xA]
-_080FD9FC:
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FDA0C: .4byte gRfuLinkStatus
-_080FDA10: .4byte gUnknown_3005E10
- thumb_func_end sub_80FD850
-
- thumb_func_start rfu_syncVBlank_
-rfu_syncVBlank_: @ 80FDA14
- push {lr}
- bl rfu_syncVBlank
- lsls r0, 16
- cmp r0, 0
- beq _080FDA2C
- movs r0, 0xF1
- movs r1, 0
- bl sub_80FE7F0
- bl sub_80FEAF4
-_080FDA2C:
- pop {r0}
- bx r0
- thumb_func_end rfu_syncVBlank_
-
- thumb_func_start sub_80FDA30
-sub_80FDA30: @ 80FDA30
- push {r4,lr}
- adds r3, r0, 0
- ldr r1, _080FDA48 @ =gUnknown_3005E10
- ldr r2, [r1, 0x40]
- cmp r2, 0
- bne _080FDA4C
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080FDA4C
- strb r2, [r1, 0x4]
- b _080FDC1A
- .align 2, 0
-_080FDA48: .4byte gUnknown_3005E10
-_080FDA4C:
- ldr r0, _080FDA80 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- beq _080FDA5A
- adds r0, r3, 0
- bl sub_80FDC28
-_080FDA5A:
- ldr r4, _080FDA80 @ =gUnknown_3005E10
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- bne _080FDA64
- b _080FDBE4
-_080FDA64:
- bl rfu_waitREQComplete
- movs r0, 0x1
- strb r0, [r4, 0xE]
- ldrb r0, [r4, 0x4]
- subs r0, 0x1
- cmp r0, 0x16
- bls _080FDA76
- b _080FDBDA
-_080FDA76:
- lsls r0, 2
- ldr r1, _080FDA84 @ =_080FDA88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FDA80: .4byte gUnknown_3005E10
-_080FDA84: .4byte _080FDA88
- .align 2, 0
-_080FDA88:
- .4byte _080FDB08
- .4byte _080FDB40
- .4byte _080FDB46
- .4byte _080FDB5C
- .4byte _080FDB74
- .4byte _080FDB7A
- .4byte _080FDB80
- .4byte _080FDBDA
- .4byte _080FDB86
- .4byte _080FDB8C
- .4byte _080FDB92
- .4byte _080FDB98
- .4byte _080FDBA8
- .4byte _080FDBAE
- .4byte _080FDBDA
- .4byte _080FDBB4
- .4byte _080FDBC4
- .4byte _080FDBCA
- .4byte _080FDBD0
- .4byte _080FDBDA
- .4byte _080FDBD6
- .4byte _080FDBDA
- .4byte _080FDAE4
-_080FDAE4:
- bl sub_80FD3A4
- ldr r1, _080FDB00 @ =0x00008001
- movs r2, 0xFF
- cmp r0, r1
- bne _080FDAF2
- movs r2, 0x44
-_080FDAF2:
- ldr r1, _080FDB04 @ =gUnknown_3005E10
- movs r0, 0
- strb r0, [r1, 0x5]
- strb r0, [r1, 0x4]
- adds r0, r2, 0
- b _080FDB32
- .align 2, 0
-_080FDB00: .4byte 0x00008001
-_080FDB04: .4byte gUnknown_3005E10
-_080FDB08:
- bl sub_80FD3A4
- ldr r1, _080FDB20 @ =0x00008001
- cmp r0, r1
- bne _080FDB28
- ldr r0, _080FDB24 @ =gUnknown_3005E10
- ldrb r1, [r0, 0x5]
- strb r1, [r0, 0x4]
- movs r1, 0x3
- strb r1, [r0, 0x5]
- b _080FDBDA
- .align 2, 0
-_080FDB20: .4byte 0x00008001
-_080FDB24: .4byte gUnknown_3005E10
-_080FDB28:
- ldr r1, _080FDB3C @ =gUnknown_3005E10
- movs r0, 0
- strb r0, [r1, 0x5]
- strb r0, [r1, 0x4]
- movs r0, 0xFF
-_080FDB32:
- movs r1, 0
- bl sub_80FE7F0
- b _080FDBDA
- .align 2, 0
-_080FDB3C: .4byte gUnknown_3005E10
-_080FDB40:
- bl rfu_REQ_reset
- b _080FDBDA
-_080FDB46:
- ldr r0, _080FDB58 @ =gUnknown_3005E10
- ldr r2, [r0, 0x3C]
- ldrh r0, [r2, 0x2]
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- bl rfu_REQ_configSystem
- b _080FDBDA
- .align 2, 0
-_080FDB58: .4byte gUnknown_3005E10
-_080FDB5C:
- ldr r0, _080FDB70 @ =gUnknown_3005E10
- ldr r3, [r0, 0x3C]
- ldrb r0, [r3, 0x4]
- ldrh r1, [r3, 0x6]
- ldr r2, [r3, 0x8]
- ldr r3, [r3, 0xC]
- bl rfu_REQ_configGameData
- b _080FDBDA
- .align 2, 0
-_080FDB70: .4byte gUnknown_3005E10
-_080FDB74:
- bl rfu_REQ_startSearchChild
- b _080FDBDA
-_080FDB7A:
- bl rfu_REQ_pollSearchChild
- b _080FDBDA
-_080FDB80:
- bl rfu_REQ_endSearchChild
- b _080FDBDA
-_080FDB86:
- bl rfu_REQ_startSearchParent
- b _080FDBDA
-_080FDB8C:
- bl rfu_REQ_pollSearchParent
- b _080FDBDA
-_080FDB92:
- bl rfu_REQ_endSearchParent
- b _080FDBDA
-_080FDB98:
- ldr r0, _080FDBA4 @ =gUnknown_3005E10
- ldrh r0, [r0, 0x1E]
- bl rfu_REQ_startConnectParent
- b _080FDBDA
- .align 2, 0
-_080FDBA4: .4byte gUnknown_3005E10
-_080FDBA8:
- bl rfu_REQ_pollConnectParent
- b _080FDBDA
-_080FDBAE:
- bl rfu_REQ_endConnectParent
- b _080FDBDA
-_080FDBB4:
- ldr r0, _080FDBC0 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- bl rfu_REQ_CHILD_startConnectRecovery
- b _080FDBDA
- .align 2, 0
-_080FDBC0: .4byte gRfuLinkStatus
-_080FDBC4:
- bl rfu_REQ_CHILD_pollConnectRecovery
- b _080FDBDA
-_080FDBCA:
- bl rfu_REQ_CHILD_endConnectRecovery
- b _080FDBDA
-_080FDBD0:
- bl rfu_REQ_changeMasterSlave
- b _080FDBDA
-_080FDBD6:
- bl rfu_REQ_stopMode
-_080FDBDA:
- bl rfu_waitREQComplete
- ldr r1, _080FDC20 @ =gUnknown_3005E10
- movs r0, 0
- strb r0, [r1, 0xE]
-_080FDBE4:
- ldr r0, _080FDC20 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x4]
- subs r0, 0x12
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080FDBF4
- b _080FDA5A
-_080FDBF4:
- ldr r0, _080FDC24 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FDC0A
- movs r0, 0
- bl sub_80FD850
- lsls r0, 24
- cmp r0, 0
- bne _080FDC1A
-_080FDC0A:
- bl sub_80FE418
- bl sub_80FE63C
- bl sub_80FE74C
- bl sub_80FE918
-_080FDC1A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDC20: .4byte gUnknown_3005E10
-_080FDC24: .4byte gRfuLinkStatus
- thumb_func_end sub_80FDA30
-
- thumb_func_start sub_80FDC28
-sub_80FDC28: @ 80FDC28
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, _080FDC4C @ =gUnknown_3005E10
- ldrb r1, [r0, 0x7]
- adds r4, r0, 0
- cmp r1, 0x5
- bne _080FDC52
- movs r2, 0x1
- strb r2, [r4, 0x6]
- strb r1, [r4, 0x4]
- ldrh r0, [r4, 0x1C]
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- beq _080FDC50
- movs r0, 0x6
- strb r0, [r4, 0x7]
- b _080FDC52
- .align 2, 0
-_080FDC4C: .4byte gUnknown_3005E10
-_080FDC50:
- strb r2, [r4, 0x7]
-_080FDC52:
- ldrb r0, [r4, 0x7]
- cmp r0, 0x1
- bne _080FDC7C
- strb r0, [r4, 0x6]
- movs r0, 0x5
- strb r0, [r4, 0x4]
- adds r0, r3, 0
- movs r1, 0x8C
- bl __umodsi3
- strh r0, [r4, 0x1A]
- movs r1, 0x8C
- subs r1, r0
- strh r1, [r4, 0x1C]
- lsls r0, 16
- cmp r0, 0
- beq _080FDC78
- movs r0, 0x2
- b _080FDC7A
-_080FDC78:
- movs r0, 0x3
-_080FDC7A:
- strb r0, [r4, 0x7]
-_080FDC7C:
- ldrb r0, [r4, 0x7]
- cmp r0, 0x3
- bne _080FDC92
- movs r0, 0
- strb r0, [r4, 0x6]
- movs r0, 0x28
- strh r0, [r4, 0x1A]
- movs r0, 0x4
- strb r0, [r4, 0x7]
- movs r0, 0x9
- strb r0, [r4, 0x4]
-_080FDC92:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FDC28
-
- thumb_func_start sub_80FDC98
-sub_80FDC98: @ 80FDC98
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _080FDCD0 @ =gUnknown_3005E10
- ldrb r1, [r0, 0xE]
- adds r7, r0, 0
- cmp r1, 0
- bne _080FDCB6
- b _080FE17C
-_080FDCB6:
- movs r0, 0
- strb r0, [r7, 0xE]
- mov r0, r8
- subs r0, 0x10
- cmp r0, 0x2D
- bls _080FDCC4
- b _080FE16E
-_080FDCC4:
- lsls r0, 2
- ldr r1, _080FDCD4 @ =_080FDCD8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FDCD0: .4byte gUnknown_3005E10
-_080FDCD4: .4byte _080FDCD8
- .align 2, 0
-_080FDCD8:
- .4byte _080FDD90
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FDDBC
- .4byte _080FDDA8
- .4byte _080FE16E
- .4byte _080FDDD0
- .4byte _080FDDE0
- .4byte _080FDE04
- .4byte _080FDE24
- .4byte _080FDE44
- .4byte _080FDEB4
- .4byte _080FDEE6
- .4byte _080FDEFC
- .4byte _080FDF44
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE0BC
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FDFB4
- .4byte _080FE000
- .4byte _080FE048
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE16E
- .4byte _080FE15C
-_080FDD90:
- cmp r6, 0
- beq _080FDD96
- b _080FE16E
-_080FDD96:
- ldr r0, _080FDDA4 @ =gUnknown_3005E10
- ldrb r1, [r0, 0x5]
- strb r1, [r0, 0x4]
- movs r1, 0x4
- strb r1, [r0, 0x5]
- b _080FE16E
- .align 2, 0
-_080FDDA4: .4byte gUnknown_3005E10
-_080FDDA8:
- cmp r6, 0
- beq _080FDDAE
- b _080FE16E
-_080FDDAE:
- ldr r0, _080FDDB8 @ =gUnknown_3005E10
- ldrb r1, [r0, 0x5]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- b _080FE16E
- .align 2, 0
-_080FDDB8: .4byte gUnknown_3005E10
-_080FDDBC:
- cmp r6, 0
- beq _080FDDC2
- b _080FE16E
-_080FDDC2:
- ldr r0, _080FDDCC @ =gUnknown_3005E10
- strb r6, [r0, 0x5]
- strb r6, [r0, 0x4]
- movs r0, 0
- b _080FE0DA
- .align 2, 0
-_080FDDCC: .4byte gUnknown_3005E10
-_080FDDD0:
- cmp r6, 0
- beq _080FDDD6
- b _080FE16E
-_080FDDD6:
- ldr r1, _080FDDDC @ =gUnknown_3005E10
- movs r0, 0x6
- b _080FDEF0
- .align 2, 0
-_080FDDDC: .4byte gUnknown_3005E10
-_080FDDE0:
- ldr r1, _080FDE00 @ =gUnknown_3005E10
- ldrh r0, [r1, 0x1A]
- cmp r0, 0
- bne _080FDDEA
- b _080FE16E
-_080FDDEA:
- subs r0, 0x1
- strh r0, [r1, 0x1A]
- lsls r0, 16
- cmp r0, 0
- beq _080FDDF6
- b _080FE16E
-_080FDDF6:
- movs r0, 0x7
- strb r0, [r1, 0x4]
- movs r0, 0x8
- strb r0, [r1, 0x5]
- b _080FE16E
- .align 2, 0
-_080FDE00: .4byte gUnknown_3005E10
-_080FDE04:
- cmp r6, 0
- beq _080FDE0A
- b _080FE16E
-_080FDE0A:
- ldr r0, _080FDE20 @ =gUnknown_3005E10
- ldrb r1, [r0, 0x5]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- beq _080FDE1A
- b _080FE16E
-_080FDE1A:
- movs r0, 0x13
- b _080FE0DA
- .align 2, 0
-_080FDE20: .4byte gUnknown_3005E10
-_080FDE24:
- cmp r6, 0
- beq _080FDE2A
- b _080FE16E
-_080FDE2A:
- ldrb r0, [r7, 0xB]
- cmp r0, 0x1
- bne _080FDE3A
- ldrh r0, [r7, 0x1A]
- cmp r0, 0x1
- bls _080FDE3A
- subs r0, 0x1
- strh r0, [r7, 0x1A]
-_080FDE3A:
- ldr r1, _080FDE40 @ =gUnknown_3005E10
- movs r0, 0xA
- b _080FDEF0
- .align 2, 0
-_080FDE40: .4byte gUnknown_3005E10
-_080FDE44:
- cmp r6, 0
- bne _080FDE8A
- bl sub_80FE778
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- ldr r4, _080FDEAC @ =gUnknown_3005E10
- strh r0, [r4, 0x14]
- cmp r0, 0
- beq _080FDE64
- movs r0, 0x20
- movs r1, 0x1
- bl sub_80FE7F0
-_080FDE64:
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- beq _080FDE8A
- ldrh r0, [r4, 0x1A]
- cmp r0, 0x1
- beq _080FDE8A
- ldr r0, _080FDEB0 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x4
- bne _080FDE8A
- bl rfu_REQ_endSearchParent
- bl rfu_waitREQComplete
- movs r0, 0x9
- strb r0, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r4, 0xB]
-_080FDE8A:
- ldr r1, _080FDEAC @ =gUnknown_3005E10
- ldrh r0, [r1, 0x1A]
- cmp r0, 0
- bne _080FDE94
- b _080FE16E
-_080FDE94:
- subs r0, 0x1
- strh r0, [r1, 0x1A]
- lsls r0, 16
- cmp r0, 0
- beq _080FDEA0
- b _080FE16E
-_080FDEA0:
- movs r0, 0xB
- strb r0, [r1, 0x4]
- movs r0, 0
- strb r0, [r1, 0x5]
- b _080FE16E
- .align 2, 0
-_080FDEAC: .4byte gUnknown_3005E10
-_080FDEB0: .4byte gRfuLinkStatus
-_080FDEB4:
- cmp r6, 0
- beq _080FDEBA
- b _080FE16E
-_080FDEBA:
- ldr r2, _080FDED4 @ =gUnknown_3005E10
- ldrb r0, [r2, 0x5]
- strb r0, [r2, 0x4]
- ldrb r1, [r2, 0x7]
- cmp r1, 0
- bne _080FDED8
- lsls r0, 24
- cmp r0, 0
- beq _080FDECE
- b _080FE16E
-_080FDECE:
- movs r0, 0x21
- b _080FE0DA
- .align 2, 0
-_080FDED4: .4byte gUnknown_3005E10
-_080FDED8:
- cmp r1, 0x7
- bne _080FDEDE
- b _080FE16E
-_080FDEDE:
- movs r0, 0x5
- strb r0, [r2, 0x4]
- strb r0, [r2, 0x7]
- b _080FE16E
-_080FDEE6:
- cmp r6, 0
- beq _080FDEEC
- b _080FE16E
-_080FDEEC:
- ldr r1, _080FDEF8 @ =gUnknown_3005E10
- movs r0, 0xD
-_080FDEF0:
- strb r0, [r1, 0x5]
- strb r0, [r1, 0x4]
- b _080FE16E
- .align 2, 0
-_080FDEF8: .4byte gUnknown_3005E10
-_080FDEFC:
- cmp r6, 0
- bne _080FDF20
- ldr r4, _080FDF3C @ =gUnknown_3005E20
- mov r0, sp
- adds r1, r4, 0
- bl rfu_getConnectParentStatus
- lsls r0, 16
- cmp r0, 0
- bne _080FDF20
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FDF20
- adds r1, r4, 0
- subs r1, 0x10
- movs r0, 0xE
- strb r0, [r1, 0x4]
-_080FDF20:
- ldr r1, _080FDF40 @ =gUnknown_3005E10
- ldrh r0, [r1, 0x1A]
- cmp r0, 0
- bne _080FDF2A
- b _080FE16E
-_080FDF2A:
- subs r0, 0x1
- strh r0, [r1, 0x1A]
- lsls r0, 16
- cmp r0, 0
- beq _080FDF36
- b _080FE16E
-_080FDF36:
- movs r0, 0xE
- strb r0, [r1, 0x4]
- b _080FE16E
- .align 2, 0
-_080FDF3C: .4byte gUnknown_3005E20
-_080FDF40: .4byte gUnknown_3005E10
-_080FDF44:
- cmp r6, 0
- beq _080FDF4A
- b _080FE16E
-_080FDF4A:
- ldr r4, _080FDF7C @ =gUnknown_3005E20
- mov r0, sp
- adds r1, r4, 0
- bl rfu_getConnectParentStatus
- lsls r0, 16
- cmp r0, 0
- beq _080FDF5C
- b _080FE16E
-_080FDF5C:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FDF80
- adds r1, r4, 0
- subs r1, 0x10
- movs r0, 0x13
- strb r0, [r1, 0x4]
- movs r0, 0xF
- strb r0, [r1, 0x5]
- movs r0, 0x22
- strh r0, [r1, 0x1E]
- ldrb r0, [r1, 0x10]
- strh r0, [r1, 0x14]
- b _080FDFA0
- .align 2, 0
-_080FDF7C: .4byte gUnknown_3005E20
-_080FDF80:
- adds r1, r4, 0
- subs r1, 0x10
- strb r6, [r1, 0x5]
- strb r6, [r1, 0x4]
- movs r0, 0x23
- strh r0, [r1, 0x1E]
- mov r0, sp
- ldrb r0, [r0]
- strh r0, [r1, 0x14]
- ldrb r0, [r1, 0x7]
- cmp r0, 0
- beq _080FDFA0
- movs r0, 0x3
- strb r0, [r1, 0x7]
- movs r0, 0x9
- strb r0, [r1, 0x4]
-_080FDFA0:
- ldr r4, _080FDFB0 @ =gUnknown_3005E10
- ldrb r0, [r4, 0x1E]
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0
- strh r0, [r4, 0x1E]
- b _080FE16E
- .align 2, 0
-_080FDFB0: .4byte gUnknown_3005E10
-_080FDFB4:
- cmp r6, 0
- beq _080FDFBA
- b _080FE16E
-_080FDFBA:
- ldr r2, _080FDFFC @ =gRfuLinkStatus
- ldr r3, [r2]
- ldrb r0, [r3, 0x3]
- movs r1, 0
- strh r0, [r7, 0x14]
- movs r0, 0x11
- strb r0, [r7, 0x5]
- strb r0, [r7, 0x4]
- strb r1, [r7, 0x10]
- ldrb r0, [r3, 0x3]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FDFD8
- b _080FE16E
-_080FDFD8:
- adds r1, r7, 0
- movs r3, 0x1
-_080FDFDC:
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _080FDFEC
- b _080FE16E
-_080FDFEC:
- ldr r0, [r2]
- ldrb r0, [r0, 0x3]
- ldrb r4, [r7, 0x10]
- asrs r0, r4
- ands r0, r3
- cmp r0, 0
- beq _080FDFDC
- b _080FE16E
- .align 2, 0
-_080FDFFC: .4byte gRfuLinkStatus
-_080FE000:
- cmp r6, 0
- bne _080FE01E
- mov r0, sp
- bl rfu_CHILD_getConnectRecoveryStatus
- lsls r0, 16
- cmp r0, 0
- bne _080FE01E
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080FE01E
- ldr r1, _080FE044 @ =gUnknown_3005E10
- movs r0, 0x12
- strb r0, [r1, 0x4]
-_080FE01E:
- ldr r2, _080FE044 @ =gUnknown_3005E10
- ldrb r0, [r2, 0x10]
- lsls r0, 1
- adds r1, r2, 0
- adds r1, 0x34
- adds r1, r0, r1
- ldrh r0, [r1]
- cmp r0, 0
- bne _080FE032
- b _080FE16E
-_080FE032:
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080FE03E
- b _080FE16E
-_080FE03E:
- movs r0, 0x12
- strb r0, [r2, 0x4]
- b _080FE16E
- .align 2, 0
-_080FE044: .4byte gUnknown_3005E10
-_080FE048:
- cmp r6, 0
- beq _080FE04E
- b _080FE16E
-_080FE04E:
- mov r0, sp
- bl rfu_CHILD_getConnectRecoveryStatus
- lsls r0, 16
- cmp r0, 0
- beq _080FE05C
- b _080FE16E
-_080FE05C:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FE078
- ldr r1, _080FE074 @ =gUnknown_3005E10
- movs r0, 0x13
- strb r0, [r1, 0x4]
- movs r0, 0x16
- strb r0, [r1, 0x5]
- movs r0, 0x32
- strh r0, [r1, 0x1E]
- b _080FE08C
- .align 2, 0
-_080FE074: .4byte gUnknown_3005E10
-_080FE078:
- ldr r4, _080FE0B4 @ =gUnknown_3005E10
- strb r6, [r4, 0x5]
- strb r6, [r4, 0x4]
- ldr r0, _080FE0B8 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- bl sub_80FE818
- movs r0, 0x33
- strh r0, [r4, 0x1E]
-_080FE08C:
- ldr r5, _080FE0B4 @ =gUnknown_3005E10
- ldrb r0, [r5, 0x10]
- lsls r0, 1
- adds r1, r5, 0
- adds r1, 0x34
- adds r0, r1
- movs r1, 0
- movs r4, 0
- strh r4, [r0]
- adds r0, r5, 0
- adds r0, 0x30
- strb r1, [r0]
- strb r1, [r5, 0xA]
- ldrb r0, [r5, 0x1E]
- movs r1, 0x1
- bl sub_80FE7F0
- strh r4, [r5, 0x1E]
- b _080FE16E
- .align 2, 0
-_080FE0B4: .4byte gUnknown_3005E10
-_080FE0B8: .4byte gRfuLinkStatus
-_080FE0BC:
- cmp r6, 0
- bne _080FE16E
- ldr r5, _080FE0E4 @ =gUnknown_3005E10
- ldrb r1, [r5, 0x5]
- adds r0, r1, 0
- cmp r0, 0x16
- bne _080FE0E8
- ldrb r0, [r5, 0x11]
- strb r0, [r5, 0x4]
- ldrb r0, [r5, 0x12]
- strb r0, [r5, 0x5]
- ldrb r0, [r5, 0x2]
- movs r0, 0x1
- strb r0, [r5, 0x2]
- movs r0, 0x41
-_080FE0DA:
- movs r1, 0
- bl sub_80FE7F0
- b _080FE16E
- .align 2, 0
-_080FE0E4: .4byte gUnknown_3005E10
-_080FE0E8:
- cmp r0, 0xF
- bne _080FE16E
- strb r1, [r5, 0x4]
- ldrb r0, [r5, 0x2]
- movs r4, 0x1
- strb r4, [r5, 0x2]
- movs r0, 0x41
- movs r1, 0
- bl sub_80FE7F0
- adds r1, r5, 0
- adds r1, 0x24
- ldrb r0, [r5, 0x10]
- lsls r4, r0
- ldrb r0, [r1]
- orrs r4, r0
- strb r4, [r1]
- ldrb r0, [r5, 0x10]
- lsls r0, 1
- adds r1, 0x4
- adds r0, r1
- ldrh r1, [r5, 0x26]
- movs r7, 0
- strh r1, [r0]
- ldrb r1, [r5, 0x10]
- movs r0, 0x4
- bl rfu_clearSlot
- mov r4, sp
- ldrb r0, [r5, 0x10]
- movs r1, 0xE
- bl rfu_NI_CHILD_setSendGameName
- strb r0, [r4]
- lsls r0, 24
- cmp r0, 0
- beq _080FE16E
- strb r7, [r5, 0x5]
- strb r7, [r5, 0x4]
- bl sub_80FEAF4
- ldr r0, _080FE158 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- orrs r0, r1
- bl sub_80FE818
- mov r0, sp
- ldrb r0, [r0]
- strh r0, [r5, 0x14]
- movs r0, 0x25
- movs r1, 0x1
- bl sub_80FE7F0
- b _080FE16E
- .align 2, 0
-_080FE158: .4byte gRfuLinkStatus
-_080FE15C:
- cmp r6, 0
- bne _080FE16E
- ldr r0, _080FE178 @ =gUnknown_3005E10
- strb r6, [r0, 0x5]
- strb r6, [r0, 0x4]
- movs r0, 0x42
- movs r1, 0
- bl sub_80FE7F0
-_080FE16E:
- ldr r1, _080FE178 @ =gUnknown_3005E10
- movs r0, 0x1
- strb r0, [r1, 0xE]
- b _080FE1CA
- .align 2, 0
-_080FE178: .4byte gUnknown_3005E10
-_080FE17C:
- cmp r6, 0x3
- bne _080FE1CA
- ldrb r0, [r7, 0xF]
- cmp r0, 0
- beq _080FE1CA
- mov r3, r8
- cmp r3, 0x24
- beq _080FE194
- cmp r3, 0x26
- beq _080FE194
- cmp r3, 0x27
- bne _080FE1CA
-_080FE194:
- bl rfu_REQ_RFUStatus
- bl rfu_waitREQComplete
- mov r0, sp
- bl rfu_getRFUStatus
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FE1CA
- ldr r4, _080FE1E0 @ =gRfuLinkStatus
- ldr r0, [r4]
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FE1CA
- bl rfu_getSTWIRecvBuffer
- ldr r1, [r4]
- ldrb r1, [r1, 0x2]
- strb r1, [r0, 0x4]
- movs r1, 0x1
- strb r1, [r0, 0x5]
- movs r0, 0x29
- bl sub_80FD850
- movs r6, 0
-_080FE1CA:
- mov r4, r8
- cmp r4, 0x26
- bne _080FE1D2
- b _080FE2E6
-_080FE1D2:
- cmp r4, 0x26
- bgt _080FE1E4
- cmp r4, 0x10
- bne _080FE1DC
- b _080FE304
-_080FE1DC:
- b _080FE322
- .align 2, 0
-_080FE1E0: .4byte gRfuLinkStatus
-_080FE1E4:
- mov r0, r8
- cmp r0, 0x30
- beq _080FE1F2
- cmp r0, 0x3D
- bne _080FE1F0
- b _080FE304
-_080FE1F0:
- b _080FE322
-_080FE1F2:
- cmp r6, 0
- beq _080FE1F8
- b _080FE326
-_080FE1F8:
- bl rfu_getSTWIRecvBuffer
- ldr r4, _080FE2A8 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x8]
- strh r0, [r4, 0x14]
- bl sub_80FE83C
- adds r2, r4, 0
- adds r2, 0x30
- ldrb r1, [r2]
- cmp r1, 0
- beq _080FE24E
- ldrb r0, [r4, 0x14]
- adds r3, r1, 0
- bics r3, r0
- adds r0, r3, 0
- strb r0, [r2]
- movs r3, 0
- adds r7, r4, 0
- adds r1, r7, 0
- movs r5, 0x1
- adds r4, r1, 0
- adds r4, 0x34
- movs r2, 0
-_080FE228:
- ldrh r0, [r1, 0x14]
- asrs r0, r3
- ands r0, r5
- cmp r0, 0
- beq _080FE238
- lsls r0, r3, 1
- adds r0, r4
- strh r2, [r0]
-_080FE238:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080FE228
- ldr r1, _080FE2A8 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x6]
- cmp r0, 0
- bne _080FE24E
- strb r0, [r1, 0x5]
- strb r0, [r1, 0x4]
-_080FE24E:
- mov r3, sp
- ldr r1, _080FE2A8 @ =gUnknown_3005E10
- ldrb r2, [r1]
- ldrb r0, [r1, 0x14]
- ands r0, r2
- strb r0, [r3]
- movs r3, 0
- adds r7, r1, 0
- ldr r2, _080FE2AC @ =gRfuLinkStatus
- mov r1, sp
- movs r5, 0x1
- adds r4, r7, 0
-_080FE266:
- ldrb r0, [r1]
- asrs r0, r3
- ands r0, r5
- cmp r0, 0
- beq _080FE27A
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _080FE27A
- subs r0, 0x1
- strb r0, [r7, 0x1]
-_080FE27A:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080FE266
- ldrb r1, [r7, 0x14]
- ldrb r0, [r7]
- bics r0, r1
- strb r0, [r7]
- ldrb r1, [r7, 0x7]
- cmp r1, 0
- beq _080FE2C4
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080FE2D6
- cmp r1, 0x8
- bne _080FE2B0
- ldrh r0, [r7, 0x1C]
- strh r0, [r7, 0x1A]
- movs r0, 0x6
- strb r0, [r7, 0x7]
- b _080FE2C2
- .align 2, 0
-_080FE2A8: .4byte gUnknown_3005E10
-_080FE2AC: .4byte gRfuLinkStatus
-_080FE2B0:
- ldrb r0, [r7, 0x4]
- subs r0, 0x6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080FE2C4
- movs r0, 0x1
- strb r0, [r7, 0x7]
- movs r0, 0x5
-_080FE2C2:
- strb r0, [r7, 0x4]
-_080FE2C4:
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080FE2D6
- ldrb r0, [r7, 0x4]
- cmp r0, 0
- bne _080FE2D6
- movs r0, 0xFF
- strb r0, [r7, 0x6]
-_080FE2D6:
- ldrb r0, [r7, 0xE]
- cmp r0, 0
- bne _080FE322
- movs r0, 0x40
- movs r1, 0x1
- bl sub_80FE7F0
- b _080FE322
-_080FE2E6:
- bl sub_80FE6F0
- ldr r0, _080FE300 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080FE322
- movs r0, 0x50
- movs r1, 0
- bl sub_80FE7F0
- b _080FE322
- .align 2, 0
-_080FE300: .4byte gRfuLinkStatus
-_080FE304:
- cmp r6, 0
- bne _080FE326
- ldr r0, _080FE350 @ =gUnknown_3005E10
- strb r6, [r0, 0xD]
- strb r6, [r0, 0x1]
- strb r6, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x6]
- bl sub_80FEAF4
- mov r4, r8
- cmp r4, 0x3D
- bne _080FE322
- bl sub_80FD484
-_080FE322:
- cmp r6, 0
- beq _080FE376
-_080FE326:
- ldr r7, _080FE350 @ =gUnknown_3005E10
- mov r0, r8
- cmp r0, 0x1C
- bne _080FE358
- cmp r6, 0
- beq _080FE358
- ldrb r0, [r7, 0x7]
- cmp r0, 0x4
- bne _080FE358
- ldr r2, _080FE354 @ =gRfuLinkStatus
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, [r2]
- movs r0, 0xF
- strb r0, [r1, 0x2]
- bl sub_80FE818
- bl rfu_waitREQComplete
- b _080FE388
- .align 2, 0
-_080FE350: .4byte gUnknown_3005E10
-_080FE354: .4byte gRfuLinkStatus
-_080FE358:
- movs r1, 0
- mov r3, r8
- strh r3, [r7, 0x14]
- strh r6, [r7, 0x16]
- ldrb r0, [r7, 0xE]
- cmp r0, 0
- beq _080FE36A
- strb r1, [r7, 0x5]
- strb r1, [r7, 0x4]
-_080FE36A:
- movs r0, 0xF0
- movs r1, 0x2
- bl sub_80FE7F0
- bl sub_80FEAF4
-_080FE376:
- mov r4, r8
- cmp r4, 0xFF
- bne _080FE388
- movs r0, 0xF2
- movs r1, 0
- bl sub_80FE7F0
- bl sub_80FEAF4
-_080FE388:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FDC98
-
- thumb_func_start sub_80FE394
-sub_80FE394: @ 80FE394
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r4, _080FE3C8 @ =gUnknown_3005E10
- ldrb r7, [r4, 0xE]
- movs r0, 0
- strb r0, [r4, 0xE]
- movs r0, 0x1
- strb r0, [r4, 0xF]
- ldr r0, _080FE3CC @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r5, [r0]
- cmp r5, 0
- bne _080FE3D0
- adds r0, r6, 0
- bl sub_80FD850
- ldrb r0, [r4, 0x2]
- cmp r0, 0x1
- beq _080FE3E8
- bl sub_80FEAF4
- strb r5, [r4, 0xF]
- strb r7, [r4, 0xE]
- b _080FE40C
- .align 2, 0
-_080FE3C8: .4byte gUnknown_3005E10
-_080FE3CC: .4byte gRfuLinkStatus
-_080FE3D0:
- mov r0, sp
- bl rfu_UNI_PARENT_getDRAC_ACK
- lsls r0, 16
- cmp r0, 0
- bne _080FE3E8
- mov r1, sp
- ldrb r0, [r4, 0x3]
- ldrb r1, [r1]
- orrs r0, r1
- ldrb r1, [r4, 0x3]
- strb r0, [r4, 0x3]
-_080FE3E8:
- ldr r4, _080FE414 @ =gUnknown_3005E10
- ldr r1, [r4, 0x44]
- cmp r1, 0
- beq _080FE404
- adds r0, r6, 0
- bl _call_via_r1
- bl rfu_waitREQComplete
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- bne _080FE404
- bl sub_80FEAF4
-_080FE404:
- ldr r1, _080FE414 @ =gUnknown_3005E10
- movs r0, 0
- strb r0, [r1, 0xF]
- strb r7, [r1, 0xE]
-_080FE40C:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE414: .4byte gUnknown_3005E10
- thumb_func_end sub_80FE394
-
- thumb_func_start sub_80FE418
-sub_80FE418: @ 80FE418
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r1, _080FE49C @ =gUnknown_3005E10
- ldrb r0, [r1, 0x4]
- subs r0, 0x5
- lsls r0, 24
- lsrs r0, 24
- adds r3, r1, 0
- cmp r0, 0x3
- bls _080FE436
- b _080FE62A
-_080FE436:
- ldr r0, _080FE4A0 @ =gRfuLinkStatus
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r3, 0xC]
- adds r4, r1, 0
- eors r4, r0
- ands r4, r1
- ldrb r0, [r2, 0x7]
- bics r4, r0
- mov r8, r4
- strb r1, [r3, 0xC]
- cmp r4, 0
- beq _080FE45E
- strh r4, [r3, 0x14]
- movs r0, 0x10
- movs r1, 0x1
- str r3, [sp, 0x4]
- bl sub_80FE7F0
- ldr r3, [sp, 0x4]
-_080FE45E:
- movs r0, 0
- str r0, [sp]
- movs r6, 0
- adds r7, r3, 0
- movs r1, 0x24
- adds r1, r3
- mov r9, r1
-_080FE46C:
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r6
- lsrs r4, r0, 24
- movs r5, 0
- mov r0, r8
- ands r0, r4
- cmp r0, 0
- beq _080FE4BE
- lsls r1, r6, 1
- adds r0, r7, 0
- adds r0, 0x28
- adds r1, r0
- ldrh r0, [r7, 0x26]
- strh r0, [r1]
- mov r2, r9
- ldrb r1, [r2]
- adds r0, r4, 0
- orrs r0, r1
- strb r0, [r2]
- adds r6, 0x1
- mov r10, r6
- b _080FE574
- .align 2, 0
-_080FE49C: .4byte gUnknown_3005E10
-_080FE4A0: .4byte gRfuLinkStatus
-_080FE4A4:
- ldrb r1, [r7]
- adds r0, r4, 0
- orrs r0, r1
- strb r0, [r7]
- ldrb r0, [r7, 0x1]
- adds r0, 0x1
- strb r0, [r7, 0x1]
- ldr r0, [sp]
- orrs r0, r4
- str r0, [sp]
- movs r0, 0x1
- orrs r5, r0
- b _080FE508
-_080FE4BE:
- mov r1, r9
- ldrb r0, [r1]
- ands r0, r4
- adds r2, r6, 0x1
- mov r10, r2
- cmp r0, 0
- beq _080FE574
- ldr r0, _080FE518 @ =gRfuSlotStatusNI
- lsls r1, r6, 2
- adds r1, r0
- ldr r1, [r1]
- ldrh r0, [r1, 0x34]
- cmp r0, 0x46
- bne _080FE524
- adds r0, r1, 0
- adds r0, 0x61
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FE53C
- movs r5, 0x2
- ldr r3, [r3, 0x20]
- ldrh r2, [r3]
- ldr r0, _080FE51C @ =0x0000ffff
- cmp r2, r0
- beq _080FE508
- ldr r0, _080FE520 @ =gRfuLinkStatus
- ldr r0, [r0]
- lsls r1, r6, 5
- adds r0, r1
- ldrh r0, [r0, 0x18]
- ldr r1, _080FE51C @ =0x0000ffff
-_080FE4FC:
- cmp r0, r2
- beq _080FE4A4
- adds r3, 0x2
- ldrh r2, [r3]
- cmp r2, r1
- bne _080FE4FC
-_080FE508:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- bne _080FE53C
- movs r0, 0x4
- orrs r5, r0
- b _080FE53C
- .align 2, 0
-_080FE518: .4byte gRfuSlotStatusNI
-_080FE51C: .4byte 0x0000ffff
-_080FE520: .4byte gRfuLinkStatus
-_080FE524:
- lsls r1, r6, 1
- adds r0, r3, 0
- adds r0, 0x28
- adds r1, r0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldr r1, _080FE5F8 @ =0x0000ffff
- ands r0, r1
- cmp r0, 0
- bne _080FE53C
- movs r5, 0x6
-_080FE53C:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _080FE562
- mov r2, r9
- ldrb r0, [r2]
- bics r0, r4
- movs r2, 0
- mov r1, r9
- strb r0, [r1]
- lsls r0, r6, 1
- adds r1, r7, 0
- adds r1, 0x28
- adds r0, r1
- strh r2, [r0]
- movs r0, 0x8
- adds r1, r6, 0
- bl rfu_clearSlot
-_080FE562:
- movs r0, 0x4
- ands r5, r0
- ldr r3, _080FE5FC @ =gUnknown_3005E10
- cmp r5, 0
- beq _080FE574
- ldrb r1, [r7, 0xD]
- adds r0, r4, 0
- orrs r0, r1
- strb r0, [r7, 0xD]
-_080FE574:
- mov r2, r10
- lsls r0, r2, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080FE580
- b _080FE46C
-_080FE580:
- ldr r4, [sp]
- cmp r4, 0
- beq _080FE592
- ldr r0, _080FE5FC @ =gUnknown_3005E10
- strh r4, [r0, 0x14]
- movs r0, 0x11
- movs r1, 0x1
- bl sub_80FE7F0
-_080FE592:
- ldr r1, _080FE5FC @ =gUnknown_3005E10
- ldrb r0, [r1, 0xD]
- cmp r0, 0
- beq _080FE5CE
- movs r5, 0x1
- ldr r0, _080FE600 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- beq _080FE5B2
- ldrb r0, [r1, 0x3]
- ldrb r1, [r1]
- ands r0, r1
- cmp r0, r1
- beq _080FE5B2
- movs r5, 0
-_080FE5B2:
- cmp r5, 0
- beq _080FE5CE
- ldr r4, _080FE5FC @ =gUnknown_3005E10
- ldrb r0, [r4, 0xD]
- bl sub_80FE818
- ldrb r0, [r4, 0xD]
- movs r1, 0
- strh r0, [r4, 0x14]
- strb r1, [r4, 0xD]
- movs r0, 0x12
- movs r1, 0x1
- bl sub_80FE7F0
-_080FE5CE:
- ldr r0, _080FE5FC @ =gUnknown_3005E10
- adds r1, r0, 0
- adds r1, 0x24
- ldrb r1, [r1]
- adds r3, r0, 0
- cmp r1, 0
- bne _080FE62A
- ldrb r0, [r3, 0x4]
- cmp r0, 0x8
- bne _080FE62A
- ldrb r0, [r3, 0x7]
- cmp r0, 0
- bne _080FE604
- strb r0, [r3, 0x5]
- strb r0, [r3, 0x4]
- movs r0, 0x14
- movs r1, 0
- bl sub_80FE7F0
- b _080FE62A
- .align 2, 0
-_080FE5F8: .4byte 0x0000ffff
-_080FE5FC: .4byte gUnknown_3005E10
-_080FE600: .4byte gRfuLinkStatus
-_080FE604:
- cmp r0, 0x2
- bne _080FE610
- movs r0, 0x3
- strb r0, [r3, 0x7]
- movs r0, 0x9
- b _080FE616
-_080FE610:
- movs r0, 0x1
- strb r0, [r3, 0x7]
- movs r0, 0x5
-_080FE616:
- strb r0, [r3, 0x4]
- ldrb r0, [r3]
- cmp r0, 0
- beq _080FE62A
- movs r0, 0
- strh r0, [r3, 0x1A]
- movs r0, 0x8
- strb r0, [r3, 0x7]
- movs r0, 0x5
- strb r0, [r3, 0x4]
-_080FE62A:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FE418
-
- thumb_func_start sub_80FE63C
-sub_80FE63C: @ 80FE63C
- push {r4-r6,lr}
- ldr r1, _080FE6E0 @ =0x04000208
- ldrh r0, [r1]
- adds r6, r0, 0
- movs r0, 0
- strh r0, [r1]
- ldr r4, _080FE6E4 @ =gUnknown_3005E10
- ldrb r0, [r4, 0x4]
- cmp r0, 0xF
- bne _080FE6A0
- ldrb r1, [r4, 0x10]
- lsls r1, 1
- adds r5, r4, 0
- adds r5, 0x28
- adds r1, r5
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080FE676
- ldr r1, _080FE6E8 @ =gRfuSlotStatusNI
- ldrb r0, [r4, 0x10]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x27
- bne _080FE6A0
-_080FE676:
- bl sub_80FEB14
- movs r0, 0x18
- strb r0, [r4, 0x4]
- ldrb r1, [r4, 0x10]
- movs r0, 0x4
- bl rfu_clearSlot
- adds r2, r4, 0
- adds r2, 0x24
- movs r1, 0x1
- ldrb r0, [r4, 0x10]
- lsls r1, r0
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldrb r0, [r4, 0x10]
- lsls r0, 1
- adds r0, r5
- movs r1, 0
- strh r1, [r0]
-_080FE6A0:
- ldr r0, _080FE6E0 @ =0x04000208
- strh r6, [r0]
- ldr r5, _080FE6E4 @ =gUnknown_3005E10
- ldrb r0, [r5, 0x4]
- cmp r0, 0x18
- bne _080FE6DA
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- bne _080FE6B6
- bl sub_80FEB14
-_080FE6B6:
- ldrb r0, [r5, 0x2]
- adds r4, r0, 0
- cmp r4, 0
- bne _080FE6DA
- strb r4, [r5, 0x5]
- strb r4, [r5, 0x4]
- ldr r0, _080FE6EC @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- orrs r0, r1
- bl sub_80FE818
- strh r4, [r5, 0x14]
- movs r0, 0x25
- movs r1, 0x1
- bl sub_80FE7F0
-_080FE6DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE6E0: .4byte 0x04000208
-_080FE6E4: .4byte gUnknown_3005E10
-_080FE6E8: .4byte gRfuSlotStatusNI
-_080FE6EC: .4byte gRfuLinkStatus
- thumb_func_end sub_80FE63C
-
- thumb_func_start sub_80FE6F0
-sub_80FE6F0: @ 80FE6F0
- push {r4,r5,lr}
- ldr r5, _080FE744 @ =gUnknown_3005E10
- ldrb r0, [r5, 0x4]
- cmp r0, 0xF
- bne _080FE73C
- ldr r1, _080FE748 @ =gRfuSlotStatusNI
- ldrb r2, [r5, 0x10]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x26
- bne _080FE73C
- movs r4, 0
- strb r4, [r5, 0x5]
- strb r4, [r5, 0x4]
- movs r0, 0x4
- adds r1, r2, 0
- bl rfu_clearSlot
- adds r2, r5, 0
- adds r2, 0x24
- movs r1, 0x1
- ldrb r0, [r5, 0x10]
- lsls r1, r0
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldrb r0, [r5, 0x10]
- lsls r0, 1
- adds r1, r5, 0
- adds r1, 0x28
- adds r0, r1
- strh r4, [r0]
- movs r0, 0x24
- movs r1, 0
- bl sub_80FE7F0
-_080FE73C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE744: .4byte gUnknown_3005E10
-_080FE748: .4byte gRfuSlotStatusNI
- thumb_func_end sub_80FE6F0
-
- thumb_func_start sub_80FE74C
-sub_80FE74C: @ 80FE74C
- push {lr}
- ldr r1, _080FE774 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x6]
- cmp r0, 0
- bne _080FE770
- ldrb r0, [r1, 0xA]
- cmp r0, 0x1
- bne _080FE770
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x11]
- ldrb r0, [r1, 0x5]
- strb r0, [r1, 0x12]
- movs r0, 0x10
- strb r0, [r1, 0x4]
- movs r0, 0x11
- strb r0, [r1, 0x5]
- movs r0, 0x2
- strb r0, [r1, 0xA]
-_080FE770:
- pop {r0}
- bx r0
- .align 2, 0
-_080FE774: .4byte gUnknown_3005E10
- thumb_func_end sub_80FE74C
-
- thumb_func_start sub_80FE778
-sub_80FE778: @ 80FE778
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r5, 0
- ldr r1, _080FE7E4 @ =gRfuLinkStatus
- ldr r0, [r1]
- ldrb r0, [r0, 0x8]
- cmp r6, r0
- bcs _080FE7D4
- mov r8, r0
- ldr r0, _080FE7E8 @ =gUnknown_3005E10
- mov r10, r0
- mov r9, r1
-_080FE798:
- mov r1, r10
- ldr r3, [r1, 0x20]
- ldrh r2, [r3]
- adds r0, r5, 0x1
- mov r12, r0
- ldr r1, _080FE7EC @ =0x0000ffff
- cmp r2, r1
- beq _080FE7CA
- mov r1, r9
- ldr r0, [r1]
- lsls r1, r5, 5
- adds r0, r1
- ldrh r4, [r0, 0x18]
- ldr r7, _080FE7EC @ =0x0000ffff
- movs r1, 0x1
- lsls r1, r5
-_080FE7B8:
- cmp r4, r2
- bne _080FE7C2
- orrs r6, r1
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_080FE7C2:
- adds r3, 0x2
- ldrh r2, [r3]
- cmp r2, r7
- bne _080FE7B8
-_080FE7CA:
- mov r1, r12
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, r8
- bcc _080FE798
-_080FE7D4:
- adds r0, r6, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FE7E4: .4byte gRfuLinkStatus
-_080FE7E8: .4byte gUnknown_3005E10
-_080FE7EC: .4byte 0x0000ffff
- thumb_func_end sub_80FE778
-
- thumb_func_start sub_80FE7F0
-sub_80FE7F0: @ 80FE7F0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _080FE814 @ =gUnknown_3005E10
- ldr r2, [r4, 0x40]
- cmp r2, 0
- beq _080FE806
- bl _call_via_r2
-_080FE806:
- movs r0, 0
- strh r0, [r4, 0x16]
- strh r0, [r4, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE814: .4byte gUnknown_3005E10
- thumb_func_end sub_80FE7F0
-
- thumb_func_start sub_80FE818
-sub_80FE818: @ 80FE818
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080FE838 @ =gUnknown_3005E10
- ldrb r5, [r4, 0xE]
- movs r1, 0x1
- strb r1, [r4, 0xE]
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- strb r5, [r4, 0xE]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE838: .4byte gUnknown_3005E10
- thumb_func_end sub_80FE818
-
- thumb_func_start sub_80FE83C
-sub_80FE83C: @ 80FE83C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080FE908 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _080FE884
- movs r4, 0
-_080FE84E:
- ldr r1, _080FE90C @ =gRfuSlotStatusNI
- lsls r0, r4, 2
- adds r0, r1
- ldr r2, [r0]
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE87A
- ldrb r1, [r2, 0x1A]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE87A
- adds r2, r1, 0
- bics r2, r5
- movs r0, 0x20
- adds r1, r4, 0
- bl rfu_changeSendTarget
-_080FE87A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080FE84E
-_080FE884:
- ldr r0, _080FE908 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- cmp r0, 0
- beq _080FE8C2
- movs r4, 0
-_080FE890:
- ldr r1, _080FE90C @ =gRfuSlotStatusNI
- lsls r0, r4, 2
- adds r0, r1
- ldr r2, [r0]
- ldrh r0, [r2, 0x34]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE8B8
- adds r0, r2, 0
- adds r0, 0x4E
- ldrb r0, [r0]
- ands r0, r5
- cmp r0, 0
- beq _080FE8B8
- adds r0, r4, 0
- bl rfu_NI_stopReceivingData
-_080FE8B8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080FE890
-_080FE8C2:
- ldr r0, _080FE908 @ =gRfuLinkStatus
- ldr r3, [r0]
- ldrb r2, [r3, 0x6]
- cmp r2, 0
- beq _080FE900
- mvns r1, r5
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0x6]
- movs r4, 0
- ldr r7, _080FE910 @ =gRfuSlotStatusUNI
- ldr r6, _080FE914 @ =0x00008024
-_080FE8DA:
- lsls r0, r4, 2
- adds r0, r7
- ldr r2, [r0]
- ldrh r0, [r2]
- cmp r0, r6
- bne _080FE8F6
- ldrb r3, [r2, 0x3]
- adds r0, r5, 0
- ands r0, r3
- cmp r0, 0
- beq _080FE8F6
- adds r0, r1, 0
- ands r0, r3
- strb r0, [r2, 0x3]
-_080FE8F6:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080FE8DA
-_080FE900:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE908: .4byte gRfuLinkStatus
-_080FE90C: .4byte gRfuSlotStatusNI
-_080FE910: .4byte gRfuSlotStatusUNI
-_080FE914: .4byte 0x00008024
- thumb_func_end sub_80FE83C
-
- thumb_func_start sub_80FE918
-sub_80FE918: @ 80FE918
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080FEA04 @ =gUnknown_3005E10
- ldrh r0, [r0, 0x18]
- cmp r0, 0
- beq _080FE9F4
- ldr r0, _080FEA08 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _080FE9B8
- movs r6, 0
-_080FE938:
- ldr r3, _080FEA0C @ =gRfuSlotStatusNI
- lsls r2, r6, 2
- adds r0, r2, r3
- ldr r0, [r0]
- ldrh r1, [r0]
- movs r4, 0x80
- lsls r4, 8
- adds r0, r4, 0
- ands r1, r0
- adds r7, r2, 0
- adds r0, r6, 0x1
- mov r9, r0
- cmp r1, 0
- beq _080FE9AE
- movs r5, 0
- movs r4, 0
- movs r1, 0x1
- mov r8, r1
- mov r10, r3
-_080FE95E:
- adds r0, r7, r3
- ldr r0, [r0]
- ldrb r0, [r0, 0x1A]
- asrs r0, r4
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _080FE988
- lsls r0, r4, 2
- adds r0, r3
- ldr r0, [r0]
- ldr r1, _080FEA04 @ =gUnknown_3005E10
- ldrh r0, [r0, 0x2]
- ldrh r1, [r1, 0x18]
- cmp r0, r1
- bls _080FE988
- mov r0, r8
- lsls r0, r4
- orrs r5, r0
- lsls r0, r5, 24
- lsrs r5, r0, 24
-_080FE988:
- cmp r5, 0
- beq _080FE9A4
- mov r1, r10
- adds r0, r7, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1A]
- adds r2, r5, 0
- eors r2, r0
- movs r0, 0x20
- adds r1, r6, 0
- str r3, [sp]
- bl rfu_changeSendTarget
- ldr r3, [sp]
-_080FE9A4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080FE95E
-_080FE9AE:
- mov r3, r9
- lsls r0, r3, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _080FE938
-_080FE9B8:
- ldr r0, _080FEA08 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- cmp r0, 0
- beq _080FE9F4
- movs r6, 0
-_080FE9C4:
- ldr r1, _080FEA0C @ =gRfuSlotStatusNI
- lsls r0, r6, 2
- adds r0, r1
- ldr r2, [r0]
- ldrh r0, [r2, 0x34]
- movs r4, 0x80
- lsls r4, 8
- adds r1, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE9EA
- ldr r1, _080FEA04 @ =gUnknown_3005E10
- ldrh r0, [r2, 0x36]
- ldrh r1, [r1, 0x18]
- cmp r0, r1
- bls _080FE9EA
- adds r0, r6, 0
- bl rfu_NI_stopReceivingData
-_080FE9EA:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _080FE9C4
-_080FE9F4:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FEA04: .4byte gUnknown_3005E10
-_080FEA08: .4byte gRfuLinkStatus
-_080FEA0C: .4byte gRfuSlotStatusNI
- thumb_func_end sub_80FE918
-
- thumb_func_start sub_80FEA10
-sub_80FEA10: @ 80FEA10
- push {lr}
- ldr r1, _080FEA20 @ =gUnknown_3005E10
- str r0, [r1, 0x44]
- ldr r0, _080FEA24 @ =sub_80FE394
- bl rfu_setMSCCallback
- pop {r0}
- bx r0
- .align 2, 0
-_080FEA20: .4byte gUnknown_3005E10
-_080FEA24: .4byte sub_80FE394
- thumb_func_end sub_80FEA10
-
- thumb_func_start sub_80FEA28
-sub_80FEA28: @ 80FEA28
- ldr r1, _080FEA30 @ =gUnknown_3005E10
- str r0, [r1, 0x40]
- bx lr
- .align 2, 0
-_080FEA30: .4byte gUnknown_3005E10
- thumb_func_end sub_80FEA28
-
- thumb_func_start sub_80FEA34
-sub_80FEA34: @ 80FEA34
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _080FEA58 @ =gUnknown_3005E10
- ldrb r1, [r0, 0x9]
- adds r3, r0, 0
- cmp r1, 0
- beq _080FEA5C
- cmp r4, 0
- bne _080FEA5C
- adds r0, 0x30
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FEA5C
- movs r0, 0x5
- b _080FEA6C
- .align 2, 0
-_080FEA58: .4byte gUnknown_3005E10
-_080FEA5C:
- ldr r2, _080FEA74 @ =0x04000208
- ldrh r1, [r2]
- movs r0, 0
- strh r0, [r2]
- strb r4, [r3, 0x9]
- strh r5, [r3, 0x32]
- strh r1, [r2]
- movs r0, 0
-_080FEA6C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FEA74: .4byte 0x04000208
- thumb_func_end sub_80FEA34
-
- thumb_func_start sub_80FEA78
-sub_80FEA78: @ 80FEA78
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080FEA94 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r0, 0x4]
- ldrb r0, [r0, 0x5]
- orrs r0, r1
- cmp r0, 0
- bne _080FEA9C
- ldr r0, _080FEA98 @ =gUnknown_3005E10
- strh r2, [r0, 0x18]
- movs r0, 0
- b _080FEAAC
- .align 2, 0
-_080FEA94: .4byte gRfuLinkStatus
-_080FEA98: .4byte gUnknown_3005E10
-_080FEA9C:
- ldr r1, _080FEAB0 @ =gUnknown_3005E10
- movs r0, 0x6
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x6
-_080FEAAC:
- pop {r1}
- bx r1
- .align 2, 0
-_080FEAB0: .4byte gUnknown_3005E10
- thumb_func_end sub_80FEA78
-
- thumb_func_start sub_80FEAB4
-sub_80FEAB4: @ 80FEAB4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r1, _080FEADC @ =gUnknown_3005E10
- ldrb r0, [r1, 0x4]
- subs r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _080FEAE0
- movs r0, 0x7
- strh r0, [r1, 0x14]
- movs r0, 0xF3
- movs r1, 0x1
- bl sub_80FE7F0
- movs r0, 0x7
- b _080FEAEE
- .align 2, 0
-_080FEADC: .4byte gUnknown_3005E10
-_080FEAE0:
- cmp r2, 0
- beq _080FEAEA
- movs r0, 0x1
- strb r0, [r1, 0xB]
- b _080FEAEC
-_080FEAEA:
- strb r3, [r1, 0xB]
-_080FEAEC:
- movs r0, 0
-_080FEAEE:
- pop {r1}
- bx r1
- thumb_func_end sub_80FEAB4
-
- thumb_func_start sub_80FEAF4
-sub_80FEAF4: @ 80FEAF4
- push {lr}
- ldr r1, _080FEB10 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _080FEB0C
- ldrb r0, [r1, 0x2]
- movs r0, 0
- strb r0, [r1, 0x2]
- movs r0, 0x45
- movs r1, 0
- bl sub_80FE7F0
-_080FEB0C:
- pop {r0}
- bx r0
- .align 2, 0
-_080FEB10: .4byte gUnknown_3005E10
- thumb_func_end sub_80FEAF4
-
- thumb_func_start sub_80FEB14
-sub_80FEB14: @ 80FEB14
- push {lr}
- ldr r1, _080FEB28 @ =gUnknown_3005E10
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- bne _080FEB2C
- movs r0, 0x45
- movs r1, 0
- bl sub_80FE7F0
- b _080FEB38
- .align 2, 0
-_080FEB28: .4byte gUnknown_3005E10
-_080FEB2C:
- ldrb r0, [r1, 0x2]
- cmp r0, 0x1
- bne _080FEB38
- ldrb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x2]
-_080FEB38:
- pop {r0}
- bx r0
- thumb_func_end sub_80FEB14
-
- thumb_func_start sub_80FEB3C
-sub_80FEB3C: @ 80FEB3C
- push {lr}
- ldr r0, _080FEB5C @ =gUnknown_3005E10
- ldrb r1, [r0, 0x7]
- adds r2, r0, 0
- cmp r1, 0
- beq _080FEBA6
- ldrb r0, [r2, 0x4]
- subs r0, 0x5
- cmp r0, 0x6
- bhi _080FEBA6
- lsls r0, 2
- ldr r1, _080FEB60 @ =_080FEB64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FEB5C: .4byte gUnknown_3005E10
-_080FEB60: .4byte _080FEB64
- .align 2, 0
-_080FEB64:
- .4byte _080FEB80
- .4byte _080FEB88
- .4byte _080FEB92
- .4byte _080FEB92
- .4byte _080FEB98
- .4byte _080FEB98
- .4byte _080FEB9E
-_080FEB80:
- movs r0, 0x3
- strb r0, [r2, 0x7]
- movs r0, 0x9
- b _080FEBA4
-_080FEB88:
- movs r0, 0x2
- strb r0, [r2, 0x7]
- movs r0, 0x1
- strh r0, [r2, 0x1A]
- b _080FEBA6
-_080FEB92:
- movs r0, 0x2
- strb r0, [r2, 0x7]
- b _080FEBA6
-_080FEB98:
- movs r0, 0x28
- strh r0, [r2, 0x1A]
- b _080FEBA6
-_080FEB9E:
- movs r0, 0x28
- strh r0, [r2, 0x1A]
- movs r0, 0xA
-_080FEBA4:
- strb r0, [r2, 0x4]
-_080FEBA6:
- pop {r0}
- bx r0
- thumb_func_end sub_80FEB3C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
deleted file mode 100644
index 10d4fd03d..000000000
--- a/asm/link_rfu_2.s
+++ /dev/null
@@ -1,10188 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_87
-nullsub_87: @ 80F85F0
- bx lr
- thumb_func_end nullsub_87
-
- thumb_func_start nullsub_88
-nullsub_88: @ 80F85F4
- bx lr
- thumb_func_end nullsub_88
-
- thumb_func_start sub_80F85F8
-sub_80F85F8: @ 80F85F8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- ldr r6, _080F869C @ =gUnknown_3005450
- adds r5, r6, 0
- adds r5, 0xEE
- ldrb r4, [r5]
- mov r0, sp
- movs r7, 0
- strh r7, [r0]
- ldr r2, _080F86A0 @ =0x010004d6
- adds r1, r6, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r6, 0xC]
- ldrb r0, [r5]
- strb r4, [r5]
- ldrb r0, [r5]
- cmp r0, 0x4
- beq _080F862A
- ldrb r0, [r5]
- strb r7, [r5]
-_080F862A:
- mov r7, sp
- adds r7, 0x2
- add r0, sp, 0x4
- mov r8, r0
- movs r0, 0x6
- add r0, sp
- mov r9, r0
- adds r5, r6, 0
- adds r5, 0x80
- movs r4, 0x4
-_080F863E:
- adds r0, r5, 0
- bl sub_80F9CB4
- adds r5, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _080F863E
- movs r5, 0
- ldr r4, _080F86A4 @ =gUnknown_30054BC
- adds r0, r4, 0
- bl sub_80F9CB4
- adds r0, r4, 0
- adds r0, 0xB8
- bl sub_80FC478
- ldr r0, _080F86A8 @ =0x00000634
- adds r4, r0
- adds r0, r4, 0
- bl sub_80FC4D4
- strh r5, [r7]
- ldr r1, _080F86AC @ =gSendCmd
- ldr r2, _080F86B0 @ =0x01000008
- adds r0, r7, 0
- bl CpuSet
- mov r0, r8
- strh r5, [r0]
- ldr r1, _080F86B4 @ =gRecvCmds
- ldr r2, _080F86B8 @ =0x01000028
- bl CpuSet
- mov r0, r9
- strh r5, [r0]
- ldr r1, _080F86BC @ =gLinkPlayers
- ldr r2, _080F86C0 @ =0x01000046
- bl CpuSet
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F869C: .4byte gUnknown_3005450
-_080F86A0: .4byte 0x010004d6
-_080F86A4: .4byte gUnknown_30054BC
-_080F86A8: .4byte 0x00000634
-_080F86AC: .4byte gSendCmd
-_080F86B0: .4byte 0x01000008
-_080F86B4: .4byte gRecvCmds
-_080F86B8: .4byte 0x01000028
-_080F86BC: .4byte gLinkPlayers
-_080F86C0: .4byte 0x01000046
- thumb_func_end sub_80F85F8
-
- thumb_func_start InitRFU
-InitRFU: @ 80F86C4
- push {r4-r6,lr}
- ldr r4, _080F86EC @ =gIntrTable
- ldr r5, [r4, 0x4]
- ldr r6, [r4, 0x8]
- bl sub_80F86F4
- bl rfu_REQ_stopMode
- bl rfu_waitREQComplete
- ldr r1, _080F86F0 @ =0x04000208
- movs r0, 0
- strh r0, [r1]
- str r5, [r4, 0x4]
- str r6, [r4, 0x8]
- movs r0, 0x1
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F86EC: .4byte gIntrTable
-_080F86F0: .4byte 0x04000208
- thumb_func_end InitRFU
-
- thumb_func_start sub_80F86F4
-sub_80F86F4: @ 80F86F4
- push {r4,lr}
- ldr r0, _080F8728 @ =gRfuAPIBuffer
- ldr r1, _080F872C @ =0x00000e64
- ldr r4, _080F8730 @ =gIntrTable + 0x4
- adds r2, r4, 0
- movs r3, 0x1
- bl rfu_initializeAPI
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080F8722
- ldr r0, _080F8734 @ =gLinkType
- strh r1, [r0]
- movs r0, 0
- bl sub_80FB128
- bl sub_80F85F8
- adds r1, r4, 0x4
- movs r0, 0x3
- bl rfu_setTimerInterrupt
-_080F8722:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8728: .4byte gRfuAPIBuffer
-_080F872C: .4byte 0x00000e64
-_080F8730: .4byte gIntrTable + 0x4
-_080F8734: .4byte gLinkType
- thumb_func_end sub_80F86F4
-
- thumb_func_start sub_80F8738
-sub_80F8738: @ 80F8738
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80FA738
- ldr r0, _080F8758 @ =gUnknown_3005450
- ldrh r0, [r0, 0x4]
- cmp r0, 0x12
- bls _080F874C
- b _080F8852
-_080F874C:
- lsls r0, 2
- ldr r1, _080F875C @ =_080F8760
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F8758: .4byte gUnknown_3005450
-_080F875C: .4byte _080F8760
- .align 2, 0
-_080F8760:
- .4byte _080F87AC
- .4byte _080F8852
- .4byte _080F87D4
- .4byte _080F8852
- .4byte _080F8804
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8852
- .4byte _080F8818
-_080F87AC:
- ldr r0, _080F87C8 @ =gUnknown_203ABF0
- bl sub_80FD4B0
- ldr r0, _080F87CC @ =gUnknown_3005450
- movs r2, 0x1
- strh r2, [r0, 0x4]
- ldr r1, _080F87D0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0xA]
- b _080F8852
- .align 2, 0
-_080F87C8: .4byte gUnknown_203ABF0
-_080F87CC: .4byte gUnknown_3005450
-_080F87D0: .4byte gTasks
-_080F87D4:
- ldr r4, _080F87F8 @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- ldr r3, _080F87FC @ =gUnknown_843EC8C
- movs r1, 0
- movs r2, 0xF0
- bl sub_80FD538
- movs r0, 0x3
- strh r0, [r4, 0x4]
- ldr r1, _080F8800 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x6
- strh r1, [r0, 0xA]
- b _080F8852
- .align 2, 0
-_080F87F8: .4byte gUnknown_3005450
-_080F87FC: .4byte gUnknown_843EC8C
-_080F8800: .4byte gTasks
-_080F8804:
- movs r0, 0
- bl sub_80FD760
- ldr r1, _080F8814 @ =gUnknown_3005450
- movs r0, 0x5
- strh r0, [r1, 0x4]
- b _080F8852
- .align 2, 0
-_080F8814: .4byte gUnknown_3005450
-_080F8818:
- ldr r4, _080F8858 @ =gUnknown_3005450
- ldr r0, _080F885C @ =0x00000993
- adds r1, r4, r0
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F8860 @ =sub_80F8DA8
- bl sub_80FEA10
- bl sub_80F8AA4
- bl sub_80F8AEC
- movs r0, 0x14
- strh r0, [r4, 0x4]
- ldr r1, _080F8864 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- strh r1, [r0, 0xA]
- ldr r0, _080F8868 @ =sub_80FA834
- movs r1, 0x5
- bl CreateTask
- adds r0, r5, 0
- bl DestroyTask
-_080F8852:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8858: .4byte gUnknown_3005450
-_080F885C: .4byte 0x00000993
-_080F8860: .4byte sub_80F8DA8
-_080F8864: .4byte gTasks
-_080F8868: .4byte sub_80FA834
- thumb_func_end sub_80F8738
-
- thumb_func_start sub_80F886C
-sub_80F886C: @ 80F886C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080F8878 @ =gUnknown_843EC51
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080F8878: .4byte gUnknown_843EC51
- thumb_func_end sub_80F886C
-
- thumb_func_start sub_80F887C
-sub_80F887C: @ 80F887C
- push {r4-r7,lr}
- adds r2, r0, 0
- adds r5, r1, 0
- movs r4, 0x1
- adds r1, r2, 0
- movs r6, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _080F88BC
- movs r3, 0
- movs r5, 0x1
- ldr r1, _080F88B8 @ =gUnknown_3005DE6
-_080F8896:
- adds r0, r2, 0
- ands r0, r5
- cmp r0, 0
- beq _080F88A8
- adds r0, r3, r1
- strb r4, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080F88A8:
- asrs r2, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080F8896
- b _080F8932
- .align 2, 0
-_080F88B8: .4byte gUnknown_3005DE6
-_080F88BC:
- movs r3, 0
- mvns r0, r1
- mov r12, r0
- movs r7, 0x1
- ldr r4, _080F8938 @ =gUnknown_3005DE6
-_080F88C6:
- adds r2, r1, 0
- ands r2, r7
- cmp r2, 0
- bne _080F88D2
- adds r0, r3, r4
- strb r2, [r0]
-_080F88D2:
- asrs r1, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080F88C6
- movs r4, 0x4
- ldr r0, _080F8938 @ =gUnknown_3005DE6
- ldrb r7, [r0]
-_080F88E4:
- movs r3, 0
- subs r1, r4, 0x1
- cmp r7, r4
- beq _080F8900
- ldr r2, _080F8938 @ =gUnknown_3005DE6
-_080F88EE:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bhi _080F8900
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, r4
- bne _080F88EE
-_080F8900:
- cmp r3, 0x4
- bne _080F8906
- adds r6, r4, 0
-_080F8906:
- lsls r0, r1, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080F88E4
- mov r0, r12
- ands r5, r0
- movs r3, 0
- movs r2, 0x1
- ldr r1, _080F8938 @ =gUnknown_3005DE6
-_080F8918:
- adds r0, r5, 0
- ands r0, r2
- cmp r0, 0
- beq _080F8926
- adds r0, r3, r1
- strb r6, [r0]
- adds r6, 0x1
-_080F8926:
- asrs r5, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080F8918
-_080F8932:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8938: .4byte gUnknown_3005DE6
- thumb_func_end sub_80F887C
-
- thumb_func_start sub_80F893C
-sub_80F893C: @ 80F893C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080F8958 @ =gUnknown_3005450
- ldrh r3, [r0, 0x4]
- adds r7, r0, 0
- cmp r3, 0xC
- bls _080F894E
- b _080F8A8A
-_080F894E:
- lsls r0, r3, 2
- ldr r1, _080F895C @ =_080F8960
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F8958: .4byte gUnknown_3005450
-_080F895C: .4byte _080F8960
- .align 2, 0
-_080F8960:
- .4byte _080F8994
- .4byte _080F8A8A
- .4byte _080F8A8A
- .4byte _080F8A8A
- .4byte _080F8A8A
- .4byte _080F8A8A
- .4byte _080F89AC
- .4byte _080F8A8A
- .4byte _080F8A8A
- .4byte _080F89D4
- .4byte _080F8A8A
- .4byte _080F89E8
- .4byte _080F8A2C
-_080F8994:
- ldr r0, _080F89A4 @ =gUnknown_843EBB4
- bl sub_80FD4B0
- ldr r0, _080F89A8 @ =gUnknown_3005450
- movs r2, 0x1
- strh r2, [r0, 0x4]
- b _080F89BC
- .align 2, 0
-_080F89A4: .4byte gUnknown_843EBB4
-_080F89A8: .4byte gUnknown_3005450
-_080F89AC:
- ldrb r0, [r7, 0xC]
- ldr r3, _080F89CC @ =gUnknown_843EC8C
- movs r1, 0
- movs r2, 0xF0
- bl sub_80FD538
- movs r2, 0x7
- strh r2, [r7, 0x4]
-_080F89BC:
- ldr r1, _080F89D0 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0xA]
- b _080F8A8A
- .align 2, 0
-_080F89CC: .4byte gUnknown_843EC8C
-_080F89D0: .4byte gTasks
-_080F89D4:
- ldr r0, _080F89E4 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r0, 0xA
- strh r0, [r1, 0xA]
- b _080F8A8A
- .align 2, 0
-_080F89E4: .4byte gTasks
-_080F89E8:
- bl sub_80FA788
- cmp r0, 0x6
- beq _080F8A0C
- cmp r0, 0x6
- bgt _080F89FA
- cmp r0, 0x5
- beq _080F8A00
- b _080F8A8A
-_080F89FA:
- cmp r0, 0x9
- beq _080F8A0C
- b _080F8A8A
-_080F8A00:
- ldr r1, _080F8A08 @ =gUnknown_3005450
- movs r0, 0xC
- strh r0, [r1, 0x4]
- b _080F8A8A
- .align 2, 0
-_080F8A08: .4byte gUnknown_3005450
-_080F8A0C:
- bl sub_80FEB14
- ldr r0, _080F8A24 @ =gUnknown_3005450
- ldr r1, _080F8A28 @ =0x0000099c
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- adds r0, r6, 0
- bl DestroyTask
- b _080F8A8A
- .align 2, 0
-_080F8A24: .4byte gUnknown_3005450
-_080F8A28: .4byte 0x0000099c
-_080F8A2C:
- ldr r0, _080F8A90 @ =0x000008f6
- adds r4, r7, r0
- ldrb r0, [r4]
- movs r5, 0x80
- lsls r5, 17
- lsls r5, r0
- lsrs r5, 24
- ldrb r1, [r4]
- movs r0, 0xC
- bl rfu_clearSlot
- ldrb r1, [r4]
- ldr r0, _080F8A94 @ =0x000008f7
- adds r2, r7, r0
- movs r0, 0x10
- movs r3, 0x46
- bl rfu_setRecvBuffer
- adds r1, r7, 0
- adds r1, 0x4C
- adds r0, r5, 0
- movs r2, 0xE
- bl rfu_UNI_setSendData
- ldr r1, _080F8A98 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- strh r1, [r0, 0xA]
- adds r0, r6, 0
- bl DestroyTask
- ldr r4, _080F8A9C @ =gUnknown_203AC08
- ldrb r0, [r4, 0xF]
- cmp r0, 0
- bne _080F8A82
- bl sub_80FC208
- ldrb r0, [r4, 0xF]
- adds r0, 0x1
- strb r0, [r4, 0xF]
-_080F8A82:
- ldr r0, _080F8AA0 @ =sub_80FA834
- movs r1, 0x5
- bl CreateTask
-_080F8A8A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8A90: .4byte 0x000008f6
-_080F8A94: .4byte 0x000008f7
-_080F8A98: .4byte gTasks
-_080F8A9C: .4byte gUnknown_203AC08
-_080F8AA0: .4byte sub_80FA834
- thumb_func_end sub_80F893C
-
- thumb_func_start sub_80F8AA4
-sub_80F8AA4: @ 80F8AA4
- push {r4,r5,lr}
- ldr r0, _080F8AE4 @ =gUnknown_3005E10
- ldrb r5, [r0]
- movs r4, 0
-_080F8AAC:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _080F8AD0
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 1
- ldr r0, _080F8AE8 @ =gUnknown_3005464
- adds r2, r0
- movs r0, 0x10
- adds r1, r4, 0
- movs r3, 0xE
- bl rfu_setRecvBuffer
- movs r0, 0x3
- adds r1, r4, 0
- bl rfu_clearSlot
-_080F8AD0:
- lsrs r5, 1
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F8AAC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8AE4: .4byte gUnknown_3005E10
-_080F8AE8: .4byte gUnknown_3005464
- thumb_func_end sub_80F8AA4
-
- thumb_func_start sub_80F8AEC
-sub_80F8AEC: @ 80F8AEC
- push {r4-r6,lr}
- ldr r0, _080F8B28 @ =gUnknown_3005E10
- ldrb r5, [r0]
- ldr r4, _080F8B2C @ =gUnknown_3005D8F
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x46
- bl rfu_UNI_setSendData
- adds r0, r5, 0
- bl sub_80F886C
- ldr r1, _080F8B30 @ =0xfffff6c1
- adds r6, r4, r1
- adds r1, r4, 0
- adds r1, 0x53
- strb r0, [r1]
- adds r4, 0x5B
- strb r5, [r4]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_80F887C
- movs r0, 0x1
- strb r0, [r6, 0xC]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8B28: .4byte gUnknown_3005E10
-_080F8B2C: .4byte gUnknown_3005D8F
-_080F8B30: .4byte 0xfffff6c1
- thumb_func_end sub_80F8AEC
-
- thumb_func_start sub_80F8B34
-sub_80F8B34: @ 80F8B34
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x54
- bne _080F8B68
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080F8B68
- ldr r0, _080F8B80 @ =gUnknown_3005E10
- ldrb r0, [r0]
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
-_080F8B68:
- ldr r0, _080F8B84 @ =gUnknown_3005450
- ldrh r2, [r0, 0x4]
- adds r6, r0, 0
- cmp r2, 0x12
- bls _080F8B74
- b _080F8CE6
-_080F8B74:
- lsls r0, r2, 2
- ldr r1, _080F8B88 @ =_080F8B8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F8B80: .4byte gUnknown_3005E10
-_080F8B84: .4byte gUnknown_3005450
-_080F8B88: .4byte _080F8B8C
- .align 2, 0
-_080F8B8C:
- .4byte _080F8BD8
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8CE6
- .4byte _080F8C28
- .4byte _080F8C88
- .4byte _080F8CE6
- .4byte _080F8C9C
- .4byte _080F8C00
- .4byte _080F8CE6
-_080F8BD8:
- ldr r0, _080F8BF4 @ =gUnknown_203ABF0
- bl sub_80FD4B0
- ldr r0, _080F8BF8 @ =gUnknown_3005450
- movs r2, 0x1
- strh r2, [r0, 0x4]
- ldr r1, _080F8BFC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0xA]
- b _080F8CE6
- .align 2, 0
-_080F8BF4: .4byte gUnknown_203ABF0
-_080F8BF8: .4byte gUnknown_3005450
-_080F8BFC: .4byte gTasks
-_080F8C00:
- ldr r3, _080F8C1C @ =gUnknown_843EC8C
- movs r0, 0x2
- movs r1, 0
- movs r2, 0xF0
- bl sub_80FD538
- ldr r0, _080F8C20 @ =sub_80F8D20
- bl sub_80FEA10
- ldr r1, _080F8C24 @ =gUnknown_3005450
- movs r0, 0x12
- strh r0, [r1, 0x4]
- b _080F8CE6
- .align 2, 0
-_080F8C1C: .4byte gUnknown_843EC8C
-_080F8C20: .4byte sub_80F8D20
-_080F8C24: .4byte gUnknown_3005450
-_080F8C28:
- ldr r1, _080F8C6C @ =0x000008f6
- adds r0, r6, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r1
- lsrs r0, 24
- adds r1, r6, 0
- adds r1, 0x4C
- movs r2, 0xE
- bl rfu_UNI_setSendData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _080F8CE6
- strb r0, [r6, 0xC]
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, _080F8C70 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x16
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _080F8C78
- ldr r0, _080F8C74 @ =sub_80FACF0
- movs r1, 0x1
- bl CreateTask
- b _080F8CE6
- .align 2, 0
-_080F8C6C: .4byte 0x000008f6
-_080F8C70: .4byte gTasks
-_080F8C74: .4byte sub_80FACF0
-_080F8C78:
- ldr r0, _080F8C84 @ =sub_80FA834
- movs r1, 0x5
- bl CreateTask
- b _080F8CE6
- .align 2, 0
-_080F8C84: .4byte sub_80FA834
-_080F8C88:
- movs r0, 0
- bl sub_80FD760
- ldr r1, _080F8C98 @ =gUnknown_3005450
- movs r0, 0xF
- strh r0, [r1, 0x4]
- b _080F8CE6
- .align 2, 0
-_080F8C98: .4byte gUnknown_3005450
-_080F8C9C:
- ldr r0, _080F8CEC @ =0x00000993
- adds r1, r6, r0
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F8CF0 @ =sub_80F8DA8
- bl sub_80FEA10
- movs r0, 0x1
- bl sub_80FAFE0
- bl sub_80F8AA4
- bl sub_80F8AEC
- movs r0, 0x14
- strh r0, [r6, 0x4]
- ldr r1, _080F8CF4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- strh r1, [r0, 0xA]
- movs r4, 0x1
- strb r4, [r6, 0xC]
- ldr r0, _080F8CF8 @ =sub_80FA834
- movs r1, 0x5
- bl CreateTask
- movs r1, 0x9A
- lsls r1, 4
- adds r0, r6, r1
- strb r4, [r0]
- adds r0, r5, 0
- bl DestroyTask
-_080F8CE6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8CEC: .4byte 0x00000993
-_080F8CF0: .4byte sub_80F8DA8
-_080F8CF4: .4byte gTasks
-_080F8CF8: .4byte sub_80FA834
- thumb_func_end sub_80F8B34
-
- thumb_func_start sub_80F8CFC
-sub_80F8CFC: @ 80F8CFC
- push {lr}
- ldr r3, _080F8D10 @ =gUnknown_843EC8C
- movs r0, 0x1
- movs r1, 0
- movs r2, 0xF0
- bl sub_80FD538
- pop {r0}
- bx r0
- .align 2, 0
-_080F8D10: .4byte gUnknown_843EC8C
- thumb_func_end sub_80F8CFC
-
- thumb_func_start sub_80F8D14
-sub_80F8D14: @ 80F8D14
- push {lr}
- movs r0, 0
- bl sub_80FD760
- pop {r0}
- bx r0
- thumb_func_end sub_80F8D14
-
- thumb_func_start sub_80F8D20
-sub_80F8D20: @ 80F8D20
- push {r4,lr}
- ldr r0, _080F8D90 @ =gUnknown_3005450
- movs r2, 0
- movs r1, 0xD
- adds r0, 0x59
-_080F8D2A:
- strb r2, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _080F8D2A
- bl rfu_REQ_recvData
- bl rfu_waitREQComplete
- ldr r1, _080F8D94 @ =gRfuSlotStatusUNI
- ldr r3, _080F8D90 @ =gUnknown_3005450
- ldr r0, _080F8D98 @ =0x000008f6
- adds r4, r3, r0
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x12]
- cmp r0, 0
- beq _080F8D84
- ldr r2, _080F8D9C @ =0x00000988
- adds r1, r3, r2
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r1, 0x92
- lsls r1, 1
- adds r0, r3, r1
- ldr r2, _080F8DA0 @ =0x000008f7
- adds r1, r3, r2
- bl sub_80FC588
- ldr r1, _080F8DA4 @ =gUnknown_203AC08
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- bl sub_80F906C
- ldrb r0, [r4]
- bl rfu_UNI_readySendData
- ldrb r0, [r4]
- bl rfu_UNI_clearRecvNewDataFlag
-_080F8D84:
- movs r0, 0x1
- bl rfu_REQ_sendData_wrapper
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8D90: .4byte gUnknown_3005450
-_080F8D94: .4byte gRfuSlotStatusUNI
-_080F8D98: .4byte 0x000008f6
-_080F8D9C: .4byte 0x00000988
-_080F8DA0: .4byte 0x000008f7
-_080F8DA4: .4byte gUnknown_203AC08
- thumb_func_end sub_80F8D20
-
- thumb_func_start sub_80F8DA8
-sub_80F8DA8: @ 80F8DA8
- ldr r0, _080F8DB8 @ =gUnknown_3005450
- ldr r1, _080F8DBC @ =0x00000993
- adds r0, r1
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080F8DB8: .4byte gUnknown_3005450
-_080F8DBC: .4byte 0x00000993
- thumb_func_end sub_80F8DA8
-
- thumb_func_start sub_80F8DC0
-sub_80F8DC0: @ 80F8DC0
- push {r4-r6,lr}
- ldr r0, _080F8DE0 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080F8E64
- bl sub_80FD52C
- ldr r4, _080F8DE4 @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- cmp r0, 0x1
- bne _080F8DEC
- ldr r0, _080F8DE8 @ =sub_80F8738
- b _080F8DF2
- .align 2, 0
-_080F8DE0: .4byte gUnknown_203ADFA
-_080F8DE4: .4byte gUnknown_3005450
-_080F8DE8: .4byte sub_80F8738
-_080F8DEC:
- cmp r0, 0
- bne _080F8E14
- ldr r0, _080F8E10 @ =sub_80F893C
-_080F8DF2:
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F8E34
- adds r0, r4, 0
- adds r0, 0x67
- ldrb r0, [r0]
- bl DestroyTask
- bl sub_80F85F8
- b _080F8E34
- .align 2, 0
-_080F8E10: .4byte sub_80F893C
-_080F8E14:
- cmp r0, 0x2
- bne _080F8E34
- ldr r0, _080F8E6C @ =sub_80F8B34
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F8E34
- adds r0, r4, 0
- adds r0, 0x67
- ldrb r0, [r0]
- bl DestroyTask
- bl sub_80F85F8
-_080F8E34:
- movs r5, 0
- ldr r6, _080F8E70 @ =gUnknown_843ED88
-_080F8E38:
- lsls r0, r5, 2
- adds r0, r6
- ldr r4, [r0]
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F8E5A
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_080F8E5A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080F8E38
-_080F8E64:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8E6C: .4byte sub_80F8B34
-_080F8E70: .4byte gUnknown_843ED88
- thumb_func_end sub_80F8DC0
-
- thumb_func_start sub_80F8E74
-sub_80F8E74: @ 80F8E74
- push {lr}
- ldr r0, _080F8E98 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080F8E92
- ldr r0, _080F8E9C @ =sub_80F8738
- movs r1, 0x1
- bl CreateTask
- ldr r1, _080F8EA0 @ =gUnknown_3005450
- adds r1, 0x67
- strb r0, [r1]
-_080F8E92:
- pop {r0}
- bx r0
- .align 2, 0
-_080F8E98: .4byte gUnknown_203ADFA
-_080F8E9C: .4byte sub_80F8738
-_080F8EA0: .4byte gUnknown_3005450
- thumb_func_end sub_80F8E74
-
- thumb_func_start sub_80F8EA4
-sub_80F8EA4: @ 80F8EA4
- push {lr}
- ldr r1, _080F8EBC @ =gUnknown_3005450
- ldrh r0, [r1, 0x4]
- cmp r0, 0x7
- bne _080F8EC4
- ldr r2, _080F8EC0 @ =0x00000985
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F8EC4
- movs r0, 0x1
- b _080F8EC6
- .align 2, 0
-_080F8EBC: .4byte gUnknown_3005450
-_080F8EC0: .4byte 0x00000985
-_080F8EC4:
- movs r0, 0
-_080F8EC6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F8EA4
-
- thumb_func_start sub_80F8ECC
-sub_80F8ECC: @ 80F8ECC
- push {r4,lr}
- ldr r4, _080F8EFC @ =gUnknown_3005450
- ldrh r0, [r4, 0x4]
- cmp r0, 0x7
- bne _080F8F08
- ldr r0, _080F8F00 @ =gRfuLinkStatus
- ldr r1, [r0]
- ldr r2, _080F8F04 @ =0x000008f5
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 5
- adds r1, r0
- ldrh r0, [r1, 0x14]
- movs r1, 0xF0
- bl sub_80FD610
- lsls r0, 24
- cmp r0, 0
- bne _080F8F08
- movs r0, 0x9
- strh r0, [r4, 0x4]
- movs r0, 0x1
- b _080F8F0A
- .align 2, 0
-_080F8EFC: .4byte gUnknown_3005450
-_080F8F00: .4byte gRfuLinkStatus
-_080F8F04: .4byte 0x000008f5
-_080F8F08:
- movs r0, 0
-_080F8F0A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8ECC
-
- thumb_func_start sub_80F8F10
-sub_80F8F10: @ 80F8F10
- push {lr}
- ldr r0, _080F8F34 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080F8F2E
- ldr r0, _080F8F38 @ =sub_80F893C
- movs r1, 0x1
- bl CreateTask
- ldr r1, _080F8F3C @ =gUnknown_3005450
- adds r1, 0x67
- strb r0, [r1]
-_080F8F2E:
- pop {r0}
- bx r0
- .align 2, 0
-_080F8F34: .4byte gUnknown_203ADFA
-_080F8F38: .4byte sub_80F893C
-_080F8F3C: .4byte gUnknown_3005450
- thumb_func_end sub_80F8F10
-
- thumb_func_start sub_80F8F40
-sub_80F8F40: @ 80F8F40
- push {lr}
- ldr r0, _080F8F50 @ =gUnknown_3005E10
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F8F54
- movs r0, 0
- b _080F8F56
- .align 2, 0
-_080F8F50: .4byte gUnknown_3005E10
-_080F8F54:
- movs r0, 0x1
-_080F8F56:
- pop {r1}
- bx r1
- thumb_func_end sub_80F8F40
-
- thumb_func_start sub_80F8F5C
-sub_80F8F5C: @ 80F8F5C
- ldr r1, _080F8F70 @ =gUnknown_3005450
- movs r0, 0x4
- strh r0, [r1, 0x4]
- ldr r0, _080F8F74 @ =gUnknown_3005E10
- ldrb r0, [r0]
- ldr r2, _080F8F78 @ =0x0000099f
- adds r1, r2
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080F8F70: .4byte gUnknown_3005450
-_080F8F74: .4byte gUnknown_3005E10
-_080F8F78: .4byte 0x0000099f
- thumb_func_end sub_80F8F5C
-
- thumb_func_start sub_80F8F7C
-sub_80F8F7C: @ 80F8F7C
- push {lr}
- adds r1, r0, 0
- ldr r2, _080F8F94 @ =gUnknown_3005450
- ldrh r0, [r2, 0x4]
- cmp r0, 0x11
- beq _080F8F8C
- cmp r1, 0
- beq _080F8F98
-_080F8F8C:
- movs r0, 0x12
- strh r0, [r2, 0x4]
- movs r0, 0x1
- b _080F8F9A
- .align 2, 0
-_080F8F94: .4byte gUnknown_3005450
-_080F8F98:
- movs r0, 0
-_080F8F9A:
- pop {r1}
- bx r1
- thumb_func_end sub_80F8F7C
-
- thumb_func_start sub_80F8FA0
-sub_80F8FA0: @ 80F8FA0
- ldr r1, _080F8FA8 @ =gUnknown_3005450
- movs r0, 0xE
- strh r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_080F8FA8: .4byte gUnknown_3005450
- thumb_func_end sub_80F8FA0
-
- thumb_func_start sub_80F8FAC
-sub_80F8FAC: @ 80F8FAC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0
- b _080F8FBE
-_080F8FB6:
- lsrs r1, 1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080F8FBE:
- cmp r2, 0x3
- bhi _080F8FD0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F8FB6
- adds r0, r2, 0
- bl rfu_UNI_readySendData
-_080F8FD0:
- pop {r0}
- bx r0
- thumb_func_end sub_80F8FAC
-
- thumb_func_start sub_80F8FD4
-sub_80F8FD4: @ 80F8FD4
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0
- ldr r7, _080F9028 @ =gRecvCmds
- ldr r0, _080F902C @ =gUnknown_3005450
- adds r6, r7, 0
- ldr r1, _080F9030 @ =0x0000093f
- adds r5, r0, r1
-_080F8FE4:
- movs r3, 0
- lsls r0, r2, 3
- lsls r1, r2, 4
- adds r4, r2, 0x1
- subs r0, r2
- lsls r0, 1
- adds r2, r0, r5
- adds r1, r6
-_080F8FF4:
- ldrh r0, [r1]
- lsrs r0, 8
- strb r0, [r2, 0x1]
- ldrh r0, [r1]
- strb r0, [r2]
- adds r2, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x6
- ble _080F8FF4
- adds r2, r4, 0
- cmp r2, 0x4
- ble _080F8FE4
- movs r0, 0
- mov r1, sp
- strh r0, [r1]
- ldr r2, _080F9034 @ =0x01000028
- mov r0, sp
- adds r1, r7, 0
- bl CpuSet
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9028: .4byte gRecvCmds
-_080F902C: .4byte gUnknown_3005450
-_080F9030: .4byte 0x0000093f
-_080F9034: .4byte 0x01000028
- thumb_func_end sub_80F8FD4
-
- thumb_func_start sub_80F9038
-sub_80F9038: @ 80F9038
- push {lr}
- ldr r3, _080F9064 @ =gSendCmd
- ldr r2, _080F9068 @ =gRecvCmds
- movs r1, 0x6
-_080F9040:
- ldrh r0, [r3]
- strh r0, [r2]
- adds r3, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080F9040
- ldr r1, _080F9064 @ =gSendCmd
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xC
-_080F9056:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080F9056
- pop {r0}
- bx r0
- .align 2, 0
-_080F9064: .4byte gSendCmd
-_080F9068: .4byte gRecvCmds
- thumb_func_end sub_80F9038
-
- thumb_func_start sub_80F906C
-sub_80F906C: @ 80F906C
- push {r4,r5,lr}
- ldr r4, _080F90CC @ =gUnknown_3005450
- ldr r0, _080F90D0 @ =0x000008f4
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0
- beq _080F909E
- ldr r1, _080F90D4 @ =0x000008d4
- adds r0, r4, r1
- adds r1, r4, 0
- adds r1, 0x4C
- bl sub_80FC888
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080F90D8 @ =0x000008f2
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, r0, 0
- cmp r1, 0
- bne _080F909A
- ldrb r0, [r5]
- strb r1, [r5]
-_080F909A:
- cmp r2, 0
- bne _080F90C4
-_080F909E:
- ldr r5, _080F90CC @ =gUnknown_3005450
- ldr r1, _080F90D0 @ =0x000008f4
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F90C4
- movs r1, 0xD4
- lsls r1, 3
- adds r0, r5, r1
- adds r4, r5, 0
- adds r4, 0x4C
- adds r1, r4, 0
- bl sub_80FC79C
- ldr r1, _080F90D4 @ =0x000008d4
- adds r0, r5, r1
- adds r1, r4, 0
- bl sub_80FC828
-_080F90C4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F90CC: .4byte gUnknown_3005450
-_080F90D0: .4byte 0x000008f4
-_080F90D4: .4byte 0x000008d4
-_080F90D8: .4byte 0x000008f2
- thumb_func_end sub_80F906C
-
- thumb_func_start IsRfuRecvQueueEmpty
-IsRfuRecvQueueEmpty: @ 80F90DC
- push {r4,lr}
- ldr r0, _080F90EC @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- bne _080F90F0
-_080F90E8:
- movs r0, 0
- b _080F9110
- .align 2, 0
-_080F90EC: .4byte gRfuLinkStatus
-_080F90F0:
- movs r3, 0
- ldr r4, _080F9118 @ =gRecvCmds
-_080F90F4:
- movs r2, 0
- lsls r0, r3, 4
- adds r1, r0, r4
-_080F90FA:
- ldrh r0, [r1]
- cmp r0, 0
- bne _080F90E8
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x6
- ble _080F90FA
- adds r3, 0x1
- cmp r3, 0x4
- ble _080F90F4
- movs r0, 0x1
-_080F9110:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F9118: .4byte gRecvCmds
- thumb_func_end IsRfuRecvQueueEmpty
-
- thumb_func_start sub_80F911C
-sub_80F911C: @ 80F911C
- push {r4-r6,lr}
- ldr r6, _080F9138 @ =gUnknown_3005450
- ldrh r0, [r6, 0x4]
- cmp r0, 0x13
- bhi _080F913C
- bl rfu_REQ_recvData
- bl rfu_waitREQComplete
- movs r0, 0
- bl rfu_REQ_sendData_wrapper
- b _080F91F6
- .align 2, 0
-_080F9138: .4byte gUnknown_3005450
-_080F913C:
- ldr r0, _080F9198 @ =0x00000993
- adds r1, r6, r0
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F919C @ =0x0000099a
- adds r1, r6, r0
- ldr r0, _080F91A0 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r1]
- ldrb r0, [r0, 0x2]
- ands r0, r1
- cmp r0, r1
- bne _080F91F6
- cmp r0, 0
- beq _080F91F6
- ldr r1, _080F91A4 @ =0x00000994
- adds r0, r6, r1
- ldrb r0, [r0]
- adds r5, r0, 0
- cmp r5, 0
- bne _080F91EC
- ldr r0, _080F91A8 @ =0x0000099b
- adds r4, r6, r0
- ldrb r0, [r4]
- cmp r0, 0
- beq _080F91CC
- bl sub_80FBCF8
- strb r5, [r4]
- ldr r1, _080F91AC @ =0x0000099c
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F91B0
- movs r4, 0x80
- lsls r4, 8
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
- adds r0, r4, 0
- bl sub_80FB0E8
- b _080F91F6
- .align 2, 0
-_080F9198: .4byte 0x00000993
-_080F919C: .4byte 0x0000099a
-_080F91A0: .4byte gRfuLinkStatus
-_080F91A4: .4byte 0x00000994
-_080F91A8: .4byte 0x0000099b
-_080F91AC: .4byte 0x0000099c
-_080F91B0:
- ldr r0, _080F91C4 @ =gUnknown_3005E10
- ldrb r4, [r0]
- cmp r4, 0
- bne _080F91CC
- bl sub_80F8DC0
- ldr r0, _080F91C8 @ =gReceivedRemoteLinkPlayers
- strb r4, [r0]
- b _080F91F6
- .align 2, 0
-_080F91C4: .4byte gUnknown_3005E10
-_080F91C8: .4byte gReceivedRemoteLinkPlayers
-_080F91CC:
- bl sub_80F8FD4
- ldr r0, _080F91E4 @ =gUnknown_3005450
- ldr r1, _080F91E8 @ =0x00000992
- adds r0, r1
- ldrb r0, [r0]
- bl rfu_UNI_readySendData
- movs r0, 0x1
- bl rfu_REQ_sendData_wrapper
- b _080F91F0
- .align 2, 0
-_080F91E4: .4byte gUnknown_3005450
-_080F91E8: .4byte 0x00000992
-_080F91EC:
- bl rfu_REQ_PARENT_resumeRetransmitAndChange
-_080F91F0:
- ldr r1, _080F9200 @ =gUnknown_3005450
- movs r0, 0x1
- strb r0, [r1, 0xE]
-_080F91F6:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080F9200: .4byte gUnknown_3005450
- thumb_func_end sub_80F911C
-
- thumb_func_start sub_80F9204
-sub_80F9204: @ 80F9204
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _080F92E4 @ =gUnknown_3005450
- ldrh r1, [r0, 0x4]
- adds r6, r0, 0
- cmp r1, 0x13
- bhi _080F921C
- b _080F947E
-_080F921C:
- ldrb r0, [r6, 0xE]
- cmp r0, 0x1
- beq _080F9224
- b _080F947E
-_080F9224:
- bl rfu_waitREQComplete
- ldr r0, _080F92E8 @ =0x00000993
- adds r2, r6, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _080F9244
- adds r1, r6, 0
- adds r1, 0xEE
-_080F9236:
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F923E
- b _080F94A4
-_080F923E:
- ldrb r0, [r2]
- cmp r0, 0
- beq _080F9236
-_080F9244:
- bl rfu_REQ_recvData
- bl rfu_waitREQComplete
- ldr r2, _080F92EC @ =gUnknown_3005E10
- ldr r4, _080F92E4 @ =gUnknown_3005450
- ldr r1, _080F92F0 @ =0x0000099a
- adds r0, r4, r1
- ldrb r1, [r2, 0x3]
- ldrb r0, [r0]
- ands r1, r0
- cmp r1, r0
- beq _080F9260
- b _080F9468
-_080F9260:
- ldr r6, _080F92F4 @ =0x00000994
- adds r1, r4, r6
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080F92F8 @ =gUnknown_203AC08
- ldrh r0, [r1, 0x6]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- ldrb r7, [r2]
- movs r5, 0
-_080F9276:
- movs r0, 0x1
- ands r0, r7
- lsrs r1, r7, 1
- str r1, [sp, 0x4]
- adds r2, r5, 0x1
- str r2, [sp]
- cmp r0, 0
- bne _080F9288
- b _080F9388
-_080F9288:
- ldr r1, _080F92E4 @ =gUnknown_3005450
- lsls r2, r5, 3
- subs r0, r2, r5
- lsls r4, r0, 1
- adds r0, r1, 0
- adds r0, 0x15
- adds r0, r4, r0
- ldrb r0, [r0]
- adds r6, r1, 0
- adds r3, r2, 0
- lsls r1, r5, 24
- mov r10, r1
- cmp r0, 0
- beq _080F9380
- ldr r2, _080F92FC @ =0x000009a6
- adds r0, r6, r2
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080F9304
- adds r0, r6, 0
- adds r0, 0x14
- adds r0, r4, r0
- ldrb r2, [r0]
- lsrs r2, 5
- ldrb r0, [r1]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- cmp r2, r0
- beq _080F9304
- ldr r0, _080F9300 @ =0x000009a2
- adds r1, r6, r0
- adds r1, r5, r1
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080F9380
- movs r0, 0x81
- lsls r0, 8
- bl sub_80FB0E8
- b _080F9380
- .align 2, 0
-_080F92E4: .4byte gUnknown_3005450
-_080F92E8: .4byte 0x00000993
-_080F92EC: .4byte gUnknown_3005E10
-_080F92F0: .4byte 0x0000099a
-_080F92F4: .4byte 0x00000994
-_080F92F8: .4byte gUnknown_203AC08
-_080F92FC: .4byte 0x000009a6
-_080F9300: .4byte 0x000009a2
-_080F9304:
- ldr r2, _080F9444 @ =gUnknown_3005450
- ldr r6, _080F9448 @ =0x000009a6
- adds r1, r2, r6
- adds r1, r5, r1
- subs r3, r5
- lsls r3, 1
- adds r4, r2, 0
- adds r4, 0x14
- adds r2, r3, r4
- ldrb r0, [r2]
- lsrs r0, 5
- strb r0, [r1]
- ldr r1, _080F9444 @ =gUnknown_3005450
- subs r6, 0x4
- adds r0, r1, r6
- adds r0, r5, r0
- movs r1, 0
- strb r1, [r0]
- ldrb r1, [r2]
- movs r0, 0x1F
- ands r0, r1
- strb r0, [r2]
- ldr r2, _080F944C @ =gUnknown_3005DE6
- adds r0, r5, r2
- ldrb r0, [r0]
- movs r6, 0
- lsls r1, r5, 24
- mov r10, r1
- lsrs r2, r7, 1
- str r2, [sp, 0x4]
- adds r5, 0x1
- str r5, [sp]
- ldr r1, _080F9450 @ =gRecvCmds
- mov r9, r1
- adds r5, r3, 0
- adds r7, r4, 0
- lsls r0, 4
- mov r8, r0
- adds r2, r5, 0x1
- mov r12, r2
-_080F9354:
- lsls r1, r6, 1
- mov r0, r8
- adds r4, r1, r0
- add r4, r9
- mov r2, r12
- adds r3, r1, r2
- adds r3, r7
- ldrb r2, [r3]
- lsls r2, 8
- adds r1, r5
- adds r1, r7
- ldrb r0, [r1]
- orrs r0, r2
- strh r0, [r4]
- movs r0, 0
- strb r0, [r3]
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x6
- bls _080F9354
-_080F9380:
- mov r1, r10
- lsrs r0, r1, 24
- bl rfu_UNI_clearRecvNewDataFlag
-_080F9388:
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- lsrs r7, r0, 16
- ldr r6, [sp]
- lsls r0, r6, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bhi _080F939A
- b _080F9276
-_080F939A:
- bl sub_80F9038
- movs r0, 0
- bl sub_80F9868
- bl sub_80FA510
- ldr r4, _080F9444 @ =gUnknown_3005450
- ldr r1, _080F9454 @ =0x0000099d
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F9476
- ldr r2, _080F9458 @ =0x00000991
- adds r0, r4, r2
- ldrb r2, [r0]
- cmp r2, 0
- bne _080F9476
- ldr r0, _080F945C @ =gUnknown_203AC08
- ldrb r1, [r0, 0xE]
- strb r2, [r0, 0xE]
- ldr r6, _080F9460 @ =0x00000992
- adds r0, r4, r6
- ldrb r1, [r0]
- movs r0, 0x3
- bl rfu_clearSlot
- movs r5, 0
- adds r7, r4, 0
- adds r7, 0x14
-_080F93D6:
- ldr r0, _080F9454 @ =0x0000099d
- adds r6, r4, r0
- ldrb r0, [r6]
- asrs r0, r5
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F93FA
- lsls r1, r5, 24
- lsrs r1, 24
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 1
- adds r2, r7
- movs r0, 0x10
- movs r3, 0xE
- bl rfu_setRecvBuffer
-_080F93FA:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080F93D6
- subs r4, r6, 0x3
- ldrb r0, [r4]
- ldrb r2, [r6]
- adds r1, r0, 0
- orrs r1, r2
- bl sub_80F887C
- ldrb r1, [r6]
- movs r2, 0
- strb r1, [r6, 0x4]
- ldrb r0, [r4]
- orrs r0, r1
- strb r0, [r4]
- strb r2, [r6]
- ldrb r0, [r4]
- adds r1, r6, 0
- subs r1, 0x5E
- movs r2, 0x46
- bl rfu_UNI_setSendData
- ldrb r0, [r4]
- bl sub_80F886C
- adds r1, r6, 0
- subs r1, 0xB
- strb r0, [r1]
- ldr r0, _080F9464 @ =sub_80FAA94
- movs r1, 0
- bl CreateTask
- b _080F9476
- .align 2, 0
-_080F9444: .4byte gUnknown_3005450
-_080F9448: .4byte 0x000009a6
-_080F944C: .4byte gUnknown_3005DE6
-_080F9450: .4byte gRecvCmds
-_080F9454: .4byte 0x0000099d
-_080F9458: .4byte 0x00000991
-_080F945C: .4byte gUnknown_203AC08
-_080F9460: .4byte 0x00000992
-_080F9464: .4byte sub_80FAA94
-_080F9468:
- ldr r2, _080F9498 @ =0x00000994
- adds r1, r4, r2
- ldrb r0, [r1]
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1]
- strb r2, [r4, 0xE]
-_080F9476:
- ldr r1, _080F949C @ =gUnknown_3005450
- movs r0, 0
- strb r0, [r1, 0xE]
- adds r6, r1, 0
-_080F947E:
- ldr r1, _080F9498 @ =0x00000994
- adds r0, r6, r1
- ldrb r0, [r0]
- adds r1, r0, 0
- ldr r0, _080F94A0 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- beq _080F94A8
- movs r0, 0x1
- ands r0, r1
- b _080F94AA
- .align 2, 0
-_080F9498: .4byte 0x00000994
-_080F949C: .4byte gUnknown_3005450
-_080F94A0: .4byte gRfuLinkStatus
-_080F94A4:
- movs r0, 0
- b _080F94AA
-_080F94A8:
- movs r0, 0
-_080F94AA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F9204
-
- thumb_func_start sub_80F94BC
-sub_80F94BC: @ 80F94BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r2, r1, 0
- ldrh r1, [r4]
- cmp r1, 0
- beq _080F9500
- ldr r0, _080F94FC @ =gUnknown_3005450
- movs r5, 0x81
- lsls r5, 1
- adds r3, r0, r5
- ldrb r0, [r3]
- lsls r0, 5
- orrs r0, r1
- strh r0, [r4]
- ldrb r0, [r3]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strb r0, [r3]
- adds r3, r4, 0
- movs r4, 0x6
-_080F94E6:
- ldrh r1, [r3]
- lsrs r0, r1, 8
- strb r0, [r2, 0x1]
- strb r1, [r2]
- adds r2, 0x2
- adds r3, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080F94E6
- b _080F950E
- .align 2, 0
-_080F94FC: .4byte gUnknown_3005450
-_080F9500:
- movs r1, 0
- adds r0, r2, 0
- adds r0, 0xD
-_080F9506:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r2
- bge _080F9506
-_080F950E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F94BC
-
- thumb_func_start sub_80F9514
-sub_80F9514: @ 80F9514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x58
- ldr r0, _080F9638 @ =gUnknown_3005574
- mov r1, sp
- bl sub_80FC6E8
- movs r1, 0
- ldr r0, _080F963C @ =gRecvCmds
- mov r12, r0
-_080F952A:
- movs r4, 0
- lsls r0, r1, 3
- adds r2, r1, 0x1
- mov r8, r2
- lsls r6, r1, 4
- subs r0, r1
- lsls r5, r0, 1
-_080F9538:
- lsls r1, r4, 1
- adds r3, r1, r6
- add r3, r12
- adds r1, r5, r1
- adds r0, r1, 0x1
- add r0, sp
- ldrb r2, [r0]
- lsls r2, 8
- mov r7, sp
- adds r0, r7, r1
- ldrb r0, [r0]
- orrs r0, r2
- strh r0, [r3]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080F9538
- mov r1, r8
- lsls r0, r1, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080F952A
- movs r0, 0
- bl sub_80F9868
- ldr r0, _080F9640 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- bne _080F95E4
- ldr r0, _080F9644 @ =gUnknown_3005450
- ldr r2, _080F9648 @ =0x0000099c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F95E4
- ldr r0, _080F964C @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- orrs r0, r1
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F95B0
- cmp r0, 0x6
- beq _080F95B0
- cmp r0, 0x9
- beq _080F95B0
- movs r1, 0x90
- lsls r1, 8
- movs r0, 0x2
- bl sub_80FB9E4
-_080F95B0:
- bl rfu_clearAllSlot
- ldr r1, _080F9650 @ =gReceivedRemoteLinkPlayers
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F9644 @ =gUnknown_3005450
- movs r5, 0
- str r5, [r0]
- ldr r7, _080F9648 @ =0x0000099c
- adds r6, r0, r7
- ldrb r0, [r6]
- cmp r0, 0x1
- bne _080F95DC
- movs r4, 0x90
- lsls r4, 8
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
- adds r0, r4, 0
- bl sub_80FB0E8
-_080F95DC:
- ldr r0, _080F9640 @ =gUnknown_3005E10
- strb r5, [r0, 0x5]
- strb r5, [r0, 0x4]
- strb r5, [r6]
-_080F95E4:
- ldr r6, _080F9644 @ =gUnknown_3005450
- ldr r0, _080F9654 @ =0x00000988
- adds r2, r6, r0
- ldrb r0, [r2]
- cmp r0, 0
- beq _080F9628
- ldrb r0, [r2]
- subs r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- bl sub_80FA510
- ldr r5, _080F9658 @ =gSendCmd
- add r4, sp, 0x48
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80F94BC
- movs r1, 0xD4
- lsls r1, 3
- adds r0, r6, r1
- adds r1, r4, 0
- bl sub_80FC63C
- movs r1, 0
- movs r2, 0
-_080F9618:
- lsls r0, r1, 1
- adds r0, r5
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _080F9618
-_080F9628:
- bl IsRfuRecvQueueEmpty
- add sp, 0x58
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F9638: .4byte gUnknown_3005574
-_080F963C: .4byte gRecvCmds
-_080F9640: .4byte gUnknown_3005E10
-_080F9644: .4byte gUnknown_3005450
-_080F9648: .4byte 0x0000099c
-_080F964C: .4byte gRfuLinkStatus
-_080F9650: .4byte gReceivedRemoteLinkPlayers
-_080F9654: .4byte 0x00000988
-_080F9658: .4byte gSendCmd
- thumb_func_end sub_80F9514
-
- thumb_func_start sub_80F965C
-sub_80F965C: @ 80F965C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _080F9708 @ =gUnknown_3005450
- ldr r2, [r0, 0x70]
- mov r10, r2
- movs r5, 0
- adds r2, r0, 0
- adds r2, 0x6E
- ldrh r3, [r2]
- cmp r5, r3
- bge _080F96F8
- mov r9, r0
- ldr r0, _080F970C @ =gUnknown_3002008
- mov r8, r0
-_080F967E:
- movs r0, 0x1
- ands r0, r1
- lsrs r7, r1, 1
- adds r6, r5, 0x1
- cmp r0, 0
- bne _080F96EC
- ldr r1, _080F9710 @ =0xffff8900
- adds r0, r1, 0
- adds r1, r5, 0
- orrs r1, r0
- mov r2, r8
- strh r1, [r2]
- movs r4, 0
- lsls r0, r5, 1
- ldr r3, _080F9714 @ =gUnknown_3001FF8
- mov r12, r3
- adds r0, r5
- lsls r0, 2
- mov r1, r10
- adds r2, r0, r1
- mov r3, r8
- adds r3, 0x2
-_080F96AA:
- ldrb r1, [r2, 0x1]
- lsls r1, 8
- ldrb r0, [r2]
- orrs r0, r1
- strh r0, [r3]
- adds r2, 0x2
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x6
- ble _080F96AA
- movs r4, 0
- ldr r2, _080F970C @ =gUnknown_3002008
- ldr r1, _080F9714 @ =gUnknown_3001FF8
-_080F96C4:
- ldrh r0, [r2]
- lsrs r0, 8
- strb r0, [r1, 0x1]
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x6
- ble _080F96C4
- ldr r0, _080F9718 @ =gUnknown_3005AF0
- mov r1, r12
- bl sub_80FC63C
- movs r1, 0x1
- lsls r1, r5
- mov r2, r9
- ldr r0, [r2, 0x78]
- orrs r0, r1
- str r0, [r2, 0x78]
-_080F96EC:
- adds r1, r7, 0
- adds r5, r6, 0
- ldr r3, _080F971C @ =gUnknown_30054BE
- ldrh r3, [r3]
- cmp r5, r3
- blt _080F967E
-_080F96F8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9708: .4byte gUnknown_3005450
-_080F970C: .4byte gUnknown_3002008
-_080F9710: .4byte 0xffff8900
-_080F9714: .4byte gUnknown_3001FF8
-_080F9718: .4byte gUnknown_3005AF0
-_080F971C: .4byte gUnknown_30054BE
- thumb_func_end sub_80F965C
-
- thumb_func_start Rfu_SetBlockReceivedFlag
-Rfu_SetBlockReceivedFlag: @ 80F9720
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F973C @ =gUnknown_3005450
- ldrb r2, [r0, 0xC]
- cmp r2, 0x1
- bne _080F9740
- cmp r1, 0
- beq _080F9740
- adds r0, 0x61
- adds r0, r1, r0
- strb r2, [r0]
- b _080F9748
- .align 2, 0
-_080F973C: .4byte gUnknown_3005450
-_080F9740:
- adds r0, 0x5C
- adds r0, r1, r0
- movs r1, 0x1
- strb r1, [r0]
-_080F9748:
- pop {r0}
- bx r0
- thumb_func_end Rfu_SetBlockReceivedFlag
-
- thumb_func_start Rfu_ResetBlockReceivedFlag
-Rfu_ResetBlockReceivedFlag: @ 80F974C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F976C @ =gUnknown_3005450
- adds r1, r3, 0
- adds r1, 0x5C
- adds r1, r0, r1
- movs r2, 0
- strb r2, [r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- adds r1, 0x92
- strb r2, [r1]
- bx lr
- .align 2, 0
-_080F976C: .4byte gUnknown_3005450
- thumb_func_end Rfu_ResetBlockReceivedFlag
-
- thumb_func_start sub_80F9770
-sub_80F9770: @ 80F9770
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _080F9784 @ =gUnknown_3005450
- ldrb r1, [r0, 0xC]
- adds r5, r0, 0
- cmp r1, 0x1
- bne _080F9788
- movs r0, 0
- b _080F97AA
- .align 2, 0
-_080F9784: .4byte gUnknown_3005450
-_080F9788:
- movs r2, 0
- ldr r0, _080F97B0 @ =0x00000996
- adds r4, r5, r0
-_080F978E:
- adds r1, r2, r4
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080F978E
- ldr r1, _080F97B4 @ =0x000008f6
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r0, r3
- ldrb r0, [r0]
-_080F97AA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080F97B0: .4byte 0x00000996
-_080F97B4: .4byte 0x000008f6
- thumb_func_end sub_80F9770
-
- thumb_func_start rfu_func_080F97B8
-rfu_func_080F97B8: @ 80F97B8
- push {lr}
- ldr r0, _080F97F0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F97EA
- ldr r3, _080F97F4 @ =gHeldKeyCodeToSend
- ldrh r2, [r3]
- cmp r2, 0
- beq _080F97EA
- ldr r0, _080F97F8 @ =gLinkTransferringData
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080F97EA
- ldr r1, _080F97FC @ =gUnknown_3001188
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r1]
- lsls r0, 8
- orrs r0, r2
- strh r0, [r3]
- movs r0, 0xBE
- lsls r0, 8
- bl sub_80F9D04
-_080F97EA:
- pop {r0}
- bx r0
- .align 2, 0
-_080F97F0: .4byte gReceivedRemoteLinkPlayers
-_080F97F4: .4byte gHeldKeyCodeToSend
-_080F97F8: .4byte gLinkTransferringData
-_080F97FC: .4byte gUnknown_3001188
- thumb_func_end rfu_func_080F97B8
-
- thumb_func_start sub_80F9800
-sub_80F9800: @ 80F9800
- ldr r0, _080F9804 @ =gUnknown_3005440
- bx lr
- .align 2, 0
-_080F9804: .4byte gUnknown_3005440
- thumb_func_end sub_80F9800
-
- thumb_func_start IsSendingKeysToRfu
-IsSendingKeysToRfu: @ 80F9808
- push {lr}
- movs r2, 0
- ldr r0, _080F9820 @ =gUnknown_3005450
- ldr r1, [r0]
- ldr r0, _080F9824 @ =rfu_func_080F97B8
- cmp r1, r0
- bne _080F9818
- movs r2, 0x1
-_080F9818:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080F9820: .4byte gUnknown_3005450
-_080F9824: .4byte rfu_func_080F97B8
- thumb_func_end IsSendingKeysToRfu
-
- thumb_func_start sub_80F9828
-sub_80F9828: @ 80F9828
- push {r4,lr}
- ldr r4, _080F9848 @ =gUnknown_3005450
- ldr r0, [r4]
- cmp r0, 0
- beq _080F983E
- ldr r0, _080F984C @ =gUnknown_843ED94 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu.c"
- ldr r1, _080F9850 @ =0x000005c1 // 1473
- ldr r2, _080F9854 @ =gUnknown_843EDC4 "Rfu.RfuFunc == NULL"
- movs r3, 0x1
- bl AGBAssert
-_080F983E:
- ldr r0, _080F9858 @ =rfu_func_080F97B8
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9848: .4byte gUnknown_3005450
-_080F984C: .4byte gUnknown_843ED94
-_080F9850: .4byte 0x000005c1
-_080F9854: .4byte gUnknown_843EDC4
-_080F9858: .4byte rfu_func_080F97B8
- thumb_func_end sub_80F9828
-
- thumb_func_start Rfu_set_zero
-Rfu_set_zero: @ 80F985C
- ldr r1, _080F9864 @ =gUnknown_3005450
- movs r0, 0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080F9864: .4byte gUnknown_3005450
- thumb_func_end Rfu_set_zero
-
- thumb_func_start sub_80F9868
-sub_80F9868: @ 80F9868
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- mov r8, r0
-_080F9876:
- mov r1, r8
- lsls r5, r1, 4
- ldr r2, _080F98B4 @ =gRecvCmds
- adds r0, r5, r2
- ldrh r7, [r0]
- movs r3, 0xFF
- lsls r3, 8
- adds r0, r3, 0
- adds r1, r0, 0
- ands r1, r7
- movs r0, 0x88
- lsls r0, 8
- adds r2, r5, 0
- cmp r1, r0
- beq _080F9954
- cmp r1, r0
- bgt _080F98CA
- movs r0, 0xCC
- lsls r0, 7
- cmp r1, r0
- bne _080F98A2
- b _080F9AD0
-_080F98A2:
- cmp r1, r0
- bgt _080F98B8
- movs r0, 0xBE
- lsls r0, 7
- cmp r1, r0
- bne _080F98B0
- b _080F9AC0
-_080F98B0:
- b _080F9BF4
- .align 2, 0
-_080F98B4: .4byte gRecvCmds
-_080F98B8:
- movs r0, 0xEE
- lsls r0, 7
- cmp r1, r0
- beq _080F9914
- movs r0, 0xF0
- lsls r0, 7
- cmp r1, r0
- beq _080F9902
- b _080F9BF4
-_080F98CA:
- movs r0, 0xBE
- lsls r0, 8
- cmp r1, r0
- bne _080F98D4
- b _080F9BE4
-_080F98D4:
- cmp r1, r0
- bgt _080F98EC
- movs r0, 0x89
- lsls r0, 8
- cmp r1, r0
- beq _080F99B8
- movs r0, 0xA1
- lsls r0, 8
- cmp r1, r0
- bne _080F98EA
- b _080F9A9C
-_080F98EA:
- b _080F9BF4
-_080F98EC:
- movs r0, 0xED
- lsls r0, 8
- cmp r1, r0
- bne _080F98F6
- b _080F9B00
-_080F98F6:
- movs r0, 0xEE
- lsls r0, 8
- cmp r1, r0
- bne _080F9900
- b _080F9BA0
-_080F9900:
- b _080F9BF4
-_080F9902:
- ldr r4, _080F993C @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- cmp r0, 0
- bne _080F9914
- ldr r0, _080F9940 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F9914
- b _080F9C40
-_080F9914:
- ldr r0, _080F9944 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- mov r6, r8
- adds r6, 0x1
- cmp r0, 0
- beq _080F9924
- b _080F9BF8
-_080F9924:
- ldr r1, _080F9948 @ =gRecvCmds + 2
- adds r0, r2, r1
- ldrh r0, [r0]
- ldr r3, _080F993C @ =gUnknown_3005450
- strb r0, [r3, 0xD]
- ldr r4, _080F994C @ =gRecvCmds + 4
- adds r0, r2, r4
- bl sub_80F9770
- ldr r1, _080F9950 @ =gUnknown_3005DD6
- strb r0, [r1]
- b _080F9BF8
- .align 2, 0
-_080F993C: .4byte gUnknown_3005450
-_080F9940: .4byte gReceivedRemoteLinkPlayers
-_080F9944: .4byte gRfuLinkStatus
-_080F9948: .4byte gRecvCmds + 2
-_080F994C: .4byte gRecvCmds + 4
-_080F9950: .4byte gUnknown_3005DD6
-_080F9954:
- ldr r2, _080F99AC @ =gUnknown_3005450
- mov r9, r2
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r7, r0, 2
- adds r3, r7, r2
- movs r4, 0x92
- adds r4, r3
- mov r12, r4
- ldrb r4, [r4]
- mov r6, r8
- adds r6, 0x1
- cmp r4, 0
- beq _080F9974
- b _080F9BF8
-_080F9974:
- adds r0, r3, 0
- adds r0, 0x80
- movs r2, 0
- strh r4, [r0]
- ldr r1, _080F99B0 @ =gRecvCmds + 2
- adds r0, r5, r1
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x82
- strh r0, [r1]
- ldr r1, _080F99B4 @ =gRecvCmds + 4
- adds r0, r5, r1
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x91
- strb r1, [r0]
- mov r0, r9
- adds r0, 0x88
- adds r0, r7, r0
- str r4, [r0]
- movs r0, 0x1
- mov r3, r12
- strb r0, [r3]
- mov r0, r9
- adds r0, 0x5C
- add r0, r8
- strb r2, [r0]
- b _080F9BF8
- .align 2, 0
-_080F99AC: .4byte gUnknown_3005450
-_080F99B0: .4byte gRecvCmds + 2
-_080F99B4: .4byte gRecvCmds + 4
-_080F99B8:
- ldr r4, _080F9A88 @ =gUnknown_3005450
- mov r9, r4
- mov r0, r8
- lsls r1, r0, 2
- adds r0, r1, r0
- lsls r4, r0, 2
- mov r3, r9
- adds r2, r4, r3
- adds r0, r2, 0
- adds r0, 0x92
- ldrb r3, [r0]
- mov r10, r1
- mov r6, r8
- adds r6, 0x1
- cmp r3, 0x1
- beq _080F99DA
- b _080F9BF8
-_080F99DA:
- movs r0, 0xFF
- ands r0, r7
- adds r2, 0x80
- strh r0, [r2]
- mov r1, r9
- adds r1, 0x88
- adds r1, r4, r1
- lsls r3, r0
- ldr r0, [r1]
- orrs r0, r3
- str r0, [r1]
- movs r4, 0
- ldr r0, _080F9A8C @ =gBlockRecvBuffer
- mov r9, r0
- mov r12, r2
- mov r1, r8
- lsls r7, r1, 8
- adds r3, r5, 0
-_080F99FE:
- mov r2, r12
- ldrh r0, [r2]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- adds r1, r4
- lsls r1, 1
- adds r1, r7
- add r1, r9
- adds r2, r4, 0x1
- lsls r0, r2, 1
- adds r0, r3
- ldr r4, _080F9A90 @ =gRecvCmds
- adds r0, r4
- ldrh r0, [r0]
- strh r0, [r1]
- lsls r2, 16
- lsrs r4, r2, 16
- cmp r4, 0x5
- bls _080F99FE
- ldr r4, _080F9A88 @ =gUnknown_3005450
- mov r0, r10
- add r0, r8
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x88
- adds r1, r0, r1
- adds r2, r0, r4
- adds r0, r2, 0
- adds r0, 0x82
- ldrh r0, [r0]
- lsls r0, 2
- ldr r3, _080F9A94 @ =gUnknown_843EBD4
- adds r0, r3
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- beq _080F9A4C
- b _080F9BF8
-_080F9A4C:
- adds r1, r2, 0
- adds r1, 0x92
- movs r0, 0x2
- strb r0, [r1]
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- bl Rfu_SetBlockReceivedFlag
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- beq _080F9A6E
- b _080F9BF8
-_080F9A6E:
- ldr r0, _080F9A98 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F9A78
- b _080F9BF8
-_080F9A78:
- ldrb r0, [r4, 0xC]
- cmp r0, 0
- beq _080F9A80
- b _080F9BF8
-_080F9A80:
- ldr r0, _080F9A8C @ =gBlockRecvBuffer
- bl sub_80FAA58
- b _080F9BF8
- .align 2, 0
-_080F9A88: .4byte gUnknown_3005450
-_080F9A8C: .4byte gBlockRecvBuffer
-_080F9A90: .4byte gRecvCmds
-_080F9A94: .4byte gUnknown_843EBD4
-_080F9A98: .4byte gReceivedRemoteLinkPlayers
-_080F9A9C:
- ldr r2, _080F9AB8 @ =gUnknown_843EC64
- ldr r3, _080F9ABC @ =gRecvCmds + 2
- adds r0, r5, r3
- ldrh r1, [r0]
- lsls r1, 3
- adds r0, r1, r2
- ldr r0, [r0]
- adds r2, 0x4
- adds r1, r2
- ldrh r1, [r1]
- bl Rfu_InitBlockSend
- b _080F9BF4
- .align 2, 0
-_080F9AB8: .4byte gUnknown_843EC64
-_080F9ABC: .4byte gRecvCmds + 2
-_080F9AC0:
- ldr r1, _080F9ACC @ =gUnknown_3005534
- add r1, r8
- movs r0, 0x1
- strb r0, [r1]
- b _080F9BF4
- .align 2, 0
-_080F9ACC: .4byte gUnknown_3005534
-_080F9AD0:
- ldr r2, _080F9AF8 @ =gUnknown_3005450
- movs r4, 0x80
- lsls r4, 1
- adds r0, r2, r4
- ldr r3, _080F9AFC @ =gRecvCmds + 2
- adds r1, r5, r3
- ldrh r0, [r0]
- mov r6, r8
- adds r6, 0x1
- ldrh r1, [r1]
- cmp r0, r1
- beq _080F9AEA
- b _080F9BF8
-_080F9AEA:
- adds r0, r2, 0
- adds r0, 0xE9
- add r0, r8
- movs r1, 0x1
- strb r1, [r0]
- b _080F9BF8
- .align 2, 0
-_080F9AF8: .4byte gUnknown_3005450
-_080F9AFC: .4byte gRecvCmds + 2
-_080F9B00:
- ldr r7, _080F9B4C @ =gUnknown_3005450
- ldrb r2, [r7, 0xC]
- cmp r2, 0
- bne _080F9B68
- ldr r3, _080F9B50 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r3]
- mov r6, r8
- adds r6, 0x1
- cmp r0, 0
- beq _080F9BF8
- ldr r0, _080F9B54 @ =gRecvCmds + 2
- adds r4, r5, r0
- ldrh r1, [r4]
- ldr r0, _080F9B58 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- ands r1, r0
- cmp r1, 0
- beq _080F9B38
- strb r2, [r3]
- bl sub_80FEB14
- ldr r1, _080F9B5C @ =gRecvCmds + 4
- adds r0, r5, r1
- ldrh r1, [r0]
- ldr r2, _080F9B60 @ =0x0000099c
- adds r0, r7, r2
- strb r1, [r0]
-_080F9B38:
- ldr r0, _080F9B64 @ =gRecvCmds
- adds r0, 0x6
- adds r0, r5, r0
- ldrh r0, [r0]
- strb r0, [r7, 0xD]
- ldrh r0, [r4]
- bl sub_80FA9D0
- b _080F9BF8
- .align 2, 0
-_080F9B4C: .4byte gUnknown_3005450
-_080F9B50: .4byte gReceivedRemoteLinkPlayers
-_080F9B54: .4byte gRecvCmds + 2
-_080F9B58: .4byte gRfuLinkStatus
-_080F9B5C: .4byte gRecvCmds + 4
-_080F9B60: .4byte 0x0000099c
-_080F9B64: .4byte gRecvCmds
-_080F9B68:
- movs r0, 0xEE
- lsls r0, 8
- bl sub_80F9D04
- ldr r1, _080F9B90 @ =gSendCmd
- ldr r3, _080F9B94 @ =gRecvCmds + 2
- adds r0, r5, r3
- ldrh r0, [r0]
- strh r0, [r1, 0x2]
- ldr r4, _080F9B98 @ =gRecvCmds + 4
- adds r0, r5, r4
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldr r0, _080F9B9C @ =gRecvCmds
- adds r0, 0x6
- adds r0, r5, r0
- ldrh r0, [r0]
- strh r0, [r1, 0x6]
- b _080F9BF4
- .align 2, 0
-_080F9B90: .4byte gSendCmd
-_080F9B94: .4byte gRecvCmds + 2
-_080F9B98: .4byte gRecvCmds + 4
-_080F9B9C: .4byte gRecvCmds
-_080F9BA0:
- ldr r4, _080F9BD0 @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- mov r6, r8
- adds r6, 0x1
- cmp r0, 0x1
- bne _080F9C34
- ldr r0, _080F9BD4 @ =0x0000099b
- adds r2, r4, r0
- ldr r1, _080F9BD8 @ =gRecvCmds + 2
- adds r3, r5, r1
- ldrb r1, [r3]
- ldrb r0, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080F9BDC @ =gRecvCmds + 4
- adds r0, r5, r2
- ldrh r1, [r0]
- ldr r2, _080F9BE0 @ =0x0000099c
- adds r0, r4, r2
- strb r1, [r0]
- ldrh r0, [r3]
- bl sub_80FA9D0
- b _080F9BF8
- .align 2, 0
-_080F9BD0: .4byte gUnknown_3005450
-_080F9BD4: .4byte 0x0000099b
-_080F9BD8: .4byte gRecvCmds + 2
-_080F9BDC: .4byte gRecvCmds + 4
-_080F9BE0: .4byte 0x0000099c
-_080F9BE4:
- ldr r0, _080F9C24 @ =gLinkPartnersHeldKeys
- mov r3, r8
- lsls r1, r3, 1
- adds r1, r0
- ldr r4, _080F9C28 @ =gRecvCmds + 2
- adds r0, r5, r4
- ldrh r0, [r0]
- strh r0, [r1]
-_080F9BF4:
- mov r6, r8
- adds r6, 0x1
-_080F9BF8:
- ldr r3, _080F9C2C @ =gUnknown_3005450
- ldrb r4, [r3, 0xC]
- cmp r4, 0x1
- bne _080F9C34
- adds r0, r3, 0
- adds r0, 0x61
- mov r1, r8
- adds r2, r1, r0
- ldrb r0, [r2]
- adds r1, r0, 0
- cmp r1, 0
- beq _080F9C34
- cmp r1, 0x4
- bne _080F9C30
- adds r0, r3, 0
- adds r0, 0x5C
- add r0, r8
- movs r1, 0
- strb r4, [r0]
- strb r1, [r2]
- b _080F9C34
- .align 2, 0
-_080F9C24: .4byte gLinkPartnersHeldKeys
-_080F9C28: .4byte gRecvCmds + 2
-_080F9C2C: .4byte gUnknown_3005450
-_080F9C30:
- adds r0, 0x1
- strb r0, [r2]
-_080F9C34:
- lsls r0, r6, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0x4
- bhi _080F9C40
- b _080F9876
-_080F9C40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F9868
-
- thumb_func_start sub_80F9C50
-sub_80F9C50: @ 80F9C50
- push {lr}
- movs r2, 0
- ldr r0, _080F9C64 @ =gUnknown_3005450
- adds r1, r0, 0
- adds r1, 0x92
-_080F9C5A:
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F9C68
- movs r0, 0
- b _080F9C72
- .align 2, 0
-_080F9C64: .4byte gUnknown_3005450
-_080F9C68:
- adds r1, 0x14
- adds r2, 0x1
- cmp r2, 0x4
- ble _080F9C5A
- movs r0, 0x1
-_080F9C72:
- pop {r1}
- bx r1
- thumb_func_end sub_80F9C50
-
- thumb_func_start sub_80F9C78
-sub_80F9C78: @ 80F9C78
- push {r4,lr}
- movs r1, 0
- ldr r2, _080F9CA0 @ =gUnknown_3005450
- ldrb r0, [r2, 0xD]
- cmp r1, r0
- bge _080F9CAC
- adds r4, r0, 0
- adds r3, r2, 0
- adds r3, 0x92
- adds r2, 0x5C
-_080F9C8C:
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _080F9C9A
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080F9CA4
-_080F9C9A:
- movs r0, 0
- b _080F9CAE
- .align 2, 0
-_080F9CA0: .4byte gUnknown_3005450
-_080F9CA4:
- adds r3, 0x14
- adds r1, 0x1
- cmp r1, r4
- blt _080F9C8C
-_080F9CAC:
- movs r0, 0x1
-_080F9CAE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F9C78
-
- thumb_func_start sub_80F9CB4
-sub_80F9CB4: @ 80F9CB4
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- strh r1, [r0, 0x2]
- str r1, [r0, 0x4]
- str r1, [r0, 0x8]
- strb r2, [r0, 0x10]
- strb r2, [r0, 0x11]
- strb r2, [r0, 0x12]
- bx lr
- thumb_func_end sub_80F9CB4
-
- thumb_func_start Rfu_GetBlockReceivedStatus
-Rfu_GetBlockReceivedStatus: @ 80F9CC8
- push {r4,lr}
- movs r2, 0
- movs r1, 0
- ldr r0, _080F9D00 @ =gUnknown_3005450
- adds r3, r0, 0
- adds r3, 0x92
- adds r4, r0, 0
- adds r4, 0x5C
-_080F9CD8:
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _080F9CEE
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F9CEE
- lsls r0, r1
- orrs r2, r0
- lsls r0, r2, 24
- lsrs r2, r0, 24
-_080F9CEE:
- adds r3, 0x14
- adds r1, 0x1
- cmp r1, 0x4
- ble _080F9CD8
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F9D00: .4byte gUnknown_3005450
- thumb_func_end Rfu_GetBlockReceivedStatus
-
- thumb_func_start sub_80F9D04
-sub_80F9D04: @ 80F9D04
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r5, _080F9D34 @ =gSendCmd
- strh r1, [r5]
- movs r0, 0xF0
- lsls r0, 7
- adds r4, r5, 0
- cmp r1, r0
- beq _080F9D98
- cmp r1, r0
- bgt _080F9D4A
- movs r0, 0xBE
- lsls r0, 7
- cmp r1, r0
- beq _080F9DE8
- cmp r1, r0
- bgt _080F9D38
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- beq _080F9DFC
- b _080F9E22
- .align 2, 0
-_080F9D34: .4byte gSendCmd
-_080F9D38:
- movs r0, 0xCC
- lsls r0, 7
- cmp r1, r0
- beq _080F9DE8
- movs r0, 0xEE
- lsls r0, 7
- cmp r1, r0
- beq _080F9D98
- b _080F9E22
-_080F9D4A:
- movs r0, 0xBE
- lsls r0, 8
- cmp r1, r0
- beq _080F9E1C
- cmp r1, r0
- bgt _080F9E22
- movs r0, 0x88
- lsls r0, 8
- cmp r1, r0
- beq _080F9D68
- movs r0, 0xA1
- lsls r0, 8
- cmp r1, r0
- beq _080F9D80
- b _080F9E22
-_080F9D68:
- ldr r0, _080F9D7C @ =gUnknown_3005450
- adds r1, r0, 0
- adds r1, 0x6E
- ldrh r1, [r1]
- strh r1, [r5, 0x2]
- adds r0, 0x7D
- ldrb r0, [r0]
- adds r0, 0x80
- strh r0, [r5, 0x4]
- b _080F9E22
- .align 2, 0
-_080F9D7C: .4byte gUnknown_3005450
-_080F9D80:
- bl sub_80F9C50
- lsls r0, 24
- cmp r0, 0
- beq _080F9E22
- ldr r0, _080F9D94 @ =gUnknown_3005450
- adds r0, 0x5A
- ldrb r0, [r0]
- b _080F9E20
- .align 2, 0
-_080F9D94: .4byte gUnknown_3005450
-_080F9D98:
- ldr r3, _080F9DD4 @ =gUnknown_3005450
- ldr r1, _080F9DD8 @ =0x0000099a
- adds r0, r3, r1
- ldr r2, _080F9DDC @ =0x0000099b
- adds r1, r3, r2
- ldrb r2, [r0]
- ldrb r0, [r1]
- eors r0, r2
- ldr r1, _080F9DE0 @ =gUnknown_843EC41
- adds r0, r1
- ldrb r0, [r0]
- adds r0, 0x1
- strb r0, [r3, 0xD]
- ldrb r0, [r3, 0xD]
- strh r0, [r4, 0x2]
- adds r2, r4, 0x4
- movs r4, 0
- ldr r0, _080F9DE4 @ =0x00000996
- adds r3, r0
-_080F9DBE:
- adds r1, r2, r4
- adds r0, r4, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F9DBE
- b _080F9E22
- .align 2, 0
-_080F9DD4: .4byte gUnknown_3005450
-_080F9DD8: .4byte 0x0000099a
-_080F9DDC: .4byte 0x0000099b
-_080F9DE0: .4byte gUnknown_843EC41
-_080F9DE4: .4byte 0x00000996
-_080F9DE8:
- ldr r0, _080F9DF8 @ =gUnknown_3005450
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- b _080F9E22
- .align 2, 0
-_080F9DF8: .4byte gUnknown_3005450
-_080F9DFC:
- movs r4, 0
- ldr r3, _080F9E18 @ =gUnknown_3005542
-_080F9E00:
- adds r2, r4, 0x1
- lsls r1, r2, 1
- adds r1, r5
- lsls r0, r4, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0x5
- bls _080F9E00
- b _080F9E22
- .align 2, 0
-_080F9E18: .4byte gUnknown_3005542
-_080F9E1C:
- ldr r0, _080F9E28 @ =gHeldKeyCodeToSend
- ldrh r0, [r0]
-_080F9E20:
- strh r0, [r5, 0x2]
-_080F9E22:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9E28: .4byte gHeldKeyCodeToSend
- thumb_func_end sub_80F9D04
-
- thumb_func_start sub_80F9E2C
-sub_80F9E2C: @ 80F9E2C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080F9E58 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080F9E52
- bl sub_80FBA00
- cmp r0, 0
- bne _080F9E52
- ldr r0, _080F9E5C @ =gUnknown_3005542
- adds r1, r4, 0
- movs r2, 0xC
- bl memcpy
- movs r0, 0xBC
- lsls r0, 6
- bl sub_80F9D04
-_080F9E52:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9E58: .4byte gSendCmd
-_080F9E5C: .4byte gUnknown_3005542
- thumb_func_end sub_80F9E2C
-
- thumb_func_start Rfu_InitBlockSend
-Rfu_InitBlockSend: @ 80F9E60
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- adds r6, r1, 0
- cmp r6, 0xFC
- bls _080F9E7C
- ldr r0, _080F9EA8 @ =gUnknown_843ED94 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu.c"
- ldr r1, _080F9EAC @ =0x00000701 // 1793
- ldr r2, _080F9EB0 @ =gUnknown_843EDD8 "size<=252"
- movs r3, 0x1
- bl AGBAssert
-_080F9E7C:
- ldr r5, _080F9EB4 @ =gUnknown_3005450
- ldr r0, [r5]
- cmp r0, 0
- bne _080F9EA4
- ldr r0, _080F9EB8 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080F9EA4
- movs r0, 0x7C
- adds r0, r5
- mov r9, r0
- ldrb r1, [r0]
- mov r8, r1
- cmp r1, 0
- beq _080F9EC0
- ldr r1, _080F9EBC @ =gUnknown_203AC08
- adds r1, 0x83
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080F9EA4:
- movs r0, 0
- b _080F9F2A
- .align 2, 0
-_080F9EA8: .4byte gUnknown_843ED94
-_080F9EAC: .4byte 0x00000701
-_080F9EB0: .4byte gUnknown_843EDD8
-_080F9EB4: .4byte gUnknown_3005450
-_080F9EB8: .4byte gSendCmd
-_080F9EBC: .4byte gUnknown_203AC08
-_080F9EC0:
- adds r0, r6, 0
- movs r1, 0xC
- bl __umodsi3
- negs r4, r0
- orrs r4, r0
- lsrs r4, 31
- bl GetMultiplayerId
- adds r1, r5, 0
- adds r1, 0x7D
- strb r0, [r1]
- movs r0, 0x1
- mov r1, r9
- strb r0, [r1]
- adds r0, r6, 0
- movs r1, 0xC
- bl __udivsi3
- adds r0, r4
- adds r1, r5, 0
- adds r1, 0x6E
- strh r0, [r1]
- adds r0, r5, 0
- adds r0, 0x6C
- mov r1, r8
- strh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- cmp r6, r0
- bls _080F9F02
- str r7, [r5, 0x70]
- b _080F9F14
-_080F9F02:
- ldr r4, _080F9F38 @ =gBlockSendBuffer
- cmp r7, r4
- beq _080F9F12
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl memcpy
-_080F9F12:
- str r4, [r5, 0x70]
-_080F9F14:
- movs r0, 0x88
- lsls r0, 8
- bl sub_80F9D04
- ldr r0, _080F9F3C @ =gUnknown_3005450
- ldr r1, _080F9F40 @ =rfufunc_80F9F44
- str r1, [r0]
- adds r0, 0x5B
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
-_080F9F2A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F9F38: .4byte gBlockSendBuffer
-_080F9F3C: .4byte gUnknown_3005450
-_080F9F40: .4byte rfufunc_80F9F44
- thumb_func_end Rfu_InitBlockSend
-
- thumb_func_start rfufunc_80F9F44
-rfufunc_80F9F44: @ 80F9F44
- push {r4,r5,lr}
- ldr r0, _080F9F74 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080F9F98
- movs r5, 0x88
- lsls r5, 8
- adds r0, r5, 0
- bl sub_80F9D04
- ldr r4, _080F9F78 @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- cmp r0, 0x1
- bne _080F9F7C
- adds r1, r4, 0
- adds r1, 0x5B
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bls _080F9F98
- b _080F9F94
- .align 2, 0
-_080F9F74: .4byte gSendCmd
-_080F9F78: .4byte gUnknown_3005450
-_080F9F7C:
- bl GetMultiplayerId
- ldr r1, _080F9FA0 @ =gRecvCmds
- lsls r0, 24
- lsrs r0, 20
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, r5
- bne _080F9F98
-_080F9F94:
- ldr r0, _080F9FA4 @ =sub_80F9FA8
- str r0, [r4]
-_080F9F98:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9FA0: .4byte gRecvCmds
-_080F9FA4: .4byte sub_80F9FA8
- thumb_func_end rfufunc_80F9F44
-
- thumb_func_start sub_80F9FA8
-sub_80F9FA8: @ 80F9FA8
- push {r4-r6,lr}
- ldr r0, _080FA014 @ =gUnknown_3005450
- mov r12, r0
- ldr r5, [r0, 0x70]
- ldr r3, _080FA018 @ =gSendCmd
- mov r2, r12
- adds r2, 0x6C
- ldrh r1, [r2]
- movs r4, 0x89
- lsls r4, 8
- adds r0, r4, 0
- orrs r0, r1
- strh r0, [r3]
- movs r4, 0
- adds r6, r2, 0
- adds r3, 0x2
-_080F9FC8:
- lsls r2, r4, 1
- ldrh r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- ldrb r0, [r0]
- orrs r0, r1
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x6
- ble _080F9FC8
- mov r0, r12
- adds r0, 0x6C
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- adds r0, 0x2
- ldrh r0, [r0]
- lsls r1, 16
- lsrs r1, 16
- cmp r0, r1
- bhi _080FA00C
- mov r0, r12
- adds r0, 0x7C
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080FA01C @ =rfufunc_80FA020
- mov r1, r12
- str r0, [r1]
-_080FA00C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA014: .4byte gUnknown_3005450
-_080FA018: .4byte gSendCmd
-_080FA01C: .4byte rfufunc_80FA020
- thumb_func_end sub_80F9FA8
-
- thumb_func_start rfufunc_80FA020
-rfufunc_80FA020: @ 80FA020
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r5, _080FA0C8 @ =gUnknown_3005450
- ldr r0, [r5, 0x70]
- mov r8, r0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r5, 0xC]
- cmp r0, 0
- bne _080FA0E8
- ldr r3, _080FA0CC @ =gSendCmd
- adds r2, r5, 0
- adds r2, 0x6E
- ldrh r0, [r2]
- subs r0, 0x1
- ldr r4, _080FA0D0 @ =0xffff8900
- adds r1, r4, 0
- orrs r0, r1
- strh r0, [r3]
- movs r4, 0
- mov r9, r5
- ldr r0, _080FA0D4 @ =gRecvCmds
- mov r12, r0
- lsls r5, r6, 4
- adds r7, r2, 0
- adds r3, 0x2
-_080FA05C:
- lsls r2, r4, 1
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- add r0, r8
- adds r1, r0, 0
- subs r1, 0xB
- ldrb r1, [r1]
- lsls r1, 8
- subs r0, 0xC
- ldrb r0, [r0]
- orrs r0, r1
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x6
- ble _080FA05C
- mov r1, r12
- adds r0, r5, r1
- ldrb r1, [r0]
- mov r3, r9
- adds r0, r3, 0
- adds r0, 0x6E
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _080FA0EC
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x88
- adds r1, r0, r1
- ldr r2, _080FA0D8 @ =gUnknown_843EBD4
- adds r0, r3
- adds r0, 0x82
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- beq _080FA0E0
- adds r0, r6, 0
- bl sub_80F965C
- ldr r1, _080FA0DC @ =gUnknown_203AC08
- adds r1, 0x64
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _080FA0EC
- .align 2, 0
-_080FA0C8: .4byte gUnknown_3005450
-_080FA0CC: .4byte gSendCmd
-_080FA0D0: .4byte 0xffff8900
-_080FA0D4: .4byte gRecvCmds
-_080FA0D8: .4byte gUnknown_843EBD4
-_080FA0DC: .4byte gUnknown_203AC08
-_080FA0E0:
- movs r0, 0
- mov r4, r9
- str r0, [r4]
- b _080FA0EC
-_080FA0E8:
- movs r0, 0
- str r0, [r5]
-_080FA0EC:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end rfufunc_80FA020
-
- thumb_func_start sub_80FA0F8
-sub_80FA0F8: @ 80FA0F8
- push {lr}
- ldr r1, _080FA110 @ =gUnknown_3005450
- adds r1, 0x5A
- strb r0, [r1]
- movs r0, 0xA1
- lsls r0, 8
- bl sub_80F9D04
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_080FA110: .4byte gUnknown_3005450
- thumb_func_end sub_80FA0F8
-
- thumb_func_start sub_80FA114
-sub_80FA114: @ 80FA114
- push {lr}
- bl rfu_clearAllSlot
- bl sub_80FD52C
- ldr r1, _080FA138 @ =gReceivedRemoteLinkPlayers
- movs r0, 0
- strb r0, [r1]
- ldr r2, _080FA13C @ =gUnknown_3005450
- adds r3, r2, 0
- adds r3, 0xEF
- movs r1, 0
- movs r0, 0x1
- strb r0, [r3]
- str r1, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_080FA138: .4byte gReceivedRemoteLinkPlayers
-_080FA13C: .4byte gUnknown_3005450
- thumb_func_end sub_80FA114
-
- thumb_func_start sub_80FA140
-sub_80FA140: @ 80FA140
- push {lr}
- ldr r0, _080FA15C @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- orrs r0, r1
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- bl sub_80FA114
- pop {r0}
- bx r0
- .align 2, 0
-_080FA15C: .4byte gRfuLinkStatus
- thumb_func_end sub_80FA140
-
- thumb_func_start sub_80FA160
-sub_80FA160: @ 80FA160
- push {r4,lr}
- ldr r4, _080FA178 @ =gUnknown_3005450
- ldrb r0, [r4, 0xC]
- cmp r0, 0
- bne _080FA180
- bl sub_80FEB14
- ldr r0, _080FA17C @ =0x0000099c
- adds r1, r4, r0
- movs r0, 0x2
- strb r0, [r1]
- b _080FA184
- .align 2, 0
-_080FA178: .4byte gUnknown_3005450
-_080FA17C: .4byte 0x0000099c
-_080FA180:
- ldr r0, _080FA18C @ =sub_80FA140
- str r0, [r4]
-_080FA184:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA18C: .4byte sub_80FA140
- thumb_func_end sub_80FA160
-
- thumb_func_start sub_80FA190
-sub_80FA190: @ 80FA190
- push {lr}
- bl sub_80FEB14
- ldr r2, _080FA1B4 @ =gUnknown_3005450
- ldr r0, _080FA1B8 @ =0x0000099c
- adds r1, r2, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080FA1BC @ =gRfuLinkStatus
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- ldrb r1, [r1, 0x3]
- orrs r0, r1
- ldr r1, _080FA1C0 @ =0x0000099b
- adds r2, r1
- strb r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_080FA1B4: .4byte gUnknown_3005450
-_080FA1B8: .4byte 0x0000099c
-_080FA1BC: .4byte gRfuLinkStatus
-_080FA1C0: .4byte 0x0000099b
- thumb_func_end sub_80FA190
-
- thumb_func_start sub_80FA1C4
-sub_80FA1C4: @ 80FA1C4
- push {r4,r5,lr}
- ldr r0, _080FA208 @ =gUnknown_3005450
- ldrb r5, [r0, 0xD]
- movs r2, 0
- movs r1, 0
- adds r3, r0, 0
- adds r4, r3, 0
- adds r4, 0xE4
-_080FA1D4:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FA1DE
- adds r2, 0x1
-_080FA1DE:
- adds r1, 0x1
- cmp r1, 0x4
- ble _080FA1D4
- cmp r2, r5
- bne _080FA218
- ldr r2, _080FA20C @ =gBattleTypeFlags
- ldr r0, [r2]
- ldr r1, _080FA210 @ =0x0000ffdf
- ands r0, r1
- str r0, [r2]
- ldrb r0, [r3, 0xC]
- cmp r0, 0
- bne _080FA214
- adds r0, r3, 0
- adds r0, 0xEE
- ldrb r1, [r0]
- movs r1, 0x3
- strb r1, [r0]
- bl sub_80FA160
- b _080FA218
- .align 2, 0
-_080FA208: .4byte gUnknown_3005450
-_080FA20C: .4byte gBattleTypeFlags
-_080FA210: .4byte 0x0000ffdf
-_080FA214:
- ldr r0, _080FA220 @ =sub_80FA160
- str r0, [r3]
-_080FA218:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA220: .4byte sub_80FA160
- thumb_func_end sub_80FA1C4
-
- thumb_func_start sub_80FA224
-sub_80FA224: @ 80FA224
- push {r4,lr}
- ldr r0, _080FA250 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080FA248
- ldr r4, _080FA254 @ =gUnknown_3005450
- movs r1, 0x9A
- lsls r1, 4
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA248
- movs r0, 0xBE
- lsls r0, 7
- bl sub_80F9D04
- ldr r0, _080FA258 @ =sub_80FA1C4
- str r0, [r4]
-_080FA248:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA250: .4byte gSendCmd
-_080FA254: .4byte gUnknown_3005450
-_080FA258: .4byte sub_80FA1C4
- thumb_func_end sub_80FA224
-
- thumb_func_start sub_80FA25C
-sub_80FA25C: @ 80FA25C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080FA280 @ =gUnknown_3005450
- ldr r0, [r2]
- cmp r0, 0
- bne _080FA27C
- ldr r1, _080FA284 @ =0x00000991
- adds r0, r2, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _080FA288 @ =sub_80FA224
- str r0, [r2]
- adds r0, r3, 0
- bl DestroyTask
-_080FA27C:
- pop {r0}
- bx r0
- .align 2, 0
-_080FA280: .4byte gUnknown_3005450
-_080FA284: .4byte 0x00000991
-_080FA288: .4byte sub_80FA224
- thumb_func_end sub_80FA25C
-
- thumb_func_start task_add_05_task_del_08FA224_when_no_RfuFunc
-task_add_05_task_del_08FA224_when_no_RfuFunc: @ 80FA28C
- push {r4,lr}
- ldr r4, _080FA2AC @ =sub_80FA25C
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080FA2A4
- adds r0, r4, 0
- movs r1, 0x5
- bl CreateTask
-_080FA2A4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA2AC: .4byte sub_80FA25C
- thumb_func_end task_add_05_task_del_08FA224_when_no_RfuFunc
-
- thumb_func_start sub_80FA2B0
-sub_80FA2B0: @ 80FA2B0
- push {r4,r5,lr}
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080FA2DE
- ldr r1, _080FA348 @ =gUnknown_3005450
- ldr r2, _080FA34C @ =0x0000069e
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r4, r0, 0
- cmp r4, 0
- bne _080FA2DE
- adds r5, r1, 0
- adds r5, 0xFE
- ldrh r0, [r5]
- cmp r0, 0x3C
- bls _080FA2DE
- movs r0, 0xCC
- lsls r0, 7
- bl sub_80F9D04
- strh r4, [r5]
-_080FA2DE:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- cmp r1, r2
- bcs _080FA30A
- ldr r0, _080FA348 @ =gUnknown_3005450
- adds r3, r0, 0
- adds r3, 0xE9
- ldrb r0, [r3]
- cmp r0, 0
- beq _080FA30A
-_080FA2F8:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- bcs _080FA30A
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA2F8
-_080FA30A:
- ldr r4, _080FA348 @ =gUnknown_3005450
- cmp r1, r2
- bne _080FA336
- movs r1, 0
- adds r3, r4, 0
- adds r3, 0xE9
- movs r2, 0
-_080FA318:
- adds r0, r1, r3
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080FA318
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, r1
- ldrh r1, [r0]
- adds r1, 0x1
- movs r2, 0
- strh r1, [r0]
- str r2, [r4]
-_080FA336:
- adds r1, r4, 0
- adds r1, 0xFE
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA348: .4byte gUnknown_3005450
-_080FA34C: .4byte 0x0000069e
- thumb_func_end sub_80FA2B0
-
- thumb_func_start sub_80FA350
-sub_80FA350: @ 80FA350
- push {r4,lr}
- ldr r4, _080FA378 @ =gUnknown_3005450
- ldr r1, _080FA37C @ =0x0000069e
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA372
- ldr r0, _080FA380 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080FA372
- movs r0, 0xCC
- lsls r0, 7
- bl sub_80F9D04
- ldr r0, _080FA384 @ =sub_80FA2B0
- str r0, [r4]
-_080FA372:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA378: .4byte gUnknown_3005450
-_080FA37C: .4byte 0x0000069e
-_080FA380: .4byte gSendCmd
-_080FA384: .4byte sub_80FA2B0
- thumb_func_end sub_80FA350
-
- thumb_func_start sub_80FA388
-sub_80FA388: @ 80FA388
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080FA3C4
- ldr r4, _080FA3B4 @ =gUnknown_3005450
- ldr r1, _080FA3B8 @ =0x0000069e
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA416
- ldr r0, _080FA3BC @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080FA416
- movs r0, 0xCC
- lsls r0, 7
- bl sub_80F9D04
- ldr r0, _080FA3C0 @ =sub_80FA2B0
- b _080FA414
- .align 2, 0
-_080FA3B4: .4byte gUnknown_3005450
-_080FA3B8: .4byte 0x0000069e
-_080FA3BC: .4byte gSendCmd
-_080FA3C0: .4byte sub_80FA2B0
-_080FA3C4:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0x1
- cmp r1, r2
- bcs _080FA3F2
- ldr r3, _080FA41C @ =gUnknown_3005450
- adds r0, r3, 0
- adds r0, 0xEA
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FA3F2
- adds r3, 0xE9
-_080FA3E0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r2
- bcs _080FA3F2
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA3E0
-_080FA3F2:
- cmp r1, r2
- bne _080FA416
- ldr r4, _080FA41C @ =gUnknown_3005450
- ldr r1, _080FA420 @ =0x0000069e
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FA416
- ldr r0, _080FA424 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080FA416
- movs r0, 0xCC
- lsls r0, 7
- bl sub_80F9D04
- ldr r0, _080FA428 @ =sub_80FA350
-_080FA414:
- str r0, [r4]
-_080FA416:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA41C: .4byte gUnknown_3005450
-_080FA420: .4byte 0x0000069e
-_080FA424: .4byte gSendCmd
-_080FA428: .4byte sub_80FA350
- thumb_func_end sub_80FA388
-
- thumb_func_start sub_80FA42C
-sub_80FA42C: @ 80FA42C
- push {lr}
- ldr r1, _080FA444 @ =gUnknown_3005450
- ldr r2, [r1]
- cmp r2, 0
- bne _080FA440
- ldr r0, _080FA448 @ =sub_80FA388
- str r0, [r1]
- adds r0, r1, 0
- adds r0, 0xFE
- strh r2, [r0]
-_080FA440:
- pop {r0}
- bx r0
- .align 2, 0
-_080FA444: .4byte gUnknown_3005450
-_080FA448: .4byte sub_80FA388
- thumb_func_end sub_80FA42C
-
- thumb_func_start sub_80FA44C
-sub_80FA44C: @ 80FA44C
- push {r4,lr}
- adds r3, r0, 0
- ldr r1, _080FA468 @ =gUnknown_843EC8C
- ldrh r0, [r1]
- cmp r0, r3
- beq _080FA47A
- ldr r4, _080FA46C @ =0x0000ffff
- adds r2, r1, 0
-_080FA45C:
- ldrh r0, [r2]
- cmp r0, r4
- bne _080FA470
- movs r0, 0
- b _080FA47C
- .align 2, 0
-_080FA468: .4byte gUnknown_843EC8C
-_080FA46C: .4byte 0x0000ffff
-_080FA470:
- adds r1, 0x2
- adds r2, 0x2
- ldrh r0, [r1]
- cmp r0, r3
- bne _080FA45C
-_080FA47A:
- movs r0, 0x1
-_080FA47C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FA44C
-
- thumb_func_start sub_80FA484
-sub_80FA484: @ 80FA484
- push {lr}
- cmp r0, 0
- beq _080FA498
- movs r1, 0x96
- lsls r1, 2
- movs r0, 0x1
- bl sub_80FEA34
- movs r0, 0
- b _080FA4A4
-_080FA498:
- movs r0, 0
- movs r1, 0
- bl sub_80FEA34
- lsls r0, 24
- lsrs r0, 24
-_080FA4A4:
- pop {r1}
- bx r1
- thumb_func_end sub_80FA484
-
- thumb_func_start sub_80FA4A8
-sub_80FA4A8: @ 80FA4A8
- push {lr}
- ldr r0, _080FA4C0 @ =gUnknown_3005450
- ldr r1, _080FA4C4 @ =0x00000991
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- movs r0, 0
- bl sub_80FD760
- pop {r0}
- bx r0
- .align 2, 0
-_080FA4C0: .4byte gUnknown_3005450
-_080FA4C4: .4byte 0x00000991
- thumb_func_end sub_80FA4A8
-
- thumb_func_start rfu_get_multiplayer_id
-rfu_get_multiplayer_id: @ 80FA4C8
- push {lr}
- ldr r1, _080FA4DC @ =gUnknown_3005450
- ldrb r0, [r1, 0xC]
- cmp r0, 0x1
- beq _080FA4E4
- ldr r2, _080FA4E0 @ =0x00000986
- adds r0, r1, r2
- ldrb r0, [r0]
- b _080FA4E6
- .align 2, 0
-_080FA4DC: .4byte gUnknown_3005450
-_080FA4E0: .4byte 0x00000986
-_080FA4E4:
- movs r0, 0
-_080FA4E6:
- pop {r1}
- bx r1
- thumb_func_end rfu_get_multiplayer_id
-
- thumb_func_start GetRfuPlayerCount
-GetRfuPlayerCount: @ 80FA4EC
- ldr r0, _080FA4F4 @ =gUnknown_3005450
- ldrb r0, [r0, 0xD]
- bx lr
- .align 2, 0
-_080FA4F4: .4byte gUnknown_3005450
- thumb_func_end GetRfuPlayerCount
-
- thumb_func_start IsLinkRfuTaskFinished
-IsLinkRfuTaskFinished: @ 80FA4F8
- push {lr}
- movs r1, 0
- ldr r0, _080FA50C @ =gUnknown_3005450
- ldr r0, [r0]
- cmp r0, 0
- bne _080FA506
- movs r1, 0x1
-_080FA506:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080FA50C: .4byte gUnknown_3005450
- thumb_func_end IsLinkRfuTaskFinished
-
- thumb_func_start sub_80FA510
-sub_80FA510: @ 80FA510
- push {lr}
- ldr r0, _080FA524 @ =gUnknown_3005450
- ldr r0, [r0]
- cmp r0, 0
- beq _080FA51E
- bl _call_via_r0
-_080FA51E:
- pop {r0}
- bx r0
- .align 2, 0
-_080FA524: .4byte gUnknown_3005450
- thumb_func_end sub_80FA510
-
- thumb_func_start sub_80FA528
-sub_80FA528: @ 80FA528
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r7, 0
- movs r5, 0
- ldr r6, _080FA594 @ =gUnknown_3005450
- ldr r0, _080FA598 @ =0x000008f6
- adds r0, r6
- mov r8, r0
-_080FA53A:
- ldr r1, _080FA59C @ =0x00000989
- adds r0, r6, r1
- adds r4, r5, r0
- ldrb r0, [r4]
- subs r0, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080FA5C2
- ldr r1, _080FA5A0 @ =gRfuSlotStatusNI
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0, 0x34]
- cmp r0, 0x46
- beq _080FA55E
- cmp r0, 0x48
- bne _080FA5A8
-_080FA55E:
- ldr r2, _080FA5A4 @ =0x0000098d
- adds r0, r6, r2
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0x8
- bne _080FA5C2
- movs r0, 0x9
- strb r0, [r4]
- movs r0, 0xA
- strb r0, [r1]
- lsls r1, r5, 24
- lsrs r1, 24
- movs r0, 0x8
- bl rfu_clearSlot
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r5
- lsrs r0, 24
- movs r1, 0x8
- adds r2, r4, 0
- movs r3, 0x1
- bl rfu_NI_setSendData
- movs r7, 0x1
- b _080FA5C2
- .align 2, 0
-_080FA594: .4byte gUnknown_3005450
-_080FA598: .4byte 0x000008f6
-_080FA59C: .4byte 0x00000989
-_080FA5A0: .4byte gRfuSlotStatusNI
-_080FA5A4: .4byte 0x0000098d
-_080FA5A8:
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0, 0x34]
- cmp r0, 0x47
- bne _080FA5C2
- lsls r1, r5, 24
- lsrs r1, 24
- movs r0, 0x8
- bl rfu_clearSlot
-_080FA5C2:
- adds r5, 0x1
- cmp r5, 0x3
- ble _080FA53A
- adds r0, r7, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FA528
-
- thumb_func_start sub_80FA5D4
-sub_80FA5D4: @ 80FA5D4
- push {r4-r6,lr}
- movs r3, 0
- movs r1, 0
- ldr r5, _080FA620 @ =gUnknown_3005DDD
- movs r6, 0x1
- movs r4, 0
-_080FA5E0:
- adds r2, r1, r5
- ldrb r0, [r2]
- cmp r0, 0xB
- bne _080FA5F4
- adds r0, r6, 0
- lsls r0, r1
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
- strb r4, [r2]
-_080FA5F4:
- adds r1, 0x1
- cmp r1, 0x3
- ble _080FA5E0
- cmp r3, 0
- beq _080FA608
- adds r0, r3, 0
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
-_080FA608:
- movs r1, 0
- ldr r2, _080FA620 @ =gUnknown_3005DDD
-_080FA60C:
- adds r0, r1, r2
- ldrb r0, [r0]
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080FA624
- movs r0, 0x1
- b _080FA62C
- .align 2, 0
-_080FA620: .4byte gUnknown_3005DDD
-_080FA624:
- adds r1, 0x1
- cmp r1, 0x3
- ble _080FA60C
- movs r0, 0
-_080FA62C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FA5D4
-
- thumb_func_start sub_80FA634
-sub_80FA634: @ 80FA634
- push {lr}
- adds r2, r0, 0
- adds r0, r1, 0
- lsls r2, 16
- lsrs r2, 16
- adds r1, r2, 0
- bl sub_80FBC70
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _080FA668
- ldr r0, _080FA660 @ =gUnknown_3005450
- ldr r2, _080FA664 @ =0x00000989
- adds r0, r2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x9
- beq _080FA668
- movs r0, 0
- b _080FA66A
- .align 2, 0
-_080FA660: .4byte gUnknown_3005450
-_080FA664: .4byte 0x00000989
-_080FA668:
- movs r0, 0x1
-_080FA66A:
- pop {r1}
- bx r1
- thumb_func_end sub_80FA634
-
- thumb_func_start sub_80FA670
-sub_80FA670: @ 80FA670
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r0, r2, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r1, 16
- lsrs r1, 16
- bl sub_80FBC70
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _080FA6B4 @ =gUnknown_3005450
- ldr r0, _080FA6B8 @ =0x00000989
- adds r5, r0
- adds r5, r4, r5
- strb r6, [r5]
- movs r0, 0x4
- adds r1, r4, 0
- bl rfu_clearSlot
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r4
- lsrs r0, 24
- movs r1, 0x8
- adds r2, r5, 0
- movs r3, 0x1
- bl rfu_NI_setSendData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA6B4: .4byte gUnknown_3005450
-_080FA6B8: .4byte 0x00000989
- thumb_func_end sub_80FA670
-
- thumb_func_start sub_80FA6BC
-sub_80FA6BC: @ 80FA6BC
- push {r4,r5,lr}
- ldr r4, _080FA6F0 @ =gUnknown_3005450
- ldr r0, _080FA6F4 @ =0x0000093d
- adds r5, r4, r0
- movs r0, 0x8
- strb r0, [r5]
- ldr r0, _080FA6F8 @ =0x000008f6
- adds r4, r0
- ldrb r1, [r4]
- movs r0, 0x4
- bl rfu_clearSlot
- ldrb r1, [r4]
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r1
- lsrs r0, 24
- movs r1, 0x8
- adds r2, r5, 0
- movs r3, 0x1
- bl rfu_NI_setSendData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA6F0: .4byte gUnknown_3005450
-_080FA6F4: .4byte 0x0000093d
-_080FA6F8: .4byte 0x000008f6
- thumb_func_end sub_80FA6BC
-
- thumb_func_start sub_80FA6FC
-sub_80FA6FC: @ 80FA6FC
- push {lr}
- adds r2, r0, 0
- adds r0, r1, 0
- lsls r2, 16
- lsrs r2, 16
- adds r1, r2, 0
- bl sub_80FBC70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080FA718
- movs r0, 0x2
- b _080FA732
-_080FA718:
- ldr r1, _080FA72C @ =gRfuSlotStatusNI
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0
- beq _080FA730
- movs r0, 0
- b _080FA732
- .align 2, 0
-_080FA72C: .4byte gRfuSlotStatusNI
-_080FA730:
- movs r0, 0x1
-_080FA732:
- pop {r1}
- bx r1
- thumb_func_end sub_80FA6FC
-
- thumb_func_start sub_80FA738
-sub_80FA738: @ 80FA738
- push {r4,r5,lr}
- bl sub_80FA528
- movs r4, 0
- ldr r0, _080FA77C @ =gUnknown_3005450
- ldr r1, _080FA780 @ =0x0000098d
- adds r5, r0, r1
-_080FA746:
- ldr r1, _080FA784 @ =gRfuSlotStatusNI
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0]
- subs r0, 0x26
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080FA770
- adds r1, r4, r5
- ldrb r0, [r1]
- cmp r0, 0xA
- bne _080FA766
- movs r0, 0xB
- strb r0, [r1]
-_080FA766:
- lsls r1, r4, 24
- lsrs r1, 24
- movs r0, 0x4
- bl rfu_clearSlot
-_080FA770:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FA746
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA77C: .4byte gUnknown_3005450
-_080FA780: .4byte 0x0000098d
-_080FA784: .4byte gRfuSlotStatusNI
- thumb_func_end sub_80FA738
-
- thumb_func_start sub_80FA788
-sub_80FA788: @ 80FA788
- push {r4,r5,lr}
- movs r4, 0
- ldr r1, _080FA800 @ =gUnknown_3005450
- ldr r2, _080FA804 @ =0x0000093d
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080FA7C2
- ldr r2, _080FA808 @ =gRfuSlotStatusNI
- ldr r0, _080FA80C @ =0x000008f6
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x26
- beq _080FA7BA
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x27
- bne _080FA7C2
-_080FA7BA:
- ldrb r1, [r1]
- movs r0, 0x4
- bl rfu_clearSlot
-_080FA7C2:
- ldr r2, _080FA808 @ =gRfuSlotStatusNI
- ldr r5, _080FA800 @ =gUnknown_3005450
- ldr r0, _080FA80C @ =0x000008f6
- adds r1, r5, r0
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x34]
- cmp r0, 0x46
- beq _080FA7E6
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x34]
- cmp r0, 0x48
- bne _080FA814
-_080FA7E6:
- ldrb r1, [r1]
- movs r0, 0x8
- bl rfu_clearSlot
- ldr r2, _080FA810 @ =0x0000093e
- adds r4, r5, r2
- ldrb r0, [r4]
- movs r1, 0
- bl sub_80FB9E4
- ldrb r4, [r4]
- b _080FA82C
- .align 2, 0
-_080FA800: .4byte gUnknown_3005450
-_080FA804: .4byte 0x0000093d
-_080FA808: .4byte gRfuSlotStatusNI
-_080FA80C: .4byte 0x000008f6
-_080FA810: .4byte 0x0000093e
-_080FA814:
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x34]
- cmp r0, 0x47
- bne _080FA82C
- ldrb r1, [r1]
- movs r0, 0x8
- bl rfu_clearSlot
- movs r4, 0x6
-_080FA82C:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FA788
-
- thumb_func_start sub_80FA834
-sub_80FA834: @ 80FA834
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _080FA884 @ =gUnknown_3005450
- adds r0, r5, 0
- adds r0, 0xF1
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080FA85C
- movs r0, 0x9A
- lsls r0, 4
- adds r1, r5, r0
- movs r0, 0
- strb r0, [r1]
- adds r0, r6, 0
- bl DestroyTask
-_080FA85C:
- ldr r2, _080FA888 @ =gTasks
- lsls r1, r6, 2
- adds r0, r1, r6
- lsls r0, 3
- adds r4, r0, r2
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- adds r7, r1, 0
- cmp r0, 0x3
- beq _080FA904
- cmp r0, 0x3
- bgt _080FA88C
- cmp r0, 0x1
- beq _080FA8B4
- cmp r0, 0x1
- bgt _080FA900
- cmp r0, 0
- beq _080FA89E
- b _080FA9BC
- .align 2, 0
-_080FA884: .4byte gUnknown_3005450
-_080FA888: .4byte gTasks
-_080FA88C:
- cmp r0, 0x5
- beq _080FA938
- cmp r0, 0x5
- blt _080FA926
- cmp r0, 0x6
- beq _080FA96C
- cmp r0, 0x65
- beq _080FA8EC
- b _080FA9BC
-_080FA89E:
- bl sub_80F9C50
- lsls r0, 24
- cmp r0, 0
- bne _080FA8AA
- b _080FA9BC
-_080FA8AA:
- bl ResetBlockReceivedFlags
- bl sub_800B0B4
- b _080FA930
-_080FA8B4:
- ldrb r0, [r5, 0xC]
- cmp r0, 0x1
- bne _080FA8F4
- ldr r0, _080FA8CC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FA8D0
- movs r0, 0xF0
- lsls r0, 7
- bl sub_80F9D04
- b _080FA8D8
- .align 2, 0
-_080FA8CC: .4byte gReceivedRemoteLinkPlayers
-_080FA8D0:
- movs r0, 0xEE
- lsls r0, 7
- bl sub_80F9D04
-_080FA8D8:
- ldr r0, _080FA8E8 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r0
- movs r0, 0x65
- strh r0, [r1, 0x8]
- b _080FA9BC
- .align 2, 0
-_080FA8E8: .4byte gTasks
-_080FA8EC:
- ldr r0, _080FA8FC @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- bne _080FA9BC
-_080FA8F4:
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080FA9BC
- .align 2, 0
-_080FA8FC: .4byte gSendCmd
-_080FA900:
- ldrb r0, [r5, 0xD]
- b _080FA92C
-_080FA904:
- ldrb r0, [r5, 0xC]
- cmp r0, 0x1
- bne _080FA930
- bl sub_80F9C50
- lsls r0, 24
- cmp r0, 0
- beq _080FA9BC
- adds r1, r5, 0
- adds r1, 0x5A
- movs r0, 0
- strb r0, [r1]
- movs r0, 0xA1
- lsls r0, 8
- bl sub_80F9D04
- b _080FA930
-_080FA926:
- bl sub_80F9C78
- lsls r0, 24
-_080FA92C:
- cmp r0, 0
- beq _080FA9BC
-_080FA930:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080FA9BC
-_080FA938:
- movs r4, 0
- ldrb r0, [r5, 0xD]
- cmp r4, r0
- bge _080FA956
-_080FA940:
- adds r0, r4, 0
- bl sub_800B110
- lsls r0, r4, 24
- lsrs r0, 24
- bl Rfu_ResetBlockReceivedFlag
- adds r4, 0x1
- ldrb r2, [r5, 0xD]
- cmp r4, r2
- blt _080FA940
-_080FA956:
- ldr r0, _080FA968 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080FA9BC
- .align 2, 0
-_080FA968: .4byte gTasks
-_080FA96C:
- adds r0, r6, 0
- bl DestroyTask
- ldr r1, _080FA9C4 @ =gReceivedRemoteLinkPlayers
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x9A
- lsls r0, 4
- adds r1, r5, r0
- movs r0, 0
- strb r0, [r1]
- movs r1, 0x96
- lsls r1, 2
- movs r0, 0x1
- bl sub_80FEA34
- ldr r2, _080FA9C8 @ =0x0000099e
- adds r1, r5, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _080FA9BC
- movs r4, 0
- adds r2, r1, 0
- movs r3, 0x1
- ldr r0, _080FA9CC @ =0x0000099d
- adds r5, r0
-_080FA9A0:
- ldrb r0, [r2]
- asrs r0, r4
- ands r0, r3
- cmp r0, 0
- beq _080FA9B6
- adds r0, r3, 0
- lsls r0, r4
- strb r0, [r5]
- ldrb r1, [r2]
- eors r0, r1
- strb r0, [r2]
-_080FA9B6:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FA9A0
-_080FA9BC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA9C4: .4byte gReceivedRemoteLinkPlayers
-_080FA9C8: .4byte 0x0000099e
-_080FA9CC: .4byte 0x0000099d
- thumb_func_end sub_80FA834
-
- thumb_func_start sub_80FA9D0
-sub_80FA9D0: @ 80FA9D0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0
- movs r5, 0x1
- ldr r4, _080FA9F8 @ =gUnknown_3005DE6
- movs r3, 0
-_080FA9DE:
- adds r0, r2, 0
- asrs r0, r1
- ands r0, r5
- cmp r0, 0
- beq _080FA9EC
- adds r0, r1, r4
- strb r3, [r0]
-_080FA9EC:
- adds r1, 0x1
- cmp r1, 0x3
- ble _080FA9DE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA9F8: .4byte gUnknown_3005DE6
- thumb_func_end sub_80FA9D0
-
- thumb_func_start sub_80FA9FC
-sub_80FA9FC: @ 80FA9FC
- push {r4-r7,lr}
- adds r2, r0, 0
- ldr r1, _080FAA4C @ =gUnknown_3005450
- ldrb r0, [r2, 0xF]
- strb r0, [r1, 0xD]
- movs r4, 0
- ldr r0, _080FAA50 @ =0x00000996
- adds r5, r1, r0
- adds r3, r2, 0
- adds r3, 0x10
-_080FAA10:
- adds r0, r4, r5
- adds r1, r3, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FAA10
- adds r6, r2, 0
- ldr r5, _080FAA54 @ =gLinkPlayers
- movs r4, 0x4
-_080FAA24:
- adds r0, r5, 0
- adds r1, r6, 0
- adds r1, 0x14
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldr r1, [r1]
- str r1, [r0]
- adds r0, r5, 0
- bl sub_800B284
- adds r6, 0x1C
- adds r5, 0x1C
- subs r4, 0x1
- cmp r4, 0
- bge _080FAA24
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAA4C: .4byte gUnknown_3005450
-_080FAA50: .4byte 0x00000996
-_080FAA54: .4byte gLinkPlayers
- thumb_func_end sub_80FA9FC
-
- thumb_func_start sub_80FAA58
-sub_80FAA58: @ 80FAA58
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, _080FAA8C @ =gUnknown_843EDE4 "PokemonSioInfo"
- adds r1, r4, 0
- bl strcmp
- adds r5, r0, 0
- cmp r5, 0
- bne _080FAA84
- adds r0, r4, 0
- bl sub_80FA9FC
- mov r0, sp
- strh r5, [r0]
- ldr r2, _080FAA90 @ =0x0100007e
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0
- bl ResetBlockReceivedFlag
-_080FAA84:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAA8C: .4byte gUnknown_843EDE4
-_080FAA90: .4byte 0x0100007e
- thumb_func_end sub_80FAA58
-
- thumb_func_start sub_80FAA94
-sub_80FAA94: @ 80FAA94
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, _080FAAF4 @ =gUnknown_3005450
- ldr r2, _080FAAF8 @ =gUnknown_843EC38
- ldr r1, _080FAAFC @ =0x000009a1
- adds r0, r3, r1
- ldrb r1, [r0]
- adds r1, r2
- ldr r2, _080FAB00 @ =0x00000996
- adds r0, r3, r2
- ldrb r1, [r1]
- adds r0, r1
- ldrb r4, [r0]
- adds r0, r3, 0
- adds r0, 0xF1
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080FAAD2
- movs r5, 0x9A
- lsls r5, 4
- adds r1, r3, r5
- movs r0, 0
- strb r0, [r1]
- adds r0, r6, 0
- bl DestroyTask
-_080FAAD2:
- ldr r0, _080FAB04 @ =gTasks
- lsls r2, r6, 2
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r1, [r1, r3]
- adds r3, r0, 0
- adds r7, r2, 0
- cmp r1, 0x5
- bls _080FAAEA
- b _080FACD6
-_080FAAEA:
- lsls r0, r1, 2
- ldr r1, _080FAB08 @ =_080FAB0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FAAF4: .4byte gUnknown_3005450
-_080FAAF8: .4byte gUnknown_843EC38
-_080FAAFC: .4byte 0x000009a1
-_080FAB00: .4byte 0x00000996
-_080FAB04: .4byte gTasks
-_080FAB08: .4byte _080FAB0C
- .align 2, 0
-_080FAB0C:
- .4byte _080FAB24
- .4byte _080FAB44
- .4byte _080FAB5C
- .4byte _080FABA4
- .4byte _080FABEE
- .4byte _080FAC78
-_080FAB24:
- ldr r0, _080FAB40 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- beq _080FAB2E
- b _080FACD6
-_080FAB2E:
- adds r0, r4, 0
- bl ResetBlockReceivedFlag
- movs r0, 0xF0
- lsls r0, 7
- bl sub_80F9D04
- b _080FAC2E
- .align 2, 0
-_080FAB40: .4byte gSendCmd
-_080FAB44:
- ldr r0, _080FAB58 @ =gSendCmd
- ldrh r0, [r0]
- cmp r0, 0
- beq _080FAB4E
- b _080FACD6
-_080FAB4E:
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r3
- b _080FAC36
- .align 2, 0
-_080FAB58: .4byte gSendCmd
-_080FAB5C:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080FAB70
- b _080FACD6
-_080FAB70:
- adds r0, r4, 0
- bl ResetBlockReceivedFlag
- lsls r2, r4, 8
- ldr r0, _080FAB9C @ =gBlockRecvBuffer
- adds r2, r0
- ldr r1, _080FABA0 @ =gLinkPlayers
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- adds r1, r0, 0
- adds r2, 0x10
- ldm r2!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r2!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r2, [r2]
- str r2, [r1]
- bl sub_800B284
- b _080FAC2E
- .align 2, 0
-_080FAB9C: .4byte gBlockRecvBuffer
-_080FABA0: .4byte gLinkPlayers
-_080FABA4:
- ldr r5, _080FAC40 @ =gBlockSendBuffer
- adds r1, r5, 0
- ldr r0, _080FAC44 @ =gUnknown_843EDE4 "PokemonSioInfo"
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldrh r2, [r0]
- strh r2, [r1]
- ldrb r0, [r0, 0x2]
- strb r0, [r1, 0x2]
- ldr r1, _080FAC48 @ =gUnknown_3005450
- ldrb r0, [r1, 0xD]
- strb r0, [r5, 0xF]
- movs r2, 0
- adds r4, r5, 0
- adds r4, 0x10
- ldr r0, _080FAC4C @ =0x00000996
- adds r3, r1, r0
-_080FABC6:
- adds r0, r4, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _080FABC6
- ldr r1, _080FAC50 @ =gLinkPlayers
- adds r0, r5, 0
- adds r0, 0x14
- movs r2, 0x8C
- bl memcpy
- ldr r0, _080FAC54 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_080FABEE:
- ldr r5, _080FAC40 @ =gBlockSendBuffer
- ldr r1, _080FAC48 @ =gUnknown_3005450
- ldrb r0, [r1, 0xD]
- strb r0, [r5, 0xF]
- movs r2, 0
- ldr r3, _080FAC50 @ =gLinkPlayers
- mov r12, r3
- adds r4, r5, 0
- adds r4, 0x10
- ldr r0, _080FAC4C @ =0x00000996
- adds r3, r1, r0
-_080FAC04:
- adds r0, r4, r2
- adds r1, r2, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _080FAC04
- adds r0, r5, 0
- adds r0, 0x14
- mov r1, r12
- movs r2, 0x8C
- bl memcpy
- ldr r1, _080FAC40 @ =gBlockSendBuffer
- movs r0, 0
- movs r2, 0xA0
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- beq _080FACD6
-_080FAC2E:
- ldr r0, _080FAC54 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r0
-_080FAC36:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080FACD6
- .align 2, 0
-_080FAC40: .4byte gBlockSendBuffer
-_080FAC44: .4byte gUnknown_843EDE4
-_080FAC48: .4byte gUnknown_3005450
-_080FAC4C: .4byte 0x00000996
-_080FAC50: .4byte gLinkPlayers
-_080FAC54: .4byte gTasks
-_080FAC58:
- adds r0, r3, 0
- lsls r0, r2
- ldr r2, _080FAC74 @ =0x0000099d
- adds r1, r5, r2
- strb r0, [r1]
- ldrb r1, [r4]
- eors r0, r1
- strb r0, [r4]
- movs r4, 0x9A
- lsls r4, 4
- adds r0, r5, r4
- strb r3, [r0]
- b _080FACD0
- .align 2, 0
-_080FAC74: .4byte 0x0000099d
-_080FAC78:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _080FACD6
- bl GetBlockReceivedStatus
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080FACD6
- mov r0, sp
- movs r4, 0
- strh r4, [r0]
- ldr r1, _080FACE0 @ =gBlockRecvBuffer
- ldr r2, _080FACE4 @ =0x0100007e
- bl CpuSet
- movs r0, 0
- bl ResetBlockReceivedFlag
- ldr r1, _080FACE8 @ =gUnknown_3005450
- movs r5, 0x9A
- lsls r5, 4
- adds r0, r1, r5
- strb r4, [r0]
- ldr r0, _080FACEC @ =0x0000099e
- adds r3, r1, r0
- ldrb r0, [r3]
- cmp r0, 0
- beq _080FACD0
- movs r2, 0
- adds r5, r1, 0
- adds r4, r3, 0
- ldrb r1, [r4]
- movs r3, 0x1
-_080FACC0:
- adds r0, r1, 0
- asrs r0, r2
- ands r0, r3
- cmp r0, 0
- bne _080FAC58
- adds r2, 0x1
- cmp r2, 0x3
- ble _080FACC0
-_080FACD0:
- adds r0, r6, 0
- bl DestroyTask
-_080FACD6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FACE0: .4byte gBlockRecvBuffer
-_080FACE4: .4byte 0x0100007e
-_080FACE8: .4byte gUnknown_3005450
-_080FACEC: .4byte 0x0000099e
- thumb_func_end sub_80FAA94
-
- thumb_func_start sub_80FACF0
-sub_80FACF0: @ 80FACF0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _080FAD2C @ =gUnknown_3005450
- adds r0, r6, 0
- adds r0, 0xF1
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080FAD0E
- adds r0, r5, 0
- bl DestroyTask
-_080FAD0E:
- ldr r1, _080FAD30 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080FAD54
- cmp r0, 0x1
- bgt _080FAD34
- cmp r0, 0
- beq _080FAD3A
- b _080FAD8A
- .align 2, 0
-_080FAD2C: .4byte gUnknown_3005450
-_080FAD30: .4byte gTasks
-_080FAD34:
- cmp r0, 0x2
- beq _080FAD66
- b _080FAD8A
-_080FAD3A:
- ldrb r0, [r6, 0xD]
- cmp r0, 0
- beq _080FAD8A
- bl sub_800B0B4
- ldr r1, _080FAD50 @ =gBlockSendBuffer
- movs r0, 0
- movs r2, 0x3C
- bl SendBlock
- b _080FAD5E
- .align 2, 0
-_080FAD50: .4byte gBlockSendBuffer
-_080FAD54:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _080FAD8A
-_080FAD5E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080FAD8A
-_080FAD66:
- bl GetBlockReceivedStatus
- movs r4, 0x1
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _080FAD8A
- ldr r0, _080FAD90 @ =gBlockRecvBuffer
- bl sub_80FA9FC
- movs r0, 0
- bl ResetBlockReceivedFlag
- ldr r0, _080FAD94 @ =gReceivedRemoteLinkPlayers
- strb r4, [r0]
- adds r0, r5, 0
- bl DestroyTask
-_080FAD8A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAD90: .4byte gBlockRecvBuffer
-_080FAD94: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80FACF0
-
- thumb_func_start sub_80FAD98
-sub_80FAD98: @ 80FAD98
- push {r4-r7,lr}
- ldr r0, _080FAE10 @ =gUnknown_3005450
- adds r7, r0, 0
- adds r7, 0xEE
- ldrb r1, [r7]
- adds r5, r0, 0
- cmp r1, 0x1
- bne _080FAE30
- ldr r0, _080FAE14 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- bne _080FAE30
- ldr r6, _080FAE18 @ =gMain
- ldr r1, [r6, 0x4]
- ldr r0, _080FAE1C @ =c2_mystery_gift_e_reader_run
- cmp r1, r0
- bne _080FADC0
- ldr r1, _080FAE20 @ =gWirelessCommType
- movs r0, 0x2
- strb r0, [r1]
-_080FADC0:
- ldr r4, _080FAE24 @ =CB2_LinkError
- adds r0, r4, 0
- bl SetMainCallback2
- str r4, [r6, 0x8]
- ldrh r0, [r5, 0xA]
- lsls r4, r0, 16
- ldrh r0, [r5, 0x10]
- lsls r0, 8
- orrs r4, r0
- ldrh r0, [r5, 0x12]
- orrs r4, r0
- ldr r1, _080FAE28 @ =0x0000069e
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r6, r0, 0
- ldr r1, _080FAE2C @ =0x000008d2
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r5, r0, 0
- bl sub_80FB9F4
- movs r3, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080FADF8
- movs r3, 0x1
-_080FADF8:
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_800ACBC
- ldrb r0, [r7]
- movs r0, 0x2
- strb r0, [r7]
- bl CloseLink
- b _080FAE62
- .align 2, 0
-_080FAE10: .4byte gUnknown_3005450
-_080FAE14: .4byte gUnknown_3005E10
-_080FAE18: .4byte gMain
-_080FAE1C: .4byte c2_mystery_gift_e_reader_run
-_080FAE20: .4byte gWirelessCommType
-_080FAE24: .4byte CB2_LinkError
-_080FAE28: .4byte 0x0000069e
-_080FAE2C: .4byte 0x000008d2
-_080FAE30:
- ldr r1, _080FAE68 @ =0x000008d3
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080FAE44
- ldr r1, _080FAE6C @ =0x0000069f
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FAE62
-_080FAE44:
- ldr r0, _080FAE70 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _080FAE50
- bl sub_80FEB14
-_080FAE50:
- movs r4, 0xE0
- lsls r4, 7
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80FB9E4
- adds r0, r4, 0
- bl sub_80FB0E8
-_080FAE62:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAE68: .4byte 0x000008d3
-_080FAE6C: .4byte 0x0000069f
-_080FAE70: .4byte gUnknown_3005E10
- thumb_func_end sub_80FAD98
-
- thumb_func_start rfu_REQ_recvData_then_sendData
-rfu_REQ_recvData_then_sendData: @ 80FAE74
- push {lr}
- ldr r0, _080FAE90 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- bne _080FAE8C
- bl rfu_REQ_recvData
- bl rfu_waitREQComplete
- movs r0, 0
- bl rfu_REQ_sendData_wrapper
-_080FAE8C:
- pop {r0}
- bx r0
- .align 2, 0
-_080FAE90: .4byte gUnknown_3005E10
- thumb_func_end rfu_REQ_recvData_then_sendData
-
- thumb_func_start sub_80FAE94
-sub_80FAE94: @ 80FAE94
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, _080FAEC8 @ =gUnknown_3005450
- ldr r1, _080FAECC @ =0x00000985
- adds r0, r4, r1
- strb r5, [r0]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- bl sub_80FDA30
- adds r0, r4, 0
- adds r0, 0xEF
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FAEE8
- ldrb r0, [r4, 0xC]
- cmp r0, 0x1
- beq _080FAED6
- cmp r0, 0x1
- bgt _080FAED0
- cmp r0, 0
- beq _080FAEDC
- b _080FAEE8
- .align 2, 0
-_080FAEC8: .4byte gUnknown_3005450
-_080FAECC: .4byte 0x00000985
-_080FAED0:
- cmp r0, 0x2
- beq _080FAEE4
- b _080FAEE8
-_080FAED6:
- bl sub_80F911C
- b _080FAEE8
-_080FAEDC:
- bl sub_80F9514
- adds r5, r0, 0
- b _080FAEE8
-_080FAEE4:
- bl rfu_REQ_recvData_then_sendData
-_080FAEE8:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FAE94
-
- thumb_func_start sub_80FAEF0
-sub_80FAEF0: @ 80FAEF0
- push {r4,lr}
- movs r4, 0
- ldr r1, _080FAF18 @ =gUnknown_3005450
- adds r0, r1, 0
- adds r0, 0xEF
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FAF10
- ldrb r0, [r1, 0xC]
- cmp r0, 0x1
- bne _080FAF0C
- bl sub_80F9204
- adds r4, r0, 0
-_080FAF0C:
- bl sub_80FAD98
-_080FAF10:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAF18: .4byte gUnknown_3005450
- thumb_func_end sub_80FAEF0
-
- thumb_func_start sub_80FAF1C
-sub_80FAF1C: @ 80FAF1C
- push {lr}
- ldr r0, _080FAF2C @ =gUnknown_3005E00
- ldr r1, _080FAF30 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_080FAF2C: .4byte gUnknown_3005E00
-_080FAF30: .4byte gSaveBlock2Ptr
- thumb_func_end sub_80FAF1C
-
- thumb_func_start sub_80FAF34
-sub_80FAF34: @ 80FAF34
- push {r4,lr}
- ldr r4, _080FAF54 @ =gUnknown_3005440
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xD
- bl memset
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80FCB54
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAF54: .4byte gUnknown_3005440
- thumb_func_end sub_80FAF34
-
- thumb_func_start sub_80FAF58
-sub_80FAF58: @ 80FAF58
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080FAF70 @ =gUnknown_3005440
- adds r1, r4, 0
- bl sub_80FCB54
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAF70: .4byte gUnknown_3005440
- thumb_func_end sub_80FAF58
-
- thumb_func_start sub_80FAF74
-sub_80FAF74: @ 80FAF74
- push {r4,r5,lr}
- ldr r5, _080FAF9C @ =gUnknown_3005440
- movs r4, 0x1
- ands r0, r4
- lsls r0, 4
- ldrb r3, [r5]
- movs r2, 0x11
- negs r2, r2
- ands r2, r3
- orrs r2, r0
- ands r1, r4
- lsls r1, 5
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- orrs r2, r1
- strb r2, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAF9C: .4byte gUnknown_3005440
- thumb_func_end sub_80FAF74
-
- thumb_func_start sub_80FAFA0
-sub_80FAFA0: @ 80FAFA0
- push {r4,r5,lr}
- ldr r5, _080FAFD4 @ =gUnknown_3005440
- lsls r0, 2
- ldrb r4, [r5, 0x9]
- movs r3, 0x3
- ands r3, r4
- orrs r3, r0
- strb r3, [r5, 0x9]
- ldr r3, _080FAFD8 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldrh r3, [r5, 0x8]
- ldr r0, _080FAFDC @ =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r5, 0x8]
- lsls r2, 1
- ldrb r1, [r5, 0xB]
- movs r0, 0x1
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0xB]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAFD4: .4byte gUnknown_3005440
-_080FAFD8: .4byte 0x000003ff
-_080FAFDC: .4byte 0xfffffc00
- thumb_func_end sub_80FAFA0
-
- thumb_func_start sub_80FAFE0
-sub_80FAFE0: @ 80FAFE0
- push {lr}
- lsls r0, 24
- ldr r2, _080FB000 @ =gUnknown_3005440
- lsrs r0, 17
- ldrb r3, [r2, 0xA]
- movs r1, 0x7F
- ands r1, r3
- orrs r1, r0
- strb r1, [r2, 0xA]
- ldr r3, _080FB004 @ =gUnknown_3005E00
- movs r0, 0
- movs r1, 0x2
- bl rfu_REQ_configGameData
- pop {r0}
- bx r0
- .align 2, 0
-_080FB000: .4byte gUnknown_3005440
-_080FB004: .4byte gUnknown_3005E00
- thumb_func_end sub_80FAFE0
-
- thumb_func_start sub_80FB008
-sub_80FB008: @ 80FB008
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080FB016
- bl sub_80FAF58
-_080FB016:
- ldr r2, _080FB028 @ =gUnknown_3005440
- ldr r3, _080FB02C @ =gUnknown_3005E00
- movs r0, 0
- movs r1, 0x2
- bl rfu_REQ_configGameData
- pop {r0}
- bx r0
- .align 2, 0
-_080FB028: .4byte gUnknown_3005440
-_080FB02C: .4byte gUnknown_3005E00
- thumb_func_end sub_80FB008
-
- thumb_func_start sub_80FB030
-sub_80FB030: @ 80FB030
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- bne _080FB0C4
- movs r5, 0
- movs r7, 0
- ldr r3, _080FB0D4 @ =gUnknown_3005450
- ldr r1, _080FB0D8 @ =0x0000099a
- adds r0, r3, r1
- ldr r2, _080FB0DC @ =0x0000099b
- adds r1, r3, r2
- ldrb r2, [r0]
- ldrb r0, [r1]
- adds r1, r0, 0
- eors r1, r2
- mov r8, r1
- movs r4, 0
- movs r6, 0x1
- ldr r2, _080FB0E0 @ =gLinkPlayers
- mov r12, r2
- ldr r0, _080FB0E4 @ =0x00000996
- adds r0, r3
- mov r10, r0
- mov r3, r12
- adds r3, 0x4
-_080FB074:
- mov r0, r8
- asrs r0, r4
- ands r0, r6
- cmp r0, 0
- beq _080FB0B4
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r2, r12
- adds r1, r0, r2
- ldrb r1, [r1, 0x13]
- adds r2, r6, 0
- ands r2, r1
- lsls r2, 3
- adds r0, r3
- ldr r1, [r0]
- movs r0, 0x7
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- orrs r2, r1
- lsls r0, r5, 3
- lsls r2, r0
- orrs r7, r2
- adds r5, 0x1
- mov r0, r9
- subs r0, 0x1
- cmp r5, r0
- beq _080FB0BA
-_080FB0B4:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FB074
-_080FB0BA:
- movs r0, 0x45
- adds r1, r7, 0
- movs r2, 0
- bl sub_80FB008
-_080FB0C4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB0D4: .4byte gUnknown_3005450
-_080FB0D8: .4byte 0x0000099a
-_080FB0DC: .4byte 0x0000099b
-_080FB0E0: .4byte gLinkPlayers
-_080FB0E4: .4byte 0x00000996
- thumb_func_end sub_80FB030
-
- thumb_func_start sub_80FB0E8
-sub_80FB0E8: @ 80FB0E8
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _080FB110 @ =gUnknown_3005450
- adds r3, r2, 0
- adds r3, 0xEE
- ldrb r0, [r3]
- cmp r0, 0
- bne _080FB10A
- ldr r1, _080FB114 @ =gUnknown_3005E10
- ldrh r0, [r1, 0x14]
- strh r0, [r2, 0x10]
- ldrh r0, [r1, 0x16]
- strh r0, [r2, 0x12]
- strh r4, [r2, 0xA]
- ldrb r0, [r3]
- movs r0, 0x1
- strb r0, [r3]
-_080FB10A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB110: .4byte gUnknown_3005450
-_080FB114: .4byte gUnknown_3005E10
- thumb_func_end sub_80FB0E8
-
- thumb_func_start sub_80FB118
-sub_80FB118: @ 80FB118
- ldr r0, _080FB124 @ =gUnknown_3005450
- adds r0, 0xEE
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080FB124: .4byte gUnknown_3005450
- thumb_func_end sub_80FB118
-
- thumb_func_start sub_80FB128
-sub_80FB128: @ 80FB128
- push {lr}
- adds r2, r0, 0
- cmp r2, 0
- bne _080FB140
- ldr r0, _080FB13C @ =gUnknown_3005450
- adds r0, 0xEE
- ldrb r1, [r0]
- strb r2, [r0]
- b _080FB14A
- .align 2, 0
-_080FB13C: .4byte gUnknown_3005450
-_080FB140:
- ldr r0, _080FB150 @ =gUnknown_3005450
- adds r0, 0xEE
- ldrb r1, [r0]
- movs r1, 0x4
- strb r1, [r0]
-_080FB14A:
- pop {r0}
- bx r0
- .align 2, 0
-_080FB150: .4byte gUnknown_3005450
- thumb_func_end sub_80FB128
-
- thumb_func_start sub_80FB154
-sub_80FB154: @ 80FB154
- push {lr}
- ldr r0, _080FB16C @ =gUnknown_3005E10
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_80FBE20
- ldr r1, _080FB170 @ =gUnknown_3005450
- movs r0, 0
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080FB16C: .4byte gUnknown_3005E10
-_080FB170: .4byte gUnknown_3005450
- thumb_func_end sub_80FB154
-
- thumb_func_start sub_80FB174
-sub_80FB174: @ 80FB174
- ldr r1, _080FB17C @ =gUnknown_3005450
- ldr r0, _080FB180 @ =sub_80FB154
- str r0, [r1]
- bx lr
- .align 2, 0
-_080FB17C: .4byte gUnknown_3005450
-_080FB180: .4byte sub_80FB154
- thumb_func_end sub_80FB174
-
- thumb_func_start sub_80FB184
-sub_80FB184: @ 80FB184
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r6, 0
- cmp r4, 0x32
- bne _080FB19A
- b _080FB2D8
-_080FB19A:
- cmp r4, 0x32
- bgt _080FB1CA
- cmp r4, 0x13
- bgt _080FB1B8
- cmp r4, 0x12
- blt _080FB1A8
- b _080FB366
-_080FB1A8:
- cmp r4, 0x10
- bne _080FB1AE
- b _080FB366
-_080FB1AE:
- cmp r4, 0x10
- bgt _080FB204
- cmp r4, 0
- beq _080FB1F6
- b _080FB366
-_080FB1B8:
- cmp r4, 0x30
- bne _080FB1BE
- b _080FB2E4
-_080FB1BE:
- cmp r4, 0x30
- ble _080FB1C4
- b _080FB2CC
-_080FB1C4:
- cmp r4, 0x14
- beq _080FB2A0
- b _080FB366
-_080FB1CA:
- cmp r4, 0x44
- bgt _080FB1DC
- cmp r4, 0x42
- blt _080FB1D4
- b _080FB366
-_080FB1D4:
- cmp r4, 0x33
- bne _080FB1DA
- b _080FB2E4
-_080FB1DA:
- b _080FB366
-_080FB1DC:
- cmp r4, 0xF3
- bne _080FB1E2
- b _080FB332
-_080FB1E2:
- cmp r4, 0xF3
- bgt _080FB1EE
- cmp r4, 0xF0
- bge _080FB1EC
- b _080FB366
-_080FB1EC:
- b _080FB34C
-_080FB1EE:
- cmp r4, 0xFF
- bne _080FB1F4
- b _080FB34C
-_080FB1F4:
- b _080FB366
-_080FB1F6:
- ldr r1, _080FB200 @ =gUnknown_3005450
- movs r0, 0x2
- strh r0, [r1, 0x4]
- b _080FB366
- .align 2, 0
-_080FB200: .4byte gUnknown_3005450
-_080FB204:
- ldr r0, _080FB268 @ =gUnknown_3005E10
- ldrh r0, [r0, 0x14]
- bl sub_80FB564
- movs r5, 0
- movs r0, 0x1
- mov r8, r0
- ldr r1, _080FB26C @ =gUnknown_3005450
- mov r9, r1
- ldr r3, _080FB270 @ =0x0000098d
- add r3, r9
- mov r10, r3
- movs r7, 0x7F
-_080FB21E:
- ldr r0, _080FB268 @ =gUnknown_3005E10
- ldrh r0, [r0, 0x14]
- asrs r0, r5
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _080FB286
- ldr r0, _080FB274 @ =gRfuLinkStatus
- lsls r1, r5, 5
- adds r1, 0x14
- ldr r0, [r0]
- adds r0, r1
- ldrb r0, [r0, 0x10]
- adds r4, r7, 0
- ands r4, r0
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- adds r0, r7, 0
- ands r0, r1
- cmp r4, r0
- bne _080FB27C
- ldr r0, _080FB278 @ =0x00000989
- add r0, r9
- adds r0, r5, r0
- movs r1, 0
- strb r1, [r0]
- mov r3, r10
- adds r2, r5, r3
- strb r1, [r2]
- movs r0, 0x20
- adds r1, r5, 0
- movs r3, 0x1
- bl rfu_setRecvBuffer
- b _080FB286
- .align 2, 0
-_080FB268: .4byte gUnknown_3005E10
-_080FB26C: .4byte gUnknown_3005450
-_080FB270: .4byte 0x0000098d
-_080FB274: .4byte gRfuLinkStatus
-_080FB278: .4byte 0x00000989
-_080FB27C:
- mov r0, r8
- lsls r0, r5
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_080FB286:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080FB21E
- cmp r6, 0
- beq _080FB366
- adds r0, r6, 0
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- b _080FB366
-_080FB2A0:
- ldr r4, _080FB2C0 @ =gUnknown_3005450
- ldr r1, _080FB2C4 @ =0x0000099f
- adds r0, r4, r1
- ldr r1, _080FB2C8 @ =gUnknown_3005E10
- ldrb r2, [r0]
- ldrb r0, [r1]
- cmp r2, r0
- beq _080FB2BA
- eors r0, r2
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
-_080FB2BA:
- movs r0, 0x11
- strh r0, [r4, 0x4]
- b _080FB366
- .align 2, 0
-_080FB2C0: .4byte gUnknown_3005450
-_080FB2C4: .4byte 0x0000099f
-_080FB2C8: .4byte gUnknown_3005E10
-_080FB2CC:
- ldr r0, _080FB2D4 @ =gUnknown_3005450
- adds r0, 0xF0
- b _080FB362
- .align 2, 0
-_080FB2D4: .4byte gUnknown_3005450
-_080FB2D8:
- ldr r0, _080FB2E0 @ =gUnknown_3005450
- adds r0, 0xF0
- movs r1, 0x3
- b _080FB364
- .align 2, 0
-_080FB2E0: .4byte gUnknown_3005450
-_080FB2E4:
- ldr r1, _080FB314 @ =gUnknown_3005450
- adds r2, r1, 0
- adds r2, 0xF0
- movs r0, 0x4
- strb r0, [r2]
- ldr r3, _080FB318 @ =0x0000099a
- adds r1, r3
- ldr r0, _080FB31C @ =gUnknown_3005E10
- ldrb r2, [r0, 0x14]
- ldrb r0, [r1]
- adds r3, r0, 0
- bics r3, r2
- adds r2, r3, 0
- strb r2, [r1]
- ldr r0, _080FB320 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FB328
- cmp r2, 0
- bne _080FB324
- adds r0, r4, 0
- bl sub_80FB0E8
- b _080FB328
- .align 2, 0
-_080FB314: .4byte gUnknown_3005450
-_080FB318: .4byte 0x0000099a
-_080FB31C: .4byte gUnknown_3005E10
-_080FB320: .4byte gReceivedRemoteLinkPlayers
-_080FB324:
- bl sub_80FB174
-_080FB328:
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
- b _080FB366
-_080FB332:
- movs r0, 0x1
- movs r1, 0xF3
- bl sub_80FB9E4
- movs r0, 0xF3
- bl sub_80FB0E8
- ldr r0, _080FB348 @ =gUnknown_3005450
- adds r0, 0xEF
- b _080FB362
- .align 2, 0
-_080FB348: .4byte gUnknown_3005450
-_080FB34C:
- adds r0, r4, 0
- bl sub_80FB0E8
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80FB9E4
- ldr r0, _080FB374 @ =gUnknown_3005450
- ldr r1, _080FB378 @ =0x00000993
- adds r0, r1
- ldrb r1, [r0]
-_080FB362:
- movs r1, 0x1
-_080FB364:
- strb r1, [r0]
-_080FB366:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB374: .4byte gUnknown_3005450
-_080FB378: .4byte 0x00000993
- thumb_func_end sub_80FB184
-
- thumb_func_start sub_80FB37C
-sub_80FB37C: @ 80FB37C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x31
- bne _080FB388
- b _080FB4E8
-_080FB388:
- cmp r4, 0x31
- bgt _080FB3B6
- cmp r4, 0x22
- beq _080FB40C
- cmp r4, 0x22
- bgt _080FB3A4
- cmp r4, 0x20
- beq _080FB3F4
- cmp r4, 0x20
- ble _080FB39E
- b _080FB556
-_080FB39E:
- cmp r4, 0
- beq _080FB3E6
- b _080FB556
-_080FB3A4:
- cmp r4, 0x24
- beq _080FB432
- cmp r4, 0x24
- blt _080FB428
- cmp r4, 0x25
- beq _080FB47C
- cmp r4, 0x30
- beq _080FB486
- b _080FB556
-_080FB3B6:
- cmp r4, 0x44
- bgt _080FB3CC
- cmp r4, 0x42
- blt _080FB3C0
- b _080FB556
-_080FB3C0:
- cmp r4, 0x33
- beq _080FB49A
- cmp r4, 0x33
- bge _080FB3CA
- b _080FB504
-_080FB3CA:
- b _080FB556
-_080FB3CC:
- cmp r4, 0xF3
- bne _080FB3D2
- b _080FB524
-_080FB3D2:
- cmp r4, 0xF3
- bgt _080FB3DE
- cmp r4, 0xF0
- bge _080FB3DC
- b _080FB556
-_080FB3DC:
- b _080FB53C
-_080FB3DE:
- cmp r4, 0xFF
- bne _080FB3E4
- b _080FB53C
-_080FB3E4:
- b _080FB556
-_080FB3E6:
- ldr r1, _080FB3F0 @ =gUnknown_3005450
- movs r0, 0x6
- strh r0, [r1, 0x4]
- b _080FB556
- .align 2, 0
-_080FB3F0: .4byte gUnknown_3005450
-_080FB3F4:
- ldr r0, _080FB400 @ =gUnknown_3005450
- ldr r1, _080FB404 @ =gUnknown_3005E10
- ldrh r1, [r1, 0x14]
- ldr r2, _080FB408 @ =0x00000985
- adds r0, r2
- b _080FB554
- .align 2, 0
-_080FB400: .4byte gUnknown_3005450
-_080FB404: .4byte gUnknown_3005E10
-_080FB408: .4byte 0x00000985
-_080FB40C:
- ldr r0, _080FB41C @ =gUnknown_3005450
- ldr r1, _080FB420 @ =gUnknown_3005E10
- ldrh r1, [r1, 0x14]
- ldr r2, _080FB424 @ =0x000008f6
- adds r0, r2
- ldrb r2, [r0]
- b _080FB554
- .align 2, 0
-_080FB41C: .4byte gUnknown_3005450
-_080FB420: .4byte gUnknown_3005E10
-_080FB424: .4byte 0x000008f6
-_080FB428:
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
- b _080FB556
-_080FB432:
- ldr r4, _080FB468 @ =gUnknown_3005450
- movs r1, 0
- movs r0, 0xB
- strh r0, [r4, 0x4]
- ldr r2, _080FB46C @ =0x0000093d
- adds r0, r4, r2
- strb r1, [r0]
- ldr r0, _080FB470 @ =0x0000093e
- adds r2, r4, r0
- strb r1, [r2]
- ldr r1, _080FB474 @ =0x000008f6
- adds r5, r4, r1
- ldrb r1, [r5]
- movs r0, 0x20
- movs r3, 0x1
- bl rfu_setRecvBuffer
- ldrb r1, [r5]
- ldr r2, _080FB478 @ =0x000008f7
- adds r4, r2
- movs r0, 0x10
- adds r2, r4, 0
- movs r3, 0x46
- bl rfu_setRecvBuffer
- b _080FB556
- .align 2, 0
-_080FB468: .4byte gUnknown_3005450
-_080FB46C: .4byte 0x0000093d
-_080FB470: .4byte 0x0000093e
-_080FB474: .4byte 0x000008f6
-_080FB478: .4byte 0x000008f7
-_080FB47C:
- movs r0, 0x2
- movs r1, 0x25
- bl sub_80FB9E4
- b _080FB556
-_080FB486:
- ldr r0, _080FB4D8 @ =gUnknown_3005450
- adds r2, r0, 0
- adds r2, 0xF0
- movs r1, 0x2
- strb r1, [r2]
- ldr r1, _080FB4DC @ =0x0000093e
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080FB556
-_080FB49A:
- ldr r2, _080FB4D8 @ =gUnknown_3005450
- adds r1, r2, 0
- adds r1, 0xF0
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _080FB4AA
- movs r0, 0x4
- strb r0, [r1]
-_080FB4AA:
- ldr r1, _080FB4DC @ =0x0000093e
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- beq _080FB4BC
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
-_080FB4BC:
- ldr r0, _080FB4E0 @ =gUnknown_843EDF8 "LINK LOSS DISCONNECT!"
- movs r1, 0x5
- movs r2, 0x5
- bl nullsub_87
- ldr r0, _080FB4E4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FB556
- adds r0, r4, 0
- bl sub_80FB0E8
- b _080FB556
- .align 2, 0
-_080FB4D8: .4byte gUnknown_3005450
-_080FB4DC: .4byte 0x0000093e
-_080FB4E0: .4byte gUnknown_843EDF8
-_080FB4E4: .4byte gReceivedRemoteLinkPlayers
-_080FB4E8:
- ldr r0, _080FB4FC @ =gUnknown_3005450
- adds r0, 0xF0
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _080FB500 @ =gUnknown_843EE10 "LINK LOSS RECOVERY NOW"
- movs r1, 0x5
- movs r2, 0x5
- bl nullsub_87
- b _080FB556
- .align 2, 0
-_080FB4FC: .4byte gUnknown_3005450
-_080FB500: .4byte gUnknown_843EE10
-_080FB504:
- ldr r1, _080FB51C @ =gUnknown_3005450
- adds r2, r1, 0
- adds r2, 0xF0
- movs r0, 0x3
- strb r0, [r2]
- ldr r2, _080FB520 @ =0x000008f4
- adds r1, r2
- ldrb r0, [r1]
- movs r0, 0x1
- strb r0, [r1]
- b _080FB556
- .align 2, 0
-_080FB51C: .4byte gUnknown_3005450
-_080FB520: .4byte 0x000008f4
-_080FB524:
- movs r0, 0x1
- movs r1, 0xF3
- bl sub_80FB9E4
- movs r0, 0xF3
- bl sub_80FB0E8
- ldr r0, _080FB538 @ =gUnknown_3005450
- adds r0, 0xEF
- b _080FB552
- .align 2, 0
-_080FB538: .4byte gUnknown_3005450
-_080FB53C:
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80FB9E4
- adds r0, r4, 0
- bl sub_80FB0E8
- ldr r0, _080FB55C @ =gUnknown_3005450
- ldr r1, _080FB560 @ =0x00000993
- adds r0, r1
- ldrb r1, [r0]
-_080FB552:
- movs r1, 0x1
-_080FB554:
- strb r1, [r0]
-_080FB556:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB55C: .4byte gUnknown_3005450
-_080FB560: .4byte 0x00000993
- thumb_func_end sub_80FB37C
-
- thumb_func_start sub_80FB564
-sub_80FB564: @ 80FB564
- push {r4-r6,lr}
- adds r3, r0, 0
- movs r2, 0
- movs r6, 0x1
- ldr r0, _080FB598 @ =gUnknown_3005450
- ldr r4, _080FB59C @ =0x000009a2
- adds r1, r0, r4
- movs r5, 0
- movs r4, 0xFF
-_080FB576:
- adds r0, r3, 0
- asrs r0, r2
- ands r0, r6
- cmp r0, 0
- beq _080FB588
- strb r5, [r1]
- ldrb r0, [r1, 0x4]
- orrs r0, r4
- strb r0, [r1, 0x4]
-_080FB588:
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x3
- ble _080FB576
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB598: .4byte gUnknown_3005450
-_080FB59C: .4byte 0x000009a2
- thumb_func_end sub_80FB564
-
- thumb_func_start sub_80FB5A0
-sub_80FB5A0: @ 80FB5A0
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r3, 0
- movs r2, 0
- movs r4, 0x1
- ldr r6, _080FB5E8 @ =gRfuLinkStatus
- movs r7, 0x7F
-_080FB5AE:
- adds r0, r5, 0
- asrs r0, r2
- ands r0, r4
- cmp r0, 0
- beq _080FB5D4
- lsls r1, r2, 5
- adds r1, 0x14
- ldr r0, [r6]
- adds r0, r1
- ldrb r1, [r0, 0x10]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x45
- bne _080FB5D4
- adds r0, r4, 0
- lsls r0, r2
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
-_080FB5D4:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080FB5AE
- adds r0, r3, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FB5E8: .4byte gRfuLinkStatus
- thumb_func_end sub_80FB5A0
-
- thumb_func_start sub_80FB5EC
-sub_80FB5EC: @ 80FB5EC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x25
- bne _080FB5F8
- b _080FB86C
-_080FB5F8:
- cmp r4, 0x25
- bgt _080FB63A
- cmp r4, 0x14
- bne _080FB602
- b _080FB780
-_080FB602:
- cmp r4, 0x14
- bgt _080FB61A
- cmp r4, 0x11
- beq _080FB69A
- cmp r4, 0x11
- ble _080FB610
- b _080FB9C2
-_080FB610:
- cmp r4, 0
- beq _080FB684
- cmp r4, 0x10
- beq _080FB690
- b _080FB9C2
-_080FB61A:
- cmp r4, 0x22
- bne _080FB620
- b _080FB7E8
-_080FB620:
- cmp r4, 0x22
- bgt _080FB62C
- cmp r4, 0x20
- bne _080FB62A
- b _080FB7D0
-_080FB62A:
- b _080FB9C2
-_080FB62C:
- cmp r4, 0x23
- bne _080FB632
- b _080FB804
-_080FB632:
- cmp r4, 0x24
- bne _080FB638
- b _080FB83A
-_080FB638:
- b _080FB9C2
-_080FB63A:
- cmp r4, 0x44
- bgt _080FB66A
- cmp r4, 0x42
- blt _080FB644
- b _080FB9C2
-_080FB644:
- cmp r4, 0x32
- bne _080FB64A
- b _080FB894
-_080FB64A:
- cmp r4, 0x32
- bgt _080FB65C
- cmp r4, 0x30
- bne _080FB654
- b _080FB8C0
-_080FB654:
- cmp r4, 0x31
- bne _080FB65A
- b _080FB876
-_080FB65A:
- b _080FB9C2
-_080FB65C:
- cmp r4, 0x33
- bne _080FB662
- b _080FB8C8
-_080FB662:
- cmp r4, 0x40
- bne _080FB668
- b _080FB97C
-_080FB668:
- b _080FB9C2
-_080FB66A:
- cmp r4, 0xF3
- bne _080FB670
- b _080FB98C
-_080FB670:
- cmp r4, 0xF3
- bgt _080FB67C
- cmp r4, 0xF0
- bge _080FB67A
- b _080FB9C2
-_080FB67A:
- b _080FB9A8
-_080FB67C:
- cmp r4, 0xFF
- bne _080FB682
- b _080FB9A8
-_080FB682:
- b _080FB9C2
-_080FB684:
- ldr r1, _080FB68C @ =gUnknown_3005450
- movs r0, 0x11
- strh r0, [r1, 0x4]
- b _080FB9C2
- .align 2, 0
-_080FB68C: .4byte gUnknown_3005450
-_080FB690:
- movs r0, 0x4
- movs r1, 0
- bl sub_80FB9E4
- b _080FB9C2
-_080FB69A:
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- bne _080FB758
- ldr r5, _080FB704 @ =gUnknown_3005450
- ldr r1, _080FB708 @ =0x00000991
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FB758
- ldr r0, _080FB70C @ =gUnknown_3005E10
- ldrh r0, [r0, 0x14]
- bl sub_80FB5A0
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080FB722
- adds r0, r4, 0
- bl sub_80F886C
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x1
- mov r12, r2
- mov r1, r12
- lsls r1, r0
- lsls r1, 24
- lsrs r1, 24
- ldr r7, _080FB710 @ =0x0000099e
- adds r6, r5, r7
- ldrb r2, [r6]
- cmp r2, 0
- bne _080FB714
- movs r0, 0x9A
- lsls r0, 4
- adds r3, r5, r0
- ldrb r0, [r3]
- cmp r0, 0
- bne _080FB714
- subs r7, 0x1
- adds r0, r5, r7
- strb r1, [r0]
- eors r1, r4
- orrs r1, r2
- strb r1, [r6]
- mov r0, r12
- strb r0, [r3]
- b _080FB722
- .align 2, 0
-_080FB704: .4byte gUnknown_3005450
-_080FB708: .4byte 0x00000991
-_080FB70C: .4byte gUnknown_3005E10
-_080FB710: .4byte 0x0000099e
-_080FB714:
- ldr r0, _080FB744 @ =gUnknown_3005450
- ldr r1, _080FB748 @ =0x0000099e
- adds r0, r1
- ldrb r2, [r0]
- adds r1, r4, 0
- orrs r1, r2
- strb r1, [r0]
-_080FB722:
- ldr r0, _080FB74C @ =gUnknown_3005E10
- ldrh r1, [r0, 0x14]
- cmp r4, r1
- beq _080FB772
- ldr r2, _080FB744 @ =gUnknown_3005450
- ldr r7, _080FB750 @ =0x0000099b
- adds r3, r2, r7
- adds r0, r4, 0
- eors r0, r1
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- ldr r0, _080FB754 @ =0x0000099c
- adds r2, r0
- movs r0, 0x2
- strb r0, [r2]
- b _080FB772
- .align 2, 0
-_080FB744: .4byte gUnknown_3005450
-_080FB748: .4byte 0x0000099e
-_080FB74C: .4byte gUnknown_3005E10
-_080FB750: .4byte 0x0000099b
-_080FB754: .4byte 0x0000099c
-_080FB758:
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x54
- bne _080FB772
- ldr r0, _080FB77C @ =gUnknown_3005E10
- ldrb r0, [r0]
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
-_080FB772:
- ldr r0, _080FB77C @ =gUnknown_3005E10
- ldrh r0, [r0, 0x14]
- bl sub_80FB564
- b _080FB9C2
- .align 2, 0
-_080FB77C: .4byte gUnknown_3005E10
-_080FB780:
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- beq _080FB7B6
- ldr r4, _080FB7C8 @ =gUnknown_3005E10
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- bls _080FB7B6
- ldrb r0, [r4, 0x14]
- bl sub_80F886C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x80
- lsls r1, 17
- lsls r1, r0
- lsrs r1, 24
- ldrb r0, [r4]
- eors r1, r0
- adds r0, r1, 0
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
-_080FB7B6:
- ldr r1, _080FB7CC @ =gUnknown_3005450
- ldrh r0, [r1, 0x4]
- cmp r0, 0xF
- beq _080FB7C0
- b _080FB9C2
-_080FB7C0:
- movs r0, 0x10
- strh r0, [r1, 0x4]
- b _080FB9C2
- .align 2, 0
-_080FB7C8: .4byte gUnknown_3005E10
-_080FB7CC: .4byte gUnknown_3005450
-_080FB7D0:
- ldr r0, _080FB7DC @ =gUnknown_3005450
- ldr r1, _080FB7E0 @ =gUnknown_3005E10
- ldrh r1, [r1, 0x14]
- ldr r2, _080FB7E4 @ =0x00000985
- adds r0, r2
- b _080FB9C0
- .align 2, 0
-_080FB7DC: .4byte gUnknown_3005450
-_080FB7E0: .4byte gUnknown_3005E10
-_080FB7E4: .4byte 0x00000985
-_080FB7E8:
- ldr r0, _080FB7F8 @ =gUnknown_3005450
- ldr r1, _080FB7FC @ =gUnknown_3005E10
- ldrh r1, [r1, 0x14]
- ldr r7, _080FB800 @ =0x000008f6
- adds r0, r7
- ldrb r2, [r0]
- b _080FB9C0
- .align 2, 0
-_080FB7F8: .4byte gUnknown_3005450
-_080FB7FC: .4byte gUnknown_3005E10
-_080FB800: .4byte 0x000008f6
-_080FB804:
- ldr r1, _080FB824 @ =gUnknown_3005450
- movs r0, 0x12
- strh r0, [r1, 0x4]
- ldr r0, _080FB828 @ =0x00000987
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x1
- bhi _080FB830
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _080FB82C @ =sub_80FC028
- movs r1, 0x2
- bl CreateTask
- b _080FB9C2
- .align 2, 0
-_080FB824: .4byte gUnknown_3005450
-_080FB828: .4byte 0x00000987
-_080FB82C: .4byte sub_80FC028
-_080FB830:
- movs r0, 0x2
- movs r1, 0x23
- bl sub_80FB9E4
- b _080FB9C2
-_080FB83A:
- ldr r4, _080FB860 @ =gUnknown_3005450
- movs r0, 0xD
- strh r0, [r4, 0x4]
- movs r0, 0x3
- movs r1, 0
- bl sub_80FB9E4
- ldr r1, _080FB864 @ =0x000008f6
- adds r0, r4, r1
- ldrb r1, [r0]
- ldr r2, _080FB868 @ =0x000008f7
- adds r4, r2
- movs r0, 0x10
- adds r2, r4, 0
- movs r3, 0x46
- bl rfu_setRecvBuffer
- b _080FB9C2
- .align 2, 0
-_080FB860: .4byte gUnknown_3005450
-_080FB864: .4byte 0x000008f6
-_080FB868: .4byte 0x000008f7
-_080FB86C:
- movs r0, 0x2
- movs r1, 0x25
- bl sub_80FB9E4
- b _080FB9C2
-_080FB876:
- ldr r0, _080FB88C @ =gUnknown_3005E10
- ldrb r1, [r0]
- ldrh r0, [r0, 0x14]
- ands r1, r0
- cmp r1, 0
- bne _080FB884
- b _080FB9C2
-_080FB884:
- ldr r0, _080FB890 @ =gUnknown_3005450
- adds r0, 0xF0
- movs r1, 0x1
- b _080FB9C0
- .align 2, 0
-_080FB88C: .4byte gUnknown_3005E10
-_080FB890: .4byte gUnknown_3005450
-_080FB894:
- ldr r2, _080FB8B4 @ =gUnknown_3005450
- adds r1, r2, 0
- adds r1, 0xF0
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, _080FB8B8 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FB8AA
- b _080FB9C2
-_080FB8AA:
- ldr r7, _080FB8BC @ =0x000008f4
- adds r0, r2, r7
- ldrb r1, [r0]
- movs r1, 0x1
- b _080FB9C0
- .align 2, 0
-_080FB8B4: .4byte gUnknown_3005450
-_080FB8B8: .4byte gRfuLinkStatus
-_080FB8BC: .4byte 0x000008f4
-_080FB8C0:
- ldr r0, _080FB900 @ =gUnknown_3005450
- adds r0, 0xF0
- movs r1, 0x2
- strb r1, [r0]
-_080FB8C8:
- ldr r2, _080FB900 @ =gUnknown_3005450
- adds r1, r2, 0
- adds r1, 0xF0
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _080FB8D8
- movs r0, 0x4
- strb r0, [r1]
-_080FB8D8:
- ldrb r0, [r2, 0xC]
- cmp r0, 0x1
- bne _080FB916
- ldr r0, _080FB904 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FB934
- ldr r0, _080FB908 @ =0x0000099a
- adds r2, r0
- ldr r0, _080FB90C @ =gUnknown_3005E10
- ldrb r1, [r0, 0x14]
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- cmp r0, 0
- bne _080FB910
- adds r0, r4, 0
- bl sub_80FB0E8
- b _080FB934
- .align 2, 0
-_080FB900: .4byte gUnknown_3005450
-_080FB904: .4byte gReceivedRemoteLinkPlayers
-_080FB908: .4byte 0x0000099a
-_080FB90C: .4byte gUnknown_3005E10
-_080FB910:
- bl sub_80FB174
- b _080FB934
-_080FB916:
- ldr r1, _080FB964 @ =0x0000099c
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080FB934
- ldr r0, _080FB968 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FB934
- adds r0, r4, 0
- bl sub_80FB0E8
- movs r0, 0
- bl sub_80FD760
-_080FB934:
- ldr r0, _080FB96C @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080FB95A
- ldr r0, _080FB970 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _080FB95A
- ldr r0, _080FB974 @ =sub_80F8B34
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FB95A
- ldr r1, _080FB978 @ =gUnknown_3005450
- movs r0, 0x11
- strh r0, [r1, 0x4]
-_080FB95A:
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80FB9E4
- b _080FB9C2
- .align 2, 0
-_080FB964: .4byte 0x0000099c
-_080FB968: .4byte gReceivedRemoteLinkPlayers
-_080FB96C: .4byte gRfuLinkStatus
-_080FB970: .4byte gUnknown_3005E10
-_080FB974: .4byte sub_80F8B34
-_080FB978: .4byte gUnknown_3005450
-_080FB97C:
- ldr r0, _080FB984 @ =gUnknown_3005450
- ldr r2, _080FB988 @ =0x0000099b
- adds r0, r2
- b _080FB9BE
- .align 2, 0
-_080FB984: .4byte gUnknown_3005450
-_080FB988: .4byte 0x0000099b
-_080FB98C:
- movs r0, 0x1
- movs r1, 0xF3
- bl sub_80FB9E4
- movs r0, 0xF3
- bl sub_80FB0E8
- ldr r0, _080FB9A4 @ =gUnknown_3005450
- adds r0, 0xEF
- movs r1, 0x1
- b _080FB9C0
- .align 2, 0
-_080FB9A4: .4byte gUnknown_3005450
-_080FB9A8:
- adds r0, r4, 0
- bl sub_80FB0E8
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80FB9E4
- ldr r0, _080FB9C8 @ =gUnknown_3005450
- ldr r7, _080FB9CC @ =0x00000993
- adds r0, r7
- ldrb r1, [r0]
-_080FB9BE:
- movs r1, 0
-_080FB9C0:
- strb r1, [r0]
-_080FB9C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB9C8: .4byte gUnknown_3005450
-_080FB9CC: .4byte 0x00000993
- thumb_func_end sub_80FB5EC
-
- thumb_func_start sub_80FB9D0
-sub_80FB9D0: @ 80FB9D0
- ldr r0, _080FB9DC @ =gUnknown_3005450
- ldr r1, _080FB9E0 @ =0x0000099c
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080FB9DC: .4byte gUnknown_3005450
-_080FB9E0: .4byte 0x0000099c
- thumb_func_end sub_80FB9D0
-
- thumb_func_start sub_80FB9E4
-sub_80FB9E4: @ 80FB9E4
- ldr r2, _080FB9F0 @ =gUnknown_3005450
- adds r3, r2, 0
- adds r3, 0xF1
- strb r0, [r3]
- strh r1, [r2, 0xA]
- bx lr
- .align 2, 0
-_080FB9F0: .4byte gUnknown_3005450
- thumb_func_end sub_80FB9E4
-
- thumb_func_start sub_80FB9F4
-sub_80FB9F4: @ 80FB9F4
- ldr r0, _080FB9FC @ =gUnknown_3005450
- adds r0, 0xF1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080FB9FC: .4byte gUnknown_3005450
- thumb_func_end sub_80FB9F4
-
- thumb_func_start sub_80FBA00
-sub_80FBA00: @ 80FBA00
- push {lr}
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x1
- bls _080FBA14
- movs r0, 0
- b _080FBA16
-_080FBA14:
- movs r0, 0x1
-_080FBA16:
- pop {r1}
- bx r1
- thumb_func_end sub_80FBA00
-
- thumb_func_start sub_80FBA1C
-sub_80FBA1C: @ 80FBA1C
- ldr r0, _080FBA28 @ =gUnknown_3005450
- movs r1, 0x9A
- lsls r1, 4
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080FBA28: .4byte gUnknown_3005450
- thumb_func_end sub_80FBA1C
-
- thumb_func_start Rfu_IsMaster
-Rfu_IsMaster: @ 80FBA2C
- ldr r0, _080FBA34 @ =gUnknown_3005450
- ldrb r0, [r0, 0xC]
- bx lr
- .align 2, 0
-_080FBA34: .4byte gUnknown_3005450
- thumb_func_end Rfu_IsMaster
-
- thumb_func_start RFUVSync
-RFUVSync: @ 80FBA38
- push {lr}
- bl rfu_syncVBlank_
- pop {r0}
- bx r0
- thumb_func_end RFUVSync
-
- thumb_func_start sub_80FBA44
-sub_80FBA44: @ 80FBA44
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _080FBA5C @ =gRecvCmds
- ldr r2, _080FBA60 @ =0x05000014
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080FBA5C: .4byte gRecvCmds
-_080FBA60: .4byte 0x05000014
- thumb_func_end sub_80FBA44
-
- thumb_func_start sub_80FBA64
-sub_80FBA64: @ 80FBA64
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80FBA64
-
- thumb_func_start sub_80FBA78
-sub_80FBA78: @ 80FBA78
- push {r4,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl ResetPaletteFade
- ldr r0, _080FBAF4 @ =sub_80FBA64
- bl SetVBlankCallback
- bl IsWirelessAdapterConnected
- lsls r0, 24
- cmp r0, 0
- beq _080FBAEC
- ldr r1, _080FBAF8 @ =gLinkType
- ldr r2, _080FBAFC @ =0x00001111
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_800B1F4
- bl OpenLink
- ldr r0, _080FBB00 @ =gMain
- ldrh r0, [r0, 0x24]
- bl SeedRng
- movs r4, 0
-_080FBAB4:
- bl Random
- ldr r1, _080FBB04 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- adds r1, 0xA
- adds r1, r4
- strb r0, [r1]
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FBAB4
- movs r1, 0xAA
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80FBB20
- ldr r0, _080FBB08 @ =sub_80FBB74
- bl SetMainCallback2
-_080FBAEC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBAF4: .4byte sub_80FBA64
-_080FBAF8: .4byte gLinkType
-_080FBAFC: .4byte 0x00001111
-_080FBB00: .4byte gMain
-_080FBB04: .4byte gSaveBlock2Ptr
-_080FBB08: .4byte sub_80FBB74
- thumb_func_end sub_80FBA78
-
- thumb_func_start sub_80FBB0C
-sub_80FBB0C: @ 80FBB0C
- push {lr}
- ldr r0, _080FBB1C @ =sub_80F8B34
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080FBB1C: .4byte sub_80F8B34
- thumb_func_end sub_80FBB0C
-
- thumb_func_start sub_80FBB20
-sub_80FBB20: @ 80FBB20
- push {r4,lr}
- ldr r4, _080FBB44 @ =nullsub_89
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080FBB3E
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- ldr r1, _080FBB48 @ =gUnknown_3005450
- adds r1, 0x66
- strb r0, [r1]
-_080FBB3E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBB44: .4byte nullsub_89
-_080FBB48: .4byte gUnknown_3005450
- thumb_func_end sub_80FBB20
-
- thumb_func_start sub_80FBB4C
-sub_80FBB4C: @ 80FBB4C
- push {lr}
- ldr r0, _080FBB6C @ =nullsub_89
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FBB66
- ldr r0, _080FBB70 @ =gUnknown_3005450
- adds r0, 0x66
- ldrb r0, [r0]
- bl DestroyTask
-_080FBB66:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBB6C: .4byte nullsub_89
-_080FBB70: .4byte gUnknown_3005450
- thumb_func_end sub_80FBB4C
-
- thumb_func_start sub_80FBB74
-sub_80FBB74: @ 80FBB74
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80FBB74
-
- thumb_func_start sub_80FBB8C
-sub_80FBB8C: @ 80FBB8C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r1, _080FBBC4 @ =gUnknown_3005450
- movs r0, 0x1
- strb r0, [r1, 0xC]
- bl sub_80FAF1C
- ldr r0, _080FBBC8 @ =sub_80FB184
- movs r1, 0
- bl sub_80FD430
- ldr r2, _080FBBCC @ =gUnknown_203ABF0
- adds r1, r2, 0
- ldr r0, _080FBBD0 @ =gUnknown_843EBB4
- ldm r0!, {r3,r5,r6}
- stm r1!, {r3,r5,r6}
- ldm r0!, {r3,r5,r6}
- stm r1!, {r3,r5,r6}
- ldr r0, _080FBBD4 @ =gUnknown_843EBCC
- subs r4, 0x1
- adds r4, r0
- ldrb r0, [r4]
- strh r0, [r2, 0x2]
- bl sub_80F8E74
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBBC4: .4byte gUnknown_3005450
-_080FBBC8: .4byte sub_80FB184
-_080FBBCC: .4byte gUnknown_203ABF0
-_080FBBD0: .4byte gUnknown_843EBB4
-_080FBBD4: .4byte gUnknown_843EBCC
- thumb_func_end sub_80FBB8C
-
- thumb_func_start sub_80FBBD8
-sub_80FBBD8: @ 80FBBD8
- push {lr}
- ldr r1, _080FBBF4 @ =gUnknown_3005450
- movs r0, 0
- strb r0, [r1, 0xC]
- bl sub_80FAF1C
- ldr r0, _080FBBF8 @ =sub_80FB37C
- ldr r1, _080FBBFC @ =sub_80F8D20
- bl sub_80FD430
- bl sub_80F8F10
- pop {r0}
- bx r0
- .align 2, 0
-_080FBBF4: .4byte gUnknown_3005450
-_080FBBF8: .4byte sub_80FB37C
-_080FBBFC: .4byte sub_80F8D20
- thumb_func_end sub_80FBBD8
-
- thumb_func_start sub_80FBC00
-sub_80FBC00: @ 80FBC00
- push {r4-r7,lr}
- ldr r0, _080FBC4C @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080FBC46
- ldr r4, _080FBC50 @ =gUnknown_3005450
- movs r5, 0
- movs r0, 0x2
- strb r0, [r4, 0xC]
- bl sub_80FAF1C
- ldr r0, _080FBC54 @ =sub_80FB5EC
- movs r1, 0
- bl sub_80FD430
- ldr r2, _080FBC58 @ =gUnknown_203ABF0
- adds r1, r2, 0
- ldr r0, _080FBC5C @ =gUnknown_843EBB4
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- strb r5, [r2, 0x11]
- movs r0, 0x96
- lsls r0, 2
- strh r0, [r2, 0x12]
- ldr r0, _080FBC60 @ =sub_80F8B34
- movs r1, 0x1
- bl CreateTask
- adds r4, 0x67
- strb r0, [r4]
-_080FBC46:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBC4C: .4byte gUnknown_203ADFA
-_080FBC50: .4byte gUnknown_3005450
-_080FBC54: .4byte sub_80FB5EC
-_080FBC58: .4byte gUnknown_203ABF0
-_080FBC5C: .4byte gUnknown_843EBB4
-_080FBC60: .4byte sub_80F8B34
- thumb_func_end sub_80FBC00
-
- thumb_func_start sub_80FBC64
-sub_80FBC64: @ 80FBC64
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- ldrb r0, [r0]
- orrs r0, r1
- bx lr
- thumb_func_end sub_80FBC64
-
- thumb_func_start sub_80FBC70
-sub_80FBC70: @ 80FBC70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- movs r0, 0xFF
- mov r9, r0
- movs r7, 0
- ldr r1, _080FBCF4 @ =gRfuLinkStatus
- mov r8, r1
-_080FBC8E:
- lsls r4, r7, 5
- adds r5, r4, 0
- adds r5, 0x14
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5
- adds r0, 0x8
- bl sub_80FBC64
- lsls r0, 16
- lsrs r6, r0, 16
- mov r1, r8
- ldr r0, [r1]
- adds r0, r4
- ldrh r0, [r0, 0x18]
- bl sub_80FA44C
- cmp r0, 0
- beq _080FBCD8
- mov r0, r8
- ldr r1, [r0]
- adds r1, r5
- adds r1, 0x15
- ldr r0, [sp]
- bl StringCompare
- cmp r0, 0
- bne _080FBCD8
- cmp r10, r6
- bne _080FBCD8
- mov r9, r7
- mov r1, r8
- ldr r0, [r1]
- adds r0, r4
- ldrb r0, [r0, 0x16]
- cmp r0, 0xFF
- bne _080FBCE2
-_080FBCD8:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _080FBC8E
-_080FBCE2:
- mov r0, r9
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FBCF4: .4byte gRfuLinkStatus
- thumb_func_end sub_80FBC70
-
- thumb_func_start sub_80FBCF8
-sub_80FBCF8: @ 80FBCF8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r0, r6, 24
- lsrs r0, 24
- bl rfu_REQ_disconnect
- bl rfu_waitREQComplete
- ldr r4, _080FBD3C @ =gUnknown_3005450
- ldr r0, _080FBD40 @ =0x0000099a
- adds r5, r4, r0
- ldrb r0, [r5]
- bics r0, r6
- strb r0, [r5]
- ldr r1, _080FBD44 @ =0x00000992
- adds r6, r4, r1
- ldrb r1, [r6]
- movs r0, 0x1
- bl rfu_clearSlot
- ldrb r0, [r5]
- ldr r1, _080FBD48 @ =0x0000093f
- adds r4, r1
- adds r1, r4, 0
- movs r2, 0x46
- bl rfu_UNI_setSendData
- ldrb r0, [r5]
- bl sub_80F886C
- strb r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBD3C: .4byte gUnknown_3005450
-_080FBD40: .4byte 0x0000099a
-_080FBD44: .4byte 0x00000992
-_080FBD48: .4byte 0x0000093f
- thumb_func_end sub_80FBCF8
-
- thumb_func_start sub_80FBD4C
-sub_80FBD4C: @ 80FBD4C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80FBC70
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _080FBD66
- movs r0, 0x1
- lsls r0, r1
- bl sub_80FBCF8
-_080FBD66:
- pop {r0}
- bx r0
- thumb_func_end sub_80FBD4C
-
- thumb_func_start sub_80FBD6C
-sub_80FBD6C: @ 80FBD6C
- push {r4-r6,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _080FBDAC
- movs r3, 0
- movs r2, 0
- ldr r5, _080FBDB4 @ =gUnknown_3005DE6
- adds r6, r5, 0x4
-_080FBD7C:
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, r4
- bne _080FBD9A
- ldrb r0, [r6]
- asrs r0, r2
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FBD9A
- adds r0, r1, 0
- lsls r0, r2
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
-_080FBD9A:
- adds r2, 0x1
- cmp r2, 0x3
- ble _080FBD7C
- cmp r3, 0
- beq _080FBDAC
- adds r0, r3, 0
- movs r1, 0x2
- bl sub_80FBE20
-_080FBDAC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBDB4: .4byte gUnknown_3005DE6
- thumb_func_end sub_80FBD6C
-
- thumb_func_start sub_80FBDB8
-sub_80FBDB8: @ 80FBDB8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _080FBE10 @ =gSendCmd
- ldrh r0, [r6]
- cmp r0, 0
- bne _080FBE08
- ldr r5, _080FBE14 @ =gUnknown_3005450
- movs r1, 0x9A
- lsls r1, 4
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FBE08
- movs r0, 0xED
- lsls r0, 8
- bl sub_80F9D04
- ldr r1, _080FBE18 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- strh r1, [r6, 0x2]
- ldrh r1, [r0, 0xA]
- strh r1, [r6, 0x4]
- ldr r1, _080FBE1C @ =gUnknown_843EC41
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r0, r1
- ldrb r1, [r5, 0xD]
- ldrb r0, [r0]
- subs r1, r0
- strb r1, [r5, 0xD]
- ldrb r0, [r5, 0xD]
- strh r0, [r6, 0x6]
- adds r0, r4, 0
- bl DestroyTask
-_080FBE08:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBE10: .4byte gSendCmd
-_080FBE14: .4byte gUnknown_3005450
-_080FBE18: .4byte gTasks
-_080FBE1C: .4byte gUnknown_843EC41
- thumb_func_end sub_80FBDB8
-
- thumb_func_start sub_80FBE20
-sub_80FBE20: @ 80FBE20
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r5, _080FBE50 @ =sub_80FBDB8
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _080FBE58
- adds r0, r5, 0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080FBE54 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- b _080FBE68
- .align 2, 0
-_080FBE50: .4byte sub_80FBDB8
-_080FBE54: .4byte gTasks
-_080FBE58:
- ldr r0, _080FBE7C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- orrs r4, r0
- strh r4, [r1, 0x8]
-_080FBE68:
- ldr r1, _080FBE7C @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0xA]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBE7C: .4byte gTasks
- thumb_func_end sub_80FBE20
-
- thumb_func_start sub_80FBE80
-sub_80FBE80: @ 80FBE80
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080FBED8 @ =gTasks+0x8
- adds r4, r0, r1
- bl sub_80F8EA4
- lsls r0, 24
- cmp r0, 0
- beq _080FBF30
- adds r0, r4, 0
- adds r0, 0x10
- bl sub_80FBC64
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBC70
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080FBF18
- ldr r0, _080FBEDC @ =gRfuLinkStatus
- ldr r0, [r0]
- lsls r1, r2, 5
- adds r0, r1
- ldrb r0, [r0, 0x16]
- cmp r0, 0xFF
- beq _080FBEE8
- ldr r0, _080FBEE0 @ =gUnknown_3005450
- ldr r1, _080FBEE4 @ =0x000008f5
- adds r0, r1
- strb r2, [r0]
- bl sub_80F8ECC
- cmp r0, 0
- beq _080FBF36
- b _080FBF10
- .align 2, 0
-_080FBED8: .4byte gTasks+0x8
-_080FBEDC: .4byte gRfuLinkStatus
-_080FBEE0: .4byte gUnknown_3005450
-_080FBEE4: .4byte 0x000008f5
-_080FBEE8:
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r5, 0x7F
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x15
- beq _080FBF30
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x16
- beq _080FBF30
- movs r1, 0xE0
- lsls r1, 7
- movs r0, 0x2
- bl sub_80FB9E4
-_080FBF10:
- adds r0, r6, 0
- bl DestroyTask
- b _080FBF36
-_080FBF18:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- ldr r0, _080FBF28 @ =gUnknown_3005450
- ldr r1, _080FBF2C @ =0x000008f5
- adds r0, r1
- strb r2, [r0]
- b _080FBF36
- .align 2, 0
-_080FBF28: .4byte gUnknown_3005450
-_080FBF2C: .4byte 0x000008f5
-_080FBF30:
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
-_080FBF36:
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF0
- ble _080FBF4E
- movs r1, 0xE0
- lsls r1, 7
- movs r0, 0x2
- bl sub_80FB9E4
- adds r0, r6, 0
- bl DestroyTask
-_080FBF4E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80FBE80
-
- thumb_func_start sub_80FBF54
-sub_80FBF54: @ 80FBF54
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- ldr r0, _080FBF8C @ =gUnknown_3005450
- adds r0, 0xF1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080FBF90 @ =sub_80FBE80
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080FBF94 @ =gTasks+0x8
- adds r4, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl StringCopy
- strh r5, [r4, 0x10]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBF8C: .4byte gUnknown_3005450
-_080FBF90: .4byte sub_80FBE80
-_080FBF94: .4byte gTasks+0x8
- thumb_func_end sub_80FBF54
-
- thumb_func_start sub_80FBF98
-sub_80FBF98: @ 80FBF98
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- bl sub_80F9800
- ldrb r1, [r0, 0xA]
- movs r2, 0x7F
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0x45
- bne _080FBFBE
- ldrb r1, [r4, 0xA]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0x45
- beq _080FC01E
-_080FBFBA:
- movs r0, 0x1
- b _080FC020
-_080FBFBE:
- ldrb r1, [r4, 0xA]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0x40
- bne _080FBFBA
- cmp r5, 0x44
- bne _080FC01E
- ldr r5, _080FBFEC @ =gUnknown_300555A
- ldrh r0, [r5, 0x8]
- ldr r3, _080FBFF0 @ =0x000003ff
- adds r2, r3, 0
- ands r2, r0
- movs r0, 0xCE
- lsls r0, 1
- cmp r2, r0
- bne _080FBFF4
- ldrh r1, [r4, 0x8]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, r2
- beq _080FC01E
- b _080FBFBA
- .align 2, 0
-_080FBFEC: .4byte gUnknown_300555A
-_080FBFF0: .4byte 0x000003ff
-_080FBFF4:
- ldrh r1, [r4, 0x8]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, r2
- bne _080FBFBA
- ldrb r2, [r4, 0xB]
- movs r0, 0xFE
- ldrb r3, [r5, 0xB]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _080FBFBA
- ldrb r2, [r4, 0x9]
- movs r0, 0xFC
- ldrb r3, [r5, 0x9]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _080FBFBA
-_080FC01E:
- movs r0, 0
-_080FC020:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FBF98
-
- thumb_func_start sub_80FC028
-sub_80FC028: @ 80FC028
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- mov r8, r5
- ldr r6, _080FC0E0 @ =gUnknown_3005450
- adds r0, r6, 0
- adds r0, 0xF1
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _080FC046
- adds r0, r5, 0
- bl DestroyTask
-_080FC046:
- ldr r1, _080FC0E4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- movs r1, 0x96
- lsls r1, 17
- cmp r0, r1
- ble _080FC070
- movs r1, 0xE0
- lsls r1, 7
- movs r0, 0x2
- bl sub_80FB9E4
- adds r0, r5, 0
- bl DestroyTask
-_080FC070:
- ldr r1, _080FC0E8 @ =0x00000985
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC108
- ldr r0, _080FC0EC @ =gUnknown_3005E10
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- bne _080FC108
- movs r2, 0x86
- lsls r2, 1
- adds r0, r6, r2
- bl sub_80FBC64
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080FC0F0 @ =0x00000119
- adds r0, r6, r2
- bl sub_80FBC70
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080FC108
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- ldr r7, _080FC0F4 @ =gRfuLinkStatus
- lsls r4, r2, 5
- adds r2, r4, 0
- adds r2, 0x14
- ldr r1, [r7]
- adds r1, r2
- adds r1, 0x6
- bl sub_80FBF98
- cmp r0, 0
- bne _080FC0F8
- ldr r0, [r7]
- adds r1, r0, r4
- ldrb r0, [r1, 0x16]
- cmp r0, 0xFF
- beq _080FC108
- ldrh r0, [r1, 0x14]
- movs r1, 0x5A
- bl sub_80FD610
- lsls r0, 24
- cmp r0, 0
- bne _080FC108
- movs r0, 0xA
- strh r0, [r6, 0x4]
- adds r0, r5, 0
- bl DestroyTask
- b _080FC108
- .align 2, 0
-_080FC0E0: .4byte gUnknown_3005450
-_080FC0E4: .4byte gTasks
-_080FC0E8: .4byte 0x00000985
-_080FC0EC: .4byte gUnknown_3005E10
-_080FC0F0: .4byte 0x00000119
-_080FC0F4: .4byte gRfuLinkStatus
-_080FC0F8:
- movs r1, 0xE0
- lsls r1, 7
- movs r0, 0x2
- bl sub_80FB9E4
- mov r0, r8
- bl DestroyTask
-_080FC108:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FC028
-
- thumb_func_start sub_80FC114
-sub_80FC114: @ 80FC114
- push {r4-r7,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- lsls r4, r2, 24
- lsrs r4, 24
- ldr r6, _080FC184 @ =gUnknown_3005450
- ldr r1, _080FC188 @ =0x00000987
- adds r0, r6, r1
- movs r7, 0
- strb r7, [r0]
- adds r0, r6, 0
- adds r0, 0xF1
- strb r7, [r0]
- ldr r1, _080FC18C @ =0x00000119
- adds r0, r6, r1
- adds r1, r3, 0
- bl StringCopy
- movs r1, 0x85
- lsls r1, 1
- adds r0, r6, r1
- adds r1, r5, 0
- movs r2, 0xD
- bl memcpy
- bl sub_80FEB3C
- ldr r0, _080FC190 @ =sub_80FC028
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _080FC194 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r5
- strh r4, [r1, 0xA]
- ldr r0, _080FC198 @ =sub_80F8B34
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- cmp r4, 0x45
- bne _080FC19C
- cmp r1, 0xFF
- beq _080FC1AA
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r1, 0x1
- strh r1, [r0, 0x16]
- b _080FC1AA
- .align 2, 0
-_080FC184: .4byte gUnknown_3005450
-_080FC188: .4byte 0x00000987
-_080FC18C: .4byte 0x00000119
-_080FC190: .4byte sub_80FC028
-_080FC194: .4byte gTasks
-_080FC198: .4byte sub_80F8B34
-_080FC19C:
- cmp r2, 0xFF
- beq _080FC1AA
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r5
- strh r7, [r0, 0x16]
-_080FC1AA:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FC114
-
- thumb_func_start sub_80FC1B0
-sub_80FC1B0: @ 80FC1B0
- push {lr}
- ldr r0, _080FC1C0 @ =gUnknown_3005450
- adds r0, 0xF0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080FC1C4
- movs r0, 0
- b _080FC1C6
- .align 2, 0
-_080FC1C0: .4byte gUnknown_3005450
-_080FC1C4:
- movs r0, 0x1
-_080FC1C6:
- pop {r1}
- bx r1
- thumb_func_end sub_80FC1B0
-
- thumb_func_start sub_80FC1CC
-sub_80FC1CC: @ 80FC1CC
- push {r4,lr}
- movs r1, 0
- ldr r0, _080FC1F0 @ =gUnknown_3005E10
- ldrb r2, [r0]
- ldr r4, _080FC1F4 @ =gUnknown_3005DD9
- movs r3, 0x1
-_080FC1D8:
- adds r0, r2, 0
- asrs r0, r1
- ands r0, r3
- cmp r0, 0
- beq _080FC1F8
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FC1F8
- movs r0, 0
- b _080FC200
- .align 2, 0
-_080FC1F0: .4byte gUnknown_3005E10
-_080FC1F4: .4byte gUnknown_3005DD9
-_080FC1F8:
- adds r1, 0x1
- cmp r1, 0x3
- ble _080FC1D8
- movs r0, 0x1
-_080FC200:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FC1CC
-
- thumb_func_start sub_80FC208
-sub_80FC208: @ 80FC208
- push {r4,lr}
- movs r4, 0
-_080FC20C:
- lsls r2, r4, 24
- lsrs r2, 24
- ldr r0, _080FC224 @ =gUnknown_843EE28
- movs r1, 0
- bl nullsub_87
- adds r4, 0x1
- cmp r4, 0x13
- ble _080FC20C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC224: .4byte gUnknown_843EE28
- thumb_func_end sub_80FC208
-
- thumb_func_start sub_80FC228
-sub_80FC228: @ 80FC228
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1C
- movs r2, 0x13
- movs r3, 0x2
- bl nullsub_88
- ldr r4, _080FC2F8 @ =gRfuLinkStatus
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- movs r1, 0x14
- movs r2, 0x1
- movs r3, 0x1
- bl nullsub_88
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- movs r1, 0x17
- movs r2, 0x1
- movs r3, 0x1
- bl nullsub_88
- ldr r0, _080FC2FC @ =gUnknown_3005450
- ldrb r0, [r0, 0xC]
- cmp r0, 0x1
- bne _080FC304
- movs r6, 0
- adds r7, r4, 0
- movs r5, 0x14
-_080FC26C:
- ldr r2, [r7]
- ldrb r0, [r2, 0x7]
- asrs r0, r6
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080FC2AA
- lsls r0, r6, 5
- adds r0, r2, r0
- ldrh r0, [r0, 0x18]
- adds r4, r6, 0x3
- lsls r4, 24
- lsrs r4, 24
- adds r2, r4, 0
- movs r3, 0x4
- bl nullsub_88
- ldr r0, [r7]
- adds r0, r5
- adds r0, 0x6
- movs r1, 0x6
- adds r2, r4, 0
- bl nullsub_87
- ldr r0, [r7]
- adds r0, r5
- adds r0, 0x15
- movs r1, 0x16
- adds r2, r4, 0
- bl nullsub_87
-_080FC2AA:
- adds r5, 0x20
- adds r6, 0x1
- cmp r6, 0x3
- ble _080FC26C
- movs r6, 0
- ldr r0, _080FC2FC @ =gUnknown_3005450
- mov r8, r0
-_080FC2B8:
- movs r5, 0
- adds r7, r6, 0x1
- lsls r0, r6, 3
- adds r2, r6, 0
- adds r2, 0xB
- subs r0, r6
- lsls r0, 1
- mov r1, r8
- adds r1, 0x14
- adds r4, r0, r1
- lsls r6, r2, 24
-_080FC2CE:
- ldrb r0, [r4]
- lsls r1, r5, 25
- lsrs r1, 24
- lsrs r2, r6, 24
- movs r3, 0x2
- bl nullsub_88
- adds r4, 0x1
- adds r5, 0x1
- cmp r5, 0xD
- ble _080FC2CE
- adds r6, r7, 0
- cmp r6, 0x3
- ble _080FC2B8
- ldr r0, _080FC300 @ =gUnknown_843EE64 "NOWSLOT"
- movs r1, 0x1
- movs r2, 0xF
- bl nullsub_87
- b _080FC436
- .align 2, 0
-_080FC2F8: .4byte gRfuLinkStatus
-_080FC2FC: .4byte gUnknown_3005450
-_080FC300: .4byte gUnknown_843EE64
-_080FC304:
- ldr r1, [r4]
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _080FC3A0
- ldrb r0, [r1, 0x7]
- cmp r0, 0
- beq _080FC3A0
- movs r6, 0
- movs r5, 0xC0
- lsls r5, 18
-_080FC318:
- lsrs r4, r5, 24
- movs r0, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x4
- bl nullsub_88
- ldr r0, _080FC38C @ =gUnknown_843EE47
- movs r1, 0x6
- adds r2, r4, 0
- bl nullsub_87
- ldr r0, _080FC390 @ =gUnknown_843EE57
- movs r1, 0x16
- adds r2, r4, 0
- bl nullsub_87
- movs r1, 0x80
- lsls r1, 17
- adds r5, r1
- adds r6, 0x1
- cmp r6, 0x3
- ble _080FC318
- ldr r5, _080FC394 @ =gRfuLinkStatus
- ldr r1, [r5]
- ldr r4, _080FC398 @ =gUnknown_3005450
- ldr r0, _080FC39C @ =0x000008f6
- adds r4, r0
- ldrb r0, [r4]
- lsls r0, 5
- adds r1, r0
- ldrh r0, [r1, 0x18]
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x4
- bl nullsub_88
- ldrb r1, [r4]
- lsls r1, 5
- adds r1, 0x14
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x6
- movs r1, 0x6
- movs r2, 0x3
- bl nullsub_87
- ldrb r1, [r4]
- lsls r1, 5
- adds r1, 0x14
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x15
- movs r1, 0x16
- movs r2, 0x3
- bl nullsub_87
- b _080FC436
- .align 2, 0
-_080FC38C: .4byte gUnknown_843EE47
-_080FC390: .4byte gUnknown_843EE57
-_080FC394: .4byte gRfuLinkStatus
-_080FC398: .4byte gUnknown_3005450
-_080FC39C: .4byte 0x000008f6
-_080FC3A0:
- movs r6, 0
- ldr r1, _080FC440 @ =gRfuLinkStatus
- ldr r0, [r1]
- ldrb r0, [r0, 0x8]
- cmp r6, r0
- bge _080FC3FC
- adds r7, r1, 0
- movs r1, 0x14
- mov r8, r1
-_080FC3B2:
- ldr r0, [r7]
- lsls r5, r6, 5
- adds r1, r0, r5
- ldrb r0, [r1, 0x16]
- cmp r0, 0xFF
- beq _080FC3EE
- ldrh r0, [r1, 0x18]
- adds r4, r6, 0x3
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x4
- bl nullsub_88
- ldr r0, [r7]
- adds r0, r5
- ldrh r0, [r0, 0x14]
- movs r1, 0x6
- adds r2, r4, 0
- movs r3, 0x4
- bl nullsub_88
- ldr r0, [r7]
- add r0, r8
- adds r0, 0x15
- movs r1, 0x16
- adds r2, r4, 0
- bl nullsub_87
-_080FC3EE:
- movs r0, 0x20
- add r8, r0
- adds r6, 0x1
- ldr r0, [r7]
- ldrb r0, [r0, 0x8]
- cmp r6, r0
- blt _080FC3B2
-_080FC3FC:
- cmp r6, 0x3
- bgt _080FC436
- lsls r0, r6, 24
- movs r1, 0xC0
- lsls r1, 18
- adds r5, r0, r1
-_080FC408:
- lsrs r4, r5, 24
- movs r0, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x4
- bl nullsub_88
- ldr r0, _080FC444 @ =gUnknown_843EE47
- movs r1, 0x6
- adds r2, r4, 0
- bl nullsub_87
- ldr r0, _080FC448 @ =gUnknown_843EE57
- movs r1, 0x16
- adds r2, r4, 0
- bl nullsub_87
- movs r0, 0x80
- lsls r0, 17
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _080FC408
-_080FC436:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC440: .4byte gRfuLinkStatus
-_080FC444: .4byte gUnknown_843EE47
-_080FC448: .4byte gUnknown_843EE57
- thumb_func_end sub_80FC228
-
- thumb_func_start sub_80FC44C
-sub_80FC44C: @ 80FC44C
- ldr r0, _080FC458 @ =gUnknown_3005450
- ldr r1, _080FC45C @ =0x000008d2
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080FC458: .4byte gUnknown_3005450
-_080FC45C: .4byte 0x000008d2
- thumb_func_end sub_80FC44C
-
- thumb_func_start GetRfuRecvQueueLength
-GetRfuRecvQueueLength: @ 80FC460
- ldr r0, _080FC46C @ =gUnknown_3005450
- ldr r1, _080FC470 @ =0x0000069e
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080FC46C: .4byte gUnknown_3005450
-_080FC470: .4byte 0x0000069e
- thumb_func_end GetRfuRecvQueueLength
-
- thumb_func_start nullsub_89
-nullsub_89: @ 80FC474
- bx lr
- thumb_func_end nullsub_89
-
- thumb_func_start sub_80FC478
-sub_80FC478: @ 80FC478
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r0, 0
- movs r4, 0
- movs r5, 0x46
-_080FC482:
- adds r2, r0, 0x1
- movs r1, 0x45
- muls r0, r5
- adds r0, r3
- adds r0, 0x45
-_080FC48C:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _080FC48C
- adds r0, r2, 0
- cmp r0, 0x13
- ble _080FC482
- movs r1, 0
- ldr r2, _080FC4C8 @ =0x00000579
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0xAF
- lsls r2, 3
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC4CC @ =0x0000057a
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC4D0 @ =0x0000057b
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC4C8: .4byte 0x00000579
-_080FC4CC: .4byte 0x0000057a
-_080FC4D0: .4byte 0x0000057b
- thumb_func_end sub_80FC478
-
- thumb_func_start sub_80FC4D4
-sub_80FC4D4: @ 80FC4D4
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0
-_080FC4DC:
- lsls r0, r1, 3
- adds r2, r1, 0x1
- subs r0, r1
- movs r1, 0xD
- lsls r0, 1
- adds r0, r3
- adds r0, 0xD
-_080FC4EA:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _080FC4EA
- adds r1, r2, 0
- cmp r1, 0x27
- ble _080FC4DC
- movs r1, 0
- ldr r2, _080FC524 @ =0x00000231
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0x8C
- lsls r2, 2
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC528 @ =0x00000232
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC52C @ =0x00000233
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC524: .4byte 0x00000231
-_080FC528: .4byte 0x00000232
-_080FC52C: .4byte 0x00000233
- thumb_func_end sub_80FC4D4
-
- thumb_func_start sub_80FC530
-sub_80FC530: @ 80FC530
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0
-_080FC538:
- lsls r0, r1, 8
- adds r2, r1, 0x1
- movs r1, 0xFF
- adds r0, r3
- adds r0, 0xFF
-_080FC542:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _080FC542
- adds r1, r2, 0
- cmp r1, 0x1
- ble _080FC538
- movs r1, 0
- ldr r2, _080FC57C @ =0x00000201
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- movs r2, 0x80
- lsls r2, 2
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC580 @ =0x00000202
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r2, _080FC584 @ =0x00000203
- adds r0, r3, r2
- ldrb r2, [r0]
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC57C: .4byte 0x00000201
-_080FC580: .4byte 0x00000202
-_080FC584: .4byte 0x00000203
- thumb_func_end sub_80FC530
-
- thumb_func_start sub_80FC588
-sub_80FC588: @ 80FC588
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _080FC620 @ =0x0000057a
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0x13
- bhi _080FC628
- ldr r0, _080FC624 @ =0x04000208
- ldrh r1, [r0]
- adds r7, r1, 0
- movs r1, 0
- strh r1, [r0]
- movs r3, 0
- movs r2, 0
-_080FC5A6:
- adds r1, r6, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _080FC5BA
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080FC5BA
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080FC5BA:
- adds r2, 0xE
- cmp r2, 0x45
- ble _080FC5A6
- cmp r3, 0x5
- beq _080FC618
- movs r2, 0
- movs r0, 0xAF
- lsls r0, 3
- adds r3, r5, r0
- movs r4, 0x46
-_080FC5CE:
- ldrb r0, [r3]
- adds r1, r0, 0
- muls r1, r4
- adds r1, r2, r1
- adds r1, r5, r1
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x45
- ble _080FC5CE
- movs r1, 0xAF
- lsls r1, 3
- adds r4, r5, r1
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0x14
- bl __umodsi3
- ldrb r1, [r4]
- strb r0, [r4]
- ldr r0, _080FC620 @ =0x0000057a
- adds r1, r5, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r1, 0
- adds r0, r6, 0
- adds r0, 0x45
-_080FC610:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r6
- bge _080FC610
-_080FC618:
- ldr r0, _080FC624 @ =0x04000208
- strh r7, [r0]
- b _080FC632
- .align 2, 0
-_080FC620: .4byte 0x0000057a
-_080FC624: .4byte 0x04000208
-_080FC628:
- ldr r1, _080FC638 @ =0x0000057b
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
-_080FC632:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC638: .4byte 0x0000057b
- thumb_func_end sub_80FC588
-
- thumb_func_start sub_80FC63C
-sub_80FC63C: @ 80FC63C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- ldr r1, _080FC6CC @ =0x00000232
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0x27
- bhi _080FC6D4
- ldr r1, _080FC6D0 @ =0x04000208
- ldrh r0, [r1]
- adds r7, r0, 0
- movs r0, 0
- strh r0, [r1]
- movs r2, 0
- ldrb r0, [r5]
- cmp r0, 0
- bne _080FC66C
-_080FC65E:
- adds r2, 0x1
- cmp r2, 0xD
- bgt _080FC66C
- adds r0, r5, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC65E
-_080FC66C:
- cmp r2, 0xE
- beq _080FC6C4
- movs r2, 0
- movs r0, 0x8C
- lsls r0, 2
- adds r3, r6, r0
-_080FC678:
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, r2, r0
- adds r0, r6, r0
- adds r1, r5, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xD
- ble _080FC678
- movs r1, 0x8C
- lsls r1, 2
- adds r4, r6, r1
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0x28
- bl __umodsi3
- ldrb r1, [r4]
- strb r0, [r4]
- ldr r0, _080FC6CC @ =0x00000232
- adds r1, r6, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r1, 0
- adds r0, r5, 0
- adds r0, 0xD
-_080FC6BC:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r5
- bge _080FC6BC
-_080FC6C4:
- ldr r0, _080FC6D0 @ =0x04000208
- strh r7, [r0]
- b _080FC6DE
- .align 2, 0
-_080FC6CC: .4byte 0x00000232
-_080FC6D0: .4byte 0x04000208
-_080FC6D4:
- ldr r1, _080FC6E4 @ =0x00000233
- adds r0, r6, r1
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
-_080FC6DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC6E4: .4byte 0x00000233
- thumb_func_end sub_80FC63C
-
- thumb_func_start sub_80FC6E8
-sub_80FC6E8: @ 80FC6E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r3, r1, 0
- ldr r1, _080FC730 @ =0x04000208
- ldrh r0, [r1]
- mov r8, r0
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xAF
- lsls r1, 3
- adds r0, r5, r1
- ldr r7, _080FC734 @ =0x00000579
- adds r4, r5, r7
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r1, r0
- beq _080FC718
- ldr r1, _080FC738 @ =0x0000057b
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC73C
-_080FC718:
- movs r1, 0
- adds r0, r3, 0
- adds r0, 0x45
-_080FC71E:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r3
- bge _080FC71E
- ldr r0, _080FC730 @ =0x04000208
- mov r7, r8
- strh r7, [r0]
- movs r0, 0
- b _080FC784
- .align 2, 0
-_080FC730: .4byte 0x04000208
-_080FC734: .4byte 0x00000579
-_080FC738: .4byte 0x0000057b
-_080FC73C:
- movs r2, 0
- movs r6, 0x46
-_080FC740:
- adds r1, r3, r2
- ldrb r0, [r4]
- adds r7, r0, 0
- muls r7, r6
- adds r0, r7, 0
- adds r0, r2, r0
- adds r0, r5, r0
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x45
- ble _080FC740
- ldr r0, _080FC790 @ =0x00000579
- adds r4, r5, r0
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0x14
- bl __umodsi3
- ldrb r1, [r4]
- strb r0, [r4]
- ldr r7, _080FC794 @ =0x0000057a
- adds r1, r5, r7
- ldrb r0, [r1]
- subs r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- ldr r0, _080FC798 @ =0x04000208
- mov r1, r8
- strh r1, [r0]
- movs r0, 0x1
-_080FC784:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FC790: .4byte 0x00000579
-_080FC794: .4byte 0x0000057a
-_080FC798: .4byte 0x04000208
- thumb_func_end sub_80FC6E8
-
- thumb_func_start sub_80FC79C
-sub_80FC79C: @ 80FC79C
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r1, 0x8C
- lsls r1, 2
- adds r0, r5, r1
- adds r1, 0x1
- adds r4, r5, r1
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r1, r0
- beq _080FC7C0
- ldr r1, _080FC7C4 @ =0x00000233
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r2, r0, 0
- cmp r2, 0
- beq _080FC7C8
-_080FC7C0:
- movs r0, 0
- b _080FC814
- .align 2, 0
-_080FC7C4: .4byte 0x00000233
-_080FC7C8:
- ldr r1, _080FC81C @ =0x04000208
- ldrh r0, [r1]
- adds r7, r0, 0
- strh r2, [r1]
- movs r3, 0
-_080FC7D2:
- adds r2, r6, r3
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, r3, r0
- adds r0, r5, r0
- ldrb r0, [r0]
- strb r0, [r2]
- adds r3, 0x1
- cmp r3, 0xD
- ble _080FC7D2
- ldr r0, _080FC820 @ =0x00000231
- adds r4, r5, r0
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0x28
- bl __umodsi3
- ldrb r1, [r4]
- strb r0, [r4]
- ldr r0, _080FC824 @ =0x00000232
- adds r1, r5, r0
- ldrb r0, [r1]
- subs r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- ldr r0, _080FC81C @ =0x04000208
- strh r7, [r0]
- movs r0, 0x1
-_080FC814:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080FC81C: .4byte 0x04000208
-_080FC820: .4byte 0x00000231
-_080FC824: .4byte 0x00000232
- thumb_func_end sub_80FC79C
-
- thumb_func_start sub_80FC828
-sub_80FC828: @ 80FC828
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _080FC83E
- adds r0, r2, 0
- movs r1, 0
- bl sub_80FC888
- b _080FC880
-_080FC83E:
- movs r3, 0
-_080FC840:
- ldrb r1, [r2, 0x1C]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, r3, r0
- adds r0, r2, r0
- adds r1, r4, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, 0xD
- ble _080FC840
- ldrb r0, [r2, 0x1C]
- adds r0, 0x1
- ldrb r1, [r2, 0x1C]
- strb r0, [r2, 0x1C]
- ldrb r1, [r2, 0x1C]
- movs r0, 0x1
- ands r0, r1
- ldrb r1, [r2, 0x1C]
- strb r0, [r2, 0x1C]
- ldrb r0, [r2, 0x1E]
- cmp r0, 0x1
- bhi _080FC87A
- ldrb r0, [r2, 0x1E]
- adds r0, 0x1
- ldrb r1, [r2, 0x1E]
- strb r0, [r2, 0x1E]
- b _080FC880
-_080FC87A:
- ldrb r0, [r2, 0x1C]
- ldrb r1, [r2, 0x1D]
- strb r0, [r2, 0x1D]
-_080FC880:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FC828
-
- thumb_func_start sub_80FC888
-sub_80FC888: @ 80FC888
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- ldrb r0, [r3, 0x1E]
- cmp r0, 0
- bne _080FC898
- movs r0, 0
- b _080FC8D2
-_080FC898:
- cmp r5, 0
- beq _080FC8B6
- movs r4, 0
-_080FC89E:
- adds r2, r5, r4
- ldrb r1, [r3, 0x1D]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 1
- adds r0, r4, r0
- adds r0, r3, r0
- ldrb r0, [r0]
- strb r0, [r2]
- adds r4, 0x1
- cmp r4, 0xD
- ble _080FC89E
-_080FC8B6:
- ldrb r0, [r3, 0x1D]
- adds r0, 0x1
- ldrb r1, [r3, 0x1D]
- strb r0, [r3, 0x1D]
- ldrb r1, [r3, 0x1D]
- movs r0, 0x1
- ands r0, r1
- ldrb r1, [r3, 0x1D]
- strb r0, [r3, 0x1D]
- ldrb r0, [r3, 0x1E]
- subs r0, 0x1
- ldrb r1, [r3, 0x1E]
- strb r0, [r3, 0x1E]
- movs r0, 0x1
-_080FC8D2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FC888
-
- thumb_func_start sub_80FC8D8
-sub_80FC8D8: @ 80FC8D8
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- ldr r1, _080FC92C @ =0x00000202
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080FC930
- movs r2, 0
- movs r0, 0x80
- lsls r0, 2
- adds r4, r3, r0
-_080FC8F0:
- ldrb r0, [r4]
- lsls r0, 8
- adds r0, r2, r0
- adds r0, r3, r0
- adds r1, r5, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xFF
- ble _080FC8F0
- movs r0, 0x80
- lsls r0, 2
- adds r1, r3, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- ldrb r2, [r1]
- strb r0, [r1]
- ldr r0, _080FC92C @ =0x00000202
- adds r1, r3, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- b _080FC93A
- .align 2, 0
-_080FC92C: .4byte 0x00000202
-_080FC930:
- ldr r1, _080FC940 @ =0x00000203
- adds r0, r3, r1
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
-_080FC93A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC940: .4byte 0x00000203
- thumb_func_end sub_80FC8D8
-
- thumb_func_start sub_80FC944
-sub_80FC944: @ 80FC944
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- movs r1, 0x80
- lsls r1, 2
- adds r0, r3, r1
- adds r1, 0x1
- adds r4, r3, r1
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r1, r0
- beq _080FC966
- ldr r1, _080FC96C @ =0x00000203
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC970
-_080FC966:
- movs r0, 0
- b _080FC9AA
- .align 2, 0
-_080FC96C: .4byte 0x00000203
-_080FC970:
- movs r2, 0
-_080FC972:
- adds r0, r5, r2
- ldrb r1, [r4]
- lsls r1, 8
- adds r1, r2, r1
- adds r1, r3, r1
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xFF
- ble _080FC972
- ldr r0, _080FC9B0 @ =0x00000201
- adds r1, r3, r0
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- ldrb r2, [r1]
- strb r0, [r1]
- ldr r0, _080FC9B4 @ =0x00000202
- adds r1, r3, r0
- ldrb r0, [r1]
- subs r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0x1
-_080FC9AA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FC9B0: .4byte 0x00000201
-_080FC9B4: .4byte 0x00000202
- thumb_func_end sub_80FC944
-
- thumb_func_start sub_80FC9B8
-sub_80FC9B8: @ 80FC9B8
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- movs r5, 0
- cmp r1, 0x1
- beq _080FC9F6
- cmp r1, 0x1
- bgt _080FC9D2
- cmp r1, 0
- beq _080FC9DC
- b _080FCA6A
-_080FC9D2:
- cmp r0, 0x2
- beq _080FCA16
- cmp r0, 0x3
- beq _080FCA36
- b _080FCA6A
-_080FC9DC:
- movs r4, 0
-_080FC9DE:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r1, [r0]
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, r1, 0
- cmp r4, 0xC7
- ble _080FC9DE
- b _080FCA30
-_080FC9F6:
- movs r4, 0
- adds r2, r6, 0
- adds r2, 0xC8
-_080FC9FC:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r1, [r0]
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, r1, 0
- cmp r4, 0x63
- ble _080FC9FC
- strh r5, [r2]
- b _080FCA6A
-_080FCA16:
- movs r4, 0
-_080FCA18:
- bl Random
- lsls r0, 24
- lsrs r0, 24
- adds r1, r6, r4
- strb r0, [r1]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x1
- cmp r4, 0xC7
- ble _080FCA18
-_080FCA30:
- adds r0, r6, r4
- strh r5, [r0]
- b _080FCA6A
-_080FCA36:
- movs r4, 0
- ldr r3, _080FCA70 @ =gUnknown_3002018
- ldrb r1, [r3]
- ldrb r0, [r3]
- adds r7, r0, 0x1
- adds r2, r1, 0x1
- movs r0, 0xFF
- mov r12, r0
-_080FCA46:
- adds r0, r6, r4
- adds r1, r4, 0x1
- strb r2, [r0]
- adds r0, r4, r7
- mov r4, r12
- ands r0, r4
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r2, 0x1
- adds r4, r1, 0
- cmp r1, 0xC7
- ble _080FCA46
- adds r0, r6, r1
- strh r5, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_080FCA6A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCA70: .4byte gUnknown_3002018
- thumb_func_end sub_80FC9B8
-
- thumb_func_start sub_80FCA74
-sub_80FCA74: @ 80FCA74
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r3, 0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080FCA98
- ldr r5, _080FCAA4 @ =gUnknown_843F104
- adds r2, r1, 0
-_080FCA84:
- adds r1, r4, r3
- ldrb r0, [r2]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- adds r3, 0x1
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080FCA84
-_080FCA98:
- adds r1, r4, r3
- movs r0, 0
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCAA4: .4byte gUnknown_843F104
- thumb_func_end sub_80FCA74
-
- thumb_func_start sub_80FCAA8
-sub_80FCAA8: @ 80FCAA8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r3, 0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080FCACC
- ldr r5, _080FCAD8 @ =gUnknown_843F004
- adds r2, r1, 0
-_080FCAB8:
- adds r1, r4, r3
- ldrb r0, [r2]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- adds r3, 0x1
- ldrb r0, [r2]
- cmp r0, 0
- bne _080FCAB8
-_080FCACC:
- adds r1, r4, r3
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCAD8: .4byte gUnknown_843F004
- thumb_func_end sub_80FCAA8
-
- thumb_func_start sub_80FCADC
-sub_80FCADC: @ 80FCADC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r0, _080FCB04 @ =gRfuLinkStatus
- ldr r4, [r0]
- ldrb r2, [r4, 0x2]
- ldrb r1, [r4]
- adds r7, r0, 0
- cmp r1, 0x1
- bne _080FCB32
- movs r3, 0
- ands r1, r2
- cmp r1, 0
- beq _080FCB0E
- cmp r5, 0x1
- bne _080FCB08
- ldrb r0, [r4, 0xA]
- b _080FCB4C
- .align 2, 0
-_080FCB04: .4byte gRfuLinkStatus
-_080FCB08:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080FCB0E:
- lsrs r2, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bhi _080FCB4A
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080FCB0E
- adds r0, r6, 0x1
- cmp r5, r0
- bne _080FCB08
-_080FCB28:
- ldr r0, [r7]
- adds r0, 0xA
- adds r0, r3
- ldrb r0, [r0]
- b _080FCB4C
-_080FCB32:
- movs r3, 0
- movs r1, 0x1
-_080FCB36:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080FCB28
- lsrs r2, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080FCB36
-_080FCB4A:
- movs r0, 0
-_080FCB4C:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FCADC
-
- thumb_func_start sub_80FCB54
-sub_80FCB54: @ 80FCB54
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r4, 0
- ldr r0, _080FCC30 @ =gSaveBlock2Ptr
- mov r8, r0
- adds r6, r7, 0x2
- ldr r0, [r0]
- adds r5, r0, 0
- adds r5, 0xA
-_080FCB72:
- adds r0, r6, r4
- adds r1, r5, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x1
- ble _080FCB72
- movs r4, 0
- lsls r2, 7
- mov r12, r2
- adds r1, r7, 0x4
-_080FCB88:
- adds r0, r1, r4
- strb r3, [r0]
- asrs r3, 8
- adds r4, 0x1
- cmp r4, 0x3
- ble _080FCB88
- mov r1, r8
- ldr r0, [r1]
- ldrb r0, [r0, 0x8]
- movs r6, 0x1
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r7, 0xB]
- movs r5, 0x2
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0xB]
- movs r4, 0x7F
- mov r1, r9
- ands r1, r4
- ldrb r2, [r7, 0xA]
- movs r0, 0x80
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- ands r0, r4
- mov r1, r12
- orrs r0, r1
- strb r0, [r7, 0xA]
- ldrb r0, [r7]
- movs r1, 0x10
- negs r1, r1
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- ldrb r2, [r7, 0x1]
- movs r0, 0x3D
- negs r0, r0
- ands r0, r2
- .ifdef FIRERED
- movs r2, 0x10 @ VERSION_FIRE_RED << 2
- .else
- .ifdef LEAFGREEN
- movs r2, 0x14 @ VERSION_LEAF_GREEN << 2
- .endif
- .endif
- orrs r0, r2
- strb r0, [r7, 0x1]
- movs r0, 0x11
- negs r0, r0
- ands r1, r0
- subs r0, 0x10
- ands r1, r0
- subs r0, 0x20
- ands r1, r0
- strb r1, [r7]
- ldr r0, _080FCC34 @ =0x00000844
- bl FlagGet
- lsls r0, 7
- ldrb r1, [r7]
- ands r4, r1
- orrs r4, r0
- strb r4, [r7]
- bl IsNationalPokedexEnabled
- ands r0, r6
- ldrb r1, [r7, 0x1]
- ands r5, r1
- orrs r5, r0
- strb r5, [r7, 0x1]
- ldr r0, _080FCC38 @ =0x0000082c
- bl FlagGet
- ands r6, r0
- lsls r6, 1
- ldrb r1, [r7, 0x1]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- orrs r0, r6
- strb r0, [r7, 0x1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCC30: .4byte gSaveBlock2Ptr
-_080FCC34: .4byte 0x00000844
-_080FCC38: .4byte 0x0000082c
- thumb_func_end sub_80FCB54
-
- thumb_func_start sub_80FCC3C
-sub_80FCC3C: @ 80FCC3C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- mov r8, r1
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r0, _080FCC90 @ =gUnknown_3005E10
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- bne _080FCC98
- movs r0, 0x1
- mov r9, r0
- ldr r6, _080FCC94 @ =gRfuLinkStatus
- ldr r0, [r6]
- lsls r4, r5, 5
- adds r0, r4
- ldrh r0, [r0, 0x18]
- bl sub_80FA44C
- cmp r0, 0
- beq _080FCC78
- ldr r1, [r6]
- ldrb r0, [r1, 0x7]
- asrs r0, r5
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- bne _080FCCB0
-_080FCC78:
- adds r0, r7, 0
- movs r1, 0
- movs r2, 0xD
- bl memset
- mov r0, r8
- movs r1, 0
- movs r2, 0x8
- bl memset
- b _080FCCE4
- .align 2, 0
-_080FCC90: .4byte gUnknown_3005E10
-_080FCC94: .4byte gRfuLinkStatus
-_080FCC98:
- movs r0, 0
- mov r9, r0
- ldr r6, _080FCCCC @ =gRfuLinkStatus
- ldr r0, [r6]
- lsls r4, r5, 5
- adds r0, r4
- ldrh r0, [r0, 0x18]
- bl sub_80FA44C
- cmp r0, 0
- beq _080FCCD0
- ldr r1, [r6]
-_080FCCB0:
- adds r1, r4, r1
- adds r1, 0x1A
- adds r0, r7, 0
- movs r2, 0xD
- bl memcpy
- ldr r1, [r6]
- adds r1, r4, r1
- adds r1, 0x29
- mov r0, r8
- movs r2, 0x8
- bl memcpy
- b _080FCCE4
- .align 2, 0
-_080FCCCC: .4byte gRfuLinkStatus
-_080FCCD0:
- adds r0, r7, 0
- movs r1, 0
- movs r2, 0xD
- bl memset
- mov r0, r8
- movs r1, 0
- movs r2, 0x8
- bl memset
-_080FCCE4:
- mov r0, r9
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FCC3C
-
- thumb_func_start sub_80FCCF4
-sub_80FCCF4: @ 80FCCF4
- push {r4-r7,lr}
- adds r3, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- movs r7, 0
- ldr r6, _080FCD2C @ =gRfuLinkStatus
- ldr r0, [r6]
- lsrs r4, r2, 19
- adds r2, r0, r4
- ldrh r1, [r2, 0x18]
- ldr r0, _080FCD30 @ =0x00007f7d
- cmp r1, r0
- bne _080FCD34
- adds r1, r2, 0
- adds r1, 0x1A
- adds r0, r3, 0
- movs r2, 0xD
- bl memcpy
- ldr r1, [r6]
- adds r1, r4, r1
- adds r1, 0x29
- adds r0, r5, 0
- movs r2, 0x8
- bl memcpy
- movs r7, 0x1
- b _080FCD48
- .align 2, 0
-_080FCD2C: .4byte gRfuLinkStatus
-_080FCD30: .4byte 0x00007f7d
-_080FCD34:
- adds r0, r3, 0
- movs r1, 0
- movs r2, 0xD
- bl memset
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x8
- bl memset
-_080FCD48:
- adds r0, r7, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FCCF4
-
- thumb_func_start sub_80FCD50
-sub_80FCD50: @ 80FCD50
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, _080FCD6C @ =gUnknown_3005440
- movs r2, 0xD
- bl memcpy
- ldr r1, _080FCD70 @ =gUnknown_3005E00
- adds r0, r4, 0
- movs r2, 0x8
- bl memcpy
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCD6C: .4byte gUnknown_3005440
-_080FCD70: .4byte gUnknown_3005E00
- thumb_func_end sub_80FCD50
-
- thumb_func_start CreateWirelessStatusIndicatorSprite
-CreateWirelessStatusIndicatorSprite: @ 80FCD74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- cmp r3, 0
- bne _080FCD8A
- cmp r2, 0
- bne _080FCD8A
- movs r3, 0xE7
- movs r2, 0x8
-_080FCD8A:
- ldr r0, _080FCDCC @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FCDE4
- ldr r0, _080FCDD0 @ =gUnknown_843F284
- adds r1, r3, 0
- movs r3, 0
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080FCDD4 @ =gSprites
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r4, r0
- ldr r0, _080FCDD8 @ =0x00001234
- strh r0, [r4, 0x3C]
- ldr r0, _080FCDDC @ =gUnknown_843F274
- ldrh r0, [r0, 0x6]
- bl GetSpriteTileStartByTag
- strh r0, [r4, 0x3A]
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldr r0, _080FCDE0 @ =gUnknown_203ACE4
- strb r5, [r0]
- b _080FCE2A
- .align 2, 0
-_080FCDCC: .4byte gRfuLinkStatus
-_080FCDD0: .4byte gUnknown_843F284
-_080FCDD4: .4byte gSprites
-_080FCDD8: .4byte 0x00001234
-_080FCDDC: .4byte gUnknown_843F274
-_080FCDE0: .4byte gUnknown_203ACE4
-_080FCDE4:
- ldr r0, _080FCE30 @ =gUnknown_843F284
- adds r1, r3, 0
- movs r3, 0
- bl CreateSprite
- ldr r4, _080FCE34 @ =gUnknown_203ACE4
- strb r0, [r4]
- ldr r5, _080FCE38 @ =gSprites
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _080FCE3C @ =0x00001234
- strh r1, [r0, 0x3C]
- ldr r0, _080FCE40 @ =gUnknown_843F274
- ldrh r0, [r0, 0x6]
- bl GetSpriteTileStartByTag
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x3A]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080FCE2A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCE30: .4byte gUnknown_843F284
-_080FCE34: .4byte gUnknown_203ACE4
-_080FCE38: .4byte gSprites
-_080FCE3C: .4byte 0x00001234
-_080FCE40: .4byte gUnknown_843F274
- thumb_func_end CreateWirelessStatusIndicatorSprite
-
- thumb_func_start DestroyWirelessStatusIndicatorSprite
-DestroyWirelessStatusIndicatorSprite: @ 80FCE44
- push {r4,lr}
- ldr r4, _080FCE90 @ =gSprites
- ldr r3, _080FCE94 @ =gUnknown_203ACE4
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r4
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- ldr r0, _080FCE98 @ =0x00001234
- cmp r1, r0
- bne _080FCE8A
- movs r0, 0
- strh r0, [r2, 0x3C]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r3, _080FCE9C @ =gMain
- movs r0, 0x84
- lsls r0, 3
- adds r3, r0
- ldr r0, _080FCEA0 @ =gDummyOamData
- ldr r1, [r0]
- ldr r2, [r0, 0x4]
- str r1, [r3]
- str r2, [r3, 0x4]
- ldr r1, _080FCEA4 @ =0x070003e8
- movs r2, 0x4
- bl CpuSet
-_080FCE8A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCE90: .4byte gSprites
-_080FCE94: .4byte gUnknown_203ACE4
-_080FCE98: .4byte 0x00001234
-_080FCE9C: .4byte gMain
-_080FCEA0: .4byte gDummyOamData
-_080FCEA4: .4byte 0x070003e8
- thumb_func_end DestroyWirelessStatusIndicatorSprite
-
- thumb_func_start LoadWirelessStatusIndicatorSpriteGfx
-LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8
- push {r4,lr}
- ldr r4, _080FCED4 @ =gUnknown_843F274
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, _080FCED8 @ =0xffff0000
- cmp r0, r1
- bne _080FCEC0
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
-_080FCEC0:
- ldr r0, _080FCEDC @ =gUnknown_843F27C
- bl LoadSpritePalette
- ldr r1, _080FCEE0 @ =gUnknown_203ACE4
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCED4: .4byte gUnknown_843F274
-_080FCED8: .4byte 0xffff0000
-_080FCEDC: .4byte gUnknown_843F27C
-_080FCEE0: .4byte gUnknown_203ACE4
- thumb_func_end LoadWirelessStatusIndicatorSpriteGfx
-
- thumb_func_start sub_80FCEE4
-sub_80FCEE4: @ 80FCEE4
- push {r4,lr}
- ldr r1, _080FCF04 @ =gRfuLinkStatus
- ldr r0, [r1]
- ldrb r2, [r0, 0x2]
- movs r3, 0
- movs r4, 0x1
-_080FCEF0:
- adds r0, r2, 0
- ands r0, r4
- cmp r0, 0
- beq _080FCF08
- ldr r0, [r1]
- adds r0, 0xA
- adds r0, r3
- ldrb r0, [r0]
- b _080FCF16
- .align 2, 0
-_080FCF04: .4byte gRfuLinkStatus
-_080FCF08:
- lsrs r2, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080FCEF0
- movs r0, 0
-_080FCF16:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FCEE4
-
- thumb_func_start sub_80FCF1C
-sub_80FCF1C: @ 80FCF1C
- push {lr}
- adds r2, r0, 0
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- cmp r0, r1
- beq _080FCF30
- movs r0, 0
- strh r1, [r2, 0x32]
- strh r0, [r2, 0x34]
- strh r0, [r2, 0x36]
-_080FCF30:
- pop {r0}
- bx r0
- thumb_func_end sub_80FCF1C
-
- thumb_func_start sub_80FCF34
-sub_80FCF34: @ 80FCF34
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _080FCF78 @ =gUnknown_203ACE4
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080FCF44
- b _080FD106
-_080FCF44:
- ldr r2, _080FCF7C @ =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- ldr r0, _080FCF80 @ =0x00001234
- cmp r1, r0
- beq _080FCF5C
- b _080FD106
-_080FCF5C:
- adds r6, r2, 0
- movs r5, 0xFF
- movs r4, 0
- ldr r0, _080FCF84 @ =gRfuLinkStatus
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FCFB6
- adds r7, r6, 0
- adds r7, 0x28
- movs r1, 0x29
- adds r1, r6
- mov r8, r1
- b _080FCFA6
- .align 2, 0
-_080FCF78: .4byte gUnknown_203ACE4
-_080FCF7C: .4byte gSprites
-_080FCF80: .4byte 0x00001234
-_080FCF84: .4byte gRfuLinkStatus
-_080FCF88:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80FCADC
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bcc _080FCFA6
- adds r0, r4, 0
- bl sub_80FCADC
- lsls r0, 24
- lsrs r5, r0, 24
-_080FCFA6:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r4, r0
- blt _080FCF88
- b _080FCFC8
-_080FCFB6:
- bl sub_80FCEE4
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r6, 0
- adds r7, 0x28
- movs r2, 0x29
- adds r2, r6
- mov r8, r2
-_080FCFC8:
- bl sub_80FC1B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FCFD8
- movs r0, 0x4
- b _080FD006
-_080FCFD8:
- cmp r5, 0x18
- bhi _080FCFE0
- movs r0, 0x3
- b _080FD006
-_080FCFE0:
- adds r0, r5, 0
- subs r0, 0x19
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x65
- bhi _080FCFF0
- movs r0, 0x2
- b _080FD006
-_080FCFF0:
- adds r0, r5, 0
- subs r0, 0x7F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x65
- bhi _080FD000
- movs r0, 0x1
- b _080FD006
-_080FD000:
- cmp r5, 0xE4
- bls _080FD008
- movs r0, 0
-_080FD006:
- strh r0, [r6, 0x2E]
-_080FD008:
- movs r3, 0x2E
- ldrsh r1, [r6, r3]
- movs r2, 0x30
- ldrsh r0, [r6, r2]
- cmp r1, r0
- beq _080FD01E
- adds r0, r6, 0
- bl sub_80FCF1C
- ldrh r0, [r6, 0x2E]
- strh r0, [r6, 0x30]
-_080FD01E:
- movs r0, 0x32
- ldrsh r1, [r6, r0]
- ldr r2, [r6, 0x8]
- lsls r1, 2
- adds r1, r2
- movs r3, 0x36
- ldrsh r0, [r6, r3]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 10
- lsrs r0, 26
- movs r3, 0x34
- ldrsh r1, [r6, r3]
- cmp r0, r1
- bge _080FD06C
- ldrh r0, [r6, 0x36]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r6, 0x36]
- strh r3, [r6, 0x34]
- movs r1, 0x32
- ldrsh r0, [r6, r1]
- lsls r0, 2
- adds r0, r2
- movs r2, 0x36
- ldrsh r1, [r6, r2]
- ldr r0, [r0]
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- ldrsh r1, [r1, r0]
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- bne _080FD072
- strh r3, [r6, 0x36]
- b _080FD072
-_080FD06C:
- ldrh r0, [r6, 0x34]
- adds r0, 0x1
- strh r0, [r6, 0x34]
-_080FD072:
- ldr r4, _080FD110 @ =gMain
- movs r1, 0x84
- lsls r1, 3
- adds r0, r4, r1
- ldr r1, _080FD114 @ =gUnknown_843F204
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r0]
- str r2, [r0, 0x4]
- movs r3, 0x20
- ldrsh r2, [r6, r3]
- movs r1, 0
- ldrsb r1, [r7, r1]
- adds r2, r1
- ldr r1, _080FD118 @ =0x00000422
- adds r5, r4, r1
- ldr r3, _080FD11C @ =0x000001ff
- adds r1, r3, 0
- ands r2, r1
- ldrh r3, [r5]
- ldr r1, _080FD120 @ =0xfffffe00
- ands r1, r3
- orrs r1, r2
- strh r1, [r5]
- ldrh r1, [r6, 0x22]
- mov r2, r8
- ldrb r2, [r2]
- adds r1, r2
- strb r1, [r0]
- ldrb r2, [r6, 0x5]
- ldr r3, _080FD124 @ =0x00000425
- adds r5, r4, r3
- lsrs r2, 4
- lsls r2, 4
- ldrb r3, [r5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r2
- strb r1, [r5]
- movs r1, 0x32
- ldrsh r2, [r6, r1]
- ldr r1, [r6, 0x8]
- lsls r2, 2
- adds r2, r1
- movs r3, 0x36
- ldrsh r1, [r6, r3]
- ldr r2, [r2]
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1]
- ldrh r6, [r6, 0x3A]
- adds r2, r6
- ldr r1, _080FD128 @ =0x00000424
- adds r4, r1
- ldr r3, _080FD12C @ =0x000003ff
- adds r1, r3, 0
- ands r2, r1
- ldrh r3, [r4]
- ldr r1, _080FD130 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r4]
- ldr r1, _080FD134 @ =0x070003e8
- movs r2, 0x4
- bl CpuSet
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080FD106
- bl DestroyWirelessStatusIndicatorSprite
-_080FD106:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD110: .4byte gMain
-_080FD114: .4byte gUnknown_843F204
-_080FD118: .4byte 0x00000422
-_080FD11C: .4byte 0x000001ff
-_080FD120: .4byte 0xfffffe00
-_080FD124: .4byte 0x00000425
-_080FD128: .4byte 0x00000424
-_080FD12C: .4byte 0x000003ff
-_080FD130: .4byte 0xfffffc00
-_080FD134: .4byte 0x070003e8
- thumb_func_end sub_80FCF34
-
- thumb_func_start sub_80FD138
-sub_80FD138: @ 80FD138
- push {r4,r5,lr}
- adds r4, r0, 0
- str r1, [r4]
- movs r3, 0
- ldrb r0, [r2]
- cmp r0, 0xFF
- beq _080FD15C
- adds r5, r4, 0x4
-_080FD148:
- adds r1, r5, r3
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x6
- bgt _080FD15C
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080FD148
-_080FD15C:
- adds r0, r4, 0x4
- adds r0, r3
- movs r1, 0xFF
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FD138
-
- thumb_func_start sub_80FD16C
-sub_80FD16C: @ 80FD16C
- push {lr}
- movs r2, 0
- movs r1, 0x7
-_080FD172:
- strb r2, [r0]
- adds r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _080FD172
- pop {r0}
- bx r0
- thumb_func_end sub_80FD16C
-
- thumb_func_start sub_80FD180
-sub_80FD180: @ 80FD180
- push {lr}
- adds r1, r0, 0
- movs r2, 0
-_080FD186:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0
- beq _080FD192
- movs r0, 0
- b _080FD19A
-_080FD192:
- adds r2, 0x1
- cmp r2, 0x7
- ble _080FD186
- movs r0, 0x1
-_080FD19A:
- pop {r1}
- bx r1
- thumb_func_end sub_80FD180
-
- thumb_func_start sub_80FD1A0
-sub_80FD1A0: @ 80FD1A0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r0, _080FD1C4 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FD1B6
- b _080FD318
-_080FD1B6:
- movs r0, 0xF0
- bl AllocZeroed
- str r0, [sp, 0x14]
- movs r4, 0
- b _080FD22C
- .align 2, 0
-_080FD1C4: .4byte gWirelessCommType
-_080FD1C8:
- lsls r2, r4, 2
- mov r0, sp
- adds r1, r0, r2
- movs r0, 0x1
- negs r0, r0
- str r0, [r1]
- movs r5, 0
- mov r8, r2
- lsls r0, r4, 3
- adds r1, r4, 0x1
- mov r9, r1
- subs r0, r4
- lsls r0, 2
- str r0, [sp, 0x1C]
- ldr r2, _080FD24C @ =gLinkPlayers + 8
- mov r10, r2
- ldr r6, _080FD250 @ =0x00003ba8
- movs r4, 0
- mov r0, r10
- subs r0, 0x4
- ldr r7, [sp, 0x1C]
- adds r3, r7, r0
-_080FD1F4:
- ldrh r1, [r3]
- ldr r0, _080FD254 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r7, _080FD250 @ =0x00003ba8
- adds r0, r2, r7
- adds r0, r4
- ldr r0, [r0]
- cmp r1, r0
- bne _080FD220
- adds r1, r2, r6
- adds r1, 0x4
- ldr r0, [sp, 0x1C]
- add r0, r10
- str r3, [sp, 0x18]
- bl StringCompare
- ldr r3, [sp, 0x18]
- cmp r0, 0
- bne _080FD220
- mov r0, sp
- add r0, r8
- str r5, [r0]
-_080FD220:
- adds r6, 0xC
- adds r4, 0xC
- adds r5, 0x1
- cmp r5, 0x13
- ble _080FD1F4
- mov r4, r9
-_080FD22C:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _080FD1C8
- movs r0, 0
- mov r8, r0
- movs r4, 0
- ldr r1, _080FD254 @ =gSaveBlock1Ptr
- mov r9, r1
- mov r7, sp
- movs r5, 0
- ldr r6, [sp, 0x14]
- b _080FD2A4
- .align 2, 0
-_080FD24C: .4byte gLinkPlayers + 8
-_080FD250: .4byte 0x00003ba8
-_080FD254: .4byte gSaveBlock1Ptr
-_080FD258:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _080FD29E
- ldr r2, _080FD328 @ =gLinkPlayers
- adds r0, r5, r2
- ldrh r0, [r0, 0x1A]
- cmp r0, 0x1
- beq _080FD29E
- adds r0, r2, 0x4
- adds r0, r5, r0
- ldrh r1, [r0]
- adds r2, 0x8
- adds r2, r5, r2
- adds r0, r6, 0
- bl sub_80FD138
- ldr r1, [r7]
- cmp r1, 0
- blt _080FD298
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- mov r2, r9
- ldr r1, [r2]
- adds r0, r1
- ldr r1, _080FD32C @ =0x00003bac
- adds r0, r1
- bl sub_80FD16C
-_080FD298:
- adds r6, 0xC
- movs r2, 0x1
- add r8, r2
-_080FD29E:
- adds r7, 0x4
- adds r5, 0x1C
- adds r4, 0x1
-_080FD2A4:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _080FD258
- movs r4, 0
- ldr r7, _080FD330 @ =gSaveBlock1Ptr
- mov r9, r7
- ldr r6, _080FD334 @ =0x00003ba8
- movs r7, 0
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 2
- ldr r2, [sp, 0x14]
- adds r5, r0, r2
-_080FD2C6:
- mov r1, r9
- ldr r0, [r1]
- adds r0, r6
- adds r0, 0x4
- bl sub_80FD180
- cmp r0, 0
- bne _080FD2F8
- mov r0, r9
- ldr r2, [r0]
- ldr r1, _080FD334 @ =0x00003ba8
- adds r0, r2, r1
- adds r0, r7
- ldr r1, [r0]
- adds r2, r6
- adds r2, 0x4
- adds r0, r5, 0
- bl sub_80FD138
- adds r5, 0xC
- movs r2, 0x1
- add r8, r2
- mov r0, r8
- cmp r0, 0x13
- bgt _080FD302
-_080FD2F8:
- adds r6, 0xC
- adds r7, 0xC
- adds r4, 0x1
- cmp r4, 0x13
- ble _080FD2C6
-_080FD302:
- ldr r0, _080FD330 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _080FD334 @ =0x00003ba8
- adds r0, r1
- ldr r1, [sp, 0x14]
- movs r2, 0xF0
- bl memcpy
- ldr r0, [sp, 0x14]
- bl Free
-_080FD318:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD328: .4byte gLinkPlayers
-_080FD32C: .4byte 0x00003bac
-_080FD330: .4byte gSaveBlock1Ptr
-_080FD334: .4byte 0x00003ba8
- thumb_func_end sub_80FD1A0
-
- thumb_func_start sub_80FD338
-sub_80FD338: @ 80FD338
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- movs r7, 0
- ldr r6, _080FD374 @ =gSaveBlock1Ptr
- ldr r4, _080FD378 @ =0x00003ba8
- movs r5, 0
-_080FD350:
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x4
- mov r1, r9
- movs r2, 0x7
- bl StringCompareN
- cmp r0, 0
- bne _080FD37C
- ldr r0, [r6]
- ldr r1, _080FD378 @ =0x00003ba8
- adds r0, r1
- adds r0, r5
- ldr r0, [r0]
- cmp r0, r8
- bne _080FD37C
- movs r0, 0x1
- b _080FD396
- .align 2, 0
-_080FD374: .4byte gSaveBlock1Ptr
-_080FD378: .4byte 0x00003ba8
-_080FD37C:
- ldr r0, [r6]
- adds r0, r4
- adds r0, 0x4
- bl sub_80FD180
- cmp r0, 0
- bne _080FD394
- adds r4, 0xC
- adds r5, 0xC
- adds r7, 0x1
- cmp r7, 0x13
- ble _080FD350
-_080FD394:
- movs r0, 0
-_080FD396:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD338
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index 3dbea1b1f..2316f77b1 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -5722,7 +5722,7 @@ sub_8057910: @ 8057910
lsrs r0, 24
cmp r0, 0x3C
bls _0805792E
- bl sub_80FA190
+ bl LinkRfu_FatalError
_0805792E:
pop {r0}
bx r0
@@ -7124,7 +7124,7 @@ _08058350: .4byte gWirelessCommType
_08058354: .4byte gLink
_08058358: .4byte 0x00000339
_0805835C:
- ldr r0, _08058368 @ =gUnknown_3005450
+ ldr r0, _08058368 @ =Rfu
ldr r1, _0805836C @ =0x000008d2
adds r0, r1
ldrb r0, [r0]
@@ -7132,7 +7132,7 @@ _08058364:
pop {r1}
bx r1
.align 2, 0
-_08058368: .4byte gUnknown_3005450
+_08058368: .4byte Rfu
_0805836C: .4byte 0x000008d2
thumb_func_end sub_805833C
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index 38e233d6c..5e6327c81 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -3930,7 +3930,7 @@ _081497FA:
sub_8149804: @ 8149804
push {lr}
movs r2, 0
- ldr r1, _08149828 @ =gUnknown_3005450
+ ldr r1, _08149828 @ =Rfu
ldr r3, _0814982C @ =0x0000069e
adds r0, r1, r3
ldrb r0, [r0]
@@ -3947,7 +3947,7 @@ _08149820:
pop {r1}
bx r1
.align 2, 0
-_08149828: .4byte gUnknown_3005450
+_08149828: .4byte Rfu
_0814982C: .4byte 0x0000069e
_08149830: .4byte 0x000008d2
thumb_func_end sub_8149804
diff --git a/asm/link_rfu_3.s b/asm/union_room.s
index 1bd5420fa..2e681d8ca 100644
--- a/asm/link_rfu_3.s
+++ b/asm/union_room.s
@@ -3544,7 +3544,7 @@ _081175E4:
.4byte _0811761C
.4byte _0811761C
_0811761C:
- bl sub_80FD1A0
+ bl RecordMixTrainerNames
_08117620:
ldr r0, _08117638 @ =gUnknown_203B058
ldrb r0, [r0]
@@ -11144,2060 +11144,4 @@ _0811B4F0:
_0811B500: .4byte gUnknown_8459580
thumb_func_end sub_811B31C
- thumb_func_start is_walking_or_running
-is_walking_or_running: @ 811B504
- push {lr}
- ldr r0, _0811B518 @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x2
- beq _0811B512
- cmp r0, 0
- bne _0811B51C
-_0811B512:
- movs r0, 0x1
- b _0811B51E
- .align 2, 0
-_0811B518: .4byte gPlayerAvatar
-_0811B51C:
- movs r0, 0
-_0811B51E:
- pop {r1}
- bx r1
- thumb_func_end is_walking_or_running
-
- thumb_func_start sub_811B524
-sub_811B524: @ 811B524
- ldr r3, _0811B538 @ =gUnknown_84570D8
- movs r2, 0x7
- ands r2, r1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- adds r2, r1
- adds r2, r3
- ldrb r0, [r2]
- bx lr
- .align 2, 0
-_0811B538: .4byte gUnknown_84570D8
- thumb_func_end sub_811B524
-
- thumb_func_start sub_811B53C
-sub_811B53C: @ 811B53C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r4, _0811B584 @ =gUnknown_84570EC
- mov r8, r4
- lsls r0, 2
- adds r4, r0, r4
- movs r6, 0
- ldrsh r5, [r4, r6]
- ldr r6, _0811B588 @ =gUnknown_845710C
- lsls r1, 1
- adds r4, r1, r6
- ldrb r4, [r4]
- lsls r4, 24
- asrs r4, 24
- adds r5, r4
- adds r5, 0x7
- str r5, [r2]
- movs r2, 0x2
- add r8, r2
- add r0, r8
- movs r4, 0
- ldrsh r0, [r0, r4]
- adds r6, 0x1
- adds r1, r6
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r0, r1
- adds r0, 0x7
- str r0, [r3]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B584: .4byte gUnknown_84570EC
-_0811B588: .4byte gUnknown_845710C
- thumb_func_end sub_811B53C
-
- thumb_func_start sub_811B58C
-sub_811B58C: @ 811B58C
- push {r4-r7,lr}
- mov r12, r3
- ldr r7, _0811B5CC @ =gUnknown_84570EC
- lsls r5, r0, 2
- adds r0, r5, r7
- movs r4, 0
- ldrsh r3, [r0, r4]
- ldr r6, _0811B5D0 @ =gUnknown_845710C
- lsls r4, r1, 1
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r3, r0
- adds r3, 0x7
- cmp r3, r2
- bne _0811B5D4
- adds r0, r7, 0x2
- adds r0, r5, r0
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r0, r6, 0x1
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r0
- adds r1, 0x7
- cmp r1, r12
- bne _0811B5D4
- movs r0, 0x1
- b _0811B5D6
- .align 2, 0
-_0811B5CC: .4byte gUnknown_84570EC
-_0811B5D0: .4byte gUnknown_845710C
-_0811B5D4:
- movs r0, 0
-_0811B5D6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B58C
-
- thumb_func_start sub_811B5DC
-sub_811B5DC: @ 811B5DC
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_811B5DC
-
- thumb_func_start sub_811B5F0
-sub_811B5F0: @ 811B5F0
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_811B5F0
-
- thumb_func_start sub_811B600
-sub_811B600: @ 811B600
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end sub_811B600
-
- thumb_func_start sub_811B610
-sub_811B610: @ 811B610
- push {lr}
- ldr r2, _0811B628 @ =0x00004010
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0811B628: .4byte 0x00004010
- thumb_func_end sub_811B610
-
- thumb_func_start sub_811B62C
-sub_811B62C: @ 811B62C
- push {lr}
- ldr r1, _0811B644 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B648 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- pop {r0}
- bx r0
- .align 2, 0
-_0811B644: .4byte gUnknown_8457120
-_0811B648: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B62C
-
- thumb_func_start sub_811B64C
-sub_811B64C: @ 811B64C
- push {lr}
- ldr r1, _0811B664 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B668 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveObjectEventByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_0811B664: .4byte gUnknown_8457120
-_0811B668: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B64C
-
- thumb_func_start sub_811B66C
-sub_811B66C: @ 811B66C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- ldr r1, _0811B6B8 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B6BC @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B6C0 @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- ldrb r1, [r5]
- adds r0, r4, 0
- bl ObjectEventSetHeldMovement
- lsls r0, 24
- cmp r0, 0
- bne _0811B6C4
- movs r0, 0x1
- b _0811B6D2
- .align 2, 0
-_0811B6B8: .4byte gUnknown_8457120
-_0811B6BC: .4byte gSaveBlock1Ptr
-_0811B6C0: .4byte gObjectEvents
-_0811B6C4:
- ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B6E0 @ =0x00000183
- ldr r2, _0811B6E4 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811B6D0:
- movs r0, 0
-_0811B6D2:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B6DC: .4byte gUnknown_8457138
-_0811B6E0: .4byte 0x00000183
-_0811B6E4: .4byte gUnknown_8457174
- thumb_func_end sub_811B66C
-
- thumb_func_start sub_811B6E8
-sub_811B6E8: @ 811B6E8
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0811B724 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B728 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B748
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B72C @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- bne _0811B730
- movs r0, 0
- b _0811B74A
- .align 2, 0
-_0811B724: .4byte gUnknown_8457120
-_0811B728: .4byte gSaveBlock1Ptr
-_0811B72C: .4byte gObjectEvents
-_0811B730:
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _0811B742
- adds r0, r4, 0
- bl npc_sync_anim_pause_bits
- b _0811B748
-_0811B742:
- adds r0, r4, 0
- bl FreezeObjectEvent
-_0811B748:
- movs r0, 0x1
-_0811B74A:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B6E8
-
- thumb_func_start sub_811B754
-sub_811B754: @ 811B754
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811B798 @ =gUnknown_203B088
- movs r1, 0
- str r1, [r0]
- ldr r0, _0811B79C @ =gUnknown_203B084
- str r4, [r0]
- cmp r4, 0
- bne _0811B774
- ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- movs r1, 0xDD
- lsls r1, 1
- ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B774:
- movs r1, 0
- adds r0, r4, 0
- movs r2, 0x7
-_0811B77A:
- strb r1, [r0]
- strb r1, [r0, 0x1]
- strb r1, [r0, 0x2]
- strb r1, [r0, 0x3]
- adds r0, 0x4
- subs r2, 0x1
- cmp r2, 0
- bge _0811B77A
- bl sub_811BA18
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B798: .4byte gUnknown_203B088
-_0811B79C: .4byte gUnknown_203B084
-_0811B7A0: .4byte gUnknown_8457138
-_0811B7A4: .4byte gUnknown_8457178
- thumb_func_end sub_811B754
-
- thumb_func_start sub_811B7A8
-sub_811B7A8: @ 811B7A8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r0, 0
- ldrsb r0, [r5, r0]
- cmp r0, 0
- beq _0811B7BC
- cmp r0, 0x1
- beq _0811B7DC
- b _0811B7FA
-_0811B7BC:
- ldr r1, _0811B7D8 @ =gUnknown_845718D
- adds r0, r4, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B7FA
- adds r0, r4, 0
- bl sub_811B5F0
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0811B7FA
- .align 2, 0
-_0811B7D8: .4byte gUnknown_845718D
-_0811B7DC:
- adds r0, r4, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B7FA
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
- movs r0, 0
- strb r0, [r5]
- movs r0, 0x1
- b _0811B7FC
-_0811B7FA:
- movs r0, 0
-_0811B7FC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B7A8
-
- thumb_func_start sub_811B804
-sub_811B804: @ 811B804
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x2
- beq _0811B8A0
- cmp r0, 0x2
- bgt _0811B820
- cmp r0, 0
- beq _0811B826
- b _0811B8B2
-_0811B820:
- cmp r0, 0x3
- beq _0811B888
- b _0811B8B2
-_0811B826:
- bl is_walking_or_running
- cmp r0, 0
- beq _0811B8B2
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- mov r0, sp
- adds r1, r4, 0
- bl plaer_get_pos_including_state_based_drift
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- ldrb r1, [r7, 0x1]
- adds r0, r5, 0
- bl sub_811B610
- adds r0, r5, 0
- bl sub_811B62C
- adds r0, r5, 0
- bl sub_811B600
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0811B888:
- ldr r1, _0811B89C @ =gUnknown_845718F
- adds r0, r5, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B8B2
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0811B8B2
- .align 2, 0
-_0811B89C: .4byte gUnknown_845718F
-_0811B8A0:
- adds r0, r5, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B8B2
- movs r0, 0
- strb r0, [r6]
- movs r0, 0x1
- b _0811B8B4
-_0811B8B2:
- movs r0, 0
-_0811B8B4:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B804
-
- thumb_func_start sub_811B8BC
-sub_811B8BC: @ 811B8BC
- push {r4-r6,lr}
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r1, _0811B8F4 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B8DA
- ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B8FC @ =0x00000231
- ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B8DA:
- movs r0, 0x1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_811B524
- strb r0, [r4, 0x1]
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811B904
- movs r0, 0
- b _0811B906
- .align 2, 0
-_0811B8F4: .4byte gUnknown_203B084
-_0811B8F8: .4byte gUnknown_8457138
-_0811B8FC: .4byte 0x00000231
-_0811B900: .4byte gUnknown_8457178
-_0811B904:
- movs r0, 0x1
-_0811B906:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811B8BC
-
- thumb_func_start sub_811B90C
-sub_811B90C: @ 811B90C
- push {r4,lr}
- ldr r1, _0811B934 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B926
- ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B93C @ =0x00000241
- ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B926:
- movs r0, 0x2
- strb r0, [r4, 0x3]
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _0811B944
- movs r0, 0
- b _0811B946
- .align 2, 0
-_0811B934: .4byte gUnknown_203B084
-_0811B938: .4byte gUnknown_8457138
-_0811B93C: .4byte 0x00000241
-_0811B940: .4byte gUnknown_8457178
-_0811B944:
- movs r0, 0x1
-_0811B946:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B90C
-
- thumb_func_start sub_811B94C
-sub_811B94C: @ 811B94C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _0811B9AE
- cmp r1, 0x1
- bgt _0811B962
- cmp r1, 0
- beq _0811B96C
- b _0811B9CE
-_0811B962:
- cmp r1, 0x2
- beq _0811B978
- cmp r1, 0x3
- beq _0811B9BC
- b _0811B9CE
-_0811B96C:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0x2
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B978:
- adds r0, r5, 0
- movs r1, 0
- bl sub_811BBC8
- adds r1, r0, 0
- cmp r1, 0
- bne _0811B99E
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B99E
- strb r1, [r4]
- strb r1, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B64C
- adds r0, r5, 0
- bl sub_811B5F0
- b _0811B9CE
-_0811B99E:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B804
- cmp r0, 0x1
- bne _0811B9CE
- b _0811B9CC
-_0811B9AE:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B9CE
- movs r1, 0
- movs r0, 0x3
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B9BC:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B7A8
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0
-_0811B9CC:
- strb r0, [r4]
-_0811B9CE:
- movs r0, 0
- strb r0, [r4, 0x3]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811B94C
-
- thumb_func_start sub_811B9D8
-sub_811B9D8: @ 811B9D8
- push {r4,r5,lr}
- ldr r5, _0811BA08 @ =gUnknown_203B084
- ldr r0, [r5]
- cmp r0, 0
- bne _0811B9EE
- ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA10 @ =0x00000283
- ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B9EE:
- movs r4, 0
-_0811B9F0:
- lsls r0, r4, 2
- ldr r1, [r5]
- adds r1, r0
- adds r0, r4, 0
- bl sub_811B94C
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811B9F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA08: .4byte gUnknown_203B084
-_0811BA0C: .4byte gUnknown_8457138
-_0811BA10: .4byte 0x00000283
-_0811BA14: .4byte gUnknown_8457178
- thumb_func_end sub_811B9D8
-
- thumb_func_start sub_811BA18
-sub_811BA18: @ 811BA18
- push {r4,lr}
- ldr r4, _0811BA38 @ =sub_811B9D8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811BA3C
- adds r0, r4, 0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- b _0811BA4A
- .align 2, 0
-_0811BA38: .4byte sub_811B9D8
-_0811BA3C:
- ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA54 @ =0x0000028f
- ldr r2, _0811BA58 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0x10
-_0811BA4A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BA50: .4byte gUnknown_8457138
-_0811BA54: .4byte 0x0000028f
-_0811BA58: .4byte gUnknown_8457174
- thumb_func_end sub_811BA18
-
- thumb_func_start sub_811BA5C
-sub_811BA5C: @ 811BA5C
- push {lr}
- ldr r0, _0811BA74 @ =sub_811B9D8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _0811BA70
- bl DestroyTask
-_0811BA70:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA74: .4byte sub_811B9D8
- thumb_func_end sub_811BA5C
-
- thumb_func_start sub_811BA78
-sub_811BA78: @ 811BA78
- push {r4,lr}
- movs r4, 0
-_0811BA7C:
- adds r0, r4, 0
- bl sub_811B5DC
- cmp r0, 0
- bne _0811BA92
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
-_0811BA92:
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811BA7C
- ldr r1, _0811BAA8 @ =gUnknown_203B084
- movs r0, 0
- str r0, [r1]
- bl sub_811BA5C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BAA8: .4byte gUnknown_203B084
- thumb_func_end sub_811BA78
-
- thumb_func_start sub_811BAAC
-sub_811BAAC: @ 811BAAC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp, 0x8]
- mov r9, r1
- movs r7, 0
- mov r0, r9
- lsls r0, 2
- mov r8, r0
- ldr r0, _0811BB38 @ =gUnknown_84570EC
- mov r2, r8
- adds r1, r2, r0
- ldrh r1, [r1]
- mov r2, sp
- strh r1, [r2, 0xC]
- adds r0, 0x2
- add r0, r8
- ldrh r0, [r0]
- mov r10, r0
- ldr r6, _0811BB3C @ =gUnknown_845710C
-_0811BADA:
- mov r5, r8
- add r5, r9
- adds r5, r7
- adds r4, r5, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0
- ldrsb r2, [r6, r2]
- mov r0, sp
- ldrh r0, [r0, 0xC]
- adds r2, r0, r2
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x1
- ldrsb r3, [r6, r3]
- add r3, r10
- lsls r3, 16
- asrs r3, 16
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x19
- adds r1, r4, 0
- bl sprite_new
- ldr r1, [sp, 0x8]
- adds r5, r1, r5
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8069124
- adds r6, 0x2
- adds r7, 0x1
- cmp r7, 0x4
- ble _0811BADA
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB38: .4byte gUnknown_84570EC
-_0811BB3C: .4byte gUnknown_845710C
- thumb_func_end sub_811BAAC
-
- thumb_func_start sub_811BB40
-sub_811BB40: @ 811BB40
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- ldr r6, _0811BB64 @ =gSprites
-_0811BB48:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- adds r4, 0x1
- cmp r4, 0x27
- ble _0811BB48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB64: .4byte gSprites
- thumb_func_end sub_811BB40
-
- thumb_func_start sub_811BB68
-sub_811BB68: @ 811BB68
- push {r4-r7,lr}
- sub sp, 0x8
- movs r5, 0
- add r7, sp, 0x4
-_0811BB70:
- movs r4, 0
- adds r6, r5, 0x1
-_0811BB74:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BB74
- adds r5, r6, 0
- cmp r5, 0x7
- ble _0811BB70
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BB68
-
- thumb_func_start sub_811BBA0
-sub_811BBA0: @ 811BBA0
- push {lr}
- adds r1, r0, 0
- cmp r1, 0
- beq _0811BBB4
- ldr r0, _0811BBB0 @ =gUnknown_845711B
- adds r0, r1, r0
- ldrb r0, [r0]
- b _0811BBC4
- .align 2, 0
-_0811BBB0: .4byte gUnknown_845711B
-_0811BBB4:
- ldrb r1, [r2, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- beq _0811BBC2
- movs r0, 0x4
- b _0811BBC4
-_0811BBC2:
- movs r0, 0x1
-_0811BBC4:
- pop {r1}
- bx r1
- thumb_func_end sub_811BBA0
-
- thumb_func_start sub_811BBC8
-sub_811BBC8: @ 811BBC8
- push {lr}
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r2
- adds r0, r1
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- pop {r1}
- bx r1
- thumb_func_end sub_811BBC8
-
- thumb_func_start sub_811BBE0
-sub_811BBE0: @ 811BBE0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- mov r9, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r0, r5, 2
- adds r0, r5
- adds r7, r0, r6
- adds r0, r5, 0
- bl sub_811BBC8
- cmp r0, 0x1
- bne _0811BC1E
- adds r4, r7, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_8069124
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80691A4
-_0811BC1E:
- adds r0, r7, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- bl sub_8069094
- adds r0, r6, 0
- adds r1, r5, 0
- mov r2, r9
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_811C008
- add r3, sp, 0x4
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0x1
- bl sub_8059024
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BBE0
-
- thumb_func_start sub_811BC68
-sub_811BC68: @ 811BC68
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 2
- adds r0, r4
- adds r0, r5
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80691A4
- add r3, sp, 0x4
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BC68
-
- thumb_func_start sub_811BCA0
-sub_811BCA0: @ 811BCA0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r7, r0, 0
- mov r8, r1
- mov r6, sp
- adds r6, 0x2
- mov r0, sp
- adds r1, r6, 0
- bl PlayerGetDestCoords
- add r4, sp, 0x4
- mov r5, sp
- adds r5, 0x6
- adds r0, r4, 0
- adds r1, r5, 0
- bl plaer_get_pos_including_state_based_drift
- lsls r0, r7, 2
- adds r0, r7
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- mov r10, r6
- mov r9, r4
- adds r6, r5, 0
- cmp r0, 0x1
- bne _0811BD2C
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- movs r0, 0
- ldrsh r2, [r4, r0]
- movs r1, 0
- ldrsh r3, [r6, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- mov r2, r8
- ldrb r0, [r2, 0xB]
- lsls r0, 31
- lsrs r0, 31
- ldrb r1, [r2, 0x2]
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- movs r1, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD2C:
- movs r5, 0x1
- mov r4, r8
- adds r4, 0x4
-_0811BD32:
- ldrb r0, [r4]
- cmp r0, 0
- bne _0811BD42
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811BC68
- b _0811BD90
-_0811BD42:
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- mov r0, r9
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r6, r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- ldrb r2, [r4]
- lsrs r0, r2, 3
- movs r1, 0x1
- ands r0, r1
- movs r1, 0x7
- ands r1, r2
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- adds r1, r5, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD90:
- adds r4, 0x1
- adds r5, 0x1
- cmp r5, 0x4
- ble _0811BD32
-_0811BD98:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BCA0
-
- thumb_func_start sub_811BDA8
-sub_811BDA8: @ 811BDA8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r4, 0xA]
- lsls r0, 25
- lsrs r0, 25
- subs r0, 0x40
- cmp r0, 0x14
- bhi _0811BE4C
- lsls r0, 2
- ldr r1, _0811BDC4 @ =_0811BDC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811BDC4: .4byte _0811BDC8
- .align 2, 0
-_0811BDC8:
- .4byte _0811BE1C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE1C
-_0811BE1C:
- ldrb r1, [r4, 0xB]
- lsls r1, 31
- lsrs r1, 31
- ldrb r2, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B8BC
- movs r4, 0
-_0811BE2C:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- bls _0811BE2C
- b _0811BE58
-_0811BE3C:
- adds r0, r5, 0
- bl sub_811B90C
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BCA0
- b _0811BE58
-_0811BE4C:
- ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BE64 @ =0x000003d3
- ldr r2, _0811BE68 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811BE58:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BE60: .4byte gUnknown_8457138
-_0811BE64: .4byte 0x000003d3
-_0811BE68: .4byte gUnknown_8457174
- thumb_func_end sub_811BDA8
-
- thumb_func_start sub_811BE6C
-sub_811BE6C: @ 811BE6C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811B90C
- movs r4, 0
-_0811BE76:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BE76
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE6C
-
- thumb_func_start sub_811BE8C
-sub_811BE8C: @ 811BE8C
- push {r4,r5,lr}
- ldr r2, _0811BEAC @ =gUnknown_203B088
- movs r1, 0
- str r1, [r2]
- movs r5, 0
- ldr r4, [r0]
-_0811BE98:
- ldrb r0, [r4, 0x1A]
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x1
- bne _0811BEB0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BDA8
- b _0811BEBC
- .align 2, 0
-_0811BEAC: .4byte gUnknown_203B088
-_0811BEB0:
- cmp r1, 0x2
- bne _0811BEBC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BE6C
-_0811BEBC:
- adds r4, 0x20
- adds r5, 0x1
- cmp r5, 0x7
- ble _0811BE98
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE8C
-
- thumb_func_start sub_811BECC
-sub_811BECC: @ 811BECC
- ldr r1, _0811BED8 @ =gUnknown_203B088
- movs r0, 0x96
- lsls r0, 1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0811BED8: .4byte gUnknown_203B088
- thumb_func_end sub_811BECC
-
- thumb_func_start sub_811BEDC
-sub_811BEDC: @ 811BEDC
- push {lr}
- adds r2, r0, 0
- ldr r0, _0811BEFC @ =gUnknown_203B088
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- movs r0, 0x96
- lsls r0, 1
- cmp r1, r0
- bls _0811BEF6
- adds r0, r2, 0
- bl sub_811BE8C
-_0811BEF6:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BEFC: .4byte gUnknown_203B088
- thumb_func_end sub_811BEDC
-
- thumb_func_start sub_811BF00
-sub_811BF00: @ 811BF00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r5, r0, 0
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- bl is_walking_or_running
- cmp r0, 0
- bne _0811BF48
- b _0811BFEE
-_0811BF1C:
- ldr r4, _0811BF44 @ =gUnknown_8457116
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r2, [r0]
- adds r0, r6, 0
- ldr r1, [sp, 0xC]
- bl sub_811C008
- ldr r0, [sp, 0x4]
- strh r6, [r0]
- mov r1, sp
- ldrh r2, [r1, 0xC]
- ldr r1, [sp, 0x8]
- strh r2, [r1]
- movs r0, 0x1
- b _0811BFF0
- .align 2, 0
-_0811BF44: .4byte gUnknown_8457116
-_0811BF48:
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r0, _0811C000 @ =gUnknown_84570EC
- adds r7, r5, 0
- movs r1, 0
- mov r10, r1
- adds r2, r0, 0x2
- str r2, [sp, 0x10]
- str r0, [sp, 0x14]
-_0811BF66:
- movs r6, 0
- ldr r4, [sp, 0x14]
- movs r0, 0
- ldrsh r4, [r4, r0]
- mov r9, r4
- ldr r1, [sp, 0x10]
- mov r8, r1
- ldr r5, _0811C004 @ =gUnknown_845710C
-_0811BF76:
- mov r2, r10
- adds r3, r2, r6
- mov r0, sp
- movs r4, 0
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r5, r0]
- add r0, r9
- adds r0, 0x7
- cmp r1, r0
- bne _0811BFCA
- mov r1, sp
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- mov r4, r8
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r2, 0x1
- ldrsb r2, [r5, r2]
- adds r1, r2
- adds r1, 0x7
- cmp r0, r1
- bne _0811BFCA
- adds r0, r3, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_806916C
- cmp r0, 0
- bne _0811BFCA
- adds r0, r4, 0
- bl sub_8069294
- cmp r0, 0
- bne _0811BFCA
- ldrb r1, [r7, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- beq _0811BF1C
-_0811BFCA:
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _0811BF76
- adds r7, 0x20
- movs r4, 0x5
- add r10, r4
- ldr r0, [sp, 0x10]
- adds r0, 0x4
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- adds r1, 0x4
- str r1, [sp, 0x14]
- ldr r2, [sp, 0xC]
- adds r2, 0x1
- str r2, [sp, 0xC]
- cmp r2, 0x7
- ble _0811BF66
-_0811BFEE:
- movs r0, 0
-_0811BFF0:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C000: .4byte gUnknown_84570EC
-_0811C004: .4byte gUnknown_845710C
- thumb_func_end sub_811BF00
-
- thumb_func_start sub_811C008
-sub_811C008: @ 811C008
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- lsls r1, r2, 24
- lsrs r1, 24
- lsls r0, r3, 2
- adds r0, r3
- subs r0, 0x38
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_8069058
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811C008
-
- thumb_func_start sub_811C028
-sub_811C028: @ 811C028
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r3, r4, 5
- adds r3, r2
- adds r2, r3, 0
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811C008
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811C028
-
- thumb_func_start sub_811C04C
-sub_811C04C: @ 811C04C
- push {r4-r7,lr}
- movs r0, 0xA
- bl sub_81173C0
- movs r4, 0
- movs r7, 0x64
- ldr r6, _0811C0CC @ =gPlayerParty
- ldr r5, _0811C0D0 @ =gEnemyParty
-_0811C05C:
- ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
- adds r0, r4, r0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, r0, 0
- muls r1, r7
- adds r1, r6
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r5, 0x64
- adds r4, 0x1
- cmp r4, 0x1
- ble _0811C05C
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r0, 0xFA
- lsls r0, 1
- adds r5, r4, r0
-_0811C082:
- adds r0, r4, 0
- bl ZeroMonData
- adds r4, 0x64
- cmp r4, r5
- ble _0811C082
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r5, 0
- adds r6, r4, 0
- adds r6, 0x64
-_0811C096:
- ldr r1, _0811C0D0 @ =gEnemyParty
- adds r1, r5, r1
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r4, 0x64
- adds r5, 0x64
- cmp r4, r6
- ble _0811C096
- movs r0, 0x32
- bl IncrementGameStat
- bl CalculatePlayerPartyCount
- ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A
- movs r2, 0xC0
- lsls r2, 4
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _0811C0DC @ =CB2_InitBattle
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0CC: .4byte gPlayerParty
-_0811C0D0: .4byte gEnemyParty
-_0811C0D4: .4byte gSelectedOrderFromParty
-_0811C0D8: .4byte gTrainerBattleOpponent_A
-_0811C0DC: .4byte CB2_InitBattle
- thumb_func_end sub_811C04C
-
- thumb_func_start sub_811C0E0
-sub_811C0E0: @ 811C0E0
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x18
- adds r5, r0, 0
- mov r10, r1
- adds r6, r2, 0
- ldr r4, [sp, 0x34]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- mov r8, r0
- ldr r1, _0811C14C @ =gUnknown_84571A8
- mov r9, r1
- ldrb r0, [r1]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- str r3, [sp, 0x14]
- bl FillWindowPixelBuffer
- mov r0, r8
- str r0, [sp]
- str r0, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- mov r0, r10
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r6, 0
- ldr r3, [sp, 0x14]
- bl AddTextPrinterParameterized4
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C14C: .4byte gUnknown_84571A8
- thumb_func_end sub_811C0E0
-
- thumb_func_start sub_811C150
-sub_811C150: @ 811C150
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0811C168
- cmp r0, 0x1
- beq _0811C196
- b _0811C1AA
-_0811C168:
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD
- bl DrawTextBorderOuter
- str r5, [sp]
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x2
- bl sub_811C0E0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0811C1AA
-_0811C196:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0811C1AA
- strh r0, [r4]
- movs r0, 0x1
- b _0811C1AC
-_0811C1AA:
- movs r0, 0
-_0811C1AC:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811C150
-
- thumb_func_start sub_811C1B4
-sub_811C1B4: @ 811C1B4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_811C1B4
-
- thumb_func_start sub_811C1C8
-sub_811C1C8: @ 811C1C8
- push {r4,lr}
- sub sp, 0xC
- ldr r1, _0811C1E8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x33
- bls _0811C1DE
- b _0811C516
-_0811C1DE:
- lsls r0, 2
- ldr r1, _0811C1EC @ =_0811C1F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811C1E8: .4byte gMain
-_0811C1EC: .4byte _0811C1F0
- .align 2, 0
-_0811C1F0:
- .4byte _0811C2C0
- .4byte _0811C364
- .4byte _0811C38C
- .4byte _0811C3B0
- .4byte _0811C400
- .4byte _0811C516
- .4byte _0811C4E4
- .4byte _0811C4C0
- .4byte _0811C4E4
- .4byte _0811C500
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C48C
- .4byte _0811C4A8
-_0811C2C0:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r4, _0811C350 @ =gUnknown_203B08C
- movs r0, 0x4
- bl AllocZeroed
- str r0, [r4]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0811C354 @ =gUnknown_8457194
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- bl ResetTempTileDataBuffers
- ldr r0, _0811C358 @ =gUnknown_8457198
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- bne _0811C300
- b _0811C52A
-_0811C300:
- bl DeactivateAllTextPrinters
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- bl Menu_LoadStdPal
- ldr r0, _0811C35C @ =sub_811C1B4
- bl SetVBlankCallback
- ldr r1, _0811C360 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C350: .4byte gUnknown_203B08C
-_0811C354: .4byte gUnknown_8457194
-_0811C358: .4byte gUnknown_8457198
-_0811C35C: .4byte sub_811C1B4
-_0811C360: .4byte gMain
-_0811C364:
- ldr r0, _0811C380 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C384 @ =gUnknown_841E538
- movs r2, 0
- bl sub_811C150
- cmp r0, 0
- bne _0811C376
- b _0811C516
-_0811C376:
- ldr r1, _0811C388 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C380: .4byte gUnknown_203B08C
-_0811C384: .4byte gUnknown_841E538
-_0811C388: .4byte gMain
-_0811C38C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- ldr r1, _0811C3AC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C3AC: .4byte gMain
-_0811C3B0:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _0811C3BC
- b _0811C516
-_0811C3BC:
- ldr r4, _0811C3D8 @ =gBlockSendBuffer
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl memset
- ldr r0, _0811C3DC @ =gSelectedOrderFromParty
- ldrb r1, [r0]
- ldrb r0, [r0, 0x1]
- cmn r1, r0
- bne _0811C3E0
- movs r0, 0x52
- b _0811C3E2
- .align 2, 0
-_0811C3D8: .4byte gBlockSendBuffer
-_0811C3DC: .4byte gSelectedOrderFromParty
-_0811C3E0:
- movs r0, 0x51
-_0811C3E2:
- strb r0, [r4]
- ldr r1, _0811C3F8 @ =gBlockSendBuffer
- movs r0, 0
- movs r2, 0x20
- bl SendBlock
- ldr r1, _0811C3FC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C3F8: .4byte gBlockSendBuffer
-_0811C3FC: .4byte gMain
-_0811C400:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0811C40E
- b _0811C516
-_0811C40E:
- ldr r1, _0811C440 @ =gBlockRecvBuffer
- ldrh r0, [r1]
- cmp r0, 0x51
- bne _0811C448
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0x51
- bne _0811C448
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0811C444 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x32
- b _0811C47E
- .align 2, 0
-_0811C440: .4byte gBlockRecvBuffer
-_0811C444: .4byte gMain
-_0811C448:
- bl sub_800AAC0
- ldr r4, _0811C46C @ =gBlockRecvBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 16
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x52
- bne _0811C474
- ldr r0, _0811C470 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x6
- b _0811C47E
- .align 2, 0
-_0811C46C: .4byte gBlockRecvBuffer
-_0811C470: .4byte gMain
-_0811C474:
- ldr r0, _0811C488 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x8
-_0811C47E:
- strb r1, [r0]
- bl ResetBlockReceivedFlags
- b _0811C516
- .align 2, 0
-_0811C488: .4byte gMain
-_0811C48C:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _0811C516
- bl sub_800AB9C
- ldr r1, _0811C4A4 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C4A4: .4byte gMain
-_0811C4A8:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4BC @ =sub_811C04C
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4BC: .4byte sub_811C04C
-_0811C4C0:
- ldr r0, _0811C4D8 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C4DC @ =gUnknown_841E58D
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4E0 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4D8: .4byte gUnknown_203B08C
-_0811C4DC: .4byte gUnknown_841E58D
-_0811C4E0: .4byte CB2_ReturnToField
-_0811C4E4:
- ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0811C516
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
-_0811C4F2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811C516
- .align 2, 0
-_0811C4FC: .4byte gReceivedRemoteLinkPlayers
-_0811C500:
- ldr r0, _0811C534 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C538 @ =gUnknown_841E572
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C53C @ =CB2_ReturnToField
- bl SetMainCallback2
-_0811C516:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
-_0811C52A:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C534: .4byte gUnknown_203B08C
-_0811C538: .4byte gUnknown_841E572
-_0811C53C: .4byte CB2_ReturnToField
- thumb_func_end sub_811C1C8
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/union_room_player_avatar.s b/asm/union_room_player_avatar.s
new file mode 100644
index 000000000..5c6786ae6
--- /dev/null
+++ b/asm/union_room_player_avatar.s
@@ -0,0 +1,2064 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start is_walking_or_running
+is_walking_or_running: @ 811B504
+ push {lr}
+ ldr r0, _0811B518 @ =gPlayerAvatar
+ ldrb r0, [r0, 0x3]
+ cmp r0, 0x2
+ beq _0811B512
+ cmp r0, 0
+ bne _0811B51C
+_0811B512:
+ movs r0, 0x1
+ b _0811B51E
+ .align 2, 0
+_0811B518: .4byte gPlayerAvatar
+_0811B51C:
+ movs r0, 0
+_0811B51E:
+ pop {r1}
+ bx r1
+ thumb_func_end is_walking_or_running
+
+ thumb_func_start sub_811B524
+sub_811B524: @ 811B524
+ ldr r3, _0811B538 @ =gUnknown_84570D8
+ movs r2, 0x7
+ ands r2, r1
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 1
+ adds r2, r1
+ adds r2, r3
+ ldrb r0, [r2]
+ bx lr
+ .align 2, 0
+_0811B538: .4byte gUnknown_84570D8
+ thumb_func_end sub_811B524
+
+ thumb_func_start sub_811B53C
+sub_811B53C: @ 811B53C
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ ldr r4, _0811B584 @ =gUnknown_84570EC
+ mov r8, r4
+ lsls r0, 2
+ adds r4, r0, r4
+ movs r6, 0
+ ldrsh r5, [r4, r6]
+ ldr r6, _0811B588 @ =gUnknown_845710C
+ lsls r1, 1
+ adds r4, r1, r6
+ ldrb r4, [r4]
+ lsls r4, 24
+ asrs r4, 24
+ adds r5, r4
+ adds r5, 0x7
+ str r5, [r2]
+ movs r2, 0x2
+ add r8, r2
+ add r0, r8
+ movs r4, 0
+ ldrsh r0, [r0, r4]
+ adds r6, 0x1
+ adds r1, r6
+ ldrb r1, [r1]
+ lsls r1, 24
+ asrs r1, 24
+ adds r0, r1
+ adds r0, 0x7
+ str r0, [r3]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811B584: .4byte gUnknown_84570EC
+_0811B588: .4byte gUnknown_845710C
+ thumb_func_end sub_811B53C
+
+ thumb_func_start sub_811B58C
+sub_811B58C: @ 811B58C
+ push {r4-r7,lr}
+ mov r12, r3
+ ldr r7, _0811B5CC @ =gUnknown_84570EC
+ lsls r5, r0, 2
+ adds r0, r5, r7
+ movs r4, 0
+ ldrsh r3, [r0, r4]
+ ldr r6, _0811B5D0 @ =gUnknown_845710C
+ lsls r4, r1, 1
+ adds r0, r4, r6
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r3, r0
+ adds r3, 0x7
+ cmp r3, r2
+ bne _0811B5D4
+ adds r0, r7, 0x2
+ adds r0, r5, r0
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r0, r6, 0x1
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ adds r1, r0
+ adds r1, 0x7
+ cmp r1, r12
+ bne _0811B5D4
+ movs r0, 0x1
+ b _0811B5D6
+ .align 2, 0
+_0811B5CC: .4byte gUnknown_84570EC
+_0811B5D0: .4byte gUnknown_845710C
+_0811B5D4:
+ movs r0, 0
+_0811B5D6:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B58C
+
+ thumb_func_start sub_811B5DC
+sub_811B5DC: @ 811B5DC
+ push {lr}
+ adds r0, 0x63
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagGet
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B5DC
+
+ thumb_func_start sub_811B5F0
+sub_811B5F0: @ 811B5F0
+ push {lr}
+ adds r0, 0x63
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagSet
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811B5F0
+
+ thumb_func_start sub_811B600
+sub_811B600: @ 811B600
+ push {lr}
+ adds r0, 0x63
+ lsls r0, 16
+ lsrs r0, 16
+ bl FlagClear
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811B600
+
+ thumb_func_start sub_811B610
+sub_811B610: @ 811B610
+ push {lr}
+ ldr r2, _0811B628 @ =0x00004010
+ adds r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ lsrs r1, 16
+ bl VarSet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811B628: .4byte 0x00004010
+ thumb_func_end sub_811B610
+
+ thumb_func_start sub_811B62C
+sub_811B62C: @ 811B62C
+ push {lr}
+ ldr r1, _0811B644 @ =gUnknown_8457120
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _0811B648 @ =gSaveBlock1Ptr
+ ldr r2, [r1]
+ ldrb r1, [r2, 0x5]
+ ldrb r2, [r2, 0x4]
+ bl show_sprite
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811B644: .4byte gUnknown_8457120
+_0811B648: .4byte gSaveBlock1Ptr
+ thumb_func_end sub_811B62C
+
+ thumb_func_start sub_811B64C
+sub_811B64C: @ 811B64C
+ push {lr}
+ ldr r1, _0811B664 @ =gUnknown_8457120
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _0811B668 @ =gSaveBlock1Ptr
+ ldr r2, [r1]
+ ldrb r1, [r2, 0x5]
+ ldrb r2, [r2, 0x4]
+ bl RemoveObjectEventByLocalIdAndMap
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811B664: .4byte gUnknown_8457120
+_0811B668: .4byte gSaveBlock1Ptr
+ thumb_func_end sub_811B64C
+
+ thumb_func_start sub_811B66C
+sub_811B66C: @ 811B66C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ ldr r1, _0811B6B8 @ =gUnknown_8457120
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _0811B6BC @ =gSaveBlock1Ptr
+ ldr r2, [r1]
+ ldrb r1, [r2, 0x5]
+ ldrb r2, [r2, 0x4]
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B6D0
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0811B6C0 @ =gObjectEvents
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl ObjectEventIsMovementOverridden
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B6D0
+ ldrb r1, [r5]
+ adds r0, r4, 0
+ bl ObjectEventSetHeldMovement
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B6C4
+ movs r0, 0x1
+ b _0811B6D2
+ .align 2, 0
+_0811B6B8: .4byte gUnknown_8457120
+_0811B6BC: .4byte gSaveBlock1Ptr
+_0811B6C0: .4byte gObjectEvents
+_0811B6C4:
+ ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811B6E0 @ =0x00000183
+ ldr r2, _0811B6E4 @ =gUnknown_8457174 "0"
+ movs r3, 0x1
+ bl AGBAssert
+_0811B6D0:
+ movs r0, 0
+_0811B6D2:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811B6DC: .4byte gUnknown_8457138
+_0811B6E0: .4byte 0x00000183
+_0811B6E4: .4byte gUnknown_8457174
+ thumb_func_end sub_811B66C
+
+ thumb_func_start sub_811B6E8
+sub_811B6E8: @ 811B6E8
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r1, _0811B724 @ =gUnknown_8457120
+ adds r0, r1
+ ldrb r0, [r0]
+ ldr r1, _0811B728 @ =gSaveBlock1Ptr
+ ldr r2, [r1]
+ ldrb r1, [r2, 0x5]
+ ldrb r2, [r2, 0x4]
+ mov r3, sp
+ bl TryGetObjectEventIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B748
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0811B72C @ =gObjectEvents
+ adds r4, r0, r1
+ adds r0, r4, 0
+ bl ObjectEventClearHeldMovementIfFinished
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B730
+ movs r0, 0
+ b _0811B74A
+ .align 2, 0
+_0811B724: .4byte gUnknown_8457120
+_0811B728: .4byte gSaveBlock1Ptr
+_0811B72C: .4byte gObjectEvents
+_0811B730:
+ bl ScriptContext2_IsEnabled
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811B742
+ adds r0, r4, 0
+ bl npc_sync_anim_pause_bits
+ b _0811B748
+_0811B742:
+ adds r0, r4, 0
+ bl FreezeObjectEvent
+_0811B748:
+ movs r0, 0x1
+_0811B74A:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B6E8
+
+ thumb_func_start sub_811B754
+sub_811B754: @ 811B754
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _0811B798 @ =gUnknown_203B088
+ movs r1, 0
+ str r1, [r0]
+ ldr r0, _0811B79C @ =gUnknown_203B084
+ str r4, [r0]
+ cmp r4, 0
+ bne _0811B774
+ ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ movs r1, 0xDD
+ lsls r1, 1
+ ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL"
+ movs r3, 0x1
+ bl AGBAssert
+_0811B774:
+ movs r1, 0
+ adds r0, r4, 0
+ movs r2, 0x7
+_0811B77A:
+ strb r1, [r0]
+ strb r1, [r0, 0x1]
+ strb r1, [r0, 0x2]
+ strb r1, [r0, 0x3]
+ adds r0, 0x4
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0811B77A
+ bl sub_811BA18
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811B798: .4byte gUnknown_203B088
+_0811B79C: .4byte gUnknown_203B084
+_0811B7A0: .4byte gUnknown_8457138
+_0811B7A4: .4byte gUnknown_8457178
+ thumb_func_end sub_811B754
+
+ thumb_func_start sub_811B7A8
+sub_811B7A8: @ 811B7A8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r0, 0
+ ldrsb r0, [r5, r0]
+ cmp r0, 0
+ beq _0811B7BC
+ cmp r0, 0x1
+ beq _0811B7DC
+ b _0811B7FA
+_0811B7BC:
+ ldr r1, _0811B7D8 @ =gUnknown_845718D
+ adds r0, r4, 0
+ bl sub_811B66C
+ cmp r0, 0x1
+ bne _0811B7FA
+ adds r0, r4, 0
+ bl sub_811B5F0
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ b _0811B7FA
+ .align 2, 0
+_0811B7D8: .4byte gUnknown_845718D
+_0811B7DC:
+ adds r0, r4, 0
+ bl sub_811B6E8
+ cmp r0, 0
+ beq _0811B7FA
+ adds r0, r4, 0
+ bl sub_811B64C
+ adds r0, r4, 0
+ bl sub_811B5F0
+ movs r0, 0
+ strb r0, [r5]
+ movs r0, 0x1
+ b _0811B7FC
+_0811B7FA:
+ movs r0, 0
+_0811B7FC:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B7A8
+
+ thumb_func_start sub_811B804
+sub_811B804: @ 811B804
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r7, r2, 0
+ movs r0, 0
+ ldrsb r0, [r6, r0]
+ cmp r0, 0x2
+ beq _0811B8A0
+ cmp r0, 0x2
+ bgt _0811B820
+ cmp r0, 0
+ beq _0811B826
+ b _0811B8B2
+_0811B820:
+ cmp r0, 0x3
+ beq _0811B888
+ b _0811B8B2
+_0811B826:
+ bl is_walking_or_running
+ cmp r0, 0
+ beq _0811B8B2
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl PlayerGetDestCoords
+ mov r0, sp
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r0, 0
+ ldrsh r3, [r4, r0]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_811B58C
+ cmp r0, 0x1
+ beq _0811B8B2
+ mov r0, sp
+ adds r1, r4, 0
+ bl plaer_get_pos_including_state_based_drift
+ mov r0, sp
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r0, 0
+ ldrsh r3, [r4, r0]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_811B58C
+ cmp r0, 0x1
+ beq _0811B8B2
+ ldrb r1, [r7, 0x1]
+ adds r0, r5, 0
+ bl sub_811B610
+ adds r0, r5, 0
+ bl sub_811B62C
+ adds r0, r5, 0
+ bl sub_811B600
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+_0811B888:
+ ldr r1, _0811B89C @ =gUnknown_845718F
+ adds r0, r5, 0
+ bl sub_811B66C
+ cmp r0, 0x1
+ bne _0811B8B2
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ b _0811B8B2
+ .align 2, 0
+_0811B89C: .4byte gUnknown_845718F
+_0811B8A0:
+ adds r0, r5, 0
+ bl sub_811B6E8
+ cmp r0, 0
+ beq _0811B8B2
+ movs r0, 0
+ strb r0, [r6]
+ movs r0, 0x1
+ b _0811B8B4
+_0811B8B2:
+ movs r0, 0
+_0811B8B4:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B804
+
+ thumb_func_start sub_811B8BC
+sub_811B8BC: @ 811B8BC
+ push {r4-r6,lr}
+ adds r5, r1, 0
+ adds r6, r2, 0
+ ldr r1, _0811B8F4 @ =gUnknown_203B084
+ lsls r0, 2
+ ldr r1, [r1]
+ adds r4, r1, r0
+ cmp r1, 0
+ bne _0811B8DA
+ ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811B8FC @ =0x00000231
+ ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL"
+ movs r3, 0x1
+ bl AGBAssert
+_0811B8DA:
+ movs r0, 0x1
+ strb r0, [r4, 0x3]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_811B524
+ strb r0, [r4, 0x1]
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0811B904
+ movs r0, 0
+ b _0811B906
+ .align 2, 0
+_0811B8F4: .4byte gUnknown_203B084
+_0811B8F8: .4byte gUnknown_8457138
+_0811B8FC: .4byte 0x00000231
+_0811B900: .4byte gUnknown_8457178
+_0811B904:
+ movs r0, 0x1
+_0811B906:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B8BC
+
+ thumb_func_start sub_811B90C
+sub_811B90C: @ 811B90C
+ push {r4,lr}
+ ldr r1, _0811B934 @ =gUnknown_203B084
+ lsls r0, 2
+ ldr r1, [r1]
+ adds r4, r1, r0
+ cmp r1, 0
+ bne _0811B926
+ ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811B93C @ =0x00000241
+ ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL"
+ movs r3, 0x1
+ bl AGBAssert
+_0811B926:
+ movs r0, 0x2
+ strb r0, [r4, 0x3]
+ ldrb r0, [r4]
+ cmp r0, 0x1
+ beq _0811B944
+ movs r0, 0
+ b _0811B946
+ .align 2, 0
+_0811B934: .4byte gUnknown_203B084
+_0811B938: .4byte gUnknown_8457138
+_0811B93C: .4byte 0x00000241
+_0811B940: .4byte gUnknown_8457178
+_0811B944:
+ movs r0, 0x1
+_0811B946:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811B90C
+
+ thumb_func_start sub_811B94C
+sub_811B94C: @ 811B94C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r1, [r4]
+ cmp r1, 0x1
+ beq _0811B9AE
+ cmp r1, 0x1
+ bgt _0811B962
+ cmp r1, 0
+ beq _0811B96C
+ b _0811B9CE
+_0811B962:
+ cmp r1, 0x2
+ beq _0811B978
+ cmp r1, 0x3
+ beq _0811B9BC
+ b _0811B9CE
+_0811B96C:
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0x1
+ bne _0811B9CE
+ movs r0, 0x2
+ strb r0, [r4]
+ strb r1, [r4, 0x2]
+_0811B978:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_811BBC8
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _0811B99E
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0x2
+ bne _0811B99E
+ strb r1, [r4]
+ strb r1, [r4, 0x2]
+ adds r0, r5, 0
+ bl sub_811B64C
+ adds r0, r5, 0
+ bl sub_811B5F0
+ b _0811B9CE
+_0811B99E:
+ adds r0, r4, 0x2
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_811B804
+ cmp r0, 0x1
+ bne _0811B9CE
+ b _0811B9CC
+_0811B9AE:
+ ldrb r0, [r4, 0x3]
+ cmp r0, 0x2
+ bne _0811B9CE
+ movs r1, 0
+ movs r0, 0x3
+ strb r0, [r4]
+ strb r1, [r4, 0x2]
+_0811B9BC:
+ adds r0, r4, 0x2
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_811B7A8
+ cmp r0, 0x1
+ bne _0811B9CE
+ movs r0, 0
+_0811B9CC:
+ strb r0, [r4]
+_0811B9CE:
+ movs r0, 0
+ strb r0, [r4, 0x3]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811B94C
+
+ thumb_func_start sub_811B9D8
+sub_811B9D8: @ 811B9D8
+ push {r4,r5,lr}
+ ldr r5, _0811BA08 @ =gUnknown_203B084
+ ldr r0, [r5]
+ cmp r0, 0
+ bne _0811B9EE
+ ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811BA10 @ =0x00000283
+ ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL"
+ movs r3, 0x1
+ bl AGBAssert
+_0811B9EE:
+ movs r4, 0
+_0811B9F0:
+ lsls r0, r4, 2
+ ldr r1, [r5]
+ adds r1, r0
+ adds r0, r4, 0
+ bl sub_811B94C
+ adds r4, 0x1
+ cmp r4, 0x7
+ ble _0811B9F0
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BA08: .4byte gUnknown_203B084
+_0811BA0C: .4byte gUnknown_8457138
+_0811BA10: .4byte 0x00000283
+_0811BA14: .4byte gUnknown_8457178
+ thumb_func_end sub_811B9D8
+
+ thumb_func_start sub_811BA18
+sub_811BA18: @ 811BA18
+ push {r4,lr}
+ ldr r4, _0811BA38 @ =sub_811B9D8
+ adds r0, r4, 0
+ bl FuncIsActiveTask
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0811BA3C
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ b _0811BA4A
+ .align 2, 0
+_0811BA38: .4byte sub_811B9D8
+_0811BA3C:
+ ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811BA54 @ =0x0000028f
+ ldr r2, _0811BA58 @ =gUnknown_8457174 "0"
+ movs r3, 0x1
+ bl AGBAssert
+ movs r0, 0x10
+_0811BA4A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811BA50: .4byte gUnknown_8457138
+_0811BA54: .4byte 0x0000028f
+_0811BA58: .4byte gUnknown_8457174
+ thumb_func_end sub_811BA18
+
+ thumb_func_start sub_811BA5C
+sub_811BA5C: @ 811BA5C
+ push {lr}
+ ldr r0, _0811BA74 @ =sub_811B9D8
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xF
+ bhi _0811BA70
+ bl DestroyTask
+_0811BA70:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BA74: .4byte sub_811B9D8
+ thumb_func_end sub_811BA5C
+
+ thumb_func_start sub_811BA78
+sub_811BA78: @ 811BA78
+ push {r4,lr}
+ movs r4, 0
+_0811BA7C:
+ adds r0, r4, 0
+ bl sub_811B5DC
+ cmp r0, 0
+ bne _0811BA92
+ adds r0, r4, 0
+ bl sub_811B64C
+ adds r0, r4, 0
+ bl sub_811B5F0
+_0811BA92:
+ adds r4, 0x1
+ cmp r4, 0x7
+ ble _0811BA7C
+ ldr r1, _0811BAA8 @ =gUnknown_203B084
+ movs r0, 0
+ str r0, [r1]
+ bl sub_811BA5C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BAA8: .4byte gUnknown_203B084
+ thumb_func_end sub_811BA78
+
+ thumb_func_start sub_811BAAC
+sub_811BAAC: @ 811BAAC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ str r0, [sp, 0x8]
+ mov r9, r1
+ movs r7, 0
+ mov r0, r9
+ lsls r0, 2
+ mov r8, r0
+ ldr r0, _0811BB38 @ =gUnknown_84570EC
+ mov r2, r8
+ adds r1, r2, r0
+ ldrh r1, [r1]
+ mov r2, sp
+ strh r1, [r2, 0xC]
+ adds r0, 0x2
+ add r0, r8
+ ldrh r0, [r0]
+ mov r10, r0
+ ldr r6, _0811BB3C @ =gUnknown_845710C
+_0811BADA:
+ mov r5, r8
+ add r5, r9
+ adds r5, r7
+ adds r4, r5, 0
+ subs r4, 0x38
+ lsls r4, 24
+ lsrs r4, 24
+ movs r2, 0
+ ldrsb r2, [r6, r2]
+ mov r0, sp
+ ldrh r0, [r0, 0xC]
+ adds r2, r0, r2
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x1
+ ldrsb r3, [r6, r3]
+ add r3, r10
+ lsls r3, 16
+ asrs r3, 16
+ movs r0, 0x3
+ str r0, [sp]
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ movs r0, 0x19
+ adds r1, r4, 0
+ bl sprite_new
+ ldr r1, [sp, 0x8]
+ adds r5, r1, r5
+ strb r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8069124
+ adds r6, 0x2
+ adds r7, 0x1
+ cmp r7, 0x4
+ ble _0811BADA
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BB38: .4byte gUnknown_84570EC
+_0811BB3C: .4byte gUnknown_845710C
+ thumb_func_end sub_811BAAC
+
+ thumb_func_start sub_811BB40
+sub_811BB40: @ 811BB40
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r6, _0811BB64 @ =gSprites
+_0811BB48:
+ adds r0, r5, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ bl DestroySprite
+ adds r4, 0x1
+ cmp r4, 0x27
+ ble _0811BB48
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BB64: .4byte gSprites
+ thumb_func_end sub_811BB40
+
+ thumb_func_start sub_811BB68
+sub_811BB68: @ 811BB68
+ push {r4-r7,lr}
+ sub sp, 0x8
+ movs r5, 0
+ add r7, sp, 0x4
+_0811BB70:
+ movs r4, 0
+ adds r6, r5, 0x1
+_0811BB74:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, sp
+ adds r3, r7, 0
+ bl sub_811B53C
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ bl sub_8059024
+ adds r4, 0x1
+ cmp r4, 0x4
+ ble _0811BB74
+ adds r5, r6, 0
+ cmp r5, 0x7
+ ble _0811BB70
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BB68
+
+ thumb_func_start sub_811BBA0
+sub_811BBA0: @ 811BBA0
+ push {lr}
+ adds r1, r0, 0
+ cmp r1, 0
+ beq _0811BBB4
+ ldr r0, _0811BBB0 @ =gUnknown_845711B
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ b _0811BBC4
+ .align 2, 0
+_0811BBB0: .4byte gUnknown_845711B
+_0811BBB4:
+ ldrb r1, [r2, 0xA]
+ movs r0, 0x7F
+ ands r0, r1
+ cmp r0, 0x45
+ beq _0811BBC2
+ movs r0, 0x4
+ b _0811BBC4
+_0811BBC2:
+ movs r0, 0x1
+_0811BBC4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811BBA0
+
+ thumb_func_start sub_811BBC8
+sub_811BBC8: @ 811BBC8
+ push {lr}
+ adds r2, r0, 0
+ lsls r0, r2, 2
+ adds r0, r2
+ adds r0, r1
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_806916C
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811BBC8
+
+ thumb_func_start sub_811BBE0
+sub_811BBE0: @ 811BBE0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r6, r1, 0
+ mov r9, r3
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ lsls r0, r5, 2
+ adds r0, r5
+ adds r7, r0, r6
+ adds r0, r5, 0
+ bl sub_811BBC8
+ cmp r0, 0x1
+ bne _0811BC1E
+ adds r4, r7, 0
+ subs r4, 0x38
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8069124
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_80691A4
+_0811BC1E:
+ adds r0, r7, 0
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, r8
+ bl sub_8069094
+ adds r0, r6, 0
+ adds r1, r5, 0
+ mov r2, r9
+ bl sub_811BBA0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_811C008
+ add r3, sp, 0x4
+ adds r0, r5, 0
+ adds r1, r6, 0
+ mov r2, sp
+ bl sub_811B53C
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ movs r2, 0x1
+ bl sub_8059024
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BBE0
+
+ thumb_func_start sub_811BC68
+sub_811BC68: @ 811BC68
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r0, r4, 2
+ adds r0, r4
+ adds r0, r5
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_80691A4
+ add r3, sp, 0x4
+ adds r0, r4, 0
+ adds r1, r5, 0
+ mov r2, sp
+ bl sub_811B53C
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ bl sub_8059024
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BC68
+
+ thumb_func_start sub_811BCA0
+sub_811BCA0: @ 811BCA0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r7, r0, 0
+ mov r8, r1
+ mov r6, sp
+ adds r6, 0x2
+ mov r0, sp
+ adds r1, r6, 0
+ bl PlayerGetDestCoords
+ add r4, sp, 0x4
+ mov r5, sp
+ adds r5, 0x6
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl plaer_get_pos_including_state_based_drift
+ lsls r0, r7, 2
+ adds r0, r7
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_806916C
+ mov r10, r6
+ mov r9, r4
+ adds r6, r5, 0
+ cmp r0, 0x1
+ bne _0811BD2C
+ mov r0, sp
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ mov r0, r10
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_811B58C
+ cmp r0, 0x1
+ beq _0811BD98
+ movs r0, 0
+ ldrsh r2, [r4, r0]
+ movs r1, 0
+ ldrsh r3, [r6, r1]
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_811B58C
+ cmp r0, 0x1
+ beq _0811BD98
+ mov r2, r8
+ ldrb r0, [r2, 0xB]
+ lsls r0, 31
+ lsrs r0, 31
+ ldrb r1, [r2, 0x2]
+ bl sub_811B524
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r7, 0
+ movs r1, 0
+ mov r3, r8
+ bl sub_811BBE0
+_0811BD2C:
+ movs r5, 0x1
+ mov r4, r8
+ adds r4, 0x4
+_0811BD32:
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _0811BD42
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_811BC68
+ b _0811BD90
+_0811BD42:
+ mov r0, sp
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ mov r0, r10
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_811B58C
+ cmp r0, 0
+ bne _0811BD90
+ mov r0, r9
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r0, 0
+ ldrsh r3, [r6, r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_811B58C
+ cmp r0, 0
+ bne _0811BD90
+ ldrb r2, [r4]
+ lsrs r0, r2, 3
+ movs r1, 0x1
+ ands r0, r1
+ movs r1, 0x7
+ ands r1, r2
+ bl sub_811B524
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r7, 0
+ adds r1, r5, 0
+ mov r3, r8
+ bl sub_811BBE0
+_0811BD90:
+ adds r4, 0x1
+ adds r5, 0x1
+ cmp r5, 0x4
+ ble _0811BD32
+_0811BD98:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BCA0
+
+ thumb_func_start sub_811BDA8
+sub_811BDA8: @ 811BDA8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrb r0, [r4, 0xA]
+ lsls r0, 25
+ lsrs r0, 25
+ subs r0, 0x40
+ cmp r0, 0x14
+ bhi _0811BE4C
+ lsls r0, 2
+ ldr r1, _0811BDC4 @ =_0811BDC8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0811BDC4: .4byte _0811BDC8
+ .align 2, 0
+_0811BDC8:
+ .4byte _0811BE1C
+ .4byte _0811BE3C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE3C
+ .4byte _0811BE3C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE3C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE4C
+ .4byte _0811BE3C
+ .4byte _0811BE3C
+ .4byte _0811BE3C
+ .4byte _0811BE1C
+_0811BE1C:
+ ldrb r1, [r4, 0xB]
+ lsls r1, 31
+ lsrs r1, 31
+ ldrb r2, [r4, 0x2]
+ adds r0, r5, 0
+ bl sub_811B8BC
+ movs r4, 0
+_0811BE2C:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811BC68
+ adds r4, 0x1
+ cmp r4, 0x4
+ bls _0811BE2C
+ b _0811BE58
+_0811BE3C:
+ adds r0, r5, 0
+ bl sub_811B90C
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811BCA0
+ b _0811BE58
+_0811BE4C:
+ ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
+ ldr r1, _0811BE64 @ =0x000003d3
+ ldr r2, _0811BE68 @ =gUnknown_8457174 "0"
+ movs r3, 0x1
+ bl AGBAssert
+_0811BE58:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BE60: .4byte gUnknown_8457138
+_0811BE64: .4byte 0x000003d3
+_0811BE68: .4byte gUnknown_8457174
+ thumb_func_end sub_811BDA8
+
+ thumb_func_start sub_811BE6C
+sub_811BE6C: @ 811BE6C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_811B90C
+ movs r4, 0
+_0811BE76:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811BC68
+ adds r4, 0x1
+ cmp r4, 0x4
+ ble _0811BE76
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BE6C
+
+ thumb_func_start sub_811BE8C
+sub_811BE8C: @ 811BE8C
+ push {r4,r5,lr}
+ ldr r2, _0811BEAC @ =gUnknown_203B088
+ movs r1, 0
+ str r1, [r2]
+ movs r5, 0
+ ldr r4, [r0]
+_0811BE98:
+ ldrb r0, [r4, 0x1A]
+ movs r1, 0x3
+ ands r1, r0
+ cmp r1, 0x1
+ bne _0811BEB0
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811BDA8
+ b _0811BEBC
+ .align 2, 0
+_0811BEAC: .4byte gUnknown_203B088
+_0811BEB0:
+ cmp r1, 0x2
+ bne _0811BEBC
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811BE6C
+_0811BEBC:
+ adds r4, 0x20
+ adds r5, 0x1
+ cmp r5, 0x7
+ ble _0811BE98
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811BE8C
+
+ thumb_func_start sub_811BECC
+sub_811BECC: @ 811BECC
+ ldr r1, _0811BED8 @ =gUnknown_203B088
+ movs r0, 0x96
+ lsls r0, 1
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_0811BED8: .4byte gUnknown_203B088
+ thumb_func_end sub_811BECC
+
+ thumb_func_start sub_811BEDC
+sub_811BEDC: @ 811BEDC
+ push {lr}
+ adds r2, r0, 0
+ ldr r0, _0811BEFC @ =gUnknown_203B088
+ ldr r1, [r0]
+ adds r1, 0x1
+ str r1, [r0]
+ movs r0, 0x96
+ lsls r0, 1
+ cmp r1, r0
+ bls _0811BEF6
+ adds r0, r2, 0
+ bl sub_811BE8C
+_0811BEF6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811BEFC: .4byte gUnknown_203B088
+ thumb_func_end sub_811BEDC
+
+ thumb_func_start sub_811BF00
+sub_811BF00: @ 811BF00
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ adds r5, r0, 0
+ str r1, [sp, 0x4]
+ str r2, [sp, 0x8]
+ bl is_walking_or_running
+ cmp r0, 0
+ bne _0811BF48
+ b _0811BFEE
+_0811BF1C:
+ ldr r4, _0811BF44 @ =gUnknown_8457116
+ bl GetPlayerFacingDirection
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r2, [r0]
+ adds r0, r6, 0
+ ldr r1, [sp, 0xC]
+ bl sub_811C008
+ ldr r0, [sp, 0x4]
+ strh r6, [r0]
+ mov r1, sp
+ ldrh r2, [r1, 0xC]
+ ldr r1, [sp, 0x8]
+ strh r2, [r1]
+ movs r0, 0x1
+ b _0811BFF0
+ .align 2, 0
+_0811BF44: .4byte gUnknown_8457116
+_0811BF48:
+ mov r4, sp
+ adds r4, 0x2
+ mov r0, sp
+ adds r1, r4, 0
+ bl GetXYCoordsOneStepInFrontOfPlayer
+ movs r0, 0
+ str r0, [sp, 0xC]
+ ldr r0, _0811C000 @ =gUnknown_84570EC
+ adds r7, r5, 0
+ movs r1, 0
+ mov r10, r1
+ adds r2, r0, 0x2
+ str r2, [sp, 0x10]
+ str r0, [sp, 0x14]
+_0811BF66:
+ movs r6, 0
+ ldr r4, [sp, 0x14]
+ movs r0, 0
+ ldrsh r4, [r4, r0]
+ mov r9, r4
+ ldr r1, [sp, 0x10]
+ mov r8, r1
+ ldr r5, _0811C004 @ =gUnknown_845710C
+_0811BF76:
+ mov r2, r10
+ adds r3, r2, r6
+ mov r0, sp
+ movs r4, 0
+ ldrsh r1, [r0, r4]
+ movs r0, 0
+ ldrsb r0, [r5, r0]
+ add r0, r9
+ adds r0, 0x7
+ cmp r1, r0
+ bne _0811BFCA
+ mov r1, sp
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ mov r4, r8
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r2, 0x1
+ ldrsb r2, [r5, r2]
+ adds r1, r2
+ adds r1, 0x7
+ cmp r0, r1
+ bne _0811BFCA
+ adds r0, r3, 0
+ subs r0, 0x38
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_806916C
+ cmp r0, 0
+ bne _0811BFCA
+ adds r0, r4, 0
+ bl sub_8069294
+ cmp r0, 0
+ bne _0811BFCA
+ ldrb r1, [r7, 0x1A]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ beq _0811BF1C
+_0811BFCA:
+ adds r5, 0x2
+ adds r6, 0x1
+ cmp r6, 0x4
+ ble _0811BF76
+ adds r7, 0x20
+ movs r4, 0x5
+ add r10, r4
+ ldr r0, [sp, 0x10]
+ adds r0, 0x4
+ str r0, [sp, 0x10]
+ ldr r1, [sp, 0x14]
+ adds r1, 0x4
+ str r1, [sp, 0x14]
+ ldr r2, [sp, 0xC]
+ adds r2, 0x1
+ str r2, [sp, 0xC]
+ cmp r2, 0x7
+ ble _0811BF66
+_0811BFEE:
+ movs r0, 0
+_0811BFF0:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0811C000: .4byte gUnknown_84570EC
+_0811C004: .4byte gUnknown_845710C
+ thumb_func_end sub_811BF00
+
+ thumb_func_start sub_811C008
+sub_811C008: @ 811C008
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r3, r1, 0
+ lsls r1, r2, 24
+ lsrs r1, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ subs r0, 0x38
+ adds r0, r4
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8069058
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811C008
+
+ thumb_func_start sub_811C028
+sub_811C028: @ 811C028
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r3, r4, 5
+ adds r3, r2
+ adds r2, r3, 0
+ bl sub_811BBA0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_811C008
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811C028
+
+ thumb_func_start sub_811C04C
+sub_811C04C: @ 811C04C
+ push {r4-r7,lr}
+ movs r0, 0xA
+ bl sub_81173C0
+ movs r4, 0
+ movs r7, 0x64
+ ldr r6, _0811C0CC @ =gPlayerParty
+ ldr r5, _0811C0D0 @ =gEnemyParty
+_0811C05C:
+ ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r1, r0, 0
+ muls r1, r7
+ adds r1, r6
+ adds r0, r5, 0
+ movs r2, 0x64
+ bl memcpy
+ adds r5, 0x64
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _0811C05C
+ ldr r4, _0811C0CC @ =gPlayerParty
+ movs r0, 0xFA
+ lsls r0, 1
+ adds r5, r4, r0
+_0811C082:
+ adds r0, r4, 0
+ bl ZeroMonData
+ adds r4, 0x64
+ cmp r4, r5
+ ble _0811C082
+ ldr r4, _0811C0CC @ =gPlayerParty
+ movs r5, 0
+ adds r6, r4, 0
+ adds r6, 0x64
+_0811C096:
+ ldr r1, _0811C0D0 @ =gEnemyParty
+ adds r1, r5, r1
+ adds r0, r4, 0
+ movs r2, 0x64
+ bl memcpy
+ adds r4, 0x64
+ adds r5, 0x64
+ cmp r4, r6
+ ble _0811C096
+ movs r0, 0x32
+ bl IncrementGameStat
+ bl CalculatePlayerPartyCount
+ ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r1, r2, 0
+ strh r1, [r0]
+ ldr r0, _0811C0DC @ =CB2_InitBattle
+ bl SetMainCallback2
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811C0CC: .4byte gPlayerParty
+_0811C0D0: .4byte gEnemyParty
+_0811C0D4: .4byte gSelectedOrderFromParty
+_0811C0D8: .4byte gTrainerBattleOpponent_A
+_0811C0DC: .4byte CB2_InitBattle
+ thumb_func_end sub_811C04C
+
+ thumb_func_start sub_811C0E0
+sub_811C0E0: @ 811C0E0
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ sub sp, 0x18
+ adds r5, r0, 0
+ mov r10, r1
+ adds r6, r2, 0
+ ldr r4, [sp, 0x34]
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x1
+ mov r8, r0
+ ldr r1, _0811C14C @ =gUnknown_84571A8
+ mov r9, r1
+ ldrb r0, [r1]
+ lsls r1, r0, 4
+ orrs r1, r0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ str r3, [sp, 0x14]
+ bl FillWindowPixelBuffer
+ mov r0, r8
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ mov r1, r9
+ str r1, [sp, 0x8]
+ lsls r4, 24
+ asrs r4, 24
+ str r4, [sp, 0xC]
+ mov r0, r10
+ str r0, [sp, 0x10]
+ adds r0, r5, 0
+ movs r1, 0x3
+ adds r2, r6, 0
+ ldr r3, [sp, 0x14]
+ bl AddTextPrinterParameterized4
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811C14C: .4byte gUnknown_84571A8
+ thumb_func_end sub_811C0E0
+
+ thumb_func_start sub_811C150
+sub_811C150: @ 811C150
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r6, r1, 0
+ adds r5, r2, 0
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0811C168
+ cmp r0, 0x1
+ beq _0811C196
+ b _0811C1AA
+_0811C168:
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0xD
+ bl DrawTextBorderOuter
+ str r5, [sp]
+ movs r0, 0
+ adds r1, r6, 0
+ movs r2, 0
+ movs r3, 0x2
+ bl sub_811C0E0
+ movs r0, 0
+ bl PutWindowTilemap
+ movs r0, 0
+ movs r1, 0x3
+ bl CopyWindowToVram
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ b _0811C1AA
+_0811C196:
+ movs r0, 0
+ bl IsTextPrinterActive
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0
+ bne _0811C1AA
+ strh r0, [r4]
+ movs r0, 0x1
+ b _0811C1AC
+_0811C1AA:
+ movs r0, 0
+_0811C1AC:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_811C150
+
+ thumb_func_start sub_811C1B4
+sub_811C1B4: @ 811C1B4
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_811C1B4
+
+ thumb_func_start sub_811C1C8
+sub_811C1C8: @ 811C1C8
+ push {r4,lr}
+ sub sp, 0xC
+ ldr r1, _0811C1E8 @ =gMain
+ movs r2, 0x87
+ lsls r2, 3
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ adds r2, r1, 0
+ cmp r0, 0x33
+ bls _0811C1DE
+ b _0811C516
+_0811C1DE:
+ lsls r0, 2
+ ldr r1, _0811C1EC @ =_0811C1F0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0811C1E8: .4byte gMain
+_0811C1EC: .4byte _0811C1F0
+ .align 2, 0
+_0811C1F0:
+ .4byte _0811C2C0
+ .4byte _0811C364
+ .4byte _0811C38C
+ .4byte _0811C3B0
+ .4byte _0811C400
+ .4byte _0811C516
+ .4byte _0811C4E4
+ .4byte _0811C4C0
+ .4byte _0811C4E4
+ .4byte _0811C500
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C516
+ .4byte _0811C48C
+ .4byte _0811C4A8
+_0811C2C0:
+ movs r0, 0
+ movs r1, 0
+ bl SetGpuReg
+ ldr r4, _0811C350 @ =gUnknown_203B08C
+ movs r0, 0x4
+ bl AllocZeroed
+ str r0, [r4]
+ bl ResetSpriteData
+ bl FreeAllSpritePalettes
+ bl ResetTasks
+ movs r0, 0
+ bl ResetBgsAndClearDma3BusyFlags
+ ldr r1, _0811C354 @ =gUnknown_8457194
+ movs r0, 0
+ movs r2, 0x1
+ bl InitBgsFromTemplates
+ bl ResetTempTileDataBuffers
+ ldr r0, _0811C358 @ =gUnknown_8457198
+ bl InitWindows
+ lsls r0, 16
+ cmp r0, 0
+ bne _0811C300
+ b _0811C52A
+_0811C300:
+ bl DeactivateAllTextPrinters
+ movs r0, 0
+ bl ClearWindowTilemap
+ movs r0, 0
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ movs r0, 0
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ movs r0, 0x1E
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0xF
+ str r0, [sp, 0x8]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0xD0
+ bl TextWindow_SetStdFrame0_WithPal
+ bl Menu_LoadStdPal
+ ldr r0, _0811C35C @ =sub_811C1B4
+ bl SetVBlankCallback
+ ldr r1, _0811C360 @ =gMain
+ movs r0, 0x87
+ lsls r0, 3
+ adds r1, r0
+ b _0811C4F2
+ .align 2, 0
+_0811C350: .4byte gUnknown_203B08C
+_0811C354: .4byte gUnknown_8457194
+_0811C358: .4byte gUnknown_8457198
+_0811C35C: .4byte sub_811C1B4
+_0811C360: .4byte gMain
+_0811C364:
+ ldr r0, _0811C380 @ =gUnknown_203B08C
+ ldr r0, [r0]
+ ldr r1, _0811C384 @ =gUnknown_841E538
+ movs r2, 0
+ bl sub_811C150
+ cmp r0, 0
+ bne _0811C376
+ b _0811C516
+_0811C376:
+ ldr r1, _0811C388 @ =gMain
+ movs r2, 0x87
+ lsls r2, 3
+ adds r1, r2
+ b _0811C4F2
+ .align 2, 0
+_0811C380: .4byte gUnknown_203B08C
+_0811C384: .4byte gUnknown_841E538
+_0811C388: .4byte gMain
+_0811C38C:
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ movs r0, 0
+ bl ShowBg
+ ldr r1, _0811C3AC @ =gMain
+ movs r0, 0x87
+ lsls r0, 3
+ adds r1, r0
+ b _0811C4F2
+ .align 2, 0
+_0811C3AC: .4byte gMain
+_0811C3B0:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ beq _0811C3BC
+ b _0811C516
+_0811C3BC:
+ ldr r4, _0811C3D8 @ =gBlockSendBuffer
+ adds r0, r4, 0
+ movs r1, 0
+ movs r2, 0x20
+ bl memset
+ ldr r0, _0811C3DC @ =gSelectedOrderFromParty
+ ldrb r1, [r0]
+ ldrb r0, [r0, 0x1]
+ cmn r1, r0
+ bne _0811C3E0
+ movs r0, 0x52
+ b _0811C3E2
+ .align 2, 0
+_0811C3D8: .4byte gBlockSendBuffer
+_0811C3DC: .4byte gSelectedOrderFromParty
+_0811C3E0:
+ movs r0, 0x51
+_0811C3E2:
+ strb r0, [r4]
+ ldr r1, _0811C3F8 @ =gBlockSendBuffer
+ movs r0, 0
+ movs r2, 0x20
+ bl SendBlock
+ ldr r1, _0811C3FC @ =gMain
+ movs r2, 0x87
+ lsls r2, 3
+ adds r1, r2
+ b _0811C4F2
+ .align 2, 0
+_0811C3F8: .4byte gBlockSendBuffer
+_0811C3FC: .4byte gMain
+_0811C400:
+ bl GetBlockReceivedStatus
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _0811C40E
+ b _0811C516
+_0811C40E:
+ ldr r1, _0811C440 @ =gBlockRecvBuffer
+ ldrh r0, [r1]
+ cmp r0, 0x51
+ bne _0811C448
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrh r0, [r0]
+ cmp r0, 0x51
+ bne _0811C448
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _0811C444 @ =gMain
+ movs r1, 0x87
+ lsls r1, 3
+ adds r0, r1
+ movs r1, 0x32
+ b _0811C47E
+ .align 2, 0
+_0811C440: .4byte gBlockRecvBuffer
+_0811C444: .4byte gMain
+_0811C448:
+ bl sub_800AAC0
+ ldr r4, _0811C46C @ =gBlockRecvBuffer
+ bl GetMultiplayerId
+ lsls r0, 24
+ lsrs r0, 16
+ adds r0, r4
+ ldrh r0, [r0]
+ cmp r0, 0x52
+ bne _0811C474
+ ldr r0, _0811C470 @ =gMain
+ movs r2, 0x87
+ lsls r2, 3
+ adds r0, r2
+ movs r1, 0x6
+ b _0811C47E
+ .align 2, 0
+_0811C46C: .4byte gBlockRecvBuffer
+_0811C470: .4byte gMain
+_0811C474:
+ ldr r0, _0811C488 @ =gMain
+ movs r1, 0x87
+ lsls r1, 3
+ adds r0, r1
+ movs r1, 0x8
+_0811C47E:
+ strb r1, [r0]
+ bl ResetBlockReceivedFlags
+ b _0811C516
+ .align 2, 0
+_0811C488: .4byte gMain
+_0811C48C:
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _0811C516
+ bl sub_800AB9C
+ ldr r1, _0811C4A4 @ =gMain
+ movs r2, 0x87
+ lsls r2, 3
+ adds r1, r2
+ b _0811C4F2
+ .align 2, 0
+_0811C4A4: .4byte gMain
+_0811C4A8:
+ bl IsLinkTaskFinished
+ lsls r0, 24
+ cmp r0, 0
+ beq _0811C516
+ ldr r0, _0811C4BC @ =sub_811C04C
+ bl SetMainCallback2
+ b _0811C516
+ .align 2, 0
+_0811C4BC: .4byte sub_811C04C
+_0811C4C0:
+ ldr r0, _0811C4D8 @ =gUnknown_203B08C
+ ldr r0, [r0]
+ ldr r1, _0811C4DC @ =gUnknown_841E58D
+ movs r2, 0x1
+ bl sub_811C150
+ cmp r0, 0
+ beq _0811C516
+ ldr r0, _0811C4E0 @ =CB2_ReturnToField
+ bl SetMainCallback2
+ b _0811C516
+ .align 2, 0
+_0811C4D8: .4byte gUnknown_203B08C
+_0811C4DC: .4byte gUnknown_841E58D
+_0811C4E0: .4byte CB2_ReturnToField
+_0811C4E4:
+ ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0811C516
+ movs r0, 0x87
+ lsls r0, 3
+ adds r1, r2, r0
+_0811C4F2:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0811C516
+ .align 2, 0
+_0811C4FC: .4byte gReceivedRemoteLinkPlayers
+_0811C500:
+ ldr r0, _0811C534 @ =gUnknown_203B08C
+ ldr r0, [r0]
+ ldr r1, _0811C538 @ =gUnknown_841E572
+ movs r2, 0x1
+ bl sub_811C150
+ cmp r0, 0
+ beq _0811C516
+ ldr r0, _0811C53C @ =CB2_ReturnToField
+ bl SetMainCallback2
+_0811C516:
+ bl RunTasks
+ bl RunTextPrinters
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+_0811C52A:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0811C534: .4byte gUnknown_203B08C
+_0811C538: .4byte gUnknown_841E572
+_0811C53C: .4byte CB2_ReturnToField
+ thumb_func_end sub_811C1C8
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/link_rfu.txt b/common_syms/link_rfu.txt
new file mode 100644
index 000000000..add61fde8
--- /dev/null
+++ b/common_syms/link_rfu.txt
@@ -0,0 +1 @@
+gUnknown_3005E10
diff --git a/common_syms/link_rfu_2.txt b/common_syms/link_rfu_2.txt
new file mode 100644
index 000000000..bf170665d
--- /dev/null
+++ b/common_syms/link_rfu_2.txt
@@ -0,0 +1,3 @@
+gUnknown_3005440
+Rfu
+gUnknown_3005E00
diff --git a/data/link_rfu.s b/data/easy_chat_2.s
index 79be01714..79be01714 100644
--- a/data/link_rfu.s
+++ b/data/easy_chat_2.s
diff --git a/data/link_rfu_2.s b/data/link_rfu_2.s
deleted file mode 100644
index 4f88177aa..000000000
--- a/data/link_rfu_2.s
+++ /dev/null
@@ -1,277 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_843EBB4:: @ 843EBB4
- .byte 0x04, 0x20
- .2byte 0x0000
- .byte 0x00
- .align 1
- .2byte 0x0002
- .4byte gUnknown_3005440
- .4byte gUnknown_3005E00
- .byte 0x01, 0x00
- .2byte 0x0258, 0x012c
- .align 2
-
-gUnknown_843EBCC:: @ 843EBCC
- .byte 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-
-gUnknown_843EBD4:: @ 843EBD4
- .4byte 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f
- .4byte 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff
- .4byte 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff
- .4byte 0x00ffffff
-
-gUnknown_843EC38:: @ 843EC38
- .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02
- .byte 0x03
-
-gUnknown_843EC41:: @ 843EC41
- .byte 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03
- .byte 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04
-
-gUnknown_843EC51:: @ 843EC51
- .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00
- .byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00
- .byte 0x00, 0x00, 0x00
-
-gUnknown_843EC64:: @ 843EC64
- .4byte gBlockSendBuffer
- .2byte 0xc8
- .align 2
- .4byte gBlockSendBuffer
- .2byte 0xc8
- .align 2
- .4byte gBlockSendBuffer
- .2byte 0x64
- .align 2
- .4byte gBlockSendBuffer
- .2byte 0xdc
- .align 2
- .4byte gBlockSendBuffer
- .2byte 0x28
- .align 2
-
-gUnknown_843EC8C:: @ 843EC8C
- .2byte 0x0002, 0x7f7d, 0xffff
-
- .macro ascipad str, len
-1:
- .ascii "\str"
-2:
- .space \len - (2b - 1b)
- .endm
-
-sUnref_843EC92::
- ascipad "RFU WAIT", 15
- ascipad "RFU BOOT", 15
- ascipad "RFU ERROR", 15
- ascipad "RFU RESET", 15
- ascipad "RFU CONFIG", 15
- ascipad "RFU START", 15
- ascipad "RFU SC POLL", 15
- ascipad "RFU SP POLL", 15
- ascipad "RFU START", 15
- ascipad "RFU SEND ERR", 15
- ascipad "RFU CP POLL", 15
-
-sUnref_843ED38::
- ascipad " ", 16
- ascipad "RECOVER START ", 16
- ascipad "DISSCONECT ", 16
- ascipad "RECOVER SUUSES", 16
- ascipad "RECOVER FAILED", 16
-
- .align 2
-gUnknown_843ED88:: @ 843ED88
- .4byte sub_80FA834
- .4byte sub_80FAA94
- .4byte sub_80FACF0
-
- .align 2
-gUnknown_843ED94:: @ 843ED94
- abspath "rfu.c"
-
- .align 2
-gUnknown_843EDC4:: @ 843EDC4
- .asciz "Rfu.RfuFunc == NULL"
-
- .align 2
-gUnknown_843EDD8:: @ 843EDD8
- .asciz "size<=252"
-
- .align 2
-gUnknown_843EDE4:: @ 843EDE4
- .asciz "PokemonSioInfo"
-
- .byte 0, 1, 7, 0x14, 0xFF
-
- .align 2
-gUnknown_843EDF8:: @ 843EDF8
- .asciz "LINK LOSS DISCONNECT!"
-
- .align 2
-gUnknown_843EE10:: @ 843EE10
- .asciz "LINK LOSS RECOVERY NOW"
-
- .align 2
-gUnknown_843EE28:: @ 843EE28
- .asciz " "
-
-gUnknown_843EE47:: @ 843EE47
- .asciz " "
-
-gUnknown_843EE57:: @ 843EE57
- .asciz " "
- .asciz " "
- .asciz "*"
-
- .align 2
-gUnknown_843EE64:: @ 843EE64
- .asciz "NOWSLOT"
- .align 2
- .asciz " "
- .align 2
- .asciz "CLOCK DRIFT"
- .align 2
- .asciz "BUSY SEND "
- .align 2
- .asciz "CMD REJECT "
- .align 2
- .asciz "CLOCK SLAVE"
- .align 2
- .asciz "CHILD "
- .align 2
- .asciz "PARENT"
- .align 2
- .asciz "SEARCH"
-
- .align 2
-gUnknown_843EEC0::
- .incbin "graphics/interface/wireless_link_icon.gbapal"
-
-gUnknown_843EEE0::
- .incbin "graphics/interface/wireless_link_icon.4bpp.lz"
-
-gUnknown_843F004:: @ 843F004
- .byte 0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37
- .byte 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
- .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47
- .byte 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
- .byte 0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba
- .byte 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8
- .byte 0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
- .byte 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1
- .byte 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9
- .byte 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1
- .byte 0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6
- .byte 0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb
- .byte 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3
- .byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb
- .byte 0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32
- .byte 0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02
- .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a
- .byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12
- .byte 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
- .byte 0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f
- .byte 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0
- .byte 0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57
- .byte 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f
- .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67
- .byte 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77
- .byte 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac
- .byte 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23
- .byte 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b
- .byte 0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c
- .byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
-
-gUnknown_843F104:: @ 843F104
- .byte 0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c
- .byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
- .byte 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c
- .byte 0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3
- .byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb
- .byte 0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c
- .byte 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07
- .byte 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17
- .byte 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
- .byte 0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7
- .byte 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf
- .byte 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7
- .byte 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf
- .byte 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7
- .byte 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7
- .byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2
- .byte 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa
- .byte 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03
- .byte 0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
- .byte 0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36
- .byte 0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5
- .byte 0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20
- .byte 0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45
- .byte 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d
- .byte 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55
- .byte 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63
- .byte 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b
- .byte 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73
- .byte 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20
- .byte 0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20
- .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
-
-gUnknown_843F204:: @ 843F204
- .4byte 0x40000000, 0x00000000
-
-gAnimCmd_843F20C::
- obj_image_anim_frame 0x0004, 5
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_frame 0x000c, 5
- obj_image_anim_frame 0x0010, 10
- obj_image_anim_frame 0x000c, 5
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_jump 0
-
-gAnimCmd_843F228::
- obj_image_anim_frame 0x0004, 5
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_frame 0x000c, 10
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_jump 0
-
-gAnimCmd_843F23C::
- obj_image_anim_frame 0x0004, 5
- obj_image_anim_frame 0x0008, 5
- obj_image_anim_jump 0
-
-gAnimCmd_843F248::
- obj_image_anim_frame 0x0004, 10
- obj_image_anim_frame 0x0014, 10
- obj_image_anim_jump 0
-
-gAnimCmd_843F254::
- obj_image_anim_frame 0x0018, 10
- obj_image_anim_frame 0x0004, 10
- obj_image_anim_jump 0
-
-gSpriteAnimTable_843F260::
- .4byte gAnimCmd_843F20C
- .4byte gAnimCmd_843F228
- .4byte gAnimCmd_843F23C
- .4byte gAnimCmd_843F248
- .4byte gAnimCmd_843F254
-
-gUnknown_843F274:: @ 843F274
- obj_tiles gUnknown_843EEE0, 0x0380, 54321
-
-gUnknown_843F27C:: @ 843F27C
- obj_pal gUnknown_843EEC0, 54322
-
-gUnknown_843F284:: @ 843F284
- spr_template 54321, 54322, gUnknown_843F204, gSpriteAnimTable_843F260, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/link_rfu_3.s b/data/union_room.s
index 6cd65b04d..9bcc4a193 100644
--- a/data/link_rfu_3.s
+++ b/data/union_room.s
@@ -1549,6 +1549,8 @@ gUnknown_8459580:: @ 8459580
gUnknown_8459588:: @ 8459588
.string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$"
+ @ why is this data here of all places?
+
.align 2
gUnknown_84595B0::
.string "Canceled reading the Card.$"
diff --git a/include/global.h b/include/global.h
index d8ea62d5c..6386071c4 100644
--- a/include/global.h
+++ b/include/global.h
@@ -712,6 +712,12 @@ struct TrainerRematchState
u8 rematches[100];
};
+struct TrainerNameRecord
+{
+ u32 trainerId;
+ u8 trainerName[PLAYER_NAME_LENGTH];
+};
+
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -766,7 +772,8 @@ struct SaveBlock1
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
- /*0x3A94*/ u8 filler3A94[0x204];
+ /*0x3A94*/ u8 filler3A94[0x114];
+ /*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20];
/*0x3C98*/ struct DaycareMon route5DayCareMon;
/*0x3D24*/ u8 filler3D24[0x10];
/*0x3D34*/ u32 unkArrayIdx;
diff --git a/include/librfu.h b/include/librfu.h
index cf409ca69..97fd8044e 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -275,34 +275,6 @@
// Status data for UNI-type communication (refer to gRfuSlotStatusUNI[x]->send.state)
#define SLOT_STATE_SEND_UNI (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_UNI) // Transmitting
-// TODO: move the 2 structs to some other header as they're declared by GF
-struct UnkLinkRfuStruct_02022B14Substruct
-{
- u16 unk_00_0:4;
- u16 unk_00_4:1;
- u16 unk_00_5:1;
- u16 unk_00_6:1;
- u16 isChampion:1;
- u16 hasNationalDex:1;
- u16 gameClear:1;
- u16 unk_01_2:4;
- u16 unk_01_6:2;
- u8 playerTrainerId[2];
-};
-
-struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
-{
- struct UnkLinkRfuStruct_02022B14Substruct unk_00;
- u8 unk_04[4];
- u16 species:10;
- u16 type:6;
- u8 unk_0a_0:7;
- u8 unk_0a_7:1;
- u8 playerGender:1;
- u8 level:7;
- u8 unk_0c;
-};
-
// the following structs are not documented in SDK
struct RfuPacket8
{
@@ -616,7 +588,7 @@ u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot);
// Functions for sending/receiving data to RFU
// Data transmission
-void rfu_REQ_sendData(u8 clockChangeFlag);
+void rfu_REQ_sendData(bool8 clockChangeFlag);
// Used only by parent device. Resend previous sent data (packet)
void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
// Read receive data
diff --git a/include/link.h b/include/link.h
index d61152d8a..4175ac97f 100644
--- a/include/link.h
+++ b/include/link.h
@@ -65,6 +65,19 @@
#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
#define LINKCMD_0xCCCC 0xCCCC
+#define LINKTYPE_0x1111 0x1111 // trade
+#define LINKTYPE_0x1122 0x1122 // trade
+#define LINKTYPE_0x1133 0x1133 // trade
+#define LINKTYPE_0x1144 0x1144 // trade
+#define LINKTYPE_BATTLE 0x2211
+#define LINKTYPE_0x2222 0x2222 // unused battle?
+#define LINKTYPE_SINGLE_BATTLE 0x2233
+#define LINKTYPE_DOUBLE_BATTLE 0x2244
+#define LINKTYPE_MULTI_BATTLE 0x2255
+#define LINKTYPE_BATTLE_TOWER_50 0x2266
+#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
+#define LINKTYPE_BATTLE_TOWER 0x2288
+
#define MASTER_HANDSHAKE 0x8FFF
#define SLAVE_HANDSHAKE 0xB9A0
@@ -188,6 +201,7 @@ extern bool8 gLinkVSyncDisabled;
extern u8 gWirelessCommType;
extern u8 gShouldAdvanceLinkState;
+extern u16 gLinkPartnersHeldKeys[6];
void Task_DestroySelf(u8);
void OpenLink(void);
@@ -261,5 +275,8 @@ bool8 IsWirelessAdapterConnected(void);
bool8 sub_800A474(u8 a0);
void LinkVSync(void);
bool8 HandleLinkConnection(void);
+void sub_800B0B4(void);
+void sub_800B110(u32 who);
+void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 033f4c8d4..e6fb946a6 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -4,14 +4,231 @@
#include "global.h"
#include "librfu.h"
+// RfuTgtData.gname is read as these structs.
+struct GFtgtGnameSub
+{
+ u16 unk_00_0:4;
+ u16 unk_00_4:1;
+ u16 unk_00_5:1;
+ u16 unk_00_6:1;
+ u16 isChampion:1;
+ u16 hasNationalDex:1;
+ u16 gameClear:1;
+ u16 unk_01_2:4;
+ u16 unk_01_6:2;
+ u8 playerTrainerId[2];
+};
+
+struct __attribute__((packed, aligned(2))) GFtgtGname
+{
+ struct GFtgtGnameSub unk_00;
+ u8 unk_04[4];
+ u16 species:10;
+ u16 type:6;
+ u8 unk_0a_0:7;
+ u8 unk_0a_7:1;
+ u8 playerGender:1;
+ u8 level:7;
+ u8 unk_0c;
+};
+
struct Padded_U8
{
u8 value;
};
+struct UnkLinkRfuStruct_02022B2C
+{
+ u8 unk_00;
+ u8 unk_01;
+ u16 unk_02;
+ u8 unk_04;
+ u16 unk_06;
+ struct GFtgtGname *unk_08;
+ u8 *unk_0c;
+ u8 unk_10;
+ u8 unk_11;
+ u16 unk_12;
+ u16 unk_14;
+};
+
+struct UnkLinkRfuStruct_02022B44
+{
+ u8 fill_00[6];
+ u16 unk_06;
+ u8 fill_08[6];
+ vu8 unk_0e;
+ u8 unk_0f;
+ u8 fill_10[0x54];
+ u16 unk_64;
+ u8 fill_66[0x1d];
+ u8 unk_83;
+ u8 fill_84[0x58];
+};
+
+struct UnkRfuStruct_1
+{
+ /* 0x000 */ u8 unk_00;
+ /* 0x001 */ u8 unk_01;
+ /* 0x002 */ vu8 unk_02;
+ /* 0x003 */ vu8 unk_03;
+ /* 0x004 */ u8 unk_04;
+ /* 0x005 */ u8 unk_05;
+ /* 0x006 */ u8 unk_06;
+ /* 0x007 */ u8 unk_07;
+ /* 0x008 */ u8 unk_08;
+ /* 0x009 */ u8 unk_09;
+ /* 0x00a */ u8 unk_0a;
+ /* 0x00b */ u8 unk_0b;
+ /* 0x00c */ u8 unk_0c;
+ /* 0x00d */ u8 unk_0d;
+ /* 0x00e */ u8 unk_0e;
+ /* 0x00f */ u8 unk_0f;
+ /* 0x010 */ u8 unk_10;
+ /* 0x011 */ u8 unk_11;
+ /* 0x012 */ u8 unk_12;
+ // aligned
+ /* 0x014 */ u16 unk_14;
+ /* 0x016 */ u16 unk_16;
+ /* 0x018 */ u16 unk_18;
+ /* 0x01a */ u16 unk_1a;
+ /* 0x01c */ u16 unk_1c;
+ /* 0x01e */ u16 unk_1e;
+ /* 0x020 */ const u16 *unk_20;
+ /* 0x024 */ u8 unk_24;
+ /* 0x026 */ u16 unk_26;
+ /* 0x028 */ u16 unk_28[RFU_CHILD_MAX];
+ /* 0x030 */ u8 unk_30;
+ // aligned
+ /* 0x032 */ u16 unk_32;
+ /* 0x034 */ u16 unk_34[RFU_CHILD_MAX];
+ /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c;
+ /* 0x040 */ void (*unk_40)(u8, u8);
+ /* 0x044 */ void (*unk_44)(u16);
+};
+
+struct UnkRfuStruct_2_Sub_6c
+{
+ /* 0x00 */ u16 unk_00;
+ /* 0x02 */ u16 unk_02;
+ /* 0x04 */ const u8 *unk_04;
+ /* 0x08 */ u32 unk_08;
+ /* 0x0c */ u32 unk_0c;
+ /* 0x10 */ u8 unk_10;
+ /* 0x11 */ u8 unk_11;
+ /* 0x12 */ u8 unk_12;
+};
+
+struct UnkRfuStruct_2_Sub_124
+{
+ /* 0x000 */ u8 unk_00[20][70];
+ /* 0x578 */ vu8 unk_8c0;
+ /* 0x579 */ vu8 unk_8c1;
+ /* 0x57a */ vu8 unk_8c2;
+ /* 0x57b */ vu8 unk_8c3;
+};
+
+struct UnkRfuStruct_2_Sub_9e8
+{
+ /* 0x000 */ u8 unk_00[40][14];
+ /* 0x230 */ vu8 unk_230;
+ /* 0x231 */ vu8 unk_231;
+ /* 0x232 */ vu8 unk_232;
+ /* 0x233 */ vu8 unk_233;
+};
+
+struct UnkRfuStruct_2_Sub_c1c
+{
+ /* 0x00 */ u8 unk_00[2][14];
+ /* 0x1c */ vu8 unk_1c;
+ /* 0x1d */ vu8 unk_1d;
+ /* 0x1e */ vu8 unk_1e;
+};
+
+struct UnkRfuStruct_Sub_Unused
+{
+ /* 0x000 */ u8 unk_00[2][256];
+ /* 0x200 */ vu8 unk_200;
+ /* 0x201 */ vu8 unk_201;
+ /* 0x202 */ vu8 unk_202;
+ /* 0x203 */ vu8 unk_203;
+};
+
+struct UnkRfuStruct_2
+{
+ /* 0x000 */ void (*RfuFunc)(void);
+ /* 0x004 */ u16 unk_04;
+ /* 0x006 */ u8 filler_06[4];
+ /* 0x00a */ u16 unk_0a;
+ /* 0x00c */ u8 unk_0c; // parentChildMode?
+ /* 0x00d */ u8 playerCount;
+ /* 0x00e */ u8 unk_0e;
+ /* 0x00f */ u8 unk_0f;
+ /* 0x010 */ u16 unk_10;
+ /* 0x012 */ u16 unk_12;
+ /* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14];
+ /* 0x04c */ u8 unk_4c[14];
+ /* 0x05a */ u8 unk_5a;
+ /* 0x05b */ u8 unk_5b;
+ /* 0x05c */ u8 unk_5c[5];
+ /* 0x061 */ u8 unk_61[5];
+ /* 0x066 */ u8 unk_66;
+ /* 0x067 */ u8 unk_67;
+ /* 0x068 */ u8 filler_68[4];
+ /* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c;
+ /* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5];
+ /* 0x0e4 */ u8 unk_e4[5];
+ /* 0x0e9 */ u8 unk_e9[5];
+ /* 0x0ee */ vu8 unk_ee;
+ /* 0x0ef */ u8 unk_ef;
+ /* 0x0f0 */ u8 unk_f0;
+ /* 0x0f1 */ u8 unk_f1;
+ /* 0x0f2 */ u16 unk_f2[6];
+ /* 0x0fe */ u16 unk_fe;
+ /* 0x100 */ u16 unk_100;
+ /* 0x102 */ u8 unk_102;
+ /* 0x104 */ struct RfuTgtData unk_104;
+ /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124;
+ /* 0x6a0 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8;
+ /* 0x8d4 */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
+ /* 0x8f4 */ vu8 unk_c3c;
+ /* 0x8f5 */ u8 unk_c3d;
+ /* 0x8f6 */ vu8 unk_c3e;
+ /* 0x8f7 */ u8 unk_c3f[70];
+ /* 0x93d */ u8 unk_c85;
+ /* 0x93e */ u8 unk_c86;
+ /* 0x93f */ u8 unk_c87[5][7][2];
+ /* 0x985 */ u8 unk_ccd;
+ /* 0x986 */ u8 unk_cce; // childId
+ /* 0x987 */ u8 unk_ccf;
+ /* 0x988 */ vu8 unk_cd0;
+ /* 0x989 */ u8 unk_cd1[RFU_CHILD_MAX];
+ /* 0x98d */ u8 unk_cd5[RFU_CHILD_MAX];
+ /* 0x991 */ u8 unk_cd9;
+ /* 0x992 */ u8 unk_cda;
+ /* 0x993 */ vu8 unk_cdb;
+ /* 0x994 */ vu8 unk_cdc;
+ /* 0x995 */ u8 unk_cdd;
+ /* 0x996 */ u8 unk_cde[RFU_CHILD_MAX];
+ /* 0x99a */ u8 unk_ce2;
+ /* 0x99b */ u8 unk_ce3;
+ /* 0x99c */ u8 unk_ce4;
+ /* 0x99d */ u8 unk_ce5;
+ /* 0x99e */ u8 unk_ce6;
+ /* 0x99f */ u8 unk_ce7;
+ /* 0x9a0 */ u8 unk_ce8;
+ /* 0x9a1 */ u8 unk_ce9;
+ /* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX];
+ /* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX];
+}; // size: 0x9AC
+
+extern struct UnkRfuStruct_1 gUnknown_3005E10;
+extern struct GFtgtGname gUnknown_3005440;
+extern u8 gUnknown_3005E00[];
+
void AddTextPrinterToWindow1(const u8 *str);
bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src);
-void sub_80FA190(void);
+void LinkRfu_FatalError(void);
void MG_DrawCheckerboardPattern(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
bool8 IsLinkRfuTaskFinished(void);
@@ -29,8 +246,8 @@ bool32 IsSendingKeysToRfu(void);
void Rfu_set_zero(void);
u8 GetRfuPlayerCount(void);
void sub_80F9828(void);
-u8 rfu_get_multiplayer_id(void);
-bool8 Rfu_InitBlockSend(const void * src, u16 size);
+u8 LinkRfu_GetMultiplayerId(void);
+bool32 Rfu_InitBlockSend(const u8 * src, size_t size);
bool8 sub_80FA0F8(u8 a0);
u8 Rfu_GetBlockReceivedStatus(void);
void Rfu_SetBlockReceivedFlag(u8 who);
@@ -45,9 +262,39 @@ void sub_80F8DC0(void);
void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
-struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void);
+struct GFtgtGname *sub_80F9800(void);
void sub_80FCF34(void);
void InitRFU(void);
+void sub_80FEB14(void);
+bool32 sub_80FBA00(void);
+
+void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr);
+void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr);
+
+void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0);
+u8 sub_80FD538(u8 r5, u16 r7, u16 r8, const u16 *r6);
+void sub_80FD760(bool8 a0);
+void sub_80FEA10(void (*func)(u16));
+void sub_80FB9E4(u8 a0, u16 a1);
+u8 sub_80FB9F4(void);
+void LinkRfu_REQ_SendData_HandleParentRelationship(bool8 clockChangeFlag);
+void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2);
+void sub_80FD52C(void);
+u8 sub_80FD610(u16 parentId, u16 unk_1a);
+bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2);
+bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2);
+void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2);
+bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);
+void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
+u8 sub_80FEA34(u8 a0, u16 a1);
+void sub_80FDA30(u32 a0);
+void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
+void LinkRfu_syncVBlank_(void);
+s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));
+void sub_80FEB3C(void);
+void sub_80FAFE0(u8 a0);
+bool32 sub_80FA44C(u32 a0);
+bool8 sub_80FC1B0(void);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
index 6fed52119..32624d602 100644
--- a/include/mystery_gift_menu.h
+++ b/include/mystery_gift_menu.h
@@ -6,5 +6,6 @@ extern bool8 gGiftIsFromEReader;
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);
void c2_mystery_gift(void);
+void c2_mystery_gift_e_reader_run(void);
#endif //GUARD_MYSTERY_GIFT_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 69c1e964f..c24b63cf9 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -4,6 +4,29 @@
#include "global.h"
#include "main.h"
+#define LINK_KEY_CODE_NULL 0x00
+#define LINK_KEY_CODE_EMPTY 0x11
+#define LINK_KEY_CODE_DPAD_DOWN 0x12
+#define LINK_KEY_CODE_DPAD_UP 0x13
+#define LINK_KEY_CODE_DPAD_LEFT 0x14
+#define LINK_KEY_CODE_DPAD_RIGHT 0x15
+#define LINK_KEY_CODE_UNK_2 0x16
+#define LINK_KEY_CODE_EXIT_ROOM 0x17
+#define LINK_KEY_CODE_START_BUTTON 0x18
+#define LINK_KEY_CODE_A_BUTTON 0x19
+#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button?
+
+// These two are a hack to stop user input until link stuff can be
+// resolved.
+#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B
+#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C
+#define LINK_KEY_CODE_UNK_7 0x1D
+#define LINK_KEY_CODE_UNK_8 0x1E
+
+#define MOVEMENT_MODE_FREE 0
+#define MOVEMENT_MODE_FROZEN 1
+#define MOVEMENT_MODE_SCRIPTED 2
+
struct UnkPlayerStruct
{
u8 player_field_0;
@@ -153,4 +176,6 @@ void sub_805546C(u8 a0);
bool32 sub_80582E0(void);
bool32 sub_8058274(void);
+extern u16 gHeldKeyCodeToSend;
+
#endif //GUARD_OVERWORLD_H
diff --git a/include/trade.h b/include/trade.h
index 030a03a83..d5106b172 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -2,7 +2,7 @@
#define GUARD_TRADE_H
#include "global.h"
-#include "librfu.h"
+#include "link_rfu.h"
#include "constants/trade.h"
extern struct MailStruct gLinkPartnerMail[6];
@@ -11,7 +11,7 @@ extern u8 gSelectedTradeMonPositions[2];
extern const u16 gUnknown_826601C[];
void CB2_ReturnFromLinkTrade(void);
s32 sub_804FB34(void);
-s32 CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet);
-s32 GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, struct UnkLinkRfuStruct_02022B14Substruct rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet);
+s32 CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet);
+s32 GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet);
#endif //GUARD_TRADE_H
diff --git a/include/union_room.h b/include/union_room.h
index 03628441b..d57683a8a 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -6,7 +6,7 @@
struct UnkStruct_Shared
{
- struct UnkLinkRfuStruct_02022B14 field_0;
+ struct GFtgtGname field_0;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];
};
@@ -149,7 +149,7 @@ struct TradeUnkStruct
u32 personality;
};
-extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_203B064;
+extern struct GFtgtGnameSub gUnknown_203B064;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
diff --git a/ld_script.txt b/ld_script.txt
index 2544f8d42..da1f2b676 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -225,8 +225,9 @@ SECTIONS {
asm/box_party_pokemon_dropdown.o(.text);
src/save_menu_util.o(.text);
src/map_preview_screen.o(.text);
- asm/link_rfu_2.o(.text);
- asm/link_rfu.o(.text);
+ src/link_rfu_2.o(.text);
+ src/link_rfu_3.o(.text);
+ src/link_rfu.o(.text);
asm/easy_chat_2.o(.text);
src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
@@ -240,7 +241,8 @@ SECTIONS {
src/mailbox_pc.o(.text);
src/menu.o(.text);
src/quest_log.o(.text);
- asm/link_rfu_3.o(.text);
+ asm/union_room.o(.text);
+ asm/union_room_player_avatar.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
asm/union_room_chat.o(.text);
@@ -509,8 +511,9 @@ SECTIONS {
src/new_menu_helpers.o(.rodata);
data/box_party_pokemon_dropdown.o(.rodata);
src/map_preview_screen.o(.rodata);
- data/link_rfu_2.o(.rodata);
- data/link_rfu.o(.rodata);
+ src/link_rfu_2.o(.rodata);
+ src/link_rfu_3.o(.rodata);
+ data/easy_chat_2.o(.rodata);
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
src/list_menu.o(.rodata);
@@ -524,7 +527,7 @@ SECTIONS {
data/decorations.o(.rodata);
src/menu.o(.rodata);
src/quest_log.o(.rodata);
- data/link_rfu_3.o(.rodata);
+ data/union_room.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
data/union_room_chat.o(.rodata);
diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c
index 96de99c2a..dccd342f2 100644
--- a/src/librfu_rfu.c
+++ b/src/librfu_rfu.c
@@ -1533,11 +1533,11 @@ void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex)
gRfuSlotStatusUNI[slotStatusIndex]->recv.newDataFlag = 0;
}
-void rfu_REQ_sendData(u8 clockChangeFlag)
+void rfu_REQ_sendData(bool8 clockChangeFlag)
{
if (gRfuLinkStatus->parentChild != MODE_NEUTRAL)
{
- if (gRfuLinkStatus->parentChild == 1
+ if (gRfuLinkStatus->parentChild == MODE_PARENT
&& !(gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag))
{
if (gRfuStatic->commExistFlag)
@@ -1555,7 +1555,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag)
gRfuFixed->LLFBuffer[0] = 1;
gRfuFixed->LLFBuffer[4] = 0xFF;
STWI_set_Callback_M(rfu_CB_sendData3);
- if (clockChangeFlag == 0)
+ if (!clockChangeFlag)
STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, 1);
else
STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, 1);
@@ -1569,7 +1569,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag)
if (gRfuLinkStatus->LLFReadyFlag)
{
STWI_set_Callback_M(rfu_CB_sendData);
- if (clockChangeFlag != 0)
+ if (clockChangeFlag)
{
STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4);
return;
@@ -1577,7 +1577,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag)
STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4);
}
}
- if (clockChangeFlag != 0)
+ if (clockChangeFlag)
{
if (gRfuLinkStatus->parentChild == MODE_PARENT)
{
diff --git a/src/link.c b/src/link.c
index bdaa48cdf..7be93026b 100644
--- a/src/link.c
+++ b/src/link.c
@@ -984,7 +984,7 @@ u8 GetMultiplayerId(void)
{
if (gWirelessCommType == 1)
{
- return rfu_get_multiplayer_id();
+ return LinkRfu_GetMultiplayerId();
}
return SIO_MULTI_CNT->id;
}
diff --git a/src/link_rfu.c b/src/link_rfu.c
new file mode 100644
index 000000000..0d6e14551
--- /dev/null
+++ b/src/link_rfu.c
@@ -0,0 +1,1381 @@
+#include "global.h"
+#include "librfu.h"
+#include "link_rfu.h"
+
+struct UnkRfuStruct_1 gUnknown_3005E10;
+
+static void sub_80FD4E4(void);
+static void sub_80FDC28(u32 a0);
+static void sub_80FDC98(u16 reqCommandId, u16 reqResult);
+static void sub_80FE394(u16 reqCommandId);
+static void sub_80FE418(void);
+static void sub_80FE63C(void);
+static void sub_80FE6F0(void);
+static void sub_80FE74C(void);
+static u8 sub_80FE778(void);
+static void sub_80FE7F0(u8 a0, u8 a1);
+static void sub_80FE818(u8 bmDisconnectSlot);
+static void sub_80FE83C(u8 a0);
+static void sub_80FE918(void);
+static void sub_80FEAF4(void);
+
+u32 sub_80FD3A4(void)
+{
+ u32 id = rfu_REQBN_softReset_and_checkID();
+ if (id == 0x8001)
+ gUnknown_3005E10.unk_08 = 1;
+ if (gUnknown_3005E10.unk_04 != 0x17 && gUnknown_3005E10.unk_04 != 0x01)
+ {
+ gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_04 = 0;
+ }
+ gUnknown_3005E10.unk_07 = 0;
+ gUnknown_3005E10.unk_0d = 0;
+ gUnknown_3005E10.unk_01 = 0;
+ gUnknown_3005E10.unk_00 = 0;
+ gUnknown_3005E10.unk_06 = -1;
+ sub_80FEAF4();
+ return id;
+}
+
+void LinkRfu_REQ_SendData_HandleParentRelationship(u8 clockChangeFlag)
+{
+ if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ if (gUnknown_3005E10.unk_02 == TRUE)
+ clockChangeFlag = TRUE;
+ else
+ clockChangeFlag = FALSE;
+ }
+ else
+ gUnknown_3005E10.unk_03 = 0;
+ rfu_REQ_sendData(clockChangeFlag);
+}
+
+s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16))
+{
+ if (func1 == NULL)
+ {
+ return 4;
+ }
+ CpuFill16(0, &gUnknown_3005E10, sizeof(struct UnkRfuStruct_1));
+ gUnknown_3005E10.unk_06 = -1;
+ gUnknown_3005E10.unk_40 = func1;
+ gUnknown_3005E10.unk_44 = func2;
+ rfu_setMSCCallback(sub_80FE394);
+ rfu_setREQCallback(sub_80FDC98);
+ return 0;
+}
+
+static void sub_80FD484(void)
+{
+ CpuFill16(0, &gUnknown_3005E10, offsetof(struct UnkRfuStruct_1, unk_40));
+ gUnknown_3005E10.unk_06 = -1;
+}
+
+void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0)
+{
+ sub_80FD4E4();
+ gUnknown_3005E10.unk_04 = 1;
+ gUnknown_3005E10.unk_05 = 2;
+ gUnknown_3005E10.unk_3c = unk0;
+ gUnknown_3005E10.unk_09 = unk0->unk_11;
+ gUnknown_3005E10.unk_32 = unk0->unk_12;
+ gUnknown_3005E10.unk_18 = unk0->unk_14;
+ if (unk0->unk_10)
+ {
+ gUnknown_3005E10.unk_0b = 1;
+ }
+}
+
+static void sub_80FD4E4(void)
+{
+ u8 i;
+
+ gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_04 = 0;
+ gUnknown_3005E10.unk_06 = -1;
+ gUnknown_3005E10.unk_07 = 0;
+ gUnknown_3005E10.unk_10 = 0;
+ gUnknown_3005E10.unk_0c = 0;
+ gUnknown_3005E10.unk_24 = 0;
+ gUnknown_3005E10.unk_30 = 0;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ gUnknown_3005E10.unk_28[i] = 0;
+ gUnknown_3005E10.unk_34[i] = 0;
+ }
+}
+
+void sub_80FD52C(void)
+{
+ gUnknown_3005E10.unk_04 = 0x15;
+}
+
+u8 sub_80FD538(u8 r5, u16 r7, u16 r8, const u16 *r6)
+{
+ u8 i;
+ const u16 *buffer;
+
+ if (gUnknown_3005E10.unk_04 != 0 && (gUnknown_3005E10.unk_04 != 0x08 || r5 != 1))
+ {
+ gUnknown_3005E10.unk_14 = 1;
+ sub_80FE7F0(0xf3, 0x01);
+ return 1;
+ }
+ if (!rfu_getMasterSlave())
+ {
+ gUnknown_3005E10.unk_14 = 2;
+ sub_80FE7F0(0xf3, 0x01);
+ return 2;
+ }
+ for (i = 0, buffer = r6; i < 16; i++)
+ {
+ if (*buffer++ == 0xFFFF)
+ {
+ break;
+ }
+ }
+ if (i == 16)
+ {
+ gUnknown_3005E10.unk_14 = 4;
+ sub_80FE7F0(0xf3, 0x01);
+ return 4;
+ }
+ if (r5 > 1)
+ {
+ gUnknown_3005E10.unk_07 = 1;
+ r5 = 1;
+ r7 = 0;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_07 = 0;
+ }
+ if (r5 != 0)
+ {
+ gUnknown_3005E10.unk_04 = 5;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_04 = 9;
+ if (gUnknown_3005E10.unk_0b)
+ {
+ gUnknown_3005E10.unk_0b = 2;
+ }
+ }
+ gUnknown_3005E10.unk_06 = r5;
+ gUnknown_3005E10.unk_1a = r7;
+ gUnknown_3005E10.unk_26 = r8;
+ gUnknown_3005E10.unk_20 = r6;
+ return 0;
+}
+
+u8 sub_80FD610(u16 parentId, u16 unk_1a)
+{
+ u8 i;
+
+ if (gUnknown_3005E10.unk_04 != 0 && (gUnknown_3005E10.unk_04 < 9 || gUnknown_3005E10.unk_04 > 11))
+ {
+ gUnknown_3005E10.unk_14 = 1;
+ sub_80FE7F0(0xF3, 0x01);
+ return 1;
+ }
+ if (!rfu_getMasterSlave())
+ {
+ gUnknown_3005E10.unk_14 = 2;
+ sub_80FE7F0(0xF3, 0x01);
+ return 2;
+ }
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
+ {
+ if (gRfuLinkStatus->partner[i].id == parentId)
+ {
+ break;
+ }
+ }
+ if (gRfuLinkStatus->findParentCount == 0 || i == gRfuLinkStatus->findParentCount)
+ {
+ gUnknown_3005E10.unk_14 = 3;
+ sub_80FE7F0(0xF3, 0x01);
+ return 3;
+ }
+ if (gUnknown_3005E10.unk_04 == 0 || gUnknown_3005E10.unk_04 == 9)
+ {
+ gUnknown_3005E10.unk_04 = 12;
+ gUnknown_3005E10.unk_05 = 13;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_04 = 11;
+ gUnknown_3005E10.unk_05 = 12;
+ }
+ gUnknown_3005E10.unk_1e = parentId;
+ gUnknown_3005E10.unk_1a = unk_1a;
+ if (gUnknown_3005E10.unk_07 != 0)
+ {
+ gUnknown_3005E10.unk_07 = 7;
+ }
+ return 0;
+}
+
+static void sub_80FD6F4(u8 lossSlot)
+{
+ u8 i;
+
+ if (lossSlot & gUnknown_3005E10.unk_30)
+ {
+ gUnknown_3005E10.unk_30 &= ~lossSlot;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((lossSlot >> i) & 1)
+ {
+ gUnknown_3005E10.unk_34[i] = 0;
+ }
+ }
+ i = gRfuLinkStatus->linkLossSlotFlag & lossSlot;
+ if (i)
+ {
+ sub_80FE818(i);
+ }
+ gUnknown_3005E10.unk_14 = i;
+ sub_80FE7F0(0x33, i);
+ }
+}
+
+void sub_80FD760(bool8 a0)
+{
+ u8 r2;
+
+ r2 = 0;
+ gUnknown_3005E10.unk_07 = 0;
+ if (a0)
+ {
+ sub_80FD4E4();
+ gUnknown_3005E10.unk_04 = 23;
+ }
+ else
+ {
+ switch (gUnknown_3005E10.unk_04)
+ {
+ case 5:
+ gUnknown_3005E10.unk_04 = 8;
+ gUnknown_3005E10.unk_05 = 0;
+ r2 = 0x13;
+ break;
+ case 6:
+ gUnknown_3005E10.unk_04 = 7;
+ gUnknown_3005E10.unk_05 = 8;
+ break;
+ case 7:
+ gUnknown_3005E10.unk_04 = 7;
+ gUnknown_3005E10.unk_05 = 8;
+ break;
+ case 8:
+ break;
+ case 9:
+ gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_04 = 0;
+ r2 = 0x21;
+ break;
+ case 10:
+ gUnknown_3005E10.unk_04 = 11;
+ gUnknown_3005E10.unk_05 = 0;
+ break;
+ case 11:
+ gUnknown_3005E10.unk_04 = 11;
+ gUnknown_3005E10.unk_05 = 0;
+ break;
+ case 12:
+ gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_04 = 0;
+ r2 = 0x23;
+ break;
+ case 13:
+ gUnknown_3005E10.unk_04 = 14;
+ break;
+ case 14:
+ gUnknown_3005E10.unk_04 = 14;
+ break;
+ case 15:
+ break;
+ case 16:
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_11;
+ gUnknown_3005E10.unk_05 = gUnknown_3005E10.unk_12;
+ sub_80FE818(gRfuLinkStatus->linkLossSlotFlag);
+ gUnknown_3005E10.unk_14 = gRfuLinkStatus->linkLossSlotFlag;
+ sub_80FE7F0(0x33, 0x01);
+ return;
+ case 17:
+ gUnknown_3005E10.unk_04 = 18;
+ break;
+ case 18:
+ gUnknown_3005E10.unk_04 = 18;
+ break;
+ default:
+ gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_04 = 0;
+ r2 = 0x43;
+ break;
+ }
+ if (gUnknown_3005E10.unk_04 == 0)
+ {
+ sub_80FE7F0(r2, 0);
+ }
+ }
+}
+
+static bool8 sub_80FD850(u16 reqCommandId)
+{
+ bool8 retVal;
+ u8 i;
+ u8 bmLinkLossSlot;
+ u8 linkLossReason;
+ u8 parentBmLinkRecoverySlot;
+ u8 flags;
+
+ retVal = FALSE;
+ rfu_REQBN_watchLink(reqCommandId, &bmLinkLossSlot, &linkLossReason, &parentBmLinkRecoverySlot);
+ if (bmLinkLossSlot)
+ {
+ gUnknown_3005E10.unk_14 = bmLinkLossSlot;
+ gUnknown_3005E10.unk_16 = linkLossReason;
+ if (gUnknown_3005E10.unk_09)
+ {
+ gUnknown_3005E10.unk_0a = 1;
+ if (gUnknown_3005E10.unk_06 == 0 && linkLossReason == REASON_DISCONNECTED)
+ {
+ gUnknown_3005E10.unk_0a = 4;
+ }
+ if (gUnknown_3005E10.unk_0a == 1)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((bmLinkLossSlot >> i) & 1)
+ {
+ gUnknown_3005E10.unk_30 |= (1 << i);
+ gUnknown_3005E10.unk_34[i] = gUnknown_3005E10.unk_32;
+ }
+ }
+ sub_80FE7F0(0x31, 0x01);
+ }
+ else
+ {
+ gUnknown_3005E10.unk_0a = 0;
+ sub_80FE818(bmLinkLossSlot);
+ retVal = TRUE;
+ sub_80FE7F0(0x33, 0x01);
+ }
+ }
+ else
+ {
+ sub_80FE818(bmLinkLossSlot);
+ retVal = TRUE;
+ sub_80FE7F0(0x30, 0x02);
+ }
+ sub_80FEAF4();
+ }
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ if (parentBmLinkRecoverySlot)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gUnknown_3005E10.unk_30 >> i) & 1 && (parentBmLinkRecoverySlot >> i) & 1)
+ {
+ gUnknown_3005E10.unk_34[i] = 0;
+ }
+ }
+ gUnknown_3005E10.unk_30 &= ~parentBmLinkRecoverySlot;
+ gUnknown_3005E10.unk_14 = parentBmLinkRecoverySlot;
+ sub_80FE7F0(0x32, 0x01);
+ }
+ if (gUnknown_3005E10.unk_30)
+ {
+ flags = 0;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gUnknown_3005E10.unk_30 >> i) & 1 && gUnknown_3005E10.unk_34[i] && --gUnknown_3005E10.unk_34[i] == 0)
+ {
+ gUnknown_3005E10.unk_30 &= ~(1 << i);
+ flags |= (1 << i);
+ }
+ }
+ if (flags)
+ {
+ sub_80FE818(flags);
+ retVal = TRUE;
+ gUnknown_3005E10.unk_14 = flags;
+ sub_80FE7F0(0x33, 0x01);
+ }
+ }
+ if (!gUnknown_3005E10.unk_30)
+ {
+ gUnknown_3005E10.unk_0a = 0;
+ }
+ }
+ return retVal;
+}
+
+void LinkRfu_syncVBlank_(void)
+{
+ if (rfu_syncVBlank())
+ {
+ sub_80FE7F0(0xF1, 0x00);
+ sub_80FEAF4();
+ }
+}
+
+void sub_80FDA30(u32 a0)
+{
+ u8 r2;
+
+ if (gUnknown_3005E10.unk_40 == NULL && gUnknown_3005E10.unk_04 != 0)
+ {
+ gUnknown_3005E10.unk_04 = 0;
+ }
+ else
+ {
+ if (gUnknown_3005E10.unk_07 != 0)
+ {
+ sub_80FDC28(a0);
+ }
+ do
+ {
+ if (gUnknown_3005E10.unk_04 != 0)
+ {
+ rfu_waitREQComplete();
+ gUnknown_3005E10.unk_0e = 1;
+ switch (gUnknown_3005E10.unk_04)
+ {
+ case 23:
+ r2 = sub_80FD3A4() == 0x8001 ? 0x44 : 0xFF;
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE7F0(r2, 0);
+ break;
+ case 1:
+ if (sub_80FD3A4() == 0x8001)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_05 = 3;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE7F0(0xFF, 0);
+ }
+ break;
+ case 2:
+ rfu_REQ_reset();
+ break;
+ case 3:
+ rfu_REQ_configSystem(gUnknown_3005E10.unk_3c->unk_02, gUnknown_3005E10.unk_3c->unk_00, gUnknown_3005E10.unk_3c->unk_01);
+ break;
+ case 4:
+ rfu_REQ_configGameData(gUnknown_3005E10.unk_3c->unk_04, gUnknown_3005E10.unk_3c->unk_06, (const u8 *)gUnknown_3005E10.unk_3c->unk_08, gUnknown_3005E10.unk_3c->unk_0c);
+ break;
+ case 5:
+ rfu_REQ_startSearchChild();
+ break;
+ case 6:
+ rfu_REQ_pollSearchChild();
+ break;
+ case 7:
+ rfu_REQ_endSearchChild();
+ break;
+ case 8:
+ break;
+ case 9:
+ rfu_REQ_startSearchParent();
+ break;
+ case 10:
+ rfu_REQ_pollSearchParent();
+ break;
+ case 11:
+ rfu_REQ_endSearchParent();
+ break;
+ case 12:
+ rfu_REQ_startConnectParent(gUnknown_3005E10.unk_1e);
+ break;
+ case 13:
+ rfu_REQ_pollConnectParent();
+ break;
+ case 14:
+ rfu_REQ_endConnectParent();
+ break;
+ case 15:
+ break;
+ case 16:
+ rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->linkLossSlotFlag);
+ break;
+ case 17:
+ rfu_REQ_CHILD_pollConnectRecovery();
+ break;
+ case 18:
+ rfu_REQ_CHILD_endConnectRecovery();
+ break;
+ case 19:
+ rfu_REQ_changeMasterSlave();
+ break;
+ case 20:
+ break;
+ case 21:
+ rfu_REQ_stopMode();
+ break;
+ case 22:
+ break;
+ }
+ rfu_waitREQComplete();
+ gUnknown_3005E10.unk_0e = 0;
+ }
+ } while (gUnknown_3005E10.unk_04 == 18 || gUnknown_3005E10.unk_04 == 19);
+ if (gRfuLinkStatus->parentChild != MODE_PARENT || !sub_80FD850(0))
+ {
+ sub_80FE418();
+ sub_80FE63C();
+ sub_80FE74C();
+ sub_80FE918();
+ }
+ }
+}
+
+static void sub_80FDC28(u32 a0)
+{
+ if (gUnknown_3005E10.unk_07 == 5)
+ {
+ gUnknown_3005E10.unk_06 = 1;
+ gUnknown_3005E10.unk_04 = 5;
+ gUnknown_3005E10.unk_1a = gUnknown_3005E10.unk_1c;
+ if (gUnknown_3005E10.unk_1a)
+ {
+ gUnknown_3005E10.unk_07 = 6;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_07 = 1;
+ }
+ }
+ if (gUnknown_3005E10.unk_07 == 1)
+ {
+ gUnknown_3005E10.unk_06 = 1;
+ gUnknown_3005E10.unk_04 = 5;
+ gUnknown_3005E10.unk_1a = a0 % 140;
+ gUnknown_3005E10.unk_1c = 140 - gUnknown_3005E10.unk_1a;
+ if (gUnknown_3005E10.unk_1a)
+ {
+ gUnknown_3005E10.unk_07 = 2;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_07 = 3;
+ }
+ }
+ if (gUnknown_3005E10.unk_07 == 3)
+ {
+ gUnknown_3005E10.unk_06 = 0;
+ gUnknown_3005E10.unk_1a = 40;
+ gUnknown_3005E10.unk_07 = 4;
+ gUnknown_3005E10.unk_04 = 9;
+ }
+}
+
+static void sub_80FDC98(u16 r8, u16 r6)
+{
+ u8 sp0;
+ register u8 *stwiRecvBuffer asm("r0");
+ u8 *tmp;
+ u8 i;
+
+ if (gUnknown_3005E10.unk_0e != 0)
+ {
+ gUnknown_3005E10.unk_0e = 0;
+ switch (r8)
+ {
+ case 16:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_05 = 4;
+ }
+ break;
+ case 23:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_05 = 0;
+ }
+ break;
+ case 22:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE7F0(0x00, 0x00);
+ }
+ break;
+ case 25:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 6;
+ }
+ break;
+ case 26:
+ if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0)
+ {
+ gUnknown_3005E10.unk_04 = 7;
+ gUnknown_3005E10.unk_05 = 8;
+ }
+ break;
+ case 27:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_05 = 0;
+ if (gUnknown_3005E10.unk_07 == 0)
+ {
+ sub_80FE7F0(0x13, 0x00);
+ }
+ }
+ break;
+ case 28:
+ if (r6 == 0)
+ {
+ if (gUnknown_3005E10.unk_0b == 1 && gUnknown_3005E10.unk_1a > 1)
+ {
+ gUnknown_3005E10.unk_1a--;
+ }
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 10;
+ }
+ break;
+ case 29:
+ if (r6 == 0)
+ {
+ sp0 = sub_80FE778();
+ gUnknown_3005E10.unk_14 = sp0;
+ if (sp0)
+ {
+ sub_80FE7F0(0x20, 0x01);
+ }
+ if (gUnknown_3005E10.unk_0b && gUnknown_3005E10.unk_1a != 1 && gRfuLinkStatus->findParentCount == RFU_CHILD_MAX)
+ {
+ rfu_REQ_endSearchParent();
+ rfu_waitREQComplete();
+ gUnknown_3005E10.unk_04 = 9;
+ gUnknown_3005E10.unk_0b = 1;
+ }
+ }
+ if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0)
+ {
+ gUnknown_3005E10.unk_04 = 11;
+ gUnknown_3005E10.unk_05 = 0;
+ }
+ break;
+ case 30:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ if (gUnknown_3005E10.unk_07 == 0)
+ {
+ if (gUnknown_3005E10.unk_04 == 0)
+ {
+ sub_80FE7F0(0x21, 0x00);
+ }
+ }
+ else if (gUnknown_3005E10.unk_07 != 7)
+ {
+ gUnknown_3005E10.unk_04 = 5;
+ gUnknown_3005E10.unk_07 = 5;
+ }
+ }
+ break;
+ case 31:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 13;
+ }
+ break;
+ case 32:
+ if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_3005E10.unk_10) && !sp0)
+ {
+ gUnknown_3005E10.unk_04 = 14;
+ }
+ if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0)
+ {
+ gUnknown_3005E10.unk_04 = 14;
+ }
+ break;
+ case 33:
+ if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_3005E10.unk_10))
+ {
+ if (!sp0)
+ {
+ gUnknown_3005E10.unk_04 = 19;
+ gUnknown_3005E10.unk_05 = 15;
+ gUnknown_3005E10.unk_1e = 0x22;
+ gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_10;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ gUnknown_3005E10.unk_1e = 0x23;
+ gUnknown_3005E10.unk_14 = sp0;
+ if (gUnknown_3005E10.unk_07)
+ {
+ gUnknown_3005E10.unk_07 = 3;
+ gUnknown_3005E10.unk_04 = 9;
+ }
+ }
+ sub_80FE7F0(gUnknown_3005E10.unk_1e, 0x01);
+ gUnknown_3005E10.unk_1e = 0;
+ }
+ break;
+ case 50:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_14 = gRfuLinkStatus->linkLossSlotFlag;
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 17;
+ for (gUnknown_3005E10.unk_10 = 0; gUnknown_3005E10.unk_10 < RFU_CHILD_MAX; gUnknown_3005E10.unk_10++)
+ {
+ if ((gRfuLinkStatus->linkLossSlotFlag >> gUnknown_3005E10.unk_10) & 1)
+ {
+ break;
+ }
+ }
+ }
+ break;
+ case 51:
+ if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0) && sp0 < 2)
+ {
+ gUnknown_3005E10.unk_04 = 18;
+ }
+ if (gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] && --gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] == 0)
+ {
+ gUnknown_3005E10.unk_04 = 18;
+ }
+ break;
+ case 52:
+ if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0))
+ {
+ if (!sp0)
+ {
+ gUnknown_3005E10.unk_04 = 19;
+ gUnknown_3005E10.unk_05 = 22;
+ gUnknown_3005E10.unk_1e = 0x32;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE818(gRfuLinkStatus->linkLossSlotFlag);
+ gUnknown_3005E10.unk_1e = 0x33;
+ }
+ gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] = 0;
+ gUnknown_3005E10.unk_30 = 0;
+ gUnknown_3005E10.unk_0a = 0;
+ sub_80FE7F0(gUnknown_3005E10.unk_1e, 0x01);
+ gUnknown_3005E10.unk_1e = 0;
+ }
+ break;
+ case 39:
+ if (r6 == 0)
+ {
+ if (gUnknown_3005E10.unk_05 == 22)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_11;
+ gUnknown_3005E10.unk_05 = gUnknown_3005E10.unk_12;
+ gUnknown_3005E10.unk_02 = 1;
+ sub_80FE7F0(0x41, 0x00);
+ }
+ else if (gUnknown_3005E10.unk_05 == 15)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_02 = 1;
+ sub_80FE7F0(0x41, 0x00);
+ gUnknown_3005E10.unk_24 |= 1 << gUnknown_3005E10.unk_10;
+ gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = gUnknown_3005E10.unk_26;
+ rfu_clearSlot(4, gUnknown_3005E10.unk_10);
+ tmp = &sp0;
+ *tmp = rfu_NI_CHILD_setSendGameName(gUnknown_3005E10.unk_10, 0x0e);
+ if (*tmp)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FEAF4();
+ sub_80FE818(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
+ gUnknown_3005E10.unk_14 = sp0;
+ sub_80FE7F0(0x25, 0x01);
+ }
+ }
+ }
+ break;
+ case 61:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE7F0(0x42, 0x00);
+ }
+ break;
+ }
+ gUnknown_3005E10.unk_0e = 1;
+ }
+ else if (r6 == 3 && gUnknown_3005E10.unk_0f && (r8 == 0x24 || r8 == 0x26 || r8 == 0x27))
+ {
+ rfu_REQ_RFUStatus();
+ rfu_waitREQComplete();
+ rfu_getRFUStatus(&sp0);
+ if (sp0 == 0 && gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ stwiRecvBuffer = rfu_getSTWIRecvBuffer()->rxPacketAlloc.rfuPacket8.data;
+ stwiRecvBuffer[4] = gRfuLinkStatus->connSlotFlag;
+ stwiRecvBuffer[5] = 1;
+ sub_80FD850(0x29);
+ r6 = 0;
+ }
+ }
+ switch (r8)
+ {
+ case 48:
+ if (r6 == 0)
+ {
+ stwiRecvBuffer = rfu_getSTWIRecvBuffer()->rxPacketAlloc.rfuPacket8.data;
+ gUnknown_3005E10.unk_14 = stwiRecvBuffer[8];
+ sub_80FE83C(gUnknown_3005E10.unk_14);
+ if (gUnknown_3005E10.unk_30)
+ {
+ gUnknown_3005E10.unk_30 &= ~gUnknown_3005E10.unk_14;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gUnknown_3005E10.unk_14 >> i) & 1)
+ {
+ gUnknown_3005E10.unk_34[i] = 0;
+ }
+ }
+ if (gUnknown_3005E10.unk_06 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ }
+ }
+ sp0 = gUnknown_3005E10.unk_00 & gUnknown_3005E10.unk_14;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((sp0 >> i) & 1 && gUnknown_3005E10.unk_01)
+ {
+ gUnknown_3005E10.unk_01--;
+ }
+ }
+ gUnknown_3005E10.unk_00 &= ~gUnknown_3005E10.unk_14;
+ if (gUnknown_3005E10.unk_07)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
+ {
+ if (gUnknown_3005E10.unk_07 == 8)
+ {
+ gUnknown_3005E10.unk_1a = gUnknown_3005E10.unk_1c;
+ gUnknown_3005E10.unk_07 = 6;
+ gUnknown_3005E10.unk_04 = 6;
+ }
+ else if (gUnknown_3005E10.unk_04 != 6 && gUnknown_3005E10.unk_04 != 7)
+ {
+ gUnknown_3005E10.unk_07 = 1;
+ gUnknown_3005E10.unk_04 = 5;
+ }
+ }
+ }
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
+ {
+ if (gUnknown_3005E10.unk_04 == 0)
+ {
+ gUnknown_3005E10.unk_06 = -1;
+ }
+ }
+ if (gUnknown_3005E10.unk_0e == 0)
+ {
+ sub_80FE7F0(0x40, 0x01);
+ }
+ }
+ break;
+ case 38:
+ sub_80FE6F0();
+ if (gRfuLinkStatus->parentChild != MODE_NEUTRAL)
+ {
+ sub_80FE7F0(0x50, 0x00);
+ }
+ break;
+ case 16:
+ case 61:
+ if (r6 == 0)
+ {
+ gUnknown_3005E10.unk_0d = 0;
+ gUnknown_3005E10.unk_01 = 0;
+ gUnknown_3005E10.unk_00 = 0;;
+ gUnknown_3005E10.unk_06 = -1;
+ sub_80FEAF4();
+ if (r8 == 61)
+ {
+ sub_80FD484();
+ }
+ }
+ break;
+ }
+ if (r6 != 0)
+ {
+ if (r8 == 28 && r6 != 0 && gUnknown_3005E10.unk_07 == 4)
+ {
+ gRfuLinkStatus->parentChild = MODE_PARENT;
+ gRfuLinkStatus->connSlotFlag = 0xF;
+ sub_80FE818(15);
+ rfu_waitREQComplete();
+ return;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_14 = r8;
+ gUnknown_3005E10.unk_16 = r6;
+ if (gUnknown_3005E10.unk_0e)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ }
+ sub_80FE7F0(0xf0, 0x02);
+ sub_80FEAF4();
+ }
+ }
+ if (r8 == 0xFF)
+ {
+ sub_80FE7F0(0xf2, 0x00);
+ sub_80FEAF4();
+ }
+}
+
+static void sub_80FE394(u16 reqCommandId)
+{
+ u8 r7;
+ u8 ackFlag;
+
+ r7 = gUnknown_3005E10.unk_0e;
+ gUnknown_3005E10.unk_0e = 0;
+ gUnknown_3005E10.unk_0f = 1;
+ if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ sub_80FD850(reqCommandId);
+ if (gUnknown_3005E10.unk_02 != 1)
+ {
+ sub_80FEAF4();
+ gUnknown_3005E10.unk_0f = 0;
+ gUnknown_3005E10.unk_0e = r7;
+ return;
+ }
+ }
+ else
+ {
+ if (!rfu_UNI_PARENT_getDRAC_ACK(&ackFlag))
+ {
+ gUnknown_3005E10.unk_03 |= ackFlag;
+ }
+ }
+ if (gUnknown_3005E10.unk_44 != NULL)
+ {
+ gUnknown_3005E10.unk_44(reqCommandId);
+ rfu_waitREQComplete();
+ if (gUnknown_3005E10.unk_02 == 2)
+ {
+ sub_80FEAF4();
+ }
+ }
+ gUnknown_3005E10.unk_0f = 0;
+ gUnknown_3005E10.unk_0e = r7;
+}
+
+static void sub_80FE418(void)
+{
+ u8 flags;
+ u8 sp0;
+ u8 i;
+ u8 r5;
+ u8 r4;
+ const u16 *ptr;
+
+ if (gUnknown_3005E10.unk_04 == 5 || gUnknown_3005E10.unk_04 == 6 || gUnknown_3005E10.unk_04 == 7 || gUnknown_3005E10.unk_04 == 8)
+ {
+ flags = ((gRfuLinkStatus->connSlotFlag ^ gUnknown_3005E10.unk_0c) & gRfuLinkStatus->connSlotFlag) & ~gRfuLinkStatus->getNameFlag;
+ gUnknown_3005E10.unk_0c = gRfuLinkStatus->connSlotFlag;
+ if (flags)
+ {
+ gUnknown_3005E10.unk_14 = flags;
+ sub_80FE7F0(0x10, 0x01);
+ }
+ sp0 = 0x00;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ r4 = 1 << i;
+ r5 = 0x00;
+ if (flags & r4)
+ {
+ gUnknown_3005E10.unk_28[i] = gUnknown_3005E10.unk_26;
+ gUnknown_3005E10.unk_24 |= r4;
+ }
+ else if (gUnknown_3005E10.unk_24 & r4)
+ {
+ if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS)
+ {
+ if (gRfuSlotStatusNI[i]->recv.dataType == 1) // Game identification information
+ {
+ r5 = 0x02;
+ for (ptr = gUnknown_3005E10.unk_20; *ptr != 0xFFFF; ptr++)
+ {
+ if (gRfuLinkStatus->partner[i].serialNo == *ptr)
+ {
+ gUnknown_3005E10.unk_00 |= r4;
+ gUnknown_3005E10.unk_01++;
+ sp0 |= r4;
+ r5 |= 0x01;
+ break;
+ }
+ }
+ if (!(r5 & 0x01))
+ {
+ r5 |= 0x04;
+ }
+ }
+ }
+ else if (--gUnknown_3005E10.unk_28[i] == 0)
+ {
+ r5 = 0x06;
+ }
+ if (r5 & 0x02)
+ {
+ gUnknown_3005E10.unk_24 &= ~r4;
+ gUnknown_3005E10.unk_28[i] = 0;
+ rfu_clearSlot(0x08, i);
+ }
+ if (r5 & 0x04)
+ {
+ gUnknown_3005E10.unk_0d |= r4;
+ }
+ }
+ }
+ if (sp0)
+ {
+ gUnknown_3005E10.unk_14 = sp0;
+ sub_80FE7F0(0x11, 0x01);
+ }
+ if (gUnknown_3005E10.unk_0d)
+ {
+ r5 = 0x01;
+ if (gRfuLinkStatus->sendSlotUNIFlag && ((gUnknown_3005E10.unk_03 & gUnknown_3005E10.unk_00) != gUnknown_3005E10.unk_00))
+ {
+ r5 = 0x00;
+ }
+ if (r5)
+ {
+ sub_80FE818(gUnknown_3005E10.unk_0d);
+ gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_0d;
+ gUnknown_3005E10.unk_0d = 0;
+ sub_80FE7F0(0x12, 0x01);
+ }
+ }
+ if (gUnknown_3005E10.unk_24 == 0 && gUnknown_3005E10.unk_04 == 8)
+ {
+ if (gUnknown_3005E10.unk_07 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE7F0(0x14, 0x00);
+ }
+ else
+ {
+ if (gUnknown_3005E10.unk_07 == 2)
+ {
+ gUnknown_3005E10.unk_07 = 3;
+ gUnknown_3005E10.unk_04 = 9;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_07 = 1;
+ gUnknown_3005E10.unk_04 = 5;
+ }
+ if (gUnknown_3005E10.unk_00)
+ {
+ gUnknown_3005E10.unk_1a = 0;
+ gUnknown_3005E10.unk_07 = 8;
+ gUnknown_3005E10.unk_04 = 5;
+ }
+ }
+ }
+ }
+}
+
+static void sub_80FE63C(void)
+{
+ u16 imeBak = REG_IME;
+ REG_IME = 0;
+ if (gUnknown_3005E10.unk_04 == 15)
+ {
+ if (--gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == SLOT_STATE_SEND_FAILED)
+ {
+ sub_80FEB14();
+ gUnknown_3005E10.unk_04 = 24;
+ rfu_clearSlot(4, gUnknown_3005E10.unk_10);
+ gUnknown_3005E10.unk_24 &= ~(1 << gUnknown_3005E10.unk_10);
+ gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = 0;
+ }
+ }
+ REG_IME = imeBak;
+ if (gUnknown_3005E10.unk_04 == 24)
+ {
+ if (gUnknown_3005E10.unk_02 == 1)
+ {
+ sub_80FEB14();
+ }
+ if (gUnknown_3005E10.unk_02 == 0)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ sub_80FE818(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
+ gUnknown_3005E10.unk_14 = 0;
+ sub_80FE7F0(0x25, 0x01);
+ }
+ }
+}
+
+static void sub_80FE6F0(void)
+{
+ if (gUnknown_3005E10.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == SLOT_STATE_SEND_SUCCESS)
+ {
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ rfu_clearSlot(4, gUnknown_3005E10.unk_10);
+ gUnknown_3005E10.unk_24 &= ~(1 << gUnknown_3005E10.unk_10);
+ gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = 0;
+ sub_80FE7F0(0x24, 0x00);
+ }
+}
+
+static void sub_80FE74C(void)
+{
+ if (gUnknown_3005E10.unk_06 == 0 && gUnknown_3005E10.unk_0a == 1)
+ {
+ gUnknown_3005E10.unk_11 = gUnknown_3005E10.unk_04;
+ gUnknown_3005E10.unk_12 = gUnknown_3005E10.unk_05;
+ gUnknown_3005E10.unk_04 = 16;
+ gUnknown_3005E10.unk_05 = 17;
+ gUnknown_3005E10.unk_0a = 2;
+ }
+}
+
+static u8 sub_80FE778(void)
+{
+ u8 i;
+ const u16 *ptr;
+ u8 flags = 0x00;
+
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
+ {
+ for (ptr = gUnknown_3005E10.unk_20; *ptr != 0xFFFF; ptr++)
+ {
+ if (gRfuLinkStatus->partner[i].serialNo == *ptr)
+ {
+ flags |= (1 << i);
+ }
+ }
+ }
+ return flags;
+}
+
+static void sub_80FE7F0(u8 a0, u8 a1)
+{
+ if (gUnknown_3005E10.unk_40 != NULL)
+ {
+ gUnknown_3005E10.unk_40(a0, a1);
+ }
+ gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_16 = 0;
+}
+
+static void sub_80FE818(u8 a0)
+{
+ u8 unk_0e_bak = gUnknown_3005E10.unk_0e;
+ gUnknown_3005E10.unk_0e = 1;
+ rfu_REQ_disconnect(a0);
+ rfu_waitREQComplete();
+ gUnknown_3005E10.unk_0e = unk_0e_bak;
+}
+
+static void sub_80FE83C(u8 a0)
+{
+ u8 i;
+
+ if (gRfuLinkStatus->sendSlotNIFlag)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->send.bmSlot & a0)
+ {
+ rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0);
+ }
+ }
+ }
+ if (gRfuLinkStatus->recvSlotNIFlag)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.bmSlot & a0)
+ {
+ rfu_NI_stopReceivingData(i);
+ }
+ }
+ }
+ if (gRfuLinkStatus->sendSlotUNIFlag)
+ {
+ gRfuLinkStatus->sendSlotUNIFlag &= ~a0;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusUNI[i]->send.state == SLOT_STATE_SEND_UNI && a0 & gRfuSlotStatusUNI[i]->send.bmSlot)
+ {
+ gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0;
+ }
+ }
+ }
+}
+
+static void sub_80FE918(void)
+{
+ u8 i;
+ u8 j;
+ u8 flags;
+
+ if (gUnknown_3005E10.unk_18)
+ {
+ if (gRfuLinkStatus->sendSlotNIFlag)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG)
+ {
+ flags = 0;
+ for (j = 0; j < RFU_CHILD_MAX; j++)
+ {
+ if ((gRfuSlotStatusNI[i]->send.bmSlot >> j) & 1 && gRfuSlotStatusNI[j]->send.failCounter > gUnknown_3005E10.unk_18)
+ {
+ flags |= (1 << j);
+ }
+ if (flags)
+ {
+ rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->send.bmSlot);
+ }
+ }
+ }
+ }
+ }
+ if (gRfuLinkStatus->recvSlotNIFlag)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_3005E10.unk_18)
+ {
+ rfu_NI_stopReceivingData(i);
+ }
+ }
+ }
+ }
+}
+
+void sub_80FEA10(void (*func)(u16))
+{
+ gUnknown_3005E10.unk_44 = func;
+ rfu_setMSCCallback(sub_80FE394);
+}
+
+static void sub_80FEA28(void (*func)(u8, u8))
+{
+ gUnknown_3005E10.unk_40 = func;
+}
+
+u8 sub_80FEA34(u8 a0, u16 a1)
+{
+ u16 imeBak;
+ if (gUnknown_3005E10.unk_09 && a0 == 0 && gUnknown_3005E10.unk_30)
+ {
+ return 5;
+ }
+ imeBak = REG_IME;
+ REG_IME = 0;
+ gUnknown_3005E10.unk_09 = a0;
+ gUnknown_3005E10.unk_32 = a1;
+ REG_IME = imeBak;
+ return 0;
+}
+
+static u8 sub_80FEA78(u16 a0)
+{
+ if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag)
+ {
+ gUnknown_3005E10.unk_14 = 6;
+ sub_80FE7F0(0xf3, 0x01);
+ return 6;
+ }
+ gUnknown_3005E10.unk_18 = a0;
+ return 0;
+}
+
+static u8 sub_80FEAB4(u8 a0)
+{
+ if (gUnknown_3005E10.unk_04 == 9 || gUnknown_3005E10.unk_04 == 10 || gUnknown_3005E10.unk_04 == 11)
+ {
+ gUnknown_3005E10.unk_14 = 7;
+ sub_80FE7F0(0xf3, 0x01);
+ return 7;
+ }
+ if (a0)
+ {
+ gUnknown_3005E10.unk_0b = 1;
+ }
+ else
+ {
+ gUnknown_3005E10.unk_0b = 0;
+ }
+ return 0;
+}
+
+static void sub_80FEAF4(void)
+{
+ if (gUnknown_3005E10.unk_02)
+ {
+ gUnknown_3005E10.unk_02 = 0;
+ sub_80FE7F0(0x45, 0x00);
+ }
+}
+
+void sub_80FEB14(void)
+{
+ if (gUnknown_3005E10.unk_02 == 0)
+ {
+ sub_80FE7F0(0x45, 0x00);
+ }
+ else if (gUnknown_3005E10.unk_02 == 1)
+ {
+ gUnknown_3005E10.unk_02 = 2;
+ }
+}
+
+void sub_80FEB3C(void)
+{
+ if (gUnknown_3005E10.unk_07)
+ {
+ switch (gUnknown_3005E10.unk_04)
+ {
+ case 5:
+ gUnknown_3005E10.unk_07 = 3;
+ gUnknown_3005E10.unk_04 = 9;
+ break;
+ case 6:
+ gUnknown_3005E10.unk_07 = 2;
+ gUnknown_3005E10.unk_1a = 1;
+ break;
+ case 7:
+ case 8:
+ gUnknown_3005E10.unk_07 = 2;
+ break;
+ case 9:
+ case 10:
+ gUnknown_3005E10.unk_1a = 40;
+ break;
+ case 11:
+ gUnknown_3005E10.unk_1a = 40;
+ gUnknown_3005E10.unk_04 = 10;
+ break;
+ }
+ }
+}
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
new file mode 100644
index 000000000..a06e3bc9c
--- /dev/null
+++ b/src/link_rfu_2.c
@@ -0,0 +1,2834 @@
+#include "global.h"
+#include "battle.h"
+#include "gpu_regs.h"
+#include "librfu.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "mystery_gift_menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "quest_log.h"
+#include "random.h"
+#include "string_util.h"
+#include "task.h"
+#include "constants/species.h"
+
+struct UnkRfuStruct_8010A14{
+ char unk_00[15]; // PokemonSioInfo
+ u8 unk_0f;
+ u8 unk_10[4];
+ struct LinkPlayer unk_14[5];
+ u8 fill_a0[0x5c];
+};
+
+static EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {};
+static EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {};
+
+static struct RfuAPIBuffer gRfuAPIBuffer;
+static u8 gUnknown_3001FF8[14];
+static u16 gUnknown_3002008[7];
+
+struct GFtgtGname gUnknown_3005440;
+struct UnkRfuStruct_2 Rfu;
+u8 gUnknown_3005E00[PLAYER_NAME_LENGTH];
+
+static void sub_80F8AA4(void);
+static void sub_80F8AEC(void);
+static void sub_80F8D20(u16 a0);
+static void sub_80F8DA8(u16 a0);
+static void sub_80F906C(void);
+static void sub_80F9868(u8 unused);
+static void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data);
+static void sub_80F9D04(u16 command);
+static void rfufunc_80F9F44(void);
+static void sub_80F9FA8(void);
+static void rfufunc_80FA020(void);
+static void CallRfuFunc(void);
+static void sub_80FA738(void);
+static int sub_80FA788(void);
+static void sub_80FA834(u8 taskId);
+static void sub_80FA9D0(u16 a0);
+static void sub_80FAA58(void * a0);
+static void sub_80FAA94(u8 taskId);
+static void sub_80FACF0(u8 taskId);
+static void sub_80FB0E8(u32 a0);
+static void sub_80FB564(s32 a0);
+static void sub_80FBB74(void);
+static u8 sub_80FBC70(const u8 *a0, u16 a1);
+static void sub_80FBCF8(u32 a0);
+static void sub_80FBE20(u32 a0, u32 a1);
+static void sub_80FC028(u8 taskId);
+static void sub_80FC208(void);
+static void nullsub_89(u8 taskId);
+
+static const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = {
+ .unk_00 = 0x04,
+ .unk_01 = 0x20,
+ .unk_02 = 0x0000,
+ .unk_04 = 0x00,
+ .unk_06 = 0x0002,
+ .unk_08 = &gUnknown_3005440,
+ .unk_0c = gUnknown_3005E00,
+ .unk_10 = 0x01,
+ .unk_11 = 0x00,
+ .unk_12 = 0x0258,
+ .unk_14 = 0x012c
+};
+
+static const u8 gUnknown_843EBCC[] = {
+ 0, 3, 2, 1, 0
+};
+
+static const u32 gUnknown_843EBD4[] = {
+ 0x000000,
+ 0x000001,
+ 0x000003,
+ 0x000007,
+ 0x00000f,
+ 0x00001f,
+ 0x00003f,
+ 0x00007f,
+ 0x0000ff,
+ 0x0001ff,
+ 0x0003ff,
+ 0x0007ff,
+ 0x000fff,
+ 0x001fff,
+ 0x003fff,
+ 0x007fff,
+ 0x00ffff,
+ 0x01ffff,
+ 0x03ffff,
+ 0x07ffff,
+ 0x0fffff,
+ 0x1fffff,
+ 0x3fffff,
+ 0x7fffff,
+ 0xffffff
+};
+
+static const u8 gUnknown_843EC38[] = {
+ 0, 0, 1,
+ 1, 2, 2,
+ 2, 2, 3
+};
+
+static const u8 gUnknown_843EC41[] = {
+ 0, 1, 1, 2,
+ 1, 2, 2, 3,
+ 1, 2, 2, 3,
+ 2, 3, 3, 4
+};
+
+static const u8 gUnknown_843EC51[] = {
+ 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
+};
+
+static const struct {
+ u8 *buffer;
+ u32 size;
+} gUnknown_843EC64[] = {
+ { gBlockSendBuffer, 200 },
+ { gBlockSendBuffer, 200 },
+ { gBlockSendBuffer, 100 },
+ { gBlockSendBuffer, 220 },
+ { gBlockSendBuffer, 40 }
+};
+
+static const u16 gUnknown_843EC8C[] = {
+ 0x0002, 0x7f7d, 0xFFFF
+};
+
+static const char sUnref_843EC92[][15] = {
+ "RFU WAIT",
+ "RFU BOOT",
+ "RFU ERROR",
+ "RFU RESET",
+ "RFU CONFIG",
+ "RFU START",
+ "RFU SC POLL",
+ "RFU SP POLL",
+ "RFU START",
+ "RFU SEND ERR",
+ "RFU CP POLL"
+};
+
+static const char sUnref_843ED37[][16] = {
+ " ",
+ "RECOVER START ",
+ "DISSCONECT ",
+ "RECOVER SUUSES",
+ "RECOVER FAILED"
+};
+
+static const TaskFunc gUnknown_843ED88[] = {
+ sub_80FA834,
+ sub_80FAA94,
+ sub_80FACF0
+};
+
+static void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2)
+{
+ // debug?
+}
+
+static void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3)
+{
+
+}
+
+void sub_80F85F8(void)
+{
+ s32 i;
+ u8 unk_ee_bak = Rfu.unk_ee;
+ CpuFill16(0, &Rfu, sizeof Rfu);
+ Rfu.unk_0c = 0xFF;
+ Rfu.unk_ee = unk_ee_bak;
+ if (Rfu.unk_ee != 4)
+ {
+ Rfu.unk_ee = 0;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ sub_80F9CB4(Rfu.unk_80 + i);
+ }
+ sub_80F9CB4(&Rfu.unk_6c);
+ sub_80FC478(&Rfu.unk_124);
+ sub_80FC4D4(&Rfu.unk_9e8);
+ CpuFill16(0, gSendCmd, sizeof gSendCmd);
+ CpuFill16(0, gRecvCmds, sizeof gRecvCmds);
+ CpuFill16(0, gLinkPlayers, sizeof gLinkPlayers);
+}
+
+void InitRFU(void)
+{
+ IntrFunc serialIntr = gIntrTable[1];
+ IntrFunc timerIntr = gIntrTable[2];
+ sub_80F86F4();
+ rfu_REQ_stopMode();
+ rfu_waitREQComplete();
+ REG_IME = 0;
+ gIntrTable[1] = serialIntr;
+ gIntrTable[2] = timerIntr;
+ REG_IME = INTR_FLAG_VBLANK;
+}
+
+void sub_80F86F4(void)
+{
+ if (!rfu_initializeAPI(&gRfuAPIBuffer, sizeof gRfuAPIBuffer, gIntrTable + 1, TRUE))
+ {
+ gLinkType = 0;
+ sub_80FB128(0);
+ sub_80F85F8();
+ rfu_setTimerInterrupt(3, gIntrTable + 2);
+ }
+}
+
+static void sub_80F8738(u8 taskId)
+{
+ sub_80FA738();
+ switch (Rfu.unk_04)
+ {
+ case 0:
+ sub_80FD4B0(&gUnknown_203ABF0);
+ Rfu.unk_04 = 1;
+ gTasks[taskId].data[1] = 1;
+ break;
+ case 1:
+ break;
+ case 2:
+ sub_80FD538(Rfu.unk_0c, 0, 240, gUnknown_843EC8C);
+ Rfu.unk_04 = 3;
+ gTasks[taskId].data[1] = 6;
+ break;
+ case 3:
+ break;
+ case 4:
+ sub_80FD760(FALSE);
+ Rfu.unk_04 = 5;
+ break;
+ case 5:
+ break;
+ case 18:
+ Rfu.unk_cdb = 0;
+ sub_80FEA10(sub_80F8DA8);
+ sub_80F8AA4();
+ sub_80F8AEC();
+ Rfu.unk_04 = 20;
+ gTasks[taskId].data[1] = 8;
+ CreateTask(sub_80FA834, 5);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static u8 sub_80F886C(u8 idx)
+{
+ return gUnknown_843EC51[idx];
+}
+
+static void sub_80F887C(s32 r2, s32 r5)
+{
+ u8 i;
+ u8 r4 = 1;
+ s32 r1 = r2;
+ s32 r6 = 0;
+ if (r5 == -1)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; r2 >>= 1, i++)
+ {
+ if (r2 & 1)
+ {
+ Rfu.unk_cde[i] = r4;
+ r4++;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < RFU_CHILD_MAX; r1 >>= 1, i++)
+ {
+ if (!(r1 & 1))
+ {
+ Rfu.unk_cde[i] = 0;
+ }
+ }
+ for (r4 = 4; r4 != 0; r4--)
+ {
+ for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++);
+ if (i == 4)
+ {
+ r6 = r4;
+ }
+ }
+ for (r5 &= ~r2, i = 0; i < RFU_CHILD_MAX; r5 >>= 1, i++)
+ {
+ if (r5 & 1)
+ {
+ Rfu.unk_cde[i] = r6++;
+ }
+ }
+ }
+}
+
+static void sub_80F893C(u8 taskId)
+{
+ switch (Rfu.unk_04)
+ {
+ case 0:
+ sub_80FD4B0(&gUnknown_843EBB4);
+ Rfu.unk_04 = 1;
+ gTasks[taskId].data[1] = 1;
+ break;
+ case 1:
+ break;
+ case 6:
+ sub_80FD538(Rfu.unk_0c, 0, 0xf0, gUnknown_843EC8C);
+ Rfu.unk_04 = 7;
+ gTasks[taskId].data[1] = 7;
+ break;
+ case 7:
+ break;
+ case 9:
+ gTasks[taskId].data[1] = 10;
+ break;
+ case 11:
+ switch (sub_80FA788())
+ {
+ case 5:
+ Rfu.unk_04 = 12;
+ break;
+ case 6:
+ case 9:
+ sub_80FEB14();
+ Rfu.unk_ce4 = 2;
+ DestroyTask(taskId);
+ break;
+ }
+ break;
+ case 12:
+ {
+ u8 r5 = 1 << Rfu.unk_c3e;
+ rfu_clearSlot(12, Rfu.unk_c3e);
+ rfu_setRecvBuffer(16, Rfu.unk_c3e, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
+ rfu_UNI_setSendData(r5, Rfu.unk_4c, sizeof(Rfu.unk_4c));
+ gTasks[taskId].data[1] = 8;
+ DestroyTask(taskId);
+ if (gUnknown_203AC08.unk_0f == 0)
+ {
+ sub_80FC208();
+ gUnknown_203AC08.unk_0f++;
+ }
+ CreateTask(sub_80FA834, 5);
+ break;
+ }
+ }
+}
+
+static void sub_80F8AA4(void)
+{
+ u8 i;
+ u8 r5 = gUnknown_3005E10.unk_00;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (r5 & 1)
+ {
+ rfu_setRecvBuffer(16, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i]));
+ rfu_clearSlot(3, i);
+ }
+ r5 >>= 1;
+ }
+}
+
+static void sub_80F8AEC(void)
+{
+ u8 r5 = gUnknown_3005E10.unk_00;
+ rfu_UNI_setSendData(r5, Rfu.unk_c87, sizeof(Rfu.unk_c87));
+ Rfu.unk_cda = sub_80F886C(r5);
+ Rfu.unk_ce2 = r5;
+ sub_80F887C(r5, -1);
+ Rfu.unk_0c = 1;
+}
+
+static void sub_80F8B34(u8 taskId)
+{
+ if (sub_80F9800()->unk_0a_0 == 0x54 && sub_80FB9F4() == 4)
+ {
+ rfu_REQ_disconnect(gUnknown_3005E10.unk_00);
+ rfu_waitREQComplete();
+ sub_80FB9E4(0, 0);
+ }
+ switch (Rfu.unk_04)
+ {
+ case 0:
+ sub_80FD4B0(&gUnknown_203ABF0);
+ Rfu.unk_04 = 1;
+ gTasks[taskId].data[1] = 1;
+ break;
+ case 1:
+ break;
+ case 17:
+ sub_80FD538(2, 0, 240, gUnknown_843EC8C);
+ sub_80FEA10(sub_80F8D20);
+ Rfu.unk_04 = 18;
+ break;
+ case 18:
+ break;
+ case 13:
+ if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, sizeof(Rfu.unk_4c)) == 0)
+ {
+ Rfu.unk_0c = 0;
+ DestroyTask(taskId);
+ if (gTasks[taskId].data[7])
+ {
+ CreateTask(sub_80FACF0, 1);
+ }
+ else
+ {
+ CreateTask(sub_80FA834, 5);
+ }
+ }
+ break;
+ case 14:
+ sub_80FD760(0);
+ Rfu.unk_04 = 15;
+ break;
+ case 15:
+ break;
+ case 16:
+ Rfu.unk_cdb = 0;
+ sub_80FEA10(sub_80F8DA8);
+ sub_80FAFE0(1);
+ sub_80F8AA4();
+ sub_80F8AEC();
+ Rfu.unk_04 = 20;
+ gTasks[taskId].data[1] = 8;
+ Rfu.unk_0c = 1;
+ CreateTask(sub_80FA834, 5);
+ Rfu.unk_ce8 = 1;
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80F8CFC(void)
+{
+ sub_80FD538(1, 0, 240, gUnknown_843EC8C);
+}
+
+void sub_80F8D14(void)
+{
+ sub_80FD760(FALSE);
+}
+
+static void sub_80F8D20(u16 unused)
+{
+ s32 i;
+
+ for (i = 0; i < 14; i++)
+ {
+ Rfu.unk_4c[i] = 0;
+ }
+ rfu_REQ_recvData();
+ rfu_waitREQComplete();
+ if (gRfuSlotStatusUNI[Rfu.unk_c3e]->recv.newDataFlag)
+ {
+ Rfu.unk_cd0++;
+ sub_80FC588(&Rfu.unk_124, Rfu.unk_c3f);
+ gUnknown_203AC08.unk_06++;
+ sub_80F906C();
+ rfu_UNI_readySendData(Rfu.unk_c3e);
+ rfu_UNI_clearRecvNewDataFlag(Rfu.unk_c3e);
+ }
+ LinkRfu_REQ_SendData_HandleParentRelationship(TRUE);
+}
+
+static void sub_80F8DA8(u16 unused)
+{
+ Rfu.unk_cdb = 1;
+}
+
+void sub_80F8DC0(void)
+{
+ u8 i;
+
+ if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
+ return;
+
+ sub_80FD52C();
+ if (Rfu.unk_0c == 1)
+ {
+ if (FuncIsActiveTask(sub_80F8738) == TRUE)
+ {
+ DestroyTask(Rfu.unk_67);
+ sub_80F85F8();
+ }
+ }
+ else if (Rfu.unk_0c == 0)
+ {
+ if (FuncIsActiveTask(sub_80F893C) == TRUE)
+ {
+ DestroyTask(Rfu.unk_67);
+ sub_80F85F8();
+ }
+ }
+ else if (Rfu.unk_0c == 2)
+ {
+ if (FuncIsActiveTask(sub_80F8B34) == TRUE)
+ {
+ DestroyTask(Rfu.unk_67);
+ sub_80F85F8();
+ }
+ }
+ for (i = 0; i < NELEMS(gUnknown_843ED88); i++)
+ {
+ if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE)
+ {
+ DestroyTask(FindTaskIdByFunc(gUnknown_843ED88[i]));
+ }
+ }
+}
+
+static void sub_80F8E74(void)
+{
+ if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
+ return;
+ Rfu.unk_67 = CreateTask(sub_80F8738, 1);
+}
+
+static bool8 sub_80F8EA4(void)
+{
+ if (Rfu.unk_04 == 7 && Rfu.unk_ccd)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_80F8ECC(void)
+{
+ if (Rfu.unk_04 == 7 && !sub_80FD610(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240))
+ {
+ Rfu.unk_04 = 9;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80F8F10(void)
+{
+ if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
+ return;
+ Rfu.unk_67 = CreateTask(sub_80F893C, 1);
+}
+
+bool8 sub_80F8F40(void)
+{
+ if (gUnknown_3005E10.unk_00)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80F8F5C(void)
+{
+ Rfu.unk_04 = 4;
+ Rfu.unk_ce7 = gUnknown_3005E10.unk_00;
+}
+
+bool32 sub_80F8F7C(bool32 a0)
+{
+ if (Rfu.unk_04 == 17 || a0)
+ {
+ Rfu.unk_04 = 18;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80F8FA0(void)
+{
+ Rfu.unk_04 = 14;
+}
+
+static void sub_80F8FAC(u8 a0)
+{
+ u8 i;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (a0 & 1)
+ {
+ rfu_UNI_readySendData(i);
+ break;
+ }
+ a0 >>= 1;
+ }
+}
+
+static void sub_80F8FD4(void)
+{
+ s32 i, j;
+
+ for (i = 0; i < 5; i++)
+ {
+ struct UnkRfuStruct_2 *ptr = &Rfu;
+ for (j = 0; j < 7; j++)
+ {
+ ptr->unk_c87[i][j][1] = gRecvCmds[i][j] >> 8;
+ ptr->unk_c87[i][j][0] = gRecvCmds[i][j];
+ }
+ }
+ CpuFill16(0, gRecvCmds, sizeof gRecvCmds);
+}
+
+static void sub_80F9038(void)
+{
+ s32 i;
+ for (i = 0; i < 7; i++)
+ {
+ gRecvCmds[0][i] = gSendCmd[i];
+ }
+ for (i = 0; i < 7; i++)
+ {
+ gSendCmd[i] = 0;
+ }
+}
+
+static void sub_80F906C(void)
+{
+ if (Rfu.unk_c3c)
+ {
+ u8 r2 = sub_80FC888(&Rfu.unk_c1c, Rfu.unk_4c);
+ if (Rfu.unk_c1c.unk_1e == 0)
+ {
+ Rfu.unk_c3c = 0;
+ }
+ if (r2)
+ {
+ return;
+ }
+ }
+ if (Rfu.unk_c3c == 0)
+ {
+ sub_80FC79C(&Rfu.unk_9e8, Rfu.unk_4c);
+ sub_80FC828(&Rfu.unk_c1c, Rfu.unk_4c);
+ }
+}
+
+bool32 IsRfuRecvQueueEmpty(void)
+{
+ s32 i;
+ s32 j;
+
+ if (gRfuLinkStatus->sendSlotUNIFlag == 0)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 7; j++)
+ {
+ if (gRecvCmds[i][j] != 0)
+ {
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}
+
+static bool32 sub_80F911C(void)
+{
+ if (Rfu.unk_04 < 20)
+ {
+ rfu_REQ_recvData();
+ rfu_waitREQComplete();
+ LinkRfu_REQ_SendData_HandleParentRelationship(FALSE);
+ }
+ else
+ {
+ Rfu.unk_cdb = 0;
+ if ((Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag) == Rfu.unk_ce2 && (Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag))
+ {
+ if (!Rfu.unk_cdc)
+ {
+ if (Rfu.unk_ce3)
+ {
+ sub_80FBCF8(Rfu.unk_ce3);
+ Rfu.unk_ce3 = 0;
+ if (Rfu.unk_ce4 == 1)
+ {
+ sub_80FB9E4(2, 0x8000);
+ sub_80FB0E8(0x8000);
+ return FALSE;
+ }
+ if (!gUnknown_3005E10.unk_00)
+ {
+ sub_80F8DC0();
+ gReceivedRemoteLinkPlayers = 0;
+ return FALSE;
+ }
+ }
+ sub_80F8FD4();
+ rfu_UNI_readySendData(Rfu.unk_cda);
+ LinkRfu_REQ_SendData_HandleParentRelationship(TRUE);
+ }
+ else
+ {
+ rfu_REQ_PARENT_resumeRetransmitAndChange();
+ }
+ Rfu.unk_0e = 1;
+ }
+ }
+ return FALSE;
+}
+
+static bool32 sub_80F9204(void)
+{
+ u16 i;
+ u16 flags;
+ u8 r0;
+ u16 j;
+ u8 retval;
+
+ if (Rfu.unk_04 >= 20 && Rfu.unk_0e == 1)
+ {
+ rfu_waitREQComplete();
+ while (Rfu.unk_cdb == 0)
+ {
+ if (Rfu.unk_ee != 0)
+ {
+ return FALSE;
+ }
+ }
+ rfu_REQ_recvData();
+ rfu_waitREQComplete();
+ if ((gUnknown_3005E10.unk_03 & Rfu.unk_ce2) == Rfu.unk_ce2)
+ {
+ Rfu.unk_cdc = 0;
+ gUnknown_203AC08.unk_06++;
+ flags = gUnknown_3005E10.unk_00;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (flags & 1)
+ {
+ if (Rfu.unk_14[i][1])
+ {
+ if (Rfu.unk_cee[i] != 0xFF && (Rfu.unk_14[i][0] >> 5) != ((Rfu.unk_cee[i] + 1) & 7))
+ {
+ if (++Rfu.unk_cea[i] > 4)
+ sub_80FB0E8(0x8100);
+ }
+ else
+ {
+ Rfu.unk_cee[i] = Rfu.unk_14[i][0] / 32;
+ Rfu.unk_cea[i] = 0;
+ Rfu.unk_14[i][0] &= 0x1f;
+ r0 = Rfu.unk_cde[i];
+ for (j = 0; j < 7; j++)
+ {
+ gRecvCmds[r0][j] = (Rfu.unk_14[i][(j << 1) + 1] << 8) | Rfu.unk_14[i][(j << 1) + 0];
+ Rfu.unk_14[i][(j << 1) + 1] = 0;
+ Rfu.unk_14[i][(j << 1) + 0] = 0;
+ }
+ }
+ }
+ rfu_UNI_clearRecvNewDataFlag(i);
+ }
+ flags >>= 1;
+ }
+ sub_80F9038();
+ sub_80F9868(0);
+ CallRfuFunc();
+ if (Rfu.unk_ce5 && !Rfu.unk_cd9)
+ {
+ gUnknown_203AC08.unk_0e = 0;
+ rfu_clearSlot(3, Rfu.unk_cda);
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((Rfu.unk_ce5 >> i) & 1)
+ {
+ rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i]));
+ }
+ }
+ sub_80F887C(Rfu.unk_ce2, Rfu.unk_ce2 | Rfu.unk_ce5);
+ Rfu.unk_ce9 = Rfu.unk_ce5;
+ Rfu.unk_ce2 |= Rfu.unk_ce5;
+ Rfu.unk_ce5 = 0;
+ rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, sizeof(Rfu.unk_c87));
+ Rfu.unk_cda = sub_80F886C(Rfu.unk_ce2);
+ CreateTask(sub_80FAA94, 0);
+ }
+ }
+ else
+ {
+ Rfu.unk_cdc = 1;
+ Rfu.unk_0e = 0;
+ }
+ Rfu.unk_0e = 0;
+ }
+ retval = Rfu.unk_cdc;
+ return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE;
+}
+
+static void sub_80F94BC(u16 *a0, u8 *a1)
+{
+ s32 i;
+
+ if (a0[0])
+ {
+ a0[0] |= (Rfu.unk_102 << 5);
+ Rfu.unk_102 = (Rfu.unk_102 + 1) & 7;
+ for (i = 0; i < 7; i++)
+ {
+ a1[2 * i + 1] = a0[i] >> 8;
+ a1[2 * i + 0] = a0[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 14; i++)
+ a1[i] = 0;
+ }
+}
+
+static bool32 sub_80F9514(void)
+{
+ u8 i;
+ u8 j;
+ u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
+ u8 sp48[2 * (CMD_LENGTH - 1)];
+ u8 switchval;
+
+ sub_80FC6E8(&Rfu.unk_124, sp00);
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ for (j = 0; j < CMD_LENGTH - 1; j++)
+ {
+ gRecvCmds[i][j] = (sp00[i * 14 + (j << 1) + 1] << 8) | sp00[i * 14 + (j << 1) + 0];
+ }
+ }
+ sub_80F9868(0);
+ if (gUnknown_3005E10.unk_02 == 0 && Rfu.unk_ce4)
+ {
+ rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
+ rfu_waitREQComplete();
+ switchval = sub_80FB9F4();
+ if (switchval != 1 && switchval != 6 && switchval != 9)
+ sub_80FB9E4(2, 0x9000);
+ rfu_clearAllSlot();
+ gReceivedRemoteLinkPlayers = FALSE;
+ Rfu.RfuFunc = NULL;
+ if (Rfu.unk_ce4 == 1)
+ {
+ sub_80FB9E4(2, 0x9000);
+ sub_80FB0E8(0x9000);
+ }
+ gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0;
+ Rfu.unk_ce4 = 0;
+ }
+ if (Rfu.unk_cd0)
+ {
+ Rfu.unk_cd0--;
+ CallRfuFunc();
+ sub_80F94BC(gSendCmd, sp48);
+ sub_80FC63C(&Rfu.unk_9e8, sp48);
+ for (i = 0; i < CMD_LENGTH - 1; i++)
+ gSendCmd[i] = 0;
+ }
+ return IsRfuRecvQueueEmpty();
+}
+
+static void sub_80F965C(u8 unused, u32 flags)
+{
+ s32 i, j;
+
+ const u8 *r10 = Rfu.unk_6c.unk_04;
+ for (i = 0; i < Rfu.unk_6c.unk_02; i++)
+ {
+ if (!(flags & 1))
+ {
+ gUnknown_3002008[0] = (~0x76ff) | i;
+ for (j = 0; j < 7; j++)
+ {
+ gUnknown_3002008[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0];
+ }
+ for (j = 0; j < 7; j++)
+ {
+ gUnknown_3001FF8[2 * j + 1] = gUnknown_3002008[j] >> 8;
+ gUnknown_3001FF8[2 * j + 0] = gUnknown_3002008[j];
+
+ j++;j--; // Needed to match;
+ }
+ sub_80FC63C(&Rfu.unk_9e8, gUnknown_3001FF8);
+ Rfu.unk_6c.unk_0c |= (1 << i);
+ }
+ flags >>= 1;
+ }
+}
+
+void Rfu_SetBlockReceivedFlag(u8 a0)
+{
+ if (Rfu.unk_0c == 1 && a0)
+ Rfu.unk_61[a0] = 1;
+ else
+ Rfu.unk_5c[a0] = 1;
+}
+
+void Rfu_ResetBlockReceivedFlag(u8 a0)
+{
+ Rfu.unk_5c[a0] = 0;
+ Rfu.unk_80[a0].unk_12 = 0;
+}
+
+static u8 sub_80F9770(const u8 *a0)
+{
+ u8 i;
+
+ if (Rfu.unk_0c == 1)
+ return FALSE;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ Rfu.unk_cde[i] = a0[i];
+ }
+ return a0[Rfu.unk_c3e];
+}
+
+static void rfu_func_080F97B8(void)
+{
+ static u8 gUnknown_3001188;
+ if (gReceivedRemoteLinkPlayers
+ && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
+ && gLinkTransferringData != TRUE)
+ {
+ gUnknown_3001188++;
+ gHeldKeyCodeToSend |= (gUnknown_3001188 << 8);
+ sub_80F9D04(0xbe00);
+ }
+}
+
+struct GFtgtGname *sub_80F9800(void)
+{
+ return &gUnknown_3005440;
+}
+
+bool32 IsSendingKeysToRfu(void)
+{
+ return Rfu.RfuFunc == rfu_func_080F97B8;
+}
+
+void sub_80F9828(void)
+{
+ AGB_ASSERT_EX(Rfu.RfuFunc == NULL, ABSPATH("rfu.c"), 1473);
+ Rfu.RfuFunc = rfu_func_080F97B8;
+}
+
+void Rfu_set_zero(void)
+{
+ Rfu.RfuFunc = NULL;
+}
+
+static void sub_80F9868(u8 unused)
+{
+ u16 i;
+ u16 j;
+
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ switch (gRecvCmds[i][0] & 0xff00)
+ {
+ case 0x7800:
+ if (Rfu.unk_0c == 0 && gReceivedRemoteLinkPlayers != 0)
+ return;
+ // fallthrough
+ case 0x7700:
+ if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ Rfu.playerCount = gRecvCmds[i][1];
+ Rfu.unk_cce = sub_80F9770((u8 *)(gRecvCmds[i] + 2));
+ }
+ break;
+ case 0x8800:
+ if (Rfu.unk_80[i].unk_12 == 0)
+ {
+ Rfu.unk_80[i].unk_00 = 0;
+ Rfu.unk_80[i].unk_02 = gRecvCmds[i][1];
+ Rfu.unk_80[i].unk_11 = gRecvCmds[i][2];
+ Rfu.unk_80[i].unk_08 = 0;
+ Rfu.unk_80[i].unk_12 = 1;
+ Rfu.unk_5c[i] = 0;
+ }
+ break;
+ case 0x8900:
+ if (Rfu.unk_80[i].unk_12 == 1)
+ {
+ Rfu.unk_80[i].unk_00 = gRecvCmds[i][0] & 0xff;
+ Rfu.unk_80[i].unk_08 |= (1 << Rfu.unk_80[i].unk_00);
+ for (j = 0; j < 6; j++)
+ gBlockRecvBuffer[i][Rfu.unk_80[i].unk_00 * 6 + j] = gRecvCmds[i][j + 1];
+ if (Rfu.unk_80[i].unk_08 == gUnknown_843EBD4[Rfu.unk_80[i].unk_02])
+ {
+ Rfu.unk_80[i].unk_12 = 2;
+ Rfu_SetBlockReceivedFlag(i);
+ if (sub_80F9800()->unk_0a_0 == 0x45 && gReceivedRemoteLinkPlayers != 0 && Rfu.unk_0c == 0)
+ sub_80FAA58(gBlockRecvBuffer);
+ }
+ }
+ break;
+ case 0xa100:
+ Rfu_InitBlockSend(gUnknown_843EC64[gRecvCmds[i][1]].buffer, (u16)gUnknown_843EC64[gRecvCmds[i][1]].size);
+ break;
+ case 0x5f00:
+ Rfu.unk_e4[i] = 1;
+ break;
+ case 0x6600:
+ if (Rfu.unk_100 == gRecvCmds[i][1])
+ Rfu.unk_e9[i] = 1;
+ break;
+ case 0xed00:
+ if (Rfu.unk_0c == 0)
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ if (gRecvCmds[i][1] & gRfuLinkStatus->connSlotFlag)
+ {
+ gReceivedRemoteLinkPlayers = 0;
+ sub_80FEB14();
+ Rfu.unk_ce4 = gRecvCmds[i][2];
+ }
+ Rfu.playerCount = gRecvCmds[i][3];
+ sub_80FA9D0(gRecvCmds[i][1]);
+ }
+ }
+ else
+ {
+ sub_80F9D04(0xee00);
+ gSendCmd[1] = gRecvCmds[i][1];
+ gSendCmd[2] = gRecvCmds[i][2];
+ gSendCmd[3] = gRecvCmds[i][3];
+ }
+ break;
+ case 0xee00:
+ if (Rfu.unk_0c == 1)
+ {
+ Rfu.unk_ce3 |= gRecvCmds[i][1];
+ Rfu.unk_ce4 = gRecvCmds[i][2];
+ sub_80FA9D0(gRecvCmds[i][1]);
+ }
+ break;
+ case 0xbe00:
+ gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
+ break;
+ }
+ if (Rfu.unk_0c == 1 && Rfu.unk_61[i])
+ {
+ if (Rfu.unk_61[i] == 4)
+ {
+ Rfu.unk_5c[i] = 1;
+ Rfu.unk_61[i] = 0;
+ }
+ else
+ Rfu.unk_61[i]++;
+ }
+ }
+}
+
+static bool8 sub_80F9C50(void)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (Rfu.unk_80[i].unk_12)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_80F9C78(void)
+{
+ s32 i;
+
+ for (i = 0; i < Rfu.playerCount; i++)
+ {
+ if (Rfu.unk_80[i].unk_12 != 2 || Rfu.unk_5c[i] != 1)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data)
+{
+ data->unk_00 = 0;
+ data->unk_02 = 0;
+ data->unk_04 = NULL;
+ data->unk_08 = 0;
+ data->unk_10 = 0;
+ data->unk_11 = 0;
+ data->unk_12 = 0;
+}
+
+u8 Rfu_GetBlockReceivedStatus(void)
+{
+ u8 flags = 0;
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (Rfu.unk_80[i].unk_12 == 2 && Rfu.unk_5c[i] == 1)
+ {
+ flags |= (1 << i);
+ }
+ }
+ return flags;
+}
+
+static void sub_80F9D04(u16 command)
+{
+ u8 i;
+ u8 *buff;
+ u8 tmp;
+
+ gSendCmd[0] = command;
+ switch (command)
+ {
+ case 0x8800:
+ gSendCmd[1] = Rfu.unk_6c.unk_02;
+ gSendCmd[2] = Rfu.unk_6c.unk_11 + 0x80;
+ break;
+ case 0xa100:
+ if (sub_80F9C50())
+ gSendCmd[1] = Rfu.unk_5a;
+ break;
+ case 0x7700:
+ case 0x7800:
+ tmp = Rfu.unk_ce2 ^ Rfu.unk_ce3;
+ Rfu.playerCount = gUnknown_843EC41[tmp] + 1;
+ gSendCmd[1] = Rfu.playerCount;
+ buff = (u8 *)(gSendCmd + 2);
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ buff[i] = Rfu.unk_cde[i];
+ break;
+ case 0x6600:
+ case 0x5f00:
+ gSendCmd[1] = Rfu.unk_100;
+ break;
+ case 0x2f00:
+ for (i = 0; i < 6; i++)
+ gSendCmd[1 + i] = Rfu.unk_f2[i];
+ break;
+ case 0xbe00:
+ gSendCmd[1] = gHeldKeyCodeToSend;
+ break;
+ case 0xee00:
+ break;
+ case 0xed00:
+ break;
+ }
+}
+
+void sub_80F9E2C(void *a0)
+{
+ if (gSendCmd[0] == 0 && !sub_80FBA00())
+ {
+ memcpy(Rfu.unk_f2, a0, sizeof(Rfu.unk_f2));
+ sub_80F9D04(0x2f00);
+ }
+}
+
+bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
+{
+ bool8 r4;
+ AGB_ASSERT_EX(size<=252, ABSPATH("rfu.c"), 1793);
+ if (Rfu.RfuFunc != NULL)
+ return FALSE;
+ if (gSendCmd[0] != 0)
+ return FALSE;
+ if (Rfu.unk_6c.unk_10 != 0)
+ {
+ gUnknown_203AC08.unk_83++;
+ return FALSE;
+ }
+ r4 = (size % 12) != 0;
+ Rfu.unk_6c.unk_11 = GetMultiplayerId();
+ Rfu.unk_6c.unk_10 = 1;
+ Rfu.unk_6c.unk_02 = (size / 12) + r4;
+ Rfu.unk_6c.unk_00 = 0;
+ if (size > 0x100)
+ Rfu.unk_6c.unk_04 = src;
+ else
+ {
+ if (src != gBlockSendBuffer)
+ memcpy(gBlockSendBuffer, src, size);
+ Rfu.unk_6c.unk_04 = gBlockSendBuffer;
+ }
+ sub_80F9D04(0x8800);
+ Rfu.RfuFunc = rfufunc_80F9F44;
+ Rfu.unk_5b = 0;
+ return TRUE;
+}
+
+static void rfufunc_80F9F44(void)
+{
+ if (gSendCmd[0] == 0)
+ {
+ sub_80F9D04(0x8800);
+ if (Rfu.unk_0c == 1)
+ {
+ if (++Rfu.unk_5b > 2)
+ Rfu.RfuFunc = sub_80F9FA8;
+ }
+ else
+ {
+ if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == 0x8800)
+ Rfu.RfuFunc = sub_80F9FA8;
+ }
+ }
+}
+static void sub_80F9FA8(void)
+{
+ s32 i;
+ const u8 *src = Rfu.unk_6c.unk_04;
+ gSendCmd[0] = 0x8900 | Rfu.unk_6c.unk_00;
+ for (i = 0; i < 7; i++)
+ gSendCmd[i + 1] = (src[(i << 1) + Rfu.unk_6c.unk_00 * 12 + 1] << 8) | src[(i << 1) + Rfu.unk_6c.unk_00 * 12 + 0];
+ Rfu.unk_6c.unk_00++;
+ if (Rfu.unk_6c.unk_02 <= Rfu.unk_6c.unk_00)
+ {
+ Rfu.unk_6c.unk_10 = 0;
+ Rfu.RfuFunc = rfufunc_80FA020;
+ }
+}
+
+static void rfufunc_80FA020(void)
+{
+ const u8 *src = Rfu.unk_6c.unk_04;
+ u8 mpId = GetMultiplayerId();
+ s32 i;
+ if (Rfu.unk_0c == 0)
+ {
+ gSendCmd[0] = (~0x76ff) | (Rfu.unk_6c.unk_02 - 1);
+ for (i = 0; i < 7; i++)
+ gSendCmd[i + 1] = (src[(i << 1) + (Rfu.unk_6c.unk_02 - 1) * 12 + 1] << 8) | src[(i << 1) + (Rfu.unk_6c.unk_02 - 1) * 12 + 0];
+ if ((u8)gRecvCmds[mpId][0] == Rfu.unk_6c.unk_02 - 1)
+ {
+ if (Rfu.unk_80[mpId].unk_08 != gUnknown_843EBD4[Rfu.unk_80[mpId].unk_02])
+ {
+ sub_80F965C(mpId, Rfu.unk_80[mpId].unk_08);
+ gUnknown_203AC08.unk_64++;
+ }
+ else
+ Rfu.RfuFunc = NULL;
+ }
+ }
+ else
+ Rfu.RfuFunc = NULL;
+}
+
+bool8 sub_80FA0F8(u8 a0)
+{
+ Rfu.unk_5a = a0;
+ sub_80F9D04(0xa100);
+ return TRUE;
+}
+
+static void sub_80FA114(void)
+{
+ rfu_clearAllSlot();
+ sub_80FD52C();
+ gReceivedRemoteLinkPlayers = 0;
+ Rfu.unk_ef = 1;
+ Rfu.RfuFunc = NULL;
+}
+
+static void sub_80FA140(void)
+{
+ rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
+ rfu_waitREQComplete();
+ sub_80FA114();
+}
+
+static void sub_80FA160(void)
+{
+ if (Rfu.unk_0c == 0)
+ {
+ sub_80FEB14();
+ Rfu.unk_ce4 = 2;
+ }
+ else
+ Rfu.RfuFunc = sub_80FA140;
+}
+
+void LinkRfu_FatalError(void)
+{
+ sub_80FEB14();
+ Rfu.unk_ce4 = 1;
+ Rfu.unk_ce3 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
+}
+
+static void sub_80FA1C4(void)
+{
+ s32 i;
+ u8 playerCount = Rfu.playerCount;
+ s32 count = 0;
+
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ if (Rfu.unk_e4[i])
+ count++;
+ }
+ if (count == playerCount)
+ {
+ gBattleTypeFlags &= (u16)~BATTLE_TYPE_20;
+ if (Rfu.unk_0c == 0)
+ {
+ Rfu.unk_ee = 3;
+ sub_80FA160();
+ }
+ else
+ Rfu.RfuFunc = sub_80FA160;
+ }
+}
+
+static void sub_80FA224(void)
+{
+ if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0)
+ {
+ sub_80F9D04(0x5f00);
+ Rfu.RfuFunc = sub_80FA1C4;
+ }
+}
+
+static void sub_80FA25C(u8 taskId)
+{
+ if (Rfu.RfuFunc == NULL)
+ {
+ Rfu.unk_cd9 = 1;
+ Rfu.RfuFunc = sub_80FA224;
+ DestroyTask(taskId);
+ }
+}
+
+void task_add_05_task_del_08FA224_when_no_RfuFunc(void)
+{
+ if (!FuncIsActiveTask(sub_80FA25C))
+ CreateTask(sub_80FA25C, 5);
+}
+
+static void sub_80FA2B0(void)
+{
+ u8 playerCount;
+ u8 i;
+
+ if (GetMultiplayerId() != 0)
+ {
+ if (Rfu.unk_124.unk_8c2 == 0 && Rfu.unk_fe > 0x3c)
+ {
+ sub_80F9D04(0x6600);
+ Rfu.unk_fe = 0;
+ }
+ }
+ playerCount = GetLinkPlayerCount();
+ for (i = 0; i < playerCount; i++)
+ {
+ if (Rfu.unk_e9[i] == 0)
+ break;
+ }
+ if (i == playerCount)
+ {
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ Rfu.unk_e9[i] = 0;
+ Rfu.unk_100++;
+ Rfu.RfuFunc = NULL;
+ }
+ Rfu.unk_fe++;
+}
+
+static void sub_80FA350(void)
+{
+ if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
+ {
+ sub_80F9D04(0x6600);
+ Rfu.RfuFunc = sub_80FA2B0;
+ }
+}
+
+static void sub_80FA388(void)
+{
+ u8 i;
+ u8 playerCount;
+
+ if (GetMultiplayerId() != 0)
+ {
+ if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
+ {
+ sub_80F9D04(0x6600);
+ Rfu.RfuFunc = sub_80FA2B0;
+ }
+ }
+ else
+ {
+ playerCount = GetLinkPlayerCount();
+ for (i = 1; i < playerCount; i++)
+ {
+ if (Rfu.unk_e9[i] == 0)
+ break;
+ }
+ if (i == playerCount)
+ {
+ if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
+ {
+ sub_80F9D04(0x6600);
+ Rfu.RfuFunc = sub_80FA350;
+ }
+ }
+ }
+}
+
+void sub_80FA42C(void)
+{
+ if (Rfu.RfuFunc == NULL)
+ {
+ Rfu.RfuFunc = sub_80FA388;
+ Rfu.unk_fe = 0;
+ }
+}
+
+bool32 sub_80FA44C(u32 a0)
+{
+ s32 i;
+ for (i = 0; gUnknown_843EC8C[i] != a0; i++)
+ {
+ if (gUnknown_843EC8C[i] == 0xFFFF)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+u8 sub_80FA484(bool32 a0)
+{
+ if (!a0)
+ return sub_80FEA34(0, 0);
+ sub_80FEA34(1, 0x258);
+ return 0;
+}
+
+void sub_80FA4A8(void)
+{
+ Rfu.unk_cd9 = 1;
+ sub_80FD760(FALSE);
+}
+
+u8 LinkRfu_GetMultiplayerId(void)
+{
+ if (Rfu.unk_0c == 1)
+ return 0;
+ return Rfu.unk_cce;
+}
+
+u8 GetRfuPlayerCount(void)
+{
+ return Rfu.playerCount;
+}
+
+bool8 IsLinkRfuTaskFinished(void)
+{
+ return Rfu.RfuFunc != NULL ? FALSE : TRUE;
+}
+
+static void CallRfuFunc(void)
+{
+ if (Rfu.RfuFunc != NULL)
+ Rfu.RfuFunc();
+}
+
+static bool8 sub_80FA528(void)
+{
+ s32 i;
+ bool8 retval = FALSE;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (Rfu.unk_cd1[i] < 5 || Rfu.unk_cd1[i] > 6)
+ {
+ if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
+ {
+ if (Rfu.unk_cd5[i] == 8)
+ {
+ Rfu.unk_cd1[i] = 9;
+ Rfu.unk_cd5[i] = 10;
+ rfu_clearSlot(8, i);
+ rfu_NI_setSendData(1 << i, 8, Rfu.unk_cd1 + i, 1);
+ retval = TRUE;
+ }
+
+ }
+ else if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_FAILED)
+ {
+ rfu_clearSlot(8, i);
+ }
+ }
+ }
+ return retval;
+}
+
+bool32 sub_80FA5D4(void)
+{
+ u8 flags = 0;
+ s32 i;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (Rfu.unk_cd5[i] == 11)
+ {
+ flags |= (1 << i);
+ Rfu.unk_cd5[i] = 0;
+ }
+ }
+ if (flags)
+ {
+ rfu_REQ_disconnect(flags);
+ rfu_waitREQComplete();
+ }
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (Rfu.unk_cd5[i] == 10 || Rfu.unk_cd5[i] == 11)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_80FA634(u16 a0, const u8 *a1)
+{
+ u8 r1 = sub_80FBC70(a1, a0);
+ if (r1 == 0xFF)
+ return TRUE;
+ if (Rfu.unk_cd1[r1] == 9)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_80FA670(u8 a0, u16 a1, const u8 *a2)
+{
+ u8 r4 = sub_80FBC70(a2, a1);
+ Rfu.unk_cd1[r4] = a0;
+ rfu_clearSlot(4, r4);
+ rfu_NI_setSendData(1 << r4, 8, Rfu.unk_cd1 + r4, 1);
+}
+
+void sub_80FA6BC(void)
+{
+ Rfu.unk_c85 = 8;
+ rfu_clearSlot(4, Rfu.unk_c3e);
+ rfu_NI_setSendData(1 << Rfu.unk_c3e, 8, &Rfu.unk_c85, 1);
+}
+
+u32 sub_80FA6FC(u16 a0, const u8 *a1)
+{
+ u8 r0 = sub_80FBC70(a1, a0);
+ if (r0 == 0xFF)
+ return 2;
+ if (gRfuSlotStatusNI[r0]->send.state == 0)
+ return 1;
+ return 0;
+}
+
+static void sub_80FA738(void)
+{
+ s32 i;
+
+ sub_80FA528();
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_SUCCESS || gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_FAILED)
+ {
+ if (Rfu.unk_cd5[i] == 10)
+ Rfu.unk_cd5[i] = 11;
+ rfu_clearSlot(4, i);
+ }
+ }
+}
+
+static s32 sub_80FA788(void)
+{
+ s32 retval = 0;
+ if (Rfu.unk_c85 == 8)
+ {
+ if (gRfuSlotStatusNI[Rfu.unk_c3e]->send.state == SLOT_STATE_SEND_SUCCESS || gRfuSlotStatusNI[Rfu.unk_c3e]->send.state == SLOT_STATE_SEND_FAILED)
+ rfu_clearSlot(4, Rfu.unk_c3e);
+ }
+ if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_SUCCESS || gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
+ {
+ rfu_clearSlot(8, Rfu.unk_c3e);
+ sub_80FB9E4(Rfu.unk_c86, 0);
+ retval = Rfu.unk_c86;
+ }
+ else if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_FAILED)
+ {
+ rfu_clearSlot(8, Rfu.unk_c3e);
+ retval = 6;
+ }
+ return retval;
+}
+
+static void sub_80FA834(u8 taskId)
+{
+ s32 i;
+
+ if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
+ {
+ Rfu.unk_ce8 = 0;
+ DestroyTask(taskId);
+ }
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (sub_80F9C50())
+ {
+ ResetBlockReceivedFlags();
+ sub_800B0B4();
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (Rfu.unk_0c == 1)
+ {
+ if (gReceivedRemoteLinkPlayers)
+ sub_80F9D04(0x7800);
+ else
+ sub_80F9D04(0x7700);
+ gTasks[taskId].data[0] = 101;
+ }
+ else
+ gTasks[taskId].data[0] = 2;
+ break;
+ case 101:
+ if (gSendCmd[0] == 0)
+ gTasks[taskId].data[0] = 2;
+ break;
+ case 2:
+ if (Rfu.playerCount)
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (Rfu.unk_0c == 1)
+ {
+ if (sub_80F9C50())
+ {
+ Rfu.unk_5a = 0;
+ sub_80F9D04(0xa100);
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ if (sub_80F9C78())
+ gTasks[taskId].data[0]++;
+ break;
+ case 5:
+ for (i = 0; i < Rfu.playerCount; i++)
+ {
+ sub_800B110(i);
+ Rfu_ResetBlockReceivedFlag(i);
+ }
+ gTasks[taskId].data[0]++;
+ break;
+ case 6:
+ DestroyTask(taskId);
+ gReceivedRemoteLinkPlayers = 1;
+ Rfu.unk_ce8 = 0;
+ sub_80FEA34(1, 0x258);
+ if (Rfu.unk_ce6)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((Rfu.unk_ce6 >> i) & 1)
+ {
+ Rfu.unk_ce5 = 1 << i;
+ Rfu.unk_ce6 ^= (1 << i);
+ }
+ }
+ }
+ break;
+ }
+}
+
+static void sub_80FA9D0(u16 a0)
+{
+ s32 i;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((a0 >> i) & 1)
+ Rfu.unk_cde[i] = 0;
+ }
+}
+
+static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0)
+{
+ s32 i;
+ Rfu.playerCount = a0->unk_0f;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ Rfu.unk_cde[i] = a0->unk_10[i];
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ gLinkPlayers[i] = a0->unk_14[i];
+ sub_800B284(gLinkPlayers + i);
+ }
+}
+
+static void sub_80FAA58(void *a0)
+{
+ if (strcmp("PokemonSioInfo", ((struct UnkRfuStruct_8010A14 *)a0)->unk_00) == 0)
+ {
+ sub_80FA9FC(a0);
+ CpuFill16(0, a0, sizeof(struct UnkRfuStruct_8010A14));
+ ResetBlockReceivedFlag(0);
+ }
+}
+
+static void sub_80FAA94(u8 taskId)
+{
+ s32 i;
+ struct LinkPlayerBlock *r2;
+ struct UnkRfuStruct_8010A14 *r5;
+ u8 r4 = Rfu.unk_cde[gUnknown_843EC38[Rfu.unk_ce9]];
+ if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
+ {
+ Rfu.unk_ce8 = 0;
+ DestroyTask(taskId);
+ }
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gSendCmd[0] == 0)
+ {
+ ResetBlockReceivedFlag(r4);
+ sub_80F9D04(0x7800);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (gSendCmd[0] == 0)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if ((GetBlockReceivedStatus() >> r4) & 1)
+ {
+ ResetBlockReceivedFlag(r4);
+ r2 = (struct LinkPlayerBlock *)gBlockRecvBuffer[r4];
+ gLinkPlayers[r4] = r2->linkPlayer;
+ sub_800B284(gLinkPlayers + r4);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 3:
+ r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
+ memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo"));
+ r5->unk_0f = Rfu.playerCount;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ r5->unk_10[i] = Rfu.unk_cde[i];
+ memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
+ gTasks[taskId].data[0]++;
+ // fallthrough
+ case 4:
+ r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
+ r5->unk_0f = Rfu.playerCount;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ r5->unk_10[i] = Rfu.unk_cde[i];
+ memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
+ if (SendBlock(0, gBlockSendBuffer, 0xa0))
+ gTasks[taskId].data[0]++;
+ break;
+ case 5:
+ if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1)
+ {
+ CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14));
+ ResetBlockReceivedFlag(0);
+ Rfu.unk_ce8 = 0;
+ if (Rfu.unk_ce6)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((Rfu.unk_ce6 >> i) & 1)
+ {
+ Rfu.unk_ce5 = 1 << i;
+ Rfu.unk_ce6 ^= (1 << i);
+ Rfu.unk_ce8 = 1;
+ break;
+ }
+ }
+ }
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80FACF0(u8 taskId)
+{
+ if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
+ DestroyTask(taskId);
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (Rfu.playerCount)
+ {
+ sub_800B0B4();
+ SendBlock(0, gBlockSendBuffer, sizeof(struct LinkPlayerBlock));
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (IsLinkTaskFinished())
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (GetBlockReceivedStatus() & 1)
+ {
+ sub_80FA9FC((const struct UnkRfuStruct_8010A14 *)gBlockRecvBuffer);
+ ResetBlockReceivedFlag(0);
+ gReceivedRemoteLinkPlayers = 1;
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80FAD98(void)
+{
+ if (Rfu.unk_ee == 1 && gUnknown_3005E10.unk_02 == 0)
+ {
+ if (gMain.callback2 == c2_mystery_gift_e_reader_run)
+ gWirelessCommType = 2;
+ SetMainCallback2(CB2_LinkError);
+ gMain.savedCallback = CB2_LinkError;
+ sub_800ACBC((Rfu.unk_0a << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.unk_124.unk_8c2, Rfu.unk_9e8.unk_232, sub_80FB9F4() == 2);
+ Rfu.unk_ee = 2;
+ CloseLink();
+ }
+ else if (Rfu.unk_9e8.unk_233 == 1 || Rfu.unk_124.unk_8c3 == 1)
+ {
+ if (gUnknown_3005E10.unk_02)
+ sub_80FEB14();
+ sub_80FB9E4(1, 0x7000);
+ sub_80FB0E8(0x7000);
+ }
+}
+
+static void rfu_REQ_recvData_then_sendData(void)
+{
+ if (gUnknown_3005E10.unk_06 == 1)
+ {
+ rfu_REQ_recvData();
+ rfu_waitREQComplete();
+ LinkRfu_REQ_SendData_HandleParentRelationship(0);
+ }
+}
+
+bool32 sub_80FAE94(void)
+{
+ bool32 retval = FALSE;
+ Rfu.unk_ccd = 0;
+ sub_80FDA30(Random());
+ if (Rfu.unk_ef == 0)
+ {
+ switch (Rfu.unk_0c)
+ {
+ case 1:
+ sub_80F911C();
+ break;
+ case 0:
+ retval = sub_80F9514();
+ break;
+ case 2:
+ rfu_REQ_recvData_then_sendData();
+ break;
+ }
+ }
+ return retval;
+}
+
+bool32 sub_80FAEF0(void)
+{
+ bool32 retval = FALSE;
+ if (Rfu.unk_ef == 0)
+ {
+ if (Rfu.unk_0c == 1)
+ retval = sub_80F9204();
+ sub_80FAD98();
+ }
+ return retval;
+}
+
+static void sub_80FAF1C(void)
+{
+ StringCopy(gUnknown_3005E00, gSaveBlock2Ptr->playerName);
+}
+
+void sub_80FAF34(void)
+{
+ memset(&gUnknown_3005440, 0, RFU_GAME_NAME_LENGTH);
+ sub_80FCB54(&gUnknown_3005440, 0, 0, 0);
+}
+
+void sub_80FAF58(u8 a0, u32 a1, u32 a2)
+{
+ sub_80FCB54(&gUnknown_3005440, a0, a2, a1);
+}
+
+void sub_80FAF74(bool32 a0, bool32 a1)
+{
+ gUnknown_3005440.unk_00.unk_00_4 = a0;
+ gUnknown_3005440.unk_00.unk_00_5 = a1;
+}
+
+void sub_80FAFA0(u32 type, u32 species, u32 level)
+{
+ gUnknown_3005440.type = type;
+ gUnknown_3005440.species = species;
+ gUnknown_3005440.level = level;
+}
+
+void sub_80FAFE0(u8 a0)
+{
+ gUnknown_3005440.unk_0a_7 = a0;
+ rfu_REQ_configGameData(0, 2, (void *)&gUnknown_3005440, gUnknown_3005E00);
+}
+
+void sub_80FB008(u8 a0, u32 a1, u32 a2)
+{
+ if (a0)
+ sub_80FAF58(a0, a1, a2);
+ rfu_REQ_configGameData(0, 2, (void *)&gUnknown_3005440, gUnknown_3005E00);
+}
+
+void sub_80FB030(u32 a0)
+{
+ s32 i;
+ u32 r5;
+ u32 r7;
+ s32 r8;
+
+ if (sub_80F9800()->unk_0a_0 == 0x45)
+ {
+ r5 = 0;
+ r7 = 0;
+ r8 = Rfu.unk_ce2 ^ Rfu.unk_ce3;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((r8 >> i) & 1)
+ {
+ r7 |= ((0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)) << (r5 << 3));
+ r5++;
+ if (r5 == a0 - 1)
+ break;
+ }
+ }
+ sub_80FB008(0x45, r7, 0);
+ }
+}
+
+static void sub_80FB0E8(u32 a0)
+{
+ if (Rfu.unk_ee == 0)
+ {
+ Rfu.unk_10 = gUnknown_3005E10.unk_14;
+ Rfu.unk_12 = gUnknown_3005E10.unk_16;
+ Rfu.unk_0a = a0;
+ Rfu.unk_ee = 1;
+ }
+}
+
+static void sub_80FB118(void)
+{
+ Rfu.unk_ee = 0;
+}
+
+void sub_80FB128(bool32 a0)
+{
+ if (!a0)
+ Rfu.unk_ee = 0;
+ else
+ Rfu.unk_ee = 4;
+}
+
+static void sub_80FB154(void)
+{
+ sub_80FBE20(gUnknown_3005E10.unk_00, 1);
+ Rfu.RfuFunc = NULL;
+}
+
+static void sub_80FB174(void)
+{
+ Rfu.RfuFunc = sub_80FB154;
+}
+
+static void sub_80FB184(u8 a0, u8 unused1)
+{
+ u8 i;
+ u8 r6 = 0;
+ switch (a0)
+ {
+ case 0x00:
+ Rfu.unk_04 = 2;
+ break;
+ case 0x10:
+ break;
+ case 0x11:
+ sub_80FB564(gUnknown_3005E10.unk_14);
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gUnknown_3005E10.unk_14 >> i) & 1)
+ {
+ struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname;
+ if (structPtr->unk_0a_0 == sub_80F9800()->unk_0a_0)
+ {
+ Rfu.unk_cd1[i] = 0;
+ Rfu.unk_cd5[i] = 0;
+ rfu_setRecvBuffer(0x20, i, Rfu.unk_cd5 + i, 1);
+ }
+ else
+ {
+ r6 |= (1 << i);
+ }
+ }
+ }
+ if (r6)
+ {
+ rfu_REQ_disconnect(r6);
+ rfu_waitREQComplete();
+ }
+ break;
+ case 0x12:
+ break;
+ case 0x13:
+ break;
+ case 0x14:
+ if (Rfu.unk_ce7 != gUnknown_3005E10.unk_00)
+ {
+ rfu_REQ_disconnect(Rfu.unk_ce7 ^ gUnknown_3005E10.unk_00);
+ rfu_waitREQComplete();
+ }
+ Rfu.unk_04 = 0x11;
+ break;
+ case 0x31:
+ Rfu.unk_f0 = 1;
+ break;
+ case 0x32:
+ Rfu.unk_f0 = 3;
+ break;
+ case 0x30:
+ case 0x33:
+ Rfu.unk_f0 = 4;
+ Rfu.unk_ce2 &= ~gUnknown_3005E10.unk_14;
+ if (gReceivedRemoteLinkPlayers == 1)
+ {
+ if (Rfu.unk_ce2 == 0)
+ sub_80FB0E8(a0);
+ else
+ sub_80FB174();
+ }
+ sub_80FB9E4(2, a0);
+ break;
+ case 0x34:
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xf3:
+ sub_80FB9E4(1, a0);
+ sub_80FB0E8(a0);
+ Rfu.unk_ef = 1;
+ break;
+ case 0xf0 ... 0xf2:
+ case 0xff:
+ sub_80FB0E8(a0);
+ sub_80FB9E4(1, a0);
+ Rfu.unk_cdb = 1;
+ break;
+ }
+}
+
+static const u8 unref_843EDF3[] = _(" あきと");
+
+static void sub_80FB37C(u8 a0, u8 unused1)
+{
+ switch (a0)
+ {
+ case 0x00:
+ Rfu.unk_04 = 6;
+ break;
+ case 0x20:
+ Rfu.unk_ccd = gUnknown_3005E10.unk_14;
+ break;
+ case 0x21:
+ break;
+ case 0x22:
+ Rfu.unk_c3e = gUnknown_3005E10.unk_14;
+ break;
+ case 0x23:
+ sub_80FB9E4(2, a0);
+ break;
+ case 0x24:
+ Rfu.unk_04 = 11;
+ Rfu.unk_c85 = 0;
+ Rfu.unk_c86 = 0;
+ rfu_setRecvBuffer(0x20, Rfu.unk_c3e, &Rfu.unk_c86, 1);
+ rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70);
+ break;
+ case 0x25:
+ sub_80FB9E4(2, 0x25);
+ break;
+ case 0x30:
+ Rfu.unk_f0 = 2;
+ if (Rfu.unk_c86 == 6)
+ break;
+ case 0x33:
+ if (Rfu.unk_f0 != 2)
+ Rfu.unk_f0 = 4;
+ if (Rfu.unk_c86 != 9)
+ sub_80FB9E4(2, a0);
+ nullsub_87("LINK LOSS DISCONNECT!", 5, 5);
+ if (gReceivedRemoteLinkPlayers == 1)
+ sub_80FB0E8(a0);
+ break;
+ case 0x31:
+ Rfu.unk_f0 = 1;
+ nullsub_87("LINK LOSS RECOVERY NOW", 5, 5);
+ break;
+ case 0x32:
+ Rfu.unk_f0 = 3;
+ Rfu.unk_c3c = 1;
+ break;
+ case 0x34:
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xF3:
+ sub_80FB9E4(1, a0);
+ sub_80FB0E8(a0);
+ Rfu.unk_ef = 1;
+ break;
+ case 0xF0 ... 0xF2:
+ case 0xFF:
+ sub_80FB9E4(1, a0);
+ sub_80FB0E8(a0);
+ Rfu.unk_cdb = 1;
+ break;
+ }
+}
+
+static void sub_80FB564(s32 a0)
+{
+ s32 i;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((a0 >> i) & 1)
+ {
+ Rfu.unk_cea[i] = 0;
+ Rfu.unk_cee[i] = 0xFF;
+ }
+ }
+}
+
+static u8 sub_80FB5A0(s32 a0)
+{
+ u8 ret = 0;
+ u8 i;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((a0 >> i) & 1)
+ {
+ struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname;
+ if (structPtr->unk_0a_0 == 0x45)
+ ret |= (1 << i);
+ }
+ }
+
+ return ret;
+}
+
+static void sub_80FB5EC(u8 a0, u8 unused1)
+{
+ u8 r1;
+
+ switch (a0)
+ {
+ case 0x00:
+ Rfu.unk_04 = 0x11;
+ break;
+ case 0x10:
+ sub_80FB9E4(4, 0);
+ break;
+ case 0x11:
+ if (sub_80F9800()->unk_0a_0 == 0x45 && Rfu.unk_cd9 == 0)
+ {
+ u8 idx = sub_80FB5A0(gUnknown_3005E10.unk_14);
+ if (idx != 0)
+ {
+ r1 = 1 << sub_80F886C(idx);
+ if (Rfu.unk_ce6 == 0 && Rfu.unk_ce8 == 0)
+ {
+ Rfu.unk_ce5 = r1;
+ Rfu.unk_ce6 |= (r1 ^ idx);
+ Rfu.unk_ce8 = 1;
+ }
+ else
+ {
+ Rfu.unk_ce6 |= idx;
+ }
+ }
+ if (idx != gUnknown_3005E10.unk_14)
+ {
+ Rfu.unk_ce3 |= (idx ^ gUnknown_3005E10.unk_14);
+ Rfu.unk_ce4 = 2;
+ }
+ }
+ else if (sub_80F9800()->unk_0a_0 == 0x54)
+ {
+ rfu_REQ_disconnect(gUnknown_3005E10.unk_00);
+ rfu_waitREQComplete();
+ }
+ sub_80FB564(gUnknown_3005E10.unk_14);
+ break;
+ case 0x12:
+ break;
+ case 0x13:
+ break;
+ case 0x14:
+ if (sub_80F9800()->unk_0a_0 != 0x45 && gUnknown_3005E10.unk_01 > 1)
+ {
+ r1 = 1 << sub_80F886C(gUnknown_3005E10.unk_14);
+ rfu_REQ_disconnect(gUnknown_3005E10.unk_00 ^ r1);
+ rfu_waitREQComplete();
+ }
+ if (Rfu.unk_04 == 0xF)
+ Rfu.unk_04 = 0x10;
+ break;
+ case 0x20:
+ Rfu.unk_ccd = gUnknown_3005E10.unk_14;
+ break;
+ case 0x21:
+ break;
+ case 0x22:
+ Rfu.unk_c3e = gUnknown_3005E10.unk_14;
+ break;
+ case 0x23:
+ Rfu.unk_04 = 0x12;
+ if (Rfu.unk_ccf < 2)
+ {
+ Rfu.unk_ccf++;
+ CreateTask(sub_80FC028, 2);
+ }
+ else
+ {
+ sub_80FB9E4(2, a0);
+ }
+ break;
+ case 0x24:
+ Rfu.unk_04 = 0xD;
+ sub_80FB9E4(3, 0);
+ rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70);
+ break;
+ case 0x25:
+ sub_80FB9E4(2, a0);
+ break;
+ case 0x31:
+ if (gUnknown_3005E10.unk_00 & gUnknown_3005E10.unk_14)
+ Rfu.unk_f0 = 1;
+ break;
+ case 0x32:
+ Rfu.unk_f0 = 3;
+ if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ Rfu.unk_c3c = 1;
+ break;
+ case 0x30:
+ Rfu.unk_f0 = 2;
+ case 0x33:
+ if (Rfu.unk_f0 != 2)
+ Rfu.unk_f0 = 4;
+ if (Rfu.unk_0c == 1)
+ {
+ if (gReceivedRemoteLinkPlayers == 1)
+ {
+ Rfu.unk_ce2 &= ~(gUnknown_3005E10.unk_14);
+ if (Rfu.unk_ce2 == 0)
+ sub_80FB0E8(a0);
+ else
+ sub_80FB174();
+ }
+ }
+ else if (Rfu.unk_ce4 != 2 && gReceivedRemoteLinkPlayers == 1)
+ {
+ sub_80FB0E8(a0);
+ sub_80FD760(0);
+ }
+
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && gUnknown_3005E10.unk_07 == 0 && FuncIsActiveTask(sub_80F8B34) == TRUE)
+ Rfu.unk_04 = 0x11;
+
+ sub_80FB9E4(2, a0);
+ break;
+ case 0x40:
+ Rfu.unk_ce3 = 0;
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xF3:
+ sub_80FB9E4(1, a0);
+ sub_80FB0E8(a0);
+ Rfu.unk_ef = 1;
+ break;
+ case 0xF0 ... 0xF2:
+ case 0xFF:
+ sub_80FB0E8(a0);
+ sub_80FB9E4(1, a0);
+ Rfu.unk_cdb = 0;
+ break;
+ }
+}
+
+void sub_80FB9D0(void)
+{
+ Rfu.unk_ce4 = 2;
+}
+
+void sub_80FB9E4(u8 a0, u16 a1)
+{
+ Rfu.unk_f1 = a0;
+ Rfu.unk_0a = a1;
+}
+
+u8 sub_80FB9F4(void)
+{
+ return Rfu.unk_f1;
+}
+
+bool32 sub_80FBA00(void)
+{
+ u32 var = sub_80FB9F4() - 1;
+ if (var < 2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 sub_80FBA1C(void)
+{
+ return Rfu.unk_ce8;
+}
+
+bool8 Rfu_IsMaster(void)
+{
+ return Rfu.unk_0c;
+}
+
+void RFUVSync(void)
+{
+ LinkRfu_syncVBlank_();
+}
+
+void sub_80FBA44(void)
+{
+ CpuFill32(0, gRecvCmds, sizeof(gRecvCmds));
+}
+
+static void sub_80FBA64(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_80FBA78(void)
+{
+ s32 i;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ResetPaletteFade();
+ SetVBlankCallback(sub_80FBA64);
+ if (IsWirelessAdapterConnected())
+ {
+ gLinkType = LINKTYPE_0x1111;
+ sub_800B1F4();
+ OpenLink();
+ SeedRng(gMain.vblankCounter2);
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256;
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ sub_80FBB20();
+ SetMainCallback2(sub_80FBB74);
+ }
+}
+
+bool32 sub_80FBB0C(void)
+{
+ return FuncIsActiveTask(sub_80F8B34);
+}
+
+void sub_80FBB20(void)
+{
+ if (!FuncIsActiveTask(nullsub_89))
+ Rfu.unk_66 = CreateTask(nullsub_89, 0);
+}
+
+void sub_80FBB4C(void)
+{
+ if (FuncIsActiveTask(nullsub_89) == TRUE)
+ DestroyTask(Rfu.unk_66);
+}
+
+static void sub_80FBB74(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_80FBB8C(u32 a0)
+{
+ Rfu.unk_0c = 1;
+ sub_80FAF1C();
+ sub_80FD430(sub_80FB184, NULL);
+ gUnknown_203ABF0 = gUnknown_843EBB4;
+ gUnknown_203ABF0.unk_02 = gUnknown_843EBCC[a0 - 1];
+ sub_80F8E74();
+}
+
+void sub_80FBBD8(void)
+{
+ Rfu.unk_0c = 0;
+ sub_80FAF1C();
+ sub_80FD430(sub_80FB37C, sub_80F8D20);
+ sub_80F8F10();
+}
+
+void sub_80FBC00(void)
+{
+ if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
+ return;
+ Rfu.unk_0c = 2;
+ sub_80FAF1C();
+ sub_80FD430(sub_80FB5EC, NULL);
+ gUnknown_203ABF0 = gUnknown_843EBB4;
+ gUnknown_203ABF0.unk_11 = 0;
+ gUnknown_203ABF0.unk_12 = 0x258;
+ Rfu.unk_67 = CreateTask(sub_80F8B34, 1);
+}
+
+static u16 ReadU16(const void *ptr)
+{
+ const u8 *ptr_ = ptr;
+ return (ptr_[1] << 8) | (ptr_[0]);
+}
+
+static u8 sub_80FBC70(const u8 *a0, u16 a1)
+{
+ u8 i;
+ u8 ret = 0xFF;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ u16 trainerId = ReadU16(((struct GFtgtGname *)gRfuLinkStatus->partner[i].gname)->unk_00.playerTrainerId);
+ if (sub_80FA44C(gRfuLinkStatus->partner[i].serialNo)
+ && !StringCompare(a0, gRfuLinkStatus->partner[i].uname)
+ && a1 == trainerId)
+ {
+ ret = i;
+ if (gRfuLinkStatus->partner[i].slot != 0xFF)
+ break;
+ }
+ }
+
+ return ret;
+}
+
+static void sub_80FBCF8(u32 a0)
+{
+ rfu_REQ_disconnect(a0);
+ rfu_waitREQComplete();
+ Rfu.unk_ce2 &= ~(a0);
+ rfu_clearSlot(1, Rfu.unk_cda);
+ rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, 70);
+ Rfu.unk_cda = sub_80F886C(Rfu.unk_ce2);
+}
+
+void sub_80FBD4C(const u8 *ptr, u16 a1)
+{
+ u8 var = sub_80FBC70(ptr, a1);
+ if (var != 0xFF)
+ sub_80FBCF8(1 << var);
+}
+
+void sub_80FBD6C(u32 a0)
+{
+ if (a0 != 0)
+ {
+ s32 i;
+ u8 var = 0;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (Rfu.unk_cde[i] == a0 && (Rfu.unk_ce2 >> i) & 1)
+ var |= 1 << i;
+ }
+ if (var)
+ sub_80FBE20(var, 2);
+ }
+}
+
+static void sub_80FBDB8(u8 taskId)
+{
+ if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0)
+ {
+ sub_80F9D04(0xED00);
+ gSendCmd[1] = gTasks[taskId].data[0];
+ gSendCmd[2] = gTasks[taskId].data[1];
+ Rfu.playerCount -= gUnknown_843EC41[gTasks[taskId].data[0]];
+ gSendCmd[3] = Rfu.playerCount;
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80FBE20(u32 a0, u32 a1)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80FBDB8);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_80FBDB8, 5);
+ gTasks[taskId].data[0] = a0;
+ }
+ else
+ {
+ gTasks[taskId].data[0] |= a0;
+ }
+
+ gTasks[taskId].data[1] = a1;
+}
+
+static void sub_80FBE80(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (sub_80F8EA4())
+ {
+ u8 id = sub_80FBC70((u8*)data, ReadU16(&data[8]));
+ if (id != 0xFF)
+ {
+ if (gRfuLinkStatus->partner[id].slot != 0xFF)
+ {
+ Rfu.unk_c3d = id;
+ if (sub_80F8ECC())
+ DestroyTask(taskId);
+ }
+ else if (sub_80F9800()->unk_0a_0 == 0x15 || sub_80F9800()->unk_0a_0 == 0x16)
+ {
+ data[15]++;
+ }
+ else
+ {
+ sub_80FB9E4(2, 0x7000);
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ data[15]++;
+ Rfu.unk_c3d = id;
+ }
+ }
+ else
+ {
+ data[15]++;
+ }
+
+ if (data[15] > 240)
+ {
+ sub_80FB9E4(2, 0x7000);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80FBF54(const u8 *src, u16 trainerId)
+{
+ u8 taskId;
+ s16 *data;
+
+ Rfu.unk_f1 = 0;
+ taskId = CreateTask(sub_80FBE80, 3);
+ data = gTasks[taskId].data;
+ StringCopy((u8*)(data), src);
+ data[8] = trainerId;
+}
+
+static bool32 sub_80FBF98(s16 a1, struct GFtgtGname *structPtr)
+{
+ if (sub_80F9800()->unk_0a_0 == 0x45)
+ {
+ if (structPtr->unk_0a_0 != 0x45)
+ return TRUE;
+ }
+ else if (structPtr->unk_0a_0 != 0x40)
+ {
+ return TRUE;
+ }
+ else if (a1 == 0x44)
+ {
+ struct GFtgtGname *structPtr2 = (struct GFtgtGname *)&Rfu.unk_104.gname;
+ if (structPtr2->species == SPECIES_EGG)
+ {
+ if (structPtr->species == structPtr2->species)
+ return FALSE;
+ else
+ return TRUE;
+ }
+ else if (structPtr->species != structPtr2->species
+ || structPtr->level != structPtr2->level
+ || structPtr->type != structPtr2->type)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void sub_80FC028(u8 taskId)
+{
+ if (Rfu.unk_f1 == 4)
+ DestroyTask(taskId);
+
+ if (++gTasks[taskId].data[0] > 300)
+ {
+ sub_80FB9E4(2, 0x7000);
+ DestroyTask(taskId);
+ }
+
+ if (Rfu.unk_ccd != 0 && gUnknown_3005E10.unk_06 == 0)
+ {
+ u16 trainerId = ReadU16(((struct GFtgtGname *)&Rfu.unk_104.gname)->unk_00.playerTrainerId);
+ u8 id = sub_80FBC70(Rfu.unk_104.uname, trainerId);
+ if (id != 0xFF)
+ {
+ if (!sub_80FBF98(gTasks[taskId].data[1], (struct GFtgtGname *)&gRfuLinkStatus->partner[id].gname))
+ {
+ if (gRfuLinkStatus->partner[id].slot != 0xFF && !sub_80FD610(gRfuLinkStatus->partner[id].id, 0x5A))
+ {
+ Rfu.unk_04 = 0xA;
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ sub_80FB9E4(2, 0x7000);
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+
+void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2)
+{
+ u8 taskId, taskId2;
+
+ Rfu.unk_ccf = 0;
+ Rfu.unk_f1 = 0;
+ StringCopy(Rfu.unk_104.uname, name);
+ memcpy(Rfu.unk_104.gname, structPtr, RFU_GAME_NAME_LENGTH);
+ sub_80FEB3C();
+ taskId = CreateTask(sub_80FC028, 2);
+ gTasks[taskId].data[1] = a2;
+ taskId2 = FindTaskIdByFunc(sub_80F8B34);
+ if (a2 == 0x45)
+ {
+ if (taskId2 != 0xFF)
+ gTasks[taskId2].data[7] = 1;
+ }
+ else
+ {
+ if (taskId2 != 0xFF)
+ gTasks[taskId2].data[7] = 0;
+ }
+}
+
+bool8 sub_80FC1B0(void)
+{
+ if (Rfu.unk_f0 == 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 sub_80FC1CC(void)
+{
+ s32 i;
+
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gUnknown_3005E10.unk_00 >> i) & 1 && Rfu.unk_cd1[i] == 0)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_80FC208(void)
+{
+ s32 i;
+
+ for (i = 0; i < 20; i++)
+ nullsub_87(" ", 0, i);
+}
+
+static const char gUnknown_843EE47[16] = {
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ '\0'
+};
+
+static const char gUnknown_843EE57[9] = {
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ '\0'
+};
+
+static const char gUnknown_843EE60[] = {' ', '\0'};
+static const char gUnknown_843EE62[] = {'*', '\0'};
+
+static void sub_80FC228(void)
+{
+ s32 i, j;
+
+ nullsub_88(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
+ nullsub_88(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1);
+ nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
+ if (Rfu.unk_0c == 1)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if ((gRfuLinkStatus->getNameFlag >> i) & 1)
+ {
+ nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
+ nullsub_87((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3);
+ nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
+ }
+ }
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ for (j = 0; j < 14; j++)
+ {
+ nullsub_88(Rfu.unk_14[i][j], j * 2, i + 11, 2);
+ }
+ }
+ nullsub_87("NOWSLOT", 1, 0xF);
+ }
+ else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0)
+ {
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ nullsub_88(0, 1, i + 3, 4);
+ nullsub_87(gUnknown_843EE47, 6, i + 3);
+ nullsub_87(gUnknown_843EE57, 0x16, i + 3);
+ }
+ nullsub_88(gRfuLinkStatus->partner[Rfu.unk_c3e].serialNo, 1, 3, 4);
+ nullsub_87(gRfuLinkStatus->partner[Rfu.unk_c3e].gname, 6, 3);
+ nullsub_87(gRfuLinkStatus->partner[Rfu.unk_c3e].uname, 0x16, 3);
+ }
+ else
+ {
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
+ {
+ if (gRfuLinkStatus->partner[i].slot != 0xFF)
+ {
+ nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
+ nullsub_88(gRfuLinkStatus->partner[i].id, 6, i + 3, 4);
+ nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
+ }
+ }
+ for (; i < RFU_CHILD_MAX; i++)
+ {
+ nullsub_88(0, 1, i + 3, 4);
+ nullsub_87(gUnknown_843EE47, 6, i + 3);
+ nullsub_87(gUnknown_843EE57, 0x16, i + 3);
+ }
+ }
+}
+
+static const char gUnknown_843EE6C[][12] = {
+ " ",
+ "CLOCK DRIFT",
+ "BUSY SEND ",
+ "CMD REJECT ",
+ "CLOCK SLAVE"
+};
+
+static const char gUnknown_843EEA8[][8] = {
+ "CHILD ",
+ "PARENT",
+ "SEARCH"
+};
+
+static u32 sub_80FC44C(void)
+{
+ return Rfu.unk_9e8.unk_232;
+}
+
+u32 GetRfuRecvQueueLength(void)
+{
+ return Rfu.unk_124.unk_8c2;
+}
+
+static void nullsub_89(u8 taskId)
+{
+
+}
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
new file mode 100644
index 000000000..01f19d817
--- /dev/null
+++ b/src/link_rfu_3.c
@@ -0,0 +1,948 @@
+#include "global.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "malloc.h"
+#include "random.h"
+#include "string_util.h"
+#include "text.h"
+#include "constants/flags.h"
+
+static EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0;
+
+static const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal");
+
+static const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz");
+
+static const u8 sWireless_ASCIItoRSETable[] = {
+ 0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba,
+ 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
+ 0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
+ 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
+ 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1,
+ 0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
+ 0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb,
+ 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3,
+ 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
+ 0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32,
+ 0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02,
+ 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
+ 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
+ 0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0,
+ 0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac,
+ 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
+ 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
+ 0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
+ 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
+};
+
+static const u8 sWireless_RSEtoASCIITable[] = {
+ 0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
+ 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c,
+ 0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3,
+ 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
+ 0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c,
+ 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
+ 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03,
+ 0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
+ 0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5,
+ 0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20,
+ 0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45,
+ 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
+ 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
+ 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63,
+ 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
+ 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73,
+ 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20,
+ 0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
+};
+
+static const struct OamData sWirelessStatusIndicatorOamData =
+ {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ };
+
+static const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
+ // 3 bars
+ ANIMCMD_FRAME( 4, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sWirelessStatusIndicatorAnim1[] = {
+ // 2 bars
+ ANIMCMD_FRAME( 4, 5),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sWirelessStatusIndicatorAnim2[] = {
+ // 1 bar
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sWirelessStatusIndicatorAnim3[] = {
+ // searching
+ ANIMCMD_FRAME( 4, 10),
+ ANIMCMD_FRAME(20, 10),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sWirelessStatusIndicatorAnim4[] = {
+ // error
+ ANIMCMD_FRAME(24, 10),
+ ANIMCMD_FRAME( 4, 10),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = {
+ sWirelessStatusIndicatorAnim0,
+ sWirelessStatusIndicatorAnim1,
+ sWirelessStatusIndicatorAnim2,
+ sWirelessStatusIndicatorAnim3,
+ sWirelessStatusIndicatorAnim4
+};
+
+static const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = {
+ gWirelessLinkIconPic, 0x0380, 0xD431
+};
+
+static const struct SpritePalette sWirelessStatusIndicatorSpritePalette = {
+ gWirelessLinkIconPalette, 0xD432
+};
+
+static const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = {
+ 0xD431,
+ 0xD432,
+ &sWirelessStatusIndicatorOamData,
+ sWirelessStatusIndicatorAnims,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 70; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_8c1 = 0;
+ ptr->unk_8c0 = 0;
+ ptr->unk_8c2 = 0;
+ ptr->unk_8c3 = 0;
+}
+
+void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < 40; i++)
+ {
+ for (j = 0; j < 14; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_231 = 0;
+ ptr->unk_230 = 0;
+ ptr->unk_232 = 0;
+ ptr->unk_233 = 0;
+}
+
+static void sub_80FC530(struct UnkRfuStruct_Sub_Unused *ptr)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 256; j++)
+ {
+ ptr->unk_00[i][j] = 0;
+ }
+ }
+ ptr->unk_201 = 0;
+ ptr->unk_200 = 0;
+ ptr->unk_202 = 0;
+ ptr->unk_203 = 0;
+}
+
+void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
+{
+ s32 i;
+ u16 imeBak;
+ u8 count;
+
+ if (q1->unk_8c2 < 20)
+ {
+ imeBak = REG_IME;
+ REG_IME = 0;
+ count = 0;
+ for (i = 0; i < 70; i += 14)
+ {
+ if (q2[i] == 0 && q2[i + 1] == 0)
+ {
+ count++;
+ }
+ }
+ if (count != 5)
+ {
+ for (i = 0; i < 70; i++)
+ {
+ q1->unk_00[q1->unk_8c0][i] = q2[i];
+ }
+ q1->unk_8c0++;
+ q1->unk_8c0 %= 20;
+ q1->unk_8c2++;
+ for (i = 0; i < 70; i++)
+ {
+ q2[i] = 0;
+ }
+ }
+ REG_IME = imeBak;
+ }
+ else
+ {
+ q1->unk_8c3 = 1;
+ }
+}
+
+void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
+{
+ s32 i;
+ u16 imeBak;
+
+ if (q1->unk_232 < 40)
+ {
+ imeBak = REG_IME;
+ REG_IME = 0;
+ for (i = 0; i < 14; i++)
+ {
+ if (q2[i] != 0)
+ {
+ break;
+ }
+ }
+ if (i != 14)
+ {
+ for (i = 0; i < 14; i++)
+ {
+ q1->unk_00[q1->unk_230][i] = q2[i];
+ }
+ q1->unk_230++;
+ q1->unk_230 %= 40;
+ q1->unk_232++;
+ for (i = 0; i < 14; i++)
+ {
+ q2[i] = 0;
+ }
+ }
+ REG_IME = imeBak;
+ }
+ else
+ {
+ q1->unk_233 = 1;
+ }
+}
+
+bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
+{
+ u16 imeBak;
+ s32 i;
+
+ imeBak = REG_IME;
+ REG_IME = 0;
+ if (q1->unk_8c0 == q1->unk_8c1 || q1->unk_8c3 != 0)
+ {
+ for (i = 0; i < 70; i++)
+ {
+ q2[i] = 0;
+ }
+ REG_IME = imeBak;
+ return FALSE;
+ }
+ for (i = 0; i < 70; i++)
+ {
+ q2[i] = q1->unk_00[q1->unk_8c1][i];
+ }
+ q1->unk_8c1++;
+ q1->unk_8c1 %= 20;
+ q1->unk_8c2--;
+ REG_IME = imeBak;
+ return TRUE;
+}
+
+bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
+{
+ s32 i;
+ u16 imeBak;
+
+ if (q1->unk_230 == q1->unk_231 || q1->unk_233 != 0)
+ {
+ return FALSE;
+ }
+ imeBak = REG_IME;
+ REG_IME = 0;
+ for (i = 0; i < 14; i++)
+ {
+ q2[i] = q1->unk_00[q1->unk_231][i];
+ }
+ q1->unk_231++;
+ q1->unk_231 %= 40;
+ q1->unk_232--;
+ REG_IME = imeBak;
+ return TRUE;
+}
+
+void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2)
+{
+ s32 i;
+
+ if (q2[1] == 0)
+ {
+ sub_80FC888(q1, NULL);
+ }
+ else
+ {
+ for (i = 0; i < 14; i++)
+ {
+ q1->unk_00[q1->unk_1c][i] = q2[i];
+ }
+ q1->unk_1c++;
+ q1->unk_1c %= 2;
+ if (q1->unk_1e < 2)
+ {
+ q1->unk_1e++;
+ }
+ else
+ {
+ q1->unk_1d = q1->unk_1c;
+ }
+ }
+}
+
+bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2)
+{
+ s32 i;
+
+ if (q1->unk_1e == 0)
+ {
+ return FALSE;
+ }
+ if (q2 != NULL)
+ {
+ for (i = 0; i < 14; i++)
+ {
+ q2[i] = q1->unk_00[q1->unk_1d][i];
+ }
+ }
+ q1->unk_1d++;
+ q1->unk_1d %= 2;
+ q1->unk_1e--;
+ return TRUE;
+}
+
+static void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
+{
+ s32 i;
+
+ if (q1->unk_202 < 2)
+ {
+ for (i = 0; i < 256; i++)
+ {
+ q1->unk_00[q1->unk_200][i] = q2[i];
+ }
+ q1->unk_200++;
+ q1->unk_200 %= 2;
+ q1->unk_202++;
+ }
+ else
+ {
+ q1->unk_203 = 1;
+ }
+}
+
+static bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
+{
+ s32 i;
+
+ if (q1->unk_200 == q1->unk_201 || q1->unk_203)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 256; i++)
+ {
+ q2[i] = q1->unk_00[q1->unk_201][i];
+ }
+ q1->unk_201++;
+ q1->unk_201 %= 2;
+ q1->unk_202--;
+ return TRUE;
+}
+
+static void sub_80FC9B8(u8 *q1, u8 mode)
+{
+ s32 i;
+ u8 rval;
+ u16 r5 = 0;
+ static u8 _3002018;
+
+ switch (mode)
+ {
+ case 0:
+ for (i = 0; i < 200; i++)
+ {
+ q1[i] = i + 1;
+ r5 += i + 1;
+ }
+ *((u16 *)(q1 + i)) = r5;
+ break;
+ case 1:
+ for (i = 0; i < 100; i++)
+ {
+ q1[i] = i + 1;
+ r5 += i + 1;
+ }
+ *((u16 *)(q1 + 200)) = r5;
+ break;
+ case 2:
+ for (i = 0; i < 200; i++)
+ {
+ rval = Random();
+ q1[i] = rval;
+ r5 += rval;
+ }
+ *((u16 *)(q1 + i)) = r5;
+ break;
+ case 3:
+ for (i = 0; i < 200; i++)
+ {
+ q1[i] = i + 1 + _3002018;
+ r5 += (i + 1 + _3002018) & 0xFF;
+ }
+ *((u16 *)(q1 + i)) = r5;
+ _3002018++;
+ break;
+ }
+}
+
+static void PkmnStrToASCII(u8 *q1, const u8 *q2)
+{
+ s32 i;
+
+ for (i = 0; q2[i] != EOS; i++)
+ {
+ q1[i] = sWireless_RSEtoASCIITable[q2[i]];
+ }
+ q1[i] = 0;
+}
+
+static void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
+{
+ s32 i;
+
+ for (i = 0; q2[i] != 0; i++)
+ {
+ q1[i] = sWireless_ASCIItoRSETable[q2[i]];
+ }
+ q1[i] = EOS;
+}
+
+#ifdef NONMATCHING
+static u8 sub_80FCADC(u8 maxFlags)
+{
+ u8 flagCount = 0;
+ u8 flags = gRfuLinkStatus->connSlotFlag;
+ u8 i;
+
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ for (i = 0; i < 4; flags >>= 1, i++)
+ {
+ if (flags & 1)
+ {
+ if (maxFlags == flagCount + 1)
+ return gRfuLinkStatus->strength[i];
+ flagCount++;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < 4; flags >>= 1, i++)
+ {
+ if (flags & 1)
+ return gRfuLinkStatus->strength[i];
+ }
+ return 0;
+ }
+}
+#else
+NAKED
+static u8 sub_80FCADC(u8 maxFlags)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tmovs r6, 0\n"
+ "\tldr r0, _080FCB04 @ =gRfuLinkStatus\n"
+ "\tldr r4, [r0]\n"
+ "\tldrb r2, [r4, 0x2]\n"
+ "\tldrb r1, [r4]\n"
+ "\tadds r7, r0, 0\n"
+ "\tcmp r1, 0x1\n"
+ "\tbne _080FCB32\n"
+ "\tmovs r3, 0\n"
+ "\tands r1, r2\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _080FCB0E\n"
+ "\tcmp r5, 0x1\n"
+ "\tbne _080FCB08\n"
+ "\tldrb r0, [r4, 0xA]\n"
+ "\tb _080FCB4C\n"
+ "\t.align 2, 0\n"
+ "_080FCB04: .4byte gRfuLinkStatus\n"
+ "_080FCB08:\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "_080FCB0E:\n"
+ "\tlsrs r2, 1\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x3\n"
+ "\tbhi _080FCB4A\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r2\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080FCB0E\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tcmp r5, r0\n"
+ "\tbne _080FCB08\n"
+ "_080FCB28:\n"
+ "\tldr r0, [r7]\n"
+ "\tadds r0, 0xA\n"
+ "\tadds r0, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tb _080FCB4C\n"
+ "_080FCB32:\n"
+ "\tmovs r3, 0\n"
+ "\tmovs r1, 0x1\n"
+ "_080FCB36:\n"
+ "\tadds r0, r2, 0\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080FCB28\n"
+ "\tlsrs r2, 1\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x3\n"
+ "\tbls _080FCB36\n"
+ "_080FCB4A:\n"
+ "\tmovs r0, 0\n"
+ "_080FCB4C:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ data->unk_00.playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
+ }
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ data->unk_04[i] = r3;
+ r3 >>= 8;
+ }
+ data->playerGender = gSaveBlock2Ptr->playerGender;
+ data->unk_0a_0 = r9;
+ data->unk_0a_7 = r2;
+ data->unk_00.unk_00_0 = GAME_LANGUAGE;
+ data->unk_00.unk_01_2 = GAME_VERSION;
+ data->unk_00.unk_00_4 = 0;
+ data->unk_00.unk_00_5 = 0;
+ data->unk_00.unk_00_6 = 0;
+ data->unk_00.isChampion = FlagGet(FLAG_SYS_CAN_LINK_WITH_RS);
+ data->unk_00.hasNationalDex = IsNationalPokedexEnabled();
+ data->unk_00.gameClear = FlagGet(FLAG_SYS_GAME_CLEAR);
+}
+
+bool8 sub_80FCC3C(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
+{
+ bool8 retVal;
+
+ if (gUnknown_3005E10.unk_06 == 1)
+ {
+ retVal = TRUE;
+ if (sub_80FA44C(gRfuLinkStatus->partner[idx].serialNo) && ((gRfuLinkStatus->getNameFlag >> idx) & 1))
+ {
+ memcpy(buff1, &gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH);
+ }
+ else
+ {
+ memset(buff1, 0, RFU_GAME_NAME_LENGTH);
+ memset(buff2, 0, RFU_USER_NAME_LENGTH);
+ }
+ }
+ else
+ {
+ retVal = FALSE;
+ if (sub_80FA44C(gRfuLinkStatus->partner[idx].serialNo))
+ {
+ memcpy(buff1, &gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH);
+ }
+ else
+ {
+ memset(buff1, 0, RFU_GAME_NAME_LENGTH);
+ memset(buff2, 0, RFU_USER_NAME_LENGTH);
+ }
+ }
+ return retVal;
+}
+
+bool8 sub_80FCCF4(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
+{
+ bool8 retVal = FALSE;
+ if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D)
+ {
+ memcpy(buff1, gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH);
+ retVal = TRUE;
+ }
+ else
+ {
+ memset(buff1, 0, RFU_GAME_NAME_LENGTH);
+ memset(buff2, 0, RFU_USER_NAME_LENGTH);
+ }
+ return retVal;
+}
+
+void sub_80FCD50(struct GFtgtGname *buff1, u8 *buff2)
+{
+ memcpy(buff1, &gUnknown_3005440, RFU_GAME_NAME_LENGTH);
+ memcpy(buff2, gUnknown_3005E00, RFU_USER_NAME_LENGTH);
+}
+
+void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
+{
+ u8 sprId;
+
+ if (x == 0 && y == 0)
+ {
+ x = 0xE7;
+ y = 0x08;
+ }
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
+ gSprites[sprId].data[7] = 0x1234;
+ gSprites[sprId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[sprId].invisible = TRUE;
+ gWirelessStatusIndicatorSpriteId = sprId;
+ }
+ else
+ {
+ gWirelessStatusIndicatorSpriteId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
+ gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0x1234;
+ gSprites[gWirelessStatusIndicatorSpriteId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[gWirelessStatusIndicatorSpriteId].invisible = TRUE;
+ }
+}
+
+void DestroyWirelessStatusIndicatorSprite(void)
+{
+ if (gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234)
+ {
+ gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0;
+ DestroySprite(&gSprites[gWirelessStatusIndicatorSpriteId]);
+ gMain.oamBuffer[125] = gDummyOamData;
+ CpuCopy16(&gDummyOamData, (struct OamData *)OAM + 125, sizeof(struct OamData));
+ }
+}
+
+void LoadWirelessStatusIndicatorSpriteGfx(void)
+{
+ if (GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag) == 0xFFFF)
+ {
+ LoadCompressedSpriteSheet(&sWirelessStatusIndicatorSpriteSheet);
+ }
+ LoadSpritePalette(&sWirelessStatusIndicatorSpritePalette);
+ gWirelessStatusIndicatorSpriteId = 0xFF;
+}
+
+static u8 sub_80FCEE4(void)
+{
+ u8 i;
+ u8 flags = gRfuLinkStatus->connSlotFlag;
+ for (i = 0; i < RFU_CHILD_MAX; i++)
+ {
+ if (flags & 1)
+ {
+ return gRfuLinkStatus->strength[i];
+ }
+ flags >>= 1;
+ }
+ return 0;
+}
+
+static void sub_80FCF1C(struct Sprite *sprite, s32 signalStrengthAnimNum)
+{
+ if (sprite->data[2] != signalStrengthAnimNum)
+ {
+ sprite->data[2] = signalStrengthAnimNum;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ }
+}
+
+void sub_80FCF34(void)
+{
+ if (gWirelessStatusIndicatorSpriteId != 0xFF && gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234)
+ {
+ struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId];
+ u8 signalStrength = 255;
+ u8 i = 0;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ for (i = 0; i < GetLinkPlayerCount() - 1; i++)
+ {
+ if (signalStrength >= sub_80FCADC(i + 1))
+ {
+ signalStrength = sub_80FCADC(i + 1);
+ }
+ }
+ }
+ else
+ {
+ signalStrength = sub_80FCEE4();
+ }
+ if (sub_80FC1B0() == TRUE)
+ {
+ sprite->data[0] = 4;
+ }
+ else if (signalStrength < 25)
+ {
+ sprite->data[0] = 3;
+ }
+ else if (signalStrength >= 25 && signalStrength < 127)
+ {
+ sprite->data[0] = 2;
+ }
+ else if (signalStrength >= 127 && signalStrength < 229)
+ {
+ sprite->data[0] = 1;
+ }
+ else if (signalStrength >= 229)
+ {
+ sprite->data[0] = 0;
+ }
+ if (sprite->data[0] != sprite->data[1])
+ {
+ sub_80FCF1C(sprite, sprite->data[0]);
+ sprite->data[1] = sprite->data[0];
+ }
+ if (sprite->anims[sprite->data[2]][sprite->data[4]].frame.duration < sprite->data[3])
+ {
+ sprite->data[4]++;
+ sprite->data[3] = 0;
+ if (sprite->anims[sprite->data[2]][sprite->data[4]].type == -2)
+ {
+ sprite->data[4] = 0;
+ }
+ }
+ else
+ {
+ sprite->data[3]++;
+ }
+ gMain.oamBuffer[125] = sWirelessStatusIndicatorOamData;
+ gMain.oamBuffer[125].x = sprite->pos1.x + sprite->centerToCornerVecX;
+ gMain.oamBuffer[125].y = sprite->pos1.y + sprite->centerToCornerVecY;
+ gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
+ gMain.oamBuffer[125].tileNum = sprite->data[6] + sprite->anims[sprite->data[2]][sprite->data[4]].frame.imageValue;
+ CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
+ if (sub_80FB9F4() == 1)
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ }
+ }
+}
+
+static void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name)
+{
+ int i;
+ dest->trainerId = trainerId;
+ for (i = 0; i < 7; i++)
+ {
+ if (name[i] == EOS)
+ break;
+ dest->trainerName[i] = name[i];
+ }
+ dest->trainerName[i] = EOS;
+}
+
+static void ZeroName(u8 *name)
+{
+ s32 i;
+
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ {
+ *name++ = 0;
+ }
+}
+
+static bool32 NameIsEmpty(const u8 *name)
+{
+ s32 i;
+
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ {
+ if (*name++ != 0)
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+// Save the currently connected players into the trainer records, shifting all previous records down.
+void RecordMixTrainerNames(void)
+{
+ if (gWirelessCommType != 0)
+ {
+ s32 i;
+ s32 j;
+ s32 nextSpace;
+ s32 connectedTrainerRecordIndices[5];
+ struct TrainerNameRecord *newRecords = AllocZeroed(20 * sizeof(struct TrainerNameRecord));
+
+ // Check if we already have a record saved for connected trainers.
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ connectedTrainerRecordIndices[i] = -1;
+ for (j = 0; j < 20; j++)
+ {
+ if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->trainerNameRecords[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->trainerNameRecords[j].trainerName) == 0)
+ {
+ connectedTrainerRecordIndices[i] = j;
+ }
+ }
+ }
+
+ // Save the connected trainers first, at the top of the list.
+ nextSpace = 0;
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
+ {
+ CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
+
+ // If we already had a record for this trainer, wipe it so that the next step doesn't duplicate it.
+ if (connectedTrainerRecordIndices[i] >= 0)
+ {
+ ZeroName(gSaveBlock1Ptr->trainerNameRecords[connectedTrainerRecordIndices[i]].trainerName);
+ }
+ nextSpace++;
+ }
+ }
+
+ // Copy all non-empty records to the new list, in the order they appear on the old list. If the list is full,
+ // the last (oldest) records will be dropped.
+ for (i = 0; i < 20; i++)
+ {
+ if (!NameIsEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
+ {
+ CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName);
+ if (++nextSpace >= 20)
+ {
+ break;
+ }
+ }
+ }
+
+ // Finalize the new list, and clean up.
+ memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
+ Free(newRecords);
+ }
+}
+
+bool32 sub_80FD338(u16 id, u8 *name)
+{
+ s32 i;
+
+ for (i = 0; i < 20; i++)
+ {
+ if (StringCompareN(gSaveBlock1Ptr->trainerNameRecords[i].trainerName, name, 7) == 0 && gSaveBlock1Ptr->trainerNameRecords[i].trainerId == id)
+ {
+ return TRUE;
+ }
+ if (NameIsEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
+ {
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c
index 6df5207f0..94c01c081 100644
--- a/src/mevent_server_helpers.c
+++ b/src/mevent_server_helpers.c
@@ -96,12 +96,12 @@ static bool32 mevent_receive_func(struct mevent_srv_sub * svr)
svr->recvCRC = header.crc;
if (svr->recvSize > ME_SEND_BUF_SIZE)
{
- sub_80FA190();
+ LinkRfu_FatalError();
return FALSE;
}
else if (svr->recvIdent != header.ident)
{
- sub_80FA190();
+ LinkRfu_FatalError();
return FALSE;
}
else
@@ -133,7 +133,7 @@ static bool32 mevent_receive_func(struct mevent_srv_sub * svr)
case 2:
if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC)
{
- sub_80FA190();
+ LinkRfu_FatalError();
return FALSE;
}
else
@@ -192,7 +192,7 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr)
if (IsLinkTaskFinished())
{
if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC)
- sub_80FA190();
+ LinkRfu_FatalError();
else
++svr->seqno;
}
diff --git a/src/party_menu.c b/src/party_menu.c
index 6e0b411bf..7022852d6 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3881,7 +3881,7 @@ static void CursorCB_Register(u8 taskId)
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
- switch (CanRegisterMonForTradingBoard(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), species2, species, obedience))
+ switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)sub_80F9800(), species2, species, obedience))
{
case CANT_REGISTER_MON:
StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
@@ -3907,7 +3907,7 @@ static void CursorCB_Trade1(u8 taskId)
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
- u32 stringId = GetUnionRoomTradeMessageId(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
+ u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
if (stringId != UR_TRADE_MSG_NONE)
{
diff --git a/src/trade.c b/src/trade.c
index 10ed51d69..05a259e60 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -2763,7 +2763,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
return FALSE;
}
-int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet)
+int GetUnionRoomTradeMessageId(struct GFtgtGnameSub a0, struct GFtgtGnameSub a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet)
{
u8 r9 = a0.hasNationalDex;
u8 r4 = a0.isChampion;
@@ -2843,7 +2843,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str
return 0;
}
-int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
+int CanRegisterMonForTradingBoard(struct GFtgtGnameSub a0, u16 species, u16 a2, u8 a3)
{
u8 canTradeEggAndNational = a0.hasNationalDex;
diff --git a/sym_bss.txt b/sym_bss.txt
index 08f390b01..16c5758fc 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -70,22 +70,11 @@ gUnknown_3000FE8: @ 3000FE8
.align 2
.include "src/easy_chat.o"
-
-gUnknown_3001188: @ 3001188
- .space 0x8
-
-gRfuAPIBuffer: @ 3001190
- .space 0xE68
-
-gUnknown_3001FF8: @ 3001FF8
- .space 0x10
-
-gUnknown_3002008: @ 3002008
- .space 0x10
-
-gUnknown_3002018: @ 3002018
- .space 0x4
-
+ .align 2
+ .include "src/link_rfu_2.o"
+ .align 2
+ .include "src/link_rfu_3.o"
+ .align 2
.include "src/quest_log.o"
.align 2
diff --git a/sym_common.txt b/sym_common.txt
index 753ce9ebd..9f39f9f2b 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -75,60 +75,10 @@ gUnknown_3005078: @ 3005078
gUnknown_3005430: @ 3005430
.space 0x10
-gUnknown_3005440: @ 3005440
- .space 0x10
-
-gUnknown_3005450: @ 3005450
- .space 0x14
-
-gUnknown_3005464: @ 3005464
- .space 0x58
-
-gUnknown_30054BC: @ 30054BC
- .space 0x2
-
-gUnknown_30054BE: @ 30054BE
- .space 0x76
-
-gUnknown_3005534: @ 3005534
- .space 0xE
-
-gUnknown_3005542: @ 3005542
- .space 0x18
-
-gUnknown_300555A: @ 300555A
- .space 0x1A
-
-gUnknown_3005574: @ 3005574
- .space 0x57C
-
-gUnknown_3005AF0: @ 3005AF0
- .space 0x29F
-
-gUnknown_3005D8F: @ 3005D8F
- .space 0x47
-
-gUnknown_3005DD6: @ 3005DD6
- .space 0x3
-
-gUnknown_3005DD9: @ 3005DD9
- .space 0x4
-
-gUnknown_3005DDD: @ 3005DDD
- .space 0x9
-
-gUnknown_3005DE6: @ 3005DE6
- .space 0x1A
-
-gUnknown_3005E00: @ 3005E00
- .space 0x10
-
-gUnknown_3005E10: @ 3005E10
- .space 0x10
-
-gUnknown_3005E20: @ 3005E20
- .space 0x40
-
+ .align 4
+ .include "link_rfu_2.o"
+ .align 4
+ .include "link_rfu.o"
.align 4
.include "list_menu.o"
.align 2
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9e5e91782..140915655 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -17,7 +17,6 @@
.include "src/link.o"
.space 8
- @ .include "src/link_rfu.o"
.align 2
.include "src/battle_controllers.o"
.align 2
@@ -330,16 +329,11 @@ gUnknown_203ABE8: @ 203ABE8
.align 2
.include "src/map_preview_screen.o"
-
.align 2
-gUnknown_203ABF0: @ 203ABF0
- .space 0x18
-
-gUnknown_203AC08: @ 203AC08
- .space 0xDC
-
-gUnknown_203ACE4: @ 203ACE4
- .space 0x4
+ .include "src/link_rfu_2.o"
+ .align 2
+ .include "src/link_rfu_3.o"
+ .align 2
gUnknown_203ACE8: @ 203ACE8
.space 0x4