summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-10-07 16:33:02 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-10-07 16:37:17 -0700
commitc2d448767c6de4c9028454f279c8e43d2ecb174c (patch)
tree315f3e544e10f66be13c78bd01d1f286c16902fe
parent31748e93d8be0b5e8410c2f11b5719d60c2162db (diff)
Finish decompiling party_menu, and remove its asm/ file
-rw-r--r--asm/party_menu.s3658
-rw-r--r--include/battle.h2
-rw-r--r--include/party_menu.h25
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_party_menu.c2
-rw-r--r--src/choose_party.c7
-rw-r--r--src/naming_screen.c2
-rw-r--r--src/party_menu.c2604
-rw-r--r--src/rom_8077ABC.c2
9 files changed, 2589 insertions, 3714 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s
deleted file mode 100644
index 2c400dd09..000000000
--- a/asm/party_menu.s
+++ /dev/null
@@ -1,3658 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_806AEDC
-sub_806AEDC: @ 806AEDC
- push {r4-r6,lr}
- sub sp, 0x4
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _0806AF2C @ =gUnknown_0202E8FA
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- ldr r1, _0806AF30 @ =gUnknown_08376BB4
- adds r5, r0, r1
- movs r6, 0
-_0806AEF8:
- ldrb r0, [r5]
- lsls r0, 3
- ldrb r1, [r5, 0x1]
- lsls r1, 3
- ldr r2, [r5, 0x4]
- lsls r3, r6, 5
- movs r4, 0x80
- lsls r4, 2
- orrs r3, r4
- str r3, [sp]
- movs r3, 0
- bl sub_800142C
- adds r5, 0x8
- adds r6, 0x1
- cmp r6, 0x5
- ble _0806AEF8
- bl RunTasks
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806AF2C: .4byte gUnknown_0202E8FA
-_0806AF30: .4byte gUnknown_08376BB4
- thumb_func_end sub_806AEDC
-
- thumb_func_start sub_806AF34
-sub_806AF34: @ 806AF34
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_806B548
- pop {r0}
- bx r0
- thumb_func_end sub_806AF34
-
- thumb_func_start sub_806AF4C
-sub_806AF4C: @ 806AF4C
- push {r4,r5,lr}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r3, 24
- lsrs r3, 24
- cmp r1, 0xFF
- beq _0806AF64
- ldr r0, _0806AF84 @ =gBattleTypeFlags
- strh r1, [r0]
-_0806AF64:
- ldr r0, _0806AF88 @ =0x0201b000
- movs r5, 0x96
- lsls r5, 2
- adds r1, r0, r5
- strb r2, [r1]
- movs r2, 0x97
- lsls r2, 2
- adds r1, r0, r2
- str r4, [r1]
- adds r5, 0x1
- adds r0, r5
- strb r3, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806AF84: .4byte gBattleTypeFlags
-_0806AF88: .4byte 0x0201b000
- thumb_func_end sub_806AF4C
-
- thumb_func_start sub_806AF8C
-sub_806AF8C: @ 806AF8C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r3, 24
- lsrs r3, 24
- bl sub_806AF4C
- ldr r0, _0806AFA8 @ =sub_806B460
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0806AFA8: .4byte sub_806B460
- thumb_func_end sub_806AF8C
-
- thumb_func_start OpenPartyMenu
-OpenPartyMenu: @ 806AFAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _0806AFCC @ =gUnknown_08376C74
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 2
- adds r3, r2
- ldr r2, [r3]
- ldrb r3, [r3, 0x8]
- bl sub_806AF8C
- pop {r0}
- bx r0
- .align 2, 0
-_0806AFCC: .4byte gUnknown_08376C74
- thumb_func_end OpenPartyMenu
-
- thumb_func_start sub_806AFD0
-sub_806AFD0: @ 806AFD0
- push {r4,r5,lr}
- ldr r1, _0806AFF0 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x9
- bls _0806AFE6
- b _0806B11A
-_0806AFE6:
- lsls r0, 2
- ldr r1, _0806AFF4 @ =_0806AFF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806AFF0: .4byte 0x0201b000
-_0806AFF4: .4byte _0806AFF8
- .align 2, 0
-_0806AFF8:
- .4byte _0806B020
- .4byte _0806B060
- .4byte _0806B066
- .4byte _0806B07A
- .4byte _0806B0A4
- .4byte _0806B0AA
- .4byte _0806B0BC
- .4byte _0806B0C2
- .4byte _0806B0D4
- .4byte _0806B0EC
-_0806B020:
- ldr r0, _0806B048 @ =0x00000266
- adds r5, r4, r0
- movs r1, 0
- ldrsh r3, [r5, r1]
- ldr r0, _0806B04C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r3, r0
- bge _0806B054
- movs r2, 0x98
- lsls r2, 2
- adds r0, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r5]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _0806B050 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- b _0806B114
- .align 2, 0
-_0806B048: .4byte 0x00000266
-_0806B04C: .4byte gPlayerPartyCount
-_0806B050: .4byte gPlayerParty
-_0806B054:
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _0806B0E0
-_0806B060:
- bl LoadHeldItemIconGraphics
- b _0806B0D8
-_0806B066:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _0806B0E0
-_0806B07A:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _0806B0A0 @ =0x00000266
- adds r5, r4, r2
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B114
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _0806B0E0
- .align 2, 0
-_0806B0A0: .4byte 0x00000266
-_0806B0A4:
- bl PartyMenuPrintMonsLevelOrStatus
- b _0806B0D8
-_0806B0AA:
- bl PrintPartyMenuMonNicknames
- ldr r1, _0806B0B8 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _0806B0E0
- .align 2, 0
-_0806B0B8: .4byte 0x0201b000
-_0806B0BC:
- bl PartyMenuTryPrintMonsHP
- b _0806B0D8
-_0806B0C2:
- bl nullsub_13
- ldr r1, _0806B0D0 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _0806B0E0
- .align 2, 0
-_0806B0D0: .4byte 0x0201b000
-_0806B0D4:
- bl PartyMenuDrawHPBars
-_0806B0D8:
- ldr r1, _0806B0E8 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
-_0806B0E0:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0806B11A
- .align 2, 0
-_0806B0E8: .4byte 0x0201b000
-_0806B0EC:
- ldr r0, _0806B110 @ =0x00000266
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B114
- movs r1, 0
- strh r1, [r5]
- movs r2, 0x99
- lsls r2, 2
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0x1
- b _0806B11C
- .align 2, 0
-_0806B110: .4byte 0x00000266
-_0806B114:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_0806B11A:
- movs r0, 0
-_0806B11C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806AFD0
-
- thumb_func_start sub_806B124
-sub_806B124: @ 806B124
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r0, _0806B144 @ =gMain
- ldr r1, _0806B148 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x11
- bls _0806B13A
- b _0806B450
-_0806B13A:
- lsls r0, 2
- ldr r1, _0806B14C @ =_0806B150
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806B144: .4byte gMain
-_0806B148: .4byte 0x0000043c
-_0806B14C: .4byte _0806B150
- .align 2, 0
-_0806B150:
- .4byte _0806B198
- .4byte _0806B240
- .4byte _0806B246
- .4byte _0806B27C
- .4byte _0806B282
- .4byte _0806B2AC
- .4byte _0806B2B2
- .4byte _0806B2D0
- .4byte _0806B2EC
- .4byte _0806B318
- .4byte _0806B344
- .4byte _0806B37C
- .4byte _0806B382
- .4byte _0806B3C0
- .4byte _0806B3CC
- .4byte _0806B3E4
- .4byte _0806B40C
- .4byte _0806B440
-_0806B198:
- movs r0, 0
- bl SetVBlankCallback
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r2, sp, 0x8
- mov r8, r2
- add r2, sp, 0x4
- movs r6, 0
- ldr r1, _0806B22C @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _0806B230 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0806B1BC:
- strh r6, [r2]
- add r0, sp, 0x4
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _0806B1BC
- strh r6, [r2]
- add r2, sp, 0x4
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r3, r12
- orrs r0, r3
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x8]
- ldr r2, _0806B22C @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- add r0, sp, 0x4
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r2, _0806B234 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r1, _0806B238 @ =gMain
- ldr r2, _0806B23C @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B22C: .4byte 0x040000d4
-_0806B230: .4byte 0x81000800
-_0806B234: .4byte gPaletteFade
-_0806B238: .4byte gMain
-_0806B23C: .4byte 0x0000043c
-_0806B240:
- bl remove_some_task
- b _0806B426
-_0806B246:
- bl sub_806B4A8
- ldr r1, _0806B26C @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- strh r2, [r0]
- ldr r3, _0806B270 @ =0x00000266
- adds r0, r1, r3
- strh r2, [r0]
- movs r0, 0x9A
- lsls r0, 2
- adds r1, r0
- strh r2, [r1]
- ldr r1, _0806B274 @ =gMain
- ldr r2, _0806B278 @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B26C: .4byte 0x0201b000
-_0806B270: .4byte 0x00000266
-_0806B274: .4byte gMain
-_0806B278: .4byte 0x0000043c
-_0806B27C:
- bl ResetSpriteData
- b _0806B426
-_0806B282:
- ldr r0, _0806B2A0 @ =0x0201b000
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806B298
- cmp r0, 0x5
- beq _0806B298
- bl ResetTasks
-_0806B298:
- ldr r1, _0806B2A4 @ =gMain
- ldr r2, _0806B2A8 @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B2A0: .4byte 0x0201b000
-_0806B2A4: .4byte gMain
-_0806B2A8: .4byte 0x0000043c
-_0806B2AC:
- bl FreeAllSpritePalettes
- b _0806B426
-_0806B2B2:
- ldr r4, _0806B2CC @ =0x0201b000
- movs r1, 0x97
- lsls r1, 2
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- movs r2, 0x98
- lsls r2, 2
- adds r1, r4, r2
- strb r0, [r1]
- b _0806B426
- .align 2, 0
-_0806B2CC: .4byte 0x0201b000
-_0806B2D0:
- ldr r0, _0806B2E0 @ =gWindowConfig_81E6C90
- bl SetUpWindowConfig
- ldr r1, _0806B2E4 @ =gMain
- ldr r0, _0806B2E8 @ =0x0000043c
- adds r1, r0
- b _0806B42C
- .align 2, 0
-_0806B2E0: .4byte gWindowConfig_81E6C90
-_0806B2E4: .4byte gMain
-_0806B2E8: .4byte 0x0000043c
-_0806B2EC:
- ldr r4, _0806B308 @ =gUnknown_03004210
- ldr r1, _0806B30C @ =gWindowConfig_81E6C90
- adds r0, r4, 0
- bl InitWindowFromConfig
- adds r0, r4, 0
- movs r1, 0x1
- bl MultistepInitWindowTileData
- ldr r1, _0806B310 @ =gMain
- ldr r2, _0806B314 @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B308: .4byte gUnknown_03004210
-_0806B30C: .4byte gWindowConfig_81E6C90
-_0806B310: .4byte gMain
-_0806B314: .4byte 0x0000043c
-_0806B318:
- bl MultistepLoadFont
- cmp r0, 0
- bne _0806B322
- b _0806B450
-_0806B322:
- ldr r0, _0806B338 @ =0x0201b000
- movs r3, 0x99
- lsls r3, 2
- adds r0, r3
- movs r1, 0x1
- strh r1, [r0]
- ldr r1, _0806B33C @ =gMain
- ldr r0, _0806B340 @ =0x0000043c
- adds r1, r0
- b _0806B42C
- .align 2, 0
-_0806B338: .4byte 0x0201b000
-_0806B33C: .4byte gMain
-_0806B340: .4byte 0x0000043c
-_0806B344:
- ldr r0, _0806B368 @ =0x0201b000
- movs r1, 0x99
- lsls r1, 2
- adds r4, r0, r1
- ldrb r0, [r4]
- bl LoadPartyMenuGraphics
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B374
- movs r0, 0
- strh r0, [r4]
- ldr r1, _0806B36C @ =gMain
- ldr r2, _0806B370 @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B368: .4byte 0x0201b000
-_0806B36C: .4byte gMain
-_0806B370: .4byte 0x0000043c
-_0806B374:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0806B450
-_0806B37C:
- bl sub_809D51C
- b _0806B426
-_0806B382:
- ldr r2, _0806B3B0 @ =gUnknown_08376C74
- ldr r0, _0806B3B4 @ =0x0201b000
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B450
- ldr r1, _0806B3B8 @ =gMain
- ldr r2, _0806B3BC @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B3B0: .4byte gUnknown_08376C74
-_0806B3B4: .4byte 0x0201b000
-_0806B3B8: .4byte gMain
-_0806B3BC: .4byte 0x0000043c
-_0806B3C0:
- ldr r0, _0806B3C8 @ =gWindowConfig_81E6CC8
- bl MultistepInitMenuWindowBegin
- b _0806B426
- .align 2, 0
-_0806B3C8: .4byte gWindowConfig_81E6CC8
-_0806B3CC:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- beq _0806B450
- ldr r1, _0806B3DC @ =gMain
- ldr r0, _0806B3E0 @ =0x0000043c
- adds r1, r0
- b _0806B42C
- .align 2, 0
-_0806B3DC: .4byte gMain
-_0806B3E0: .4byte 0x0000043c
-_0806B3E4:
- ldr r0, _0806B3FC @ =0x0201b000
- ldr r1, _0806B400 @ =0x00000259
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_806D538
- ldr r1, _0806B404 @ =gMain
- ldr r2, _0806B408 @ =0x0000043c
- adds r1, r2
- b _0806B42C
- .align 2, 0
-_0806B3FC: .4byte 0x0201b000
-_0806B400: .4byte 0x00000259
-_0806B404: .4byte gMain
-_0806B408: .4byte 0x0000043c
-_0806B40C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _0806B434 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
-_0806B426:
- ldr r1, _0806B438 @ =gMain
- ldr r3, _0806B43C @ =0x0000043c
- adds r1, r3
-_0806B42C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0806B450
- .align 2, 0
-_0806B434: .4byte gPaletteFade
-_0806B438: .4byte gMain
-_0806B43C: .4byte 0x0000043c
-_0806B440:
- ldr r0, _0806B44C @ =sub_806AF34
- bl SetVBlankCallback
- movs r0, 0x1
- b _0806B452
- .align 2, 0
-_0806B44C: .4byte sub_806AF34
-_0806B450:
- movs r0, 0
-_0806B452:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806B124
-
- thumb_func_start sub_806B460
-sub_806B460: @ 806B460
- push {lr}
- b _0806B470
-_0806B464:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806B49C
-_0806B470:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B464
- ldr r1, _0806B4A0 @ =0x0201b000
- movs r2, 0x96
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _0806B496
- adds r2, 0x8
- adds r0, r1, r2
- ldrb r0, [r0]
- movs r1, 0
- bl sub_806BF74
-_0806B496:
- ldr r0, _0806B4A4 @ =sub_806AEDC
- bl SetMainCallback2
-_0806B49C:
- pop {r0}
- bx r0
- .align 2, 0
-_0806B4A0: .4byte 0x0201b000
-_0806B4A4: .4byte sub_806AEDC
- thumb_func_end sub_806B460
-
- thumb_func_start sub_806B4A8
-sub_806B4A8: @ 806B4A8
- push {lr}
- movs r0, 0
- bl SetHBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x8
- ldr r2, _0806B50C @ =0x00001e05
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0806B510 @ =0x00000703
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0806B514 @ =0x00000f08
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0806B518 @ =0x00000602
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0806B51C @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x40
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r2, _0806B520 @ =REG_BG3VOFS
- strh r1, [r2]
- ldr r1, _0806B524 @ =0x0000ffff
- adds r0, r1, 0
- strh r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_0806B50C: .4byte 0x00001e05
-_0806B510: .4byte 0x00000703
-_0806B514: .4byte 0x00000f08
-_0806B518: .4byte 0x00000602
-_0806B51C: .4byte REG_BLDCNT
-_0806B520: .4byte REG_BG3VOFS
-_0806B524: .4byte 0x0000ffff
- thumb_func_end sub_806B4A8
-
- thumb_func_start IsLinkDoubleBattle
-IsLinkDoubleBattle: @ 806B528
- push {lr}
- ldr r0, _0806B53C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x4B
- ands r0, r1
- cmp r0, 0x4B
- beq _0806B540
- movs r0, 0
- b _0806B542
- .align 2, 0
-_0806B53C: .4byte gBattleTypeFlags
-_0806B540:
- movs r0, 0x1
-_0806B542:
- pop {r1}
- bx r1
- thumb_func_end IsLinkDoubleBattle
-
- thumb_func_start sub_806B548
-sub_806B548: @ 806B548
- push {r4,lr}
- ldr r0, _0806B574 @ =0x0201b000
- ldr r1, _0806B578 @ =0x00000261
- adds r4, r0, r1
- ldrb r3, [r4]
- cmp r3, 0
- beq _0806B56E
- ldr r1, _0806B57C @ =gBGTilemapBuffers + 0x1000
- ldr r2, _0806B580 @ =0x06003000
- ldr r0, _0806B584 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0806B588 @ =0x80000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- cmp r3, 0x2
- bne _0806B56E
- movs r0, 0
- strb r0, [r4]
-_0806B56E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806B574: .4byte 0x0201b000
-_0806B578: .4byte 0x00000261
-_0806B57C: .4byte gBGTilemapBuffers + 0x1000
-_0806B580: .4byte 0x06003000
-_0806B584: .4byte 0x040000d4
-_0806B588: .4byte 0x80000400
- thumb_func_end sub_806B548
-
- thumb_func_start sub_806B58C
-sub_806B58C: @ 806B58C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0806B5A8
- ldr r0, _0806B5A4 @ =gUnknown_0202E8FA
- strb r2, [r0]
- b _0806B5C8
- .align 2, 0
-_0806B5A4: .4byte gUnknown_0202E8FA
-_0806B5A8:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B5C0
- ldr r1, _0806B5BC @ =gUnknown_0202E8FA
- movs r0, 0x2
- b _0806B5C4
- .align 2, 0
-_0806B5BC: .4byte gUnknown_0202E8FA
-_0806B5C0:
- ldr r1, _0806B5E4 @ =gUnknown_0202E8FA
- movs r0, 0x1
-_0806B5C4:
- strb r0, [r1]
- adds r0, r1, 0
-_0806B5C8:
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, _0806B5E8 @ =gUnknown_083769A8
- adds r4, r1, r0
- cmp r5, 0x8
- bls _0806B5DA
- b _0806B900
-_0806B5DA:
- lsls r0, r5, 2
- ldr r1, _0806B5EC @ =_0806B5F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806B5E4: .4byte gUnknown_0202E8FA
-_0806B5E8: .4byte gUnknown_083769A8
-_0806B5EC: .4byte _0806B5F0
- .align 2, 0
-_0806B5F0:
- .4byte _0806B614
- .4byte _0806B628
- .4byte _0806B638
- .4byte _0806B694
- .4byte _0806B71A
- .4byte _0806B7A2
- .4byte _0806B832
- .4byte _0806B8C6
- .4byte _0806B8E8
-_0806B614:
- ldr r0, _0806B624 @ =gBGTilemapBuffers + 0x1000
- movs r2, 0x80
- lsls r2, 4
- movs r1, 0
- bl memset
- b _0806B900
- .align 2, 0
-_0806B624: .4byte gBGTilemapBuffers + 0x1000
-_0806B628:
- ldrb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r2, 0x3
- bl sub_806B9A4
- adds r0, r4, 0
- movs r1, 0
- b _0806B8A8
-_0806B638:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806B666
- ldr r0, _0806B65C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _0806B660
- ldrb r0, [r4, 0x2]
- ldrb r1, [r4, 0x3]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x2
- movs r1, 0x1
- b _0806B8A8
- .align 2, 0
-_0806B65C: .4byte gPlayerPartyCount
-_0806B660:
- ldrb r0, [r4, 0x2]
- ldrb r1, [r4, 0x3]
- b _0806B8BC
-_0806B666:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B684
- ldrb r0, [r4, 0x2]
- ldrb r1, [r4, 0x3]
- movs r2, 0x4
- bl sub_806B9A4
- adds r0, r4, 0x2
- movs r1, 0x1
- movs r2, 0x4
- b _0806B8AA
-_0806B684:
- ldrb r0, [r4, 0x2]
- ldrb r1, [r4, 0x3]
- movs r2, 0x3
- bl sub_806B9A4
- adds r0, r4, 0x2
- movs r1, 0x1
- b _0806B8A8
-_0806B694:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806B6C2
- ldr r0, _0806B6B8 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x2
- bls _0806B6BC
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x4
- movs r1, 0x2
- b _0806B8A8
- .align 2, 0
-_0806B6B8: .4byte gPlayerPartyCount
-_0806B6BC:
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- b _0806B8BC
-_0806B6C2:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B6F6
- ldr r0, _0806B6EC @ =gPlayerParty + 2 * 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B6F0
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x4
- movs r1, 0x2
- b _0806B8A8
- .align 2, 0
-_0806B6EC: .4byte gPlayerParty + 2 * 0x64
-_0806B6F0:
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- b _0806B8BC
-_0806B6F6:
- ldr r0, _0806B710 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x2
- bls _0806B714
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x4
- movs r1, 0x2
- b _0806B8A8
- .align 2, 0
-_0806B710: .4byte gPlayerPartyCount
-_0806B714:
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- b _0806B8BC
-_0806B71A:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806B74A
- ldr r0, _0806B740 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _0806B744
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x6
- movs r1, 0x3
- b _0806B8A8
- .align 2, 0
-_0806B740: .4byte gPlayerPartyCount
-_0806B744:
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- b _0806B8BC
-_0806B74A:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B77E
- ldr r0, _0806B774 @ =gPlayerParty + 3 * 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B778
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x6
- movs r1, 0x3
- b _0806B8A8
- .align 2, 0
-_0806B774: .4byte gPlayerParty + 3 * 0x64
-_0806B778:
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- b _0806B8BC
-_0806B77E:
- ldr r0, _0806B798 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _0806B79C
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0x6
- movs r1, 0x3
- b _0806B8A8
- .align 2, 0
-_0806B798: .4byte gPlayerPartyCount
-_0806B79C:
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- b _0806B8BC
-_0806B7A2:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806B7D2
- ldr r0, _0806B7C8 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0806B7CC
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0
- adds r0, 0x8
- movs r1, 0x4
- b _0806B8A8
- .align 2, 0
-_0806B7C8: .4byte gPlayerPartyCount
-_0806B7CC:
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- b _0806B8BC
-_0806B7D2:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B80A
- ldr r0, _0806B800 @ =gPlayerParty + 4 * 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B804
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- movs r2, 0
- movs r3, 0x4
- bl sub_806BA94
- adds r0, r4, 0
- adds r0, 0x8
- movs r1, 0x4
- movs r2, 0x4
- b _0806B8AA
- .align 2, 0
-_0806B800: .4byte gPlayerParty + 4 * 0x64
-_0806B804:
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- b _0806B884
-_0806B80A:
- ldr r0, _0806B828 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0806B82C
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0
- adds r0, 0x8
- movs r1, 0x4
- b _0806B8A8
- .align 2, 0
-_0806B828: .4byte gPlayerPartyCount
-_0806B82C:
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x9]
- b _0806B8BC
-_0806B832:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806B84C
- ldr r0, _0806B848 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0806B896
- b _0806B8B8
- .align 2, 0
-_0806B848: .4byte gPlayerPartyCount
-_0806B84C:
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806B88E
- ldr r0, _0806B87C @ =gPlayerParty + 5 * 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B880
- ldrb r0, [r4, 0xA]
- ldrb r1, [r4, 0xB]
- movs r2, 0
- movs r3, 0x4
- bl sub_806BA94
- adds r0, r4, 0
- adds r0, 0xA
- movs r1, 0x5
- movs r2, 0x4
- b _0806B8AA
- .align 2, 0
-_0806B87C: .4byte gPlayerParty + 5 * 0x64
-_0806B880:
- ldrb r0, [r4, 0xA]
- ldrb r1, [r4, 0xB]
-_0806B884:
- movs r2, 0x1
- movs r3, 0x4
- bl sub_806BA94
- b _0806B900
-_0806B88E:
- ldr r0, _0806B8B4 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x5
- bls _0806B8B8
-_0806B896:
- ldrb r0, [r4, 0xA]
- ldrb r1, [r4, 0xB]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- adds r0, r4, 0
- adds r0, 0xA
- movs r1, 0x5
-_0806B8A8:
- movs r2, 0x3
-_0806B8AA:
- movs r3, 0
- bl sub_806BF24
- b _0806B900
- .align 2, 0
-_0806B8B4: .4byte gPlayerPartyCount
-_0806B8B8:
- ldrb r0, [r4, 0xA]
- ldrb r1, [r4, 0xB]
-_0806B8BC:
- movs r2, 0x1
- movs r3, 0x3
- bl sub_806BA94
- b _0806B900
-_0806B8C6:
- ldr r0, _0806B8E4 @ =0x0201b000
- movs r1, 0x96
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0806B8DA
- movs r0, 0x1
- bl sub_806BB9C
-_0806B8DA:
- movs r0, 0x1
- bl sub_806BBEC
- b _0806B900
- .align 2, 0
-_0806B8E4: .4byte 0x0201b000
-_0806B8E8:
- ldr r0, _0806B8F8 @ =0x0201b000
- ldr r1, _0806B8FC @ =0x00000261
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x1
- b _0806B902
- .align 2, 0
-_0806B8F8: .4byte 0x0201b000
-_0806B8FC: .4byte 0x00000261
-_0806B900:
- movs r0, 0
-_0806B902:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806B58C
-
- thumb_func_start sub_806B908
-sub_806B908: @ 806B908
- push {r4,r5,lr}
- ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000
- movs r2, 0x80
- lsls r2, 4
- movs r1, 0
- bl memset
- ldr r1, _0806B94C @ =gUnknown_0202E8FA
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, _0806B950 @ =gUnknown_083769A8
- adds r4, r0, 0
- adds r4, 0x24
- ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64
- ldrb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r2, 0x3
- bl sub_806B9A4
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B958
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- b _0806B964
- .align 2, 0
-_0806B948: .4byte gBGTilemapBuffers + 0x1000
-_0806B94C: .4byte gUnknown_0202E8FA
-_0806B950: .4byte gUnknown_083769A8
-_0806B954: .4byte gPlayerParty + 1 * 0x64
-_0806B958:
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- movs r2, 0x1
- movs r3, 0x3
- bl sub_806BA94
-_0806B964:
- adds r0, r5, 0
- adds r0, 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806B980
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- movs r2, 0
- movs r3, 0x3
- bl sub_806BA94
- b _0806B98C
-_0806B980:
- ldrb r0, [r4, 0x6]
- ldrb r1, [r4, 0x7]
- movs r2, 0x1
- movs r3, 0x3
- bl sub_806BA94
-_0806B98C:
- ldr r0, _0806B99C @ =0x0201b000
- ldr r1, _0806B9A0 @ =0x00000261
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806B99C: .4byte 0x0201b000
-_0806B9A0: .4byte 0x00000261
- thumb_func_end sub_806B908
-
- thumb_func_start sub_806B9A4
-sub_806B9A4: @ 806B9A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r1, 21
- lsrs r1, 16
- str r1, [sp, 0x4]
- movs r1, 0
- lsls r0, 16
- mov r8, r0
- asrs r0, 16
- mov r10, r0
- ldr r4, _0806BA2C @ =gUnknown_083769D8
- mov r9, r4
-_0806B9CA:
- movs r3, 0
- adds r7, r1, 0x1
- mov r0, r10
- cmp r0, 0x1F
- bgt _0806BA12
- mov r4, r8
- asrs r2, r4, 16
- lsls r0, r1, 5
- ldr r4, [sp, 0x4]
- adds r6, r4, r0
- ldr r0, _0806BA30 @ =gBGTilemapBuffers + 0x1000
- mov r12, r0
- ldr r4, [sp]
- lsls r5, r4, 12
- movs r0, 0xB
- adds r4, r1, 0
- muls r4, r0
-_0806B9EC:
- adds r0, r2, r3
- cmp r0, 0
- blt _0806BA02
- adds r0, r6, r0
- lsls r0, 1
- add r0, r12
- adds r1, r4, r3
- add r1, r9
- ldrb r1, [r1]
- orrs r1, r5
- strh r1, [r0]
-_0806BA02:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xA
- bhi _0806BA12
- adds r0, r2, r3
- cmp r0, 0x1F
- ble _0806B9EC
-_0806BA12:
- lsls r0, r7, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _0806B9CA
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BA2C: .4byte gUnknown_083769D8
-_0806BA30: .4byte gBGTilemapBuffers + 0x1000
- thumb_func_end sub_806B9A4
-
- thumb_func_start sub_806BA34
-sub_806BA34: @ 806BA34
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 21
- lsrs r1, 16
- mov r8, r1
- movs r1, 0
- lsls r7, r0, 16
- asrs r0, r7, 16
- mov r12, r0
-_0806BA48:
- movs r2, 0
- adds r4, r1, 0x1
- mov r5, r12
- cmp r5, 0x1F
- bgt _0806BA7C
- asrs r3, r7, 16
- lsls r0, r1, 5
- mov r5, r8
- adds r1, r5, r0
- ldr r6, _0806BA90 @ =gBGTilemapBuffers + 0x1000
- movs r5, 0
-_0806BA5E:
- adds r0, r3, r2
- cmp r0, 0
- blt _0806BA6C
- adds r0, r1, r0
- lsls r0, 1
- adds r0, r6
- strh r5, [r0]
-_0806BA6C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bhi _0806BA7C
- adds r0, r3, r2
- cmp r0, 0x1F
- ble _0806BA5E
-_0806BA7C:
- lsls r0, r4, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _0806BA48
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BA90: .4byte gBGTilemapBuffers + 0x1000
- thumb_func_end sub_806BA34
-
- thumb_func_start sub_806BA94
-sub_806BA94: @ 806BA94
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- ldr r1, _0806BB30 @ =gUnknown_08376A5E
- mov r9, r1
- cmp r2, 0
- bne _0806BABC
- ldr r1, _0806BB34 @ =gUnknown_08376A25
- mov r9, r1
-_0806BABC:
- lsls r0, 21
- lsrs r0, 16
- str r0, [sp, 0x4]
- movs r1, 0
- lsls r4, 16
- mov r12, r4
- asrs r4, 16
- mov r10, r4
-_0806BACC:
- movs r2, 0
- adds r7, r1, 0x1
- mov r0, r10
- cmp r0, 0x1F
- bgt _0806BB16
- mov r4, r12
- asrs r3, r4, 16
- lsls r0, r1, 5
- ldr r4, [sp, 0x4]
- adds r6, r4, r0
- ldr r0, _0806BB38 @ =gBGTilemapBuffers + 0x1000
- mov r8, r0
- ldr r4, [sp]
- lsls r5, r4, 12
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- subs r4, r0, r1
-_0806BAF0:
- adds r0, r3, r2
- cmp r0, 0
- blt _0806BB06
- adds r0, r6, r0
- lsls r0, 1
- add r0, r8
- adds r1, r4, r2
- add r1, r9
- ldrb r1, [r1]
- orrs r1, r5
- strh r1, [r0]
-_0806BB06:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bhi _0806BB16
- adds r0, r3, r2
- cmp r0, 0x1F
- ble _0806BAF0
-_0806BB16:
- lsls r0, r7, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bls _0806BACC
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BB30: .4byte gUnknown_08376A5E
-_0806BB34: .4byte gUnknown_08376A25
-_0806BB38: .4byte gBGTilemapBuffers + 0x1000
- thumb_func_end sub_806BA94
-
- thumb_func_start sub_806BB3C
-sub_806BB3C: @ 806BB3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 21
- lsrs r1, 16
- mov r8, r1
- movs r1, 0
- lsls r7, r0, 16
- asrs r0, r7, 16
- mov r12, r0
-_0806BB50:
- movs r2, 0
- adds r4, r1, 0x1
- mov r5, r12
- cmp r5, 0x1F
- bgt _0806BB84
- asrs r3, r7, 16
- lsls r0, r1, 5
- mov r5, r8
- adds r1, r5, r0
- ldr r6, _0806BB98 @ =gBGTilemapBuffers + 0x1000
- movs r5, 0
-_0806BB66:
- adds r0, r3, r2
- cmp r0, 0
- blt _0806BB74
- adds r0, r1, r0
- lsls r0, 1
- adds r0, r6
- strh r5, [r0]
-_0806BB74:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bhi _0806BB84
- adds r0, r3, r2
- cmp r0, 0x1F
- ble _0806BB66
-_0806BB84:
- lsls r0, r4, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bls _0806BB50
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BB98: .4byte gBGTilemapBuffers + 0x1000
- thumb_func_end sub_806BB3C
-
- thumb_func_start sub_806BB9C
-sub_806BB9C: @ 806BB9C
- push {r4,lr}
- sub sp, 0x18
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0806BBE4 @ =gUnknown_08376CD4
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- ldr r3, _0806BBE8 @ =0x06003c30
- movs r2, 0
- lsls r4, 12
-_0806BBB6:
- lsls r0, r2, 1
- adds r1, r0, r3
- add r0, sp
- ldrh r0, [r0]
- adds r0, r4
- strh r0, [r1]
- adds r1, 0x40
- adds r0, r2, 0x6
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- adds r0, r4
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _0806BBB6
- add sp, 0x18
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BBE4: .4byte gUnknown_08376CD4
-_0806BBE8: .4byte 0x06003c30
- thumb_func_end sub_806BB9C
-
- thumb_func_start sub_806BBEC
-sub_806BBEC: @ 806BBEC
- push {r4,lr}
- sub sp, 0x18
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0806BC34 @ =gUnknown_08376CEC
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- ldr r3, _0806BC38 @ =0x06003cb0
- movs r2, 0
- lsls r4, 12
-_0806BC06:
- lsls r0, r2, 1
- adds r1, r0, r3
- add r0, sp
- ldrh r0, [r0]
- adds r0, r4
- strh r0, [r1]
- adds r1, 0x40
- adds r0, r2, 0x6
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- adds r0, r4
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _0806BC06
- add sp, 0x18
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BC34: .4byte gUnknown_08376CEC
-_0806BC38: .4byte 0x06003cb0
- thumb_func_end sub_806BBEC
-
- thumb_func_start sub_806BC3C
-sub_806BC3C: @ 806BC3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _0806BCB0 @ =gUnknown_08376918
- bl IsDoubleBattle
- lsls r4, 2
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r4, r1
- adds r4, r6
- ldr r7, [r4]
- movs r6, 0
- adds r0, r5, 0
- movs r1, 0x7
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 19
- ldr r5, _0806BCB4 @ =gUnknown_08E9A300
- movs r0, 0x86
- lsls r0, 1
- adds r3, r0, 0
-_0806BC7C:
- adds r1, r6, r4
- lsls r2, r6, 1
- adds r2, r7
- lsls r0, r1, 1
- adds r0, r5
- ldrh r0, [r0]
- adds r0, r3, r0
- strh r0, [r2]
- adds r2, 0x40
- adds r1, 0x20
- lsls r1, 1
- adds r1, r5
- ldrh r1, [r1]
- adds r0, r3, r1
- strh r0, [r2]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x6
- bls _0806BC7C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BCB0: .4byte gUnknown_08376918
-_0806BCB4: .4byte gUnknown_08E9A300
- thumb_func_end sub_806BC3C
-
- thumb_func_start unref_sub_806BCB8
-unref_sub_806BCB8: @ 806BCB8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _0806BCE4 @ =gPlayerPartyCount
- ldrb r1, [r0]
- cmp r4, r1
- bcs _0806BCDE
- adds r6, r0, 0
-_0806BCCA:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806BC3C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- cmp r4, r0
- bcc _0806BCCA
-_0806BCDE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BCE4: .4byte gPlayerPartyCount
- thumb_func_end unref_sub_806BCB8
-
- thumb_func_start sub_806BCE8
-sub_806BCE8: @ 806BCE8
- push {r4,r5,lr}
- movs r5, 0
- b _0806BD46
-_0806BCEE:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0806BD20 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0806BD38
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0806BD24
- cmp r0, 0xFE
- beq _0806BD2E
- adds r0, r5, 0
- movs r1, 0x46
- bl sub_806BC3C
- b _0806BD40
- .align 2, 0
-_0806BD20: .4byte gPlayerParty
-_0806BD24:
- adds r0, r5, 0
- movs r1, 0x54
- bl sub_806BC3C
- b _0806BD40
-_0806BD2E:
- adds r0, r5, 0
- movs r1, 0x62
- bl sub_806BC3C
- b _0806BD40
-_0806BD38:
- adds r0, r5, 0
- movs r1, 0x46
- bl sub_806BC3C
-_0806BD40:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0806BD46:
- ldr r0, _0806BD54 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- bcc _0806BCEE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BD54: .4byte gPlayerPartyCount
- thumb_func_end sub_806BCE8
-
- thumb_func_start sub_806BD58
-sub_806BD58: @ 806BD58
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0806BD7C @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806CA18
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806BD7C: .4byte SpriteCallbackDummy
- thumb_func_end sub_806BD58
-
- thumb_func_start sub_806BD80
-sub_806BD80: @ 806BD80
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _0806BD9C @ =gMain
- ldrh r0, [r0, 0x30]
- cmp r0, 0x20
- beq _0806BDB2
- cmp r0, 0x20
- bgt _0806BDA0
- cmp r0, 0x10
- beq _0806BDB6
- b _0806BDB8
- .align 2, 0
-_0806BD9C: .4byte gMain
-_0806BDA0:
- cmp r0, 0x40
- beq _0806BDAA
- cmp r0, 0x80
- beq _0806BDAE
- b _0806BDB8
-_0806BDAA:
- movs r4, 0xFF
- b _0806BDB8
-_0806BDAE:
- movs r4, 0x1
- b _0806BDB8
-_0806BDB2:
- movs r4, 0xFE
- b _0806BDB8
-_0806BDB6:
- movs r4, 0x2
-_0806BDB8:
- lsls r0, r4, 24
- cmp r0, 0
- bne _0806BDDC
- bl sub_80F92BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806BDD0
- cmp r0, 0x2
- beq _0806BDD4
- b _0806BDD6
-_0806BDD0:
- movs r4, 0xFF
- b _0806BDD6
-_0806BDD4:
- movs r4, 0x1
-_0806BDD6:
- lsls r0, r4, 24
- cmp r0, 0
- beq _0806BDF0
-_0806BDDC:
- asrs r1, r0, 24
- adds r0, r5, 0
- bl sub_806BF74
- ldr r0, _0806BDEC @ =gMain
- ldrh r0, [r0, 0x30]
- b _0806BE2C
- .align 2, 0
-_0806BDEC: .4byte gMain
-_0806BDF0:
- ldr r0, _0806BE1C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806BE24
- ldr r4, _0806BE20 @ =gSprites
- adds r0, r5, 0
- bl sub_806CA00
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x7
- bne _0806BE24
- movs r0, 0x2
- b _0806BE2C
- .align 2, 0
-_0806BE1C: .4byte gMain
-_0806BE20: .4byte gSprites
-_0806BE24:
- ldr r0, _0806BE34 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
-_0806BE2C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0806BE34: .4byte gMain
- thumb_func_end sub_806BD80
-
- thumb_func_start sub_806BE38
-sub_806BE38: @ 806BE38
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _0806BE54 @ =gMain
- ldrh r1, [r0, 0x30]
- adds r6, r0, 0
- cmp r1, 0x20
- beq _0806BE6A
- cmp r1, 0x20
- bgt _0806BE58
- cmp r1, 0x10
- beq _0806BE6E
- b _0806BE70
- .align 2, 0
-_0806BE54: .4byte gMain
-_0806BE58:
- cmp r1, 0x40
- beq _0806BE62
- cmp r1, 0x80
- beq _0806BE66
- b _0806BE70
-_0806BE62:
- movs r4, 0xFF
- b _0806BE8E
-_0806BE66:
- movs r4, 0x1
- b _0806BE8E
-_0806BE6A:
- movs r4, 0xFE
- b _0806BE8E
-_0806BE6E:
- movs r4, 0x2
-_0806BE70:
- cmp r4, 0
- bne _0806BE8E
- bl sub_80F92BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806BE86
- cmp r0, 0x2
- beq _0806BE8A
- b _0806BE8C
-_0806BE86:
- movs r4, 0xFF
- b _0806BE8C
-_0806BE8A:
- movs r4, 0x1
-_0806BE8C:
- ldr r6, _0806BEA4 @ =gMain
-_0806BE8E:
- ldrh r2, [r6, 0x2E]
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0806BEA8
- adds r0, r5, 0
- bl sub_806C890
- movs r0, 0x8
- b _0806BEF0
- .align 2, 0
-_0806BEA4: .4byte gMain
-_0806BEA8:
- lsls r0, r4, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0806BEBA
- adds r0, r5, 0
- bl sub_806C658
- ldrh r0, [r6, 0x30]
- b _0806BEF0
-_0806BEBA:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0806BEE8
- ldr r4, _0806BEE4 @ =gSprites
- adds r0, r5, 0
- bl sub_806CA00
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x7
- bne _0806BEE8
- movs r0, 0x2
- b _0806BEF0
- .align 2, 0
-_0806BEE4: .4byte gSprites
-_0806BEE8:
- ldr r0, _0806BEF8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
-_0806BEF0:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0806BEF8: .4byte gMain
- thumb_func_end sub_806BE38
-
- thumb_func_start task_pc_turn_off
-task_pc_turn_off: @ 806BEFC
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r3, r1, 24
- ldrb r0, [r2]
- cmp r0, 0
- beq _0806BF14
- ldrb r1, [r2, 0x1]
- movs r2, 0
- bl sub_806BA94
- b _0806BF1E
-_0806BF14:
- ldrb r0, [r2]
- ldrb r1, [r2, 0x1]
- adds r2, r3, 0
- bl sub_806B9A4
-_0806BF1E:
- pop {r0}
- bx r0
- thumb_func_end task_pc_turn_off
-
- thumb_func_start sub_806BF24
-sub_806BF24: @ 806BF24
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0806BF70 @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806BF56
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0806BF56
- movs r4, 0x5
-_0806BF56:
- cmp r6, 0x1
- bne _0806BF60
- adds r0, r4, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
-_0806BF60:
- adds r0, r7, 0
- adds r1, r4, 0
- bl task_pc_turn_off
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806BF70: .4byte gPlayerParty
- thumb_func_end sub_806BF24
-
- thumb_func_start sub_806BF74
-sub_806BF74: @ 806BF74
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r4, r1, 24
- bl sub_806CA00
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0806C0C4 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r9
- adds r1, r5, 0
- movs r2, 0
- bl UpdateMonIconFrame_806DA44
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806BFB6
- b _0806C0D8
-_0806BFB6:
- cmp r5, 0
- beq _0806BFC2
- cmp r5, 0x2
- beq _0806BFC2
- cmp r5, 0x3
- bne _0806BFD2
-_0806BFC2:
- lsls r0, r5, 1
- ldr r1, _0806C0C8 @ =gUnknown_083769C0
- adds r0, r1
- adds r1, r5, 0
- movs r2, 0x3
- movs r3, 0
- bl sub_806BF24
-_0806BFD2:
- cmp r5, 0x1
- beq _0806BFDE
- cmp r5, 0x4
- beq _0806BFDE
- cmp r5, 0x5
- bne _0806BFEE
-_0806BFDE:
- lsls r0, r5, 1
- ldr r1, _0806C0C8 @ =gUnknown_083769C0
- adds r0, r1
- adds r1, r5, 0
- movs r2, 0x4
- movs r3, 0
- bl sub_806BF24
-_0806BFEE:
- cmp r5, 0x7
- bne _0806BFF8
- movs r0, 0x1
- bl sub_806BBEC
-_0806BFF8:
- lsls r2, r4, 24
- asrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_806C490
- ldr r2, _0806C0C4 @ =gSprites
- lsls r1, r6, 4
- adds r0, r1, r6
- lsls r0, 2
- adds r0, r2
- movs r2, 0x2E
- ldrsh r0, [r0, r2]
- mov r8, r1
- cmp r0, 0
- beq _0806C020
- cmp r0, 0x2
- beq _0806C020
- cmp r0, 0x3
- bne _0806C042
-_0806C020:
- ldr r0, _0806C0C4 @ =gSprites
- mov r4, r8
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r7, 0x2E
- ldrsh r0, [r1, r7]
- lsls r0, 1
- ldr r2, _0806C0C8 @ =gUnknown_083769C0
- adds r0, r2
- ldrh r1, [r1, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x3
- movs r3, 0x1
- bl sub_806BF24
-_0806C042:
- ldr r1, _0806C0C4 @ =gSprites
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 2
- adds r0, r1
- movs r4, 0x2E
- ldrsh r0, [r0, r4]
- cmp r0, 0x1
- beq _0806C05C
- cmp r0, 0x4
- beq _0806C05C
- cmp r0, 0x5
- bne _0806C07E
-_0806C05C:
- ldr r0, _0806C0C4 @ =gSprites
- mov r7, r8
- adds r1, r7, r6
- lsls r1, 2
- adds r1, r0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- lsls r0, 1
- ldr r2, _0806C0C8 @ =gUnknown_083769C0
- adds r0, r2
- ldrh r1, [r1, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x4
- movs r3, 0x1
- bl sub_806BF24
-_0806C07E:
- ldr r7, _0806C0C4 @ =gSprites
- mov r4, r8
- adds r0, r4, r6
- lsls r0, 2
- adds r4, r0, r7
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _0806C096
- movs r0, 0x2
- bl sub_806BBEC
-_0806C096:
- ldr r0, _0806C0CC @ =0x0201b000
- ldr r2, _0806C0D0 @ =0x00000261
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0]
- ldr r1, _0806C0D4 @ =gUnknown_083768B8
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- adds r0, 0x40
- ldrb r0, [r0]
- strh r0, [r4, 0x20]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- adds r0, 0x41
- ldrb r0, [r0]
- strh r0, [r4, 0x22]
- adds r0, r7, 0
- b _0806C1A4
- .align 2, 0
-_0806C0C4: .4byte gSprites
-_0806C0C8: .4byte gUnknown_083769C0
-_0806C0CC: .4byte 0x0201b000
-_0806C0D0: .4byte 0x00000261
-_0806C0D4: .4byte gUnknown_083768B8
-_0806C0D8:
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r5, 0x5
- bhi _0806C104
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- lsls r1, r5, 1
- adds r0, r1
- ldr r1, _0806C100 @ =gUnknown_083769A8
- adds r0, r1
- adds r1, r5, 0
- movs r2, 0x3
- movs r3, 0
- bl sub_806BF24
- b _0806C10A
- .align 2, 0
-_0806C100: .4byte gUnknown_083769A8
-_0806C104:
- movs r0, 0x1
- bl sub_806BBEC
-_0806C10A:
- cmp r7, 0
- bne _0806C11C
- lsls r2, r4, 24
- asrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_806C1E4
- b _0806C128
-_0806C11C:
- lsls r2, r4, 24
- asrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_806C310
-_0806C128:
- ldr r1, _0806C160 @ =gSprites
- lsls r2, r6, 4
- adds r0, r2, r6
- lsls r0, 2
- adds r1, r0, r1
- ldrh r3, [r1, 0x2E]
- movs r4, 0x2E
- ldrsh r0, [r1, r4]
- mov r8, r2
- cmp r0, 0x5
- bgt _0806C168
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- movs r2, 0x2E
- ldrsh r1, [r1, r2]
- lsls r1, 1
- adds r0, r1
- ldr r1, _0806C164 @ =gUnknown_083769A8
- adds r0, r1
- lsls r1, r3, 24
- lsrs r1, 24
- movs r2, 0x3
- movs r3, 0x1
- bl sub_806BF24
- b _0806C16E
- .align 2, 0
-_0806C160: .4byte gSprites
-_0806C164: .4byte gUnknown_083769A8
-_0806C168:
- movs r0, 0x2
- bl sub_806BBEC
-_0806C16E:
- ldr r0, _0806C1D4 @ =0x0201b000
- ldr r4, _0806C1D8 @ =0x00000261
- adds r0, r4
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, _0806C1DC @ =gSprites
- mov r0, r8
- adds r1, r0, r6
- lsls r1, 2
- adds r1, r4
- ldr r3, _0806C1E0 @ =gUnknown_083768B8
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- lsls r0, 2
- lsls r2, r7, 5
- adds r0, r2
- adds r0, r3
- ldrb r0, [r0]
- strh r0, [r1, 0x20]
- movs r7, 0x2E
- ldrsh r0, [r1, r7]
- lsls r0, 2
- adds r0, r2
- adds r0, r3
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x22]
- adds r0, r4, 0
-_0806C1A4:
- mov r1, r8
- adds r4, r1, r6
- lsls r4, 2
- adds r4, r0
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- movs r2, 0x1
- bl UpdateMonIconFrame_806DA44
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r5, r0
- beq _0806C1C8
- movs r0, 0x5
- bl PlaySE
-_0806C1C8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C1D4: .4byte 0x0201b000
-_0806C1D8: .4byte 0x00000261
-_0806C1DC: .4byte gSprites
-_0806C1E0: .4byte gUnknown_083768B8
- thumb_func_end sub_806BF74
-
- thumb_func_start sub_806C1E4
-sub_806C1E4: @ 806C1E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0x80
- lsls r0, 18
- adds r2, r0
- asrs r0, r2, 24
- cmp r0, 0x4
- bls _0806C200
- b _0806C306
-_0806C200:
- lsls r0, 2
- ldr r1, _0806C20C @ =_0806C210
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806C20C: .4byte _0806C210
- .align 2, 0
-_0806C210:
- .4byte _0806C2EC
- .4byte _0806C238
- .4byte _0806C224
- .4byte _0806C25C
- .4byte _0806C2BC
-_0806C224:
- ldr r0, _0806C234 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x30]
- b _0806C306
- .align 2, 0
-_0806C234: .4byte gSprites
-_0806C238:
- cmp r3, 0
- beq _0806C266
- cmp r3, 0x7
- bne _0806C298
- ldr r2, _0806C254 @ =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- ldr r0, _0806C258 @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _0806C2AA
- .align 2, 0
-_0806C254: .4byte gSprites
-_0806C258: .4byte gPlayerPartyCount
-_0806C25C:
- ldr r0, _0806C278 @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r3, r0
- bne _0806C280
-_0806C266:
- ldr r2, _0806C27C @ =gSprites
- lsls r3, r4, 4
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0x7
- strh r1, [r0, 0x2E]
- b _0806C2AC
- .align 2, 0
-_0806C278: .4byte gPlayerPartyCount
-_0806C27C: .4byte gSprites
-_0806C280:
- cmp r3, 0x7
- bne _0806C298
- ldr r2, _0806C294 @ =gSprites
- lsls r3, r4, 4
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- b _0806C2AC
- .align 2, 0
-_0806C294: .4byte gSprites
-_0806C298:
- ldr r2, _0806C2B8 @ =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- lsls r0, r5, 24
- asrs r0, 24
- ldrh r5, [r1, 0x2E]
- adds r0, r5
-_0806C2AA:
- strh r0, [r1, 0x2E]
-_0806C2AC:
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
- b _0806C306
- .align 2, 0
-_0806C2B8: .4byte gSprites
-_0806C2BC:
- ldr r0, _0806C2E4 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _0806C306
- cmp r3, 0
- bne _0806C306
- ldr r0, _0806C2E8 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0806C2DE
- movs r0, 0x1
- strh r0, [r1, 0x30]
-_0806C2DE:
- ldrh r0, [r1, 0x30]
- strh r0, [r1, 0x2E]
- b _0806C306
- .align 2, 0
-_0806C2E4: .4byte gPlayerPartyCount
-_0806C2E8: .4byte gSprites
-_0806C2EC:
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0806C306
- ldr r0, _0806C30C @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x2E]
- strh r3, [r1, 0x30]
-_0806C306:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C30C: .4byte gSprites
- thumb_func_end sub_806C1E4
-
- thumb_func_start sub_806C310
-sub_806C310: @ 806C310
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0x80
- lsls r0, 18
- adds r2, r0
- asrs r0, r2, 24
- cmp r0, 0x4
- bls _0806C32C
- b _0806C486
-_0806C32C:
- lsls r0, 2
- ldr r1, _0806C338 @ =_0806C33C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806C338: .4byte _0806C33C
- .align 2, 0
-_0806C33C:
- .4byte _0806C44E
- .4byte _0806C38C
- .4byte _0806C350
- .4byte _0806C364
- .4byte _0806C3E8
-_0806C350:
- ldr r0, _0806C360 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x30]
- b _0806C486
- .align 2, 0
-_0806C360: .4byte gSprites
-_0806C364:
- cmp r3, 0x7
- bne _0806C37C
- ldr r2, _0806C378 @ =gSprites
- lsls r3, r4, 4
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- b _0806C3D8
- .align 2, 0
-_0806C378: .4byte gSprites
-_0806C37C:
- ldr r0, _0806C388 @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r3, r0
- beq _0806C390
- b _0806C3C4
- .align 2, 0
-_0806C388: .4byte gPlayerPartyCount
-_0806C38C:
- cmp r3, 0
- bne _0806C3A4
-_0806C390:
- ldr r2, _0806C3A0 @ =gSprites
- lsls r3, r4, 4
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0x7
- strh r1, [r0, 0x2E]
- b _0806C3D8
- .align 2, 0
-_0806C3A0: .4byte gSprites
-_0806C3A4:
- cmp r3, 0x7
- bne _0806C3C4
- ldr r2, _0806C3BC @ =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- ldr r0, _0806C3C0 @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _0806C3D6
- .align 2, 0
-_0806C3BC: .4byte gSprites
-_0806C3C0: .4byte gPlayerPartyCount
-_0806C3C4:
- ldr r2, _0806C3E4 @ =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- lsls r0, r5, 24
- asrs r0, 24
- ldrh r5, [r1, 0x2E]
- adds r0, r5
-_0806C3D6:
- strh r0, [r1, 0x2E]
-_0806C3D8:
- adds r0, r3, r4
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
- b _0806C486
- .align 2, 0
-_0806C3E4: .4byte gSprites
-_0806C3E8:
- cmp r3, 0
- bne _0806C418
- ldr r0, _0806C410 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x2
- bls _0806C486
- ldr r0, _0806C414 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x30]
- subs r0, r2, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0806C43A
- movs r0, 0x2
- strh r0, [r1, 0x2E]
- b _0806C486
- .align 2, 0
-_0806C410: .4byte gPlayerPartyCount
-_0806C414: .4byte gSprites
-_0806C418:
- cmp r3, 0x1
- bne _0806C486
- ldr r0, _0806C440 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0806C486
- ldr r0, _0806C444 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x30]
- subs r0, r2, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0806C448
-_0806C43A:
- strh r2, [r1, 0x2E]
- b _0806C486
- .align 2, 0
-_0806C440: .4byte gPlayerPartyCount
-_0806C444: .4byte gSprites
-_0806C448:
- movs r0, 0x4
- strh r0, [r1, 0x2E]
- b _0806C486
-_0806C44E:
- subs r0, r3, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806C46C
- ldr r0, _0806C468 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- b _0806C482
- .align 2, 0
-_0806C468: .4byte gSprites
-_0806C46C:
- subs r0, r3, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806C486
- ldr r0, _0806C48C @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
-_0806C482:
- strh r0, [r1, 0x2E]
- strh r3, [r1, 0x30]
-_0806C486:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C48C: .4byte gSprites
- thumb_func_end sub_806C310
-
- thumb_func_start sub_806C490
-sub_806C490: @ 806C490
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- movs r0, 0x80
- lsls r0, 18
- adds r2, r0
- asrs r0, r2, 24
- cmp r0, 0x4
- bls _0806C4AA
- b _0806C64E
-_0806C4AA:
- lsls r0, 2
- ldr r1, _0806C4B4 @ =_0806C4B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806C4B4: .4byte _0806C4B8
- .align 2, 0
-_0806C4B8:
- .4byte _0806C618
- .4byte _0806C524
- .4byte _0806C4CC
- .4byte _0806C4E0
- .4byte _0806C57C
-_0806C4CC:
- ldr r0, _0806C4DC @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x30]
- b _0806C64E
- .align 2, 0
-_0806C4DC: .4byte gSprites
-_0806C4E0:
- cmp r4, 0x7
- bne _0806C4FC
- ldr r2, _0806C4F8 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- adds r1, r2, 0
- adds r6, r3, 0
- b _0806C566
- .align 2, 0
-_0806C4F8: .4byte gSprites
-_0806C4FC:
- lsls r6, r5, 4
- b _0806C518
-_0806C500:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0806C520 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _0806C528
-_0806C518:
- cmp r4, 0x5
- bne _0806C500
- b _0806C558
- .align 2, 0
-_0806C520: .4byte gPlayerParty
-_0806C524:
- lsls r6, r5, 4
- b _0806C554
-_0806C528:
- ldr r1, _0806C534 @ =gSprites
- adds r0, r6, r5
- lsls r0, 2
- adds r0, r1
- strh r4, [r0, 0x2E]
- b _0806C566
- .align 2, 0
-_0806C534: .4byte gSprites
-_0806C538:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- beq _0806C554
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0806C574 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _0806C528
-_0806C554:
- cmp r4, 0
- bne _0806C538
-_0806C558:
- ldr r0, _0806C578 @ =gSprites
- adds r1, r6, r5
- lsls r1, 2
- adds r1, r0
- movs r2, 0x7
- strh r2, [r1, 0x2E]
- adds r1, r0, 0
-_0806C566:
- adds r0, r6, r5
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x30]
- b _0806C64E
- .align 2, 0
-_0806C574: .4byte gPlayerParty
-_0806C578: .4byte gSprites
-_0806C57C:
- cmp r4, 0
- bne _0806C5C8
- ldr r0, _0806C5AC @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r4, r1, r0
- ldrh r1, [r4, 0x30]
- subs r0, r1, 0x2
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0806C5E2
- ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806C5B4
- movs r0, 0x2
- strh r0, [r4, 0x2E]
- b _0806C64E
- .align 2, 0
-_0806C5AC: .4byte gSprites
-_0806C5B0: .4byte gPlayerParty + 2 * 0x64
-_0806C5B4:
- adds r0, r5, 0
- adds r0, 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806C64E
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- b _0806C64E
-_0806C5C8:
- cmp r4, 0x1
- bne _0806C64E
- ldr r0, _0806C5E8 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r4, r1, r0
- ldrh r1, [r4, 0x30]
- subs r0, r1, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0806C5EC
-_0806C5E2:
- strh r1, [r4, 0x2E]
- b _0806C64E
- .align 2, 0
-_0806C5E8: .4byte gSprites
-_0806C5EC:
- ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806C604
- movs r0, 0x4
- strh r0, [r4, 0x2E]
- b _0806C64E
- .align 2, 0
-_0806C600: .4byte gPlayerParty + 4 * 0x64
-_0806C604:
- adds r0, r5, 0
- adds r0, 0x64
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0806C64E
- movs r0, 0x5
- strh r0, [r4, 0x2E]
- b _0806C64E
-_0806C618:
- subs r0, r4, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806C634
- ldr r0, _0806C630 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- b _0806C64A
- .align 2, 0
-_0806C630: .4byte gSprites
-_0806C634:
- subs r0, r4, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806C64E
- ldr r0, _0806C654 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
-_0806C64A:
- strh r0, [r1, 0x2E]
- strh r4, [r1, 0x30]
-_0806C64E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C654: .4byte gSprites
- thumb_func_end sub_806C490
-
- thumb_func_start sub_806C658
-sub_806C658: @ 806C658
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r4, r1, 24
- bl sub_806CA00
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0806C6A0 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r8
- adds r1, r6, 0
- movs r2, 0
- bl UpdateMonIconFrame_806DA44
- cmp r6, 0x5
- bhi _0806C6A8
- lsls r0, r6, 1
- ldr r1, _0806C6A4 @ =gUnknown_083769A8
- adds r0, r1
- adds r1, r6, 0
- movs r2, 0x3
- movs r3, 0
- bl sub_806BF24
- b _0806C6BA
- .align 2, 0
-_0806C6A0: .4byte gSprites
-_0806C6A4: .4byte gUnknown_083769A8
-_0806C6A8:
- cmp r6, 0x6
- bne _0806C6B4
- movs r0, 0x1
- bl sub_806BB9C
- b _0806C6BA
-_0806C6B4:
- movs r0, 0x1
- bl sub_806BBEC
-_0806C6BA:
- lsls r1, r4, 24
- movs r2, 0x80
- lsls r2, 18
- adds r0, r1, r2
- asrs r0, 24
- lsls r4, r5, 4
- adds r7, r1, 0
- cmp r0, 0x4
- bls _0806C6CE
- b _0806C7EA
-_0806C6CE:
- lsls r0, 2
- ldr r1, _0806C6D8 @ =_0806C6DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806C6D8: .4byte _0806C6DC
- .align 2, 0
-_0806C6DC:
- .4byte _0806C7D0
- .4byte _0806C708
- .4byte _0806C6F0
- .4byte _0806C740
- .4byte _0806C7A0
-_0806C6F0:
- ldr r1, _0806C704 @ =gSprites
- lsls r2, r5, 4
- adds r0, r2, r5
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x30]
- adds r4, r2, 0
- b _0806C7EA
- .align 2, 0
-_0806C704: .4byte gSprites
-_0806C708:
- cmp r6, 0
- bne _0806C720
- ldr r2, _0806C71C @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0x7
- strh r1, [r0, 0x2E]
- b _0806C78E
- .align 2, 0
-_0806C71C: .4byte gSprites
-_0806C720:
- cmp r6, 0x6
- bne _0806C77C
- ldr r2, _0806C738 @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldr r0, _0806C73C @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- b _0806C78C
- .align 2, 0
-_0806C738: .4byte gSprites
-_0806C73C: .4byte gPlayerPartyCount
-_0806C740:
- ldr r0, _0806C75C @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r6, r0
- bne _0806C764
- ldr r2, _0806C760 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0x6
- strh r1, [r0, 0x2E]
- b _0806C78E
- .align 2, 0
-_0806C75C: .4byte gPlayerPartyCount
-_0806C760: .4byte gSprites
-_0806C764:
- cmp r6, 0x7
- bne _0806C77C
- ldr r2, _0806C778 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- b _0806C78E
- .align 2, 0
-_0806C778: .4byte gSprites
-_0806C77C:
- ldr r2, _0806C79C @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- asrs r0, r7, 24
- ldrh r4, [r1, 0x2E]
- adds r0, r4
-_0806C78C:
- strh r0, [r1, 0x2E]
-_0806C78E:
- adds r4, r3, 0
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
- b _0806C7EA
- .align 2, 0
-_0806C79C: .4byte gSprites
-_0806C7A0:
- ldr r0, _0806C7C8 @ =gPlayerPartyCount
- ldrb r0, [r0]
- lsls r4, r5, 4
- cmp r0, 0x1
- bls _0806C7EA
- cmp r6, 0
- bne _0806C7EA
- ldr r0, _0806C7CC @ =gSprites
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0806C7C2
- movs r0, 0x1
- strh r0, [r1, 0x30]
-_0806C7C2:
- ldrh r0, [r1, 0x30]
- strh r0, [r1, 0x2E]
- b _0806C7EA
- .align 2, 0
-_0806C7C8: .4byte gPlayerPartyCount
-_0806C7CC: .4byte gSprites
-_0806C7D0:
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r5, 4
- cmp r0, 0x4
- bhi _0806C7EA
- ldr r0, _0806C82C @ =gSprites
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x2E]
- strh r6, [r1, 0x30]
-_0806C7EA:
- ldr r1, _0806C82C @ =gSprites
- adds r0, r4, r5
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, _0806C830 @ =gUnknown_083768B8
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2, 0x20]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- strh r0, [r2, 0x22]
- ldrh r3, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x5
- bgt _0806C838
- lsls r0, 1
- ldr r1, _0806C834 @ =gUnknown_083769A8
- adds r0, r1
- lsls r1, r3, 24
- lsrs r1, 24
- movs r2, 0x3
- movs r3, 0x1
- bl sub_806BF24
- b _0806C84A
- .align 2, 0
-_0806C82C: .4byte gSprites
-_0806C830: .4byte gUnknown_083768B8
-_0806C834: .4byte gUnknown_083769A8
-_0806C838:
- cmp r0, 0x6
- bne _0806C844
- movs r0, 0x2
- bl sub_806BB9C
- b _0806C84A
-_0806C844:
- movs r0, 0x2
- bl sub_806BBEC
-_0806C84A:
- ldr r0, _0806C884 @ =0x0201b000
- ldr r2, _0806C888 @ =0x00000261
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, _0806C88C @ =gSprites
- adds r4, r5
- lsls r4, 2
- adds r4, r0
- ldrh r1, [r4, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- movs r2, 0x1
- bl UpdateMonIconFrame_806DA44
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- cmp r6, r0
- beq _0806C878
- movs r0, 0x5
- bl PlaySE
-_0806C878:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C884: .4byte 0x0201b000
-_0806C888: .4byte 0x00000261
-_0806C88C: .4byte gSprites
- thumb_func_end sub_806C658
-
- thumb_func_start sub_806C890
-sub_806C890: @ 806C890
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r6, 0
- bl sub_806CA00
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0806C8D4 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- beq _0806C914
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- bl UpdateMonIconFrame_806DA44
- cmp r4, 0x5
- bhi _0806C8DC
- lsls r0, r4, 1
- ldr r1, _0806C8D8 @ =gUnknown_083769A8
- adds r0, r1
- adds r1, r4, 0
- movs r2, 0x3
- movs r3, 0
- bl sub_806BF24
- b _0806C8E2
- .align 2, 0
-_0806C8D4: .4byte gSprites
-_0806C8D8: .4byte gUnknown_083769A8
-_0806C8DC:
- movs r0, 0x1
- bl sub_806BBEC
-_0806C8E2:
- ldr r1, _0806C91C @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x30]
- movs r1, 0x6
- strh r1, [r0, 0x2E]
- ldr r2, _0806C920 @ =gUnknown_083768B8
- ldrb r1, [r2, 0x18]
- strh r1, [r0, 0x20]
- ldrb r1, [r2, 0x19]
- strh r1, [r0, 0x22]
- movs r0, 0x2
- bl sub_806BB9C
- ldr r0, _0806C924 @ =0x0201b000
- ldr r1, _0806C928 @ =0x00000261
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x5
- bl PlaySE
-_0806C914:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C91C: .4byte gSprites
-_0806C920: .4byte gUnknown_083768B8
-_0806C924: .4byte 0x0201b000
-_0806C928: .4byte 0x00000261
- thumb_func_end sub_806C890
-
- thumb_func_start sub_806C92C
-sub_806C92C: @ 806C92C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0806C960 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r1, 0x30]
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _0806C96A
- cmp r6, 0
- bne _0806C964
- cmp r4, 0
- bne _0806C97C
- movs r4, 0x1
- b _0806C97C
- .align 2, 0
-_0806C960: .4byte gSprites
-_0806C964:
- cmp r4, 0
- beq _0806C97C
- b _0806C97A
-_0806C96A:
- cmp r6, 0x1
- bhi _0806C976
- cmp r4, 0x1
- bhi _0806C97C
- movs r4, 0x2
- b _0806C97C
-_0806C976:
- cmp r4, 0x1
- bls _0806C97C
-_0806C97A:
- movs r4, 0
-_0806C97C:
- ldr r1, _0806C990 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- strh r4, [r0, 0x30]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C990: .4byte gSprites
- thumb_func_end sub_806C92C
-
- thumb_func_start sub_806C994
-sub_806C994: @ 806C994
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl sub_806CA00
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0806C9C0 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strh r4, [r1, 0x2E]
- bl sub_806C92C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C9C0: .4byte gSprites
- thumb_func_end sub_806C994
-
- thumb_func_start sub_806C9C4
-sub_806C9C4: @ 806C9C4
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- bl sub_806CA00
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0806C9FC @ =gSprites
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r2, r3
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r1, 0x20]
- strh r0, [r2, 0x20]
- ldrh r0, [r1, 0x22]
- strh r0, [r2, 0x22]
- ldrh r0, [r1, 0x2E]
- strh r0, [r2, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806C9FC: .4byte gSprites
- thumb_func_end sub_806C9C4
-
- thumb_func_start sub_806CA00
-sub_806CA00: @ 806CA00
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0806CA14 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0xE]
- lsrs r0, 8
- bx lr
- .align 2, 0
-_0806CA14: .4byte gTasks
- thumb_func_end sub_806CA00
-
- thumb_func_start sub_806CA18
-sub_806CA18: @ 806CA18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _0806CA34 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- ldrb r0, [r2, 0xE]
- lsrs r1, 16
- orrs r0, r1
- strh r0, [r2, 0xE]
- bx lr
- .align 2, 0
-_0806CA34: .4byte gTasks
- thumb_func_end sub_806CA18
-
- thumb_func_start sub_806CA38
-sub_806CA38: @ 806CA38
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_806CA00
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0806CA5C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0806CA5C: .4byte gSprites
- thumb_func_end sub_806CA38
-
- thumb_func_start sub_806CA60
-sub_806CA60: @ 806CA60
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0806CAD8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0806CADC @ =TaskDummy
- str r1, [r0]
- ldr r5, _0806CAE0 @ =0x02001000
- strb r4, [r5]
- ldr r0, _0806CAE4 @ =sub_806CB74
- movs r1, 0
- bl CreateTask
- ldr r0, _0806CAE8 @ =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- strb r0, [r5, 0x1]
- ldrb r1, [r5, 0x1]
- adds r0, r4, 0
- bl sub_806C9C4
- adds r0, r4, 0
- bl sub_806CA00
- strb r0, [r5, 0x2]
- ldr r1, _0806CAEC @ =0x0001a272
- adds r0, r5, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_806D538
- ldr r2, _0806CAF0 @ =gSprites
- ldrb r0, [r5, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- lsls r0, 1
- ldr r2, _0806CAF4 @ =gUnknown_083769A8
- adds r0, r2
- ldrh r1, [r1, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x6
- movs r3, 0
- bl sub_806BF24
- ldr r0, _0806CAF8 @ =0x0001a261
- adds r5, r0
- movs r0, 0x2
- strb r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806CAD8: .4byte gTasks
-_0806CADC: .4byte TaskDummy
-_0806CAE0: .4byte 0x02001000
-_0806CAE4: .4byte sub_806CB74
-_0806CAE8: .4byte SpriteCallbackDummy
-_0806CAEC: .4byte 0x0001a272
-_0806CAF0: .4byte gSprites
-_0806CAF4: .4byte gUnknown_083769A8
-_0806CAF8: .4byte 0x0001a261
- thumb_func_end sub_806CA60
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/battle.h b/include/battle.h
index 47cb7cf8e..86e15ad49 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -19,6 +19,8 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_TYPE_LINK_DOUBLE (BATTLE_TYPE_MULTI | BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE)
+
#define BATTLE_WON 0x1
#define BATTLE_LOST 0x2
#define BATTLE_DREW 0x3
diff --git a/include/party_menu.h b/include/party_menu.h
index 510c12616..74ef72519 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -15,11 +15,11 @@ struct PartyPopupMenu
struct Unk201B000
{
- //u8 filler0[0x260];
struct Pokemon unk0[6];
- u8 filler258[1];
+ u8 unk258;
u8 unk259;
- u8 filler25A[6];
+ u8 filler25A[2];
+ TaskFunc taskFunc;
u8 unk260;
u8 unk261;
u8 unk262;
@@ -71,20 +71,23 @@ extern u8 ewram[];
#define EWRAM_1B000 ewram1B000_alt
void sub_806AEDC(void);
-void sub_806AF4C(u8 arg0, u8 arg1, void* arg2, u8 arg3);
-void OpenPartyMenu(u8, u8);
-void OpenPartyMenu();
+void sub_806AF4C(u8 a, u8 battleFlags, TaskFunc func, u8 d);
+void OpenPartyMenu(u8 a, u8 b);
bool8 sub_806B124(void);
-u8 IsLinkDoubleBattle(void);
+bool8 IsLinkDoubleBattle(void);
u8 sub_806B58C(u8);
u8 sub_806B58C(u8);
+void sub_806B908(void);
void sub_806BC3C(u8, u8);
+void sub_806BCE8(void);
u8 sub_806BD58(u8, u8);
u8 sub_806BD58(u8, u8);
-u16 sub_806BD80(u8);
-void task_pc_turn_off();
-void sub_806BF74(u8 arg0, s8 arg1);
-void sub_806C994(u8 arg0, u8 arg1);
+u16 sub_806BD80(u8 taskId);
+u16 sub_806BE38(u8 taskId);
+void task_pc_turn_off(const u8 *a, u8 b);
+void sub_806BF74(u8 taskId, s8 directionPressed);
+void sub_806C890(u8 taskId);
+void sub_806C994(u8 taskId, u8 b);
u8 sub_806CA38(u8 taskID);
void sub_806CB74(u8 taskId);
void sub_806CCE4(void);
diff --git a/ld_script.txt b/ld_script.txt
index b122d8ab5..7b5e18167 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -107,7 +107,6 @@ SECTIONS {
src/field_tasks.o(.text);
src/clock.o(.text);
src/reset_rtc_screen.o(.text);
- asm/party_menu.o(.text);
src/party_menu.o(.text);
src/start_menu.o(.text);
src/menu.o(.text);
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index 9a71c09e8..fdc1d503d 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -22,7 +22,6 @@
extern u8 ewram[];
#define UNK_201606C_ARRAY (ewram + 0x1606C) // lazy define but whatever.
-extern u8 IsLinkDoubleBattle(void);
extern u8 sub_806BD58(u8, u8);
extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void nullsub_13(void);
@@ -34,7 +33,6 @@ extern void sub_806AEDC(void);
extern u8 *sub_8040D08();
extern void sub_8040B8C(void);
extern void nullsub_14();
-extern void OpenPartyMenu();
extern u8 sub_803FBBC(void);
extern u8 gPlayerPartyCount;
diff --git a/src/choose_party.c b/src/choose_party.c
index f798baab1..cd63947a4 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -42,27 +42,20 @@ extern const u16 gBattleTowerBanlist[];
EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
-extern void OpenPartyMenu();
extern u8 sub_806BD58(u8, u8);
extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void sub_806BC3C(u8, u8);
extern u8 sub_806B58C(u8);
-extern u16 sub_806BE38();
-extern u8 sub_806CA38();
extern u8 sub_806B124();
-extern void sub_806C994();
extern void sub_806C658();
extern void sub_806AEDC(void);
extern void sub_806AF4C();
extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
-extern void sub_806C890();
-extern void sub_806B908(void);
extern void CreateMonIcon_806D99C(int, u8, int, struct UnknownPokemonStruct2 *);
extern void CreateHeldItemIcon_806DCD4(int, u8, int);
extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
extern bool8 sub_80F9344(void);
-extern void sub_806BCE8(void);
static void ClearPartySelection(void);
static bool8 IsMonAllowedInBattleTower(struct Pokemon *);
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 3f8417e6d..a20a15569 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -30,6 +30,8 @@ extern u8 unk_2000000[];
#define namingScreenData (*(struct NamingScreenData *)(unk_2000000))
+extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
+
const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp");
const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp");
diff --git a/src/party_menu.c b/src/party_menu.c
index 0f7e95612..b84b139bc 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -14,6 +14,7 @@
#include "mail_data.h"
#include "main.h"
#include "menu.h"
+#include "menu_helpers.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
@@ -29,12 +30,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
-#include "sprite.h"
-#include "palette.h"
-#include "event_data.h"
-#include "main.h"
-#include "battle_interface.h"
-#include "species.h"
+#include "util.h"
struct Unk201C000
{
@@ -62,7 +58,7 @@ struct UnknownStruct5
u16 *unk4;
};
-struct GenderIconCoords
+struct Coords8
{
u8 x;
u8 y;
@@ -90,9 +86,18 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
+struct PartyMenuFunctionsStruct
+{
+ /*0x0*/TaskFunc func1;
+ /*0x4*/TaskFunc func2;
+ /*0x8*/u8 unk8;
+};
+
#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000))
#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000))
+extern u16 gBattleTypeFlags;
+
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F6;
extern u16 gUnknown_0202E8F8;
@@ -102,10 +107,19 @@ extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
extern u16 gMoveToLearn;
-extern struct GenderIconCoords const gUnknown_08376738[12][6];
-extern struct GenderIconCoords const gUnknown_08376678[12][6];
+extern struct PartyMenuFunctionsStruct const gUnknown_08376C74[];
+extern u8 gUnknown_083769D8[];
+extern u8 gUnknown_08376A25[];
+extern u8 gUnknown_08376A5E[];
+extern u16 gUnknown_08E9A300[];
+extern const u16 gUnknown_08376CD4[];
+extern const u16 gUnknown_08376CEC[];
+extern u16 *const gUnknown_08376918[2][PARTY_SIZE];
+extern struct Coords8 const gUnknown_08376738[12][6];
+extern struct Coords8 const gUnknown_08376678[12][6];
extern struct PartyMenuWindowCoords const gUnknown_08376948[2][6];
extern struct PartyMenuWindowCoords const gUnknown_08376978[2][6];
+extern struct Coords8 const gUnknown_083768B8[3][8];
extern u8 *const gUnknown_08376624[];
extern const u8 gUnknown_083769C0[];
//extern const u16 gUnknown_083769A8[][6];
@@ -144,22 +158,8 @@ static void sub_8070D90(u8 taskId);
static void sub_806D5B8(u8 taskId);
static void sub_806D014(u8 taskId);
static void sub_806D118(u8 taskId);
-
-/*
-void sub_806AEDC(void)
-{
- const struct UnknownStruct5 *r5;
- s32 i;
-
- AnimateSprites();
- BuildOamBuffer();
- r5 = gUnknown_08376BB4[gUnknown_0202E8FA];
- for (i = 0; i < 6; i++)
- sub_800142C(r5[i].unk0 * 8, r5[i].unk1 * 8, r5[i].unk4, 0, (i << 5) | 0x200);
- RunTasks();
- UpdatePaletteFade();
-}
-*/
+static void sub_806B460(void);
+static void sub_806B548(void);
#if ENGLISH
#define WINDOW_LEFT (3)
@@ -175,14 +175,2548 @@ extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s
extern void sub_809D62C(struct Sprite *sprite);
extern void UpdateMonIconFrame_806DA0C(struct Sprite *sprite);
extern void UpdateMonIconFrame_806DA38(struct Sprite *sprite);
-extern void sub_806BB3C(s16 a, u8 b);
-extern void sub_806BA94(s16 a, u8 b, u8 c, u8 d);
-extern void sub_806B9A4(s16 a, u8 b, u8 c);
extern void SpriteCB_sub_806D37C(struct Sprite *sprite);
-extern void sub_806BA34(s16 a, u8 b);
-extern void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
extern void sub_806CD44(u8 taskId);
+extern u8 sub_806CA00(u8 taskId);
+extern void sub_806BA34(s16 a, u16 b);
+extern void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c);
+extern void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C1E4(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C310(u8 spriteId, u8 menuIndex, s8 directionPressed);
+extern void sub_806C658(u8 taskId, s8 directionPressed);
+extern void sub_806CA18(u8 taskId, u8 b);
+extern void sub_806B9A4(s16 a, u16 b, u8 c);
+extern void sub_806BA94(s16 a, u16 b, u8 c, u8 d);
+
+
+#ifdef NONMATCHING
+void sub_806AEDC(void)
+{
+ const struct UnknownStruct5 *var1;
+ s32 i;
+
+ AnimateSprites();
+ BuildOamBuffer();
+
+ var1 = gUnknown_08376BB4[gUnknown_0202E8FA];
+ for (i = 0; i < 6; i++)
+ {
+ sub_800142C(var1[i].unk0 * 8, var1[i].unk1 * 8, var1[i].unk4, 0, (i << 5) | 0x200);
+ }
+
+ RunTasks();
+ UpdatePaletteFade();
+}
+#else
+__attribute__((naked))
+void sub_806AEDC(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, _0806AF2C @ =gUnknown_0202E8FA\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 4\n\
+ ldr r1, _0806AF30 @ =gUnknown_08376BB4\n\
+ adds r5, r0, r1\n\
+ movs r6, 0\n\
+_0806AEF8:\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 3\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r1, 3\n\
+ ldr r2, [r5, 0x4]\n\
+ lsls r3, r6, 5\n\
+ movs r4, 0x80\n\
+ lsls r4, 2\n\
+ orrs r3, r4\n\
+ str r3, [sp]\n\
+ movs r3, 0\n\
+ bl sub_800142C\n\
+ adds r5, 0x8\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _0806AEF8\n\
+ bl RunTasks\n\
+ bl UpdatePaletteFade\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806AF2C: .4byte gUnknown_0202E8FA\n\
+_0806AF30: .4byte gUnknown_08376BB4\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_806AF34(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_806B548();
+}
+
+void sub_806AF4C(u8 a, u8 battleFlags, TaskFunc func, u8 d)
+{
+ if (battleFlags != 0xFF)
+ {
+ gBattleTypeFlags = battleFlags;
+ }
+
+ ewram1B000.unk258 = a;
+ ewram1B000.taskFunc = func;
+ ewram1B000.unk259 = d;
+}
+
+void sub_806AF8C(u8 a, u8 battleFlags, TaskFunc func, u8 d)
+{
+ sub_806AF4C(a, battleFlags, func, d);
+ SetMainCallback2(sub_806B460);
+}
+
+void OpenPartyMenu(u8 a, u8 battleFlags)
+{
+ sub_806AF8C(a, battleFlags, gUnknown_08376C74[a].func1, gUnknown_08376C74[a].unk8);
+}
+
+__attribute__((naked))
+bool8 sub_806AFD0(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r1, _0806AFF0 @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r1, r2\n\
+ movs r2, 0\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r4, r1, 0\n\
+ cmp r0, 0x9\n\
+ bls _0806AFE6\n\
+ b _0806B11A\n\
+_0806AFE6:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806AFF4 @ =_0806AFF8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806AFF0: .4byte 0x0201b000\n\
+_0806AFF4: .4byte _0806AFF8\n\
+ .align 2, 0\n\
+_0806AFF8:\n\
+ .4byte _0806B020\n\
+ .4byte _0806B060\n\
+ .4byte _0806B066\n\
+ .4byte _0806B07A\n\
+ .4byte _0806B0A4\n\
+ .4byte _0806B0AA\n\
+ .4byte _0806B0BC\n\
+ .4byte _0806B0C2\n\
+ .4byte _0806B0D4\n\
+ .4byte _0806B0EC\n\
+_0806B020:\n\
+ ldr r0, _0806B048 @ =0x00000266\n\
+ adds r5, r4, r0\n\
+ movs r1, 0\n\
+ ldrsh r3, [r5, r1]\n\
+ ldr r0, _0806B04C @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bge _0806B054\n\
+ movs r2, 0x98\n\
+ lsls r2, 2\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ ldrb r1, [r5]\n\
+ movs r2, 0x64\n\
+ muls r2, r3\n\
+ ldr r3, _0806B050 @ =gPlayerParty\n\
+ adds r2, r3\n\
+ bl TryCreatePartyMenuMonIcon\n\
+ b _0806B114\n\
+ .align 2, 0\n\
+_0806B048: .4byte 0x00000266\n\
+_0806B04C: .4byte gPlayerPartyCount\n\
+_0806B050: .4byte gPlayerParty\n\
+_0806B054:\n\
+ movs r0, 0\n\
+ strh r0, [r5]\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ b _0806B0E0\n\
+_0806B060:\n\
+ bl LoadHeldItemIconGraphics\n\
+ b _0806B0D8\n\
+_0806B066:\n\
+ movs r1, 0x98\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ bl CreateHeldItemIcons_806DC34\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r1, r4, r2\n\
+ b _0806B0E0\n\
+_0806B07A:\n\
+ movs r1, 0x98\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _0806B0A0 @ =0x00000266\n\
+ adds r5, r4, r2\n\
+ ldrb r1, [r5]\n\
+ bl sub_806BD58\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B114\n\
+ movs r0, 0\n\
+ strh r0, [r5]\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0A0: .4byte 0x00000266\n\
+_0806B0A4:\n\
+ bl PartyMenuPrintMonsLevelOrStatus\n\
+ b _0806B0D8\n\
+_0806B0AA:\n\
+ bl PrintPartyMenuMonNicknames\n\
+ ldr r1, _0806B0B8 @ =0x0201b000\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0B8: .4byte 0x0201b000\n\
+_0806B0BC:\n\
+ bl PartyMenuTryPrintMonsHP\n\
+ b _0806B0D8\n\
+_0806B0C2:\n\
+ bl nullsub_13\n\
+ ldr r1, _0806B0D0 @ =0x0201b000\n\
+ movs r0, 0x99\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ b _0806B0E0\n\
+ .align 2, 0\n\
+_0806B0D0: .4byte 0x0201b000\n\
+_0806B0D4:\n\
+ bl PartyMenuDrawHPBars\n\
+_0806B0D8:\n\
+ ldr r1, _0806B0E8 @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r1, r2\n\
+_0806B0E0:\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ b _0806B11A\n\
+ .align 2, 0\n\
+_0806B0E8: .4byte 0x0201b000\n\
+_0806B0EC:\n\
+ ldr r0, _0806B110 @ =0x00000266\n\
+ adds r5, r4, r0\n\
+ ldrb r0, [r5]\n\
+ bl sub_806B58C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B114\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ movs r0, 0x1\n\
+ b _0806B11C\n\
+ .align 2, 0\n\
+_0806B110: .4byte 0x00000266\n\
+_0806B114:\n\
+ ldrh r0, [r5]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5]\n\
+_0806B11A:\n\
+ movs r0, 0\n\
+_0806B11C:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+__attribute__((naked))
+bool8 sub_806B124(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ ldr r0, _0806B144 @ =gMain\n\
+ ldr r1, _0806B148 @ =0x0000043c\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bls _0806B13A\n\
+ b _0806B450\n\
+_0806B13A:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806B14C @ =_0806B150\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806B144: .4byte gMain\n\
+_0806B148: .4byte 0x0000043c\n\
+_0806B14C: .4byte _0806B150\n\
+ .align 2, 0\n\
+_0806B150:\n\
+ .4byte _0806B198\n\
+ .4byte _0806B240\n\
+ .4byte _0806B246\n\
+ .4byte _0806B27C\n\
+ .4byte _0806B282\n\
+ .4byte _0806B2AC\n\
+ .4byte _0806B2B2\n\
+ .4byte _0806B2D0\n\
+ .4byte _0806B2EC\n\
+ .4byte _0806B318\n\
+ .4byte _0806B344\n\
+ .4byte _0806B37C\n\
+ .4byte _0806B382\n\
+ .4byte _0806B3C0\n\
+ .4byte _0806B3CC\n\
+ .4byte _0806B3E4\n\
+ .4byte _0806B40C\n\
+ .4byte _0806B440\n\
+_0806B198:\n\
+ movs r0, 0\n\
+ bl SetVBlankCallback\n\
+ movs r3, 0xC0\n\
+ lsls r3, 19\n\
+ movs r4, 0xC0\n\
+ lsls r4, 9\n\
+ add r2, sp, 0x8\n\
+ mov r8, r2\n\
+ add r2, sp, 0x4\n\
+ movs r6, 0\n\
+ ldr r1, _0806B22C @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _0806B230 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
+_0806B1BC:\n\
+ strh r6, [r2]\n\
+ add r0, sp, 0x4\n\
+ str r0, [r1]\n\
+ str r3, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r3, r5\n\
+ subs r4, r5\n\
+ cmp r4, r5\n\
+ bhi _0806B1BC\n\
+ strh r6, [r2]\n\
+ add r2, sp, 0x4\n\
+ str r2, [r1]\n\
+ str r3, [r1, 0x4]\n\
+ lsrs r0, r4, 1\n\
+ mov r3, r12\n\
+ orrs r0, r3\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ movs r0, 0xE0\n\
+ lsls r0, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 3\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x8]\n\
+ ldr r2, _0806B22C @ =0x040000d4\n\
+ mov r1, r8\n\
+ str r1, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ lsrs r0, r3, 2\n\
+ movs r1, 0x85\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r1, 0xA0\n\
+ lsls r1, 19\n\
+ add r0, sp, 0x4\n\
+ strh r4, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, 0x4]\n\
+ lsrs r3, 1\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ orrs r3, r0\n\
+ str r3, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r2, _0806B234 @ =gPaletteFade\n\
+ ldrb r0, [r2, 0x8]\n\
+ movs r1, 0x80\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0x8]\n\
+ ldr r1, _0806B238 @ =gMain\n\
+ ldr r2, _0806B23C @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B22C: .4byte 0x040000d4\n\
+_0806B230: .4byte 0x81000800\n\
+_0806B234: .4byte gPaletteFade\n\
+_0806B238: .4byte gMain\n\
+_0806B23C: .4byte 0x0000043c\n\
+_0806B240:\n\
+ bl remove_some_task\n\
+ b _0806B426\n\
+_0806B246:\n\
+ bl sub_806B4A8\n\
+ ldr r1, _0806B26C @ =0x0201b000\n\
+ movs r2, 0x99\n\
+ lsls r2, 2\n\
+ adds r0, r1, r2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ ldr r3, _0806B270 @ =0x00000266\n\
+ adds r0, r1, r3\n\
+ strh r2, [r0]\n\
+ movs r0, 0x9A\n\
+ lsls r0, 2\n\
+ adds r1, r0\n\
+ strh r2, [r1]\n\
+ ldr r1, _0806B274 @ =gMain\n\
+ ldr r2, _0806B278 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B26C: .4byte 0x0201b000\n\
+_0806B270: .4byte 0x00000266\n\
+_0806B274: .4byte gMain\n\
+_0806B278: .4byte 0x0000043c\n\
+_0806B27C:\n\
+ bl ResetSpriteData\n\
+ b _0806B426\n\
+_0806B282:\n\
+ ldr r0, _0806B2A0 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _0806B298\n\
+ cmp r0, 0x5\n\
+ beq _0806B298\n\
+ bl ResetTasks\n\
+_0806B298:\n\
+ ldr r1, _0806B2A4 @ =gMain\n\
+ ldr r2, _0806B2A8 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B2A0: .4byte 0x0201b000\n\
+_0806B2A4: .4byte gMain\n\
+_0806B2A8: .4byte 0x0000043c\n\
+_0806B2AC:\n\
+ bl FreeAllSpritePalettes\n\
+ b _0806B426\n\
+_0806B2B2:\n\
+ ldr r4, _0806B2CC @ =0x0201b000\n\
+ movs r1, 0x97\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0\n\
+ bl CreateTask\n\
+ movs r2, 0x98\n\
+ lsls r2, 2\n\
+ adds r1, r4, r2\n\
+ strb r0, [r1]\n\
+ b _0806B426\n\
+ .align 2, 0\n\
+_0806B2CC: .4byte 0x0201b000\n\
+_0806B2D0:\n\
+ ldr r0, _0806B2E0 @ =gWindowConfig_81E6C90\n\
+ bl SetUpWindowConfig\n\
+ ldr r1, _0806B2E4 @ =gMain\n\
+ ldr r0, _0806B2E8 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B2E0: .4byte gWindowConfig_81E6C90\n\
+_0806B2E4: .4byte gMain\n\
+_0806B2E8: .4byte 0x0000043c\n\
+_0806B2EC:\n\
+ ldr r4, _0806B308 @ =gUnknown_03004210\n\
+ ldr r1, _0806B30C @ =gWindowConfig_81E6C90\n\
+ adds r0, r4, 0\n\
+ bl InitWindowFromConfig\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl MultistepInitWindowTileData\n\
+ ldr r1, _0806B310 @ =gMain\n\
+ ldr r2, _0806B314 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B308: .4byte gUnknown_03004210\n\
+_0806B30C: .4byte gWindowConfig_81E6C90\n\
+_0806B310: .4byte gMain\n\
+_0806B314: .4byte 0x0000043c\n\
+_0806B318:\n\
+ bl MultistepLoadFont\n\
+ cmp r0, 0\n\
+ bne _0806B322\n\
+ b _0806B450\n\
+_0806B322:\n\
+ ldr r0, _0806B338 @ =0x0201b000\n\
+ movs r3, 0x99\n\
+ lsls r3, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0]\n\
+ ldr r1, _0806B33C @ =gMain\n\
+ ldr r0, _0806B340 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B338: .4byte 0x0201b000\n\
+_0806B33C: .4byte gMain\n\
+_0806B340: .4byte 0x0000043c\n\
+_0806B344:\n\
+ ldr r0, _0806B368 @ =0x0201b000\n\
+ movs r1, 0x99\n\
+ lsls r1, 2\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ bl LoadPartyMenuGraphics\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B374\n\
+ movs r0, 0\n\
+ strh r0, [r4]\n\
+ ldr r1, _0806B36C @ =gMain\n\
+ ldr r2, _0806B370 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B368: .4byte 0x0201b000\n\
+_0806B36C: .4byte gMain\n\
+_0806B370: .4byte 0x0000043c\n\
+_0806B374:\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4]\n\
+ b _0806B450\n\
+_0806B37C:\n\
+ bl sub_809D51C\n\
+ b _0806B426\n\
+_0806B382:\n\
+ ldr r2, _0806B3B0 @ =gUnknown_08376C74\n\
+ ldr r0, _0806B3B4 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r2, 0x4\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B450\n\
+ ldr r1, _0806B3B8 @ =gMain\n\
+ ldr r2, _0806B3BC @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3B0: .4byte gUnknown_08376C74\n\
+_0806B3B4: .4byte 0x0201b000\n\
+_0806B3B8: .4byte gMain\n\
+_0806B3BC: .4byte 0x0000043c\n\
+_0806B3C0:\n\
+ ldr r0, _0806B3C8 @ =gWindowConfig_81E6CC8\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b _0806B426\n\
+ .align 2, 0\n\
+_0806B3C8: .4byte gWindowConfig_81E6CC8\n\
+_0806B3CC:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, 0\n\
+ beq _0806B450\n\
+ ldr r1, _0806B3DC @ =gMain\n\
+ ldr r0, _0806B3E0 @ =0x0000043c\n\
+ adds r1, r0\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3DC: .4byte gMain\n\
+_0806B3E0: .4byte 0x0000043c\n\
+_0806B3E4:\n\
+ ldr r0, _0806B3FC @ =0x0201b000\n\
+ ldr r1, _0806B400 @ =0x00000259\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ movs r1, 0\n\
+ bl sub_806D538\n\
+ ldr r1, _0806B404 @ =gMain\n\
+ ldr r2, _0806B408 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _0806B42C\n\
+ .align 2, 0\n\
+_0806B3FC: .4byte 0x0201b000\n\
+_0806B400: .4byte 0x00000259\n\
+_0806B404: .4byte gMain\n\
+_0806B408: .4byte 0x0000043c\n\
+_0806B40C:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r2, _0806B434 @ =gPaletteFade\n\
+ ldrb r1, [r2, 0x8]\n\
+ movs r0, 0x7F\n\
+ ands r0, r1\n\
+ strb r0, [r2, 0x8]\n\
+_0806B426:\n\
+ ldr r1, _0806B438 @ =gMain\n\
+ ldr r3, _0806B43C @ =0x0000043c\n\
+ adds r1, r3\n\
+_0806B42C:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _0806B450\n\
+ .align 2, 0\n\
+_0806B434: .4byte gPaletteFade\n\
+_0806B438: .4byte gMain\n\
+_0806B43C: .4byte 0x0000043c\n\
+_0806B440:\n\
+ ldr r0, _0806B44C @ =sub_806AF34\n\
+ bl SetVBlankCallback\n\
+ movs r0, 0x1\n\
+ b _0806B452\n\
+ .align 2, 0\n\
+_0806B44C: .4byte sub_806AF34\n\
+_0806B450:\n\
+ movs r0, 0\n\
+_0806B452:\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+void sub_806B460(void)
+{
+ while (sub_806B124() != TRUE)
+ {
+ if (sub_80F9344() == TRUE)
+ {
+ return;
+ }
+ }
+
+ if (ewram1B000.unk258 != 5)
+ {
+ sub_806BF74(ewram1B000.unk260, 0);
+ }
+
+ SetMainCallback2(sub_806AEDC);
+}
+
+void sub_806B4A8(void)
+{
+ SetHBlankCallback(NULL);
+ REG_DISPCNT = 8000;
+ REG_BG0CNT = 0x1E05;
+ REG_BG1CNT = 0x703;
+ REG_BG2CNT = 0xF08;
+ REG_BG3CNT = 0x602;
+ REG_BLDCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG3VOFS = -1;
+}
+
+bool8 IsLinkDoubleBattle()
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK_DOUBLE) == BATTLE_TYPE_LINK_DOUBLE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+void sub_806B548(void)
+{
+ if (ewram1B000.unk261)
+ {
+ u32 src = (u32)&gBGTilemapBuffers[2];
+ u32 dest = BG_VRAM + 0x3000;
+
+ REG_DMA3SAD = src;
+ REG_DMA3DAD = dest;
+ REG_DMA3CNT = ((DMA_ENABLE) << 16) | 0x400;
+
+ if (ewram1B000.unk261 == 2)
+ {
+ ewram1B000.unk261 = 0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_806B548(void)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ ldr r0, _0806B574 @ =0x0201b000\n\
+ ldr r1, _0806B578 @ =0x00000261\n\
+ adds r4, r0, r1\n\
+ ldrb r3, [r4]\n\
+ cmp r3, 0\n\
+ beq _0806B56E\n\
+ ldr r1, _0806B57C @ =gBGTilemapBuffers + 0x1000\n\
+ ldr r2, _0806B580 @ =0x06003000\n\
+ ldr r0, _0806B584 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0806B588 @ =0x80000400\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ cmp r3, 0x2\n\
+ bne _0806B56E\n\
+ movs r0, 0\n\
+ strb r0, [r4]\n\
+_0806B56E:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806B574: .4byte 0x0201b000\n\
+_0806B578: .4byte 0x00000261\n\
+_0806B57C: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B580: .4byte 0x06003000\n\
+_0806B584: .4byte 0x040000d4\n\
+_0806B588: .4byte 0x80000400\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+__attribute__((naked))
+u8 sub_806B58C(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0\n\
+ bne _0806B5A8\n\
+ ldr r0, _0806B5A4 @ =gUnknown_0202E8FA\n\
+ strb r2, [r0]\n\
+ b _0806B5C8\n\
+ .align 2, 0\n\
+_0806B5A4: .4byte gUnknown_0202E8FA\n\
+_0806B5A8:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B5C0\n\
+ ldr r1, _0806B5BC @ =gUnknown_0202E8FA\n\
+ movs r0, 0x2\n\
+ b _0806B5C4\n\
+ .align 2, 0\n\
+_0806B5BC: .4byte gUnknown_0202E8FA\n\
+_0806B5C0:\n\
+ ldr r1, _0806B5E4 @ =gUnknown_0202E8FA\n\
+ movs r0, 0x1\n\
+_0806B5C4:\n\
+ strb r0, [r1]\n\
+ adds r0, r1, 0\n\
+_0806B5C8:\n\
+ ldrb r0, [r0]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ ldr r0, _0806B5E8 @ =gUnknown_083769A8\n\
+ adds r4, r1, r0\n\
+ cmp r5, 0x8\n\
+ bls _0806B5DA\n\
+ b _0806B900\n\
+_0806B5DA:\n\
+ lsls r0, r5, 2\n\
+ ldr r1, _0806B5EC @ =_0806B5F0\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806B5E4: .4byte gUnknown_0202E8FA\n\
+_0806B5E8: .4byte gUnknown_083769A8\n\
+_0806B5EC: .4byte _0806B5F0\n\
+ .align 2, 0\n\
+_0806B5F0:\n\
+ .4byte _0806B614\n\
+ .4byte _0806B628\n\
+ .4byte _0806B638\n\
+ .4byte _0806B694\n\
+ .4byte _0806B71A\n\
+ .4byte _0806B7A2\n\
+ .4byte _0806B832\n\
+ .4byte _0806B8C6\n\
+ .4byte _0806B8E8\n\
+_0806B614:\n\
+ ldr r0, _0806B624 @ =gBGTilemapBuffers + 0x1000\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ movs r1, 0\n\
+ bl memset\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B624: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B628:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r4, 0x1]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0\n\
+ movs r1, 0\n\
+ b _0806B8A8\n\
+_0806B638:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B666\n\
+ ldr r0, _0806B65C @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bls _0806B660\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B65C: .4byte gPlayerPartyCount\n\
+_0806B660:\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ b _0806B8BC\n\
+_0806B666:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B684\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0x4\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+_0806B684:\n\
+ ldrb r0, [r4, 0x2]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ b _0806B8A8\n\
+_0806B694:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B6C2\n\
+ ldr r0, _0806B6B8 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ bls _0806B6BC\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B6B8: .4byte gPlayerPartyCount\n\
+_0806B6BC:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B6C2:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B6F6\n\
+ ldr r0, _0806B6EC @ =gPlayerParty + 2 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B6F0\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B6EC: .4byte gPlayerParty + 2 * 0x64\n\
+_0806B6F0:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B6F6:\n\
+ ldr r0, _0806B710 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2\n\
+ bls _0806B714\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x4\n\
+ movs r1, 0x2\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B710: .4byte gPlayerPartyCount\n\
+_0806B714:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ b _0806B8BC\n\
+_0806B71A:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B74A\n\
+ ldr r0, _0806B740 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bls _0806B744\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B740: .4byte gPlayerPartyCount\n\
+_0806B744:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B74A:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B77E\n\
+ ldr r0, _0806B774 @ =gPlayerParty + 3 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B778\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B774: .4byte gPlayerParty + 3 * 0x64\n\
+_0806B778:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B77E:\n\
+ ldr r0, _0806B798 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bls _0806B79C\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0x6\n\
+ movs r1, 0x3\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B798: .4byte gPlayerPartyCount\n\
+_0806B79C:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ b _0806B8BC\n\
+_0806B7A2:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B7D2\n\
+ ldr r0, _0806B7C8 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bls _0806B7CC\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B7C8: .4byte gPlayerPartyCount\n\
+_0806B7CC:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B8BC\n\
+_0806B7D2:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B80A\n\
+ ldr r0, _0806B800 @ =gPlayerParty + 4 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B804\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+ .align 2, 0\n\
+_0806B800: .4byte gPlayerParty + 4 * 0x64\n\
+_0806B804:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B884\n\
+_0806B80A:\n\
+ ldr r0, _0806B828 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bls _0806B82C\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x8\n\
+ movs r1, 0x4\n\
+ b _0806B8A8\n\
+ .align 2, 0\n\
+_0806B828: .4byte gPlayerPartyCount\n\
+_0806B82C:\n\
+ ldrb r0, [r4, 0x8]\n\
+ ldrb r1, [r4, 0x9]\n\
+ b _0806B8BC\n\
+_0806B832:\n\
+ bl IsDoubleBattle\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0806B84C\n\
+ ldr r0, _0806B848 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bhi _0806B896\n\
+ b _0806B8B8\n\
+ .align 2, 0\n\
+_0806B848: .4byte gPlayerPartyCount\n\
+_0806B84C:\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0806B88E\n\
+ ldr r0, _0806B87C @ =gPlayerParty + 5 * 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B880\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ movs r1, 0x5\n\
+ movs r2, 0x4\n\
+ b _0806B8AA\n\
+ .align 2, 0\n\
+_0806B87C: .4byte gPlayerParty + 5 * 0x64\n\
+_0806B880:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+_0806B884:\n\
+ movs r2, 0x1\n\
+ movs r3, 0x4\n\
+ bl sub_806BA94\n\
+ b _0806B900\n\
+_0806B88E:\n\
+ ldr r0, _0806B8B4 @ =gPlayerPartyCount\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bls _0806B8B8\n\
+_0806B896:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ movs r1, 0x5\n\
+_0806B8A8:\n\
+ movs r2, 0x3\n\
+_0806B8AA:\n\
+ movs r3, 0\n\
+ bl sub_806BF24\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B8B4: .4byte gPlayerPartyCount\n\
+_0806B8B8:\n\
+ ldrb r0, [r4, 0xA]\n\
+ ldrb r1, [r4, 0xB]\n\
+_0806B8BC:\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B900\n\
+_0806B8C6:\n\
+ ldr r0, _0806B8E4 @ =0x0201b000\n\
+ movs r1, 0x96\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0806B8DA\n\
+ movs r0, 0x1\n\
+ bl sub_806BB9C\n\
+_0806B8DA:\n\
+ movs r0, 0x1\n\
+ bl sub_806BBEC\n\
+ b _0806B900\n\
+ .align 2, 0\n\
+_0806B8E4: .4byte 0x0201b000\n\
+_0806B8E8:\n\
+ ldr r0, _0806B8F8 @ =0x0201b000\n\
+ ldr r1, _0806B8FC @ =0x00000261\n\
+ adds r0, r1\n\
+ movs r1, 0x2\n\
+ strb r1, [r0]\n\
+ movs r0, 0x1\n\
+ b _0806B902\n\
+ .align 2, 0\n\
+_0806B8F8: .4byte 0x0201b000\n\
+_0806B8FC: .4byte 0x00000261\n\
+_0806B900:\n\
+ movs r0, 0\n\
+_0806B902:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+void sub_806B908(void)
+{
+ memset(&gBGTilemapBuffers[2], 0, 0x800);
+ gUnknown_0202E8FA = 3;
+ sub_806B9A4(gUnknown_083769C0[12], gUnknown_083769C0[13], 3);
+
+ if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES))
+ sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 0, 3);
+ else
+ sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 1, 3);
+
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
+ sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 0, 3);
+ else
+ sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 1, 3);
+
+ ewram1B000.unk261 = 2;
+}
+#else
+__attribute__((naked))
+void sub_806B908(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ movs r1, 0\n\
+ bl memset\n\
+ ldr r1, _0806B94C @ =gUnknown_0202E8FA\n\
+ movs r0, 0x3\n\
+ strb r0, [r1]\n\
+ ldr r0, _0806B950 @ =gUnknown_083769A8\n\
+ adds r4, r0, 0\n\
+ adds r4, 0x24\n\
+ ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r4, 0x1]\n\
+ movs r2, 0x3\n\
+ bl sub_806B9A4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B958\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B964\n\
+ .align 2, 0\n\
+_0806B948: .4byte gBGTilemapBuffers + 0x1000\n\
+_0806B94C: .4byte gUnknown_0202E8FA\n\
+_0806B950: .4byte gUnknown_083769A8\n\
+_0806B954: .4byte gPlayerParty + 1 * 0x64\n\
+_0806B958:\n\
+ ldrb r0, [r4, 0x4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+_0806B964:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806B980\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+ b _0806B98C\n\
+_0806B980:\n\
+ ldrb r0, [r4, 0x6]\n\
+ ldrb r1, [r4, 0x7]\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl sub_806BA94\n\
+_0806B98C:\n\
+ ldr r0, _0806B99C @ =0x0201b000\n\
+ ldr r1, _0806B9A0 @ =0x00000261\n\
+ adds r0, r1\n\
+ movs r1, 0x2\n\
+ strb r1, [r0]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806B99C: .4byte 0x0201b000\n\
+_0806B9A0: .4byte 0x00000261\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_806B9A4(s16 a, u16 b, u8 c)
+{
+ u8 i;
+ u16 var1 = b * 32;
+
+ for (i = 0; i <= 6; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ for (; j <= 10 && a + j <= 0x1F; j++)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j];
+ }
+ }
+ }
+ }
+}
+
+void sub_806BA34(s16 a, u16 b)
+{
+ u8 i;
+ u16 var1 = b * 32;
+
+ for (i = 0; i <= 6; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ for (; j <= 10 && a + j <= 0x1F; j++)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
+ }
+ }
+ }
+ }
+}
+
+void sub_806BA94(s16 a, u16 b, u8 c, u8 d)
+{
+ u8 i;
+ u8 *arr;
+ u16 var1;
+
+ arr = gUnknown_08376A5E;
+ if (c == 0)
+ {
+ arr = gUnknown_08376A25;
+ }
+
+ var1 = b * 32;
+
+
+ for (i = 0; i < 3; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ while (j <= 0x12 && a + j <= 0x1F)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (d << 12) | arr[i * 19 + j];
+ }
+
+ j++;
+ }
+ }
+ }
+}
+
+void sub_806BB3C(s16 a, u16 b)
+{
+ u8 i;
+ u16 var1 = (b * 32);
+
+ for (i = 0; i < 3; i++)
+ {
+ u8 j = 0;
+
+ if (a <= 0x1F)
+ {
+ for (; j <= 0x12 && a + j <= 0x1F; j++)
+ {
+ if (a + j >= 0)
+ {
+ gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
+ }
+ }
+ }
+ }
+}
+
+void sub_806BB9C(u8 a)
+{
+ u8 i;
+ u16 *vramPtr;
+ const u16 arr[12];
+
+ memcpy(&arr, gUnknown_08376CD4, 12 * 2);
+
+ vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ vramPtr[i] = arr[i] + (a << 12);
+ vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12);
+ }
+}
+
+void sub_806BBEC(u8 a)
+{
+ u8 i;
+ u16 *vramPtr;
+ const u16 arr[12];
+
+ memcpy(&arr, gUnknown_08376CEC, 12 * 2);
+
+ vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ vramPtr[i] = arr[i] + (a << 12);
+ vramPtr[i + 0x20] = arr[i + PARTY_SIZE] + (a << 12);
+ }
+}
+
+#ifdef NONMATCHING
+// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match.
+void sub_806BC3C(u8 monIndex, u8 b)
+{
+ u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
+ u8 i;
+ u16 var1;
+
+ for (i = 0, var1 = (b / 7) * 32; i <= PARTY_SIZE; i++)
+ {
+ u32 offset = i + var1;
+ vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C;
+ vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C;
+ }
+}
+#else
+__attribute__((naked))
+void sub_806BC3C(u8 monIndex, u8 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ adds r4, r0, 0\n\
+ adds r5, r1, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ ldr r6, _0806BCB0 @ =gUnknown_08376918\n\
+ bl IsDoubleBattle\n\
+ lsls r4, 2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1\n\
+ adds r4, r6\n\
+ ldr r7, [r4]\n\
+ movs r6, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x7\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 19\n\
+ ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r3, r0, 0\n\
+_0806BC7C:\n\
+ adds r1, r6, r4\n\
+ lsls r2, r6, 1\n\
+ adds r2, r7\n\
+ lsls r0, r1, 1\n\
+ adds r0, r5\n\
+ ldrh r0, [r0]\n\
+ adds r0, r3, r0\n\
+ strh r0, [r2]\n\
+ adds r2, 0x40\n\
+ adds r1, 0x20\n\
+ lsls r1, 1\n\
+ adds r1, r5\n\
+ ldrh r1, [r1]\n\
+ adds r0, r3, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x6\n\
+ bls _0806BC7C\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806BCB0: .4byte gUnknown_08376918\n\
+_0806BCB4: .4byte gUnknown_08E9A300\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void unref_sub_806BCB8(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ sub_806BC3C(i, a);
+ }
+}
+
+void sub_806BCE8()
+{
+ u8 i;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ u8 gender = GetMonGender(&gPlayerParty[i]);
+ switch (gender)
+ {
+ case MON_MALE:
+ sub_806BC3C(i, 0x54);
+ break;
+ case MON_FEMALE:
+ sub_806BC3C(i, 0x62);
+ break;
+ default:
+ sub_806BC3C(i, 0x46);
+ break;
+ }
+ }
+ else
+ {
+ sub_806BC3C(i, 0x46);
+ }
+ }
+}
+
+u8 sub_806BD58(u8 taskId, u8 b)
+{
+ u8 spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ sub_806CA18(taskId, spriteId);
+ return 1;
+}
+
+#ifdef NONMATCHING
+u16 sub_806BD80(u8 taskId)
+{
+ s8 menuDirectionPressed = 0x0;
+
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case DPAD_UP:
+ menuDirectionPressed = 0xFF;
+ break;
+ case DPAD_DOWN:
+ menuDirectionPressed = 0x1;
+ break;
+ case DPAD_LEFT:
+ menuDirectionPressed = 0xFE;
+ break;
+ case DPAD_RIGHT:
+ menuDirectionPressed = 0x2;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ u8 var1 = sub_80F92BC();
+ switch (var1)
+ {
+ case 1:
+ menuDirectionPressed = 0xFF;
+ break;
+ case 2:
+ menuDirectionPressed = 0x1;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data0 == 7)
+ {
+ // Selected "CANCEL"
+ return B_BUTTON;
+ }
+ else
+ {
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+ }
+ }
+ }
+
+ sub_806BF74(taskId, menuDirectionPressed);
+ return gMain.newAndRepeatedKeys;
+}
+#else
+__attribute__((naked))
+u16 sub_806BD80(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _0806BD9C @ =gMain\n\
+ ldrh r0, [r0, 0x30]\n\
+ cmp r0, 0x20\n\
+ beq _0806BDB2\n\
+ cmp r0, 0x20\n\
+ bgt _0806BDA0\n\
+ cmp r0, 0x10\n\
+ beq _0806BDB6\n\
+ b _0806BDB8\n\
+ .align 2, 0\n\
+_0806BD9C: .4byte gMain\n\
+_0806BDA0:\n\
+ cmp r0, 0x40\n\
+ beq _0806BDAA\n\
+ cmp r0, 0x80\n\
+ beq _0806BDAE\n\
+ b _0806BDB8\n\
+_0806BDAA:\n\
+ movs r4, 0xFF\n\
+ b _0806BDB8\n\
+_0806BDAE:\n\
+ movs r4, 0x1\n\
+ b _0806BDB8\n\
+_0806BDB2:\n\
+ movs r4, 0xFE\n\
+ b _0806BDB8\n\
+_0806BDB6:\n\
+ movs r4, 0x2\n\
+_0806BDB8:\n\
+ lsls r0, r4, 24\n\
+ cmp r0, 0\n\
+ bne _0806BDDC\n\
+ bl sub_80F92BC\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _0806BDD0\n\
+ cmp r0, 0x2\n\
+ beq _0806BDD4\n\
+ b _0806BDD6\n\
+_0806BDD0:\n\
+ movs r4, 0xFF\n\
+ b _0806BDD6\n\
+_0806BDD4:\n\
+ movs r4, 0x1\n\
+_0806BDD6:\n\
+ lsls r0, r4, 24\n\
+ cmp r0, 0\n\
+ beq _0806BDF0\n\
+_0806BDDC:\n\
+ asrs r1, r0, 24\n\
+ adds r0, r5, 0\n\
+ bl sub_806BF74\n\
+ ldr r0, _0806BDEC @ =gMain\n\
+ ldrh r0, [r0, 0x30]\n\
+ b _0806BE2C\n\
+ .align 2, 0\n\
+_0806BDEC: .4byte gMain\n\
+_0806BDF0:\n\
+ ldr r0, _0806BE1C @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0806BE24\n\
+ ldr r4, _0806BE20 @ =gSprites\n\
+ adds r0, r5, 0\n\
+ bl sub_806CA00\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r1, r2]\n\
+ cmp r0, 0x7\n\
+ bne _0806BE24\n\
+ movs r0, 0x2\n\
+ b _0806BE2C\n\
+ .align 2, 0\n\
+_0806BE1C: .4byte gMain\n\
+_0806BE20: .4byte gSprites\n\
+_0806BE24:\n\
+ ldr r0, _0806BE34 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+_0806BE2C:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_0806BE34: .4byte gMain\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u16 sub_806BE38(u8 taskId)
+{
+ u8 menuDirectionPressed = 0x0;
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case DPAD_UP:
+ menuDirectionPressed = 0xFF;
+ break;
+ case DPAD_DOWN:
+ menuDirectionPressed = 0x1;
+ break;
+ case DPAD_LEFT:
+ menuDirectionPressed = 0xFE;
+ break;
+ case DPAD_RIGHT:
+ menuDirectionPressed = 0x2;
+ break;
+ }
+
+ if (menuDirectionPressed == 0)
+ {
+ u8 var1 = sub_80F92BC();
+ switch (var1)
+ {
+ case 1:
+ menuDirectionPressed = 0xFF;
+ break;
+ case 2:
+ menuDirectionPressed = 0x1;
+ break;
+ }
+ }
+
+ if (gMain.newKeys & START_BUTTON)
+ {
+ sub_806C890(taskId);
+ return START_BUTTON;
+ }
+ else
+ {
+ s8 signedMenuDirection = menuDirectionPressed;
+ if (signedMenuDirection)
+ {
+ sub_806C658(taskId, signedMenuDirection);
+ return gMain.newAndRepeatedKeys;
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gSprites[sub_806CA00(taskId)].data0 == 7)
+ {
+ return B_BUTTON;
+ }
+ }
+ }
+ }
+
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+}
+
+void task_pc_turn_off(const u8 *a, u8 b)
+{
+ if (a[0])
+ sub_806BA94(a[0], a[1], 0, b);
+ else
+ sub_806B9A4(a[0], a[1], b);
+}
+
+void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d)
+{
+ if (GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES) && GetMonData(&gPlayerParty[monIndex], MON_DATA_HP) == 0)
+ c = PARTY_SIZE - 1;
+
+ if (d == 1)
+ c += 4;
+
+ task_pc_turn_off(a, c);
+}
+
+void sub_806BF74(u8 taskId, s8 directionPressed)
+{
+ bool8 isLinkDoubleBattle;
+ u8 spriteId = sub_806CA00(taskId);
+ u8 menuIndex = gSprites[spriteId].data0;
+
+ UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
+
+ isLinkDoubleBattle = IsLinkDoubleBattle();
+ if (isLinkDoubleBattle == 1)
+ {
+ if (menuIndex == 0 || menuIndex == 2 || menuIndex == 3)
+ sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 3, 0);
+ if (menuIndex == 1 || menuIndex == 4 || menuIndex == 5)
+ sub_806BF24(&gUnknown_083769C0[menuIndex * 2], menuIndex, 4, 0);
+ if (menuIndex == 7)
+ sub_806BBEC(1);
+
+ sub_806C490(spriteId, menuIndex, directionPressed);
+
+ if (gSprites[spriteId].data0 == 0 || gSprites[spriteId].data0 == 2 || gSprites[spriteId].data0 == 3)
+ sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1);
+ if (gSprites[spriteId].data0 == 1 || gSprites[spriteId].data0 == 4 || gSprites[spriteId].data0 == 5)
+ sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 4, 1);
+ if (gSprites[spriteId].data0 == 7)
+ sub_806BBEC(2);
+
+ ewram1B000.unk261 = 2;
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[2][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[2][gSprites[spriteId].data0].y;
+ }
+ else
+ {
+ u8 isDoubleBattle = IsDoubleBattle();
+
+ if (menuIndex <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0);
+ }
+ else
+ {
+ sub_806BBEC(1);
+ }
+
+ if (!isDoubleBattle)
+ {
+ sub_806C1E4(spriteId, menuIndex, directionPressed);
+ }
+ else
+ {
+ sub_806C310(spriteId, menuIndex, directionPressed);
+ }
+
+ if (gSprites[spriteId].data0 <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1);
+ }
+ else
+ {
+ sub_806BBEC(2);
+ }
+
+ ewram1B000.unk261 = 2;
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].y;
+ }
+
+ UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data0, 1);
+
+ if (menuIndex != gSprites[spriteId].data0)
+ {
+ PlaySE(5);
+ }
+}
+
+void sub_806C1E4(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ u8 var1;
+ s8 menuMovement = directionPressed + 2;
+
+ switch (menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (gPlayerPartyCount > 1 && menuIndex == 0)
+ {
+ if (gSprites[spriteId].data1 == 0)
+ gSprites[spriteId].data1 = 1;
+
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ break;
+ case 0:
+ var1 = menuIndex - 1;
+ if (var1 <= 4) {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ break;
+ }
+}
+
+void sub_806C310(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ u8 var3;
+ s8 menuMovement = directionPressed + 2;
+
+ switch(menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ s8 diff = directionPressed;
+ gSprites[spriteId].data0 += diff;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (menuIndex == 0) {
+ if (gPlayerPartyCount > 2) {
+ u16 var1 = gSprites[spriteId].data1 - 2;
+ if (var1 > 1)
+ gSprites[spriteId].data0 = 2;
+ else
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ }
+ else if (menuIndex == 1) {
+ if (gPlayerPartyCount > 4) {
+ u16 var1 = gSprites[spriteId].data1 - 4;
+ if (var1 <= 1)
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ else
+ gSprites[spriteId].data0 = 4;
+ }
+ }
+ break;
+ case 0:
+ var3 = menuIndex - 2;
+ if (var3 <= 1) {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ } else {
+ u8 var2 = menuIndex - 4;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 1;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ }
+ break;
+ }
+}
+
+/*void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ s8 menuMovement;
+ s16 var1;
+ u8 var2;
+
+ menuMovement = directionPressed + 2;
+ switch (menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else if (menuIndex == PARTY_SIZE - 1) {
+ gSprites[spriteId].data0 = 7;
+ } else {
+ // Put if statment here
+ while (menuIndex++ != PARTY_SIZE - 1) {
+ if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES))
+ {
+ gSprites[spriteId].data0 = menuIndex;
+ gSprites[spriteId].data1 = 0;
+ return;
+ }
+ }
+
+ gSprites[spriteId].data0 = 7;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ while (menuIndex-- != 0) {
+ if (GetMonData(gPlayerParty[menuIndex], MON_DATA_SPECIES))
+ {
+ gSprites[spriteId].data0 = menuIndex;
+ gSprites[spriteId].data1 = 0;
+ return;
+ }
+ }
+
+ gSprites[spriteId].data0 = 7;
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (menuIndex == 0) {
+ var1 = gSprites[spriteId].data1 - 2;
+ if (var1 > 1) {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 2;
+ } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 3;
+ }
+ } else {
+ gSprites[spriteId].data0 = 1;
+ }
+ } else if (menuIndex == 1) {
+ var1 = gSprites[spriteId].data1 - 4;
+ if (var1 <= 1) {
+ gSprites[spriteId].data0 = var1;
+ } else {
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 4;
+ } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
+ gSprites[spriteId].data0 = 5;
+ }
+ }
+ }
+ break;
+ case 0:
+ var2 = menuIndex - 2;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ var2 = menuIndex - 4;
+ if (var2 <= 1) {
+ gSprites[spriteId].data0 = 1;
+ }
+ }
+
+ gSprites[spriteId].data1 = menuIndex;
+ break;
+ }
+}*/
+__attribute__((naked))
+void sub_806C490(u8 spriteId, u8 menuIndex, s8 directionPressed)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r4, r1, 24\n\
+ lsls r2, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 18\n\
+ adds r2, r0\n\
+ asrs r0, r2, 24\n\
+ cmp r0, 0x4\n\
+ bls _0806C4AA\n\
+ b _0806C64E\n\
+_0806C4AA:\n\
+ lsls r0, 2\n\
+ ldr r1, _0806C4B4 @ =_0806C4B8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0806C4B4: .4byte _0806C4B8\n\
+ .align 2, 0\n\
+_0806C4B8:\n\
+ .4byte _0806C618\n\
+ .4byte _0806C524\n\
+ .4byte _0806C4CC\n\
+ .4byte _0806C4E0\n\
+ .4byte _0806C57C\n\
+_0806C4CC:\n\
+ ldr r0, _0806C4DC @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0\n\
+ strh r0, [r1, 0x30]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C4DC: .4byte gSprites\n\
+_0806C4E0:\n\
+ cmp r4, 0x7\n\
+ bne _0806C4FC\n\
+ ldr r2, _0806C4F8 @ =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r0, r3, r5\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ adds r1, r2, 0\n\
+ adds r6, r3, 0\n\
+ b _0806C566\n\
+ .align 2, 0\n\
+_0806C4F8: .4byte gSprites\n\
+_0806C4FC:\n\
+ lsls r6, r5, 4\n\
+ b _0806C518\n\
+_0806C500:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r0, 0x64\n\
+ muls r0, r4\n\
+ ldr r1, _0806C520 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0806C528\n\
+_0806C518:\n\
+ cmp r4, 0x5\n\
+ bne _0806C500\n\
+ b _0806C558\n\
+ .align 2, 0\n\
+_0806C520: .4byte gPlayerParty\n\
+_0806C524:\n\
+ lsls r6, r5, 4\n\
+ b _0806C554\n\
+_0806C528:\n\
+ ldr r1, _0806C534 @ =gSprites\n\
+ adds r0, r6, r5\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ strh r4, [r0, 0x2E]\n\
+ b _0806C566\n\
+ .align 2, 0\n\
+_0806C534: .4byte gSprites\n\
+_0806C538:\n\
+ subs r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x6\n\
+ beq _0806C554\n\
+ movs r0, 0x64\n\
+ muls r0, r4\n\
+ ldr r1, _0806C574 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0806C528\n\
+_0806C554:\n\
+ cmp r4, 0\n\
+ bne _0806C538\n\
+_0806C558:\n\
+ ldr r0, _0806C578 @ =gSprites\n\
+ adds r1, r6, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r2, 0x7\n\
+ strh r2, [r1, 0x2E]\n\
+ adds r1, r0, 0\n\
+_0806C566:\n\
+ adds r0, r6, r5\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x30]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C574: .4byte gPlayerParty\n\
+_0806C578: .4byte gSprites\n\
+_0806C57C:\n\
+ cmp r4, 0\n\
+ bne _0806C5C8\n\
+ ldr r0, _0806C5AC @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r4, r1, r0\n\
+ ldrh r1, [r4, 0x30]\n\
+ subs r0, r1, 0x2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bls _0806C5E2\n\
+ ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C5B4\n\
+ movs r0, 0x2\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C5AC: .4byte gSprites\n\
+_0806C5B0: .4byte gPlayerParty + 2 * 0x64\n\
+_0806C5B4:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C64E\n\
+ movs r0, 0x3\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+_0806C5C8:\n\
+ cmp r4, 0x1\n\
+ bne _0806C64E\n\
+ ldr r0, _0806C5E8 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r4, r1, r0\n\
+ ldrh r1, [r4, 0x30]\n\
+ subs r0, r1, 0x4\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0806C5EC\n\
+_0806C5E2:\n\
+ strh r1, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C5E8: .4byte gSprites\n\
+_0806C5EC:\n\
+ ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C604\n\
+ movs r0, 0x4\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+ .align 2, 0\n\
+_0806C600: .4byte gPlayerParty + 4 * 0x64\n\
+_0806C604:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x64\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0806C64E\n\
+ movs r0, 0x5\n\
+ strh r0, [r4, 0x2E]\n\
+ b _0806C64E\n\
+_0806C618:\n\
+ subs r0, r4, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _0806C634\n\
+ ldr r0, _0806C630 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0\n\
+ b _0806C64A\n\
+ .align 2, 0\n\
+_0806C630: .4byte gSprites\n\
+_0806C634:\n\
+ subs r0, r4, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bhi _0806C64E\n\
+ ldr r0, _0806C654 @ =gSprites\n\
+ lsls r1, r5, 4\n\
+ adds r1, r5\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ movs r0, 0x1\n\
+_0806C64A:\n\
+ strh r0, [r1, 0x2E]\n\
+ strh r4, [r1, 0x30]\n\
+_0806C64E:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0806C654: .4byte gSprites\n\
+ .syntax divided\n");
+}
+
+
+// directionPressed = -2 for left, 2 for right, 1 for down, -1 for up
+void sub_806C658(u8 taskId, s8 directionPressed)
+{
+ u16 newMenuIndex;
+ u8 newMenuIndex2;
+ u8 newMenuIndex3;
+ s8 menuMovement;
+ u8 spriteId = sub_806CA00(taskId);
+ u8 menuIndex = gSprites[spriteId].data0;
+
+ UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
+
+ if (menuIndex < PARTY_SIZE)
+ {
+ sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
+ }
+ else if (menuIndex == PARTY_SIZE)
+ {
+ sub_806BB9C(1);
+ }
+ else
+ {
+ sub_806BBEC(1);
+ }
+
+ menuMovement = directionPressed + 2;
+
+ switch (menuMovement)
+ {
+ case 2:
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 1:
+ if (menuIndex == 0) {
+ gSprites[spriteId].data0 = 7;
+ } else if (menuIndex == PARTY_SIZE) {
+ gSprites[spriteId].data0 = gPlayerPartyCount - 1;
+ } else {
+ gSprites[spriteId].data0 += directionPressed;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 3:
+ if (menuIndex == gPlayerPartyCount - 1) {
+ gSprites[spriteId].data0 = 6;
+ } else if (menuIndex == 7) {
+ gSprites[spriteId].data0 = 0;
+ } else {
+ gSprites[spriteId].data0 += directionPressed;
+ }
+
+ gSprites[spriteId].data1 = 0;
+ break;
+ case 4:
+ if (gPlayerPartyCount > 1 && menuIndex == 0)
+ {
+ if (gSprites[spriteId].data1 == 0) {
+ gSprites[spriteId].data1 = 1;
+ }
+
+ gSprites[spriteId].data0 = gSprites[spriteId].data1;
+ }
+ break;
+ case 0:
+ newMenuIndex3 = menuIndex - 1;
+ if (newMenuIndex3 <= 4)
+ {
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data1 = menuIndex;
+ }
+ break;
+ }
+
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[0][gSprites[spriteId].data0].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[0][gSprites[spriteId].data0].y;
+
+
+ newMenuIndex = gSprites[spriteId].data0;
+ if (gSprites[spriteId].data0 <= PARTY_SIZE - 1)
+ {
+ sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data0 * 2], newMenuIndex, 3, 1);
+ }
+ else if (gSprites[spriteId].data0 == PARTY_SIZE)
+ {
+ sub_806BB9C(2);
+ }
+ else
+ {
+ sub_806BBEC(2);
+ }
+
+ ewram1B000.unk261 = 2;
+
+ newMenuIndex2 = gSprites[spriteId].data0;
+ UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
+
+ if (menuIndex != gSprites[spriteId].data0)
+ {
+ PlaySE(5);
+ }
+}
+
+void sub_806C890(u8 taskId)
+{
+ u8 spriteId = sub_806CA00(taskId);
+
+ u8 monIndex = gSprites[spriteId].data0;
+ if (monIndex != 6)
+ {
+ UpdateMonIconFrame_806DA44(taskId, monIndex, 0);
+
+ if (monIndex < PARTY_SIZE)
+ {
+ sub_806BF24(&gUnknown_083769A8[monIndex * 2], monIndex, 3, 0);
+ }
+ else
+ {
+ sub_806BBEC(1);
+ }
+
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data0 = 6;
+ gSprites[spriteId].pos1.x = gUnknown_083768B8[0][6].x;
+ gSprites[spriteId].pos1.y = gUnknown_083768B8[0][6].y;
+
+ sub_806BB9C(2);
+
+ ewram1B000.unk261 = 2;
+ PlaySE(5);
+ }
+}
+
+void sub_806C92C(u8 spriteId)
+{
+ u8 monIndex1 = gSprites[spriteId].data0;
+ u8 monIndex2 = gSprites[spriteId].data1;
+
+ if (!IsDoubleBattle())
+ {
+ if (monIndex1 < 1) {
+ if (monIndex2 < 1) {
+ monIndex2 = 1;
+ }
+ } else {
+ if (monIndex2 >= 1) {
+ monIndex2 = 0;
+ }
+ }
+ } else {
+ if (monIndex1 < 2) {
+ if (monIndex2 < 2) {
+ monIndex2 = 2;
+ }
+ } else {
+ if (monIndex2 >= 2) {
+ monIndex2 = 0;
+ }
+ }
+ }
+
+ gSprites[spriteId].data1 = monIndex2;
+}
+
+void sub_806C994(u8 taskId, u8 b)
+{
+ u8 spriteId = sub_806CA00(taskId);
+
+ gSprites[spriteId].data0 = b;
+ sub_806C92C(spriteId);
+}
+
+void sub_806C9C4(u8 taskId, u8 spriteId)
+{
+ u8 spriteId2 = sub_806CA00(taskId);
+
+ gSprites[spriteId].pos1.x = gSprites[spriteId2].pos1.x;
+ gSprites[spriteId].pos1.y = gSprites[spriteId2].pos1.y;
+ gSprites[spriteId].data0 = gSprites[spriteId2].data0;
+}
+
+u8 sub_806CA00(u8 taskId)
+{
+ return gTasks[taskId].data[3] >> 8;
+}
+
+void sub_806CA18(u8 taskId, u8 b)
+{
+ u8 var1 = gTasks[taskId].data[3];
+ gTasks[taskId].data[3] = var1 | (b << 8);
+}
+
+u8 sub_806CA38(u8 taskId)
+{
+ u8 spriteId = sub_806CA00(taskId);
+ return gSprites[spriteId].data0;
+}
+
+void sub_806CA60(u8 taskId)
+{
+ gTasks[taskId].func = TaskDummy;
+ ewram01000.unk0 = taskId;
+
+ CreateTask(sub_806CB74, 0);
+ ewram01000.unk1 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+
+ sub_806C9C4(taskId, ewram01000.unk1);
+ ewram01000.unk2 = sub_806CA00(taskId);
+
+ sub_806D538(ewram1B000_alt.unk272, 0);
+
+ sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 6, 0);
+ ewram1B000.unk261 = 2;
+}
void sub_806CAFC(u8 a, s16 b)
{
@@ -1282,7 +3816,7 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- u8 isLinkDoubleBattle = IsLinkDoubleBattle();
+ bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
if (isLinkDoubleBattle == TRUE)
{
PrintPartyMenuMonNickname(monIndex, 2, pokemon);
@@ -1326,7 +3860,7 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status)
static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
{
- u8 isLinkDoubleBattle;
+ bool8 isLinkDoubleBattle;
u8 b;
u8 x;
u8 y;
@@ -1392,7 +3926,7 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
u8 statusAndPkrs;
- u8 isLinkDoubleBattle;
+ bool8 isLinkDoubleBattle;
u8 b;
statusAndPkrs = GetMonStatusAndPokerus(pokemon);
@@ -1490,7 +4024,7 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 isLinkDoubleBattle = IsLinkDoubleBattle();
+ bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
if (isLinkDoubleBattle == TRUE)
{
PartyMenuPrintHP(monIndex, 2, pokemon);
@@ -1565,7 +4099,7 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 isDoubleBattle = IsLinkDoubleBattle();
+ bool8 isDoubleBattle = IsLinkDoubleBattle();
if (isDoubleBattle == TRUE)
{
PartyMenuDrawHPBar(monIndex, 2, pokemon);
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 249146b37..6e5926a6a 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -111,6 +111,8 @@ extern struct OamMatrix gOamMatrices[];
extern struct Struct_2017810 unk_2017810[];
extern u8 gHappinessMoveAnim;
+extern u8 UpdateMonIconFrame(struct Sprite *sprite);
+
EWRAM_DATA union AffineAnimCmd *gUnknown_0202F7D4 = NULL;
EWRAM_DATA u32 filler_0202F7D8[3] = {0};