summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-11-22 12:14:58 -0600
committerGitHub <noreply@github.com>2021-11-22 12:14:58 -0600
commitfd8720b75c56ef3f641e6c5abf6c446929c824b9 (patch)
tree7b65558bd366be680c577e6a0aea7787db24dd3f
parent938a88551f6ddefb7f696b738696c8ce2d8e0e36 (diff)
Label all entities in Boss Fight Cutscenes (#78)
* label all entities in cutscenes * remove commented func.. wasn't matching anyway * Skarmony -> Skarmory
-rw-r--r--asm/code_8012A18.s2
-rw-r--r--asm/code_801B3C0.s643
-rw-r--r--asm/code_801C620.s2
-rw-r--r--asm/code_801EE10.s10
-rw-r--r--asm/code_80428A0.s2
-rw-r--r--asm/code_80521D0.s4
-rw-r--r--asm/code_8057824.s6402
-rw-r--r--asm/code_806CD90.s6234
-rw-r--r--asm/code_8075BA4.s263
-rw-r--r--asm/code_80848F0.s22
-rw-r--r--asm/code_8085B0C.s2
-rw-r--r--asm/code_8086A3C.s362
-rw-r--r--asm/code_8095014.s2
-rw-r--r--asm/friend_list_menu.s12
-rw-r--r--asm/jirachi_wish.s2
-rw-r--r--asm/mailbox.s289
-rw-r--r--asm/makuhita_dojo.s2
-rw-r--r--asm/pelipper_board.s238
-rw-r--r--asm/pokemon_3.s2
-rw-r--r--asm/wonder_mail_2.s2
-rw-r--r--include/dungeon_entity.h9
-rw-r--r--include/mailbox.h2
-rw-r--r--include/pokemon.h4
-rwxr-xr-xld_script.txt2
-rw-r--r--src/code_801AFA4.c6
-rw-r--r--src/code_801B3C0.c341
-rw-r--r--src/code_8041AD0.c3
-rw-r--r--src/code_80521D0_1.c241
-rw-r--r--src/code_8057824_1.c1107
-rw-r--r--src/code_806CD90.c88
-rw-r--r--src/code_80848F0.c230
-rw-r--r--src/code_80869E4.c24
-rw-r--r--src/code_8086A3C.c206
-rw-r--r--src/friend_area_action_menu_1.c1
-rw-r--r--src/friend_list_menu.c1
-rw-r--r--src/kangaskhan_storage_2.c2
-rw-r--r--src/luminous_cave.c5
-rw-r--r--src/mailbox.c8
-rw-r--r--src/mailbox_1.c161
-rw-r--r--src/pelipper_board_1.c160
-rw-r--r--src/pokemon_mid.c8
-rw-r--r--src/wonder_mail_2.c4
-rw-r--r--src/wonder_mail_3_mid.c4
43 files changed, 8159 insertions, 8955 deletions
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s
index 350e33d..0a2d752 100644
--- a/asm/code_8012A18.s
+++ b/asm/code_8012A18.s
@@ -4440,7 +4440,7 @@ _08014DDC:
ldr r4, _08014DF8
adds r0, r4, 0
movs r2, 0
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
b _08014F0E
.align 2, 0
_08014DF8: .4byte gUnknown_202EB80
diff --git a/asm/code_801B3C0.s b/asm/code_801B3C0.s
index 278f49f..173e4d6 100644
--- a/asm/code_801B3C0.s
+++ b/asm/code_801B3C0.s
@@ -5,649 +5,6 @@
.text
-
- thumb_func_start sub_801B60C
-sub_801B60C:
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r6, _0801B650
- movs r0, 0xAA
- lsls r0, 1
- movs r1, 0x8
- bl MemoryAlloc
- str r0, [r6]
- adds r2, r0, 0
- adds r2, 0xC8
- movs r1, 0
- str r1, [r2]
- str r5, [r0]
- strb r4, [r0, 0x12]
- ldr r0, [r6]
- ldrb r0, [r0, 0x12]
- bl IsThrowableItem
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0801B654
- ldr r0, [r6]
- strb r7, [r0, 0x11]
- ldr r0, [r6]
- strb r7, [r0, 0xC]
- b _0801B65E
- .align 2, 0
-_0801B650: .4byte gUnknown_203B234
-_0801B654:
- ldr r0, [r6]
- strb r1, [r0, 0x11]
- ldr r1, [r6]
- movs r0, 0x1
- strb r0, [r1, 0xC]
-_0801B65E:
- ldr r5, _0801B6A0
- ldr r0, [r5]
- movs r1, 0
- movs r2, 0x1
- strb r2, [r0, 0x10]
- ldr r0, [r5]
- str r1, [r0, 0x14]
- strb r1, [r0, 0x18]
- ldr r0, [r5]
- strb r2, [r0, 0x1C]
- ldr r4, _0801B6A4
- bl GetPlayerPokemonStruct
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x6
- bl sub_808D9AC
- ldr r0, _0801B6A8
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x10
- adds r2, 0x14
- bl sub_8090E14
- movs r0, 0
- bl sub_801B748
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801B6A0: .4byte gUnknown_203B234
-_0801B6A4: .4byte gAvailablePokemonNames
-_0801B6A8: .4byte gUnknown_202DE58
- thumb_func_end sub_801B60C
-
- thumb_func_start sub_801B6AC
-sub_801B6AC:
- push {lr}
- ldr r0, _0801B6C4
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- subs r0, 0x6
- cmp r0, 0xA
- bhi _0801B720
- lsls r0, 2
- ldr r1, _0801B6C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801B6C4: .4byte gUnknown_203B234
-_0801B6C8: .4byte _0801B6CC
- .align 2, 0
-_0801B6CC:
- .4byte _0801B6FC
- .4byte _0801B702
- .4byte _0801B708
- .4byte _0801B708
- .4byte _0801B70E
- .4byte _0801B714
- .4byte _0801B71A
- .4byte _0801B720
- .4byte _0801B720
- .4byte _0801B720
- .4byte _0801B6F8
-_0801B6F8:
- movs r0, 0x3
- b _0801B726
-_0801B6FC:
- bl sub_801BC64
- b _0801B724
-_0801B702:
- bl sub_801BC94
- b _0801B724
-_0801B708:
- bl sub_801BCCC
- b _0801B724
-_0801B70E:
- bl sub_801BD80
- b _0801B724
-_0801B714:
- bl sub_801BEAC
- b _0801B724
-_0801B71A:
- bl sub_801BE30
- b _0801B724
-_0801B720:
- bl sub_801BEC8
-_0801B724:
- movs r0, 0
-_0801B726:
- pop {r1}
- bx r1
- thumb_func_end sub_801B6AC
-
- thumb_func_start sub_801B72C
-sub_801B72C:
- push {r4,lr}
- ldr r4, _0801B744
- ldr r0, [r4]
- cmp r0, 0
- beq _0801B73E
- bl MemoryFree
- movs r0, 0
- str r0, [r4]
-_0801B73E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801B744: .4byte gUnknown_203B234
- thumb_func_end sub_801B72C
-
- thumb_func_start sub_801B748
-sub_801B748:
- push {lr}
- ldr r1, _0801B75C
- ldr r1, [r1]
- str r0, [r1, 0x4]
- bl sub_801B760
- bl sub_801B874
- pop {r0}
- bx r0
- .align 2, 0
-_0801B75C: .4byte gUnknown_203B234
- thumb_func_end sub_801B748
-
- thumb_func_start sub_801B760
-sub_801B760:
- push {r4-r7,lr}
- ldr r0, _0801B77C
- ldr r1, [r0]
- ldr r1, [r1, 0x4]
- subs r1, 0x1
- adds r4, r0, 0
- cmp r1, 0xE
- bls _0801B772
- b _0801B86A
-_0801B772:
- lsls r0, r1, 2
- ldr r1, _0801B780
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801B77C: .4byte gUnknown_203B234
-_0801B780: .4byte _0801B784
- .align 2, 0
-_0801B784:
- .4byte _0801B7C0
- .4byte _0801B86A
- .4byte _0801B86A
- .4byte _0801B86A
- .4byte _0801B86A
- .4byte _0801B7C0
- .4byte _0801B7C0
- .4byte _0801B7C0
- .4byte _0801B7C0
- .4byte _0801B800
- .4byte _0801B7C0
- .4byte _0801B840
- .4byte _0801B7C0
- .4byte _0801B7C0
- .4byte _0801B7C0
-_0801B7C0:
- ldr r4, _0801B7F8
- ldr r0, [r4]
- adds r0, 0xF4
- bl sub_8006518
- mov r12, r4
- ldr r4, _0801B7FC
- movs r3, 0
- movs r2, 0x3
-_0801B7D2:
- mov r0, r12
- ldr r1, [r0]
- adds r1, r3
- adds r1, 0xF4
- adds r0, r4, 0
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r3, 0x18
- subs r2, 0x1
- cmp r2, 0
- bge _0801B7D2
- bl ResetUnusedInputStruct
- ldr r0, _0801B7F8
- ldr r0, [r0]
- b _0801B82E
- .align 2, 0
-_0801B7F8: .4byte gUnknown_203B234
-_0801B7FC: .4byte gUnknown_80DBA58
-_0801B800:
- ldr r0, [r4]
- adds r0, 0xF4
- bl sub_8006518
- bl sub_801BB5C
- ldr r2, [r4]
- movs r0, 0x92
- lsls r0, 1
- adds r2, r0
- ldr r1, _0801B83C
- ldm r1!, {r3,r5,r6}
- stm r2!, {r3,r5,r6}
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldr r1, [r4]
- adds r0, r1, r0
- adds r1, 0xCC
- bl sub_8012CAC
- bl ResetUnusedInputStruct
- ldr r0, [r4]
-_0801B82E:
- adds r0, 0xF4
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
- b _0801B86A
- .align 2, 0
-_0801B83C: .4byte gUnknown_80DBA70
-_0801B840:
- ldr r0, [r4]
- adds r0, 0xF4
- bl sub_8006518
- ldr r1, [r4]
- movs r6, 0x86
- lsls r6, 1
- adds r1, r6
- ldr r0, _0801B870
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- bl ResetUnusedInputStruct
- ldr r0, [r4]
- adds r0, 0xF4
- movs r1, 0x1
- movs r2, 0x1
- bl sub_800641C
-_0801B86A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801B870: .4byte gUnknown_80DBA88
- thumb_func_end sub_801B760
-
- thumb_func_start sub_801B874
-sub_801B874:
- push {r4,lr}
- sub sp, 0x14
- ldr r1, _0801B890
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r4, r1, 0
- cmp r0, 0x10
- bls _0801B886
- b _0801BB0E
-_0801B886:
- lsls r0, 2
- ldr r1, _0801B894
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801B890: .4byte gUnknown_203B234
-_0801B894: .4byte _0801B898
- .align 2, 0
-_0801B898:
- .4byte _0801B8DC
- .4byte _0801B9BC
- .4byte _0801B9D8
- .4byte _0801B9E0
- .4byte _0801B9F0
- .4byte _0801B9F8
- .4byte _0801BA08
- .4byte _0801BA34
- .4byte _0801BA60
- .4byte _0801BA6E
- .4byte _0801BA76
- .4byte _0801BA94
- .4byte _0801BA9E
- .4byte _0801BAD0
- .4byte _0801BAE0
- .4byte _0801BAFC
- .4byte _0801BB0E
-_0801B8DC:
- ldr r1, [r4]
- ldrb r0, [r1, 0x12]
- cmp r0, 0xEA
- bne _0801B8FE
- movs r0, 0x10
- str r0, [r1, 0x8]
- movs r0, 0
- movs r1, 0x47
- movs r2, 0x1
- bl sub_8001784
- cmp r0, 0
- bne _0801B914
- movs r0, 0
- movs r1, 0x47
- movs r2, 0x1
- b _0801B92A
-_0801B8FE:
- cmp r0, 0xEB
- bne _0801B938
- movs r0, 0x10
- str r0, [r1, 0x8]
- movs r0, 0
- movs r1, 0x47
- movs r2, 0
- bl sub_8001784
- cmp r0, 0
- beq _0801B924
-_0801B914:
- movs r0, 0xFA
- lsls r0, 2
- bl AddToTeamMoney
- movs r0, 0x4
- bl sub_801B748
- b _0801BB0E
-_0801B924:
- movs r0, 0
- movs r1, 0x47
- movs r2, 0
-_0801B92A:
- movs r3, 0x1
- bl sub_800199C
- movs r0, 0x3
- bl sub_801B748
- b _0801BB0E
-_0801B938:
- bl GetNumberOfFilledInventorySlots
- cmp r0, 0x13
- ble _0801B986
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- bl IsNotMoneyOrUsedTMItem
- lsls r0, 24
- cmp r0, 0
- beq _0801B968
- ldr r0, _0801B970
- ldr r1, [r0]
- ldr r2, [r4]
- ldrb r0, [r2, 0x12]
- lsls r0, 1
- adds r1, 0x50
- adds r3, r1, r0
- ldrh r1, [r3]
- ldrb r0, [r2, 0xC]
- adds r1, r0
- ldr r0, _0801B974
- cmp r1, r0
- ble _0801B978
-_0801B968:
- ldr r1, [r4]
- movs r0, 0x6
- b _0801B99C
- .align 2, 0
-_0801B970: .4byte gTeamInventory_203B460
-_0801B974: .4byte 0x000003e7
-_0801B978:
- strh r1, [r3]
- movs r0, 0xCB
- bl PlaySound
- ldr r1, [r4]
- movs r0, 0x5
- b _0801B99C
-_0801B986:
- ldr r0, [r4]
- adds r0, 0x10
- bl AddItemToInventory
- bl FillInventoryGaps
- movs r0, 0xCB
- bl PlaySound
- ldr r1, [r4]
- movs r0, 0x10
-_0801B99C:
- str r0, [r1, 0x8]
- ldr r0, _0801B9B0
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0x1
- bne _0801B9B4
- movs r0, 0x2
- bl sub_801B748
- b _0801BB0E
- .align 2, 0
-_0801B9B0: .4byte gUnknown_203B234
-_0801B9B4:
- movs r0, 0x1
- bl sub_801B748
- b _0801BB0E
-_0801B9BC:
- movs r0, 0
- bl sub_808D544
- cmp r0, 0x1
- bgt _0801B9D0
- ldr r0, _0801B9CC
- b _0801BAE8
- .align 2, 0
-_0801B9CC: .4byte gUnknown_80DBAA0
-_0801B9D0:
- ldr r0, _0801B9D4
- b _0801BAE8
- .align 2, 0
-_0801B9D4: .4byte gUnknown_80DBAD0
-_0801B9D8:
- ldr r0, _0801B9DC
- b _0801BAE8
- .align 2, 0
-_0801B9DC: .4byte gUnknown_80DBB08
-_0801B9E0:
- movs r0, 0xD4
- bl PlaySound
- ldr r0, _0801B9EC
- b _0801BAE8
- .align 2, 0
-_0801B9EC: .4byte gUnknown_80DBB38
-_0801B9F0:
- ldr r0, _0801B9F4
- b _0801BAE8
- .align 2, 0
-_0801B9F4: .4byte gUnknown_80DBB9C
-_0801B9F8:
- ldr r1, [r4]
- movs r0, 0x10
- str r0, [r1, 0x8]
- ldr r0, _0801BA04
- b _0801BAE8
- .align 2, 0
-_0801BA04: .4byte gUnknown_80DBC28
-_0801BA08:
- bl sub_801BB20
- ldr r0, _0801BA2C
- ldr r1, _0801BA30
- ldr r3, [r1]
- adds r3, 0xCC
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0
- movs r2, 0x4
- bl sub_8014248
- b _0801BB0E
- .align 2, 0
-_0801BA2C: .4byte gUnknown_80DBC60
-_0801BA30: .4byte gUnknown_203B234
-_0801BA34:
- bl sub_801BC24
- ldr r0, _0801BA58
- ldr r1, _0801BA5C
- ldr r3, [r1]
- adds r3, 0xCC
- movs r2, 0
- str r2, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- str r2, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0
- movs r2, 0x3
- bl sub_8014248
- b _0801BB0E
- .align 2, 0
-_0801BA58: .4byte gUnknown_80DBC98
-_0801BA5C: .4byte gUnknown_203B234
-_0801BA60:
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- movs r3, 0xA
- bl sub_801A5D8
- b _0801BB0E
-_0801BA6E:
- movs r0, 0x1
- bl sub_801A8D0
- b _0801BB0E
-_0801BA76:
- bl sub_801A9E0
- ldr r0, _0801BA90
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x28
- adds r1, r2, 0
- adds r1, 0xCC
- adds r2, 0xC8
- ldr r2, [r2]
- str r2, [sp]
- movs r2, 0x2
- b _0801BAC0
- .align 2, 0
-_0801BA90: .4byte gUnknown_203B234
-_0801BA94:
- ldr r0, [r4]
- adds r0, 0x20
- bl sub_801B3C0
- b _0801BB0E
-_0801BA9E:
- bl sub_801A9E0
- ldr r4, _0801BACC
- ldr r0, [r4]
- adds r0, 0x28
- movs r1, 0
- bl sub_8012EA4
- bl sub_801BC24
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x78
- adds r1, 0xCC
- movs r2, 0x3
- str r2, [sp]
- movs r2, 0x1
-_0801BAC0:
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_8012D60
- b _0801BB0E
- .align 2, 0
-_0801BACC: .4byte gUnknown_203B234
-_0801BAD0:
- ldr r1, [r4]
- movs r0, 0x10
- str r0, [r1, 0x8]
- ldr r0, _0801BADC
- b _0801BAE8
- .align 2, 0
-_0801BADC: .4byte gUnknown_80DBCC4
-_0801BAE0:
- ldr r1, [r4]
- movs r0, 0x10
- str r0, [r1, 0x8]
- ldr r0, _0801BAF4
-_0801BAE8:
- ldr r3, _0801BAF8
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
- b _0801BB0E
- .align 2, 0
-_0801BAF4: .4byte gUnknown_80DBCE8
-_0801BAF8: .4byte 0x00000101
-_0801BAFC:
- ldr r1, [r4]
- movs r0, 0x10
- str r0, [r1, 0x8]
- ldr r0, _0801BB18
- ldr r3, _0801BB1C
- movs r1, 0
- movs r2, 0
- bl sub_80141B4
-_0801BB0E:
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801BB18: .4byte gUnknown_80DBD24
-_0801BB1C: .4byte 0x00000101
- thumb_func_end sub_801B874
-
- thumb_func_start sub_801BB20
-sub_801BB20:
- ldr r0, _0801BB50
- ldr r3, [r0]
- movs r2, 0
- adds r1, r3, 0
- adds r1, 0xCC
- ldr r0, _0801BB54
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x4
- str r0, [r1]
- adds r1, 0x4
- ldr r0, _0801BB58
- str r0, [r1]
- adds r1, 0x4
- movs r0, 0x5
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0xDC
- str r2, [r0]
- adds r1, 0x8
- movs r0, 0x1
- negs r0, r0
- str r0, [r1]
- bx lr
- .align 2, 0
-_0801BB50: .4byte gUnknown_203B234
-_0801BB54: .4byte gKangaskhanTrashToolboxItem
-_0801BB58: .4byte gKangaskhanTrashReceivedItem
- thumb_func_end sub_801BB20
-
thumb_func_start sub_801BB5C
sub_801BB5C:
push {r4-r7,lr}
diff --git a/asm/code_801C620.s b/asm/code_801C620.s
index 70524ed..2cbc4a8 100644
--- a/asm/code_801C620.s
+++ b/asm/code_801C620.s
@@ -1445,7 +1445,7 @@ _0801D400:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldr r2, [r6]
str r4, [r2, 0x18]
adds r0, r2, 0
diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s
index 2fbb943..4de5bb1 100644
--- a/asm/code_801EE10.s
+++ b/asm/code_801EE10.s
@@ -1730,7 +1730,7 @@ sub_801FB50:
bl GetPlayerPokemonStruct
adds r1, r0, 0
adds r0, r5, 0
- bl sub_808DA34
+ bl PrintPokeNameToBuffer
ldr r2, [r6]
ldr r0, [r2]
cmp r0, 0x1
@@ -3613,7 +3613,7 @@ _08020AB0:
ldr r0, _08020AE8
ldr r1, [r4]
ldr r1, [r1, 0x10]
- bl sub_808DA34
+ bl PrintPokeNameToBuffer
movs r0, 0x11
bl sub_801FDA8
b _08020B32
@@ -3639,7 +3639,7 @@ _08020AEC:
ldr r0, _08020B24
ldr r1, [r4]
ldr r1, [r1, 0x10]
- bl sub_808DA34
+ bl PrintPokeNameToBuffer
movs r0, 0x12
bl sub_801FDA8
b _08020B32
@@ -7265,12 +7265,12 @@ sub_80227B8:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
adds r4, 0x50
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
bl HasGummiItem
lsls r0, 24
cmp r0, 0
diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s
index b776ebc..6fc7011 100644
--- a/asm/code_80428A0.s
+++ b/asm/code_80428A0.s
@@ -110,7 +110,7 @@ sub_8042B34:
adds r6, r2, 0
movs r0, 0
mov r8, r0
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
mov r10, r0
ldr r7, _08042CB0
movs r0, 0xCC
diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s
index c7987d1..0ff1da5 100644
--- a/asm/code_80521D0.s
+++ b/asm/code_80521D0.s
@@ -698,9 +698,9 @@ sub_8052910:
push {r6,r7}
sub sp, 0x14
adds r6, r0, 0
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
adds r4, r0, 0
- bl sub_808548C
+ bl GetPartnerEntity
adds r5, r0, 0
movs r0, 0
mov r9, r0
diff --git a/asm/code_8057824.s b/asm/code_8057824.s
index 132fcf2..c2cf874 100644
--- a/asm/code_8057824.s
+++ b/asm/code_8057824.s
@@ -32585,7 +32585,7 @@ _08067F4C:
ldr r1, [r5]
adds r0, r4, 0
movs r2, 0
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
adds r4, 0x50
ldr r0, [r5]
movs r2, 0x8
@@ -34038,7 +34038,7 @@ _08068AB2:
ldr r0, _08068AE8
adds r1, r6, 0
movs r2, 0
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldrb r0, [r6, 0x4]
cmp r0, 0x4A
bne _08068AF0
@@ -34105,7 +34105,7 @@ _08068B3E:
ldr r0, _08068B78
adds r1, r6, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldrb r0, [r6, 0x4]
cmp r0, 0x4A
beq _08068BB0
@@ -34126,7 +34126,7 @@ _08068B80:
ldr r0, _08068B9C
adds r1, r6, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldrb r0, [r6, 0x4]
cmp r0, 0x4A
bne _08068BA4
@@ -42736,6398 +42736,4 @@ _0806CD76:
_0806CD8C: .4byte 0x000001a5
thumb_func_end sub_806CCB4
- thumb_func_start sub_806CD90
-sub_806CD90:
- push {r4,r5,lr}
- movs r5, 0
-_0806CD94:
- ldr r0, _0806CDCC
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0806CDD0
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806CDC0
- adds r0, r4, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806CCB4
-_0806CDC0:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0806CD94
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806CDCC: .4byte gDungeonGlobalData
-_0806CDD0: .4byte 0x000135cc
- thumb_func_end sub_806CD90
-
- thumb_func_start sub_806CDD4
-sub_806CDD4:
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r2, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl GetEntityType
- cmp r0, 0x1
- bne _0806CDF4
- adds r0, r4, 0
- adds r0, 0x6A
- strb r5, [r0]
- cmp r6, 0x7
- bhi _0806CDF4
- adds r0, 0x2
- strb r6, [r0]
-_0806CDF4:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806CDD4
-
- thumb_func_start sub_806CDFC
-sub_806CDFC:
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r6, r2, 0
- lsls r1, 24
- lsrs r5, r1, 24
- adds r7, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0806CE2E
- adds r0, r4, 0
- adds r0, 0x6B
- ldrb r0, [r0]
- cmp r0, r5
- bne _0806CE24
- adds r0, r4, 0
- adds r0, 0x6D
- ldrb r0, [r0]
- cmp r0, r6
- beq _0806CE2E
-_0806CE24:
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_806CDD4
-_0806CE2E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_806CDFC
-
- thumb_func_start sub_806CE34
-sub_806CE34:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0806CE62
- adds r0, r4, 0
- bl sub_806CEBC
- adds r1, r4, 0
- adds r1, 0x6A
- strb r0, [r1]
- cmp r5, 0x7
- bhi _0806CE62
- ldr r0, [r4, 0x70]
- movs r1, 0x7
- ands r1, r5
- adds r0, 0x46
- strb r1, [r0]
- adds r0, r4, 0
- adds r0, 0x6C
- strb r1, [r0]
-_0806CE62:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_806CE34
-
- thumb_func_start sub_806CE68
-sub_806CE68:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0806CE8C
- adds r0, r4, 0
- bl sub_806CEBC
- adds r1, r4, 0
- adds r1, 0x6A
- strb r0, [r1]
- cmp r5, 0x7
- bhi _0806CE8C
- adds r0, r4, 0
- adds r0, 0x6C
- strb r5, [r0]
-_0806CE8C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_806CE68
-
- thumb_func_start sub_806CE94
-sub_806CE94:
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0806CEB4
- adds r1, r4, 0
- adds r1, 0x6A
- movs r0, 0x6
- strb r0, [r1]
- cmp r5, 0x7
- bhi _0806CEB4
- adds r0, r4, 0
- adds r0, 0x6C
- strb r5, [r0]
-_0806CEB4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_806CE94
-
- thumb_func_start sub_806CEBC
-sub_806CEBC:
- push {lr}
- ldr r0, [r0, 0x70]
- adds r1, r0, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806CED2
- cmp r0, 0x5
- beq _0806CED2
- cmp r0, 0x3
- bne _0806CEE8
-_0806CED2:
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- cmp r0, 0xB9
- bne _0806CEE4
- adds r0, r1, 0
- adds r0, 0xA9
- ldrb r0, [r0]
- cmp r0, 0x7F
- beq _0806CEF2
-_0806CEE4:
- movs r0, 0x5
- b _0806CEF8
-_0806CEE8:
- adds r0, r1, 0
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806CEF6
-_0806CEF2:
- movs r0, 0x7
- b _0806CEF8
-_0806CEF6:
- movs r0, 0xB
-_0806CEF8:
- pop {r1}
- bx r1
- thumb_func_end sub_806CEBC
-
- thumb_func_start sub_806CEFC
-sub_806CEFC:
- push {r4,lr}
- adds r4, r1, 0
- ldr r2, [r0, 0x70]
- movs r3, 0x7
- ands r1, r3
- adds r2, 0x46
- strb r1, [r2]
- movs r1, 0x7
- ands r1, r4
- bl sub_806CE68
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_806CEFC
-
- thumb_func_start sub_806CF18
-sub_806CF18:
- push {r4-r6,lr}
- adds r4, r0, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806CF4C
- ldr r6, [r4, 0x70]
- movs r5, 0
- b _0806CF2E
-_0806CF2C:
- adds r5, 0x1
-_0806CF2E:
- cmp r5, 0x63
- bgt _0806CF4C
- movs r0, 0x21
- bl sub_803E46C
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- adds r1, r4, 0
- adds r1, 0x6B
- ldrb r1, [r1]
- bl sub_808DA44
- lsls r0, 24
- cmp r0, 0
- bne _0806CF2C
-_0806CF4C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806CF18
-
- thumb_func_start sub_806CF54
-sub_806CF54:
- ldr r0, [r0, 0x70]
- movs r1, 0x81
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- thumb_func_end sub_806CF54
-
- thumb_func_start sub_806CF60
-sub_806CF60:
- push {r4,r5,lr}
- movs r5, 0
-_0806CF64:
- ldr r0, _0806CF90
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0806CF94
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806CF84
- adds r0, r4, 0
- bl sub_806CF98
-_0806CF84:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0806CF64
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806CF90: .4byte gDungeonGlobalData
-_0806CF94: .4byte 0x000135cc
- thumb_func_end sub_806CF60
-
- thumb_func_start sub_806CF98
-sub_806CF98:
- push {r4-r7,lr}
- adds r4, r0, 0
- bl sub_8045128
- ldrh r0, [r0]
- movs r5, 0x3
- ands r5, r0
- adds r6, r5, 0
- ldr r7, [r4, 0x70]
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- bl GetShadowSize
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r5, 0x3
- bne _0806CFBE
- movs r0, 0x6
- b _0806CFF8
-_0806CFBE:
- cmp r5, 0x1
- bne _0806CFCE
- bl IsWaterTileset
- lsls r0, 24
- cmp r0, 0
- beq _0806CFEE
- b _0806CFE8
-_0806CFCE:
- cmp r6, 0x2
- bne _0806CFEE
- ldr r1, _0806D000
- ldr r0, _0806D004
- ldr r0, [r0]
- ldr r2, _0806D008
- adds r0, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806CFEE
-_0806CFE8:
- ldr r0, _0806D00C
- adds r0, r4, r0
- ldrb r4, [r0]
-_0806CFEE:
- movs r1, 0x81
- lsls r1, 2
- adds r0, r7, r1
- strb r4, [r0]
- adds r0, r4, 0
-_0806CFF8:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D000: .4byte gDungeonWaterType
-_0806D004: .4byte gDungeonGlobalData
-_0806D008: .4byte 0x00003a0e
-_0806D00C: .4byte gUnknown_8106EEF
- thumb_func_end sub_806CF98
-
- thumb_func_start sub_806D010
-sub_806D010:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r6, r0, 0
- adds r5, r1, 0
- mov r8, r2
- ldr r0, [sp, 0x40]
- lsls r0, 16
- asrs r0, 16
- mov r10, r0
- movs r7, 0
- ldr r0, [sp, 0x3C]
- str r0, [sp]
- mov r1, r10
- str r1, [sp, 0x4]
- ldr r2, [sp, 0x48]
- str r2, [sp, 0x8]
- adds r0, r6, 0
- adds r1, r5, 0
- mov r2, r8
- bl sub_806D528
- lsls r0, 24
- cmp r0, 0
- beq _0806D04A
- b _0806D514
-_0806D04A:
- mov r3, r8
- ldrb r0, [r3, 0xF]
- cmp r0, 0
- beq _0806D054
- b _0806D514
-_0806D054:
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D062
- b _0806D514
-_0806D062:
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D070
- b _0806D514
-_0806D070:
- adds r0, r6, 0
- bl GetEntityType
- cmp r0, 0x1
- beq _0806D07C
- b _0806D514
-_0806D07C:
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- beq _0806D088
- b _0806D514
-_0806D088:
- ldr r0, [sp, 0x44]
- mov r9, r0
- adds r0, r5, 0
- bl CannotAct
- lsls r0, 24
- cmp r0, 0
- bne _0806D0A2
- ldr r0, [r5, 0x70]
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806D0A6
-_0806D0A2:
- movs r1, 0
- mov r9, r1
-_0806D0A6:
- mov r2, r9
- cmp r2, 0
- beq _0806D100
- movs r3, 0x4
- ldrsh r1, [r6, r3]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806D0BC
- negs r1, r1
-_0806D0BC:
- cmp r1, 0x1
- bgt _0806D100
- movs r3, 0x6
- ldrsh r1, [r6, r3]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806D0D0
- negs r1, r1
-_0806D0D0:
- cmp r1, 0x1
- bgt _0806D100
- cmp r6, r5
- beq _0806D100
- mov r3, r8
- ldrb r0, [r3, 0xC]
- bl sub_8092354
- lsls r0, 24
- cmp r0, 0
- beq _0806D100
- ldr r0, [r5, 0x70]
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0xD
- bne _0806D100
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_8042730
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_807F43C
-_0806D100:
- ldr r0, [r5, 0x70]
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0xC
- bne _0806D118
- ldr r0, _0806D3BC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r3, 0x1
- bl sub_8077084
-_0806D118:
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D126
- b _0806D514
-_0806D126:
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D134
- b _0806D514
-_0806D134:
- mov r0, r9
- cmp r0, 0
- beq _0806D216
- cmp r6, r5
- beq _0806D216
- movs r2, 0x4
- ldrsh r1, [r6, r2]
- movs r3, 0x4
- ldrsh r0, [r5, r3]
- subs r1, r0
- cmp r1, 0
- bge _0806D14E
- negs r1, r1
-_0806D14E:
- cmp r1, 0x1
- bgt _0806D216
- movs r0, 0x6
- ldrsh r1, [r6, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806D162
- negs r1, r1
-_0806D162:
- cmp r1, 0x1
- bgt _0806D216
- mov r3, r8
- ldrb r0, [r3, 0xC]
- bl sub_8092354
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, [r5, 0x70]
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0806D188
- cmp r4, 0
- beq _0806D188
- adds r0, r5, 0
- bl sub_8041B18
- adds r7, 0x4
-_0806D188:
- ldr r0, [r5, 0x70]
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0806D19E
- cmp r4, 0
- beq _0806D19E
- adds r0, r5, 0
- bl sub_8041B18
- adds r7, 0x1
-_0806D19E:
- ldr r0, [r5, 0x70]
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0806D1B4
- cmp r4, 0
- bne _0806D1B4
- adds r0, r5, 0
- bl sub_8041B90
- adds r7, 0x4
-_0806D1B4:
- adds r0, r5, 0
- movs r1, 0x12
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D1C4
- adds r7, 0x2
-_0806D1C4:
- cmp r7, 0
- beq _0806D216
- ldr r0, _0806D3C0
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- mov r1, r8
- ldr r0, [r1]
- muls r0, r7
- cmp r0, 0
- bge _0806D1E0
- adds r0, 0x3
-_0806D1E0:
- asrs r0, 2
- str r0, [sp, 0xC]
- add r2, sp, 0xC
- mov r3, r8
- ldrb r0, [r3, 0xC]
- movs r1, 0
- strb r0, [r2, 0xC]
- movs r0, 0x6
- str r0, [sp, 0x10]
- movs r0, 0x2
- str r0, [sp, 0x14]
- adds r0, r2, 0
- strb r1, [r0, 0xD]
- strb r1, [r0, 0xE]
- strb r1, [r0, 0xF]
- ldr r0, [sp, 0x3C]
- str r0, [sp]
- mov r1, r10
- str r1, [sp, 0x4]
- ldr r2, [sp, 0x48]
- str r2, [sp, 0x8]
- adds r0, r5, 0
- adds r1, r6, 0
- add r2, sp, 0xC
- movs r3, 0
- bl sub_806D528
-_0806D216:
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D224
- b _0806D514
-_0806D224:
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806D232
- b _0806D514
-_0806D232:
- mov r3, r9
- cmp r3, 0
- bne _0806D23A
- b _0806D48A
-_0806D23A:
- cmp r6, r5
- bne _0806D240
- b _0806D48A
-_0806D240:
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806D250
- negs r1, r1
-_0806D250:
- cmp r1, 0x1
- ble _0806D256
- b _0806D48A
-_0806D256:
- movs r3, 0x6
- ldrsh r1, [r6, r3]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806D266
- negs r1, r1
-_0806D266:
- cmp r1, 0x1
- ble _0806D26C
- b _0806D48A
-_0806D26C:
- mov r3, r8
- ldrb r0, [r3, 0xC]
- bl sub_8092354
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, [r6, 0x70]
- adds r0, r5, 0
- movs r1, 0x5
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D2C2
- adds r0, r6, 0
- movs r1, 0xA
- bl HasType
- lsls r0, 24
- cmp r0, 0
- bne _0806D2C2
- adds r0, r6, 0
- movs r1, 0x37
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806D2C2
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3C4
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D2C2
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r2]
-_0806D2C2:
- adds r0, r5, 0
- movs r1, 0xA
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D2EE
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3C8
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D2EE
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x2
- orrs r0, r1
- strh r0, [r2]
-_0806D2EE:
- adds r0, r5, 0
- movs r1, 0x17
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D328
- adds r0, r6, 0
- movs r1, 0x11
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _0806D328
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3CC
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D328
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x4
- orrs r0, r1
- strh r0, [r2]
-_0806D328:
- adds r0, r5, 0
- movs r1, 0x20
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D358
- cmp r7, 0
- beq _0806D358
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3D0
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D358
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x8
- orrs r0, r1
- strh r0, [r2]
-_0806D358:
- adds r0, r5, 0
- movs r1, 0x27
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D384
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3D4
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D384
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x20
- orrs r0, r1
- strh r0, [r2]
-_0806D384:
- adds r0, r5, 0
- movs r1, 0x3D
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D3FA
- cmp r7, 0
- beq _0806D3FA
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D3D8
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D3FA
- movs r0, 0x3
- bl DungeonRandomCapped
- cmp r0, 0
- bgt _0806D3DC
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r0, 0x40
- b _0806D3F6
- .align 2, 0
-_0806D3BC: .4byte gUnknown_8106A4C
-_0806D3C0: .4byte gUnknown_80FCFA4
-_0806D3C4: .4byte gUnknown_80F4E10
-_0806D3C8: .4byte gUnknown_80F4E12
-_0806D3CC: .4byte gUnknown_80F4E14
-_0806D3D0: .4byte gUnknown_80F4E16
-_0806D3D4: .4byte gUnknown_80F4E18
-_0806D3D8: .4byte gUnknown_80F4E1A
-_0806D3DC:
- cmp r0, 0x1
- bgt _0806D3EC
- movs r0, 0xBC
- lsls r0, 1
- adds r2, r4, r0
- ldrh r1, [r2]
- movs r0, 0x10
- b _0806D3F6
-_0806D3EC:
- movs r1, 0xBC
- lsls r1, 1
- adds r2, r4, r1
- ldrh r1, [r2]
- movs r0, 0x80
-_0806D3F6:
- orrs r0, r1
- strh r0, [r2]
-_0806D3FA:
- adds r0, r5, 0
- movs r1, 0x3E
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D428
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D4D4
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D428
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- subs r3, 0x78
- adds r0, r3, 0
- orrs r0, r1
- strh r0, [r2]
-_0806D428:
- adds r0, r5, 0
- movs r1, 0x44
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D45A
- cmp r7, 0
- beq _0806D45A
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D4D8
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D45A
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- adds r3, 0x88
- adds r0, r3, 0
- orrs r0, r1
- strh r0, [r2]
-_0806D45A:
- adds r0, r5, 0
- movs r1, 0x1
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D48A
- movs r0, 0x64
- bl DungeonRandomCapped
- ldr r1, _0806D4DC
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bge _0806D48A
- movs r3, 0xBC
- lsls r3, 1
- adds r2, r4, r3
- ldrh r1, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- orrs r0, r1
- strh r0, [r2]
-_0806D48A:
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806D514
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806D514
- mov r0, r9
- cmp r0, 0
- beq _0806D514
- ldr r2, [r5, 0x70]
- adds r6, r2, 0
- adds r3, r2, 0
- adds r3, 0xD0
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _0806D514
- ldr r0, _0806D4E0
- ldr r1, [r0]
- adds r0, r2, 0
- adds r0, 0xD8
- ldrb r0, [r0]
- lsls r0, 2
- ldr r2, _0806D4E4
- adds r1, r2
- adds r1, r0
- ldr r4, [r1]
- cmp r4, 0
- bne _0806D4E8
- strb r4, [r3]
- b _0806D514
- .align 2, 0
-_0806D4D4: .4byte gUnknown_80F4E1C
-_0806D4D8: .4byte gUnknown_80F4E1E
-_0806D4DC: .4byte gUnknown_80F4E20
-_0806D4E0: .4byte gDungeonGlobalData
-_0806D4E4: .4byte 0x000135cc
-_0806D4E8:
- ldr r0, [r4, 0x70]
- adds r0, 0x98
- adds r1, r6, 0
- adds r1, 0xD4
- ldr r2, [r0]
- ldr r0, [r1]
- cmp r2, r0
- beq _0806D4FE
- movs r0, 0
- strb r0, [r3]
- b _0806D514
-_0806D4FE:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8041D00
- mov r3, r8
- ldr r1, [r3]
- ldr r3, _0806D524
- adds r0, r4, 0
- movs r2, 0xC
- bl sub_806F324
-_0806D514:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806D524: .4byte 0x000001f9
- thumb_func_end sub_806D010
-
- thumb_func_start sub_806D528
-sub_806D528:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x58
- mov r9, r0
- adds r7, r1, 0
- adds r5, r2, 0
- str r3, [sp, 0x4C]
- ldr r0, [sp, 0x7C]
- lsls r0, 16
- asrs r0, 16
- str r0, [sp, 0x50]
- movs r0, 0
- str r0, [sp, 0x54]
- mov r10, r0
- mov r8, r0
- mov r1, r10
- strb r1, [r5, 0xF]
- adds r0, r7, 0
- bl GetEntityType
- cmp r0, 0x1
- beq _0806D55C
- b _0806D754
-_0806D55C:
- ldr r6, [r7, 0x70]
- mov r0, r9
- adds r1, r7, 0
- bl sub_807A96C
- mov r0, r9
- adds r1, r7, 0
- bl SetShopkeeperAggression
- mov r0, r9
- bl GetEntityType
- cmp r0, 0x1
- bne _0806D592
- mov r2, r9
- ldr r0, [r2, 0x70]
- adds r0, 0xDC
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0806D592
- ldrb r0, [r5, 0xE]
- cmp r0, 0
- bne _0806D592
- ldr r0, _0806D5C8
- movs r3, 0
- ldrsh r0, [r0, r3]
- str r0, [r5]
-_0806D592:
- ldr r0, _0806D5CC
- ldr r1, [sp, 0x50]
- cmp r1, r0
- beq _0806D5DC
- adds r0, r7, 0
- movs r1, 0xD
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D5DC
- ldr r1, [r5]
- ldr r0, _0806D5D0
- cmp r1, r0
- bne _0806D5DC
- ldr r0, _0806D5D4
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0806D5D8
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- b _0806D71E
- .align 2, 0
-_0806D5C8: .4byte gUnknown_80F4F8C
-_0806D5CC: .4byte 0x0000020e
-_0806D5D0: .4byte 0x0000270f
-_0806D5D4: .4byte gUnknown_202DFE8
-_0806D5D8: .4byte gUnknown_80FCA90
-_0806D5DC:
- adds r0, r6, 0
- adds r0, 0xB0
- ldrb r4, [r0]
- mov r10, r0
- cmp r4, 0x1
- bne _0806D618
- ldr r0, _0806D610
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0806D614
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- mov r0, r9
- adds r1, r7, 0
- bl sub_8042238
- strb r4, [r5, 0xF]
-_0806D608:
- movs r0, 0
- bl _0806E0F0
- .align 2, 0
-_0806D610: .4byte gUnknown_202DFE8
-_0806D614: .4byte gUnknown_80F9600
-_0806D618:
- adds r0, r6, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806D62A
- cmp r0, 0x5
- beq _0806D62A
- cmp r0, 0x3
- bne _0806D63A
-_0806D62A:
- adds r0, r6, 0
- adds r0, 0xA9
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _0806D63A
- adds r0, r7, 0
- bl sub_807A9B0
-_0806D63A:
- adds r0, r7, 0
- movs r1, 0x23
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D660
- ldrb r0, [r5, 0xC]
- cmp r0, 0x5
- bne _0806D660
-_0806D64E:
- ldr r2, [r5]
- movs r0, 0
- str r0, [sp]
- mov r0, r9
- adds r1, r7, 0
- movs r3, 0
- bl HealTargetHP
- b _0806D754
-_0806D660:
- adds r0, r7, 0
- movs r1, 0x24
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806D674
- ldrb r0, [r5, 0xC]
- cmp r0, 0x3
- beq _0806D64E
-_0806D674:
- movs r2, 0xA9
- lsls r2, 1
- adds r0, r6, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D6D0
- ldrb r0, [r5, 0xD]
- cmp r0, 0
- beq _0806D692
- ldr r0, _0806D6A4
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D692:
- ldr r0, [r5, 0x8]
- cmp r0, 0x1
- beq _0806D6B0
- cmp r0, 0x1
- bcc _0806D6A8
- cmp r0, 0x3
- beq _0806D6C4
- b _0806D6D0
- .align 2, 0
-_0806D6A4: .4byte gUnknown_80F9614
-_0806D6A8:
- ldr r0, _0806D6AC
- b _0806D6B2
- .align 2, 0
-_0806D6AC: .4byte gUnknown_80F9630
-_0806D6B0:
- ldr r0, _0806D6C0
-_0806D6B2:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- b _0806D6D0
- .align 2, 0
-_0806D6C0: .4byte gUnknown_80F9654
-_0806D6C4:
- ldr r0, _0806D728
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D6D0:
- ldr r4, _0806D72C
- adds r0, r4, 0
- mov r1, r9
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0x50
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r1, [r5]
- cmp r1, 0
- bne _0806D760
- mov r0, r9
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _0806D734
- adds r0, r7, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _0806D734
- movs r3, 0xA9
- lsls r3, 1
- adds r0, r6, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D71E
- ldr r0, _0806D730
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D71E:
- mov r0, r9
- adds r1, r7, 0
- bl sub_8042238
- b _0806D754
- .align 2, 0
-_0806D728: .4byte gUnknown_80F9670
-_0806D72C: .4byte gAvailablePokemonNames
-_0806D730: .4byte gUnknown_80F9688
-_0806D734:
- movs r1, 0xA9
- lsls r1, 1
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D74C
- ldr r0, _0806D75C
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D74C:
- movs r0, 0x1E
- movs r1, 0x18
- bl sub_803E708
-_0806D754:
- movs r0, 0x1
- strb r0, [r5, 0xF]
- b _0806D608
- .align 2, 0
-_0806D75C: .4byte gUnknown_80F9688
-_0806D760:
- ldr r0, _0806D7B8
- cmp r1, r0
- bne _0806D7C4
- ldr r0, [sp, 0x80]
- cmp r0, 0
- beq _0806D796
- adds r0, r7, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _0806D796
- adds r0, r7, 0
- bl sub_8045128
- mov r8, r0
- movs r0, 0x14
- movs r1, 0x18
- bl sub_803E708
- mov r2, r8
- ldrh r1, [r2, 0x4]
- movs r0, 0x4
- orrs r0, r1
- strh r0, [r2, 0x4]
- bl sub_8049ED4
-_0806D796:
- movs r3, 0xA9
- lsls r3, 1
- adds r0, r6, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D7AE
- ldr r0, _0806D7BC
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D7AE:
- adds r1, r6, 0
- adds r1, 0xA0
- ldr r0, _0806D7C0
- str r0, [r1]
- b _0806D84A
- .align 2, 0
-_0806D7B8: .4byte 0x0000270f
-_0806D7BC: .4byte gUnknown_80F96A8
-_0806D7C0: .4byte 0x000003e7
-_0806D7C4:
- ldr r0, _0806D824
- str r1, [r0]
- ldr r1, _0806D828
- ldr r0, [r5, 0x4]
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- adds r2, r6, 0
- adds r2, 0xA0
- ldr r0, [r2]
- ldr r1, [r5]
- adds r0, r1
- str r0, [r2]
- ldr r1, _0806D82C
- cmp r0, r1
- ble _0806D7E6
- str r1, [r2]
-_0806D7E6:
- adds r0, r7, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _0806D830
- ldr r0, [r5, 0x4]
- cmp r0, 0xE
- beq _0806D808
- ldr r0, [r5]
- negs r0, r0
- movs r3, 0x1
- negs r3, r3
- adds r1, r7, 0
- movs r2, 0x1
- bl sub_803ED30
-_0806D808:
- movs r1, 0xA9
- lsls r1, 1
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D84A
- cmp r4, 0
- beq _0806D84A
- mov r0, r9
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_80522F4
- b _0806D84A
- .align 2, 0
-_0806D824: .4byte gUnknown_202DE30
-_0806D828: .4byte gUnknown_80F9764
-_0806D82C: .4byte 0x000003e7
-_0806D830:
- movs r2, 0xA9
- lsls r2, 1
- adds r0, r6, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806D84A
- cmp r4, 0
- beq _0806D84A
- mov r0, r9
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_80522F4
-_0806D84A:
- ldr r0, [r5, 0x4]
- cmp r0, 0xE
- bne _0806D858
- movs r3, 0xE
- ldrsh r0, [r6, r3]
- cmp r0, 0x1
- bgt _0806D900
-_0806D858:
- mov r0, r8
- cmp r0, 0
- bne _0806D900
- adds r0, r7, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _0806D900
- mov r2, r9
- ldr r1, [r2, 0x4]
- ldr r0, [r7, 0x4]
- cmp r1, r0
- beq _0806D8E6
- mov r0, r9
- bl GetEntityType
- cmp r0, 0x1
- bne _0806D8E6
- movs r4, 0
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- beq _0806D8B4
- ldr r0, _0806D8B0
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _0806D8B6
- adds r0, r7, 0
- bl sub_806A458
- lsls r0, 24
- cmp r0, 0
- bne _0806D8B6
- adds r0, r7, 0
- mov r1, r9
- bl CanSee
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- b _0806D8B6
- .align 2, 0
-_0806D8B0: .4byte gUnknown_203B46C
-_0806D8B4:
- movs r4, 0
-_0806D8B6:
- adds r0, r6, 0
- adds r0, 0xE8
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806D8C8
- movs r4, 0
-_0806D8C8:
- cmp r4, 0
- beq _0806D8E0
- ldr r4, [r7, 0x70]
- adds r0, r7, 0x4
- mov r1, r9
- adds r1, 0x4
- bl CalculateFacingDir
- movs r1, 0x7
- ands r0, r1
- adds r4, 0x46
- strb r0, [r4]
-_0806D8E0:
- adds r0, r7, 0
- bl TargetTileInFront
-_0806D8E6:
- ldr r0, [r7, 0x70]
- adds r0, 0x46
- ldrb r2, [r0]
- adds r0, r7, 0
- movs r1, 0x6
- bl sub_806CDD4
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80420E8
- movs r3, 0x1
- str r3, [sp, 0x54]
-_0806D900:
- movs r0, 0xE
- ldrsh r4, [r6, r0]
- ldr r1, [r5]
- cmp r4, r1
- ble _0806D910
- ldrh r0, [r6, 0xE]
- subs r0, r1
- b _0806D912
-_0806D910:
- movs r0, 0
-_0806D912:
- strh r0, [r6, 0xE]
- adds r0, r6, 0
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0x9
- bne _0806D93C
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _0806D958
- movs r0, 0x1
- strh r0, [r6, 0xE]
- ldr r0, _0806D938
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- b _0806D958
- .align 2, 0
-_0806D938: .4byte gUnknown_8100548
-_0806D93C:
- ldr r2, [sp, 0x4C]
- cmp r2, 0x1
- bne _0806D958
- movs r3, 0xE
- ldrsh r0, [r6, r3]
- cmp r0, 0
- bne _0806D958
- strh r2, [r6, 0xE]
- ldr r0, _0806D9C8
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
-_0806D958:
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- subs r4, r0
- cmp r4, 0
- bge _0806D964
- movs r4, 0
-_0806D964:
- ldr r2, [sp, 0x54]
- cmp r2, 0
- bne _0806D970
- mov r3, r8
- cmp r3, 0
- beq _0806D978
-_0806D970:
- movs r0, 0xA
- movs r1, 0x18
- bl sub_803E708
-_0806D978:
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _0806D9D4
- ldr r2, [sp, 0x54]
- cmp r2, 0
- beq _0806D98E
- adds r0, r7, 0
- movs r1, 0x8
- bl sub_806CE68
-_0806D98E:
- adds r0, r7, 0
- movs r1, 0x10
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806D9B2
- cmp r4, 0
- ble _0806D9B2
- ldr r1, [r5]
- ldr r0, _0806D9CC
- cmp r1, r0
- beq _0806D9B2
- mov r0, r9
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_8071D4C
-_0806D9B2:
- mov r3, r8
- cmp r3, 0
- bne _0806D9BA
- b _0806D608
-_0806D9BA:
- ldrh r1, [r3, 0x4]
- ldr r0, _0806D9D0
- ands r0, r1
- strh r0, [r3, 0x4]
- bl sub_8049ED4
- b _0806D608
- .align 2, 0
-_0806D9C8: .4byte gUnknown_810056C
-_0806D9CC: .4byte 0x0000270f
-_0806D9D0: .4byte 0x0000fffb
-_0806D9D4:
- adds r0, r6, 0
- adds r0, 0xE4
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0806D9E6
- mov r0, r9
- adds r1, r7, 0
- bl sub_807A7C8
-_0806D9E6:
- mov r0, r8
- cmp r0, 0
- beq _0806DA18
- movs r0, 0x14
- movs r1, 0x18
- bl sub_803E708
- adds r1, r7, 0
- adds r1, 0x22
- movs r0, 0x2
- strb r0, [r1]
- movs r0, 0xA
- movs r1, 0x18
- bl sub_803E708
- mov r2, r8
- ldrh r1, [r2, 0x4]
- ldr r0, _0806DA14
- ands r0, r1
- strh r0, [r2, 0x4]
- bl sub_8049ED4
- b _0806DA2E
- .align 2, 0
-_0806DA14: .4byte 0x0000fffb
-_0806DA18:
- ldr r3, [sp, 0x54]
- cmp r3, 0
- beq _0806DA2E
- adds r1, r7, 0
- adds r1, 0x22
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1E
- movs r1, 0x18
- bl sub_803E708
-_0806DA2E:
- movs r0, 0x1
- mov r8, r0
- mov r0, r9
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806DA50
- mov r0, r9
- bl GetEntityType
- cmp r0, 0x1
- bne _0806DA50
- cmp r9, r7
- beq _0806DA50
- movs r1, 0
- mov r8, r1
-_0806DA50:
- movs r2, 0xA6
- lsls r2, 1
- adds r1, r6, r2
- movs r0, 0
- strb r0, [r1]
- ldr r4, _0806DA88
- adds r0, r4, 0
- mov r1, r9
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0x50
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, [r5, 0x4]
- subs r0, 0x13
- cmp r0, 0x1
- bhi _0806DA9C
- ldrb r0, [r6, 0x6]
- cmp r0, 0
- beq _0806DA90
- ldr r0, _0806DA8C
- ldr r2, [r0]
- b _0806DAC2
- .align 2, 0
-_0806DA88: .4byte gAvailablePokemonNames
-_0806DA8C: .4byte gUnknown_80F9E44
-_0806DA90:
- ldr r0, _0806DA98
- ldr r1, [r0]
- b _0806DB86
- .align 2, 0
-_0806DA98: .4byte gUnknown_80F9E44
-_0806DA9C:
- ldrb r0, [r6, 0x6]
- cmp r0, 0
- beq _0806DAD0
- adds r0, r6, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0806DAB8
- ldr r0, _0806DAB4
- mov r3, r8
- lsls r1, r3, 2
- b _0806DB82
- .align 2, 0
-_0806DAB4: .4byte gUnknown_80F9DF0
-_0806DAB8:
- ldr r0, _0806DACC
- mov r2, r8
- lsls r1, r2, 2
- adds r1, r0
- ldr r2, [r1]
-_0806DAC2:
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- b _0806DBA4
- .align 2, 0
-_0806DACC: .4byte gUnknown_80F9CC0
-_0806DAD0:
- ldr r2, _0806DB04
- ldrb r1, [r6, 0xA]
- movs r0, 0x64
- muls r0, r1
- ldr r3, _0806DB08
- adds r0, r3
- ldr r1, [r2]
- adds r3, r1, r0
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0806DB00
- adds r0, r6, 0
- adds r0, 0x40
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0x41
- bne _0806DB18
- ldr r0, _0806DB0C
- ldr r0, [r0]
- ldr r1, _0806DB10
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806DB18
-_0806DB00:
- ldr r0, _0806DB14
- b _0806DB7E
- .align 2, 0
-_0806DB04: .4byte gRecruitedPokemonRef
-_0806DB08: .4byte 0x00008df8
-_0806DB0C: .4byte gDungeonGlobalData
-_0806DB10: .4byte 0x0000065c
-_0806DB14: .4byte gUnknown_80F9CEC
-_0806DB18:
- ldrb r0, [r2]
- cmp r0, 0x4A
- beq _0806DB22
- cmp r0, 0x47
- bne _0806DB26
-_0806DB22:
- movs r0, 0x1
- b _0806DB28
-_0806DB26:
- movs r0, 0
-_0806DB28:
- cmp r0, 0
- beq _0806DB38
- ldr r0, _0806DB34
- mov r3, r8
- lsls r1, r3, 2
- b _0806DB82
- .align 2, 0
-_0806DB34: .4byte gUnknown_80F9DAC
-_0806DB38:
- adds r0, r6, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0806DB4C
- ldr r0, _0806DB48
- b _0806DB7E
- .align 2, 0
-_0806DB48: .4byte gUnknown_80F9DF0
-_0806DB4C:
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- bl sub_806A58C
- lsls r0, 24
- cmp r0, 0
- beq _0806DB94
- ldr r0, _0806DB70
- ldr r0, [r0]
- ldr r2, _0806DB74
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806DB7C
- ldr r0, _0806DB78
- mov r3, r8
- lsls r1, r3, 2
- b _0806DB82
- .align 2, 0
-_0806DB70: .4byte gDungeonGlobalData
-_0806DB74: .4byte 0x0000065d
-_0806DB78: .4byte gUnknown_80F9D8C
-_0806DB7C:
- ldr r0, _0806DB90
-_0806DB7E:
- mov r2, r8
- lsls r1, r2, 2
-_0806DB82:
- adds r1, r0
- ldr r1, [r1]
-_0806DB86:
- mov r0, r9
- bl sub_805239C
- b _0806DBA4
- .align 2, 0
-_0806DB90: .4byte gUnknown_80F9D84
-_0806DB94:
- ldr r0, _0806DC4C
- mov r3, r8
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- mov r0, r9
- bl sub_805239C
-_0806DBA4:
- mov r1, r10
- ldrb r0, [r1]
- subs r0, 0x3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0806DBBC
- adds r0, r6, 0
- adds r0, 0x9C
- ldr r0, [r0]
- bl sub_8076CB4
-_0806DBBC:
- adds r1, r6, 0
- adds r1, 0x60
- ldrb r3, [r1]
- movs r2, 0x1
- mov r8, r2
- mov r0, r8
- ands r0, r3
- adds r5, r1, 0
- cmp r0, 0
- beq _0806DC5C
- movs r0, 0x8
- ands r0, r3
- cmp r0, 0
- bne _0806DC5C
- movs r0, 0x2
- ands r0, r3
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0806DC5C
- ldrb r0, [r5, 0x2]
- cmp r0, 0xD2
- bne _0806DC5C
- adds r0, r7, 0
- bl sub_8042148
- adds r0, r7, 0
- adds r0, 0x22
- strb r4, [r0]
- ldrh r0, [r6, 0x10]
- movs r2, 0
- strh r0, [r6, 0xE]
- movs r3, 0xAC
- lsls r3, 1
- adds r0, r6, r3
- strb r2, [r0]
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r6, r1
- mov r3, r8
- strb r3, [r0]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r6, r0
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r6, r3
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- beq _0806DC36
- ldr r0, _0806DC50
- ldr r1, [r0]
- ldr r3, _0806DC54
- adds r1, r3
- strb r2, [r1]
- ldr r0, [r0]
- ldr r1, _0806DC58
- adds r0, r1
- strb r2, [r0]
-_0806DC36:
- strb r2, [r5, 0x2]
- strb r2, [r5, 0x1]
- strb r2, [r5]
- adds r0, r6, 0
- adds r0, 0xC8
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0806DC48
- b _0806DEC8
-_0806DC48:
- b _0806DEE4
- .align 2, 0
-_0806DC4C: .4byte gUnknown_80F9D28
-_0806DC50: .4byte gDungeonGlobalData
-_0806DC54: .4byte 0x00000679
-_0806DC58: .4byte 0x00000676
-_0806DC5C:
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0806DC64
- b _0806DDFC
-_0806DC64:
- mov r10, r5
- ldrb r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0806DC72
- b _0806DDFC
-_0806DC72:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0806DC7C
- b _0806DDFC
-_0806DC7C:
- ldrb r0, [r5, 0x2]
- cmp r0, 0xD8
- beq _0806DC84
- b _0806DDFC
-_0806DC84:
- movs r4, 0
-_0806DC86:
- ldr r0, _0806DD80
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _0806DD84
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- mov r8, r0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806DCDE
- cmp r8, r7
- beq _0806DCDE
- adds r0, r7, 0
- mov r1, r8
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0806DCDE
- mov r3, r8
- movs r0, 0x4
- ldrsh r1, [r3, r0]
- movs r2, 0x4
- ldrsh r0, [r7, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806DCC4
- negs r1, r1
-_0806DCC4:
- cmp r1, 0x1
- bgt _0806DCDE
- mov r3, r8
- movs r0, 0x6
- ldrsh r1, [r3, r0]
- movs r2, 0x6
- ldrsh r0, [r7, r2]
- subs r1, r0
- cmp r1, 0
- bge _0806DCDA
- negs r1, r1
-_0806DCDA:
- cmp r1, 0x1
- ble _0806DCE4
-_0806DCDE:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0806DC86
-_0806DCE4:
- cmp r4, 0x4
- bne _0806DCEA
- b _0806DDFC
-_0806DCEA:
- adds r0, r7, 0
- bl sub_8042148
- mov r3, r8
- ldr r4, [r3, 0x4]
- ldr r1, _0806DD88
- mov r0, r8
- adds r2, r7, 0
- bl sub_8068FE0
- lsls r1, r4, 16
- asrs r1, 16
- asrs r4, 16
- adds r0, r7, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_80694C0
- adds r0, r7, 0
- movs r1, 0
- bl sub_804535C
- adds r1, r7, 0
- adds r1, 0x22
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r6, 0x10]
- movs r4, 0
- strh r0, [r6, 0xE]
- adds r0, r7, 0
- bl sub_8042A24
- movs r1, 0xAC
- lsls r1, 1
- adds r0, r6, r1
- strb r4, [r0]
- movs r2, 0xA6
- lsls r2, 1
- adds r1, r6, r2
- movs r0, 0x1
- strb r0, [r1]
- movs r3, 0x9E
- lsls r3, 1
- adds r1, r6, r3
- subs r2, 0xC
- adds r0, r6, r2
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- beq _0806DD62
- ldr r0, _0806DD80
- ldr r1, [r0]
- ldr r3, _0806DD8C
- adds r1, r3
- strb r4, [r1]
- ldr r0, [r0]
- ldr r1, _0806DD90
- adds r0, r1
- strb r4, [r0]
-_0806DD62:
- mov r2, r10
- strb r4, [r2, 0x2]
- strb r4, [r2, 0x1]
- strb r4, [r2]
- adds r0, r6, 0
- adds r0, 0xC8
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0806DD94
- mov r0, r9
- adds r1, r7, 0
- movs r2, 0x3
- bl sub_807A5D0
- b _0806DDA2
- .align 2, 0
-_0806DD80: .4byte gDungeonGlobalData
-_0806DD84: .4byte 0x0001357c
-_0806DD88: .4byte 0x00000221
-_0806DD8C: .4byte 0x00000679
-_0806DD90: .4byte 0x00000676
-_0806DD94:
- cmp r0, 0x2
- bne _0806DDA2
- mov r0, r9
- adds r1, r7, 0
- movs r2, 0x2
- bl sub_807A5D0
-_0806DDA2:
- adds r0, r7, 0
- bl sub_8078084
- adds r0, r6, 0
- movs r1, 0
- bl sub_806BFC0
- bl sub_800DBBC
- adds r0, r7, 0
- bl sub_806A390
- adds r0, r7, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl sub_806CCB4
- adds r0, r7, 0
- bl sub_80418D4
- ldr r4, _0806DDF0
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0x50
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0806DDF4
- b _0806DF2E
- .align 2, 0
-_0806DDF0: .4byte gAvailablePokemonNames
-_0806DDF4: .4byte gUnknown_80FD484
-_0806DDF8:
- mov r4, r8
- b _0806DE64
-_0806DDFC:
- adds r0, r7, 0
- movs r1, 0x16
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0806DE0C
- b _0806DF48
-_0806DE0C:
- movs r4, 0
- ldrb r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806DE28
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0806DE28
- ldrb r0, [r5, 0x2]
- cmp r0, 0x3A
- bne _0806DE28
- adds r4, r5, 0
-_0806DE28:
- cmp r4, 0
- bne _0806DE68
- ldrb r0, [r6, 0x6]
- cmp r0, 0
- bne _0806DE64
- movs r3, 0
- ldr r0, _0806DED4
- ldr r2, [r0]
- mov r12, r2
- movs r0, 0x1
- mov r10, r0
-_0806DE3E:
- lsls r0, r3, 2
- add r0, r12
- mov r8, r0
- ldrb r1, [r2]
- mov r0, r10
- ands r0, r1
- cmp r0, 0
- beq _0806DE5C
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0806DE5C
- ldrb r0, [r2, 0x2]
- cmp r0, 0x3A
- beq _0806DDF8
-_0806DE5C:
- adds r2, 0x4
- adds r3, 0x1
- cmp r3, 0x13
- ble _0806DE3E
-_0806DE64:
- cmp r4, 0
- beq _0806DF48
-_0806DE68:
- adds r0, r7, 0
- bl sub_8042148
- adds r0, r4, 0
- movs r1, 0x46
- movs r2, 0x2
- bl sub_8045C28
- adds r1, r7, 0
- adds r1, 0x22
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r6, 0x10]
- movs r2, 0
- strh r0, [r6, 0xE]
- movs r1, 0xAC
- lsls r1, 1
- adds r0, r6, r1
- strb r2, [r0]
- movs r3, 0xA6
- lsls r3, 1
- adds r1, r6, r3
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r6, r0
- subs r3, 0xC
- adds r0, r6, r3
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- beq _0806DEBE
- ldr r0, _0806DED8
- ldr r1, [r0]
- ldr r3, _0806DEDC
- adds r1, r3
- strb r2, [r1]
- ldr r0, [r0]
- ldr r1, _0806DEE0
- adds r0, r1
- strb r2, [r0]
-_0806DEBE:
- adds r0, r6, 0
- adds r0, 0xC8
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0806DEE4
-_0806DEC8:
- mov r0, r9
- adds r1, r7, 0
- movs r2, 0x3
- bl sub_807A5D0
- b _0806DEF2
- .align 2, 0
-_0806DED4: .4byte gTeamInventory_203B460
-_0806DED8: .4byte gDungeonGlobalData
-_0806DEDC: .4byte 0x00000679
-_0806DEE0: .4byte 0x00000676
-_0806DEE4:
- cmp r0, 0x2
- bne _0806DEF2
- mov r0, r9
- adds r1, r7, 0
- movs r2, 0x2
- bl sub_807A5D0
-_0806DEF2:
- adds r0, r7, 0
- bl sub_8078084
- adds r0, r6, 0
- movs r1, 0
- bl sub_806BFC0
- bl sub_800DBBC
- adds r0, r7, 0
- bl sub_806A390
- adds r0, r7, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl sub_806CCB4
- adds r0, r7, 0
- bl sub_80418D4
- ldr r0, _0806DF40
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0806DF44
-_0806DF2E:
- ldr r1, [r0]
- mov r0, r9
- bl sub_805239C
- adds r0, r7, 0
- bl sub_806F63C
- bl _0806D608
- .align 2, 0
-_0806DF40: .4byte gUnknown_202DFE8
-_0806DF44: .4byte gUnknown_80FD46C
-_0806DF48:
- ldrb r4, [r6, 0x7]
- cmp r4, 0
- bne _0806DF68
- ldrb r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806DF68
- adds r1, r7, 0x4
- adds r0, r7, 0
- adds r2, r5, 0
- bl sub_80464C8
- strb r4, [r5, 0x2]
- strb r4, [r5, 0x1]
- strb r4, [r5]
-_0806DF68:
- adds r0, r6, 0
- adds r0, 0xF7
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806DF7E
- ldr r0, _0806E02C
- ldr r0, [r0]
- ldr r2, _0806E030
- adds r0, r2
- ldr r1, _0806E034
- strh r1, [r0]
-_0806DF7E:
- movs r3, 0
- mov r10, r3
- mov r0, r9
- bl GetEntityType
- cmp r0, 0x1
- bne _0806E066
- mov r0, r9
- ldr r4, [r0, 0x70]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- ldrb r1, [r6, 0x9]
- bl CalculateEXPGain
- adds r5, r0, 0
- adds r0, r6, 0
- adds r0, 0xFB
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806DFAE
- cmp r0, 0x2
- bne _0806DFB4
- lsls r0, r5, 1
- adds r5, r0, r5
-_0806DFAE:
- lsrs r0, r5, 31
- adds r0, r5, r0
- asrs r5, r0, 1
-_0806DFB4:
- cmp r5, 0
- bne _0806DFBA
- movs r5, 0x1
-_0806DFBA:
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- beq _0806DFC8
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- bl sub_80980B4
-_0806DFC8:
- adds r0, r6, 0
- adds r0, 0xF4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806DFDA
- ldr r3, _0806E038
- adds r1, r4, r3
- movs r0, 0x1
- strb r0, [r1]
-_0806DFDA:
- ldr r0, [sp, 0x78]
- cmp r0, 0x1
- bne _0806E066
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _0806E040
- ldrb r0, [r6, 0x6]
- cmp r0, 0
- beq _0806E066
- mov r0, r9
- mov r1, r9
- adds r2, r5, 0
- bl sub_8071D4C
- movs r6, 0
-_0806DFF8:
- ldr r0, _0806E02C
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r2, _0806E03C
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806E020
- cmp r4, r9
- beq _0806E020
- mov r0, r9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_8071D4C
-_0806E020:
- adds r6, 0x1
- cmp r6, 0x3
- ble _0806DFF8
- movs r3, 0x1
- mov r10, r3
- b _0806E066
- .align 2, 0
-_0806E02C: .4byte gDungeonGlobalData
-_0806E030: .4byte 0x0000066a
-_0806E034: .4byte 0x000003e7
-_0806E038: .4byte 0x0000014b
-_0806E03C: .4byte 0x0001357c
-_0806E040:
- ldr r5, _0806E0BC
- ldr r0, [r5]
- ldr r1, _0806E0C0
- adds r0, r1
- ldrb r0, [r0]
- bl sub_809033C
- lsls r0, 24
- cmp r0, 0
- beq _0806E066
- ldr r2, _0806E0C4
- adds r0, r4, r2
- add r3, sp, 0x78
- ldrb r3, [r3]
- strb r3, [r0]
- ldr r0, [r5]
- add r1, sp, 0x78
- ldrb r1, [r1]
- strb r1, [r0, 0xD]
-_0806E066:
- mov r0, r9
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806E08A
- mov r0, r9
- bl GetEntityType
- cmp r0, 0x1
- bne _0806E08A
- mov r2, r9
- ldr r0, [r2, 0x70]
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _0806E08A
- movs r3, 0
- mov r10, r3
-_0806E08A:
- mov r0, r10
- cmp r0, 0
- beq _0806E0E4
- add r0, sp, 0x4
- adds r1, r7, 0
- bl sub_8069D4C
- mov r0, r9
- adds r1, r7, 0
- bl sub_806F660
- lsls r0, 24
- cmp r0, 0
- beq _0806E0D8
- mov r0, r9
- adds r1, r7, 0
- add r2, sp, 0x4
- bl sub_806FA5C
- lsls r0, 24
- cmp r0, 0
- bne _0806E0CC
- ldr r1, _0806E0C8
- adds r0, r7, 0
- b _0806E0DC
- .align 2, 0
-_0806E0BC: .4byte gDungeonGlobalData
-_0806E0C0: .4byte 0x00000644
-_0806E0C4: .4byte 0x00000149
-_0806E0C8: .4byte 0x000001f5
-_0806E0CC:
- ldr r1, _0806E0D4
- movs r0, 0x1
- strb r0, [r1]
- b _0806E0EE
- .align 2, 0
-_0806E0D4: .4byte gUnknown_202F221
-_0806E0D8:
- adds r0, r7, 0
- ldr r1, [sp, 0x50]
-_0806E0DC:
- mov r2, r9
- bl sub_8068FE0
- b _0806E0EE
-_0806E0E4:
- adds r0, r7, 0
- ldr r1, [sp, 0x50]
- mov r2, r9
- bl sub_8068FE0
-_0806E0EE:
- movs r0, 0x1
-_0806E0F0:
- add sp, 0x58
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806D528
-
- thumb_func_start sub_806E100
-sub_806E100:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r6, r0, 0
- mov r8, r1
- str r2, [sp, 0x18]
- lsls r3, 24
- lsrs r7, r3, 24
- movs r0, 0
- mov r9, r0
- movs r1, 0
- str r1, [sp, 0x20]
- mov r2, r8
- ldr r2, [r2, 0x70]
- str r2, [sp, 0x24]
- ldr r3, [sp, 0x18]
- ldr r3, [r3, 0x70]
- mov r10, r3
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_800A020
- mov r0, r9
- ldr r4, [sp, 0x48]
- strb r0, [r4, 0xD]
- strb r0, [r4, 0xE]
- movs r1, 0
- str r1, [sp, 0x1C]
- ldr r0, [sp, 0x18]
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806E14E
- movs r0, 0x1
- b _0806E61A
-_0806E14E:
- cmp r7, 0x1
- beq _0806E156
- cmp r7, 0x7
- bne _0806E15A
-_0806E156:
- movs r2, 0x1
- str r2, [sp, 0x20]
-_0806E15A:
- ldr r0, [sp, 0x18]
- movs r1, 0x35
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E170
- cmp r7, 0
- beq _0806E170
- movs r3, 0x1
- str r3, [sp, 0x1C]
-_0806E170:
- movs r0, 0x2
- ldr r4, [sp, 0x48]
- str r0, [r4, 0x8]
- movs r5, 0
- add r0, sp, 0x10
- mov r9, r0
- b _0806E1F2
-_0806E17E:
- mov r1, r10
- adds r1, 0x5C
- ldr r2, [sp, 0x20]
- cmp r2, 0
- beq _0806E1B4
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0806E1B4
- mov r0, r10
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806E1B4
- movs r4, 0
- ldr r0, _0806E1AC
- ldr r0, [r0]
- ldr r3, _0806E1B0
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
- b _0806E1CA
- .align 2, 0
-_0806E1AC: .4byte gDungeonGlobalData
-_0806E1B0: .4byte 0x00000179
-_0806E1B4:
- ldr r2, _0806E4E4
- adds r0, r1, r5
- ldrb r1, [r0]
- lsls r1, 1
- lsls r0, r7, 3
- adds r0, r7
- lsls r0, 2
- adds r1, r0
- adds r1, r2
- movs r0, 0
- ldrsh r4, [r1, r0]
-_0806E1CA:
- cmp r4, 0x2
- beq _0806E1DC
- lsls r0, r4, 2
- add r0, sp
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E1DC:
- lsls r0, r5, 2
- add r0, r9
- str r4, [r0]
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r1, 0x9E
- lsls r1, 1
- adds r0, r1
- adds r0, r5
- strb r4, [r0]
- adds r5, 0x1
-_0806E1F2:
- cmp r5, 0x1
- bgt _0806E20E
- mov r1, sp
- ldr r0, _0806E4EC
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r6, 0
- bl sub_800A2A0
- lsls r0, 24
- cmp r0, 0
- beq _0806E17E
-_0806E20E:
- ldr r2, _0806E4F0
- mov r1, r9
- ldr r0, [r1, 0x4]
- lsls r0, 2
- ldr r1, [sp, 0x10]
- lsls r1, 4
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- ldr r2, [sp, 0x48]
- str r0, [r2, 0x8]
- movs r3, 0x1
- mov r9, r3
- cmp r0, 0x3
- beq _0806E240
- movs r4, 0
- mov r9, r4
- ldr r0, [sp, 0x1C]
- cmp r0, 0
- beq _0806E240
- ldr r0, _0806E4F4
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r6]
- str r1, [r6, 0x4]
-_0806E240:
- cmp r7, 0x2
- beq _0806E248
- cmp r7, 0x6
- bne _0806E26C
-_0806E248:
- ldr r0, [sp, 0x18]
- movs r1, 0x2
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E26C
- ldr r0, _0806E4E8
- ldr r0, [r0]
- ldr r2, _0806E4F8
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E4FC
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E26C:
- cmp r7, 0x2
- bne _0806E2A0
- ldr r0, [sp, 0x18]
- bl GetFlashFireStatus
- lsls r0, 24
- cmp r0, 0
- beq _0806E2A0
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r3, 0xB7
- lsls r3, 1
- adds r0, r3
- movs r4, 0
- movs r5, 0x1
- strb r5, [r0]
- adds r0, r6, 0
- movs r1, 0
- bl sub_800A020
- ldr r0, [sp, 0x48]
- str r4, [r0, 0x8]
- strb r4, [r0, 0xD]
- strb r5, [r0, 0xE]
- movs r1, 0
- mov r9, r1
-_0806E2A0:
- cmp r7, 0x9
- bne _0806E2D2
- ldr r0, [sp, 0x18]
- movs r1, 0x37
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E2D2
- ldr r0, _0806E4E8
- ldr r0, [r0]
- ldr r2, _0806E500
- adds r0, r2
- movs r4, 0
- movs r5, 0x1
- strb r5, [r0]
- adds r0, r6, 0
- movs r1, 0
- bl sub_800A020
- ldr r3, [sp, 0x48]
- str r4, [r3, 0x8]
- strb r4, [r3, 0xD]
- strb r5, [r3, 0xE]
- mov r9, r4
-_0806E2D2:
- cmp r7, 0x3
- bne _0806E340
- mov r0, r8
- movs r1, 0x10
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E340
- movs r4, 0
- ldr r0, [sp, 0x24]
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bge _0806E2F2
- adds r1, 0x3
-_0806E2F2:
- asrs r1, 2
- ldr r3, [sp, 0x24]
- movs r2, 0xE
- ldrsh r0, [r3, r2]
- cmp r1, r0
- blt _0806E300
- movs r4, 0x1
-_0806E300:
- ldr r0, [sp, 0x24]
- movs r1, 0x80
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r4, 0
- beq _0806E32A
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r3, 0xB8
- lsls r3, 1
- adds r0, r3
- movs r1, 0x1
- strb r1, [r0]
- ldr r2, _0806E504
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E32A:
- cmp r5, 0
- beq _0806E340
- mov r0, r8
- bl sub_80428EC
- ldr r0, _0806E508
- ldr r2, [r0]
- mov r0, r8
- ldr r1, [sp, 0x18]
- bl sub_80522F4
-_0806E340:
- cmp r7, 0x4
- bne _0806E3AC
- mov r0, r8
- movs r1, 0x1A
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E3AC
- movs r4, 0
- ldr r0, [sp, 0x24]
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bge _0806E360
- adds r1, 0x3
-_0806E360:
- asrs r1, 2
- ldr r3, [sp, 0x24]
- movs r2, 0xE
- ldrsh r0, [r3, r2]
- cmp r1, r0
- blt _0806E36E
- movs r4, 0x1
-_0806E36E:
- ldr r0, [sp, 0x24]
- movs r1, 0x2
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r4, 0
- beq _0806E396
- ldr r0, _0806E4E8
- ldr r0, [r0]
- ldr r3, _0806E50C
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E504
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E396:
- cmp r5, 0
- beq _0806E3AC
- mov r0, r8
- bl sub_80428D8
- ldr r0, _0806E510
- ldr r2, [r0]
- mov r0, r8
- ldr r1, [sp, 0x18]
- bl sub_80522F4
-_0806E3AC:
- cmp r7, 0xC
- bne _0806E41A
- mov r0, r8
- movs r1, 0x43
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E41A
- movs r4, 0
- ldr r0, [sp, 0x24]
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bge _0806E3CC
- adds r1, 0x3
-_0806E3CC:
- asrs r1, 2
- ldr r3, [sp, 0x24]
- movs r2, 0xE
- ldrsh r0, [r3, r2]
- cmp r1, r0
- blt _0806E3DA
- movs r4, 0x1
-_0806E3DA:
- ldr r0, [sp, 0x24]
- movs r1, 0x10
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r4, 0
- beq _0806E404
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r3, 0xB9
- lsls r3, 1
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E504
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E404:
- cmp r5, 0
- beq _0806E41A
- mov r0, r8
- bl sub_8042978
- ldr r0, _0806E514
- ldr r2, [r0]
- mov r0, r8
- ldr r1, [sp, 0x18]
- bl sub_80522F4
-_0806E41A:
- cmp r7, 0x2
- bne _0806E486
- mov r0, r8
- movs r1, 0x46
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E486
- movs r4, 0
- ldr r0, [sp, 0x24]
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bge _0806E43A
- adds r1, 0x3
-_0806E43A:
- asrs r1, 2
- ldr r3, [sp, 0x24]
- movs r2, 0xE
- ldrsh r0, [r3, r2]
- cmp r1, r0
- blt _0806E448
- movs r4, 0x1
-_0806E448:
- ldr r0, [sp, 0x24]
- movs r1, 0x20
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r4, 0
- beq _0806E470
- ldr r0, _0806E4E8
- ldr r0, [r0]
- ldr r3, _0806E518
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E504
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E470:
- cmp r5, 0
- beq _0806E486
- mov r0, r8
- bl sub_804298C
- ldr r0, _0806E51C
- ldr r2, [r0]
- mov r0, r8
- ldr r1, [sp, 0x18]
- bl sub_80522F4
-_0806E486:
- adds r0, r6, 0
- bl sub_800A2A0
- lsls r0, 24
- cmp r0, 0
- bne _0806E4B8
- mov r0, r8
- adds r1, r7, 0
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _0806E4B8
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r4, 0xBA
- lsls r4, 1
- adds r0, r4
- movs r1, 0x1
- strb r1, [r0]
- ldr r2, _0806E520
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E4B8:
- mov r0, r8
- bl GetWeather
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _0806E53E
- cmp r7, 0x2
- bne _0806E524
- ldr r0, _0806E4E8
- ldr r0, [r0]
- movs r1, 0xB6
- lsls r1, 1
- adds r0, r1
- strb r4, [r0]
- ldr r2, _0806E520
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
- b _0806E53E
- .align 2, 0
-_0806E4E4: .4byte gTypeEffectivenessChart
-_0806E4E8: .4byte gDungeonGlobalData
-_0806E4EC: .4byte gUnknown_8106F54
-_0806E4F0: .4byte gUnknown_80F54B4
-_0806E4F4: .4byte gUnknown_8106EFC
-_0806E4F8: .4byte 0x0000016d
-_0806E4FC: .4byte gUnknown_8106F1C
-_0806E500: .4byte 0x0000016f
-_0806E504: .4byte gUnknown_8106F0C
-_0806E508: .4byte gUnknown_80FEDA8
-_0806E50C: .4byte 0x00000171
-_0806E510: .4byte gUnknown_80FED88
-_0806E514: .4byte gUnknown_80FEDC8
-_0806E518: .4byte 0x00000173
-_0806E51C: .4byte gUnknown_80FEDE8
-_0806E520: .4byte gUnknown_8106F14
-_0806E524:
- cmp r7, 0x3
- bne _0806E53E
- ldr r0, _0806E560
- ldr r0, [r0]
- movs r2, 0xB6
- lsls r2, 1
- adds r0, r2
- strb r4, [r0]
- ldr r2, _0806E564
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E53E:
- cmp r4, 0x4
- bne _0806E586
- cmp r7, 0x2
- bne _0806E56C
- ldr r0, _0806E560
- ldr r0, [r0]
- ldr r3, _0806E568
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E564
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
- b _0806E586
- .align 2, 0
-_0806E560: .4byte gDungeonGlobalData
-_0806E564: .4byte gUnknown_8106F1C
-_0806E568: .4byte 0x0000016b
-_0806E56C:
- cmp r7, 0x3
- bne _0806E586
- ldr r0, _0806E62C
- ldr r0, [r0]
- ldr r2, _0806E630
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E634
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E586:
- cmp r4, 0x3
- bne _0806E5A6
- cmp r7, 0x1
- beq _0806E5A6
- ldr r2, _0806E638
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
- ldr r0, _0806E62C
- ldr r0, [r0]
- movs r3, 0xB5
- lsls r3, 1
- adds r1, r0, r3
- movs r0, 0x1
- strb r0, [r1]
-_0806E5A6:
- ldr r0, _0806E62C
- ldr r1, [r0]
- ldr r2, _0806E63C
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806E5B8
- cmp r4, 0x6
- bne _0806E5CE
-_0806E5B8:
- cmp r7, 0x5
- bne _0806E5CE
- ldr r3, _0806E640
- adds r1, r3
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E644
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E5CE:
- ldr r0, _0806E62C
- ldr r1, [r0]
- ldr r4, _0806E648
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806E5F4
- cmp r7, 0x2
- bne _0806E5F4
- movs r0, 0xBB
- lsls r0, 1
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E644
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E5F4:
- cmp r7, 0x5
- bne _0806E618
- ldr r0, [sp, 0x24]
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0xB
- bne _0806E618
- ldr r0, _0806E62C
- ldr r0, [r0]
- ldr r2, _0806E64C
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r2, _0806E650
- adds r0, r6, 0
- adds r1, r6, 0
- bl sub_800A34C
-_0806E618:
- mov r0, r9
-_0806E61A:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806E62C: .4byte gDungeonGlobalData
-_0806E630: .4byte 0x0000016b
-_0806E634: .4byte gUnknown_8106F14
-_0806E638: .4byte gUnknown_8106F64
-_0806E63C: .4byte 0x0000e277
-_0806E640: .4byte 0x00000175
-_0806E644: .4byte gUnknown_8106F1C
-_0806E648: .4byte 0x0000e278
-_0806E64C: .4byte 0x00000177
-_0806E650: .4byte gUnknown_8106F0C
- thumb_func_end sub_806E100
-
- thumb_func_start WeightWeakTypePicker
-WeightWeakTypePicker:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- mov r9, r0
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r4, r2, 24
- movs r5, 0x1
- movs r0, 0
- str r0, [sp, 0x10]
- adds r0, r1, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0806E6DC
- cmp r4, 0x1
- beq _0806E682
- cmp r4, 0x7
- bne _0806E686
-_0806E682:
- movs r1, 0x1
- str r1, [sp, 0x10]
-_0806E686:
- mov r2, r9
- ldr r2, [r2, 0x70]
- mov r8, r2
- ldr r3, [sp, 0x14]
- ldr r3, [r3, 0x70]
- mov r10, r3
- cmp r4, 0x2
- bne _0806E6A2
- ldr r0, [sp, 0x14]
- bl GetFlashFireStatus
- lsls r0, 24
- cmp r0, 0
- bne _0806E6C6
-_0806E6A2:
- cmp r4, 0x5
- bne _0806E6B4
- ldr r0, [sp, 0x14]
- movs r1, 0x23
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806E6C6
-_0806E6B4:
- cmp r4, 0x3
- bne _0806E6CA
- ldr r0, [sp, 0x14]
- movs r1, 0x24
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E6CA
-_0806E6C6:
- movs r0, 0
- b _0806E894
-_0806E6CA:
- cmp r4, 0x9
- bne _0806E6E0
- ldr r0, [sp, 0x14]
- movs r1, 0x37
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E6E0
-_0806E6DC:
- movs r0, 0x1
- b _0806E894
-_0806E6E0:
- mov r6, r10
- adds r6, 0x5C
- str r6, [sp, 0x18]
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- mov r12, r0
- adds r2, r6, 0
-_0806E6F0:
- mov r0, sp
- ldr r1, _0806E724
- ldm r1!, {r3,r6,r7}
- stm r0!, {r3,r6,r7}
- ldr r1, [r1]
- str r1, [r0]
- ldr r7, [sp, 0x10]
- cmp r7, 0
- beq _0806E730
- ldrb r0, [r2]
- cmp r0, 0xE
- bne _0806E730
- mov r0, r10
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806E730
- movs r3, 0
- ldr r0, _0806E728
- ldr r0, [r0]
- ldr r6, _0806E72C
- adds r1, r0, r6
- movs r0, 0x1
- strb r0, [r1]
- b _0806E73E
- .align 2, 0
-_0806E724: .4byte gTypeEffectivenessMultipliers
-_0806E728: .4byte gDungeonGlobalData
-_0806E72C: .4byte 0x00000179
-_0806E730:
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r12
- ldr r7, _0806E854
- adds r0, r7
- movs r1, 0
- ldrsh r3, [r0, r1]
-_0806E73E:
- cmp r5, 0
- beq _0806E75E
- lsls r0, r3, 2
- add r0, sp
- ldr r0, [r0]
- muls r5, r0
- lsrs r0, r5, 31
- adds r0, r5, r0
- asrs r5, r0, 1
- cmp r5, 0
- beq _0806E84E
- adds r2, 0x1
- ldr r0, [sp, 0x18]
- adds r0, 0x1
- cmp r2, r0
- ble _0806E6F0
-_0806E75E:
- cmp r4, 0x2
- beq _0806E766
- cmp r4, 0x6
- bne _0806E774
-_0806E766:
- ldr r0, [sp, 0x14]
- movs r1, 0x2
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806E84E
-_0806E774:
- cmp r4, 0x3
- bne _0806E7A0
- mov r0, r9
- movs r1, 0x10
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E7A0
- mov r2, r8
- movs r3, 0x10
- ldrsh r1, [r2, r3]
- cmp r1, 0
- bge _0806E792
- adds r1, 0x3
-_0806E792:
- asrs r1, 2
- mov r6, r8
- movs r7, 0xE
- ldrsh r0, [r6, r7]
- cmp r1, r0
- blt _0806E7A0
- lsls r5, 1
-_0806E7A0:
- cmp r4, 0x4
- bne _0806E7CC
- mov r0, r9
- movs r1, 0x1A
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E7CC
- mov r0, r8
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- cmp r1, 0
- bge _0806E7BE
- adds r1, 0x3
-_0806E7BE:
- asrs r1, 2
- mov r3, r8
- movs r6, 0xE
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _0806E7CC
- lsls r5, 1
-_0806E7CC:
- cmp r4, 0xC
- bne _0806E7F8
- mov r0, r9
- movs r1, 0x43
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E7F8
- mov r7, r8
- movs r0, 0x10
- ldrsh r1, [r7, r0]
- cmp r1, 0
- bge _0806E7EA
- adds r1, 0x3
-_0806E7EA:
- asrs r1, 2
- mov r2, r8
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r1, r0
- blt _0806E7F8
- lsls r5, 1
-_0806E7F8:
- cmp r4, 0x2
- bne _0806E824
- mov r0, r9
- movs r1, 0x46
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E824
- mov r6, r8
- movs r7, 0x10
- ldrsh r1, [r6, r7]
- cmp r1, 0
- bge _0806E816
- adds r1, 0x3
-_0806E816:
- asrs r1, 2
- mov r2, r8
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r1, r0
- blt _0806E824
- lsls r5, 1
-_0806E824:
- cmp r5, 0
- beq _0806E84E
- mov r0, r9
- adds r1, r4, 0
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _0806E838
- lsls r5, 1
-_0806E838:
- mov r0, r9
- bl GetWeather
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806E85A
- cmp r4, 0x2
- beq _0806E858
- cmp r4, 0x3
- bne _0806E85A
-_0806E84E:
- movs r0, 0x2
- b _0806E894
- .align 2, 0
-_0806E854: .4byte gTypeEffectivenessChart
-_0806E858:
- lsls r5, 1
-_0806E85A:
- ldr r0, _0806E8A4
- ldr r1, [r0]
- ldr r6, _0806E8A8
- adds r1, r6
- ldrb r1, [r1]
- cmp r1, 0
- beq _0806E86C
- cmp r4, 0x5
- beq _0806E84E
-_0806E86C:
- ldr r0, [r0]
- ldr r7, _0806E8AC
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806E87C
- cmp r4, 0x2
- beq _0806E84E
-_0806E87C:
- cmp r4, 0x5
- bne _0806E88C
- mov r0, r8
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0xB
- bne _0806E88C
- lsls r5, 1
-_0806E88C:
- cmp r5, 0x2
- ble _0806E892
- movs r5, 0x3
-_0806E892:
- adds r0, r5, 0x2
-_0806E894:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806E8A4: .4byte gDungeonGlobalData
-_0806E8A8: .4byte 0x0000e277
-_0806E8AC: .4byte 0x0000e278
- thumb_func_end WeightWeakTypePicker
-
- thumb_func_start sub_806E8B0
-sub_806E8B0:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r6, r0, 0
- mov r9, r1
- adds r0, r2, 0
- str r3, [sp]
- lsls r0, 24
- lsrs r0, 24
- movs r7, 0x1
- movs r1, 0x1
- mov r8, r1
- movs r2, 0x1
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- bl sub_8092354
- movs r2, 0
- mov r10, r2
- lsls r0, 24
- cmp r0, 0
- bne _0806E8E6
- movs r0, 0x1
- mov r10, r0
-_0806E8E6:
- adds r0, r6, 0
- movs r1, 0x11
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E92C
- ldr r5, [r6, 0x70]
- adds r0, r6, 0
- bl HasNegativeStatus
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x1
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r0, 24
- cmp r4, 0
- beq _0806E916
- movs r7, 0x2
-_0806E916:
- cmp r0, 0
- beq _0806E92C
- adds r0, r6, 0
- bl sub_80428B0
- ldr r0, _0806EADC
- ldr r2, [r0]
- adds r0, r6, 0
- mov r1, r9
- bl sub_80522F4
-_0806E92C:
- adds r0, r6, 0
- movs r1, 0x22
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806E948
- adds r0, r6, 0
- movs r1, 0x4B
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E98E
-_0806E948:
- ldr r2, [r6, 0x70]
- movs r4, 0
- ldr r0, [sp, 0x30]
- cmp r0, 0x20
- bgt _0806E95A
- mov r1, r10
- cmp r1, 0
- bne _0806E95A
- movs r4, 0x1
-_0806E95A:
- movs r1, 0x80
- lsls r1, 1
- adds r0, r2, 0
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r4, 0
- beq _0806E978
- lsls r0, r7, 1
- adds r7, r0, r7
- mov r2, r8
- lsls r2, 1
- mov r8, r2
-_0806E978:
- cmp r1, 0
- beq _0806E98E
- adds r0, r6, 0
- bl sub_80428C4
- ldr r0, _0806EAE0
- ldr r2, [r0]
- adds r0, r6, 0
- mov r1, r9
- bl sub_80522F4
-_0806E98E:
- adds r0, r6, 0
- movs r1, 0x30
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E9AC
- mov r0, r10
- cmp r0, 0
- bne _0806E9AC
- lsls r0, r7, 1
- adds r7, r0, r7
- mov r1, r8
- lsls r1, 1
- mov r8, r1
-_0806E9AC:
- ldr r0, [r6, 0x70]
- ldrb r0, [r0, 0x6]
- movs r4, 0x1
- cmp r0, 0
- beq _0806E9B8
- movs r4, 0
-_0806E9B8:
- adds r0, r6, 0
- movs r1, 0x38
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806E9EA
- mov r2, r10
- cmp r2, 0x1
- bne _0806E9EA
- ldr r0, _0806EAE4
- ldr r0, [r0]
- ldr r1, _0806EAE8
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806E9EA
- lsls r0, r7, 4
- subs r7, r0, r7
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 1
- mov r8, r0
-_0806E9EA:
- adds r0, r6, 0
- movs r1, 0x3F
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806EA1C
- mov r0, r10
- cmp r0, 0x1
- bne _0806EA1C
- ldr r0, _0806EAE4
- ldr r0, [r0]
- ldr r1, _0806EAEC
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806EA1C
- lsls r0, r7, 4
- subs r7, r0, r7
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 1
- mov r8, r0
-_0806EA1C:
- mov r0, r9
- movs r1, 0x6
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806EA38
- mov r0, r10
- cmp r0, 0
- bne _0806EA38
- lsls r7, 2
- mov r1, r8
- lsls r0, r1, 2
- add r8, r0
-_0806EA38:
- mov r0, r9
- movs r1, 0x34
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806EA90
- mov r2, r10
- cmp r2, 0
- bne _0806EA90
- mov r0, r9
- ldr r5, [r0, 0x70]
- bl HasNegativeStatus
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x8
- adds r2, r4, 0
- bl SetVisualFlags
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r4, 0
- beq _0806EA7A
- ldr r2, [sp, 0x4]
- lsls r0, r2, 1
- adds r2, r0, r2
- str r2, [sp, 0x4]
- ldr r0, [sp, 0x8]
- lsls r0, 1
- str r0, [sp, 0x8]
-_0806EA7A:
- cmp r1, 0
- beq _0806EA90
- mov r0, r9
- bl sub_8042940
- ldr r0, _0806EAF0
- ldr r2, [r0]
- adds r0, r6, 0
- mov r1, r9
- bl sub_80522F4
-_0806EA90:
- ldr r1, [sp]
- ldr r0, [r1]
- muls r0, r7
- str r0, [r1]
- ldr r2, [sp, 0x2C]
- ldr r0, [r2]
- ldr r1, [sp, 0x4]
- muls r0, r1
- str r0, [r2]
- mov r2, r8
- cmp r2, 0x1
- beq _0806EAB6
- ldr r1, [sp]
- ldr r0, [r1]
- mov r1, r8
- bl __divsi3
- ldr r2, [sp]
- str r0, [r2]
-_0806EAB6:
- ldr r0, [sp, 0x8]
- cmp r0, 0x1
- beq _0806EACA
- ldr r1, [sp, 0x2C]
- ldr r0, [r1]
- ldr r1, [sp, 0x8]
- bl __divsi3
- ldr r2, [sp, 0x2C]
- str r0, [r2]
-_0806EACA:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806EADC: .4byte gUnknown_80FEE04
-_0806EAE0: .4byte gUnknown_80FEE2C
-_0806EAE4: .4byte gDungeonGlobalData
-_0806EAE8: .4byte 0x000037fa
-_0806EAEC: .4byte 0x000037f8
-_0806EAF0: .4byte gUnknown_80FEE54
- thumb_func_end sub_806E8B0
-
- thumb_func_start sub_806EAF4
-sub_806EAF4:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8C
- str r0, [sp, 0x70]
- mov r9, r1
- adds r7, r3, 0
- ldr r0, [sp, 0xB8]
- ldr r1, [sp, 0xBC]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x74]
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x78]
- ldr r0, [sp, 0x70]
- ldr r0, [r0, 0x70]
- mov r10, r0
- mov r1, r9
- ldr r1, [r1, 0x70]
- str r1, [sp, 0x7C]
- adds r0, r2, 0
- bl sub_8092354
- movs r2, 0
- str r2, [sp, 0x80]
- lsls r0, 24
- cmp r0, 0
- bne _0806EB3A
- movs r3, 0x1
- str r3, [sp, 0x80]
-_0806EB3A:
- bl sub_806F500
- mov r6, r10
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0806EB72
- movs r0, 0x9E
- lsls r0, 1
- add r0, r10
- ldr r0, [r0]
- bl GetBellyRoundedUp
- adds r1, r0, 0
- cmp r1, 0
- bne _0806EB72
- movs r0, 0x1
- ldr r2, [sp, 0xB0]
- str r0, [r2]
- str r1, [r2, 0x4]
- movs r0, 0x2
- str r0, [r2, 0x8]
- add r3, sp, 0x74
- ldrb r3, [r3]
- strb r3, [r2, 0xC]
- strb r1, [r2, 0xD]
- strb r1, [r2, 0xE]
- strb r1, [r2, 0xF]
- b _0806F294
-_0806EB72:
- ldr r0, _0806EBA4
- cmp r4, r0
- bne _0806EBA8
- mov r0, r9
- movs r1, 0x35
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806EBA8
- movs r0, 0x1
- ldr r6, [sp, 0xB0]
- str r0, [r6]
- movs r1, 0
- str r1, [r6, 0x4]
- movs r0, 0x2
- str r0, [r6, 0x8]
- add r0, sp, 0x74
- ldrb r0, [r0]
- strb r0, [r6, 0xC]
- strb r1, [r6, 0xD]
- strb r1, [r6, 0xE]
- strb r1, [r6, 0xF]
- b _0806F294
- .align 2, 0
-_0806EBA4: .4byte 0x00000163
-_0806EBA8:
- add r1, sp, 0x74
- ldrb r2, [r1]
- ldr r1, [sp, 0xB0]
- strb r2, [r1, 0xC]
- ldr r1, _0806EDA4
- ldr r0, [r1]
- movs r2, 0x9A
- lsls r2, 1
- adds r0, r2
- add r3, sp, 0x74
- ldrb r3, [r3]
- strb r3, [r0]
- ldr r2, [r1]
- movs r6, 0x9C
- lsls r6, 1
- adds r0, r2, r6
- ldr r1, [sp, 0x80]
- str r1, [r0]
- lsls r1, 1
- mov r0, r10
- adds r0, 0x1C
- adds r0, r1
- movs r3, 0
- ldrsh r4, [r0, r3]
- mov r8, r1
- ldr r6, [sp, 0x78]
- cmp r6, 0
- beq _0806EBF8
- ldr r0, [sp, 0x74]
- cmp r0, 0x2
- bne _0806EBF8
- mov r1, r10
- movs r3, 0x28
- ldrsh r0, [r1, r3]
- adds r4, r0
- ldrh r1, [r1, 0x28]
- movs r6, 0xA2
- lsls r6, 1
- adds r0, r2, r6
- strh r1, [r0]
-_0806EBF8:
- mov r0, r10
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- ldr r0, _0806EDA8
- cmp r1, r0
- bne _0806EC06
- adds r4, 0x2
-_0806EC06:
- movs r0, 0xD1
- lsls r0, 1
- cmp r1, r0
- bne _0806EC10
- subs r4, 0x2
-_0806EC10:
- ldr r0, _0806EDAC
- cmp r1, r0
- bne _0806EC18
- subs r4, 0x2
-_0806EC18:
- cmp r4, 0
- bge _0806EC1E
- movs r4, 0
-_0806EC1E:
- cmp r4, 0x14
- ble _0806EC24
- movs r4, 0x14
-_0806EC24:
- ldr r6, _0806EDA4
- ldr r0, [r6]
- movs r3, 0x9F
- lsls r3, 1
- adds r0, r3
- strb r4, [r0]
- ldr r1, [r6]
- mov r5, r10
- adds r5, 0x14
- ldr r0, [sp, 0x80]
- adds r2, r5, r0
- ldrb r0, [r2]
- adds r0, r7
- adds r3, 0x2
- adds r1, r3
- strh r0, [r1]
- ldrb r0, [r2]
- adds r0, r7
- lsls r0, 8
- ldr r2, _0806EDB0
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_8009DA4
- adds r2, r0, 0
- ldr r0, [sp, 0x80]
- lsls r4, r0, 2
- mov r0, r10
- adds r0, 0x2C
- adds r0, r4
- ldr r1, [r0]
- adds r0, r2, 0
- bl sub_8009DA4
- adds r2, r0, 0
- str r5, [sp, 0x88]
- cmp r2, 0
- bge _0806EC74
- adds r0, 0xFF
-_0806EC74:
- asrs r0, 8
- str r0, [sp, 0x8]
- ldr r0, [sp, 0x7C]
- adds r0, 0x20
- add r0, r8
- movs r1, 0
- ldrsh r3, [r0, r1]
- ldr r2, [sp, 0x80]
- cmp r2, 0
- bne _0806ECA0
- ldr r0, [sp, 0x7C]
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0806ECA0
- ldr r0, [r6]
- movs r6, 0xBD
- lsls r6, 1
- adds r1, r0, r6
- movs r0, 0x1
- strb r0, [r1]
- adds r3, 0x1
-_0806ECA0:
- ldr r0, [sp, 0x7C]
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- ldr r0, _0806EDA8
- cmp r1, r0
- bne _0806ECAE
- subs r3, 0x2
-_0806ECAE:
- movs r0, 0xD1
- lsls r0, 1
- cmp r1, r0
- bne _0806ECB8
- adds r3, 0x2
-_0806ECB8:
- ldr r0, _0806EDAC
- cmp r1, r0
- bne _0806ECC0
- subs r3, 0x2
-_0806ECC0:
- cmp r3, 0
- bge _0806ECC6
- movs r3, 0
-_0806ECC6:
- cmp r3, 0x14
- ble _0806ECCC
- movs r3, 0x14
-_0806ECCC:
- ldr r5, _0806EDA4
- ldr r0, [r5]
- ldr r6, _0806EDB4
- adds r0, r6
- strb r3, [r0]
- ldr r2, [r5]
- ldr r0, [sp, 0x7C]
- adds r0, 0x16
- ldr r1, [sp, 0x80]
- adds r0, r1
- ldrb r1, [r0]
- adds r6, 0x3
- adds r2, r6
- strh r1, [r2]
- ldrb r0, [r0]
- lsls r0, 8
- ldr r2, _0806EDB8
- lsls r1, r3, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_8009DA4
- adds r2, r0, 0
- ldr r0, [sp, 0x7C]
- adds r0, 0x34
- adds r0, r4
- ldr r1, [r0]
- adds r0, r2, 0
- bl sub_8009DA4
- cmp r0, 0
- bge _0806ED0E
- adds r0, 0xFF
-_0806ED0E:
- asrs r0, 8
- str r0, [sp, 0xC]
- movs r0, 0x64
- bl DungeonRandomCapped
- str r0, [sp, 0x84]
- ldr r0, [sp, 0x80]
- cmp r0, 0
- bne _0806EDC8
- ldr r0, [sp, 0x70]
- movs r1, 0x13
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806ED4A
- ldr r2, _0806EDBC
- movs r3, 0
- ldrsh r1, [r2, r3]
- ldr r0, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x8]
- ldr r1, [r5]
- movs r6, 0xB0
- lsls r6, 1
- adds r1, r6
- ldrb r0, [r2]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
-_0806ED4A:
- ldr r0, [sp, 0x70]
- movs r1, 0x2B
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806ED74
- ldr r2, _0806EDC0
- movs r3, 0
- ldrsh r1, [r2, r3]
- ldr r0, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x8]
- ldr r1, [r5]
- movs r6, 0xB0
- lsls r6, 1
- adds r1, r6
- ldrb r0, [r2]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
-_0806ED74:
- ldr r3, [sp, 0x78]
- cmp r3, 0
- beq _0806EE4A
- mov r0, r9
- movs r1, 0x1E
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806EE4A
- ldr r2, _0806EDC4
- movs r6, 0
- ldrsh r1, [r2, r6]
- ldr r0, [sp, 0xC]
- adds r0, r1
- str r0, [sp, 0xC]
- ldr r0, [r5]
- movs r3, 0xB1
- lsls r3, 1
- adds r1, r0, r3
- ldrb r0, [r2]
- ldrb r6, [r1]
- adds r0, r6
- b _0806EE48
- .align 2, 0
-_0806EDA4: .4byte gDungeonGlobalData
-_0806EDA8: .4byte 0x000001a1
-_0806EDAC: .4byte 0x000001a3
-_0806EDB0: .4byte gUnknown_80F504C
-_0806EDB4: .4byte 0x0000013f
-_0806EDB8: .4byte gUnknown_80F50A0
-_0806EDBC: .4byte gUnknown_810AC60
-_0806EDC0: .4byte gUnknown_810AC68
-_0806EDC4: .4byte gUnknown_810AC64
-_0806EDC8:
- ldr r0, [sp, 0x78]
- cmp r0, 0
- beq _0806EDF6
- mov r0, r9
- movs r1, 0x22
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806EDF6
- ldr r2, _0806EEF8
- movs r3, 0
- ldrsh r1, [r2, r3]
- ldr r0, [sp, 0xC]
- adds r0, r1
- str r0, [sp, 0xC]
- ldr r0, [r5]
- ldr r6, _0806EEFC
- adds r1, r0, r6
- ldrb r0, [r2]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
-_0806EDF6:
- ldr r0, [sp, 0x70]
- movs r1, 0x21
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806EE20
- ldr r2, _0806EF00
- movs r3, 0
- ldrsh r1, [r2, r3]
- ldr r0, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x8]
- ldr r0, _0806EF04
- ldr r0, [r0]
- ldr r6, _0806EF08
- adds r1, r0, r6
- ldrb r0, [r2]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
-_0806EE20:
- ldr r0, [sp, 0x70]
- movs r1, 0x2B
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806EE4A
- ldr r2, _0806EF0C
- movs r3, 0
- ldrsh r1, [r2, r3]
- ldr r0, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x8]
- ldr r0, _0806EF04
- ldr r0, [r0]
- ldr r6, _0806EF08
- adds r1, r0, r6
- ldrb r0, [r2]
- ldrb r2, [r1]
- adds r0, r2
-_0806EE48:
- strb r0, [r1]
-_0806EE4A:
- ldr r0, _0806EF04
- ldr r2, [r0]
- movs r3, 0xA3
- lsls r3, 1
- adds r1, r2, r3
- add r0, sp, 0x8
- ldrh r0, [r0]
- strh r0, [r1]
- movs r6, 0xA4
- lsls r6, 1
- adds r1, r2, r6
- add r4, sp, 0xC
- ldrh r0, [r4]
- strh r0, [r1]
- ldr r0, [sp, 0x8]
- cmp r0, 0
- bge _0806EE70
- movs r0, 0
- str r0, [sp, 0x8]
-_0806EE70:
- ldr r1, _0806EF10
- ldr r0, [sp, 0x8]
- cmp r0, r1
- ble _0806EE7C
- ldr r0, _0806EF14
- str r0, [sp, 0x8]
-_0806EE7C:
- movs r3, 0xA8
- lsls r3, 1
- add r3, r10
- ldrh r2, [r3]
- ldr r1, _0806EF18
- adds r0, r1, 0
- ands r0, r2
- strh r0, [r3]
- movs r2, 0xA7
- lsls r2, 1
- add r2, r10
- ldrh r0, [r2]
- ands r1, r0
- strh r1, [r2]
- str r4, [sp]
- ldr r0, [sp, 0x84]
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x70]
- mov r1, r9
- ldr r2, [sp, 0x74]
- add r3, sp, 0x8
- bl sub_806E8B0
- add r5, sp, 0x10
- ldr r1, [sp, 0x8]
- ldr r0, [sp, 0xC]
- subs r1, r0
- adds r0, r5, 0
- bl sub_800A020
- add r4, sp, 0x18
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_800A020
- adds r0, r5, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_800A3F0
- mov r1, r10
- ldrb r6, [r1, 0x6]
- mov r8, r5
- adds r7, r4, 0
- cmp r6, 0
- bne _0806EF20
- ldrb r1, [r1, 0x9]
- adds r0, r7, 0
- bl sub_800A020
- str r6, [sp, 0x20]
- ldr r0, _0806EF1C
- add r2, sp, 0x20
- str r0, [r2, 0x4]
- adds r0, r7, 0
- adds r1, r7, 0
- bl sub_800A34C
- mov r2, r10
- ldrb r0, [r2, 0x9]
- lsls r0, 1
- b _0806EF60
- .align 2, 0
-_0806EEF8: .4byte gUnknown_810AC66
-_0806EEFC: .4byte 0x00000163
-_0806EF00: .4byte gUnknown_810AC62
-_0806EF04: .4byte gDungeonGlobalData
-_0806EF08: .4byte 0x00000161
-_0806EF0C: .4byte gUnknown_810AC68
-_0806EF10: .4byte 0x000003e6
-_0806EF14: .4byte 0x000003e7
-_0806EF18: .4byte 0x0000feff
-_0806EF1C: .4byte 0x0000aaaa
-_0806EF20:
- ldr r3, [sp, 0x88]
- ldr r6, [sp, 0x80]
- adds r0, r3, r6
- ldrb r0, [r0]
- str r0, [sp, 0x28]
- movs r0, 0x1
- str r0, [sp, 0x2C]
- add r3, sp, 0x28
- add r0, sp, 0x2C
- str r0, [sp]
- ldr r0, [sp, 0x84]
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x70]
- mov r1, r9
- ldr r2, [sp, 0x74]
- bl sub_806E8B0
- ldr r1, [sp, 0x28]
- adds r0, r7, 0
- bl sub_800A020
- add r4, sp, 0x20
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_800A020
- adds r0, r7, 0
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_800A3F0
- ldr r0, [sp, 0x28]
-_0806EF60:
- movs r1, 0x3
- bl __divsi3
- adds r6, r0, 0
- add r5, sp, 0x30
- adds r0, r5, 0
- mov r1, r8
- adds r2, r7, 0
- bl sub_800A6D0
- ldr r4, _0806F098
- ldr r0, [r4]
- movs r1, 0xA5
- lsls r1, 1
- adds r0, r1
- movs r2, 0
- mov r8, r2
- strh r6, [r0]
- adds r0, r5, 0
- bl sub_800A048
- ldr r1, [r4]
- movs r3, 0xA6
- lsls r3, 1
- adds r1, r3
- strh r0, [r1]
- ldr r0, [sp, 0x30]
- ldr r1, [sp, 0x34]
- str r0, [sp, 0x38]
- str r1, [sp, 0x3C]
- str r0, [sp, 0x48]
- str r1, [sp, 0x4C]
- add r6, sp, 0x38
- adds r0, r6, 0
- adds r1, r6, 0
- adds r2, r6, 0
- bl sub_800A34C
- mov r0, r8
- str r0, [sp, 0x40]
- ldr r0, _0806F09C
- add r5, sp, 0x40
- str r0, [r5, 0x4]
- adds r0, r6, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_800A34C
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_800A020
- add r4, sp, 0x48
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_800A34C
- ldr r1, [sp, 0xC]
- adds r0, r5, 0
- bl sub_800A020
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_800A6F0
- adds r0, r5, 0
- movs r1, 0xA
- bl sub_800A020
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_800A6D0
- add r5, sp, 0x50
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_800A6D0
- ldr r4, _0806F0A0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_800A2F0
- lsls r0, 24
- mov r8, r5
- cmp r0, 0
- beq _0806F01E
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- str r0, [sp, 0x50]
- str r1, [sp, 0x54]
-_0806F01E:
- ldr r4, _0806F0A4
- mov r0, r8
- adds r1, r4, 0
- bl sub_800A2F0
- lsls r0, 24
- cmp r0, 0
- beq _0806F036
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- str r0, [sp, 0x50]
- str r1, [sp, 0x54]
-_0806F036:
- add r4, sp, 0x58
- ldr r1, [sp, 0xB0]
- str r1, [sp]
- adds r0, r4, 0
- ldr r1, [sp, 0x70]
- mov r2, r9
- ldr r3, [sp, 0x74]
- bl sub_806E100
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r4, 0
- ldr r2, [sp, 0x74]
- cmp r2, 0x2
- bne _0806F0BC
- mov r0, r9
- bl GetFlashFireStatus
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0806F0BC
- ldr r3, [sp, 0x7C]
- movs r6, 0xA9
- lsls r6, 1
- adds r1, r3, r6
- ldrb r0, [r1]
- cmp r0, 0
- bne _0806F0BC
- ldr r0, [sp, 0x78]
- cmp r0, 0
- beq _0806F118
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _0806F0A8
- mov r1, r9
- movs r2, 0
- bl SetMessageArgument
- cmp r4, 0x1
- bne _0806F0B0
- ldr r0, _0806F0AC
- ldr r2, [r0]
- ldr r0, [sp, 0x70]
- mov r1, r9
- bl sub_80522F4
- b _0806F0BC
- .align 2, 0
-_0806F098: .4byte gDungeonGlobalData
-_0806F09C: .4byte 0x00000ccc
-_0806F0A0: .4byte gUnknown_8106F24
-_0806F0A4: .4byte gUnknown_8106F04
-_0806F0A8: .4byte gUnknown_202DFE8
-_0806F0AC: .4byte gUnknown_80FAE00
-_0806F0B0:
- ldr r0, _0806F15C
- ldr r2, [r0]
- ldr r0, [sp, 0x70]
- mov r1, r9
- bl sub_80522F4
-_0806F0BC:
- ldr r1, [sp, 0x78]
- cmp r1, 0
- beq _0806F118
- ldr r2, [sp, 0x80]
- cmp r2, 0
- bne _0806F0EE
- ldr r0, [sp, 0x7C]
- adds r0, 0xC4
- ldrb r4, [r0]
- cmp r4, 0x1
- bne _0806F0EE
- mov r0, r9
- bl sub_8041B74
- ldr r2, _0806F160
- adds r0, r7, 0
- adds r1, r7, 0
- bl sub_800A34C
- ldr r0, _0806F164
- ldr r0, [r0]
- movs r3, 0xB3
- lsls r3, 1
- adds r0, r3
- strb r4, [r0]
-_0806F0EE:
- ldr r6, [sp, 0x80]
- cmp r6, 0x1
- bne _0806F118
- ldr r0, [sp, 0x7C]
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0806F118
- mov r0, r9
- bl sub_8041B5C
- ldr r2, _0806F160
- adds r0, r7, 0
- adds r1, r7, 0
- bl sub_800A34C
- ldr r0, _0806F164
- ldr r0, [r0]
- ldr r1, _0806F168
- adds r0, r1
- strb r6, [r0]
-_0806F118:
- mov r0, r9
- movs r1, 0xC
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806F1F4
- mov r0, r9
- movs r1, 0x13
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0806F1F4
- mov r3, r10
- ldrb r0, [r3, 0x6]
- ldr r4, [sp, 0xAC]
- cmp r0, 0
- beq _0806F140
- movs r4, 0
-_0806F140:
- mov r0, r10
- adds r0, 0xDC
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0806F170
- ldr r4, _0806F16C
- ldr r0, _0806F164
- ldr r0, [r0]
- movs r6, 0xB4
- lsls r6, 1
- adds r0, r6
- movs r1, 0x1
- strb r1, [r0]
- b _0806F1DA
- .align 2, 0
-_0806F15C: .4byte gUnknown_80FADD8
-_0806F160: .4byte gUnknown_8106F1C
-_0806F164: .4byte gDungeonGlobalData
-_0806F168: .4byte 0x00000167
-_0806F16C: .4byte 0x000003e7
-_0806F170:
- ldr r0, [sp, 0x70]
- movs r1, 0xC
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806F194
- ldr r0, _0806F2A4
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r4, r0
- ldr r0, _0806F2A8
- ldr r0, [r0]
- movs r2, 0xB2
- lsls r2, 1
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
-_0806F194:
- mov r0, r9
- movs r1, 0xD
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806F1B6
- ldr r0, _0806F2A4
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r4, r0
- ldr r0, _0806F2A8
- ldr r0, [r0]
- ldr r6, _0806F2AC
- adds r1, r0, r6
- movs r0, 0x1
- strb r0, [r1]
-_0806F1B6:
- cmp r5, 0
- beq _0806F1DA
- ldr r0, [sp, 0x70]
- movs r1, 0x1
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0806F1DA
- ldr r0, _0806F2B0
- movs r1, 0
- ldrsh r4, [r0, r1]
- ldr r0, _0806F2A8
- ldr r0, [r0]
- ldr r2, _0806F2B4
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
-_0806F1DA:
- movs r0, 0x64
- bl DungeonRandomCapped
- cmp r0, r4
- bge _0806F1F4
- ldr r2, _0806F2B8
- adds r0, r7, 0
- adds r1, r7, 0
- bl sub_800A34C
- movs r0, 0x1
- ldr r3, [sp, 0xB0]
- strb r0, [r3, 0xD]
-_0806F1F4:
- mov r0, r8
- bl sub_800A048
- ldr r5, _0806F2A8
- ldr r1, [r5]
- movs r6, 0xAA
- lsls r6, 1
- adds r1, r6
- str r0, [r1]
- mov r0, r8
- mov r1, r8
- adds r2, r7, 0
- bl sub_800A34C
- ldr r0, [r5]
- movs r1, 0xAE
- lsls r1, 1
- adds r0, r1
- ldr r2, [sp, 0xB4]
- str r2, [r0]
- add r4, sp, 0x60
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_800A088
- mov r0, r8
- mov r1, r8
- adds r2, r4, 0
- bl sub_800A34C
- mov r0, r8
- bl sub_800A048
- ldr r1, [r5]
- movs r3, 0xA8
- lsls r3, 1
- adds r1, r3
- str r0, [r1]
- movs r0, 0x80
- lsls r0, 7
- bl DungeonRandomCapped
- movs r6, 0
- str r6, [sp, 0x58]
- movs r1, 0xE0
- lsls r1, 8
- adds r0, r1
- str r0, [r7, 0x4]
- mov r0, r8
- mov r1, r8
- adds r2, r7, 0
- bl sub_800A34C
- add r4, sp, 0x68
- adds r0, r4, 0
- movs r1, 0x64
- bl sub_800A020
- adds r0, r7, 0
- adds r1, r4, 0
- adds r2, r7, 0
- bl sub_800A34C
- adds r0, r7, 0
- bl sub_800A048
- ldr r1, [r5]
- movs r2, 0xAC
- lsls r2, 1
- adds r1, r2
- str r0, [r1]
- mov r0, r8
- bl sub_800A048
- ldr r3, [sp, 0xB0]
- str r0, [r3]
- str r6, [r3, 0x4]
- cmp r0, 0
- bne _0806F294
- strb r0, [r3, 0xD]
-_0806F294:
- add sp, 0x8C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F2A4: .4byte gUnknown_80F4DAE
-_0806F2A8: .4byte gDungeonGlobalData
-_0806F2AC: .4byte 0x00000165
-_0806F2B0: .4byte gUnknown_80F4DB0
-_0806F2B4: .4byte 0x00000169
-_0806F2B8: .4byte gUnknown_8106F14
- thumb_func_end sub_806EAF4
-
- thumb_func_start sub_806F2BC
-sub_806F2BC:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r5, r0, 0
- mov r12, r1
- ldr r7, [sp, 0x2C]
- lsls r2, 24
- lsrs r4, r2, 24
- adds r6, r3, 0
- cmp r6, 0
- bgt _0806F2D6
- movs r6, 0x1
-_0806F2D6:
- ldr r0, _0806F320
- cmp r6, r0
- ble _0806F2DE
- adds r6, r0, 0
-_0806F2DE:
- movs r0, 0
- mov r8, r0
- strb r4, [r7, 0xC]
- str r7, [sp]
- add r0, sp, 0x4
- adds r1, r5, 0
- mov r2, r12
- adds r3, r4, 0
- bl sub_806E100
- add r4, sp, 0xC
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_800A020
- adds r0, r4, 0
- adds r1, r4, 0
- add r2, sp, 0x4
- bl sub_800A34C
- adds r0, r4, 0
- bl sub_800A048
- str r0, [r7]
- mov r0, r8
- str r0, [r7, 0x4]
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F320: .4byte 0x000003e7
- thumb_func_end sub_806F2BC
-
- thumb_func_start sub_806F324
-sub_806F324:
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x94
- mov r8, r0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, r3, 16
- asrs r4, 16
- add r0, sp, 0x10
- bl sub_80457DC
- add r2, sp, 0x84
- str r5, [sp, 0x84]
- movs r0, 0x2
- str r0, [r2, 0x8]
- movs r0, 0
- strb r0, [r2, 0xC]
- str r6, [r2, 0x4]
- strb r0, [r2, 0xD]
- strb r0, [r2, 0xE]
- strb r0, [r2, 0xF]
- str r0, [sp]
- str r4, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- mov r1, r8
- movs r3, 0
- bl sub_806D010
- add sp, 0x94
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806F324
-
- thumb_func_start sub_806F370
-sub_806F370:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r10, r0
- adds r7, r1, 0
- mov r9, r3
- ldr r0, [sp, 0x50]
- ldr r1, [sp, 0x54]
- ldr r3, [sp, 0x58]
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- asrs r1, 16
- mov r8, r1
- adds r5, r2, 0
- movs r0, 0x2
- str r0, [sp, 0x18]
- str r3, [sp, 0x14]
- add r0, sp, 0x10
- movs r1, 0
- strb r4, [r0, 0xC]
- strb r1, [r0, 0xD]
- strb r1, [r0, 0xE]
- cmp r4, 0
- beq _0806F3FC
- ldr r1, [r7, 0x70]
- movs r2, 0
- lsls r0, r4, 3
- mov r3, sp
- adds r3, 0x20
- str r3, [sp, 0x28]
- ldr r6, _0806F408
- mov r12, r6
- adds r1, 0x5C
- adds r0, r4
- lsls r3, r0, 2
- ldr r4, [sp, 0x28]
-_0806F3C0:
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- add r0, r12
- movs r6, 0
- ldrsh r0, [r0, r6]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0x1
- ble _0806F3C0
- adds r0, r7, 0
- movs r1, 0x35
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0806F3FC
- ldr r2, _0806F40C
- ldr r1, [sp, 0x28]
- ldr r0, [r1, 0x4]
- lsls r0, 2
- ldr r1, [sp, 0x20]
- lsls r1, 4
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- cmp r0, 0x3
- beq _0806F3FC
- movs r5, 0
-_0806F3FC:
- str r5, [sp, 0x10]
- cmp r5, 0
- bne _0806F410
- add r1, sp, 0x10
- movs r0, 0x1
- b _0806F414
- .align 2, 0
-_0806F408: .4byte gTypeEffectivenessChart
-_0806F40C: .4byte gUnknown_80F54B4
-_0806F410:
- add r1, sp, 0x10
- movs r0, 0
-_0806F414:
- strb r0, [r1, 0xF]
- mov r3, r9
- str r3, [sp]
- mov r6, r8
- str r6, [sp, 0x4]
- ldr r0, [sp, 0x5C]
- str r0, [sp, 0x8]
- ldr r0, [sp, 0x60]
- str r0, [sp, 0xC]
- mov r0, r10
- adds r1, r7, 0
- add r2, sp, 0x10
- movs r3, 0
- bl sub_806D010
- ldr r0, [sp, 0x4C]
- cmp r0, 0
- beq _0806F440
- add r0, sp, 0x10
- ldrb r0, [r0, 0xF]
- ldr r1, [sp, 0x4C]
- strb r0, [r1]
-_0806F440:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_806F370
-
- thumb_func_start SetShopkeeperAggression
-SetShopkeeperAggression:
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, [r1, 0x70]
- adds r6, r4, 0
- ldrb r0, [r4, 0x8]
- cmp r0, 0
- beq _0806F47A
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0806F47A
- ldr r0, [r5, 0x70]
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- beq _0806F476
- movs r0, 0x2
- strb r0, [r4, 0x8]
- b _0806F47A
-_0806F476:
- movs r0, 0x3
- strb r0, [r6, 0x8]
-_0806F47A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end SetShopkeeperAggression
-
- thumb_func_start sub_806F480
-sub_806F480:
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r2, [r0, 0x70]
- adds r3, r2, 0
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0806F49E
- cmp r1, 0
- beq _0806F49A
- movs r0, 0x2
- strb r0, [r2, 0x8]
- b _0806F49E
-_0806F49A:
- movs r0, 0x3
- strb r0, [r3, 0x8]
-_0806F49E:
- pop {r0}
- bx r0
- thumb_func_end sub_806F480
-
- thumb_func_start sub_806F4A4
-sub_806F4A4:
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, [r0, 0x70]
- movs r1, 0xE
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _0806F4CE
- cmp r4, 0x1
- beq _0806F4C0
- cmp r4, 0x7
- bne _0806F4CE
-_0806F4C0:
- adds r0, r5, 0
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806F4CE
-_0806F4CA:
- movs r0, 0
- b _0806F4F6
-_0806F4CE:
- movs r2, 0
- lsls r0, r4, 3
- ldr r6, _0806F4FC
- adds r3, r5, 0
- adds r3, 0x5C
- adds r0, r4
- lsls r1, r0, 2
-_0806F4DC:
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- adds r0, r6
- movs r4, 0
- ldrsh r0, [r0, r4]
- cmp r0, 0
- beq _0806F4CA
- adds r2, 0x1
- cmp r2, 0x1
- ble _0806F4DC
- movs r0, 0x1
-_0806F4F6:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0806F4FC: .4byte gTypeEffectivenessChart
- thumb_func_end sub_806F4A4
-
- thumb_func_start sub_806F500
-sub_806F500:
- ldr r0, _0806F5F4
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0x9A
- lsls r0, 1
- add r0, r12
- movs r1, 0
- strb r1, [r0]
- str r1, [r0, 0x4]
- strb r1, [r0, 0x8]
- strb r1, [r0, 0x9]
- movs r2, 0xA
- strb r2, [r0, 0xA]
- strb r2, [r0, 0xB]
- movs r2, 0
- movs r3, 0x1
- strh r3, [r0, 0xC]
- strh r3, [r0, 0xE]
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x14]
- strh r1, [r0, 0x12]
- strh r1, [r0, 0x16]
- strh r1, [r0, 0x18]
- str r1, [r0, 0x1C]
- str r1, [r0, 0x24]
- str r1, [r0, 0x28]
- movs r0, 0xB0
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F5F8
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB1
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F5FC
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB2
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F600
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB3
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F604
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB4
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F608
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB5
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB6
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F60C
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F610
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB7
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F614
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB8
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F618
- add r0, r12
- strb r2, [r0]
- movs r0, 0xB9
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F61C
- add r0, r12
- strb r2, [r0]
- movs r0, 0xBA
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F620
- add r0, r12
- strb r2, [r0]
- movs r0, 0xBB
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F624
- add r0, r12
- strb r2, [r0]
- movs r0, 0xBC
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- ldr r0, _0806F628
- add r0, r12
- strb r2, [r0]
- movs r0, 0xBD
- lsls r0, 1
- add r0, r12
- strb r2, [r0]
- bx lr
- .align 2, 0
-_0806F5F4: .4byte gDungeonGlobalData
-_0806F5F8: .4byte 0x00000161
-_0806F5FC: .4byte 0x00000163
-_0806F600: .4byte 0x00000165
-_0806F604: .4byte 0x00000167
-_0806F608: .4byte 0x00000169
-_0806F60C: .4byte 0x0000016b
-_0806F610: .4byte 0x0000016d
-_0806F614: .4byte 0x0000016f
-_0806F618: .4byte 0x00000171
-_0806F61C: .4byte 0x00000173
-_0806F620: .4byte 0x00000175
-_0806F624: .4byte 0x00000177
-_0806F628: .4byte 0x00000179
- thumb_func_end sub_806F500
-
- thumb_func_start sub_806F62C
-sub_806F62C:
- ldr r1, _0806F638
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_0806F638: .4byte gUnknown_8106F7C
- thumb_func_end sub_806F62C
-
- thumb_func_start sub_806F63C
-sub_806F63C:
- push {lr}
- ldr r1, _0806F658
- ldr r1, [r1]
- ldr r2, _0806F65C
- adds r1, r2
- ldr r1, [r1, 0x10]
- cmp r1, r0
- bne _0806F652
- adds r0, r1, 0
- bl sub_803F508
-_0806F652:
- pop {r0}
- bx r0
- .align 2, 0
-_0806F658: .4byte gDungeonGlobalData
-_0806F65C: .4byte 0x000181e8
- thumb_func_end sub_806F63C
-
- thumb_func_start sub_806F660
-sub_806F660:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- mov r8, r1
- ldr r0, [r6, 0x70]
- mov r10, r0
- ldr r4, [r1, 0x70]
- movs r1, 0x1
- negs r1, r1
- mov r9, r1
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0806F6C0
- ldr r3, [r0]
- ldr r1, _0806F6C4
- adds r0, r3, r1
- ldrh r2, [r0]
- subs r0, r2, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0806F702
- lsls r0, r2, 16
- asrs r1, r0, 16
- cmp r1, 0x9
- beq _0806F702
- cmp r1, 0xF
- beq _0806F702
- adds r0, r2, 0
- subs r0, 0x2C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bhi _0806F6CC
- ldr r2, _0806F6C8
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806F702
- b _0806F8FC
- .align 2, 0
-_0806F6C0: .4byte gDungeonGlobalData
-_0806F6C4: .4byte 0x00003a14
-_0806F6C8: .4byte 0x0000065c
-_0806F6CC:
- cmp r1, 0x31
- bne _0806F6F0
- ldr r1, _0806F6EC
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0806F6DC
- b _0806F8FC
-_0806F6DC:
- movs r0, 0xCF
- lsls r0, 1
- bl sub_8097900
- lsls r0, 24
- cmp r0, 0
- bne _0806F702
- b _0806F8FC
- .align 2, 0
-_0806F6EC: .4byte 0x00000659
-_0806F6F0:
- ldr r2, _0806F834
- adds r0, r3, r2
- ldrb r0, [r0]
- bl GetRecruitable
- lsls r0, 24
- cmp r0, 0
- bne _0806F702
- b _0806F8FC
-_0806F702:
- ldr r0, _0806F838
- ldr r0, [r0]
- ldr r3, _0806F83C
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806F712
- b _0806F8FC
-_0806F712:
- ldrh r1, [r4, 0x2]
- adds r0, r1, 0
- subs r0, 0x90
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _0806F766
- lsls r0, r1, 16
- asrs r1, r0, 16
- ldr r0, _0806F840
- cmp r1, r0
- beq _0806F766
- subs r0, 0x1
- cmp r1, r0
- beq _0806F766
- adds r0, 0x2
- cmp r1, r0
- beq _0806F766
- adds r0, 0x8A
- cmp r1, r0
- beq _0806F766
- adds r0, 0x1
- cmp r1, r0
- beq _0806F766
- adds r0, 0x4
- cmp r1, r0
- beq _0806F766
- subs r0, 0x1
- cmp r1, r0
- beq _0806F766
- adds r0, 0x2
- cmp r1, r0
- beq _0806F766
- subs r0, 0x9
- cmp r1, r0
- beq _0806F766
- adds r0, 0x1
- cmp r1, r0
- beq _0806F766
- adds r0, 0x1
- cmp r1, r0
- bne _0806F776
-_0806F766:
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- bl HasRecruitedMon
- lsls r0, 24
- cmp r0, 0
- beq _0806F776
- b _0806F8FC
-_0806F776:
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- bl sub_806F9BC
- lsls r0, 24
- cmp r0, 0
- bne _0806F786
- b _0806F8FC
-_0806F786:
- movs r3, 0x4
- ldrsh r1, [r6, r3]
- mov r2, r8
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- subs r1, r0
- cmp r1, 0
- bge _0806F798
- negs r1, r1
-_0806F798:
- cmp r1, 0x1
- ble _0806F79E
- b _0806F8FC
-_0806F79E:
- movs r0, 0x6
- ldrsh r1, [r6, r0]
- mov r2, r8
- movs r3, 0x6
- ldrsh r0, [r2, r3]
- subs r1, r0
- cmp r1, 0
- bge _0806F7B0
- negs r1, r1
-_0806F7B0:
- cmp r1, 0x1
- ble _0806F7B6
- b _0806F8FC
-_0806F7B6:
- adds r0, r4, 0
- adds r0, 0x40
- ldrb r0, [r0]
- cmp r0, 0x4A
- bne _0806F7C2
- b _0806F8FC
-_0806F7C2:
- adds r0, r4, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0806F7CE
- b _0806F8FC
-_0806F7CE:
- mov r0, r8
- adds r1, r6, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- bne _0806F7DE
- b _0806F8FC
-_0806F7DE:
- bl sub_806F910
- movs r0, 0xFA
- lsls r0, 2
- bl DungeonRandomCapped
- adds r7, r0, 0
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- bl GetBaseRecruit
- lsls r0, 16
- asrs r4, r0, 16
- ldr r0, _0806F844
- cmp r4, r0
- bne _0806F800
- b _0806F8FC
-_0806F800:
- adds r0, r6, 0
- movs r1, 0x2E
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0806F816
- ldr r0, _0806F848
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r0
-_0806F816:
- ldr r0, _0806F84C
- mov r3, r10
- ldrb r1, [r3, 0x9]
- lsls r1, 1
- adds r1, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- adds r4, r0
- cmp r7, r4
- bge _0806F8FC
- movs r4, 0
- movs r0, 0x6
- subs r3, r0, r5
- ldr r7, _0806F850
- b _0806F856
- .align 2, 0
-_0806F834: .4byte 0x00000644
-_0806F838: .4byte gDungeonGlobalData
-_0806F83C: .4byte 0x0000065d
-_0806F840: .4byte 0x0000010d
-_0806F844: .4byte 0xfffffc19
-_0806F848: .4byte gUnknown_80F5008
-_0806F84C: .4byte gUnknown_80F5700
-_0806F850: .4byte gUnknown_202EE70
-_0806F854:
- adds r4, 0x1
-_0806F856:
- cmp r4, r3
- bgt _0806F878
- movs r2, 0
- cmp r2, r5
- bge _0806F872
- adds r1, r4, r7
- b _0806F86C
-_0806F864:
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, r5
- bge _0806F872
-_0806F86C:
- ldrb r0, [r1]
- cmp r0, 0
- beq _0806F864
-_0806F872:
- cmp r2, r5
- bne _0806F854
- mov r9, r4
-_0806F878:
- movs r0, 0x1
- negs r0, r0
- cmp r9, r0
- beq _0806F8F4
- movs r4, 0
- ldr r3, _0806F8BC
- ldr r0, [r3]
- ldr r2, _0806F8C0
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806F8B4
- adds r7, r3, 0
- adds r5, r2, 0
- movs r2, 0
- movs r3, 0x1
-_0806F89C:
- adds r2, 0x64
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0806F8B4
- ldr r0, [r7]
- adds r0, r2, r0
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0806F89C
-_0806F8B4:
- cmp r4, 0x4
- beq _0806F8F4
- movs r4, 0
- b _0806F8C6
- .align 2, 0
-_0806F8BC: .4byte gRecruitedPokemonRef
-_0806F8C0: .4byte 0x00008df8
-_0806F8C4:
- adds r4, 0x1
-_0806F8C6:
- cmp r4, 0x3
- bgt _0806F8E2
- ldr r0, _0806F8EC
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r3, _0806F8F0
- adds r0, r3
- adds r0, r1
- ldr r0, [r0]
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806F8C4
-_0806F8E2:
- cmp r4, 0x4
- beq _0806F8F4
- movs r0, 0x1
- b _0806F8FE
- .align 2, 0
-_0806F8EC: .4byte gDungeonGlobalData
-_0806F8F0: .4byte 0x0001357c
-_0806F8F4:
- adds r0, r6, 0
- mov r1, r8
- bl nullsub_96
-_0806F8FC:
- movs r0, 0
-_0806F8FE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806F660
-
- thumb_func_start nullsub_96
-nullsub_96:
- bx lr
- thumb_func_end nullsub_96
-
- thumb_func_start sub_806F910
-sub_806F910:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- movs r6, 0
- movs r7, 0x40
-_0806F91C:
- ldr r0, _0806F9AC
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r2, _0806F9B0
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- adds r1, r6, 0x1
- mov r8, r1
- cmp r0, 0
- beq _0806F98A
- ldr r0, [r4, 0x70]
- movs r2, 0x4
- ldrsh r0, [r0, r2]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r1, r0, 24
- adds r0, r4, 0
- adds r0, 0x68
- strh r7, [r0]
- ldr r0, [r4, 0x70]
- ldr r2, _0806F9B4
- adds r0, r2
- strb r6, [r0]
- ldr r0, [r4, 0x70]
- adds r2, 0x1
- adds r0, r2
- strb r1, [r0]
- cmp r1, 0
- beq _0806F978
- ldr r3, _0806F9B8
- movs r2, 0x1
-_0806F966:
- cmp r5, 0x5
- bgt _0806F972
- adds r0, r5, r3
- strb r2, [r0]
- adds r7, 0x10
- adds r5, 0x1
-_0806F972:
- subs r1, 0x1
- cmp r1, 0
- bne _0806F966
-_0806F978:
- adds r0, r4, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806CCB4
-_0806F98A:
- mov r6, r8
- cmp r6, 0x3
- ble _0806F91C
- cmp r5, 0x5
- bgt _0806F9A2
- ldr r2, _0806F9B8
- movs r1, 0
-_0806F998:
- adds r0, r5, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x5
- ble _0806F998
-_0806F9A2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806F9AC: .4byte gDungeonGlobalData
-_0806F9B0: .4byte 0x0001357c
-_0806F9B4: .4byte 0x00000167
-_0806F9B8: .4byte gUnknown_202EE70
- thumb_func_end sub_806F910
-
- thumb_func_start sub_806F9BC
-sub_806F9BC:
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 16
- asrs r4, r0, 16
- ldr r5, _0806FA40
- ldr r0, [r5]
- movs r1, 0xCB
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0806FA3C
- adds r0, r4, 0
- bl sub_808529C
- lsls r0, 24
- cmp r0, 0
- beq _0806FA3C
- cmp r4, 0x97
- bne _0806F9F2
- ldr r0, [r5]
- movs r1, 0xCF
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0806FA3C
-_0806F9F2:
- movs r0, 0xCC
- lsls r0, 1
- cmp r4, r0
- beq _0806FA3C
- ldr r0, _0806FA44
- cmp r4, r0
- beq _0806FA3C
- ldr r0, _0806FA48
- cmp r4, r0
- beq _0806FA3C
- movs r0, 0xD1
- lsls r0, 1
- cmp r4, r0
- beq _0806FA3C
- ldr r0, _0806FA4C
- cmp r4, r0
- beq _0806FA3C
- adds r0, r4, 0
- bl GetUnk12
- lsls r0, 24
- cmp r0, 0
- bne _0806FA50
- adds r0, r4, 0
- bl GetFriendArea
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- movs r3, 0
- bl sub_8092638
- mov r0, sp
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _0806FA50
-_0806FA3C:
- movs r0, 0
- b _0806FA52
- .align 2, 0
-_0806FA40: .4byte gDungeonGlobalData
-_0806FA44: .4byte 0x00000199
-_0806FA48: .4byte 0x000001a1
-_0806FA4C: .4byte 0x000001a3
-_0806FA50:
- movs r0, 0x1
-_0806FA52:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806F9BC
-
- thumb_func_start sub_806FA5C
-sub_806FA5C:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r8, r0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r0, r5, 0x4
- mov r1, r8
- adds r1, 0x4
- bl CalculateFacingDir
- adds r4, r0, 0
- movs r0, 0
- mov r10, r0
- movs r1, 0
- ldrsh r0, [r6, r1]
- bl GetFriendArea
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- adds r0, r5, 0
- adds r0, 0x22
- mov r2, r10
- strb r2, [r0]
- mov r0, r8
- adds r1, r5, 0
- bl sub_807A0CC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_806CE68
- ldr r0, _0806FAD4
- movs r3, 0
- ldrsh r1, [r6, r3]
- bl CopyCyanSpeciesNametoBuffer
- ldr r0, _0806FAD8
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl sub_8052B8C
- cmp r0, 0
- bne _0806FAE4
- movs r4, 0
- ldrsh r1, [r6, r4]
- ldr r0, _0806FADC
- cmp r1, r0
- beq _0806FB28
- ldr r0, _0806FAE0
- ldr r1, [r0]
- mov r0, r8
- bl SendMessage
- b _0806FB28
- .align 2, 0
-_0806FAD4: .4byte gAvailablePokemonNames
-_0806FAD8: .4byte gUnknown_80F9FE8
-_0806FADC: .4byte 0x0000019d
-_0806FAE0: .4byte gUnknown_80FA004
-_0806FAE4:
- movs r7, 0
- ldr r3, _0806FB2C
- ldr r0, [r3]
- ldr r2, _0806FB30
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806FB1A
- mov r12, r3
- adds r4, r2, 0
- movs r2, 0
- movs r3, 0x1
-_0806FB00:
- adds r2, 0x64
- adds r7, 0x1
- cmp r7, 0x3
- bgt _0806FB1A
- mov r1, r12
- ldr r0, [r1]
- adds r0, r2, r0
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0806FB00
-_0806FB1A:
- cmp r7, 0x4
- bne _0806FB38
- ldr r0, _0806FB34
- ldr r1, [r0]
- mov r0, r8
- bl SendMessage
-_0806FB28:
- movs r0, 0
- b _0806FCF0
- .align 2, 0
-_0806FB2C: .4byte gRecruitedPokemonRef
-_0806FB30: .4byte 0x00008df8
-_0806FB34: .4byte gUnknown_80FA030
-_0806FB38:
- mov r0, r9
- bl GetFriendAreaStatus
- lsls r0, 24
- cmp r0, 0
- bne _0806FB4E
- mov r0, r9
- bl UnlockFriendArea
- movs r2, 0x1
- mov r10, r2
-_0806FB4E:
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r5, 0
- mov r2, r8
- bl sub_8068FE0
- ldr r1, _0806FC40
- movs r0, 0x64
- muls r0, r7
- ldr r3, _0806FC44
- adds r0, r3
- ldr r1, [r1]
- adds r5, r1, r0
- movs r4, 0
- movs r0, 0x3
- strh r0, [r5]
- strb r4, [r5, 0x2]
- ldrh r0, [r6, 0xE]
- strb r0, [r5, 0x3]
- movs r0, 0x1
- strh r0, [r5, 0x8]
- adds r0, r5, 0
- adds r0, 0x4C
- movs r1, 0
- bl SetDefaultIQSkills
- ldr r0, [r6, 0x44]
- str r0, [r5, 0x54]
- adds r0, r5, 0
- adds r0, 0x50
- strb r4, [r0]
- ldr r0, _0806FC48
- strh r0, [r5, 0xA]
- strh r7, [r5, 0xC]
- ldrh r0, [r6]
- strh r0, [r5, 0xE]
- ldr r0, _0806FC4C
- ldr r0, [r0]
- ldr r4, _0806FC50
- adds r0, r4
- ldr r0, [r0]
- str r0, [r5, 0x4]
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x10]
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x12]
- ldr r0, [r6, 0x14]
- str r0, [r5, 0x44]
- ldr r0, [r6, 0x18]
- str r0, [r5, 0x48]
- movs r2, 0
- adds r7, r6, 0
- adds r7, 0x20
- adds r4, r6, 0
- adds r4, 0xA
- adds r3, r6, 0
- adds r3, 0xC
- adds r1, r5, 0
- adds r1, 0x14
-_0806FBC4:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x1
- ble _0806FBC4
- ldr r0, [r6, 0x10]
- str r0, [r5, 0x18]
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r7, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r0, [r6, 0x1C]
- str r0, [r5, 0x40]
- adds r4, r5, 0
- adds r4, 0x58
- movs r1, 0
- ldrsh r0, [r6, r1]
- bl GetMonSpecies
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0xA
- bl BoundedCopyStringtoBuffer
- bl sub_8097848
- movs r2, 0
- ldrsh r0, [r6, r2]
- movs r3, 0x4
- ldrsh r1, [r6, r3]
- movs r3, 0x6
- ldrsh r2, [r6, r3]
- add r3, sp, 0xC
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- movs r3, 0x1
- str r3, [sp, 0x8]
- adds r3, r5, 0
- bl sub_806B8CC
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- bne _0806FC58
- ldr r0, _0806FC54
- ldr r1, [r0]
- mov r0, r8
- bl SendMessage
- strh r7, [r5]
- b _0806FCEE
- .align 2, 0
-_0806FC40: .4byte gRecruitedPokemonRef
-_0806FC44: .4byte 0x00008df8
-_0806FC48: .4byte 0x0000ffff
-_0806FC4C: .4byte gDungeonGlobalData
-_0806FC50: .4byte 0x00000644
-_0806FC54: .4byte gUnknown_80FA058
-_0806FC58:
- bl sub_8083D88
- movs r0, 0xA0
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _0806FC78
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl sub_8052B8C
- cmp r0, 0x1
- bne _0806FC94
- b _0806FC88
- .align 2, 0
-_0806FC78: .4byte gUnknown_80FA090
-_0806FC7C:
- ldr r0, _0806FD00
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl PrintFieldMessage
-_0806FC88:
- adds r0, r4, 0
- bl sub_805FBE8
- lsls r0, 24
- cmp r0, 0
- beq _0806FC7C
-_0806FC94:
- ldr r4, _0806FD04
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl sub_808D9DC
- ldr r0, _0806FD08
- ldr r1, [r0]
- mov r0, r8
- bl SendMessage
- mov r0, r10
- cmp r0, 0
- beq _0806FCD8
- bl sub_8085480
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0806FD0C
- mov r1, r9
- bl sub_8092558
- movs r0, 0xCE
- bl PlaySound
- ldr r0, _0806FD10
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl PrintFieldMessage
-_0806FCD8:
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x97
- bne _0806FCEE
- ldr r2, _0806FD14
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r1, [r2]
- movs r0, 0x3
- strb r0, [r1, 0x11]
-_0806FCEE:
- movs r0, 0x1
-_0806FCF0:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806FD00: .4byte gUnknown_80FA0C8
-_0806FD04: .4byte gAvailablePokemonNames
-_0806FD08: .4byte gUnknown_80FA0F0
-_0806FD0C: .4byte gUnknown_202E628
-_0806FD10: .4byte gUnknown_80FA120
-_0806FD14: .4byte gDungeonGlobalData
- thumb_func_end sub_806FA5C
-
- thumb_func_start sub_806FD18
-sub_806FD18:
- push {r4-r7,lr}
- ldr r4, [r0, 0x70]
- movs r6, 0x1
- negs r6, r6
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- bl GetPokemonSize
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- bl sub_806F9BC
- lsls r0, 24
- cmp r0, 0
- beq _0806FDEC
- bl sub_806F910
- movs r4, 0
- movs r0, 0x6
- subs r3, r0, r5
- ldr r7, _0806FD48
- b _0806FD4E
- .align 2, 0
-_0806FD48: .4byte gUnknown_202EE70
-_0806FD4C:
- adds r4, 0x1
-_0806FD4E:
- cmp r4, r3
- bgt _0806FD70
- movs r2, 0
- cmp r2, r5
- bge _0806FD6A
- adds r1, r4, r7
- b _0806FD64
-_0806FD5C:
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, r5
- bge _0806FD6A
-_0806FD64:
- ldrb r0, [r1]
- cmp r0, 0
- beq _0806FD5C
-_0806FD6A:
- cmp r2, r5
- bne _0806FD4C
- adds r6, r4, 0
-_0806FD70:
- movs r0, 0x1
- negs r0, r0
- cmp r6, r0
- beq _0806FDEC
- movs r4, 0
- ldr r3, _0806FDB4
- ldr r0, [r3]
- ldr r2, _0806FDB8
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806FDAC
- adds r6, r3, 0
- adds r5, r2, 0
- movs r2, 0
- movs r3, 0x1
-_0806FD94:
- adds r2, 0x64
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0806FDAC
- ldr r0, [r6]
- adds r0, r2, r0
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0806FD94
-_0806FDAC:
- cmp r4, 0x4
- beq _0806FDEC
- movs r4, 0
- b _0806FDBE
- .align 2, 0
-_0806FDB4: .4byte gRecruitedPokemonRef
-_0806FDB8: .4byte 0x00008df8
-_0806FDBC:
- adds r4, 0x1
-_0806FDBE:
- cmp r4, 0x3
- bgt _0806FDDA
- ldr r0, _0806FDE4
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _0806FDE8
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0806FDBC
-_0806FDDA:
- cmp r4, 0x4
- beq _0806FDEC
- movs r0, 0x1
- b _0806FDEE
- .align 2, 0
-_0806FDE4: .4byte gDungeonGlobalData
-_0806FDE8: .4byte 0x0001357c
-_0806FDEC:
- movs r0, 0
-_0806FDEE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806FD18
-
- thumb_func_start sub_806FDF4
-sub_806FDF4:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x60
- str r0, [sp, 0x58]
- mov r10, r1
- str r2, [sp, 0x5C]
- movs r0, 0
- mov r9, r0
- str r0, [r2]
- add r0, sp, 0xC
- bl sub_8069D4C
- movs r6, 0
- ldr r3, _0806FE50
- ldr r0, [r3]
- ldr r2, _0806FE54
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806FE46
- adds r5, r3, 0
- adds r4, r2, 0
- movs r2, 0
- movs r3, 0x1
-_0806FE2E:
- adds r2, 0x64
- adds r6, 0x1
- cmp r6, 0x3
- bgt _0806FE46
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0806FE2E
-_0806FE46:
- cmp r6, 0x4
- bne _0806FE58
- movs r0, 0
- b _0806FFF8
- .align 2, 0
-_0806FE50: .4byte gRecruitedPokemonRef
-_0806FE54: .4byte 0x00008df8
-_0806FE58:
- add r0, sp, 0xC
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl GetFriendArea
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _0806FF74
- movs r0, 0x64
- muls r0, r6
- ldr r2, _0806FF78
- adds r0, r2
- ldr r1, [r1]
- adds r5, r1, r0
- movs r4, 0
- movs r0, 0x3
- strh r0, [r5]
- strb r4, [r5, 0x2]
- add r0, sp, 0xC
- ldrh r0, [r0, 0xE]
- strb r0, [r5, 0x3]
- movs r0, 0x1
- strh r0, [r5, 0x8]
- adds r0, r5, 0
- adds r0, 0x4C
- movs r1, 0
- bl SetDefaultIQSkills
- ldr r0, [sp, 0x50]
- str r0, [r5, 0x54]
- adds r0, r5, 0
- adds r0, 0x50
- strb r4, [r0]
- ldr r0, _0806FF7C
- strh r0, [r5, 0xA]
- strh r6, [r5, 0xC]
- add r0, sp, 0xC
- ldrh r0, [r0]
- strh r0, [r5, 0xE]
- ldr r0, _0806FF80
- ldr r0, [r0]
- ldr r3, _0806FF84
- adds r0, r3
- ldr r0, [r0]
- str r0, [r5, 0x4]
- add r0, sp, 0xC
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x10]
- add r0, sp, 0xC
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x12]
- ldr r0, [sp, 0x20]
- str r0, [r5, 0x44]
- ldr r0, [sp, 0x24]
- str r0, [r5, 0x48]
- movs r2, 0
- add r6, sp, 0x2C
- add r4, sp, 0x54
- mov r8, r4
- mov r4, sp
- adds r4, 0x16
- add r3, sp, 0x18
- adds r1, r5, 0
- adds r1, 0x14
-_0806FED8:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x1
- ble _0806FED8
- ldr r0, [sp, 0x1C]
- str r0, [r5, 0x18]
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r6, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r0, [sp, 0x28]
- str r0, [r5, 0x40]
- adds r4, r5, 0
- adds r4, 0x58
- add r0, sp, 0xC
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl GetMonSpecies
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0xA
- bl BoundedCopyStringtoBuffer
- adds r0, r7, 0
- bl GetFriendAreaStatus
- lsls r0, 24
- cmp r0, 0
- bne _0806FF34
- adds r0, r7, 0
- bl UnlockFriendArea
- movs r2, 0x1
- mov r9, r2
-_0806FF34:
- bl sub_8097848
- movs r1, 0xFA
- lsls r1, 1
- mov r0, r10
- ldr r2, [sp, 0x58]
- bl sub_8068FE0
- add r0, sp, 0xC
- movs r3, 0
- ldrsh r0, [r0, r3]
- add r1, sp, 0xC
- movs r2, 0x4
- ldrsh r1, [r1, r2]
- add r2, sp, 0xC
- movs r3, 0x6
- ldrsh r2, [r2, r3]
- mov r3, r8
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r3, r5, 0
- bl sub_806B8CC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0806FF88
- strh r0, [r5]
- b _0806FFF6
- .align 2, 0
-_0806FF74: .4byte gRecruitedPokemonRef
-_0806FF78: .4byte 0x00008df8
-_0806FF7C: .4byte 0x0000ffff
-_0806FF80: .4byte gDungeonGlobalData
-_0806FF84: .4byte 0x00000644
-_0806FF88:
- ldr r0, _0806FF9C
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl sub_8052B8C
- cmp r0, 0x1
- bne _0806FFB8
- b _0806FFAC
- .align 2, 0
-_0806FF9C: .4byte gUnknown_80FA090
-_0806FFA0:
- ldr r0, _08070008
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl PrintFieldMessage
-_0806FFAC:
- adds r0, r4, 0
- bl sub_805FBE8
- lsls r0, 24
- cmp r0, 0
- beq _0806FFA0
-_0806FFB8:
- mov r4, r9
- cmp r4, 0
- beq _0806FFE6
- bl sub_8085480
- adds r1, r0, 0
- ldr r0, _0807000C
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08070010
- adds r1, r7, 0
- bl sub_8092558
- movs r0, 0xCE
- bl PlaySound
- ldr r0, _08070014
- ldr r1, [r0]
- movs r0, 0
- movs r2, 0x1
- bl PrintFieldMessage
-_0806FFE6:
- ldr r0, _08070018
- adds r1, r5, 0
- movs r2, 0
- bl sub_808D9DC
- ldr r0, [sp, 0x54]
- ldr r1, [sp, 0x5C]
- str r0, [r1]
-_0806FFF6:
- movs r0, 0x1
-_0806FFF8:
- add sp, 0x60
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08070008: .4byte gUnknown_80FA0C8
-_0807000C: .4byte gAvailablePokemonNames
-_08070010: .4byte gUnknown_202E628
-_08070014: .4byte gUnknown_80FA120
-_08070018: .4byte gUnknown_202E088
- thumb_func_end sub_806FDF4
-
-
.align 2,0
diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s
new file mode 100644
index 0000000..50f101b
--- /dev/null
+++ b/asm/code_806CD90.s
@@ -0,0 +1,6234 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_806CEBC
+sub_806CEBC:
+ push {lr}
+ ldr r0, [r0, 0x70]
+ adds r1, r0, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806CED2
+ cmp r0, 0x5
+ beq _0806CED2
+ cmp r0, 0x3
+ bne _0806CEE8
+_0806CED2:
+ movs r2, 0x4
+ ldrsh r0, [r1, r2]
+ cmp r0, 0xB9
+ bne _0806CEE4
+ adds r0, r1, 0
+ adds r0, 0xA9
+ ldrb r0, [r0]
+ cmp r0, 0x7F
+ beq _0806CEF2
+_0806CEE4:
+ movs r0, 0x5
+ b _0806CEF8
+_0806CEE8:
+ adds r0, r1, 0
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806CEF6
+_0806CEF2:
+ movs r0, 0x7
+ b _0806CEF8
+_0806CEF6:
+ movs r0, 0xB
+_0806CEF8:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806CEBC
+
+ thumb_func_start sub_806CEFC
+sub_806CEFC:
+ push {r4,lr}
+ adds r4, r1, 0
+ ldr r2, [r0, 0x70]
+ movs r3, 0x7
+ ands r1, r3
+ adds r2, 0x46
+ strb r1, [r2]
+ movs r1, 0x7
+ ands r1, r4
+ bl sub_806CE68
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806CEFC
+
+ thumb_func_start sub_806CF18
+sub_806CF18:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806CF4C
+ ldr r6, [r4, 0x70]
+ movs r5, 0
+ b _0806CF2E
+_0806CF2C:
+ adds r5, 0x1
+_0806CF2E:
+ cmp r5, 0x63
+ bgt _0806CF4C
+ movs r0, 0x21
+ bl sub_803E46C
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ adds r1, r4, 0
+ adds r1, 0x6B
+ ldrb r1, [r1]
+ bl sub_808DA44
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806CF2C
+_0806CF4C:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806CF18
+
+ thumb_func_start sub_806CF54
+sub_806CF54:
+ ldr r0, [r0, 0x70]
+ movs r1, 0x81
+ lsls r1, 2
+ adds r0, r1
+ ldrb r0, [r0]
+ bx lr
+ thumb_func_end sub_806CF54
+
+ thumb_func_start sub_806CF60
+sub_806CF60:
+ push {r4,r5,lr}
+ movs r5, 0
+_0806CF64:
+ ldr r0, _0806CF90
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _0806CF94
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806CF84
+ adds r0, r4, 0
+ bl sub_806CF98
+_0806CF84:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0806CF64
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806CF90: .4byte gDungeonGlobalData
+_0806CF94: .4byte 0x000135cc
+ thumb_func_end sub_806CF60
+
+ thumb_func_start sub_806CF98
+sub_806CF98:
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ bl sub_8045128
+ ldrh r0, [r0]
+ movs r5, 0x3
+ ands r5, r0
+ adds r6, r5, 0
+ ldr r7, [r4, 0x70]
+ movs r1, 0x4
+ ldrsh r0, [r7, r1]
+ bl GetShadowSize
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r5, 0x3
+ bne _0806CFBE
+ movs r0, 0x6
+ b _0806CFF8
+_0806CFBE:
+ cmp r5, 0x1
+ bne _0806CFCE
+ bl IsWaterTileset
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806CFEE
+ b _0806CFE8
+_0806CFCE:
+ cmp r6, 0x2
+ bne _0806CFEE
+ ldr r1, _0806D000
+ ldr r0, _0806D004
+ ldr r0, [r0]
+ ldr r2, _0806D008
+ adds r0, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806CFEE
+_0806CFE8:
+ ldr r0, _0806D00C
+ adds r0, r4, r0
+ ldrb r4, [r0]
+_0806CFEE:
+ movs r1, 0x81
+ lsls r1, 2
+ adds r0, r7, r1
+ strb r4, [r0]
+ adds r0, r4, 0
+_0806CFF8:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806D000: .4byte gDungeonWaterType
+_0806D004: .4byte gDungeonGlobalData
+_0806D008: .4byte 0x00003a0e
+_0806D00C: .4byte gUnknown_8106EEF
+ thumb_func_end sub_806CF98
+
+ thumb_func_start sub_806D010
+sub_806D010:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ adds r6, r0, 0
+ adds r5, r1, 0
+ mov r8, r2
+ ldr r0, [sp, 0x40]
+ lsls r0, 16
+ asrs r0, 16
+ mov r10, r0
+ movs r7, 0
+ ldr r0, [sp, 0x3C]
+ str r0, [sp]
+ mov r1, r10
+ str r1, [sp, 0x4]
+ ldr r2, [sp, 0x48]
+ str r2, [sp, 0x8]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ mov r2, r8
+ bl sub_806D528
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D04A
+ b _0806D514
+_0806D04A:
+ mov r3, r8
+ ldrb r0, [r3, 0xF]
+ cmp r0, 0
+ beq _0806D054
+ b _0806D514
+_0806D054:
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D062
+ b _0806D514
+_0806D062:
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D070
+ b _0806D514
+_0806D070:
+ adds r0, r6, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ beq _0806D07C
+ b _0806D514
+_0806D07C:
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ beq _0806D088
+ b _0806D514
+_0806D088:
+ ldr r0, [sp, 0x44]
+ mov r9, r0
+ adds r0, r5, 0
+ bl CannotAct
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D0A2
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806D0A6
+_0806D0A2:
+ movs r1, 0
+ mov r9, r1
+_0806D0A6:
+ mov r2, r9
+ cmp r2, 0
+ beq _0806D100
+ movs r3, 0x4
+ ldrsh r1, [r6, r3]
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D0BC
+ negs r1, r1
+_0806D0BC:
+ cmp r1, 0x1
+ bgt _0806D100
+ movs r3, 0x6
+ ldrsh r1, [r6, r3]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D0D0
+ negs r1, r1
+_0806D0D0:
+ cmp r1, 0x1
+ bgt _0806D100
+ cmp r6, r5
+ beq _0806D100
+ mov r3, r8
+ ldrb r0, [r3, 0xC]
+ bl sub_8092354
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D100
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0xD
+ bne _0806D100
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_8042730
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_807F43C
+_0806D100:
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bne _0806D118
+ ldr r0, _0806D3BC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ movs r3, 0x1
+ bl sub_8077084
+_0806D118:
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D126
+ b _0806D514
+_0806D126:
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D134
+ b _0806D514
+_0806D134:
+ mov r0, r9
+ cmp r0, 0
+ beq _0806D216
+ cmp r6, r5
+ beq _0806D216
+ movs r2, 0x4
+ ldrsh r1, [r6, r2]
+ movs r3, 0x4
+ ldrsh r0, [r5, r3]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D14E
+ negs r1, r1
+_0806D14E:
+ cmp r1, 0x1
+ bgt _0806D216
+ movs r0, 0x6
+ ldrsh r1, [r6, r0]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D162
+ negs r1, r1
+_0806D162:
+ cmp r1, 0x1
+ bgt _0806D216
+ mov r3, r8
+ ldrb r0, [r3, 0xC]
+ bl sub_8092354
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bne _0806D188
+ cmp r4, 0
+ beq _0806D188
+ adds r0, r5, 0
+ bl sub_8041B18
+ adds r7, 0x4
+_0806D188:
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0xA
+ bne _0806D19E
+ cmp r4, 0
+ beq _0806D19E
+ adds r0, r5, 0
+ bl sub_8041B18
+ adds r7, 0x1
+_0806D19E:
+ ldr r0, [r5, 0x70]
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _0806D1B4
+ cmp r4, 0
+ bne _0806D1B4
+ adds r0, r5, 0
+ bl sub_8041B90
+ adds r7, 0x4
+_0806D1B4:
+ adds r0, r5, 0
+ movs r1, 0x12
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D1C4
+ adds r7, 0x2
+_0806D1C4:
+ cmp r7, 0
+ beq _0806D216
+ ldr r0, _0806D3C0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ mov r1, r8
+ ldr r0, [r1]
+ muls r0, r7
+ cmp r0, 0
+ bge _0806D1E0
+ adds r0, 0x3
+_0806D1E0:
+ asrs r0, 2
+ str r0, [sp, 0xC]
+ add r2, sp, 0xC
+ mov r3, r8
+ ldrb r0, [r3, 0xC]
+ movs r1, 0
+ strb r0, [r2, 0xC]
+ movs r0, 0x6
+ str r0, [sp, 0x10]
+ movs r0, 0x2
+ str r0, [sp, 0x14]
+ adds r0, r2, 0
+ strb r1, [r0, 0xD]
+ strb r1, [r0, 0xE]
+ strb r1, [r0, 0xF]
+ ldr r0, [sp, 0x3C]
+ str r0, [sp]
+ mov r1, r10
+ str r1, [sp, 0x4]
+ ldr r2, [sp, 0x48]
+ str r2, [sp, 0x8]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ add r2, sp, 0xC
+ movs r3, 0
+ bl sub_806D528
+_0806D216:
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D224
+ b _0806D514
+_0806D224:
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D232
+ b _0806D514
+_0806D232:
+ mov r3, r9
+ cmp r3, 0
+ bne _0806D23A
+ b _0806D48A
+_0806D23A:
+ cmp r6, r5
+ bne _0806D240
+ b _0806D48A
+_0806D240:
+ movs r0, 0x4
+ ldrsh r1, [r6, r0]
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D250
+ negs r1, r1
+_0806D250:
+ cmp r1, 0x1
+ ble _0806D256
+ b _0806D48A
+_0806D256:
+ movs r3, 0x6
+ ldrsh r1, [r6, r3]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806D266
+ negs r1, r1
+_0806D266:
+ cmp r1, 0x1
+ ble _0806D26C
+ b _0806D48A
+_0806D26C:
+ mov r3, r8
+ ldrb r0, [r3, 0xC]
+ bl sub_8092354
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r4, [r6, 0x70]
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D2C2
+ adds r0, r6, 0
+ movs r1, 0xA
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D2C2
+ adds r0, r6, 0
+ movs r1, 0x37
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D2C2
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3C4
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D2C2
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x1
+ orrs r0, r1
+ strh r0, [r2]
+_0806D2C2:
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D2EE
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3C8
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D2EE
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x2
+ orrs r0, r1
+ strh r0, [r2]
+_0806D2EE:
+ adds r0, r5, 0
+ movs r1, 0x17
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D328
+ adds r0, r6, 0
+ movs r1, 0x11
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D328
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3CC
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D328
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x4
+ orrs r0, r1
+ strh r0, [r2]
+_0806D328:
+ adds r0, r5, 0
+ movs r1, 0x20
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D358
+ cmp r7, 0
+ beq _0806D358
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3D0
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D358
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x8
+ orrs r0, r1
+ strh r0, [r2]
+_0806D358:
+ adds r0, r5, 0
+ movs r1, 0x27
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D384
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3D4
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D384
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x20
+ orrs r0, r1
+ strh r0, [r2]
+_0806D384:
+ adds r0, r5, 0
+ movs r1, 0x3D
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D3FA
+ cmp r7, 0
+ beq _0806D3FA
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D3D8
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D3FA
+ movs r0, 0x3
+ bl DungeonRandomCapped
+ cmp r0, 0
+ bgt _0806D3DC
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r0, 0x40
+ b _0806D3F6
+ .align 2, 0
+_0806D3BC: .4byte gUnknown_8106A4C
+_0806D3C0: .4byte gUnknown_80FCFA4
+_0806D3C4: .4byte gUnknown_80F4E10
+_0806D3C8: .4byte gUnknown_80F4E12
+_0806D3CC: .4byte gUnknown_80F4E14
+_0806D3D0: .4byte gUnknown_80F4E16
+_0806D3D4: .4byte gUnknown_80F4E18
+_0806D3D8: .4byte gUnknown_80F4E1A
+_0806D3DC:
+ cmp r0, 0x1
+ bgt _0806D3EC
+ movs r0, 0xBC
+ lsls r0, 1
+ adds r2, r4, r0
+ ldrh r1, [r2]
+ movs r0, 0x10
+ b _0806D3F6
+_0806D3EC:
+ movs r1, 0xBC
+ lsls r1, 1
+ adds r2, r4, r1
+ ldrh r1, [r2]
+ movs r0, 0x80
+_0806D3F6:
+ orrs r0, r1
+ strh r0, [r2]
+_0806D3FA:
+ adds r0, r5, 0
+ movs r1, 0x3E
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D428
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D4D4
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D428
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ subs r3, 0x78
+ adds r0, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+_0806D428:
+ adds r0, r5, 0
+ movs r1, 0x44
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D45A
+ cmp r7, 0
+ beq _0806D45A
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D4D8
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D45A
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ adds r3, 0x88
+ adds r0, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+_0806D45A:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D48A
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ ldr r1, _0806D4DC
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bge _0806D48A
+ movs r3, 0xBC
+ lsls r3, 1
+ adds r2, r4, r3
+ ldrh r1, [r2]
+ movs r3, 0x80
+ lsls r3, 3
+ adds r0, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+_0806D48A:
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D514
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D514
+ mov r0, r9
+ cmp r0, 0
+ beq _0806D514
+ ldr r2, [r5, 0x70]
+ adds r6, r2, 0
+ adds r3, r2, 0
+ adds r3, 0xD0
+ ldrb r0, [r3]
+ cmp r0, 0x2
+ bne _0806D514
+ ldr r0, _0806D4E0
+ ldr r1, [r0]
+ adds r0, r2, 0
+ adds r0, 0xD8
+ ldrb r0, [r0]
+ lsls r0, 2
+ ldr r2, _0806D4E4
+ adds r1, r2
+ adds r1, r0
+ ldr r4, [r1]
+ cmp r4, 0
+ bne _0806D4E8
+ strb r4, [r3]
+ b _0806D514
+ .align 2, 0
+_0806D4D4: .4byte gUnknown_80F4E1C
+_0806D4D8: .4byte gUnknown_80F4E1E
+_0806D4DC: .4byte gUnknown_80F4E20
+_0806D4E0: .4byte gDungeonGlobalData
+_0806D4E4: .4byte 0x000135cc
+_0806D4E8:
+ ldr r0, [r4, 0x70]
+ adds r0, 0x98
+ adds r1, r6, 0
+ adds r1, 0xD4
+ ldr r2, [r0]
+ ldr r0, [r1]
+ cmp r2, r0
+ beq _0806D4FE
+ movs r0, 0
+ strb r0, [r3]
+ b _0806D514
+_0806D4FE:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8041D00
+ mov r3, r8
+ ldr r1, [r3]
+ ldr r3, _0806D524
+ adds r0, r4, 0
+ movs r2, 0xC
+ bl sub_806F324
+_0806D514:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806D524: .4byte 0x000001f9
+ thumb_func_end sub_806D010
+
+ thumb_func_start sub_806D528
+sub_806D528:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x58
+ mov r9, r0
+ adds r7, r1, 0
+ adds r5, r2, 0
+ str r3, [sp, 0x4C]
+ ldr r0, [sp, 0x7C]
+ lsls r0, 16
+ asrs r0, 16
+ str r0, [sp, 0x50]
+ movs r0, 0
+ str r0, [sp, 0x54]
+ mov r10, r0
+ mov r8, r0
+ mov r1, r10
+ strb r1, [r5, 0xF]
+ adds r0, r7, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ beq _0806D55C
+ b _0806D754
+_0806D55C:
+ ldr r6, [r7, 0x70]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_807A96C
+ mov r0, r9
+ adds r1, r7, 0
+ bl SetShopkeeperAggression
+ mov r0, r9
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806D592
+ mov r2, r9
+ ldr r0, [r2, 0x70]
+ adds r0, 0xDC
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806D592
+ ldrb r0, [r5, 0xE]
+ cmp r0, 0
+ bne _0806D592
+ ldr r0, _0806D5C8
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ str r0, [r5]
+_0806D592:
+ ldr r0, _0806D5CC
+ ldr r1, [sp, 0x50]
+ cmp r1, r0
+ beq _0806D5DC
+ adds r0, r7, 0
+ movs r1, 0xD
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D5DC
+ ldr r1, [r5]
+ ldr r0, _0806D5D0
+ cmp r1, r0
+ bne _0806D5DC
+ ldr r0, _0806D5D4
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806D5D8
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0806D71E
+ .align 2, 0
+_0806D5C8: .4byte gUnknown_80F4F8C
+_0806D5CC: .4byte 0x0000020e
+_0806D5D0: .4byte 0x0000270f
+_0806D5D4: .4byte gUnknown_202DFE8
+_0806D5D8: .4byte gUnknown_80FCA90
+_0806D5DC:
+ adds r0, r6, 0
+ adds r0, 0xB0
+ ldrb r4, [r0]
+ mov r10, r0
+ cmp r4, 0x1
+ bne _0806D618
+ ldr r0, _0806D610
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806D614
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_8042238
+ strb r4, [r5, 0xF]
+_0806D608:
+ movs r0, 0
+ bl _0806E0F0
+ .align 2, 0
+_0806D610: .4byte gUnknown_202DFE8
+_0806D614: .4byte gUnknown_80F9600
+_0806D618:
+ adds r0, r6, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806D62A
+ cmp r0, 0x5
+ beq _0806D62A
+ cmp r0, 0x3
+ bne _0806D63A
+_0806D62A:
+ adds r0, r6, 0
+ adds r0, 0xA9
+ ldrb r0, [r0]
+ cmp r0, 0x7F
+ bne _0806D63A
+ adds r0, r7, 0
+ bl sub_807A9B0
+_0806D63A:
+ adds r0, r7, 0
+ movs r1, 0x23
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D660
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x5
+ bne _0806D660
+_0806D64E:
+ ldr r2, [r5]
+ movs r0, 0
+ str r0, [sp]
+ mov r0, r9
+ adds r1, r7, 0
+ movs r3, 0
+ bl HealTargetHP
+ b _0806D754
+_0806D660:
+ adds r0, r7, 0
+ movs r1, 0x24
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D674
+ ldrb r0, [r5, 0xC]
+ cmp r0, 0x3
+ beq _0806D64E
+_0806D674:
+ movs r2, 0xA9
+ lsls r2, 1
+ adds r0, r6, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D6D0
+ ldrb r0, [r5, 0xD]
+ cmp r0, 0
+ beq _0806D692
+ ldr r0, _0806D6A4
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D692:
+ ldr r0, [r5, 0x8]
+ cmp r0, 0x1
+ beq _0806D6B0
+ cmp r0, 0x1
+ bcc _0806D6A8
+ cmp r0, 0x3
+ beq _0806D6C4
+ b _0806D6D0
+ .align 2, 0
+_0806D6A4: .4byte gUnknown_80F9614
+_0806D6A8:
+ ldr r0, _0806D6AC
+ b _0806D6B2
+ .align 2, 0
+_0806D6AC: .4byte gUnknown_80F9630
+_0806D6B0:
+ ldr r0, _0806D6C0
+_0806D6B2:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0806D6D0
+ .align 2, 0
+_0806D6C0: .4byte gUnknown_80F9654
+_0806D6C4:
+ ldr r0, _0806D728
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D6D0:
+ ldr r4, _0806D72C
+ adds r0, r4, 0
+ mov r1, r9
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0x50
+ adds r0, r4, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r1, [r5]
+ cmp r1, 0
+ bne _0806D760
+ mov r0, r9
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D734
+ adds r0, r7, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D734
+ movs r3, 0xA9
+ lsls r3, 1
+ adds r0, r6, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D71E
+ ldr r0, _0806D730
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D71E:
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_8042238
+ b _0806D754
+ .align 2, 0
+_0806D728: .4byte gUnknown_80F9670
+_0806D72C: .4byte gAvailablePokemonNames
+_0806D730: .4byte gUnknown_80F9688
+_0806D734:
+ movs r1, 0xA9
+ lsls r1, 1
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D74C
+ ldr r0, _0806D75C
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D74C:
+ movs r0, 0x1E
+ movs r1, 0x18
+ bl sub_803E708
+_0806D754:
+ movs r0, 0x1
+ strb r0, [r5, 0xF]
+ b _0806D608
+ .align 2, 0
+_0806D75C: .4byte gUnknown_80F9688
+_0806D760:
+ ldr r0, _0806D7B8
+ cmp r1, r0
+ bne _0806D7C4
+ ldr r0, [sp, 0x80]
+ cmp r0, 0
+ beq _0806D796
+ adds r0, r7, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D796
+ adds r0, r7, 0
+ bl sub_8045128
+ mov r8, r0
+ movs r0, 0x14
+ movs r1, 0x18
+ bl sub_803E708
+ mov r2, r8
+ ldrh r1, [r2, 0x4]
+ movs r0, 0x4
+ orrs r0, r1
+ strh r0, [r2, 0x4]
+ bl sub_8049ED4
+_0806D796:
+ movs r3, 0xA9
+ lsls r3, 1
+ adds r0, r6, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D7AE
+ ldr r0, _0806D7BC
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D7AE:
+ adds r1, r6, 0
+ adds r1, 0xA0
+ ldr r0, _0806D7C0
+ str r0, [r1]
+ b _0806D84A
+ .align 2, 0
+_0806D7B8: .4byte 0x0000270f
+_0806D7BC: .4byte gUnknown_80F96A8
+_0806D7C0: .4byte 0x000003e7
+_0806D7C4:
+ ldr r0, _0806D824
+ str r1, [r0]
+ ldr r1, _0806D828
+ ldr r0, [r5, 0x4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r2, r6, 0
+ adds r2, 0xA0
+ ldr r0, [r2]
+ ldr r1, [r5]
+ adds r0, r1
+ str r0, [r2]
+ ldr r1, _0806D82C
+ cmp r0, r1
+ ble _0806D7E6
+ str r1, [r2]
+_0806D7E6:
+ adds r0, r7, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D830
+ ldr r0, [r5, 0x4]
+ cmp r0, 0xE
+ beq _0806D808
+ ldr r0, [r5]
+ negs r0, r0
+ movs r3, 0x1
+ negs r3, r3
+ adds r1, r7, 0
+ movs r2, 0x1
+ bl sub_803ED30
+_0806D808:
+ movs r1, 0xA9
+ lsls r1, 1
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D84A
+ cmp r4, 0
+ beq _0806D84A
+ mov r0, r9
+ adds r1, r7, 0
+ adds r2, r4, 0
+ bl sub_80522F4
+ b _0806D84A
+ .align 2, 0
+_0806D824: .4byte gUnknown_202DE30
+_0806D828: .4byte gUnknown_80F9764
+_0806D82C: .4byte 0x000003e7
+_0806D830:
+ movs r2, 0xA9
+ lsls r2, 1
+ adds r0, r6, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806D84A
+ cmp r4, 0
+ beq _0806D84A
+ mov r0, r9
+ adds r1, r7, 0
+ adds r2, r4, 0
+ bl sub_80522F4
+_0806D84A:
+ ldr r0, [r5, 0x4]
+ cmp r0, 0xE
+ bne _0806D858
+ movs r3, 0xE
+ ldrsh r0, [r6, r3]
+ cmp r0, 0x1
+ bgt _0806D900
+_0806D858:
+ mov r0, r8
+ cmp r0, 0
+ bne _0806D900
+ adds r0, r7, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D900
+ mov r2, r9
+ ldr r1, [r2, 0x4]
+ ldr r0, [r7, 0x4]
+ cmp r1, r0
+ beq _0806D8E6
+ mov r0, r9
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806D8E6
+ movs r4, 0
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ beq _0806D8B4
+ ldr r0, _0806D8B0
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x2]
+ cmp r0, 0
+ beq _0806D8B6
+ adds r0, r7, 0
+ bl sub_806A458
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806D8B6
+ adds r0, r7, 0
+ mov r1, r9
+ bl CanSee
+ lsls r0, 24
+ lsrs r0, 24
+ negs r1, r0
+ orrs r1, r0
+ lsrs r4, r1, 31
+ b _0806D8B6
+ .align 2, 0
+_0806D8B0: .4byte gUnknown_203B46C
+_0806D8B4:
+ movs r4, 0
+_0806D8B6:
+ adds r0, r6, 0
+ adds r0, 0xE8
+ ldrb r0, [r0]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0806D8C8
+ movs r4, 0
+_0806D8C8:
+ cmp r4, 0
+ beq _0806D8E0
+ ldr r4, [r7, 0x70]
+ adds r0, r7, 0x4
+ mov r1, r9
+ adds r1, 0x4
+ bl CalculateFacingDir
+ movs r1, 0x7
+ ands r0, r1
+ adds r4, 0x46
+ strb r0, [r4]
+_0806D8E0:
+ adds r0, r7, 0
+ bl TargetTileInFront
+_0806D8E6:
+ ldr r0, [r7, 0x70]
+ adds r0, 0x46
+ ldrb r2, [r0]
+ adds r0, r7, 0
+ movs r1, 0x6
+ bl sub_806CDD4
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80420E8
+ movs r3, 0x1
+ str r3, [sp, 0x54]
+_0806D900:
+ movs r0, 0xE
+ ldrsh r4, [r6, r0]
+ ldr r1, [r5]
+ cmp r4, r1
+ ble _0806D910
+ ldrh r0, [r6, 0xE]
+ subs r0, r1
+ b _0806D912
+_0806D910:
+ movs r0, 0
+_0806D912:
+ strh r0, [r6, 0xE]
+ adds r0, r6, 0
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bne _0806D93C
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0806D958
+ movs r0, 0x1
+ strh r0, [r6, 0xE]
+ ldr r0, _0806D938
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0806D958
+ .align 2, 0
+_0806D938: .4byte gUnknown_8100548
+_0806D93C:
+ ldr r2, [sp, 0x4C]
+ cmp r2, 0x1
+ bne _0806D958
+ movs r3, 0xE
+ ldrsh r0, [r6, r3]
+ cmp r0, 0
+ bne _0806D958
+ strh r2, [r6, 0xE]
+ ldr r0, _0806D9C8
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+_0806D958:
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ subs r4, r0
+ cmp r4, 0
+ bge _0806D964
+ movs r4, 0
+_0806D964:
+ ldr r2, [sp, 0x54]
+ cmp r2, 0
+ bne _0806D970
+ mov r3, r8
+ cmp r3, 0
+ beq _0806D978
+_0806D970:
+ movs r0, 0xA
+ movs r1, 0x18
+ bl sub_803E708
+_0806D978:
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ beq _0806D9D4
+ ldr r2, [sp, 0x54]
+ cmp r2, 0
+ beq _0806D98E
+ adds r0, r7, 0
+ movs r1, 0x8
+ bl sub_806CE68
+_0806D98E:
+ adds r0, r7, 0
+ movs r1, 0x10
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806D9B2
+ cmp r4, 0
+ ble _0806D9B2
+ ldr r1, [r5]
+ ldr r0, _0806D9CC
+ cmp r1, r0
+ beq _0806D9B2
+ mov r0, r9
+ adds r1, r7, 0
+ adds r2, r4, 0
+ bl sub_8071D4C
+_0806D9B2:
+ mov r3, r8
+ cmp r3, 0
+ bne _0806D9BA
+ b _0806D608
+_0806D9BA:
+ ldrh r1, [r3, 0x4]
+ ldr r0, _0806D9D0
+ ands r0, r1
+ strh r0, [r3, 0x4]
+ bl sub_8049ED4
+ b _0806D608
+ .align 2, 0
+_0806D9C8: .4byte gUnknown_810056C
+_0806D9CC: .4byte 0x0000270f
+_0806D9D0: .4byte 0x0000fffb
+_0806D9D4:
+ adds r0, r6, 0
+ adds r0, 0xE4
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _0806D9E6
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_807A7C8
+_0806D9E6:
+ mov r0, r8
+ cmp r0, 0
+ beq _0806DA18
+ movs r0, 0x14
+ movs r1, 0x18
+ bl sub_803E708
+ adds r1, r7, 0
+ adds r1, 0x22
+ movs r0, 0x2
+ strb r0, [r1]
+ movs r0, 0xA
+ movs r1, 0x18
+ bl sub_803E708
+ mov r2, r8
+ ldrh r1, [r2, 0x4]
+ ldr r0, _0806DA14
+ ands r0, r1
+ strh r0, [r2, 0x4]
+ bl sub_8049ED4
+ b _0806DA2E
+ .align 2, 0
+_0806DA14: .4byte 0x0000fffb
+_0806DA18:
+ ldr r3, [sp, 0x54]
+ cmp r3, 0
+ beq _0806DA2E
+ adds r1, r7, 0
+ adds r1, 0x22
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0x1E
+ movs r1, 0x18
+ bl sub_803E708
+_0806DA2E:
+ movs r0, 0x1
+ mov r8, r0
+ mov r0, r9
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806DA50
+ mov r0, r9
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806DA50
+ cmp r9, r7
+ beq _0806DA50
+ movs r1, 0
+ mov r8, r1
+_0806DA50:
+ movs r2, 0xA6
+ lsls r2, 1
+ adds r1, r6, r2
+ movs r0, 0
+ strb r0, [r1]
+ ldr r4, _0806DA88
+ adds r0, r4, 0
+ mov r1, r9
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0x50
+ adds r0, r4, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, [r5, 0x4]
+ subs r0, 0x13
+ cmp r0, 0x1
+ bhi _0806DA9C
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0
+ beq _0806DA90
+ ldr r0, _0806DA8C
+ ldr r2, [r0]
+ b _0806DAC2
+ .align 2, 0
+_0806DA88: .4byte gAvailablePokemonNames
+_0806DA8C: .4byte gUnknown_80F9E44
+_0806DA90:
+ ldr r0, _0806DA98
+ ldr r1, [r0]
+ b _0806DB86
+ .align 2, 0
+_0806DA98: .4byte gUnknown_80F9E44
+_0806DA9C:
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0
+ beq _0806DAD0
+ adds r0, r6, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806DAB8
+ ldr r0, _0806DAB4
+ mov r3, r8
+ lsls r1, r3, 2
+ b _0806DB82
+ .align 2, 0
+_0806DAB4: .4byte gUnknown_80F9DF0
+_0806DAB8:
+ ldr r0, _0806DACC
+ mov r2, r8
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r2, [r1]
+_0806DAC2:
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0806DBA4
+ .align 2, 0
+_0806DACC: .4byte gUnknown_80F9CC0
+_0806DAD0:
+ ldr r2, _0806DB04
+ ldrb r1, [r6, 0xA]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r3, _0806DB08
+ adds r0, r3
+ ldr r1, [r2]
+ adds r3, r1, r0
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ bne _0806DB00
+ adds r0, r6, 0
+ adds r0, 0x40
+ ldrb r1, [r0]
+ adds r2, r0, 0
+ cmp r1, 0x41
+ bne _0806DB18
+ ldr r0, _0806DB0C
+ ldr r0, [r0]
+ ldr r1, _0806DB10
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806DB18
+_0806DB00:
+ ldr r0, _0806DB14
+ b _0806DB7E
+ .align 2, 0
+_0806DB04: .4byte gRecruitedPokemonRef
+_0806DB08: .4byte 0x00008df8
+_0806DB0C: .4byte gDungeonGlobalData
+_0806DB10: .4byte 0x0000065c
+_0806DB14: .4byte gUnknown_80F9CEC
+_0806DB18:
+ ldrb r0, [r2]
+ cmp r0, 0x4A
+ beq _0806DB22
+ cmp r0, 0x47
+ bne _0806DB26
+_0806DB22:
+ movs r0, 0x1
+ b _0806DB28
+_0806DB26:
+ movs r0, 0
+_0806DB28:
+ cmp r0, 0
+ beq _0806DB38
+ ldr r0, _0806DB34
+ mov r3, r8
+ lsls r1, r3, 2
+ b _0806DB82
+ .align 2, 0
+_0806DB34: .4byte gUnknown_80F9DAC
+_0806DB38:
+ adds r0, r6, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806DB4C
+ ldr r0, _0806DB48
+ b _0806DB7E
+ .align 2, 0
+_0806DB48: .4byte gUnknown_80F9DF0
+_0806DB4C:
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ bl sub_806A58C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806DB94
+ ldr r0, _0806DB70
+ ldr r0, [r0]
+ ldr r2, _0806DB74
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806DB7C
+ ldr r0, _0806DB78
+ mov r3, r8
+ lsls r1, r3, 2
+ b _0806DB82
+ .align 2, 0
+_0806DB70: .4byte gDungeonGlobalData
+_0806DB74: .4byte 0x0000065d
+_0806DB78: .4byte gUnknown_80F9D8C
+_0806DB7C:
+ ldr r0, _0806DB90
+_0806DB7E:
+ mov r2, r8
+ lsls r1, r2, 2
+_0806DB82:
+ adds r1, r0
+ ldr r1, [r1]
+_0806DB86:
+ mov r0, r9
+ bl sub_805239C
+ b _0806DBA4
+ .align 2, 0
+_0806DB90: .4byte gUnknown_80F9D84
+_0806DB94:
+ ldr r0, _0806DC4C
+ mov r3, r8
+ lsls r1, r3, 2
+ adds r1, r0
+ ldr r1, [r1]
+ mov r0, r9
+ bl sub_805239C
+_0806DBA4:
+ mov r1, r10
+ ldrb r0, [r1]
+ subs r0, 0x3
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0806DBBC
+ adds r0, r6, 0
+ adds r0, 0x9C
+ ldr r0, [r0]
+ bl sub_8076CB4
+_0806DBBC:
+ adds r1, r6, 0
+ adds r1, 0x60
+ ldrb r3, [r1]
+ movs r2, 0x1
+ mov r8, r2
+ mov r0, r8
+ ands r0, r3
+ adds r5, r1, 0
+ cmp r0, 0
+ beq _0806DC5C
+ movs r0, 0x8
+ ands r0, r3
+ cmp r0, 0
+ bne _0806DC5C
+ movs r0, 0x2
+ ands r0, r3
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _0806DC5C
+ ldrb r0, [r5, 0x2]
+ cmp r0, 0xD2
+ bne _0806DC5C
+ adds r0, r7, 0
+ bl sub_8042148
+ adds r0, r7, 0
+ adds r0, 0x22
+ strb r4, [r0]
+ ldrh r0, [r6, 0x10]
+ movs r2, 0
+ strh r0, [r6, 0xE]
+ movs r3, 0xAC
+ lsls r3, 1
+ adds r0, r6, r3
+ strb r2, [r0]
+ movs r1, 0xA6
+ lsls r1, 1
+ adds r0, r6, r1
+ mov r3, r8
+ strb r3, [r0]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r6, r0
+ movs r3, 0xA0
+ lsls r3, 1
+ adds r0, r6, r3
+ ldr r0, [r0]
+ str r0, [r1]
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ beq _0806DC36
+ ldr r0, _0806DC50
+ ldr r1, [r0]
+ ldr r3, _0806DC54
+ adds r1, r3
+ strb r2, [r1]
+ ldr r0, [r0]
+ ldr r1, _0806DC58
+ adds r0, r1
+ strb r2, [r0]
+_0806DC36:
+ strb r2, [r5, 0x2]
+ strb r2, [r5, 0x1]
+ strb r2, [r5]
+ adds r0, r6, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806DC48
+ b _0806DEC8
+_0806DC48:
+ b _0806DEE4
+ .align 2, 0
+_0806DC4C: .4byte gUnknown_80F9D28
+_0806DC50: .4byte gDungeonGlobalData
+_0806DC54: .4byte 0x00000679
+_0806DC58: .4byte 0x00000676
+_0806DC5C:
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ bne _0806DC64
+ b _0806DDFC
+_0806DC64:
+ mov r10, r5
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0806DC72
+ b _0806DDFC
+_0806DC72:
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0806DC7C
+ b _0806DDFC
+_0806DC7C:
+ ldrb r0, [r5, 0x2]
+ cmp r0, 0xD8
+ beq _0806DC84
+ b _0806DDFC
+_0806DC84:
+ movs r4, 0
+_0806DC86:
+ ldr r0, _0806DD80
+ ldr r0, [r0]
+ lsls r1, r4, 2
+ ldr r2, _0806DD84
+ adds r0, r2
+ adds r0, r1
+ ldr r0, [r0]
+ mov r8, r0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806DCDE
+ cmp r8, r7
+ beq _0806DCDE
+ adds r0, r7, 0
+ mov r1, r8
+ bl CanSee
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806DCDE
+ mov r3, r8
+ movs r0, 0x4
+ ldrsh r1, [r3, r0]
+ movs r2, 0x4
+ ldrsh r0, [r7, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806DCC4
+ negs r1, r1
+_0806DCC4:
+ cmp r1, 0x1
+ bgt _0806DCDE
+ mov r3, r8
+ movs r0, 0x6
+ ldrsh r1, [r3, r0]
+ movs r2, 0x6
+ ldrsh r0, [r7, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806DCDA
+ negs r1, r1
+_0806DCDA:
+ cmp r1, 0x1
+ ble _0806DCE4
+_0806DCDE:
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0806DC86
+_0806DCE4:
+ cmp r4, 0x4
+ bne _0806DCEA
+ b _0806DDFC
+_0806DCEA:
+ adds r0, r7, 0
+ bl sub_8042148
+ mov r3, r8
+ ldr r4, [r3, 0x4]
+ ldr r1, _0806DD88
+ mov r0, r8
+ adds r2, r7, 0
+ bl sub_8068FE0
+ lsls r1, r4, 16
+ asrs r1, 16
+ asrs r4, 16
+ adds r0, r7, 0
+ adds r2, r4, 0
+ movs r3, 0x1
+ bl sub_80694C0
+ adds r0, r7, 0
+ movs r1, 0
+ bl sub_804535C
+ adds r1, r7, 0
+ adds r1, 0x22
+ movs r0, 0
+ strb r0, [r1]
+ ldrh r0, [r6, 0x10]
+ movs r4, 0
+ strh r0, [r6, 0xE]
+ adds r0, r7, 0
+ bl sub_8042A24
+ movs r1, 0xAC
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r4, [r0]
+ movs r2, 0xA6
+ lsls r2, 1
+ adds r1, r6, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r3, 0x9E
+ lsls r3, 1
+ adds r1, r6, r3
+ subs r2, 0xC
+ adds r0, r6, r2
+ ldr r0, [r0]
+ str r0, [r1]
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ beq _0806DD62
+ ldr r0, _0806DD80
+ ldr r1, [r0]
+ ldr r3, _0806DD8C
+ adds r1, r3
+ strb r4, [r1]
+ ldr r0, [r0]
+ ldr r1, _0806DD90
+ adds r0, r1
+ strb r4, [r0]
+_0806DD62:
+ mov r2, r10
+ strb r4, [r2, 0x2]
+ strb r4, [r2, 0x1]
+ strb r4, [r2]
+ adds r0, r6, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806DD94
+ mov r0, r9
+ adds r1, r7, 0
+ movs r2, 0x3
+ bl sub_807A5D0
+ b _0806DDA2
+ .align 2, 0
+_0806DD80: .4byte gDungeonGlobalData
+_0806DD84: .4byte 0x0001357c
+_0806DD88: .4byte 0x00000221
+_0806DD8C: .4byte 0x00000679
+_0806DD90: .4byte 0x00000676
+_0806DD94:
+ cmp r0, 0x2
+ bne _0806DDA2
+ mov r0, r9
+ adds r1, r7, 0
+ movs r2, 0x2
+ bl sub_807A5D0
+_0806DDA2:
+ adds r0, r7, 0
+ bl sub_8078084
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_806BFC0
+ bl sub_800DBBC
+ adds r0, r7, 0
+ bl sub_806A390
+ adds r0, r7, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r7, 0
+ bl sub_806CCB4
+ adds r0, r7, 0
+ bl sub_80418D4
+ ldr r4, _0806DDF0
+ adds r0, r4, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0x50
+ adds r0, r4, 0
+ mov r1, r8
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806DDF4
+ b _0806DF2E
+ .align 2, 0
+_0806DDF0: .4byte gAvailablePokemonNames
+_0806DDF4: .4byte gUnknown_80FD484
+_0806DDF8:
+ mov r4, r8
+ b _0806DE64
+_0806DDFC:
+ adds r0, r7, 0
+ movs r1, 0x16
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806DE0C
+ b _0806DF48
+_0806DE0C:
+ movs r4, 0
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806DE28
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _0806DE28
+ ldrb r0, [r5, 0x2]
+ cmp r0, 0x3A
+ bne _0806DE28
+ adds r4, r5, 0
+_0806DE28:
+ cmp r4, 0
+ bne _0806DE68
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0
+ bne _0806DE64
+ movs r3, 0
+ ldr r0, _0806DED4
+ ldr r2, [r0]
+ mov r12, r2
+ movs r0, 0x1
+ mov r10, r0
+_0806DE3E:
+ lsls r0, r3, 2
+ add r0, r12
+ mov r8, r0
+ ldrb r1, [r2]
+ mov r0, r10
+ ands r0, r1
+ cmp r0, 0
+ beq _0806DE5C
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _0806DE5C
+ ldrb r0, [r2, 0x2]
+ cmp r0, 0x3A
+ beq _0806DDF8
+_0806DE5C:
+ adds r2, 0x4
+ adds r3, 0x1
+ cmp r3, 0x13
+ ble _0806DE3E
+_0806DE64:
+ cmp r4, 0
+ beq _0806DF48
+_0806DE68:
+ adds r0, r7, 0
+ bl sub_8042148
+ adds r0, r4, 0
+ movs r1, 0x46
+ movs r2, 0x2
+ bl sub_8045C28
+ adds r1, r7, 0
+ adds r1, 0x22
+ movs r0, 0
+ strb r0, [r1]
+ ldrh r0, [r6, 0x10]
+ movs r2, 0
+ strh r0, [r6, 0xE]
+ movs r1, 0xAC
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r2, [r0]
+ movs r3, 0xA6
+ lsls r3, 1
+ adds r1, r6, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r1, r6, r0
+ subs r3, 0xC
+ adds r0, r6, r3
+ ldr r0, [r0]
+ str r0, [r1]
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ beq _0806DEBE
+ ldr r0, _0806DED8
+ ldr r1, [r0]
+ ldr r3, _0806DEDC
+ adds r1, r3
+ strb r2, [r1]
+ ldr r0, [r0]
+ ldr r1, _0806DEE0
+ adds r0, r1
+ strb r2, [r0]
+_0806DEBE:
+ adds r0, r6, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806DEE4
+_0806DEC8:
+ mov r0, r9
+ adds r1, r7, 0
+ movs r2, 0x3
+ bl sub_807A5D0
+ b _0806DEF2
+ .align 2, 0
+_0806DED4: .4byte gTeamInventory_203B460
+_0806DED8: .4byte gDungeonGlobalData
+_0806DEDC: .4byte 0x00000679
+_0806DEE0: .4byte 0x00000676
+_0806DEE4:
+ cmp r0, 0x2
+ bne _0806DEF2
+ mov r0, r9
+ adds r1, r7, 0
+ movs r2, 0x2
+ bl sub_807A5D0
+_0806DEF2:
+ adds r0, r7, 0
+ bl sub_8078084
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_806BFC0
+ bl sub_800DBBC
+ adds r0, r7, 0
+ bl sub_806A390
+ adds r0, r7, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r7, 0
+ bl sub_806CCB4
+ adds r0, r7, 0
+ bl sub_80418D4
+ ldr r0, _0806DF40
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806DF44
+_0806DF2E:
+ ldr r1, [r0]
+ mov r0, r9
+ bl sub_805239C
+ adds r0, r7, 0
+ bl sub_806F63C
+ bl _0806D608
+ .align 2, 0
+_0806DF40: .4byte gUnknown_202DFE8
+_0806DF44: .4byte gUnknown_80FD46C
+_0806DF48:
+ ldrb r4, [r6, 0x7]
+ cmp r4, 0
+ bne _0806DF68
+ ldrb r1, [r5]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806DF68
+ adds r1, r7, 0x4
+ adds r0, r7, 0
+ adds r2, r5, 0
+ bl sub_80464C8
+ strb r4, [r5, 0x2]
+ strb r4, [r5, 0x1]
+ strb r4, [r5]
+_0806DF68:
+ adds r0, r6, 0
+ adds r0, 0xF7
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806DF7E
+ ldr r0, _0806E02C
+ ldr r0, [r0]
+ ldr r2, _0806E030
+ adds r0, r2
+ ldr r1, _0806E034
+ strh r1, [r0]
+_0806DF7E:
+ movs r3, 0
+ mov r10, r3
+ mov r0, r9
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806E066
+ mov r0, r9
+ ldr r4, [r0, 0x70]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ ldrb r1, [r6, 0x9]
+ bl CalculateEXPGain
+ adds r5, r0, 0
+ adds r0, r6, 0
+ adds r0, 0xFB
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806DFAE
+ cmp r0, 0x2
+ bne _0806DFB4
+ lsls r0, r5, 1
+ adds r5, r0, r5
+_0806DFAE:
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+_0806DFB4:
+ cmp r5, 0
+ bne _0806DFBA
+ movs r5, 0x1
+_0806DFBA:
+ ldrb r0, [r4, 0x7]
+ cmp r0, 0
+ beq _0806DFC8
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ bl sub_80980B4
+_0806DFC8:
+ adds r0, r6, 0
+ adds r0, 0xF4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806DFDA
+ ldr r3, _0806E038
+ adds r1, r4, r3
+ movs r0, 0x1
+ strb r0, [r1]
+_0806DFDA:
+ ldr r0, [sp, 0x78]
+ cmp r0, 0x1
+ bne _0806E066
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0
+ bne _0806E040
+ ldrb r0, [r6, 0x6]
+ cmp r0, 0
+ beq _0806E066
+ mov r0, r9
+ mov r1, r9
+ adds r2, r5, 0
+ bl sub_8071D4C
+ movs r6, 0
+_0806DFF8:
+ ldr r0, _0806E02C
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r2, _0806E03C
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E020
+ cmp r4, r9
+ beq _0806E020
+ mov r0, r9
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_8071D4C
+_0806E020:
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0806DFF8
+ movs r3, 0x1
+ mov r10, r3
+ b _0806E066
+ .align 2, 0
+_0806E02C: .4byte gDungeonGlobalData
+_0806E030: .4byte 0x0000066a
+_0806E034: .4byte 0x000003e7
+_0806E038: .4byte 0x0000014b
+_0806E03C: .4byte 0x0001357c
+_0806E040:
+ ldr r5, _0806E0BC
+ ldr r0, [r5]
+ ldr r1, _0806E0C0
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_809033C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E066
+ ldr r2, _0806E0C4
+ adds r0, r4, r2
+ add r3, sp, 0x78
+ ldrb r3, [r3]
+ strb r3, [r0]
+ ldr r0, [r5]
+ add r1, sp, 0x78
+ ldrb r1, [r1]
+ strb r1, [r0, 0xD]
+_0806E066:
+ mov r0, r9
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E08A
+ mov r0, r9
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806E08A
+ mov r2, r9
+ ldr r0, [r2, 0x70]
+ ldrb r0, [r0, 0x7]
+ cmp r0, 0
+ bne _0806E08A
+ movs r3, 0
+ mov r10, r3
+_0806E08A:
+ mov r0, r10
+ cmp r0, 0
+ beq _0806E0E4
+ add r0, sp, 0x4
+ adds r1, r7, 0
+ bl sub_8069D4C
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_806F660
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E0D8
+ mov r0, r9
+ adds r1, r7, 0
+ add r2, sp, 0x4
+ bl sub_806FA5C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E0CC
+ ldr r1, _0806E0C8
+ adds r0, r7, 0
+ b _0806E0DC
+ .align 2, 0
+_0806E0BC: .4byte gDungeonGlobalData
+_0806E0C0: .4byte 0x00000644
+_0806E0C4: .4byte 0x00000149
+_0806E0C8: .4byte 0x000001f5
+_0806E0CC:
+ ldr r1, _0806E0D4
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0806E0EE
+ .align 2, 0
+_0806E0D4: .4byte gUnknown_202F221
+_0806E0D8:
+ adds r0, r7, 0
+ ldr r1, [sp, 0x50]
+_0806E0DC:
+ mov r2, r9
+ bl sub_8068FE0
+ b _0806E0EE
+_0806E0E4:
+ adds r0, r7, 0
+ ldr r1, [sp, 0x50]
+ mov r2, r9
+ bl sub_8068FE0
+_0806E0EE:
+ movs r0, 0x1
+_0806E0F0:
+ add sp, 0x58
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806D528
+
+ thumb_func_start sub_806E100
+sub_806E100:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ adds r6, r0, 0
+ mov r8, r1
+ str r2, [sp, 0x18]
+ lsls r3, 24
+ lsrs r7, r3, 24
+ movs r0, 0
+ mov r9, r0
+ movs r1, 0
+ str r1, [sp, 0x20]
+ mov r2, r8
+ ldr r2, [r2, 0x70]
+ str r2, [sp, 0x24]
+ ldr r3, [sp, 0x18]
+ ldr r3, [r3, 0x70]
+ mov r10, r3
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_800A020
+ mov r0, r9
+ ldr r4, [sp, 0x48]
+ strb r0, [r4, 0xD]
+ strb r0, [r4, 0xE]
+ movs r1, 0
+ str r1, [sp, 0x1C]
+ ldr r0, [sp, 0x18]
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E14E
+ movs r0, 0x1
+ b _0806E61A
+_0806E14E:
+ cmp r7, 0x1
+ beq _0806E156
+ cmp r7, 0x7
+ bne _0806E15A
+_0806E156:
+ movs r2, 0x1
+ str r2, [sp, 0x20]
+_0806E15A:
+ ldr r0, [sp, 0x18]
+ movs r1, 0x35
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E170
+ cmp r7, 0
+ beq _0806E170
+ movs r3, 0x1
+ str r3, [sp, 0x1C]
+_0806E170:
+ movs r0, 0x2
+ ldr r4, [sp, 0x48]
+ str r0, [r4, 0x8]
+ movs r5, 0
+ add r0, sp, 0x10
+ mov r9, r0
+ b _0806E1F2
+_0806E17E:
+ mov r1, r10
+ adds r1, 0x5C
+ ldr r2, [sp, 0x20]
+ cmp r2, 0
+ beq _0806E1B4
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ bne _0806E1B4
+ mov r0, r10
+ adds r0, 0xF5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806E1B4
+ movs r4, 0
+ ldr r0, _0806E1AC
+ ldr r0, [r0]
+ ldr r3, _0806E1B0
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0806E1CA
+ .align 2, 0
+_0806E1AC: .4byte gDungeonGlobalData
+_0806E1B0: .4byte 0x00000179
+_0806E1B4:
+ ldr r2, _0806E4E4
+ adds r0, r1, r5
+ ldrb r1, [r0]
+ lsls r1, 1
+ lsls r0, r7, 3
+ adds r0, r7
+ lsls r0, 2
+ adds r1, r0
+ adds r1, r2
+ movs r0, 0
+ ldrsh r4, [r1, r0]
+_0806E1CA:
+ cmp r4, 0x2
+ beq _0806E1DC
+ lsls r0, r4, 2
+ add r0, sp
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E1DC:
+ lsls r0, r5, 2
+ add r0, r9
+ str r4, [r0]
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r1, 0x9E
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r5
+ strb r4, [r0]
+ adds r5, 0x1
+_0806E1F2:
+ cmp r5, 0x1
+ bgt _0806E20E
+ mov r1, sp
+ ldr r0, _0806E4EC
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r0, r6, 0
+ bl sub_800A2A0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E17E
+_0806E20E:
+ ldr r2, _0806E4F0
+ mov r1, r9
+ ldr r0, [r1, 0x4]
+ lsls r0, 2
+ ldr r1, [sp, 0x10]
+ lsls r1, 4
+ adds r0, r1
+ adds r0, r2
+ ldr r0, [r0]
+ ldr r2, [sp, 0x48]
+ str r0, [r2, 0x8]
+ movs r3, 0x1
+ mov r9, r3
+ cmp r0, 0x3
+ beq _0806E240
+ movs r4, 0
+ mov r9, r4
+ ldr r0, [sp, 0x1C]
+ cmp r0, 0
+ beq _0806E240
+ ldr r0, _0806E4F4
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [r6]
+ str r1, [r6, 0x4]
+_0806E240:
+ cmp r7, 0x2
+ beq _0806E248
+ cmp r7, 0x6
+ bne _0806E26C
+_0806E248:
+ ldr r0, [sp, 0x18]
+ movs r1, 0x2
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E26C
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ ldr r2, _0806E4F8
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E4FC
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E26C:
+ cmp r7, 0x2
+ bne _0806E2A0
+ ldr r0, [sp, 0x18]
+ bl GetFlashFireStatus
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E2A0
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r3, 0xB7
+ lsls r3, 1
+ adds r0, r3
+ movs r4, 0
+ movs r5, 0x1
+ strb r5, [r0]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_800A020
+ ldr r0, [sp, 0x48]
+ str r4, [r0, 0x8]
+ strb r4, [r0, 0xD]
+ strb r5, [r0, 0xE]
+ movs r1, 0
+ mov r9, r1
+_0806E2A0:
+ cmp r7, 0x9
+ bne _0806E2D2
+ ldr r0, [sp, 0x18]
+ movs r1, 0x37
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E2D2
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ ldr r2, _0806E500
+ adds r0, r2
+ movs r4, 0
+ movs r5, 0x1
+ strb r5, [r0]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_800A020
+ ldr r3, [sp, 0x48]
+ str r4, [r3, 0x8]
+ strb r4, [r3, 0xD]
+ strb r5, [r3, 0xE]
+ mov r9, r4
+_0806E2D2:
+ cmp r7, 0x3
+ bne _0806E340
+ mov r0, r8
+ movs r1, 0x10
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E340
+ movs r4, 0
+ ldr r0, [sp, 0x24]
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bge _0806E2F2
+ adds r1, 0x3
+_0806E2F2:
+ asrs r1, 2
+ ldr r3, [sp, 0x24]
+ movs r2, 0xE
+ ldrsh r0, [r3, r2]
+ cmp r1, r0
+ blt _0806E300
+ movs r4, 0x1
+_0806E300:
+ ldr r0, [sp, 0x24]
+ movs r1, 0x80
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r4, 0
+ beq _0806E32A
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r3, 0xB8
+ lsls r3, 1
+ adds r0, r3
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r2, _0806E504
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E32A:
+ cmp r5, 0
+ beq _0806E340
+ mov r0, r8
+ bl sub_80428EC
+ ldr r0, _0806E508
+ ldr r2, [r0]
+ mov r0, r8
+ ldr r1, [sp, 0x18]
+ bl sub_80522F4
+_0806E340:
+ cmp r7, 0x4
+ bne _0806E3AC
+ mov r0, r8
+ movs r1, 0x1A
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E3AC
+ movs r4, 0
+ ldr r0, [sp, 0x24]
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bge _0806E360
+ adds r1, 0x3
+_0806E360:
+ asrs r1, 2
+ ldr r3, [sp, 0x24]
+ movs r2, 0xE
+ ldrsh r0, [r3, r2]
+ cmp r1, r0
+ blt _0806E36E
+ movs r4, 0x1
+_0806E36E:
+ ldr r0, [sp, 0x24]
+ movs r1, 0x2
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r4, 0
+ beq _0806E396
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ ldr r3, _0806E50C
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E504
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E396:
+ cmp r5, 0
+ beq _0806E3AC
+ mov r0, r8
+ bl sub_80428D8
+ ldr r0, _0806E510
+ ldr r2, [r0]
+ mov r0, r8
+ ldr r1, [sp, 0x18]
+ bl sub_80522F4
+_0806E3AC:
+ cmp r7, 0xC
+ bne _0806E41A
+ mov r0, r8
+ movs r1, 0x43
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E41A
+ movs r4, 0
+ ldr r0, [sp, 0x24]
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bge _0806E3CC
+ adds r1, 0x3
+_0806E3CC:
+ asrs r1, 2
+ ldr r3, [sp, 0x24]
+ movs r2, 0xE
+ ldrsh r0, [r3, r2]
+ cmp r1, r0
+ blt _0806E3DA
+ movs r4, 0x1
+_0806E3DA:
+ ldr r0, [sp, 0x24]
+ movs r1, 0x10
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r4, 0
+ beq _0806E404
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r3, 0xB9
+ lsls r3, 1
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E504
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E404:
+ cmp r5, 0
+ beq _0806E41A
+ mov r0, r8
+ bl sub_8042978
+ ldr r0, _0806E514
+ ldr r2, [r0]
+ mov r0, r8
+ ldr r1, [sp, 0x18]
+ bl sub_80522F4
+_0806E41A:
+ cmp r7, 0x2
+ bne _0806E486
+ mov r0, r8
+ movs r1, 0x46
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E486
+ movs r4, 0
+ ldr r0, [sp, 0x24]
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bge _0806E43A
+ adds r1, 0x3
+_0806E43A:
+ asrs r1, 2
+ ldr r3, [sp, 0x24]
+ movs r2, 0xE
+ ldrsh r0, [r3, r2]
+ cmp r1, r0
+ blt _0806E448
+ movs r4, 0x1
+_0806E448:
+ ldr r0, [sp, 0x24]
+ movs r1, 0x20
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r4, 0
+ beq _0806E470
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ ldr r3, _0806E518
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E504
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E470:
+ cmp r5, 0
+ beq _0806E486
+ mov r0, r8
+ bl sub_804298C
+ ldr r0, _0806E51C
+ ldr r2, [r0]
+ mov r0, r8
+ ldr r1, [sp, 0x18]
+ bl sub_80522F4
+_0806E486:
+ adds r0, r6, 0
+ bl sub_800A2A0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E4B8
+ mov r0, r8
+ adds r1, r7, 0
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E4B8
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r4, 0xBA
+ lsls r4, 1
+ adds r0, r4
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r2, _0806E520
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E4B8:
+ mov r0, r8
+ bl GetWeather
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x1
+ bne _0806E53E
+ cmp r7, 0x2
+ bne _0806E524
+ ldr r0, _0806E4E8
+ ldr r0, [r0]
+ movs r1, 0xB6
+ lsls r1, 1
+ adds r0, r1
+ strb r4, [r0]
+ ldr r2, _0806E520
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+ b _0806E53E
+ .align 2, 0
+_0806E4E4: .4byte gTypeEffectivenessChart
+_0806E4E8: .4byte gDungeonGlobalData
+_0806E4EC: .4byte gUnknown_8106F54
+_0806E4F0: .4byte gUnknown_80F54B4
+_0806E4F4: .4byte gUnknown_8106EFC
+_0806E4F8: .4byte 0x0000016d
+_0806E4FC: .4byte gUnknown_8106F1C
+_0806E500: .4byte 0x0000016f
+_0806E504: .4byte gUnknown_8106F0C
+_0806E508: .4byte gUnknown_80FEDA8
+_0806E50C: .4byte 0x00000171
+_0806E510: .4byte gUnknown_80FED88
+_0806E514: .4byte gUnknown_80FEDC8
+_0806E518: .4byte 0x00000173
+_0806E51C: .4byte gUnknown_80FEDE8
+_0806E520: .4byte gUnknown_8106F14
+_0806E524:
+ cmp r7, 0x3
+ bne _0806E53E
+ ldr r0, _0806E560
+ ldr r0, [r0]
+ movs r2, 0xB6
+ lsls r2, 1
+ adds r0, r2
+ strb r4, [r0]
+ ldr r2, _0806E564
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E53E:
+ cmp r4, 0x4
+ bne _0806E586
+ cmp r7, 0x2
+ bne _0806E56C
+ ldr r0, _0806E560
+ ldr r0, [r0]
+ ldr r3, _0806E568
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E564
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+ b _0806E586
+ .align 2, 0
+_0806E560: .4byte gDungeonGlobalData
+_0806E564: .4byte gUnknown_8106F1C
+_0806E568: .4byte 0x0000016b
+_0806E56C:
+ cmp r7, 0x3
+ bne _0806E586
+ ldr r0, _0806E62C
+ ldr r0, [r0]
+ ldr r2, _0806E630
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E634
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E586:
+ cmp r4, 0x3
+ bne _0806E5A6
+ cmp r7, 0x1
+ beq _0806E5A6
+ ldr r2, _0806E638
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+ ldr r0, _0806E62C
+ ldr r0, [r0]
+ movs r3, 0xB5
+ lsls r3, 1
+ adds r1, r0, r3
+ movs r0, 0x1
+ strb r0, [r1]
+_0806E5A6:
+ ldr r0, _0806E62C
+ ldr r1, [r0]
+ ldr r2, _0806E63C
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806E5B8
+ cmp r4, 0x6
+ bne _0806E5CE
+_0806E5B8:
+ cmp r7, 0x5
+ bne _0806E5CE
+ ldr r3, _0806E640
+ adds r1, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E644
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E5CE:
+ ldr r0, _0806E62C
+ ldr r1, [r0]
+ ldr r4, _0806E648
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806E5F4
+ cmp r7, 0x2
+ bne _0806E5F4
+ movs r0, 0xBB
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E644
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E5F4:
+ cmp r7, 0x5
+ bne _0806E618
+ ldr r0, [sp, 0x24]
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0xB
+ bne _0806E618
+ ldr r0, _0806E62C
+ ldr r0, [r0]
+ ldr r2, _0806E64C
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r2, _0806E650
+ adds r0, r6, 0
+ adds r1, r6, 0
+ bl sub_800A34C
+_0806E618:
+ mov r0, r9
+_0806E61A:
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806E62C: .4byte gDungeonGlobalData
+_0806E630: .4byte 0x0000016b
+_0806E634: .4byte gUnknown_8106F14
+_0806E638: .4byte gUnknown_8106F64
+_0806E63C: .4byte 0x0000e277
+_0806E640: .4byte 0x00000175
+_0806E644: .4byte gUnknown_8106F1C
+_0806E648: .4byte 0x0000e278
+_0806E64C: .4byte 0x00000177
+_0806E650: .4byte gUnknown_8106F0C
+ thumb_func_end sub_806E100
+
+ thumb_func_start WeightWeakTypePicker
+WeightWeakTypePicker:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ mov r9, r0
+ str r1, [sp, 0x14]
+ lsls r2, 24
+ lsrs r4, r2, 24
+ movs r5, 0x1
+ movs r0, 0
+ str r0, [sp, 0x10]
+ adds r0, r1, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E6DC
+ cmp r4, 0x1
+ beq _0806E682
+ cmp r4, 0x7
+ bne _0806E686
+_0806E682:
+ movs r1, 0x1
+ str r1, [sp, 0x10]
+_0806E686:
+ mov r2, r9
+ ldr r2, [r2, 0x70]
+ mov r8, r2
+ ldr r3, [sp, 0x14]
+ ldr r3, [r3, 0x70]
+ mov r10, r3
+ cmp r4, 0x2
+ bne _0806E6A2
+ ldr r0, [sp, 0x14]
+ bl GetFlashFireStatus
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E6C6
+_0806E6A2:
+ cmp r4, 0x5
+ bne _0806E6B4
+ ldr r0, [sp, 0x14]
+ movs r1, 0x23
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E6C6
+_0806E6B4:
+ cmp r4, 0x3
+ bne _0806E6CA
+ ldr r0, [sp, 0x14]
+ movs r1, 0x24
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E6CA
+_0806E6C6:
+ movs r0, 0
+ b _0806E894
+_0806E6CA:
+ cmp r4, 0x9
+ bne _0806E6E0
+ ldr r0, [sp, 0x14]
+ movs r1, 0x37
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E6E0
+_0806E6DC:
+ movs r0, 0x1
+ b _0806E894
+_0806E6E0:
+ mov r6, r10
+ adds r6, 0x5C
+ str r6, [sp, 0x18]
+ lsls r0, r4, 3
+ adds r0, r4
+ lsls r0, 2
+ mov r12, r0
+ adds r2, r6, 0
+_0806E6F0:
+ mov r0, sp
+ ldr r1, _0806E724
+ ldm r1!, {r3,r6,r7}
+ stm r0!, {r3,r6,r7}
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r7, [sp, 0x10]
+ cmp r7, 0
+ beq _0806E730
+ ldrb r0, [r2]
+ cmp r0, 0xE
+ bne _0806E730
+ mov r0, r10
+ adds r0, 0xF5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806E730
+ movs r3, 0
+ ldr r0, _0806E728
+ ldr r0, [r0]
+ ldr r6, _0806E72C
+ adds r1, r0, r6
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0806E73E
+ .align 2, 0
+_0806E724: .4byte gTypeEffectivenessMultipliers
+_0806E728: .4byte gDungeonGlobalData
+_0806E72C: .4byte 0x00000179
+_0806E730:
+ ldrb r0, [r2]
+ lsls r0, 1
+ add r0, r12
+ ldr r7, _0806E854
+ adds r0, r7
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+_0806E73E:
+ cmp r5, 0
+ beq _0806E75E
+ lsls r0, r3, 2
+ add r0, sp
+ ldr r0, [r0]
+ muls r5, r0
+ lsrs r0, r5, 31
+ adds r0, r5, r0
+ asrs r5, r0, 1
+ cmp r5, 0
+ beq _0806E84E
+ adds r2, 0x1
+ ldr r0, [sp, 0x18]
+ adds r0, 0x1
+ cmp r2, r0
+ ble _0806E6F0
+_0806E75E:
+ cmp r4, 0x2
+ beq _0806E766
+ cmp r4, 0x6
+ bne _0806E774
+_0806E766:
+ ldr r0, [sp, 0x14]
+ movs r1, 0x2
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E84E
+_0806E774:
+ cmp r4, 0x3
+ bne _0806E7A0
+ mov r0, r9
+ movs r1, 0x10
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E7A0
+ mov r2, r8
+ movs r3, 0x10
+ ldrsh r1, [r2, r3]
+ cmp r1, 0
+ bge _0806E792
+ adds r1, 0x3
+_0806E792:
+ asrs r1, 2
+ mov r6, r8
+ movs r7, 0xE
+ ldrsh r0, [r6, r7]
+ cmp r1, r0
+ blt _0806E7A0
+ lsls r5, 1
+_0806E7A0:
+ cmp r4, 0x4
+ bne _0806E7CC
+ mov r0, r9
+ movs r1, 0x1A
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E7CC
+ mov r0, r8
+ movs r2, 0x10
+ ldrsh r1, [r0, r2]
+ cmp r1, 0
+ bge _0806E7BE
+ adds r1, 0x3
+_0806E7BE:
+ asrs r1, 2
+ mov r3, r8
+ movs r6, 0xE
+ ldrsh r0, [r3, r6]
+ cmp r1, r0
+ blt _0806E7CC
+ lsls r5, 1
+_0806E7CC:
+ cmp r4, 0xC
+ bne _0806E7F8
+ mov r0, r9
+ movs r1, 0x43
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E7F8
+ mov r7, r8
+ movs r0, 0x10
+ ldrsh r1, [r7, r0]
+ cmp r1, 0
+ bge _0806E7EA
+ adds r1, 0x3
+_0806E7EA:
+ asrs r1, 2
+ mov r2, r8
+ movs r3, 0xE
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ blt _0806E7F8
+ lsls r5, 1
+_0806E7F8:
+ cmp r4, 0x2
+ bne _0806E824
+ mov r0, r9
+ movs r1, 0x46
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E824
+ mov r6, r8
+ movs r7, 0x10
+ ldrsh r1, [r6, r7]
+ cmp r1, 0
+ bge _0806E816
+ adds r1, 0x3
+_0806E816:
+ asrs r1, 2
+ mov r2, r8
+ movs r3, 0xE
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ blt _0806E824
+ lsls r5, 1
+_0806E824:
+ cmp r5, 0
+ beq _0806E84E
+ mov r0, r9
+ adds r1, r4, 0
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E838
+ lsls r5, 1
+_0806E838:
+ mov r0, r9
+ bl GetWeather
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0806E85A
+ cmp r4, 0x2
+ beq _0806E858
+ cmp r4, 0x3
+ bne _0806E85A
+_0806E84E:
+ movs r0, 0x2
+ b _0806E894
+ .align 2, 0
+_0806E854: .4byte gTypeEffectivenessChart
+_0806E858:
+ lsls r5, 1
+_0806E85A:
+ ldr r0, _0806E8A4
+ ldr r1, [r0]
+ ldr r6, _0806E8A8
+ adds r1, r6
+ ldrb r1, [r1]
+ cmp r1, 0
+ beq _0806E86C
+ cmp r4, 0x5
+ beq _0806E84E
+_0806E86C:
+ ldr r0, [r0]
+ ldr r7, _0806E8AC
+ adds r0, r7
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806E87C
+ cmp r4, 0x2
+ beq _0806E84E
+_0806E87C:
+ cmp r4, 0x5
+ bne _0806E88C
+ mov r0, r8
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0xB
+ bne _0806E88C
+ lsls r5, 1
+_0806E88C:
+ cmp r5, 0x2
+ ble _0806E892
+ movs r5, 0x3
+_0806E892:
+ adds r0, r5, 0x2
+_0806E894:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806E8A4: .4byte gDungeonGlobalData
+_0806E8A8: .4byte 0x0000e277
+_0806E8AC: .4byte 0x0000e278
+ thumb_func_end WeightWeakTypePicker
+
+ thumb_func_start sub_806E8B0
+sub_806E8B0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r6, r0, 0
+ mov r9, r1
+ adds r0, r2, 0
+ str r3, [sp]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r7, 0x1
+ movs r1, 0x1
+ mov r8, r1
+ movs r2, 0x1
+ str r2, [sp, 0x4]
+ str r1, [sp, 0x8]
+ bl sub_8092354
+ movs r2, 0
+ mov r10, r2
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E8E6
+ movs r0, 0x1
+ mov r10, r0
+_0806E8E6:
+ adds r0, r6, 0
+ movs r1, 0x11
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E92C
+ ldr r5, [r6, 0x70]
+ adds r0, r6, 0
+ bl HasNegativeStatus
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0
+ beq _0806E916
+ movs r7, 0x2
+_0806E916:
+ cmp r0, 0
+ beq _0806E92C
+ adds r0, r6, 0
+ bl sub_80428B0
+ ldr r0, _0806EADC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ mov r1, r9
+ bl sub_80522F4
+_0806E92C:
+ adds r0, r6, 0
+ movs r1, 0x22
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806E948
+ adds r0, r6, 0
+ movs r1, 0x4B
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E98E
+_0806E948:
+ ldr r2, [r6, 0x70]
+ movs r4, 0
+ ldr r0, [sp, 0x30]
+ cmp r0, 0x20
+ bgt _0806E95A
+ mov r1, r10
+ cmp r1, 0
+ bne _0806E95A
+ movs r4, 0x1
+_0806E95A:
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r2, 0
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r4, 0
+ beq _0806E978
+ lsls r0, r7, 1
+ adds r7, r0, r7
+ mov r2, r8
+ lsls r2, 1
+ mov r8, r2
+_0806E978:
+ cmp r1, 0
+ beq _0806E98E
+ adds r0, r6, 0
+ bl sub_80428C4
+ ldr r0, _0806EAE0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ mov r1, r9
+ bl sub_80522F4
+_0806E98E:
+ adds r0, r6, 0
+ movs r1, 0x30
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E9AC
+ mov r0, r10
+ cmp r0, 0
+ bne _0806E9AC
+ lsls r0, r7, 1
+ adds r7, r0, r7
+ mov r1, r8
+ lsls r1, 1
+ mov r8, r1
+_0806E9AC:
+ ldr r0, [r6, 0x70]
+ ldrb r0, [r0, 0x6]
+ movs r4, 0x1
+ cmp r0, 0
+ beq _0806E9B8
+ movs r4, 0
+_0806E9B8:
+ adds r0, r6, 0
+ movs r1, 0x38
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806E9EA
+ mov r2, r10
+ cmp r2, 0x1
+ bne _0806E9EA
+ ldr r0, _0806EAE4
+ ldr r0, [r0]
+ ldr r1, _0806EAE8
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806E9EA
+ lsls r0, r7, 4
+ subs r7, r0, r7
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 1
+ mov r8, r0
+_0806E9EA:
+ adds r0, r6, 0
+ movs r1, 0x3F
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EA1C
+ mov r0, r10
+ cmp r0, 0x1
+ bne _0806EA1C
+ ldr r0, _0806EAE4
+ ldr r0, [r0]
+ ldr r1, _0806EAEC
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806EA1C
+ lsls r0, r7, 4
+ subs r7, r0, r7
+ mov r2, r8
+ lsls r0, r2, 2
+ add r0, r8
+ lsls r0, 1
+ mov r8, r0
+_0806EA1C:
+ mov r0, r9
+ movs r1, 0x6
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EA38
+ mov r0, r10
+ cmp r0, 0
+ bne _0806EA38
+ lsls r7, 2
+ mov r1, r8
+ lsls r0, r1, 2
+ add r8, r0
+_0806EA38:
+ mov r0, r9
+ movs r1, 0x34
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EA90
+ mov r2, r10
+ cmp r2, 0
+ bne _0806EA90
+ mov r0, r9
+ ldr r5, [r0, 0x70]
+ bl HasNegativeStatus
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ movs r1, 0x8
+ adds r2, r4, 0
+ bl SetVisualFlags
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r4, 0
+ beq _0806EA7A
+ ldr r2, [sp, 0x4]
+ lsls r0, r2, 1
+ adds r2, r0, r2
+ str r2, [sp, 0x4]
+ ldr r0, [sp, 0x8]
+ lsls r0, 1
+ str r0, [sp, 0x8]
+_0806EA7A:
+ cmp r1, 0
+ beq _0806EA90
+ mov r0, r9
+ bl sub_8042940
+ ldr r0, _0806EAF0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ mov r1, r9
+ bl sub_80522F4
+_0806EA90:
+ ldr r1, [sp]
+ ldr r0, [r1]
+ muls r0, r7
+ str r0, [r1]
+ ldr r2, [sp, 0x2C]
+ ldr r0, [r2]
+ ldr r1, [sp, 0x4]
+ muls r0, r1
+ str r0, [r2]
+ mov r2, r8
+ cmp r2, 0x1
+ beq _0806EAB6
+ ldr r1, [sp]
+ ldr r0, [r1]
+ mov r1, r8
+ bl __divsi3
+ ldr r2, [sp]
+ str r0, [r2]
+_0806EAB6:
+ ldr r0, [sp, 0x8]
+ cmp r0, 0x1
+ beq _0806EACA
+ ldr r1, [sp, 0x2C]
+ ldr r0, [r1]
+ ldr r1, [sp, 0x8]
+ bl __divsi3
+ ldr r2, [sp, 0x2C]
+ str r0, [r2]
+_0806EACA:
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806EADC: .4byte gUnknown_80FEE04
+_0806EAE0: .4byte gUnknown_80FEE2C
+_0806EAE4: .4byte gDungeonGlobalData
+_0806EAE8: .4byte 0x000037fa
+_0806EAEC: .4byte 0x000037f8
+_0806EAF0: .4byte gUnknown_80FEE54
+ thumb_func_end sub_806E8B0
+
+ thumb_func_start sub_806EAF4
+sub_806EAF4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8C
+ str r0, [sp, 0x70]
+ mov r9, r1
+ adds r7, r3, 0
+ ldr r0, [sp, 0xB8]
+ ldr r1, [sp, 0xBC]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x74]
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x78]
+ ldr r0, [sp, 0x70]
+ ldr r0, [r0, 0x70]
+ mov r10, r0
+ mov r1, r9
+ ldr r1, [r1, 0x70]
+ str r1, [sp, 0x7C]
+ adds r0, r2, 0
+ bl sub_8092354
+ movs r2, 0
+ str r2, [sp, 0x80]
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806EB3A
+ movs r3, 0x1
+ str r3, [sp, 0x80]
+_0806EB3A:
+ bl sub_806F500
+ mov r6, r10
+ ldrb r0, [r6, 0x7]
+ cmp r0, 0
+ bne _0806EB72
+ movs r0, 0x9E
+ lsls r0, 1
+ add r0, r10
+ ldr r0, [r0]
+ bl GetBellyRoundedUp
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _0806EB72
+ movs r0, 0x1
+ ldr r2, [sp, 0xB0]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ movs r0, 0x2
+ str r0, [r2, 0x8]
+ add r3, sp, 0x74
+ ldrb r3, [r3]
+ strb r3, [r2, 0xC]
+ strb r1, [r2, 0xD]
+ strb r1, [r2, 0xE]
+ strb r1, [r2, 0xF]
+ b _0806F294
+_0806EB72:
+ ldr r0, _0806EBA4
+ cmp r4, r0
+ bne _0806EBA8
+ mov r0, r9
+ movs r1, 0x35
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EBA8
+ movs r0, 0x1
+ ldr r6, [sp, 0xB0]
+ str r0, [r6]
+ movs r1, 0
+ str r1, [r6, 0x4]
+ movs r0, 0x2
+ str r0, [r6, 0x8]
+ add r0, sp, 0x74
+ ldrb r0, [r0]
+ strb r0, [r6, 0xC]
+ strb r1, [r6, 0xD]
+ strb r1, [r6, 0xE]
+ strb r1, [r6, 0xF]
+ b _0806F294
+ .align 2, 0
+_0806EBA4: .4byte 0x00000163
+_0806EBA8:
+ add r1, sp, 0x74
+ ldrb r2, [r1]
+ ldr r1, [sp, 0xB0]
+ strb r2, [r1, 0xC]
+ ldr r1, _0806EDA4
+ ldr r0, [r1]
+ movs r2, 0x9A
+ lsls r2, 1
+ adds r0, r2
+ add r3, sp, 0x74
+ ldrb r3, [r3]
+ strb r3, [r0]
+ ldr r2, [r1]
+ movs r6, 0x9C
+ lsls r6, 1
+ adds r0, r2, r6
+ ldr r1, [sp, 0x80]
+ str r1, [r0]
+ lsls r1, 1
+ mov r0, r10
+ adds r0, 0x1C
+ adds r0, r1
+ movs r3, 0
+ ldrsh r4, [r0, r3]
+ mov r8, r1
+ ldr r6, [sp, 0x78]
+ cmp r6, 0
+ beq _0806EBF8
+ ldr r0, [sp, 0x74]
+ cmp r0, 0x2
+ bne _0806EBF8
+ mov r1, r10
+ movs r3, 0x28
+ ldrsh r0, [r1, r3]
+ adds r4, r0
+ ldrh r1, [r1, 0x28]
+ movs r6, 0xA2
+ lsls r6, 1
+ adds r0, r2, r6
+ strh r1, [r0]
+_0806EBF8:
+ mov r0, r10
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ ldr r0, _0806EDA8
+ cmp r1, r0
+ bne _0806EC06
+ adds r4, 0x2
+_0806EC06:
+ movs r0, 0xD1
+ lsls r0, 1
+ cmp r1, r0
+ bne _0806EC10
+ subs r4, 0x2
+_0806EC10:
+ ldr r0, _0806EDAC
+ cmp r1, r0
+ bne _0806EC18
+ subs r4, 0x2
+_0806EC18:
+ cmp r4, 0
+ bge _0806EC1E
+ movs r4, 0
+_0806EC1E:
+ cmp r4, 0x14
+ ble _0806EC24
+ movs r4, 0x14
+_0806EC24:
+ ldr r6, _0806EDA4
+ ldr r0, [r6]
+ movs r3, 0x9F
+ lsls r3, 1
+ adds r0, r3
+ strb r4, [r0]
+ ldr r1, [r6]
+ mov r5, r10
+ adds r5, 0x14
+ ldr r0, [sp, 0x80]
+ adds r2, r5, r0
+ ldrb r0, [r2]
+ adds r0, r7
+ adds r3, 0x2
+ adds r1, r3
+ strh r0, [r1]
+ ldrb r0, [r2]
+ adds r0, r7
+ lsls r0, 8
+ ldr r2, _0806EDB0
+ lsls r1, r4, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl sub_8009DA4
+ adds r2, r0, 0
+ ldr r0, [sp, 0x80]
+ lsls r4, r0, 2
+ mov r0, r10
+ adds r0, 0x2C
+ adds r0, r4
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl sub_8009DA4
+ adds r2, r0, 0
+ str r5, [sp, 0x88]
+ cmp r2, 0
+ bge _0806EC74
+ adds r0, 0xFF
+_0806EC74:
+ asrs r0, 8
+ str r0, [sp, 0x8]
+ ldr r0, [sp, 0x7C]
+ adds r0, 0x20
+ add r0, r8
+ movs r1, 0
+ ldrsh r3, [r0, r1]
+ ldr r2, [sp, 0x80]
+ cmp r2, 0
+ bne _0806ECA0
+ ldr r0, [sp, 0x7C]
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bne _0806ECA0
+ ldr r0, [r6]
+ movs r6, 0xBD
+ lsls r6, 1
+ adds r1, r0, r6
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r3, 0x1
+_0806ECA0:
+ ldr r0, [sp, 0x7C]
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ ldr r0, _0806EDA8
+ cmp r1, r0
+ bne _0806ECAE
+ subs r3, 0x2
+_0806ECAE:
+ movs r0, 0xD1
+ lsls r0, 1
+ cmp r1, r0
+ bne _0806ECB8
+ adds r3, 0x2
+_0806ECB8:
+ ldr r0, _0806EDAC
+ cmp r1, r0
+ bne _0806ECC0
+ subs r3, 0x2
+_0806ECC0:
+ cmp r3, 0
+ bge _0806ECC6
+ movs r3, 0
+_0806ECC6:
+ cmp r3, 0x14
+ ble _0806ECCC
+ movs r3, 0x14
+_0806ECCC:
+ ldr r5, _0806EDA4
+ ldr r0, [r5]
+ ldr r6, _0806EDB4
+ adds r0, r6
+ strb r3, [r0]
+ ldr r2, [r5]
+ ldr r0, [sp, 0x7C]
+ adds r0, 0x16
+ ldr r1, [sp, 0x80]
+ adds r0, r1
+ ldrb r1, [r0]
+ adds r6, 0x3
+ adds r2, r6
+ strh r1, [r2]
+ ldrb r0, [r0]
+ lsls r0, 8
+ ldr r2, _0806EDB8
+ lsls r1, r3, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl sub_8009DA4
+ adds r2, r0, 0
+ ldr r0, [sp, 0x7C]
+ adds r0, 0x34
+ adds r0, r4
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl sub_8009DA4
+ cmp r0, 0
+ bge _0806ED0E
+ adds r0, 0xFF
+_0806ED0E:
+ asrs r0, 8
+ str r0, [sp, 0xC]
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ str r0, [sp, 0x84]
+ ldr r0, [sp, 0x80]
+ cmp r0, 0
+ bne _0806EDC8
+ ldr r0, [sp, 0x70]
+ movs r1, 0x13
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ED4A
+ ldr r2, _0806EDBC
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ ldr r0, [sp, 0x8]
+ adds r0, r1
+ str r0, [sp, 0x8]
+ ldr r1, [r5]
+ movs r6, 0xB0
+ lsls r6, 1
+ adds r1, r6
+ ldrb r0, [r2]
+ ldrb r2, [r1]
+ adds r0, r2
+ strb r0, [r1]
+_0806ED4A:
+ ldr r0, [sp, 0x70]
+ movs r1, 0x2B
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806ED74
+ ldr r2, _0806EDC0
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ ldr r0, [sp, 0x8]
+ adds r0, r1
+ str r0, [sp, 0x8]
+ ldr r1, [r5]
+ movs r6, 0xB0
+ lsls r6, 1
+ adds r1, r6
+ ldrb r0, [r2]
+ ldrb r2, [r1]
+ adds r0, r2
+ strb r0, [r1]
+_0806ED74:
+ ldr r3, [sp, 0x78]
+ cmp r3, 0
+ beq _0806EE4A
+ mov r0, r9
+ movs r1, 0x1E
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EE4A
+ ldr r2, _0806EDC4
+ movs r6, 0
+ ldrsh r1, [r2, r6]
+ ldr r0, [sp, 0xC]
+ adds r0, r1
+ str r0, [sp, 0xC]
+ ldr r0, [r5]
+ movs r3, 0xB1
+ lsls r3, 1
+ adds r1, r0, r3
+ ldrb r0, [r2]
+ ldrb r6, [r1]
+ adds r0, r6
+ b _0806EE48
+ .align 2, 0
+_0806EDA4: .4byte gDungeonGlobalData
+_0806EDA8: .4byte 0x000001a1
+_0806EDAC: .4byte 0x000001a3
+_0806EDB0: .4byte gUnknown_80F504C
+_0806EDB4: .4byte 0x0000013f
+_0806EDB8: .4byte gUnknown_80F50A0
+_0806EDBC: .4byte gUnknown_810AC60
+_0806EDC0: .4byte gUnknown_810AC68
+_0806EDC4: .4byte gUnknown_810AC64
+_0806EDC8:
+ ldr r0, [sp, 0x78]
+ cmp r0, 0
+ beq _0806EDF6
+ mov r0, r9
+ movs r1, 0x22
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EDF6
+ ldr r2, _0806EEF8
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ ldr r0, [sp, 0xC]
+ adds r0, r1
+ str r0, [sp, 0xC]
+ ldr r0, [r5]
+ ldr r6, _0806EEFC
+ adds r1, r0, r6
+ ldrb r0, [r2]
+ ldrb r2, [r1]
+ adds r0, r2
+ strb r0, [r1]
+_0806EDF6:
+ ldr r0, [sp, 0x70]
+ movs r1, 0x21
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EE20
+ ldr r2, _0806EF00
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ ldr r0, [sp, 0x8]
+ adds r0, r1
+ str r0, [sp, 0x8]
+ ldr r0, _0806EF04
+ ldr r0, [r0]
+ ldr r6, _0806EF08
+ adds r1, r0, r6
+ ldrb r0, [r2]
+ ldrb r2, [r1]
+ adds r0, r2
+ strb r0, [r1]
+_0806EE20:
+ ldr r0, [sp, 0x70]
+ movs r1, 0x2B
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806EE4A
+ ldr r2, _0806EF0C
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ ldr r0, [sp, 0x8]
+ adds r0, r1
+ str r0, [sp, 0x8]
+ ldr r0, _0806EF04
+ ldr r0, [r0]
+ ldr r6, _0806EF08
+ adds r1, r0, r6
+ ldrb r0, [r2]
+ ldrb r2, [r1]
+ adds r0, r2
+_0806EE48:
+ strb r0, [r1]
+_0806EE4A:
+ ldr r0, _0806EF04
+ ldr r2, [r0]
+ movs r3, 0xA3
+ lsls r3, 1
+ adds r1, r2, r3
+ add r0, sp, 0x8
+ ldrh r0, [r0]
+ strh r0, [r1]
+ movs r6, 0xA4
+ lsls r6, 1
+ adds r1, r2, r6
+ add r4, sp, 0xC
+ ldrh r0, [r4]
+ strh r0, [r1]
+ ldr r0, [sp, 0x8]
+ cmp r0, 0
+ bge _0806EE70
+ movs r0, 0
+ str r0, [sp, 0x8]
+_0806EE70:
+ ldr r1, _0806EF10
+ ldr r0, [sp, 0x8]
+ cmp r0, r1
+ ble _0806EE7C
+ ldr r0, _0806EF14
+ str r0, [sp, 0x8]
+_0806EE7C:
+ movs r3, 0xA8
+ lsls r3, 1
+ add r3, r10
+ ldrh r2, [r3]
+ ldr r1, _0806EF18
+ adds r0, r1, 0
+ ands r0, r2
+ strh r0, [r3]
+ movs r2, 0xA7
+ lsls r2, 1
+ add r2, r10
+ ldrh r0, [r2]
+ ands r1, r0
+ strh r1, [r2]
+ str r4, [sp]
+ ldr r0, [sp, 0x84]
+ str r0, [sp, 0x4]
+ ldr r0, [sp, 0x70]
+ mov r1, r9
+ ldr r2, [sp, 0x74]
+ add r3, sp, 0x8
+ bl sub_806E8B0
+ add r5, sp, 0x10
+ ldr r1, [sp, 0x8]
+ ldr r0, [sp, 0xC]
+ subs r1, r0
+ adds r0, r5, 0
+ bl sub_800A020
+ add r4, sp, 0x18
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl sub_800A020
+ adds r0, r5, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_800A3F0
+ mov r1, r10
+ ldrb r6, [r1, 0x6]
+ mov r8, r5
+ adds r7, r4, 0
+ cmp r6, 0
+ bne _0806EF20
+ ldrb r1, [r1, 0x9]
+ adds r0, r7, 0
+ bl sub_800A020
+ str r6, [sp, 0x20]
+ ldr r0, _0806EF1C
+ add r2, sp, 0x20
+ str r0, [r2, 0x4]
+ adds r0, r7, 0
+ adds r1, r7, 0
+ bl sub_800A34C
+ mov r2, r10
+ ldrb r0, [r2, 0x9]
+ lsls r0, 1
+ b _0806EF60
+ .align 2, 0
+_0806EEF8: .4byte gUnknown_810AC66
+_0806EEFC: .4byte 0x00000163
+_0806EF00: .4byte gUnknown_810AC62
+_0806EF04: .4byte gDungeonGlobalData
+_0806EF08: .4byte 0x00000161
+_0806EF0C: .4byte gUnknown_810AC68
+_0806EF10: .4byte 0x000003e6
+_0806EF14: .4byte 0x000003e7
+_0806EF18: .4byte 0x0000feff
+_0806EF1C: .4byte 0x0000aaaa
+_0806EF20:
+ ldr r3, [sp, 0x88]
+ ldr r6, [sp, 0x80]
+ adds r0, r3, r6
+ ldrb r0, [r0]
+ str r0, [sp, 0x28]
+ movs r0, 0x1
+ str r0, [sp, 0x2C]
+ add r3, sp, 0x28
+ add r0, sp, 0x2C
+ str r0, [sp]
+ ldr r0, [sp, 0x84]
+ str r0, [sp, 0x4]
+ ldr r0, [sp, 0x70]
+ mov r1, r9
+ ldr r2, [sp, 0x74]
+ bl sub_806E8B0
+ ldr r1, [sp, 0x28]
+ adds r0, r7, 0
+ bl sub_800A020
+ add r4, sp, 0x20
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl sub_800A020
+ adds r0, r7, 0
+ adds r1, r7, 0
+ adds r2, r4, 0
+ bl sub_800A3F0
+ ldr r0, [sp, 0x28]
+_0806EF60:
+ movs r1, 0x3
+ bl __divsi3
+ adds r6, r0, 0
+ add r5, sp, 0x30
+ adds r0, r5, 0
+ mov r1, r8
+ adds r2, r7, 0
+ bl sub_800A6D0
+ ldr r4, _0806F098
+ ldr r0, [r4]
+ movs r1, 0xA5
+ lsls r1, 1
+ adds r0, r1
+ movs r2, 0
+ mov r8, r2
+ strh r6, [r0]
+ adds r0, r5, 0
+ bl sub_800A048
+ ldr r1, [r4]
+ movs r3, 0xA6
+ lsls r3, 1
+ adds r1, r3
+ strh r0, [r1]
+ ldr r0, [sp, 0x30]
+ ldr r1, [sp, 0x34]
+ str r0, [sp, 0x38]
+ str r1, [sp, 0x3C]
+ str r0, [sp, 0x48]
+ str r1, [sp, 0x4C]
+ add r6, sp, 0x38
+ adds r0, r6, 0
+ adds r1, r6, 0
+ adds r2, r6, 0
+ bl sub_800A34C
+ mov r0, r8
+ str r0, [sp, 0x40]
+ ldr r0, _0806F09C
+ add r5, sp, 0x40
+ str r0, [r5, 0x4]
+ adds r0, r6, 0
+ adds r1, r6, 0
+ adds r2, r5, 0
+ bl sub_800A34C
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl sub_800A020
+ add r4, sp, 0x48
+ adds r0, r4, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_800A34C
+ ldr r1, [sp, 0xC]
+ adds r0, r5, 0
+ bl sub_800A020
+ adds r0, r4, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_800A6F0
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl sub_800A020
+ adds r0, r4, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_800A6D0
+ add r5, sp, 0x50
+ adds r0, r5, 0
+ adds r1, r6, 0
+ adds r2, r4, 0
+ bl sub_800A6D0
+ ldr r4, _0806F0A0
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_800A2F0
+ lsls r0, 24
+ mov r8, r5
+ cmp r0, 0
+ beq _0806F01E
+ ldr r0, [r4]
+ ldr r1, [r4, 0x4]
+ str r0, [sp, 0x50]
+ str r1, [sp, 0x54]
+_0806F01E:
+ ldr r4, _0806F0A4
+ mov r0, r8
+ adds r1, r4, 0
+ bl sub_800A2F0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F036
+ ldr r0, [r4]
+ ldr r1, [r4, 0x4]
+ str r0, [sp, 0x50]
+ str r1, [sp, 0x54]
+_0806F036:
+ add r4, sp, 0x58
+ ldr r1, [sp, 0xB0]
+ str r1, [sp]
+ adds r0, r4, 0
+ ldr r1, [sp, 0x70]
+ mov r2, r9
+ ldr r3, [sp, 0x74]
+ bl sub_806E100
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r7, r4, 0
+ ldr r2, [sp, 0x74]
+ cmp r2, 0x2
+ bne _0806F0BC
+ mov r0, r9
+ bl GetFlashFireStatus
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _0806F0BC
+ ldr r3, [sp, 0x7C]
+ movs r6, 0xA9
+ lsls r6, 1
+ adds r1, r3, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0806F0BC
+ ldr r0, [sp, 0x78]
+ cmp r0, 0
+ beq _0806F118
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _0806F0A8
+ mov r1, r9
+ movs r2, 0
+ bl SetMessageArgument
+ cmp r4, 0x1
+ bne _0806F0B0
+ ldr r0, _0806F0AC
+ ldr r2, [r0]
+ ldr r0, [sp, 0x70]
+ mov r1, r9
+ bl sub_80522F4
+ b _0806F0BC
+ .align 2, 0
+_0806F098: .4byte gDungeonGlobalData
+_0806F09C: .4byte 0x00000ccc
+_0806F0A0: .4byte gUnknown_8106F24
+_0806F0A4: .4byte gUnknown_8106F04
+_0806F0A8: .4byte gUnknown_202DFE8
+_0806F0AC: .4byte gUnknown_80FAE00
+_0806F0B0:
+ ldr r0, _0806F15C
+ ldr r2, [r0]
+ ldr r0, [sp, 0x70]
+ mov r1, r9
+ bl sub_80522F4
+_0806F0BC:
+ ldr r1, [sp, 0x78]
+ cmp r1, 0
+ beq _0806F118
+ ldr r2, [sp, 0x80]
+ cmp r2, 0
+ bne _0806F0EE
+ ldr r0, [sp, 0x7C]
+ adds r0, 0xC4
+ ldrb r4, [r0]
+ cmp r4, 0x1
+ bne _0806F0EE
+ mov r0, r9
+ bl sub_8041B74
+ ldr r2, _0806F160
+ adds r0, r7, 0
+ adds r1, r7, 0
+ bl sub_800A34C
+ ldr r0, _0806F164
+ ldr r0, [r0]
+ movs r3, 0xB3
+ lsls r3, 1
+ adds r0, r3
+ strb r4, [r0]
+_0806F0EE:
+ ldr r6, [sp, 0x80]
+ cmp r6, 0x1
+ bne _0806F118
+ ldr r0, [sp, 0x7C]
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0806F118
+ mov r0, r9
+ bl sub_8041B5C
+ ldr r2, _0806F160
+ adds r0, r7, 0
+ adds r1, r7, 0
+ bl sub_800A34C
+ ldr r0, _0806F164
+ ldr r0, [r0]
+ ldr r1, _0806F168
+ adds r0, r1
+ strb r6, [r0]
+_0806F118:
+ mov r0, r9
+ movs r1, 0xC
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F1F4
+ mov r0, r9
+ movs r1, 0x13
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F1F4
+ mov r3, r10
+ ldrb r0, [r3, 0x6]
+ ldr r4, [sp, 0xAC]
+ cmp r0, 0
+ beq _0806F140
+ movs r4, 0
+_0806F140:
+ mov r0, r10
+ adds r0, 0xDC
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bne _0806F170
+ ldr r4, _0806F16C
+ ldr r0, _0806F164
+ ldr r0, [r0]
+ movs r6, 0xB4
+ lsls r6, 1
+ adds r0, r6
+ movs r1, 0x1
+ strb r1, [r0]
+ b _0806F1DA
+ .align 2, 0
+_0806F15C: .4byte gUnknown_80FADD8
+_0806F160: .4byte gUnknown_8106F1C
+_0806F164: .4byte gDungeonGlobalData
+_0806F168: .4byte 0x00000167
+_0806F16C: .4byte 0x000003e7
+_0806F170:
+ ldr r0, [sp, 0x70]
+ movs r1, 0xC
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F194
+ ldr r0, _0806F2A4
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ adds r4, r0
+ ldr r0, _0806F2A8
+ ldr r0, [r0]
+ movs r2, 0xB2
+ lsls r2, 1
+ adds r0, r2
+ movs r1, 0x1
+ strb r1, [r0]
+_0806F194:
+ mov r0, r9
+ movs r1, 0xD
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F1B6
+ ldr r0, _0806F2A4
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ adds r4, r0
+ ldr r0, _0806F2A8
+ ldr r0, [r0]
+ ldr r6, _0806F2AC
+ adds r1, r0, r6
+ movs r0, 0x1
+ strb r0, [r1]
+_0806F1B6:
+ cmp r5, 0
+ beq _0806F1DA
+ ldr r0, [sp, 0x70]
+ movs r1, 0x1
+ bl HasIQSkill
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F1DA
+ ldr r0, _0806F2B0
+ movs r1, 0
+ ldrsh r4, [r0, r1]
+ ldr r0, _0806F2A8
+ ldr r0, [r0]
+ ldr r2, _0806F2B4
+ adds r1, r0, r2
+ movs r0, 0x1
+ strb r0, [r1]
+_0806F1DA:
+ movs r0, 0x64
+ bl DungeonRandomCapped
+ cmp r0, r4
+ bge _0806F1F4
+ ldr r2, _0806F2B8
+ adds r0, r7, 0
+ adds r1, r7, 0
+ bl sub_800A34C
+ movs r0, 0x1
+ ldr r3, [sp, 0xB0]
+ strb r0, [r3, 0xD]
+_0806F1F4:
+ mov r0, r8
+ bl sub_800A048
+ ldr r5, _0806F2A8
+ ldr r1, [r5]
+ movs r6, 0xAA
+ lsls r6, 1
+ adds r1, r6
+ str r0, [r1]
+ mov r0, r8
+ mov r1, r8
+ adds r2, r7, 0
+ bl sub_800A34C
+ ldr r0, [r5]
+ movs r1, 0xAE
+ lsls r1, 1
+ adds r0, r1
+ ldr r2, [sp, 0xB4]
+ str r2, [r0]
+ add r4, sp, 0x60
+ adds r0, r4, 0
+ adds r1, r2, 0
+ bl sub_800A088
+ mov r0, r8
+ mov r1, r8
+ adds r2, r4, 0
+ bl sub_800A34C
+ mov r0, r8
+ bl sub_800A048
+ ldr r1, [r5]
+ movs r3, 0xA8
+ lsls r3, 1
+ adds r1, r3
+ str r0, [r1]
+ movs r0, 0x80
+ lsls r0, 7
+ bl DungeonRandomCapped
+ movs r6, 0
+ str r6, [sp, 0x58]
+ movs r1, 0xE0
+ lsls r1, 8
+ adds r0, r1
+ str r0, [r7, 0x4]
+ mov r0, r8
+ mov r1, r8
+ adds r2, r7, 0
+ bl sub_800A34C
+ add r4, sp, 0x68
+ adds r0, r4, 0
+ movs r1, 0x64
+ bl sub_800A020
+ adds r0, r7, 0
+ adds r1, r4, 0
+ adds r2, r7, 0
+ bl sub_800A34C
+ adds r0, r7, 0
+ bl sub_800A048
+ ldr r1, [r5]
+ movs r2, 0xAC
+ lsls r2, 1
+ adds r1, r2
+ str r0, [r1]
+ mov r0, r8
+ bl sub_800A048
+ ldr r3, [sp, 0xB0]
+ str r0, [r3]
+ str r6, [r3, 0x4]
+ cmp r0, 0
+ bne _0806F294
+ strb r0, [r3, 0xD]
+_0806F294:
+ add sp, 0x8C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806F2A4: .4byte gUnknown_80F4DAE
+_0806F2A8: .4byte gDungeonGlobalData
+_0806F2AC: .4byte 0x00000165
+_0806F2B0: .4byte gUnknown_80F4DB0
+_0806F2B4: .4byte 0x00000169
+_0806F2B8: .4byte gUnknown_8106F14
+ thumb_func_end sub_806EAF4
+
+ thumb_func_start sub_806F2BC
+sub_806F2BC:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ adds r5, r0, 0
+ mov r12, r1
+ ldr r7, [sp, 0x2C]
+ lsls r2, 24
+ lsrs r4, r2, 24
+ adds r6, r3, 0
+ cmp r6, 0
+ bgt _0806F2D6
+ movs r6, 0x1
+_0806F2D6:
+ ldr r0, _0806F320
+ cmp r6, r0
+ ble _0806F2DE
+ adds r6, r0, 0
+_0806F2DE:
+ movs r0, 0
+ mov r8, r0
+ strb r4, [r7, 0xC]
+ str r7, [sp]
+ add r0, sp, 0x4
+ adds r1, r5, 0
+ mov r2, r12
+ adds r3, r4, 0
+ bl sub_806E100
+ add r4, sp, 0xC
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_800A020
+ adds r0, r4, 0
+ adds r1, r4, 0
+ add r2, sp, 0x4
+ bl sub_800A34C
+ adds r0, r4, 0
+ bl sub_800A048
+ str r0, [r7]
+ mov r0, r8
+ str r0, [r7, 0x4]
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806F320: .4byte 0x000003e7
+ thumb_func_end sub_806F2BC
+
+ thumb_func_start sub_806F324
+sub_806F324:
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x94
+ mov r8, r0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r4, r3, 16
+ asrs r4, 16
+ add r0, sp, 0x10
+ bl sub_80457DC
+ add r2, sp, 0x84
+ str r5, [sp, 0x84]
+ movs r0, 0x2
+ str r0, [r2, 0x8]
+ movs r0, 0
+ strb r0, [r2, 0xC]
+ str r6, [r2, 0x4]
+ strb r0, [r2, 0xD]
+ strb r0, [r2, 0xE]
+ strb r0, [r2, 0xF]
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r0, [sp, 0xC]
+ add r0, sp, 0x10
+ mov r1, r8
+ movs r3, 0
+ bl sub_806D010
+ add sp, 0x94
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806F324
+
+ thumb_func_start sub_806F370
+sub_806F370:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ mov r10, r0
+ adds r7, r1, 0
+ mov r9, r3
+ ldr r0, [sp, 0x50]
+ ldr r1, [sp, 0x54]
+ ldr r3, [sp, 0x58]
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 16
+ asrs r1, 16
+ mov r8, r1
+ adds r5, r2, 0
+ movs r0, 0x2
+ str r0, [sp, 0x18]
+ str r3, [sp, 0x14]
+ add r0, sp, 0x10
+ movs r1, 0
+ strb r4, [r0, 0xC]
+ strb r1, [r0, 0xD]
+ strb r1, [r0, 0xE]
+ cmp r4, 0
+ beq _0806F3FC
+ ldr r1, [r7, 0x70]
+ movs r2, 0
+ lsls r0, r4, 3
+ mov r3, sp
+ adds r3, 0x20
+ str r3, [sp, 0x28]
+ ldr r6, _0806F408
+ mov r12, r6
+ adds r1, 0x5C
+ adds r0, r4
+ lsls r3, r0, 2
+ ldr r4, [sp, 0x28]
+_0806F3C0:
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r3
+ add r0, r12
+ movs r6, 0
+ ldrsh r0, [r0, r6]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0x1
+ ble _0806F3C0
+ adds r0, r7, 0
+ movs r1, 0x35
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F3FC
+ ldr r2, _0806F40C
+ ldr r1, [sp, 0x28]
+ ldr r0, [r1, 0x4]
+ lsls r0, 2
+ ldr r1, [sp, 0x20]
+ lsls r1, 4
+ adds r0, r1
+ adds r0, r2
+ ldr r0, [r0]
+ cmp r0, 0x3
+ beq _0806F3FC
+ movs r5, 0
+_0806F3FC:
+ str r5, [sp, 0x10]
+ cmp r5, 0
+ bne _0806F410
+ add r1, sp, 0x10
+ movs r0, 0x1
+ b _0806F414
+ .align 2, 0
+_0806F408: .4byte gTypeEffectivenessChart
+_0806F40C: .4byte gUnknown_80F54B4
+_0806F410:
+ add r1, sp, 0x10
+ movs r0, 0
+_0806F414:
+ strb r0, [r1, 0xF]
+ mov r3, r9
+ str r3, [sp]
+ mov r6, r8
+ str r6, [sp, 0x4]
+ ldr r0, [sp, 0x5C]
+ str r0, [sp, 0x8]
+ ldr r0, [sp, 0x60]
+ str r0, [sp, 0xC]
+ mov r0, r10
+ adds r1, r7, 0
+ add r2, sp, 0x10
+ movs r3, 0
+ bl sub_806D010
+ ldr r0, [sp, 0x4C]
+ cmp r0, 0
+ beq _0806F440
+ add r0, sp, 0x10
+ ldrb r0, [r0, 0xF]
+ ldr r1, [sp, 0x4C]
+ strb r0, [r1]
+_0806F440:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806F370
+
+ thumb_func_start SetShopkeeperAggression
+SetShopkeeperAggression:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r4, [r1, 0x70]
+ adds r6, r4, 0
+ ldrb r0, [r4, 0x8]
+ cmp r0, 0
+ beq _0806F47A
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _0806F47A
+ ldr r0, [r5, 0x70]
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ beq _0806F476
+ movs r0, 0x2
+ strb r0, [r4, 0x8]
+ b _0806F47A
+_0806F476:
+ movs r0, 0x3
+ strb r0, [r6, 0x8]
+_0806F47A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end SetShopkeeperAggression
+
+ thumb_func_start sub_806F480
+sub_806F480:
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, [r0, 0x70]
+ adds r3, r2, 0
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0806F49E
+ cmp r1, 0
+ beq _0806F49A
+ movs r0, 0x2
+ strb r0, [r2, 0x8]
+ b _0806F49E
+_0806F49A:
+ movs r0, 0x3
+ strb r0, [r3, 0x8]
+_0806F49E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_806F480
+
+ thumb_func_start sub_806F4A4
+sub_806F4A4:
+ push {r4-r6,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r5, [r0, 0x70]
+ movs r1, 0xE
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F4CE
+ cmp r4, 0x1
+ beq _0806F4C0
+ cmp r4, 0x7
+ bne _0806F4CE
+_0806F4C0:
+ adds r0, r5, 0
+ adds r0, 0xF5
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806F4CE
+_0806F4CA:
+ movs r0, 0
+ b _0806F4F6
+_0806F4CE:
+ movs r2, 0
+ lsls r0, r4, 3
+ ldr r6, _0806F4FC
+ adds r3, r5, 0
+ adds r3, 0x5C
+ adds r0, r4
+ lsls r1, r0, 2
+_0806F4DC:
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ adds r0, r6
+ movs r4, 0
+ ldrsh r0, [r0, r4]
+ cmp r0, 0
+ beq _0806F4CA
+ adds r2, 0x1
+ cmp r2, 0x1
+ ble _0806F4DC
+ movs r0, 0x1
+_0806F4F6:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806F4FC: .4byte gTypeEffectivenessChart
+ thumb_func_end sub_806F4A4
+
+ thumb_func_start sub_806F500
+sub_806F500:
+ ldr r0, _0806F5F4
+ ldr r0, [r0]
+ mov r12, r0
+ movs r0, 0x9A
+ lsls r0, 1
+ add r0, r12
+ movs r1, 0
+ strb r1, [r0]
+ str r1, [r0, 0x4]
+ strb r1, [r0, 0x8]
+ strb r1, [r0, 0x9]
+ movs r2, 0xA
+ strb r2, [r0, 0xA]
+ strb r2, [r0, 0xB]
+ movs r2, 0
+ movs r3, 0x1
+ strh r3, [r0, 0xC]
+ strh r3, [r0, 0xE]
+ strh r1, [r0, 0x10]
+ strh r1, [r0, 0x14]
+ strh r1, [r0, 0x12]
+ strh r1, [r0, 0x16]
+ strh r1, [r0, 0x18]
+ str r1, [r0, 0x1C]
+ str r1, [r0, 0x24]
+ str r1, [r0, 0x28]
+ movs r0, 0xB0
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F5F8
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB1
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F5FC
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB2
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F600
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB3
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F604
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB4
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F608
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB5
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB6
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F60C
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F610
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB7
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F614
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB8
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F618
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xB9
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F61C
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xBA
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F620
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xBB
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F624
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xBC
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ ldr r0, _0806F628
+ add r0, r12
+ strb r2, [r0]
+ movs r0, 0xBD
+ lsls r0, 1
+ add r0, r12
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+_0806F5F4: .4byte gDungeonGlobalData
+_0806F5F8: .4byte 0x00000161
+_0806F5FC: .4byte 0x00000163
+_0806F600: .4byte 0x00000165
+_0806F604: .4byte 0x00000167
+_0806F608: .4byte 0x00000169
+_0806F60C: .4byte 0x0000016b
+_0806F610: .4byte 0x0000016d
+_0806F614: .4byte 0x0000016f
+_0806F618: .4byte 0x00000171
+_0806F61C: .4byte 0x00000173
+_0806F620: .4byte 0x00000175
+_0806F624: .4byte 0x00000177
+_0806F628: .4byte 0x00000179
+ thumb_func_end sub_806F500
+
+ thumb_func_start sub_806F62C
+sub_806F62C:
+ ldr r1, _0806F638
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_0806F638: .4byte gUnknown_8106F7C
+ thumb_func_end sub_806F62C
+
+ thumb_func_start sub_806F63C
+sub_806F63C:
+ push {lr}
+ ldr r1, _0806F658
+ ldr r1, [r1]
+ ldr r2, _0806F65C
+ adds r1, r2
+ ldr r1, [r1, 0x10]
+ cmp r1, r0
+ bne _0806F652
+ adds r0, r1, 0
+ bl sub_803F508
+_0806F652:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806F658: .4byte gDungeonGlobalData
+_0806F65C: .4byte 0x000181e8
+ thumb_func_end sub_806F63C
+
+ thumb_func_start sub_806F660
+sub_806F660:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ mov r8, r1
+ ldr r0, [r6, 0x70]
+ mov r10, r0
+ ldr r4, [r1, 0x70]
+ movs r1, 0x1
+ negs r1, r1
+ mov r9, r1
+ movs r2, 0x4
+ ldrsh r0, [r4, r2]
+ bl GetPokemonSize
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _0806F6C0
+ ldr r3, [r0]
+ ldr r1, _0806F6C4
+ adds r0, r3, r1
+ ldrh r2, [r0]
+ subs r0, r2, 0x4
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bls _0806F702
+ lsls r0, r2, 16
+ asrs r1, r0, 16
+ cmp r1, 0x9
+ beq _0806F702
+ cmp r1, 0xF
+ beq _0806F702
+ adds r0, r2, 0
+ subs r0, 0x2C
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x4
+ bhi _0806F6CC
+ ldr r2, _0806F6C8
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806F702
+ b _0806F8FC
+ .align 2, 0
+_0806F6C0: .4byte gDungeonGlobalData
+_0806F6C4: .4byte 0x00003a14
+_0806F6C8: .4byte 0x0000065c
+_0806F6CC:
+ cmp r1, 0x31
+ bne _0806F6F0
+ ldr r1, _0806F6EC
+ adds r0, r3, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0806F6DC
+ b _0806F8FC
+_0806F6DC:
+ movs r0, 0xCF
+ lsls r0, 1
+ bl sub_8097900
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F702
+ b _0806F8FC
+ .align 2, 0
+_0806F6EC: .4byte 0x00000659
+_0806F6F0:
+ ldr r2, _0806F834
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ bl GetRecruitable
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F702
+ b _0806F8FC
+_0806F702:
+ ldr r0, _0806F838
+ ldr r0, [r0]
+ ldr r3, _0806F83C
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806F712
+ b _0806F8FC
+_0806F712:
+ ldrh r1, [r4, 0x2]
+ adds r0, r1, 0
+ subs r0, 0x90
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x2
+ bls _0806F766
+ lsls r0, r1, 16
+ asrs r1, r0, 16
+ ldr r0, _0806F840
+ cmp r1, r0
+ beq _0806F766
+ subs r0, 0x1
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x2
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x8A
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x1
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x4
+ cmp r1, r0
+ beq _0806F766
+ subs r0, 0x1
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x2
+ cmp r1, r0
+ beq _0806F766
+ subs r0, 0x9
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x1
+ cmp r1, r0
+ beq _0806F766
+ adds r0, 0x1
+ cmp r1, r0
+ bne _0806F776
+_0806F766:
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ bl HasRecruitedMon
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F776
+ b _0806F8FC
+_0806F776:
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ bl sub_806F9BC
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F786
+ b _0806F8FC
+_0806F786:
+ movs r3, 0x4
+ ldrsh r1, [r6, r3]
+ mov r2, r8
+ movs r3, 0x4
+ ldrsh r0, [r2, r3]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806F798
+ negs r1, r1
+_0806F798:
+ cmp r1, 0x1
+ ble _0806F79E
+ b _0806F8FC
+_0806F79E:
+ movs r0, 0x6
+ ldrsh r1, [r6, r0]
+ mov r2, r8
+ movs r3, 0x6
+ ldrsh r0, [r2, r3]
+ subs r1, r0
+ cmp r1, 0
+ bge _0806F7B0
+ negs r1, r1
+_0806F7B0:
+ cmp r1, 0x1
+ ble _0806F7B6
+ b _0806F8FC
+_0806F7B6:
+ adds r0, r4, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x4A
+ bne _0806F7C2
+ b _0806F8FC
+_0806F7C2:
+ adds r0, r4, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0806F7CE
+ b _0806F8FC
+_0806F7CE:
+ mov r0, r8
+ adds r1, r6, 0
+ bl CanSee
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F7DE
+ b _0806F8FC
+_0806F7DE:
+ bl sub_806F910
+ movs r0, 0xFA
+ lsls r0, 2
+ bl DungeonRandomCapped
+ adds r7, r0, 0
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ bl GetBaseRecruit
+ lsls r0, 16
+ asrs r4, r0, 16
+ ldr r0, _0806F844
+ cmp r4, r0
+ bne _0806F800
+ b _0806F8FC
+_0806F800:
+ adds r0, r6, 0
+ movs r1, 0x2E
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806F816
+ ldr r0, _0806F848
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ adds r4, r0
+_0806F816:
+ ldr r0, _0806F84C
+ mov r3, r10
+ ldrb r1, [r3, 0x9]
+ lsls r1, 1
+ adds r1, r0
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ adds r4, r0
+ cmp r7, r4
+ bge _0806F8FC
+ movs r4, 0
+ movs r0, 0x6
+ subs r3, r0, r5
+ ldr r7, _0806F850
+ b _0806F856
+ .align 2, 0
+_0806F834: .4byte 0x00000644
+_0806F838: .4byte gDungeonGlobalData
+_0806F83C: .4byte 0x0000065d
+_0806F840: .4byte 0x0000010d
+_0806F844: .4byte 0xfffffc19
+_0806F848: .4byte gUnknown_80F5008
+_0806F84C: .4byte gUnknown_80F5700
+_0806F850: .4byte gUnknown_202EE70
+_0806F854:
+ adds r4, 0x1
+_0806F856:
+ cmp r4, r3
+ bgt _0806F878
+ movs r2, 0
+ cmp r2, r5
+ bge _0806F872
+ adds r1, r4, r7
+ b _0806F86C
+_0806F864:
+ adds r1, 0x1
+ adds r2, 0x1
+ cmp r2, r5
+ bge _0806F872
+_0806F86C:
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0806F864
+_0806F872:
+ cmp r2, r5
+ bne _0806F854
+ mov r9, r4
+_0806F878:
+ movs r0, 0x1
+ negs r0, r0
+ cmp r9, r0
+ beq _0806F8F4
+ movs r4, 0
+ ldr r3, _0806F8BC
+ ldr r0, [r3]
+ ldr r2, _0806F8C0
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806F8B4
+ adds r7, r3, 0
+ adds r5, r2, 0
+ movs r2, 0
+ movs r3, 0x1
+_0806F89C:
+ adds r2, 0x64
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _0806F8B4
+ ldr r0, [r7]
+ adds r0, r2, r0
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806F89C
+_0806F8B4:
+ cmp r4, 0x4
+ beq _0806F8F4
+ movs r4, 0
+ b _0806F8C6
+ .align 2, 0
+_0806F8BC: .4byte gRecruitedPokemonRef
+_0806F8C0: .4byte 0x00008df8
+_0806F8C4:
+ adds r4, 0x1
+_0806F8C6:
+ cmp r4, 0x3
+ bgt _0806F8E2
+ ldr r0, _0806F8EC
+ ldr r0, [r0]
+ lsls r1, r4, 2
+ ldr r3, _0806F8F0
+ adds r0, r3
+ adds r0, r1
+ ldr r0, [r0]
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806F8C4
+_0806F8E2:
+ cmp r4, 0x4
+ beq _0806F8F4
+ movs r0, 0x1
+ b _0806F8FE
+ .align 2, 0
+_0806F8EC: .4byte gDungeonGlobalData
+_0806F8F0: .4byte 0x0001357c
+_0806F8F4:
+ adds r0, r6, 0
+ mov r1, r8
+ bl nullsub_96
+_0806F8FC:
+ movs r0, 0
+_0806F8FE:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806F660
+
+ thumb_func_start nullsub_96
+nullsub_96:
+ bx lr
+ thumb_func_end nullsub_96
+
+ thumb_func_start sub_806F910
+sub_806F910:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r5, 0
+ movs r6, 0
+ movs r7, 0x40
+_0806F91C:
+ ldr r0, _0806F9AC
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r2, _0806F9B0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ adds r1, r6, 0x1
+ mov r8, r1
+ cmp r0, 0
+ beq _0806F98A
+ ldr r0, [r4, 0x70]
+ movs r2, 0x4
+ ldrsh r0, [r0, r2]
+ bl GetPokemonSize
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r0, r4, 0
+ adds r0, 0x68
+ strh r7, [r0]
+ ldr r0, [r4, 0x70]
+ ldr r2, _0806F9B4
+ adds r0, r2
+ strb r6, [r0]
+ ldr r0, [r4, 0x70]
+ adds r2, 0x1
+ adds r0, r2
+ strb r1, [r0]
+ cmp r1, 0
+ beq _0806F978
+ ldr r3, _0806F9B8
+ movs r2, 0x1
+_0806F966:
+ cmp r5, 0x5
+ bgt _0806F972
+ adds r0, r5, r3
+ strb r2, [r0]
+ adds r7, 0x10
+ adds r5, 0x1
+_0806F972:
+ subs r1, 0x1
+ cmp r1, 0
+ bne _0806F966
+_0806F978:
+ adds r0, r4, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_806CCB4
+_0806F98A:
+ mov r6, r8
+ cmp r6, 0x3
+ ble _0806F91C
+ cmp r5, 0x5
+ bgt _0806F9A2
+ ldr r2, _0806F9B8
+ movs r1, 0
+_0806F998:
+ adds r0, r5, r2
+ strb r1, [r0]
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _0806F998
+_0806F9A2:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0806F9AC: .4byte gDungeonGlobalData
+_0806F9B0: .4byte 0x0001357c
+_0806F9B4: .4byte 0x00000167
+_0806F9B8: .4byte gUnknown_202EE70
+ thumb_func_end sub_806F910
+
+ thumb_func_start sub_806F9BC
+sub_806F9BC:
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 16
+ asrs r4, r0, 16
+ ldr r5, _0806FA40
+ ldr r0, [r5]
+ movs r1, 0xCB
+ lsls r1, 3
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0806FA3C
+ adds r0, r4, 0
+ bl sub_808529C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806FA3C
+ cmp r4, 0x97
+ bne _0806F9F2
+ ldr r0, [r5]
+ movs r1, 0xCF
+ lsls r1, 3
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0806FA3C
+_0806F9F2:
+ movs r0, 0xCC
+ lsls r0, 1
+ cmp r4, r0
+ beq _0806FA3C
+ ldr r0, _0806FA44
+ cmp r4, r0
+ beq _0806FA3C
+ ldr r0, _0806FA48
+ cmp r4, r0
+ beq _0806FA3C
+ movs r0, 0xD1
+ lsls r0, 1
+ cmp r4, r0
+ beq _0806FA3C
+ ldr r0, _0806FA4C
+ cmp r4, r0
+ beq _0806FA3C
+ adds r0, r4, 0
+ bl GetUnk12
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806FA50
+ adds r0, r4, 0
+ bl GetFriendArea
+ lsls r0, 24
+ lsrs r0, 24
+ mov r1, sp
+ movs r2, 0
+ movs r3, 0
+ bl sub_8092638
+ mov r0, sp
+ ldrb r0, [r0, 0x4]
+ cmp r0, 0
+ bne _0806FA50
+_0806FA3C:
+ movs r0, 0
+ b _0806FA52
+ .align 2, 0
+_0806FA40: .4byte gDungeonGlobalData
+_0806FA44: .4byte 0x00000199
+_0806FA48: .4byte 0x000001a1
+_0806FA4C: .4byte 0x000001a3
+_0806FA50:
+ movs r0, 0x1
+_0806FA52:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806F9BC
+
+ thumb_func_start sub_806FA5C
+sub_806FA5C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ mov r8, r0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ adds r0, r5, 0x4
+ mov r1, r8
+ adds r1, 0x4
+ bl CalculateFacingDir
+ adds r4, r0, 0
+ movs r0, 0
+ mov r10, r0
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ bl GetFriendArea
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ adds r0, r5, 0
+ adds r0, 0x22
+ mov r2, r10
+ strb r2, [r0]
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_807A0CC
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_806CE68
+ ldr r0, _0806FAD4
+ movs r3, 0
+ ldrsh r1, [r6, r3]
+ bl CopyCyanSpeciesNametoBuffer
+ ldr r0, _0806FAD8
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl sub_8052B8C
+ cmp r0, 0
+ bne _0806FAE4
+ movs r4, 0
+ ldrsh r1, [r6, r4]
+ ldr r0, _0806FADC
+ cmp r1, r0
+ beq _0806FB28
+ ldr r0, _0806FAE0
+ ldr r1, [r0]
+ mov r0, r8
+ bl SendMessage
+ b _0806FB28
+ .align 2, 0
+_0806FAD4: .4byte gAvailablePokemonNames
+_0806FAD8: .4byte gUnknown_80F9FE8
+_0806FADC: .4byte 0x0000019d
+_0806FAE0: .4byte gUnknown_80FA004
+_0806FAE4:
+ movs r7, 0
+ ldr r3, _0806FB2C
+ ldr r0, [r3]
+ ldr r2, _0806FB30
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806FB1A
+ mov r12, r3
+ adds r4, r2, 0
+ movs r2, 0
+ movs r3, 0x1
+_0806FB00:
+ adds r2, 0x64
+ adds r7, 0x1
+ cmp r7, 0x3
+ bgt _0806FB1A
+ mov r1, r12
+ ldr r0, [r1]
+ adds r0, r2, r0
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806FB00
+_0806FB1A:
+ cmp r7, 0x4
+ bne _0806FB38
+ ldr r0, _0806FB34
+ ldr r1, [r0]
+ mov r0, r8
+ bl SendMessage
+_0806FB28:
+ movs r0, 0
+ b _0806FCF0
+ .align 2, 0
+_0806FB2C: .4byte gRecruitedPokemonRef
+_0806FB30: .4byte 0x00008df8
+_0806FB34: .4byte gUnknown_80FA030
+_0806FB38:
+ mov r0, r9
+ bl GetFriendAreaStatus
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806FB4E
+ mov r0, r9
+ bl UnlockFriendArea
+ movs r2, 0x1
+ mov r10, r2
+_0806FB4E:
+ movs r1, 0xFA
+ lsls r1, 1
+ adds r0, r5, 0
+ mov r2, r8
+ bl sub_8068FE0
+ ldr r1, _0806FC40
+ movs r0, 0x64
+ muls r0, r7
+ ldr r3, _0806FC44
+ adds r0, r3
+ ldr r1, [r1]
+ adds r5, r1, r0
+ movs r4, 0
+ movs r0, 0x3
+ strh r0, [r5]
+ strb r4, [r5, 0x2]
+ ldrh r0, [r6, 0xE]
+ strb r0, [r5, 0x3]
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ adds r0, r5, 0
+ adds r0, 0x4C
+ movs r1, 0
+ bl SetDefaultIQSkills
+ ldr r0, [r6, 0x44]
+ str r0, [r5, 0x54]
+ adds r0, r5, 0
+ adds r0, 0x50
+ strb r4, [r0]
+ ldr r0, _0806FC48
+ strh r0, [r5, 0xA]
+ strh r7, [r5, 0xC]
+ ldrh r0, [r6]
+ strh r0, [r5, 0xE]
+ ldr r0, _0806FC4C
+ ldr r0, [r0]
+ ldr r4, _0806FC50
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [r5, 0x4]
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x10]
+ ldrh r0, [r6, 0x8]
+ strh r0, [r5, 0x12]
+ ldr r0, [r6, 0x14]
+ str r0, [r5, 0x44]
+ ldr r0, [r6, 0x18]
+ str r0, [r5, 0x48]
+ movs r2, 0
+ adds r7, r6, 0
+ adds r7, 0x20
+ adds r4, r6, 0
+ adds r4, 0xA
+ adds r3, r6, 0
+ adds r3, 0xC
+ adds r1, r5, 0
+ adds r1, 0x14
+_0806FBC4:
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x2]
+ adds r1, 0x1
+ adds r2, 0x1
+ cmp r2, 0x1
+ ble _0806FBC4
+ ldr r0, [r6, 0x10]
+ str r0, [r5, 0x18]
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r7, 0
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldr r0, [r6, 0x1C]
+ str r0, [r5, 0x40]
+ adds r4, r5, 0
+ adds r4, 0x58
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ bl GetMonSpecies
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0xA
+ bl BoundedCopyStringtoBuffer
+ bl sub_8097848
+ movs r2, 0
+ ldrsh r0, [r6, r2]
+ movs r3, 0x4
+ ldrsh r1, [r6, r3]
+ movs r3, 0x6
+ ldrsh r2, [r6, r3]
+ add r3, sp, 0xC
+ str r3, [sp]
+ movs r3, 0
+ str r3, [sp, 0x4]
+ movs r3, 0x1
+ str r3, [sp, 0x8]
+ adds r3, r5, 0
+ bl sub_806B8CC
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0
+ bne _0806FC58
+ ldr r0, _0806FC54
+ ldr r1, [r0]
+ mov r0, r8
+ bl SendMessage
+ strh r7, [r5]
+ b _0806FCEE
+ .align 2, 0
+_0806FC40: .4byte gRecruitedPokemonRef
+_0806FC44: .4byte 0x00008df8
+_0806FC48: .4byte 0x0000ffff
+_0806FC4C: .4byte gDungeonGlobalData
+_0806FC50: .4byte 0x00000644
+_0806FC54: .4byte gUnknown_80FA058
+_0806FC58:
+ bl sub_8083D88
+ movs r0, 0xA0
+ movs r1, 0x46
+ bl sub_803E708
+ ldr r0, _0806FC78
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl sub_8052B8C
+ cmp r0, 0x1
+ bne _0806FC94
+ b _0806FC88
+ .align 2, 0
+_0806FC78: .4byte gUnknown_80FA090
+_0806FC7C:
+ ldr r0, _0806FD00
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl PrintFieldMessage
+_0806FC88:
+ adds r0, r4, 0
+ bl sub_805FBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806FC7C
+_0806FC94:
+ ldr r4, _0806FD04
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0
+ bl sub_808D9DC
+ ldr r0, _0806FD08
+ ldr r1, [r0]
+ mov r0, r8
+ bl SendMessage
+ mov r0, r10
+ cmp r0, 0
+ beq _0806FCD8
+ bl xxx_call_GetLeaderEntity
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0806FD0C
+ mov r1, r9
+ bl sub_8092558
+ movs r0, 0xCE
+ bl PlaySound
+ ldr r0, _0806FD10
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl PrintFieldMessage
+_0806FCD8:
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x97
+ bne _0806FCEE
+ ldr r2, _0806FD14
+ ldr r1, [r2]
+ movs r0, 0x1
+ strb r0, [r1, 0x4]
+ ldr r1, [r2]
+ movs r0, 0x3
+ strb r0, [r1, 0x11]
+_0806FCEE:
+ movs r0, 0x1
+_0806FCF0:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0806FD00: .4byte gUnknown_80FA0C8
+_0806FD04: .4byte gAvailablePokemonNames
+_0806FD08: .4byte gUnknown_80FA0F0
+_0806FD0C: .4byte gUnknown_202E628
+_0806FD10: .4byte gUnknown_80FA120
+_0806FD14: .4byte gDungeonGlobalData
+ thumb_func_end sub_806FA5C
+
+ thumb_func_start sub_806FD18
+sub_806FD18:
+ push {r4-r7,lr}
+ ldr r4, [r0, 0x70]
+ movs r6, 0x1
+ negs r6, r6
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ bl GetPokemonSize
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ bl sub_806F9BC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806FDEC
+ bl sub_806F910
+ movs r4, 0
+ movs r0, 0x6
+ subs r3, r0, r5
+ ldr r7, _0806FD48
+ b _0806FD4E
+ .align 2, 0
+_0806FD48: .4byte gUnknown_202EE70
+_0806FD4C:
+ adds r4, 0x1
+_0806FD4E:
+ cmp r4, r3
+ bgt _0806FD70
+ movs r2, 0
+ cmp r2, r5
+ bge _0806FD6A
+ adds r1, r4, r7
+ b _0806FD64
+_0806FD5C:
+ adds r1, 0x1
+ adds r2, 0x1
+ cmp r2, r5
+ bge _0806FD6A
+_0806FD64:
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0806FD5C
+_0806FD6A:
+ cmp r2, r5
+ bne _0806FD4C
+ adds r6, r4, 0
+_0806FD70:
+ movs r0, 0x1
+ negs r0, r0
+ cmp r6, r0
+ beq _0806FDEC
+ movs r4, 0
+ ldr r3, _0806FDB4
+ ldr r0, [r3]
+ ldr r2, _0806FDB8
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806FDAC
+ adds r6, r3, 0
+ adds r5, r2, 0
+ movs r2, 0
+ movs r3, 0x1
+_0806FD94:
+ adds r2, 0x64
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _0806FDAC
+ ldr r0, [r6]
+ adds r0, r2, r0
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806FD94
+_0806FDAC:
+ cmp r4, 0x4
+ beq _0806FDEC
+ movs r4, 0
+ b _0806FDBE
+ .align 2, 0
+_0806FDB4: .4byte gRecruitedPokemonRef
+_0806FDB8: .4byte 0x00008df8
+_0806FDBC:
+ adds r4, 0x1
+_0806FDBE:
+ cmp r4, 0x3
+ bgt _0806FDDA
+ ldr r0, _0806FDE4
+ ldr r0, [r0]
+ lsls r1, r4, 2
+ ldr r2, _0806FDE8
+ adds r0, r2
+ adds r0, r1
+ ldr r0, [r0]
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806FDBC
+_0806FDDA:
+ cmp r4, 0x4
+ beq _0806FDEC
+ movs r0, 0x1
+ b _0806FDEE
+ .align 2, 0
+_0806FDE4: .4byte gDungeonGlobalData
+_0806FDE8: .4byte 0x0001357c
+_0806FDEC:
+ movs r0, 0
+_0806FDEE:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_806FD18
+
+ thumb_func_start sub_806FDF4
+sub_806FDF4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x60
+ str r0, [sp, 0x58]
+ mov r10, r1
+ str r2, [sp, 0x5C]
+ movs r0, 0
+ mov r9, r0
+ str r0, [r2]
+ add r0, sp, 0xC
+ bl sub_8069D4C
+ movs r6, 0
+ ldr r3, _0806FE50
+ ldr r0, [r3]
+ ldr r2, _0806FE54
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0806FE46
+ adds r5, r3, 0
+ adds r4, r2, 0
+ movs r2, 0
+ movs r3, 0x1
+_0806FE2E:
+ adds r2, 0x64
+ adds r6, 0x1
+ cmp r6, 0x3
+ bgt _0806FE46
+ ldr r0, [r5]
+ adds r0, r2, r0
+ adds r0, r4
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0806FE2E
+_0806FE46:
+ cmp r6, 0x4
+ bne _0806FE58
+ movs r0, 0
+ b _0806FFF8
+ .align 2, 0
+_0806FE50: .4byte gRecruitedPokemonRef
+_0806FE54: .4byte 0x00008df8
+_0806FE58:
+ add r0, sp, 0xC
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bl GetFriendArea
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _0806FF74
+ movs r0, 0x64
+ muls r0, r6
+ ldr r2, _0806FF78
+ adds r0, r2
+ ldr r1, [r1]
+ adds r5, r1, r0
+ movs r4, 0
+ movs r0, 0x3
+ strh r0, [r5]
+ strb r4, [r5, 0x2]
+ add r0, sp, 0xC
+ ldrh r0, [r0, 0xE]
+ strb r0, [r5, 0x3]
+ movs r0, 0x1
+ strh r0, [r5, 0x8]
+ adds r0, r5, 0
+ adds r0, 0x4C
+ movs r1, 0
+ bl SetDefaultIQSkills
+ ldr r0, [sp, 0x50]
+ str r0, [r5, 0x54]
+ adds r0, r5, 0
+ adds r0, 0x50
+ strb r4, [r0]
+ ldr r0, _0806FF7C
+ strh r0, [r5, 0xA]
+ strh r6, [r5, 0xC]
+ add r0, sp, 0xC
+ ldrh r0, [r0]
+ strh r0, [r5, 0xE]
+ ldr r0, _0806FF80
+ ldr r0, [r0]
+ ldr r3, _0806FF84
+ adds r0, r3
+ ldr r0, [r0]
+ str r0, [r5, 0x4]
+ add r0, sp, 0xC
+ ldrh r0, [r0, 0x8]
+ strh r0, [r5, 0x10]
+ add r0, sp, 0xC
+ ldrh r0, [r0, 0x8]
+ strh r0, [r5, 0x12]
+ ldr r0, [sp, 0x20]
+ str r0, [r5, 0x44]
+ ldr r0, [sp, 0x24]
+ str r0, [r5, 0x48]
+ movs r2, 0
+ add r6, sp, 0x2C
+ add r4, sp, 0x54
+ mov r8, r4
+ mov r4, sp
+ adds r4, 0x16
+ add r3, sp, 0x18
+ adds r1, r5, 0
+ adds r1, 0x14
+_0806FED8:
+ adds r0, r4, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r3, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x2]
+ adds r1, 0x1
+ adds r2, 0x1
+ cmp r2, 0x1
+ ble _0806FED8
+ ldr r0, [sp, 0x1C]
+ str r0, [r5, 0x18]
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r6, 0
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldr r0, [sp, 0x28]
+ str r0, [r5, 0x40]
+ adds r4, r5, 0
+ adds r4, 0x58
+ add r0, sp, 0xC
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ bl GetMonSpecies
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0xA
+ bl BoundedCopyStringtoBuffer
+ adds r0, r7, 0
+ bl GetFriendAreaStatus
+ lsls r0, 24
+ cmp r0, 0
+ bne _0806FF34
+ adds r0, r7, 0
+ bl UnlockFriendArea
+ movs r2, 0x1
+ mov r9, r2
+_0806FF34:
+ bl sub_8097848
+ movs r1, 0xFA
+ lsls r1, 1
+ mov r0, r10
+ ldr r2, [sp, 0x58]
+ bl sub_8068FE0
+ add r0, sp, 0xC
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ add r1, sp, 0xC
+ movs r2, 0x4
+ ldrsh r1, [r1, r2]
+ add r2, sp, 0xC
+ movs r3, 0x6
+ ldrsh r2, [r2, r3]
+ mov r3, r8
+ str r3, [sp]
+ movs r3, 0
+ str r3, [sp, 0x4]
+ str r3, [sp, 0x8]
+ adds r3, r5, 0
+ bl sub_806B8CC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _0806FF88
+ strh r0, [r5]
+ b _0806FFF6
+ .align 2, 0
+_0806FF74: .4byte gRecruitedPokemonRef
+_0806FF78: .4byte 0x00008df8
+_0806FF7C: .4byte 0x0000ffff
+_0806FF80: .4byte gDungeonGlobalData
+_0806FF84: .4byte 0x00000644
+_0806FF88:
+ ldr r0, _0806FF9C
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl sub_8052B8C
+ cmp r0, 0x1
+ bne _0806FFB8
+ b _0806FFAC
+ .align 2, 0
+_0806FF9C: .4byte gUnknown_80FA090
+_0806FFA0:
+ ldr r0, _08070008
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl PrintFieldMessage
+_0806FFAC:
+ adds r0, r4, 0
+ bl sub_805FBE8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0806FFA0
+_0806FFB8:
+ mov r4, r9
+ cmp r4, 0
+ beq _0806FFE6
+ bl xxx_call_GetLeaderEntity
+ adds r1, r0, 0
+ ldr r0, _0807000C
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08070010
+ adds r1, r7, 0
+ bl sub_8092558
+ movs r0, 0xCE
+ bl PlaySound
+ ldr r0, _08070014
+ ldr r1, [r0]
+ movs r0, 0
+ movs r2, 0x1
+ bl PrintFieldMessage
+_0806FFE6:
+ ldr r0, _08070018
+ adds r1, r5, 0
+ movs r2, 0
+ bl sub_808D9DC
+ ldr r0, [sp, 0x54]
+ ldr r1, [sp, 0x5C]
+ str r0, [r1]
+_0806FFF6:
+ movs r0, 0x1
+_0806FFF8:
+ add sp, 0x60
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08070008: .4byte gUnknown_80FA0C8
+_0807000C: .4byte gAvailablePokemonNames
+_08070010: .4byte gUnknown_202E628
+_08070014: .4byte gUnknown_80FA120
+_08070018: .4byte gUnknown_202E088
+ thumb_func_end sub_806FDF4
+
+ .align 2,0
diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s
index 3981d7a..19928c2 100644
--- a/asm/code_8075BA4.s
+++ b/asm/code_8075BA4.s
@@ -29874,267 +29874,4 @@ _080848E4: .4byte gDungeonGlobalData
_080848E8: .4byte 0x00000675
thumb_func_end sub_8084854
- thumb_func_start sub_80848EC
-sub_80848EC:
- movs r0, 0x1
- bx lr
- thumb_func_end sub_80848EC
-
- thumb_func_start sub_80848F0
-sub_80848F0:
- push {lr}
- ldr r2, _08084918
- ldr r0, [r2]
- ldr r1, _0808491C
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _08084920
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3C
- bls _0808490C
- b _08084B5C
-_0808490C:
- lsls r0, 2
- ldr r1, _08084924
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08084918: .4byte gDungeonGlobalData
-_0808491C: .4byte 0x0001356c
-_08084920: .4byte 0x00003a0d
-_08084924: .4byte _08084928
- .align 2, 0
-_08084928:
- .4byte _08084A1C
- .4byte _08084A2C
- .4byte _08084A2C
- .4byte _08084A32
- .4byte _08084A38
- .4byte _08084A38
- .4byte _08084A3E
- .4byte _08084A44
- .4byte _08084A44
- .4byte _08084A4A
- .4byte _08084A50
- .4byte _08084A50
- .4byte _08084A56
- .4byte _08084A5C
- .4byte _08084A62
- .4byte _08084A68
- .4byte _08084A6E
- .4byte _08084A74
- .4byte _08084A7A
- .4byte _08084A80
- .4byte _08084A86
- .4byte _08084A8C
- .4byte _08084A92
- .4byte _08084A98
- .4byte _08084A98
- .4byte _08084A9E
- .4byte _08084AA4
- .4byte _08084AA4
- .4byte _08084AAA
- .4byte _08084AB0
- .4byte _08084AB0
- .4byte _08084AB6
- .4byte _08084ABC
- .4byte _08084ABC
- .4byte _08084AC2
- .4byte _08084AC8
- .4byte _08084ACE
- .4byte _08084AD4
- .4byte _08084ADA
- .4byte _08084AE0
- .4byte _08084AE6
- .4byte _08084AEC
- .4byte _08084AF2
- .4byte _08084AF8
- .4byte _08084AFE
- .4byte _08084B04
- .4byte _08084B0A
- .4byte _08084B10
- .4byte _08084B16
- .4byte _08084B1C
- .4byte _08084B22
- .4byte _08084B28
- .4byte _08084B2E
- .4byte _08084B34
- .4byte _08084B3A
- .4byte _08084B40
- .4byte _08084B46
- .4byte _08084B4C
- .4byte _08084B52
- .4byte _08084B58
- .4byte _08084A1C
-_08084A1C:
- ldr r0, [r2]
- ldr r1, _08084A28
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- b _08084B5C
- .align 2, 0
-_08084A28: .4byte 0x0001356c
-_08084A2C:
- bl sub_8086B14
- b _08084B5C
-_08084A32:
- bl sub_8086B94
- b _08084B5C
-_08084A38:
- bl sub_8086E9C
- b _08084B5C
-_08084A3E:
- bl sub_8086F00
- b _08084B5C
-_08084A44:
- bl sub_8087230
- b _08084B5C
-_08084A4A:
- bl sub_808729C
- b _08084B5C
-_08084A50:
- bl sub_80877E8
- b _08084B5C
-_08084A56:
- bl sub_8087848
- b _08084B5C
-_08084A5C:
- bl sub_8087F54
- b _08084B5C
-_08084A62:
- bl sub_8087FB4
- b _08084B5C
-_08084A68:
- bl sub_8087FF8
- b _08084B5C
-_08084A6E:
- bl sub_80885A0
- b _08084B5C
-_08084A74:
- bl sub_80885C4
- b _08084B5C
-_08084A7A:
- bl sub_808862C
- b _08084B5C
-_08084A80:
- bl sub_80886C4
- b _08084B5C
-_08084A86:
- bl sub_808875C
- b _08084B5C
-_08084A8C:
- bl sub_8088DC0
- b _08084B5C
-_08084A92:
- bl sub_8088E5C
- b _08084B5C
-_08084A98:
- bl sub_80892C8
- b _08084B5C
-_08084A9E:
- bl sub_8089328
- b _08084B5C
-_08084AA4:
- bl sub_808970C
- b _08084B5C
-_08084AAA:
- bl sub_808974C
- b _08084B5C
-_08084AB0:
- bl sub_8089914
- b _08084B5C
-_08084AB6:
- bl sub_8089978
- b _08084B5C
-_08084ABC:
- bl sub_8089C44
- b _08084B5C
-_08084AC2:
- bl sub_8089C90
- b _08084B5C
-_08084AC8:
- bl sub_8089EFC
- b _08084B5C
-_08084ACE:
- bl sub_8089F44
- b _08084B5C
-_08084AD4:
- bl sub_8089F8C
- b _08084B5C
-_08084ADA:
- bl sub_808A264
- b _08084B5C
-_08084AE0:
- bl sub_808A2C0
- b _08084B5C
-_08084AE6:
- bl sub_808A308
- b _08084B5C
-_08084AEC:
- bl sub_808A608
- b _08084B5C
-_08084AF2:
- bl sub_808A668
- b _08084B5C
-_08084AF8:
- bl sub_808A9E4
- b _08084B5C
-_08084AFE:
- bl sub_808AA3C
- b _08084B5C
-_08084B04:
- bl sub_808AA94
- b _08084B5C
-_08084B0A:
- bl sub_808ACC0
- b _08084B5C
-_08084B10:
- bl sub_808AD48
- b _08084B5C
-_08084B16:
- bl sub_808ADCC
- b _08084B5C
-_08084B1C:
- bl sub_808B2F4
- b _08084B5C
-_08084B22:
- bl sub_808B35C
- b _08084B5C
-_08084B28:
- bl sub_808BDEC
- b _08084B5C
-_08084B2E:
- bl sub_808C10C
- b _08084B5C
-_08084B34:
- bl sub_808C3A0
- b _08084B5C
-_08084B3A:
- bl sub_808C5C0
- b _08084B5C
-_08084B40:
- bl sub_808C938
- b _08084B5C
-_08084B46:
- bl sub_808C9C4
- b _08084B5C
-_08084B4C:
- bl sub_808CB5C
- b _08084B5C
-_08084B52:
- bl sub_808CBB0
- b _08084B5C
-_08084B58:
- bl sub_808CD44
-_08084B5C:
- bl sub_8097FF8
- pop {r0}
- bx r0
- thumb_func_end sub_80848F0
-
.align 2,0
diff --git a/asm/code_80848F0.s b/asm/code_80848F0.s
index 3ef188c..8b1c811 100644
--- a/asm/code_80848F0.s
+++ b/asm/code_80848F0.s
@@ -269,16 +269,16 @@ _0808546E:
_0808547C: .4byte gUnknown_80F4598
thumb_func_end sub_8085374
- thumb_func_start sub_8085480
-sub_8085480:
+ thumb_func_start xxx_call_GetLeaderEntity
+xxx_call_GetLeaderEntity:
push {lr}
bl GetLeaderEntity
pop {r1}
bx r1
- thumb_func_end sub_8085480
+ thumb_func_end xxx_call_GetLeaderEntity
- thumb_func_start sub_808548C
-sub_808548C:
+ thumb_func_start GetPartnerEntity
+GetPartnerEntity:
push {r4,r5,lr}
movs r5, 0
_08085490:
@@ -314,7 +314,7 @@ _080854CC:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_808548C
+ thumb_func_end GetPartnerEntity
thumb_func_start sub_80854D4
sub_80854D4:
@@ -500,7 +500,7 @@ _08085618:
ble _080855EC
cmp r7, 0
bne _0808562E
- bl sub_808548C
+ bl GetPartnerEntity
cmp r0, 0
beq _0808562E
bl _call_via_r6
@@ -889,8 +889,8 @@ _080858FE:
bx r0
thumb_func_end sub_80858AC
- thumb_func_start sub_8085918
-sub_8085918:
+ thumb_func_start SetFacingDirection
+SetFacingDirection:
push {r4,lr}
ldr r3, [r0, 0x70]
movs r4, 0x7
@@ -902,7 +902,7 @@ sub_8085918:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8085918
+ thumb_func_end SetFacingDirection
thumb_func_start sub_8085930
sub_8085930:
@@ -1045,4 +1045,4 @@ _08085A42:
bx r0
thumb_func_end sub_80859F0
- .align 2, 0 \ No newline at end of file
+ .align 2, 0
diff --git a/asm/code_8085B0C.s b/asm/code_8085B0C.s
index e79e550..0080472 100644
--- a/asm/code_8085B0C.s
+++ b/asm/code_8085B0C.s
@@ -22,7 +22,7 @@ sub_8085B0C:
_08085B26:
ldrb r1, [r4]
adds r0, r5, 0
- bl sub_8085918
+ bl SetFacingDirection
movs r0, 0x6
movs r1, 0x46
bl sub_803E708
diff --git a/asm/code_8086A3C.s b/asm/code_8086A3C.s
index 291053b..ae72ef7 100644
--- a/asm/code_8086A3C.s
+++ b/asm/code_8086A3C.s
@@ -5,350 +5,6 @@
.text
- thumb_func_start SkarmoryPreFightDialogue
-SkarmoryPreFightDialogue:
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- bl sub_8085480
- mov r8, r0
- bl sub_808548C
- mov r9, r0
- movs r0, 0x4
- bl sub_8085680
- adds r4, r0, 0
- movs r0, 0x3
- bl sub_8085680
- adds r6, r0, 0
- ldr r0, [r4, 0xC]
- str r0, [sp]
- ldr r0, [r4, 0x10]
- movs r1, 0xC0
- lsls r1, 6
- adds r0, r1
- str r0, [sp, 0x4]
- ldr r0, [r6, 0xC]
- str r0, [sp, 0x8]
- ldr r0, [r6, 0x10]
- movs r2, 0x80
- lsls r2, 6
- adds r0, r2
- add r5, sp, 0x8
- str r0, [r5, 0x4]
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- mov r0, r9
- bl sub_80862BC
- movs r0, 0x20
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D84
- bl sub_8052910
- mov r0, sp
- movs r1, 0x40
- bl sub_80858AC
- movs r0, 0x40
- movs r1, 0x46
- bl sub_803E708
- adds r0, r5, 0
- movs r1, 0x30
- bl sub_80858AC
- ldr r0, _08086D88
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, [r4, 0x70]
- ldr r2, _08086D8C
- adds r1, r0, r2
- movs r0, 0x1
- strb r0, [r1]
- mov r0, sp
- movs r1, 0x30
- bl sub_80858AC
- ldr r0, _08086D90
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r5, 0
- movs r1, 0x20
- bl sub_80858AC
- movs r0, 0x20
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- bl sub_8086E74
- ldr r0, _08086D94
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D98
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086D9C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086DA0
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r6, 0
- movs r1, 0xD
- movs r2, 0
- bl sub_806CDD4
- ldr r0, _08086DA4
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x2
- bl sub_80869E4
- mov r0, r8
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x6
- bl sub_80869E4
- ldr r0, _08086DA8
- bl sub_8052910
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x2
- movs r3, 0x4
- bl sub_80869E4
- mov r0, r8
- movs r1, 0x4
- movs r2, 0x1
- movs r3, 0x4
- bl sub_80869E4
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- movs r0, 0xB
- bl sub_8083E88
- movs r0, 0xC
- add r8, r0
- mov r0, r8
- movs r1, 0x10
- bl sub_80858AC
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08086D84: .4byte gUnknown_8100768
-_08086D88: .4byte gUnknown_8100798
-_08086D8C: .4byte 0x0000015d
-_08086D90: .4byte gUnknown_8100820
-_08086D94: .4byte gUnknown_8100844
-_08086D98: .4byte gUnknown_8100880
-_08086D9C: .4byte gUnknown_8100928
-_08086DA0: .4byte gUnknown_8100A04
-_08086DA4: .4byte gUnknown_8100B80
-_08086DA8: .4byte gUnknown_8100BC0
- thumb_func_end SkarmoryPreFightDialogue
-
- thumb_func_start SkarmoryReFightDialogue
-SkarmoryReFightDialogue:
- push {r4,r5,lr}
- sub sp, 0x8
- bl sub_8085480
- adds r5, r0, 0
- movs r0, 0x3
- bl sub_8085680
- adds r4, r0, 0
- ldr r0, [r4, 0xC]
- str r0, [sp]
- ldr r0, [r4, 0x10]
- movs r1, 0x80
- lsls r1, 6
- adds r0, r1
- str r0, [sp, 0x4]
- bl sub_8086448
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- bl sub_8086E74
- mov r0, sp
- movs r1, 0x10
- bl sub_80858AC
- ldr r0, _08086E34
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E38
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0
- bl sub_806CDD4
- ldr r0, _08086E3C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- adds r5, 0xC
- adds r0, r5, 0
- movs r1, 0x10
- bl sub_80858AC
- movs r0, 0xB
- bl sub_8083E88
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08086E34: .4byte gUnknown_8100C90
-_08086E38: .4byte gUnknown_8100CBC
-_08086E3C: .4byte gUnknown_8100CDC
- thumb_func_end SkarmoryReFightDialogue
-
- thumb_func_start sub_8086E40
-sub_8086E40:
- push {lr}
- bl sub_8085480
- bl SpriteLookAroundEffect
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E6C
- bl sub_8052910
- movs r0, 0xA
- movs r1, 0x46
- bl sub_803E708
- ldr r0, _08086E70
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- pop {r0}
- bx r0
- .align 2, 0
-_08086E6C: .4byte gUnknown_8100D3C
-_08086E70: .4byte gDungeonGlobalData
- thumb_func_end sub_8086E40
-
- thumb_func_start sub_8086E74
-sub_8086E74:
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xF
- movs r2, 0
- bl sub_806CDD4
- adds r0, r4, 0
- bl sub_8086A54
- movs r0, 0xFC
- lsls r0, 1
- bl PlaySoundEffect
- movs r0, 0x44
- movs r1, 0x46
- bl sub_803E708
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8086E74
-
- thumb_func_start sub_8086E9C
-sub_8086E9C:
- push {r4,r5,lr}
- bl sub_8085480
- adds r5, r0, 0
- movs r0, 0x72
- bl sub_8083E88
- bl sub_8085374
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r4, _08086EF8
- adds r0, r4, 0
- bl sub_80855E4
- adds r0, r4, 0
- bl sub_808563C
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08086EFC
- adds r0, r4, 0
- movs r1, 0xB
- bl CopySpeciesNametoBuffer
- adds r0, r4, 0
- adds r0, 0x50
- movs r1, 0x5E
- bl CopySpeciesNametoBuffer
- adds r4, 0xA0
- adds r0, r4, 0
- movs r1, 0xA
- bl CopySpeciesNametoBuffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08086EF8: .4byte sub_8086A3C
-_08086EFC: .4byte gUnknown_202E038
- thumb_func_end sub_8086E9C
-
- thumb_func_start sub_8086F00
-sub_8086F00:
- push {r4,lr}
- bl sub_8085480
- adds r4, r0, 0
- bl sub_80854D4
- movs r0, 0x4
- bl sub_8085930
- ldr r0, _08086F4C
- bl sub_80855E4
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r2, 0x6
- ldrsh r1, [r4, r2]
- subs r1, 0x3
- bl sub_8085860
- ldr r4, _08086F50
- adds r0, r4, 0
- movs r1, 0xB
- bl CopySpeciesNametoBuffer
- adds r0, r4, 0
- adds r0, 0x50
- movs r1, 0x5E
- bl CopySpeciesNametoBuffer
- adds r4, 0xA0
- adds r0, r4, 0
- movs r1, 0xA
- bl CopySpeciesNametoBuffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08086F4C: .4byte sub_8086A3C
-_08086F50: .4byte gUnknown_202E038
- thumb_func_end sub_8086F00
-
thumb_func_start sub_8086F54
sub_8086F54:
push {r4-r6,lr}
@@ -405,7 +61,7 @@ _08086FB4: .4byte 0x0001358c
thumb_func_start TeamMeaniesPreFightDialogue
TeamMeaniesPreFightDialogue:
push {r4,lr}
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
adds r4, r0, 0
bl sub_8086448
movs r0, 0xA
@@ -469,9 +125,9 @@ _08087060: .4byte gUnknown_81010D0
thumb_func_start TeamMeaniesReFightDialogue
TeamMeaniesReFightDialogue:
push {r4,r5,lr}
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
adds r4, r0, 0
- bl sub_808548C
+ bl GetPartnerEntity
adds r5, r0, 0
bl sub_8086448
ldr r0, _08087118
@@ -665,7 +321,7 @@ _0808722C: .4byte 0x0000015f
thumb_func_start sub_8087230
sub_8087230:
push {r4-r6,lr}
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
adds r6, r0, 0
movs r0, 0x8
bl sub_8085680
@@ -681,7 +337,7 @@ sub_8087230:
bl sub_80855E4
adds r0, r5, 0
movs r1, 0
- bl sub_8085918
+ bl SetFacingDirection
adds r0, r5, 0
bl _call_via_r4
movs r1, 0x4
@@ -711,7 +367,7 @@ _08087298: .4byte gUnknown_202E038
sub_808729C:
push {r4-r6,lr}
sub sp, 0x4
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
adds r5, r0, 0
movs r0, 0x8
bl sub_8085680
@@ -747,7 +403,7 @@ _080872E0:
bl sub_8072008
adds r0, r4, 0
movs r1, 0
- bl sub_8085918
+ bl SetFacingDirection
adds r0, r4, 0
bl _call_via_r6
_08087300:
@@ -810,9 +466,9 @@ ZapdosPreFightDialogue:
mov r5, r8
push {r5-r7}
sub sp, 0x70
- bl sub_8085480
+ bl xxx_call_GetLeaderEntity
mov r9, r0
- bl sub_808548C
+ bl GetPartnerEntity
adds r6, r0, 0
movs r0, 0x8
bl sub_8085680
diff --git a/asm/code_8095014.s b/asm/code_8095014.s
index 4406103..bd88144 100644
--- a/asm/code_8095014.s
+++ b/asm/code_8095014.s
@@ -412,7 +412,7 @@ sub_809542C:
bl GetPlayerPokemonStruct
adds r1, r0, 0
mov r0, sp
- bl sub_808DA34
+ bl PrintPokeNameToBuffer
ldr r0, [r4]
adds r0, 0x14
mov r1, sp
diff --git a/asm/friend_list_menu.s b/asm/friend_list_menu.s
index c6a965a..391bd3f 100644
--- a/asm/friend_list_menu.s
+++ b/asm/friend_list_menu.s
@@ -364,13 +364,13 @@ _080255D2:
ldr r1, [r0, 0x1C]
adds r0, r4, 0
movs r2, 0x7
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
adds r4, 0x50
ldr r0, [r5]
ldr r1, [r0, 0x1C]
adds r0, r4, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldr r2, [r5]
adds r0, r2, 0
adds r0, 0x78
@@ -1911,13 +1911,13 @@ _0802625C:
ldr r1, [r0, 0x18]
adds r0, r4, 0
movs r2, 0x7
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
adds r4, 0x50
ldr r0, [r5]
ldr r1, [r0, 0x18]
adds r0, r4, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldr r2, [r5]
adds r0, r2, 0
adds r0, 0x7C
@@ -1945,13 +1945,13 @@ _080262A8:
ldr r1, [r0, 0x18]
adds r0, r4, 0
movs r2, 0x7
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
adds r4, 0x50
ldr r0, [r5]
ldr r1, [r0, 0x18]
adds r0, r4, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldr r0, [r5]
adds r0, 0x7C
movs r1, 0x1
diff --git a/asm/jirachi_wish.s b/asm/jirachi_wish.s
index 4d113bb..cc21bd0 100644
--- a/asm/jirachi_wish.s
+++ b/asm/jirachi_wish.s
@@ -449,7 +449,7 @@ _0808B98E:
bl CalculateFacingDir
adds r1, r0, 0
adds r0, r6, 0
- bl sub_8085918
+ bl SetFacingDirection
movs r0, 0xA
movs r1, 0x46
bl sub_803E708
diff --git a/asm/mailbox.s b/asm/mailbox.s
index d65e611..f164a29 100644
--- a/asm/mailbox.s
+++ b/asm/mailbox.s
@@ -268,293 +268,4 @@ _0802E4A8:
bx r0
thumb_func_end CreateMailActionMenu
- thumb_func_start sub_802E4B0
-sub_802E4B0:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r4, _0802E4F0
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802E4DC
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802E4DC
- ldr r0, [r4]
- str r1, [r0, 0x64]
-_0802E4DC:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _0802E56E
- lsls r0, 2
- ldr r1, _0802E4F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E4F0: .4byte gUnknown_203B304
-_0802E4F4: .4byte _0802E4F8
- .align 2, 0
-_0802E4F8:
- .4byte _0802E568
- .4byte _0802E518
- .4byte _0802E52A
- .4byte _0802E53C
- .4byte _0802E56E
- .4byte _0802E56E
- .4byte _0802E56E
- .4byte _0802E560
-_0802E518:
- bl HasNoMailinMailbox
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x4
- bl SetMailboxState
- b _0802E56E
-_0802E52A:
- bl HasNoAcceptedJobs
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x8
- bl SetMailboxState
- b _0802E56E
-_0802E53C:
- bl HasNoPKMNNews
- lsls r0, 24
- cmp r0, 0
- bne _0802E54E
- movs r0, 0x9
- bl SetMailboxState
- b _0802E56E
-_0802E54E:
- ldr r0, _0802E55C
- ldr r0, [r0]
- adds r0, 0x6C
- movs r1, 0x1
- bl sub_8012EA4
- b _0802E56E
- .align 2, 0
-_0802E55C: .4byte gUnknown_203B304
-_0802E560:
- movs r0, 0x2
- bl SetMailboxState
- b _0802E56E
-_0802E568:
- movs r0, 0x3
- bl SetMailboxState
-_0802E56E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E4B0
-
- thumb_func_start sub_802E578
-sub_802E578:
- push {r4,lr}
- movs r0, 0x1
- bl sub_802BDEC
- cmp r0, 0x4
- bhi _0802E606
- lsls r0, 2
- ldr r1, _0802E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E590: .4byte _0802E594
- .align 2, 0
-_0802E594:
- .4byte _0802E606
- .4byte _0802E606
- .4byte _0802E5FC
- .4byte _0802E5A8
- .4byte _0802E5C0
-_0802E5A8:
- bl sub_802BE74
- ldr r1, _0802E5BC
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x6
- bl SetMailboxState
- b _0802E606
- .align 2, 0
-_0802E5BC: .4byte gUnknown_203B304
-_0802E5C0:
- bl sub_802BE74
- ldr r4, _0802E5F0
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- adds r2, r0, 0
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0802E5F4
- ldr r1, [r4]
- ldrb r0, [r2, 0x5]
- strb r0, [r1, 0x9]
- ldr r1, [r4]
- movs r0, 0x5
- str r0, [r1, 0x4]
- movs r0, 0xB
- bl SetMailboxState
- b _0802E606
- .align 2, 0
-_0802E5F0: .4byte gUnknown_203B304
-_0802E5F4:
- movs r0, 0x7
- bl SetMailboxState
- b _0802E606
-_0802E5FC:
- bl sub_802BEDC
- movs r0, 0x1
- bl SetMailboxState
-_0802E606:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E578
-
- thumb_func_start sub_802E60C
-sub_802E60C:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_802BDEC
- ldr r4, _0802E650
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802E63C
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802E63C
- ldr r0, [r4]
- str r1, [r0, 0x68]
-_0802E63C:
- ldr r0, [sp]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _0802E732
- lsls r0, 2
- ldr r1, _0802E654
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802E650: .4byte gUnknown_203B304
-_0802E654: .4byte _0802E658
- .align 2, 0
-_0802E658:
- .4byte _0802E72C
- .4byte _0802E732
- .4byte _0802E732
- .4byte _0802E732
- .4byte _0802E678
- .4byte _0802E6BC
- .4byte _0802E704
- .4byte _0802E6B4
-_0802E678:
- ldr r0, _0802E6AC
- bl PlaySound
- ldr r4, _0802E6B0
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- bl sub_8096A78
- bl sub_8096C80
- bl sub_8096D24
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096040
- bl sub_8096078
- bl HasNoMailinMailbox
- lsls r0, 24
- cmp r0, 0
- bne _0802E6E8
- b _0802E6FC
- .align 2, 0
-_0802E6AC: .4byte 0x00000133
-_0802E6B0: .4byte gUnknown_203B304
-_0802E6B4:
- movs r0, 0x7
- bl SetMailboxState
- b _0802E732
-_0802E6BC:
- ldr r0, _0802E6F4
- bl PlaySound
- ldr r4, _0802E6F8
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- ldrb r0, [r0, 0x5]
- bl sub_8096DF8
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096040
- bl sub_8096078
- bl HasNoMailinMailbox
- lsls r0, 24
- cmp r0, 0
- beq _0802E6FC
-_0802E6E8:
- bl sub_802BEDC
- movs r0, 0x1
- bl SetMailboxState
- b _0802E732
- .align 2, 0
-_0802E6F4: .4byte 0x00000133
-_0802E6F8: .4byte gUnknown_203B304
-_0802E6FC:
- movs r0, 0x5
- bl SetMailboxState
- b _0802E732
-_0802E704:
- movs r0, 0
- bl PlayMenuSoundEffect
- ldr r4, _0802E728
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8095FE8
- ldr r1, [r4]
- ldrb r0, [r0, 0x5]
- strb r0, [r1, 0x9]
- ldr r1, [r4]
- movs r0, 0x5
- str r0, [r1, 0x4]
- movs r0, 0xB
- bl SetMailboxState
- b _0802E732
- .align 2, 0
-_0802E728: .4byte gUnknown_203B304
-_0802E72C:
- movs r0, 0x5
- bl SetMailboxState
-_0802E732:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802E60C
-
.align 2,0
diff --git a/asm/makuhita_dojo.s b/asm/makuhita_dojo.s
index 3ace9ed..ef01d6d 100644
--- a/asm/makuhita_dojo.s
+++ b/asm/makuhita_dojo.s
@@ -194,7 +194,7 @@ _0803010C:
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0x6
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldr r0, _0803013C
ldr r1, [r0]
movs r0, 0xB
diff --git a/asm/pelipper_board.s b/asm/pelipper_board.s
index 433698a..20119ed 100644
--- a/asm/pelipper_board.s
+++ b/asm/pelipper_board.s
@@ -207,242 +207,4 @@ _0802ECAC: .4byte gUnknown_80D4990
_0802ECB0: .4byte gUnknown_80D4970
thumb_func_end sub_802EC10
- thumb_func_start sub_802ECB4
-sub_802ECB4:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r4, _0802ECF0
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802ECE0
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802ECE0
- ldr r0, [r4]
- str r1, [r0, 0x64]
-_0802ECE0:
- ldr r0, [sp]
- cmp r0, 0x2
- beq _0802ECFE
- cmp r0, 0x2
- bgt _0802ECF4
- cmp r0, 0x1
- beq _0802ED3C
- b _0802ED42
- .align 2, 0
-_0802ECF0: .4byte gUnknown_203B308
-_0802ECF4:
- cmp r0, 0x3
- beq _0802ED10
- cmp r0, 0x5
- beq _0802ED34
- b _0802ED42
-_0802ECFE:
- bl sub_802C4A4
- lsls r0, 24
- cmp r0, 0
- bne _0802ED22
- movs r0, 0x4
- bl SetPelipperBoardState
- b _0802ED42
-_0802ED10:
- bl HasNoAcceptedJobs
- lsls r0, 24
- cmp r0, 0
- bne _0802ED22
- movs r0, 0x8
- bl SetPelipperBoardState
- b _0802ED42
-_0802ED22:
- ldr r0, _0802ED30
- ldr r0, [r0]
- adds r0, 0x6C
- movs r1, 0x1
- bl sub_8012EA4
- b _0802ED42
- .align 2, 0
-_0802ED30: .4byte gUnknown_203B308
-_0802ED34:
- movs r0, 0x2
- bl SetPelipperBoardState
- b _0802ED42
-_0802ED3C:
- movs r0, 0x3
- bl SetPelipperBoardState
-_0802ED42:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802ECB4
-
- thumb_func_start sub_802ED4C
-sub_802ED4C:
- push {lr}
- movs r0, 0x1
- bl sub_802C1E4
- cmp r0, 0x4
- bhi _0802EDB6
- lsls r0, 2
- ldr r1, _0802ED64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802ED64: .4byte _0802ED68
- .align 2, 0
-_0802ED68:
- .4byte _0802EDB6
- .4byte _0802EDB6
- .4byte _0802EDAC
- .4byte _0802ED7C
- .4byte _0802ED94
-_0802ED7C:
- bl sub_802C26C
- ldr r1, _0802ED90
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x6
- bl SetPelipperBoardState
- b _0802EDB6
- .align 2, 0
-_0802ED90: .4byte gUnknown_203B308
-_0802ED94:
- bl sub_802C26C
- ldr r1, _0802EDA8
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- movs r0, 0x7
- bl SetPelipperBoardState
- b _0802EDB6
- .align 2, 0
-_0802EDA8: .4byte gUnknown_203B308
-_0802EDAC:
- bl sub_802C2D4
- movs r0, 0x1
- bl SetPelipperBoardState
-_0802EDB6:
- pop {r0}
- bx r0
- thumb_func_end sub_802ED4C
-
- thumb_func_start sub_802EDBC
-sub_802EDBC:
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- bl sub_802C1E4
- ldr r4, _0802EDFC
- ldr r0, [r4]
- adds r0, 0x6C
- bl sub_8012FD8
- lsls r0, 24
- cmp r0, 0
- bne _0802EDEC
- ldr r0, [r4]
- adds r0, 0x6C
- mov r1, sp
- bl sub_8013114
- ldr r1, [sp]
- cmp r1, 0x1
- beq _0802EDEC
- ldr r0, [r4]
- str r1, [r0, 0x68]
-_0802EDEC:
- ldr r0, [sp]
- cmp r0, 0x4
- beq _0802EE06
- cmp r0, 0x4
- bgt _0802EE00
- cmp r0, 0x1
- beq _0802EE90
- b _0802EE96
- .align 2, 0
-_0802EDFC: .4byte gUnknown_203B308
-_0802EE00:
- cmp r0, 0x5
- beq _0802EE88
- b _0802EE96
-_0802EE06:
- ldr r0, _0802EE28
- bl PlaySound
- ldr r4, _0802EE2C
- ldr r0, [r4]
- ldrb r0, [r0, 0x8]
- bl sub_8096574
- ldrb r1, [r0]
- cmp r1, 0x3
- beq _0802EE3C
- cmp r1, 0x3
- bgt _0802EE30
- cmp r1, 0x2
- beq _0802EE36
- b _0802EE5E
- .align 2, 0
-_0802EE28: .4byte 0x00000133
-_0802EE2C: .4byte gUnknown_203B308
-_0802EE30:
- cmp r1, 0x4
- beq _0802EE42
- b _0802EE5E
-_0802EE36:
- ldr r0, [r4]
- movs r1, 0x1
- b _0802EE46
-_0802EE3C:
- ldr r0, [r4]
- movs r1, 0x2
- b _0802EE46
-_0802EE42:
- ldr r0, [r4]
- movs r1, 0x3
-_0802EE46:
- str r1, [r0, 0x4]
- ldrb r0, [r0, 0x8]
- bl sub_80965B8
- bl sub_80965F4
- bl sub_802C2D4
- movs r0, 0x3
- bl SetPelipperBoardState
- b _0802EE96
-_0802EE5E:
- bl sub_8096A78
- bl sub_8096C80
- bl sub_8096D24
- bl sub_802C4A4
- lsls r0, 24
- cmp r0, 0
- beq _0802EE80
- bl sub_802C2D4
- movs r0, 0x1
- bl SetPelipperBoardState
- b _0802EE96
-_0802EE80:
- movs r0, 0x5
- bl SetPelipperBoardState
- b _0802EE96
-_0802EE88:
- movs r0, 0x7
- bl SetPelipperBoardState
- b _0802EE96
-_0802EE90:
- movs r0, 0x5
- bl SetPelipperBoardState
-_0802EE96:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802EDBC
-
.align 2,0
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 41f99c6..fc29dfb 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -1352,7 +1352,7 @@ sub_808FF20:
mov r8, r2
adds r0, r5, 0x2
movs r2, 0
- bl sub_808D9AC
+ bl PrintColoredPokeNameToBuffer
ldrh r0, [r6, 0x8]
strh r0, [r5]
movs r1, 0x16
diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s
index 5d28cd2..d8428b8 100644
--- a/asm/wonder_mail_2.s
+++ b/asm/wonder_mail_2.s
@@ -446,7 +446,7 @@ _0802BFE8:
bl GetPlayerPokemonStruct
adds r1, r0, 0
mov r0, r9
- bl sub_808DA34
+ bl PrintPokeNameToBuffer
ldrb r0, [r5, 0x5]
bl GetPokemonMailHeadline
adds r1, r0, 0
diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h
index 341f3d6..7b56fd8 100644
--- a/include/dungeon_entity.h
+++ b/include/dungeon_entity.h
@@ -13,7 +13,7 @@ struct DungeonEntityData
/* 0x0 */ u16 flags;
/* 0x2 */ s16 entityID; // Pokémon species or item ID.
// Everything from here on only applies to Pokémon.
- /* 0x4 */ u16 transformSpecies; // Shows a different Pokémon when using Transform.
+ /* 0x4 */ s16 transformSpecies; // Shows a different Pokémon when using Transform.
/* 0x6 */ bool8 isEnemy;
/* 0x7 */ bool8 isLeader;
/* 0x8 */ u8 shopkeeperMode;
@@ -261,16 +261,19 @@ struct DungeonEntity
// The sprite index to display, among the Pokémon's possible sprites.
/* 0x48 */ u16 spriteIndexForEntity;
/* 0x4A */ u16 spriteIndexForEntity2;
+ u8 unk4C[0x50 - 0x4C];
// Some kind of base sprite index depending on which way the Pokémon is facing.
// and which animation is playing (e.g., idle, moving).
// Compared to 0x48, 0x50 and 0x54 are much larger and could be global indexes among all sprites in the game.
/* 0x50 */ u16 spriteBaseForDirection;
u8 fill52[0x54 - 0x52];
/* 0x54 */ u16 spriteGlobalIndex;
- u8 fill56[0x6C - 0x56];
+ u8 fill56[0x6A - 0x56];
+ /* 0x6A */ u8 unk6A;
+ /* 0x6A */ u8 unk6B;
/* 0x6C */ u8 facingDir;
/* 0x6D */ u8 facingDir2; // Duplicate of 0x6C?
- u8 fill6D[0x70 - 0x6D];
+ u8 fill6D[0x70 - 0x6E];
/* 0x70 */ struct DungeonEntityData *entityData;
};
diff --git a/include/mailbox.h b/include/mailbox.h
index 1cdfa8e..579aec4 100644
--- a/include/mailbox.h
+++ b/include/mailbox.h
@@ -9,7 +9,7 @@ struct unkStruct_203B304
{
// size: 0xB6 << 1
u32 state;
- u32 unk4;
+ u32 fallbackState;
u8 unk8;
u8 mailIndex;
u8 fillA[0xC - 0xA];
diff --git a/include/pokemon.h b/include/pokemon.h
index 9f78706..912df49 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -195,6 +195,10 @@ void InitializeRecruitedPokemon(void);
void CopySpeciesNametoBuffer(u8 * buffer, s16 index);
void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index);
void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index);
+void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum);
+void PeekPokemonItem(s16 index_, struct HeldItem* item);
+void GivePokemonItem(s16 index_, struct HeldItem* item);
+bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);
u8 *GetCategoryString(s16 index);
u8 GetPokemonSize(s16 index);
diff --git a/ld_script.txt b/ld_script.txt
index ba72330..da30c0b 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -196,6 +196,8 @@ SECTIONS {
asm/code_8057144.o(.text);
src/code_8057824.o(.text);
asm/code_8057824.o(.text);
+ src/code_806CD90.o(.text);
+ asm/code_806CD90.o(.text);
asm/code_807001C.o(.text);
src/dungeon_capabilities.o(.text);
asm/code_8070BC0.o(.text);
diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c
index 03183ae..3f00c22 100644
--- a/src/code_801AFA4.c
+++ b/src/code_801AFA4.c
@@ -35,7 +35,7 @@ extern void sub_8094060(void *, struct PokemonMove *);
extern void PlaySound(u32);
extern void sub_80141B4(u32 *, u32, u32 ,u32);
extern void sub_8014248(u32 *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
-extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
+extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801E8C0(void);
extern void sub_801E93C(void);
@@ -163,7 +163,7 @@ void sub_801B178(void)
for(monIndex = 0; monIndex < gUnknown_203B22C->monsAbleToLearnMove; monIndex++)
{
bufferPtr = gAvailablePokemonNames + (0x50 * monIndex);
- sub_808DA34(bufferPtr, &gRecruitedPokemonRef->pokemon[gUnknown_203B22C->unk50[monIndex]]);
+ PrintPokeNameToBuffer(bufferPtr, &gRecruitedPokemonRef->pokemon[gUnknown_203B22C->unk50[monIndex]]);
gUnknown_203B22C->menuItems[monIndex].text = bufferPtr;
gUnknown_203B22C->menuItems[monIndex].menuAction = monIndex + 4;
}
@@ -188,7 +188,7 @@ void sub_801B200(void)
default:
gUnknown_203B22C->chosenPokemon = gUnknown_203B22C->unk50[temp - 4];
gUnknown_203B22C->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B22C->chosenPokemon];
- sub_808DA34(gUnknown_202E218, gUnknown_203B22C->pokeStruct);
+ PrintPokeNameToBuffer(gUnknown_202E218, gUnknown_203B22C->pokeStruct);
sub_809401C(gUnknown_203B22C->moves, gUnknown_203B22C->pokeStruct->moves);
for(moveIndex = 0; moveIndex < MAX_MON_MOVES * 2; moveIndex++)
{
diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c
index 19f2f7f..7dde248 100644
--- a/src/code_801B3C0.c
+++ b/src/code_801B3C0.c
@@ -1,8 +1,11 @@
#include "global.h"
+#include "constants/colors.h"
#include "text.h"
#include "input.h"
-#include "memory.h"
#include "item.h"
+#include "memory.h"
+#include "menu.h"
+#include "pokemon.h"
#include "team_inventory.h"
struct subStruct_203B240
@@ -30,9 +33,54 @@ struct unkStruct_203B230
};
extern struct unkStruct_203B230 *gUnknown_203B230;
+struct unkStruct_203B234
+{
+ // size: 0x154
+ u32 unk0;
+ u32 state;
+ u32 unk8;
+ u8 unkC;
+ u8 fillD[0x10 - 0xD];
+ struct ItemSlot unk10;
+ struct unkStruct_8090F58 unk14;
+ struct ItemSlot unk20;
+ u32 unk24;
+ u32 unk28;
+ u8 fill2C[0x78 - 0x2C];
+ u32 unk78;
+ u8 fill7C[0xC8 - 0x7C];
+ u32 unkC8;
+ struct MenuItem unkCC[5];
+ struct UnkTextStruct2 unkF4[4];
+};
+
+extern struct unkStruct_203B234 *gUnknown_203B234;
+
+extern u8 gUnknown_202DE58[];
extern u8 gAvailablePokemonNames[0x58];
extern u8 gUnknown_80DBA4C[];
+extern u8 gUnknown_80DBB9C[];
+extern u8 gUnknown_80DBD24[];
+extern u8 gUnknown_80DBCE8[];
+extern u8 gUnknown_80DBCC4[];
+extern u8 gUnknown_80DBC98[];
+extern u8 gUnknown_80DBC60[];
+extern u8 gUnknown_80DBC28[];
+extern u8 gUnknown_80DBB9C[];
+extern u8 gUnknown_80DBAA0[];
+extern u8 gUnknown_80DBAD0[];
+extern u8 gUnknown_80DBB08[];
+extern u8 gUnknown_80DBB38[];
+extern u8 gKangaskhanTrashToolboxItem[];
+extern u8 gKangaskhanTrashReceivedItem[];
+extern struct UnkTextStruct2 gUnknown_80DBA58;
+extern struct UnkTextStruct2 gUnknown_80DBA88;
+extern struct UnkTextStruct2 gUnknown_80DBA70;
+extern void sub_801BB5C(void);
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern struct PokemonStruct *GetPlayerPokemonStruct(void);
+extern void sub_801B748(u32);
extern void sub_8008C54(u32);
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
@@ -41,11 +89,32 @@ extern void PlayMenuSoundEffect(u32);
extern void sub_8013F84(void);
extern u32 sub_8012A64(u32 *, u32);
extern s32 sub_80913E0(struct ItemSlot *, u32, struct subStruct_203B240 **);
-
+extern void sub_80141B4(u8 *, u32, u32 *, u32);
+extern void sub_8012EA4(u32 *, u32);
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
+extern void sub_801BB20(void);
+extern void sub_801A8D0(u32);
+extern void sub_801A9E0(void);
+extern void sub_801BC24(void);
+extern void sub_801A5D8(u32, u32, u32, u32);
+extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void sub_801317C(u32 *);
extern void sub_80140B4(struct UnkTextStruct2 *);
extern void sub_801B46C(u32);
extern void ResetSprites(u32);
+extern void sub_801BC64(void);
+extern void sub_801BC94(void);
+extern void sub_801BCCC(void);
+extern void sub_801BD80(void);
+extern void sub_801BEAC(void);
+extern void sub_801BE30(void);
+extern void sub_801BEC8(void);
+extern void sub_801B760(void);
+extern void sub_801B874(void);
+extern u32 sub_8001784(u32, u32, u32);
+extern void sub_800199C(u32, u32, u32, u32);
+extern void PlaySound(u32);
+extern s32 sub_808D544(u32);
void sub_801B51C();
void sub_801B590();
@@ -181,3 +250,271 @@ void sub_801B590(void)
break;
}
}
+
+u32 sub_801B60C(u32 r0, u8 itemIndex, u8 numItems)
+{
+ gUnknown_203B234 = MemoryAlloc(0x154, 8);
+ gUnknown_203B234->unkC8 = 0;
+ gUnknown_203B234->unk0 = r0;
+ gUnknown_203B234->unk10.itemIndex = itemIndex;
+ if(IsThrowableItem(gUnknown_203B234->unk10.itemIndex))
+ {
+ gUnknown_203B234->unk10.numItems = numItems;
+ gUnknown_203B234->unkC = numItems;
+ }
+ else
+ {
+ gUnknown_203B234->unk10.numItems = 0;
+ gUnknown_203B234->unkC = 1;
+ }
+ gUnknown_203B234->unk10.itemFlags = ITEM_FLAG_EXISTS;
+ gUnknown_203B234->unk14.unk0 = 0;
+ gUnknown_203B234->unk14.unk4 = 0;
+ gUnknown_203B234->unk14.unk8 = 1;
+ PrintColoredPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct(), COLOR_YELLOW);
+ sub_8090E14(gUnknown_202DE58, &gUnknown_203B234->unk10, &gUnknown_203B234->unk14);
+ sub_801B748(0);
+ return 1;
+}
+
+u32 sub_801B6AC(void)
+{
+ switch(gUnknown_203B234->state)
+ {
+ case 16:
+ return 3;
+ case 6:
+ sub_801BC64();
+ break;
+ case 7:
+ sub_801BC94();
+ break;
+ case 8:
+ case 9:
+ sub_801BCCC();
+ break;
+ case 10:
+ sub_801BD80();
+ break;
+ case 11:
+ sub_801BEAC();
+ break;
+ case 12:
+ sub_801BE30();
+ break;
+ case 13:
+ case 14:
+ case 15:
+ default:
+ sub_801BEC8();
+ break;
+
+ }
+ return 0;
+}
+
+void sub_801B72C(void)
+{
+ if(gUnknown_203B234 != NULL)
+ {
+ MemoryFree(gUnknown_203B234);
+ gUnknown_203B234 = NULL;
+ }
+}
+
+void sub_801B748(u32 newState)
+{
+ gUnknown_203B234->state = newState;
+ sub_801B760();
+ sub_801B874();
+}
+
+void sub_801B760(void)
+{
+ s32 iVar4;
+ switch(gUnknown_203B234->state)
+ {
+ case 1:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 11:
+ case 13:
+ case 14:
+ case 15:
+ sub_8006518(gUnknown_203B234->unkF4);
+ for(iVar4 = 0; iVar4 < 4; iVar4++)
+ {
+ gUnknown_203B234->unkF4[iVar4] = gUnknown_80DBA58;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B234->unkF4, 1, 1);
+ break;
+ case 10:
+ sub_8006518(gUnknown_203B234->unkF4);
+ sub_801BB5C();
+ gUnknown_203B234->unkF4[2] = gUnknown_80DBA70;
+ sub_8012CAC(&gUnknown_203B234->unkF4[2], gUnknown_203B234->unkCC);
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B234->unkF4, 1, 1);
+ break;
+ case 12:
+ sub_8006518(gUnknown_203B234->unkF4);
+ gUnknown_203B234->unkF4[1] = gUnknown_80DBA88;
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B234->unkF4, 1, 1);
+ break;
+ }
+}
+
+void sub_801B874(void)
+{
+
+ switch(gUnknown_203B234->state)
+ {
+ case 0:
+ if (gUnknown_203B234->unk10.itemIndex == ITEM_ID_WEAVILE_FIG) {
+ gUnknown_203B234->unk8 = 0x10;
+ if(sub_8001784(0,0x47,1) != 0)
+ {
+ AddToTeamMoney(1000);
+ sub_801B748(4);
+ }
+ else
+ {
+ sub_800199C(0, 0x47, 1, 1);
+ sub_801B748(3);
+ }
+ }
+ else if (gUnknown_203B234->unk10.itemIndex == ITEM_ID_MIME_JR_FIG)
+ {
+ gUnknown_203B234->unk8 = 0x10;
+ if(sub_8001784(0, 0x47, 0) != 0)
+ {
+ AddToTeamMoney(1000);
+ sub_801B748(4);
+ }
+ else
+ {
+ sub_800199C(0, 0x47, 0, 1);
+ sub_801B748(3);
+ }
+ }
+ else
+ {
+ if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
+ {
+ if(IsNotMoneyOrUsedTMItem(gUnknown_203B234->unk10.itemIndex))
+ {
+ if((gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.itemIndex] + gUnknown_203B234->unkC) > 0x3e7)
+ {
+ store:
+ gUnknown_203B234->unk8 = 6;
+ }
+ else
+ {
+ gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.itemIndex] += gUnknown_203B234->unkC;
+ PlaySound(0xCB);
+ gUnknown_203B234->unk8 = 5;
+ }
+ }
+ else
+ {
+ goto store;
+ }
+ }
+ else
+ {
+ AddItemToInventory(&gUnknown_203B234->unk10);
+ FillInventoryGaps();
+ PlaySound(0xCB);
+ gUnknown_203B234->unk8 = 0x10;
+ }
+ if(gUnknown_203B234->unk0 == 1)
+ sub_801B748(2);
+ else
+ sub_801B748(1);
+ }
+ break;
+ case 1:
+ if (sub_808D544(0) < 2) {
+ sub_80141B4(gUnknown_80DBAA0,0,0,0x101);
+ }
+ else {
+ sub_80141B4(gUnknown_80DBAD0,0,0,0x101);
+ }
+ break;
+ case 2:
+ sub_80141B4(gUnknown_80DBB08,0,0,0x101);
+ break;
+ case 3:
+ PlaySound(0xd4);
+ sub_80141B4(gUnknown_80DBB38,0,0,0x101);
+ break;
+ case 4:
+ sub_80141B4(gUnknown_80DBB9C,0,0,0x101);
+ break;
+ case 5:
+ gUnknown_203B234->unk8 = 0x10;
+ sub_80141B4(gUnknown_80DBC28,0,0,0x101);
+ break;
+ case 6:
+ sub_801BB20();
+ sub_8014248(gUnknown_80DBC60,0,4,gUnknown_203B234->unkCC,
+ 0,4,0,0,0);
+ break;
+ case 7:
+ sub_801BC24();
+ sub_8014248(gUnknown_80DBC98,0,3,gUnknown_203B234->unkCC,0,4,0,0,0);
+ break;
+ case 8:
+ sub_801A5D8(1,3,0,10);
+ break;
+ case 9:
+ sub_801A8D0(1);
+ break;
+ case 10:
+ sub_801A9E0();
+ sub_8012D60(&gUnknown_203B234->unk28,gUnknown_203B234->unkCC,0,0,gUnknown_203B234->unkC8,2);
+ break;
+ case 0xb:
+ sub_801B3C0(&gUnknown_203B234->unk20);
+ break;
+ case 0xc:
+ sub_801A9E0();
+ sub_8012EA4(&gUnknown_203B234->unk28,0);
+ sub_801BC24();
+ sub_8012D60(&gUnknown_203B234->unk78,gUnknown_203B234->unkCC,0,0,3,1);
+ break;
+ case 0xd:
+ gUnknown_203B234->unk8 = 0x10;
+ sub_80141B4(gUnknown_80DBCC4,0,0,0x101);
+ break;
+ case 0xe:
+ gUnknown_203B234->unk8 = 0x10;
+ sub_80141B4(gUnknown_80DBCE8,0,0,0x101);
+ break;
+ case 0xf:
+ gUnknown_203B234->unk8 = 0x10;
+ sub_80141B4(gUnknown_80DBD24,0,0,0x101);
+ break;
+ case 0x10:
+ break;
+ }
+}
+
+void sub_801BB20(void)
+{
+ struct unkStruct_203B234 *preload;
+ u8 *nullText;
+
+ preload = gUnknown_203B234;
+ nullText = NULL;
+ preload->unkCC[0].text = gKangaskhanTrashToolboxItem;
+ preload->unkCC[0].menuAction = 4;
+ preload->unkCC[1].text = gKangaskhanTrashReceivedItem;
+ preload->unkCC[1].menuAction = 5;
+ preload->unkCC[2].text = nullText;
+ preload->unkCC[2].menuAction = -1;
+}
diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c
index f711b92..70b063c 100644
--- a/src/code_8041AD0.c
+++ b/src/code_8041AD0.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "dungeon_entity.h"
#include "dungeon_global_data.h"
+#include "constants/direction.h"
struct unkStruct_80420E8
{
@@ -147,7 +148,7 @@ void sub_8041BE8(struct DungeonEntity *r0)
void sub_8041BF8(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 0xA, 8);
+ sub_806CDD4(r0, 0xA, NUM_DIRECTIONS);
}
void sub_8041C08(struct DungeonEntity *r0)
diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c
index 04e70a9..a5cd497 100644
--- a/src/code_80521D0_1.c
+++ b/src/code_80521D0_1.c
@@ -6,7 +6,7 @@
#include "pokemon.h"
#include "constants/direction.h"
-extern struct DungeonEntity *sub_8085480(void);
+extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
extern struct DungeonEntity *sub_8085680(u32);
extern char gUnknown_202E038[0x50];
extern struct DungeonGlobalData *gDungeonGlobalData;
@@ -90,8 +90,7 @@ extern void sub_806CE68(struct DungeonEntity *, u32);
extern void sub_804539C(struct DungeonEntity *, u32, u32);
extern void sub_803E46C(u32);
extern void sub_8042B0C(struct DungeonEntity *);
-extern void sub_8085918(struct DungeonEntity *, u32);
-extern void sub_806CE68(struct DungeonEntity *r0, u32);
+extern void SetFacingDirection(struct DungeonEntity *, u32);
extern void sub_8052910(u32 *);
extern void sub_803E708(u32, u32);
extern u8 EntityExists(struct DungeonEntity *);
@@ -185,7 +184,7 @@ void sub_808BC20(struct DungeonEntity * param_1)
PlaySoundEffect(0x298);
for(uVar1 = 0; uVar1 < 0x19; uVar1++){
- sub_8085918(param_1,uVar1 & 7);
+ SetFacingDirection(param_1,uVar1 & DIRECTION_MASK);
sub_803E708(3,0x46);
}
param_1->entityData->unk15E = 1;
@@ -278,24 +277,24 @@ u8 JirachiFriendAreaSearch(void)
void sub_808BDEC(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LugiaEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x1b);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LugiaEntity = sub_8085680(0x1b);
sub_8083F14();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if (HasRecruitedMon(SPECIES_LUGIA)) {
sub_8083E88(0x23);
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(LugiaEntity,0x21c,0);
}
else {
gDungeonGlobalData->unk7 = 1;
- sub_8085918(uVar3,0);
+ SetFacingDirection(LugiaEntity, DIRECTION_SOUTH);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LUGIA);
}
@@ -309,11 +308,11 @@ void sub_808BE70(u8 param_1,u8 param_2)
void LugiaPreFightDialogue(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LugiaEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x1b);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LugiaEntity = sub_8085680(0x1b);
if (HasRecruitedMon(SPECIES_LUGIA)) {
sub_8086448();
sub_80866C4(&gUnknown_8106068);
@@ -330,21 +329,21 @@ void LugiaPreFightDialogue(void)
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8105F74);
PlaySoundEffect(0x1f8);
- sub_80861D4(uVar3,0xd,0);
+ sub_80861D4(LugiaEntity,0xd,0);
sub_803E708(0x2b,0x46);
- sub_80861B8(uVar3,0,0);
+ sub_80861B8(LugiaEntity,0,0);
sub_8052910(&gUnknown_8105FA0);
sub_808BFA0();
sub_8052910(&gUnknown_8105FD8);
sub_808C02C();
sub_8085C54(0xffffff06,0xffffff06,0xffffff06,1,0);
sub_8083F14();
- sub_80861D4(uVar3,7,0);
+ sub_80861D4(LugiaEntity,7,0);
sub_8052910(&gUnknown_8106024);
sub_808BFA0();
- SetupBossFightHP(uVar3,800,0x20);
+ SetupBossFightHP(LugiaEntity,800,0x20);
sub_8083E88(0x23);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -415,25 +414,25 @@ void sub_808C0CC(void)
void sub_808C10C(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * KyogreEntity;
u32 uVar3;
s32 iVar2;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x1c);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ KyogreEntity = sub_8085680(0x1c);
sub_8083F14();
sub_80854D4();
sub_8085930(4);
if (HasRecruitedMon(SPECIES_KYOGRE)) {
- sub_8068FE0(uVar2,0x21c,0);
+ sub_8068FE0(KyogreEntity,0x21c,0);
}
else {
gDungeonGlobalData->unk7 = 1;
- sub_8085918(uVar2,0);
+ SetFacingDirection(KyogreEntity, DIRECTION_SOUTH);
}
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
uVar3 = sub_803F994();
iVar2 = sub_803F9B0();
sub_803F878(uVar3,iVar2 + -0x1000);
@@ -452,15 +451,15 @@ void sub_808C1A4(u8 param_1,u8 param_2)
void KyogrePreFightDialogue(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *KyogreEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x1c);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ KyogreEntity = sub_8085680(0x1c);
sub_8083F14();
if (HasRecruitedMon(SPECIES_KYOGRE)) {
sub_8083EA8(0x23,0x3c);
- SpriteLookAroundEffect(iVar2);
+ SpriteLookAroundEffect(LeaderEntity);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81062A8);
sub_803E708(10,0x46);
@@ -492,9 +491,9 @@ void KyogrePreFightDialogue(void)
// power!
sub_8052910(&gUnknown_810627C);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,600,0xb);
+ SetupBossFightHP(KyogreEntity,600,0xb);
sub_8083E88(0x23);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -537,9 +536,9 @@ void sub_808C360(void)
void sub_808C3A0(void)
{
- struct DungeonEntity * iVar2;
+ struct DungeonEntity * LeaderEntity;
- iVar2 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8083F14();
sub_80854D4();
sub_8085930(4);
@@ -551,7 +550,7 @@ void sub_808C3A0(void)
gDungeonGlobalData->unk7 = 1;
sub_808563C(sub_808C5A0);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_DEOXYS_NORMAL);
}
@@ -565,9 +564,9 @@ void sub_808C414(u8 param_1,u8 param_2)
void DeoxysPreFightDialogue(void)
{
- struct DungeonEntity * iVar2;
+ struct DungeonEntity * LeaderEntity;
- iVar2 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8086448();
if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) {
// There appears to be no one here.
@@ -585,7 +584,7 @@ void DeoxysPreFightDialogue(void)
sub_8052910(&gUnknown_8106390);
sub_803E708(10,0x46);
sub_808563C(sub_808C5AC);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -629,29 +628,29 @@ void sub_808C590(struct DungeonEntity *r0)
void sub_808C5A0(struct DungeonEntity *r0)
{
- sub_8085918(r0, 0);
+ SetFacingDirection(r0, DIRECTION_SOUTH);
}
void sub_808C5AC(struct DungeonEntity *r0)
{
- SetupBossFightHP(r0, 0x3b6, 0x20);
+ SetupBossFightHP(r0, 950, 0x20);
}
void sub_808C5C0(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * CelebiEntity;
u32 uVar3;
s32 iVar2;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x1e);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ CelebiEntity = sub_8085680(0x1e);
sub_8083E88(0x7f);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar2,0);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+ SetFacingDirection(CelebiEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
uVar3 = sub_803F994();
iVar2 = sub_803F9B0();
sub_803F878(uVar3,iVar2 + 0xfffff000);
@@ -666,26 +665,26 @@ void nullsub_100(u32 r0, u32 r1, u32 r2)
#ifdef NONMATCHING
void CelebiJoinDialogue(void)
{
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
s32 state;
s32 menuChoice;
- struct DungeonEntity *local_1c;
+ struct DungeonEntity *CelebiEntity;
- uVar2 = sub_8085480();
- local_1c = sub_8085680(0x1e);
- if ((HasRecruitedMon(SPECIES_CELEBI)) || (sub_806FD18(local_1c) == '\0'))
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ CelebiEntity = sub_8085680(0x1e);
+ if ((HasRecruitedMon(SPECIES_CELEBI)) || (sub_806FD18(CelebiEntity) == '\0'))
{
sub_8068FE0(local_1c,0x21c,0);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(LeaderEntity);
sub_803E708(10,0x46);
// .........
sub_8052910(&gUnknown_810663C);
}
else
{
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(LeaderEntity);
sub_803E708(10,0x46);
- sub_80862BC(uVar2);
+ sub_80862BC(LeaderEntity);
sub_803E708(10,0x46);
// Oh? There's someone there.
sub_8052910(&gUnknown_81063D0);
@@ -697,12 +696,12 @@ void CelebiJoinDialogue(void)
// The Time-Traveling Pokemon {ARG_POKEMON_2} (Celebi)!
sub_8052910(&gUnknown_8106400);
PlaySoundEffect(0x1c7);
- sub_806CDD4(local_1c,10,0);
+ sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
sub_803E708(0x14,0x46);
- sub_806CE68(local_1c,0);
+ sub_806CE68(CelebiEntity, DIRECTION_SOUTH);
sub_803E708(4,0x46);
PlaySoundEffect(0x1c7);
- sub_806CDD4(local_1c,10,0);
+ sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
sub_8052910(&gUnknown_810643C);
sub_803E708(10,0x46);
state = 0;
@@ -725,7 +724,7 @@ void CelebiJoinDialogue(void)
}
sub_8083E88(0x7f);
PlaySoundEffect(0x1c7);
- sub_80861D4(local_1c,0xd,0);
+ sub_80861D4(CelebiEntity,0xd,0);
sub_803E708(0x37,0x46);
PlaySoundEffect(0x1d5);
sub_803E708(0x1a,0x46);
@@ -733,12 +732,12 @@ void CelebiJoinDialogue(void)
sub_803E708(0x1c,0x46);
sub_8052910(&gUnknown_8106468);
sub_803E708(10,0x46);
- sub_806FDF4(uVar2,local_1c,&local_1c);
+ sub_806FDF4(LeaderEntity,CelebiEntity,&CelebiEntity);
sub_8083E88(0x7f);
sub_8052910(&gUnknown_810648C);
sub_803E708(10,0x46);
PlaySoundEffect(0x1c7);
- sub_80861D4(local_1c,0xd,0);
+ sub_80861D4(CelebiEntity,0xd,0);
sub_803E708(0x37,0x46);
PlaySoundEffect(0x1d5);
sub_803E708(0x1a,0x46);
@@ -765,13 +764,13 @@ void CelebiJoinDialogue(void)
{
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8106500);
- sub_80861F8(0x3e,local_1c,1);
+ sub_80861F8(0x3e,CelebiEntity,1);
sub_803E708(0x18,0x46);
- sub_80861F8(0x3e,local_1c,1);
+ sub_80861F8(0x3e,CelebiEntity,1);
sub_803E708(0xe,0x46);
sub_8052910(&gUnknown_8106534);
sub_803E708(10,0x46);
- sub_808C8E0(local_1c);
+ sub_808C8E0(CelebiEntity);
sub_8052910(&gUnknown_8106560);
sub_803E708(10,0x46);
state = 2;
@@ -793,7 +792,7 @@ void CelebiJoinDialogue(void)
"\tmov r7, r8\n"
"\tpush {r7}\n"
"\tsub sp, 0x4\n"
- "\tbl sub_8085480\n"
+ "\tbl xxx_call_GetLeaderEntity\n"
"\tadds r7, r0, 0\n"
"\tmovs r0, 0x1E\n"
"\tbl sub_8085680\n"
@@ -1075,7 +1074,7 @@ void sub_808C8E0(struct DungeonEntity *param_1)
s32 iVar1;
PlaySoundEffect(0x1a5);
- sub_806CDD4(param_1, 0, 0);
+ sub_806CDD4(param_1, 0, DIRECTION_SOUTH);
for(iVar1 = 0; iVar1 < 16; iVar1++){
param_1->entityData->unk174 = iVar1 * 256;
sub_803E46C(0x46);
@@ -1100,7 +1099,7 @@ void sub_808C948(struct DungeonEntity *param_1, u8 param_2)
if (param_2 == 0x37) {
flag = FALSE;
- for(iVar3 = 0; iVar3 < 0x10; iVar3++){
+ for(iVar3 = 0; iVar3 < DUNGEON_MAX_WILD_POKEMON; iVar3++){
iVar2 = gDungeonGlobalData->wildPokemon[iVar3];
if ((iVar2 != param_1) && (EntityExists(iVar2) != 0)) {
flag = TRUE;
@@ -1124,38 +1123,38 @@ void sub_808C998(void)
void sub_808C9B0(struct DungeonEntity *param_1)
{
param_1->entityData->facingDir = DIRECTION_NORTH;
- sub_806CE68(param_1, 4);
+ sub_806CE68(param_1, DIRECTION_NORTH);
}
void sub_808C9C4(void)
{
- struct DungeonEntity *temp;
- struct DungeonEntity *temp_2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MedichamEntity;
- temp = sub_8085480();
- temp_2 = sub_8085680(7);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MedichamEntity = sub_8085680(7);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(temp_2, 0);
- sub_8085860(temp->posWorldX, temp->posWorldY - 3);
+ SetFacingDirection(MedichamEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
}
// Medicham Rescue Dialogue?
void MedichamRescueDialogue(void)
{
- struct DungeonEntity *temp;
+ struct DungeonEntity *MedichamEntity;
s32 counter;
- temp = sub_8085680(7);
- SpriteLookAroundEffect(temp);
+ MedichamEntity = sub_8085680(7);
+ SpriteLookAroundEffect(MedichamEntity);
sub_803E708(0xA, 0x46);
// Oh my I can't seem to find a way out...
sub_8052910(&gUnknown_8106778);
sub_803E708(0xA, 0x46);
- sub_80869E4(temp, 4, 2, 4);
+ sub_80869E4(MedichamEntity, 4, 2, 4);
sub_803E708(0xA, 0x46);
// What am I to do...?
sub_8052910(&gUnknown_81067BC);
@@ -1163,18 +1162,18 @@ void MedichamRescueDialogue(void)
sub_8086448();
sub_8086598();
sub_803E708(0x20, 0x46);
- sub_80862BC(temp);
+ sub_80862BC(MedichamEntity);
sub_803E708(0x20, 0x46);
- sub_80869E4(temp, 4, 2, 0);
+ sub_80869E4(MedichamEntity, 4, 2, 0);
sub_8052910(&gUnknown_81067E0);
sub_803E708(0xA, 0x46);
PlaySoundEffect(0x1c7);
- sub_806CDD4(temp, 0xA, 0);
+ sub_806CDD4(MedichamEntity, 0xA, DIRECTION_SOUTH);
sub_803E708(0x14, 0x46);
- sub_806CE68(temp, 0);
+ sub_806CE68(MedichamEntity, DIRECTION_SOUTH);
sub_803E708(0x4, 0x46);
PlaySoundEffect(0x1c7);
- sub_806CDD4(temp, 0xA, 0);
+ sub_806CDD4(MedichamEntity, 0xA, DIRECTION_SOUTH);
sub_803E708(0x14, 0x46);
// Yes Yes
// I am so lucky
@@ -1182,32 +1181,32 @@ void MedichamRescueDialogue(void)
// There appears to be no one here
sub_8052910(&gUnknown_8106834);
sub_803E708(0xA, 0x46);
- sub_806CDD4(temp, 0, 0);
+ sub_806CDD4(MedichamEntity, 0, DIRECTION_SOUTH);
for(counter = 0x17; counter >= 0; counter--)
{
- sub_804539C(temp, 0, 0x80 << 1);
+ sub_804539C(MedichamEntity, 0, 0x80 << 1);
sub_803E46C(0x46);
}
- sub_806CE68(temp, 0);
+ sub_806CE68(MedichamEntity, DIRECTION_SOUTH);
sub_803E708(0x20, 0x46);
- sub_8042B0C(temp);
- sub_8068FE0(temp, 0x21C, 0);
+ sub_8042B0C(MedichamEntity);
+ sub_8068FE0(MedichamEntity, 0x21C, 0);
gDungeonGlobalData->unk4 = 1;
gDungeonGlobalData->unk11 = 4;
}
void sub_808CB5C(void)
{
- struct DungeonEntity *temp;
- struct DungeonEntity *temp_2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MedichamEntity;
- temp = sub_8085480();
- temp_2 = sub_8085680(7);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MedichamEntity = sub_8085680(7);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8068FE0(temp_2, 0x21C, 0);
- sub_8085860(temp->posWorldX, temp->posWorldY);
+ sub_8068FE0(MedichamEntity, 0x21C, 0);
+ sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
}
@@ -1217,34 +1216,34 @@ void DummyFightDialogue(void)
void sub_808CBB0(void)
{
- struct DungeonEntity *temp;
- struct DungeonEntity *temp_2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *SmeargleEntity;
- temp = sub_8085480();
- temp_2 = sub_8085680(0x1F);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SmeargleEntity = sub_8085680(0x1F);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(temp_2, 0);
- sub_8085860(temp->posWorldX, temp->posWorldY - 3);
+ SetFacingDirection(SmeargleEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE);
}
// Smeargle Rescue dialogue scene
void SmeargleRescueDialogue(void)
{
- struct DungeonEntity *temp;
+ struct DungeonEntity *SmeargleEntity;
s32 counter;
- temp = sub_8085680(0x1F);
- SpriteLookAroundEffect(temp);
+ SmeargleEntity = sub_8085680(0x1F);
+ SpriteLookAroundEffect(SmeargleEntity);
sub_803E708(0xA, 0x46);
// Ohhh...
// I've lost my bearings
sub_8052910(&gUnknown_810688C);
sub_803E708(0xA, 0x46);
- sub_80869E4(temp, 4, 2, 4);
+ sub_80869E4(SmeargleEntity, 4, 2, 4);
sub_803E708(0xA, 0x46);
// I can't get out...
// I'm hungry...
@@ -1254,34 +1253,34 @@ void SmeargleRescueDialogue(void)
sub_8086448();
sub_8086598();
sub_803E708(0x20, 0x46);
- sub_80862BC(temp);
+ sub_80862BC(SmeargleEntity);
sub_803E708(0x20, 0x46);
- sub_80869E4(temp, 4, 2, 0);
+ sub_80869E4(SmeargleEntity, 4, 2, 0);
// Oh! You are?
sub_8052910(&gUnknown_8106918);
sub_803E708(0xA, 0x46);
PlaySoundEffect(0x1c7);
- sub_806CDD4(temp, 0xA, 0);
+ sub_806CDD4(SmeargleEntity, 0xA, DIRECTION_SOUTH);
sub_803E708(0x14, 0x46);
- sub_806CE68(temp, 0);
+ sub_806CE68(SmeargleEntity, DIRECTION_SOUTH);
sub_803E708(0x4, 0x46);
PlaySoundEffect(0x1c7);
- sub_806CDD4(temp, 0xA, 0);
+ sub_806CDD4(SmeargleEntity, 0xA, DIRECTION_SOUTH);
sub_803E708(0x14, 0x46);
// Did you maybe come to rescue me?
// Am I glad to see you
sub_8052910(&gUnknown_8106934);
sub_803E708(0xA, 0x46);
- sub_806CDD4(temp, 0, 0);
+ sub_806CDD4(SmeargleEntity, 0, DIRECTION_SOUTH);
for(counter = 0x17; counter >= 0; counter--)
{
- sub_804539C(temp, 0, 0x80 << 1);
+ sub_804539C(SmeargleEntity, 0, 0x80 << 1);
sub_803E46C(0x46);
}
- sub_806CE68(temp, 0);
+ sub_806CE68(SmeargleEntity, DIRECTION_SOUTH);
sub_803E708(0x20, 0x46);
- sub_8042B0C(temp);
- sub_8068FE0(temp, 0x21C, 0);
+ sub_8042B0C(SmeargleEntity);
+ sub_8068FE0(SmeargleEntity, 0x21C, 0);
gDungeonGlobalData->unk4 = 1;
gDungeonGlobalData->unk11 = 4;
@@ -1289,17 +1288,17 @@ void SmeargleRescueDialogue(void)
void sub_808CD44(void)
{
- struct DungeonEntity *temp;
- struct DungeonEntity *temp_2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *SmeargleEntity;
- temp = sub_8085480();
- temp_2 = sub_8085680(0x1F);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SmeargleEntity = sub_8085680(0x1F);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8068FE0(temp_2, 0x21C, 0);
- sub_8085860(temp->posWorldX, temp->posWorldY - 3);
+ sub_8068FE0(SmeargleEntity, 0x21C, 0);
+ sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE);
}
diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c
index b29e46e..502e8ee 100644
--- a/src/code_8057824_1.c
+++ b/src/code_8057824_1.c
@@ -219,7 +219,7 @@ extern u32 gUnknown_81019E4;
extern u32 gUnknown_8101A04;
extern u32 gUnknown_8101A38;
-extern struct DungeonEntity *sub_8085480(void);
+extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
extern struct DungeonEntity *sub_8085680(u32);
extern void sub_808BBA8(struct DungeonEntity * );
extern void sub_80855E4(void *);
@@ -233,7 +233,7 @@ extern void sub_808BC20(struct DungeonEntity *);
extern void sub_80862BC(struct DungeonEntity *);
extern void sub_8086448();
-extern void SpriteLookAroundEffect();
+extern void SpriteLookAroundEffect(struct DungeonEntity *);
extern u32 sub_80861F8(u32, struct DungeonEntity *, u32);
extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
extern void sub_80858AC(u32 *, u32);
@@ -247,7 +247,7 @@ extern u8 HasRecruitedMon(u32);
extern void sub_80854D4();
extern void sub_8085930(u32);
extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
-extern void sub_8085918(struct DungeonEntity *, u32);
+extern void SetFacingDirection(struct DungeonEntity *, u32);
extern void sub_8049ED4();
extern void sub_8085860(s32 r0, u32 r1);
extern void sub_806CE68(struct DungeonEntity *, u32);
@@ -310,7 +310,7 @@ void sub_80891B0();
void sub_8089224();
void sub_80891D0();
void sub_808919C();
-void sub_8088D30(void);
+void GroudonScreenFlash2(void);
extern void sub_8083F14();
extern u8 EntityExists(struct DungeonEntity *);
@@ -318,7 +318,7 @@ extern u8 sub_8086AE4(u32);
extern void sub_8072008(struct DungeonEntity *, struct DungeonEntity *, s16, u32, u32);
-extern struct DungeonEntity *sub_808548C();
+extern struct DungeonEntity *GetPartnerEntity();
extern void sub_80856E0(struct DungeonEntity *, u32);
extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
extern void sub_804539C(struct DungeonEntity *, u32, u32);
@@ -336,8 +336,8 @@ extern u32 sub_803F994();
extern s32 sub_803F9B0();
extern void sub_803F878(u32,s32);
-void sub_8088C08(struct DungeonEntity * param_1);
-void sub_8088CA0(void);
+void SceneGroudonMovement(struct DungeonEntity * param_1);
+void GroudonScreenFlash(void);
void ArticunoScreenFlash(void);
void sub_8088484(struct DungeonEntity *param_1);
void sub_8088574(void);
@@ -368,11 +368,11 @@ extern u32 gUnknown_8101918;
void ZapdosReFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *ZapdosEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(8);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ZapdosEntity = sub_8085680(8);
sub_8086448();
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81017E4);
@@ -380,24 +380,24 @@ void ZapdosReFightDialogue(void)
PlaySoundEffect(0x1da);
sub_8052910(&gUnknown_81015A0);
sub_803E708(10,0x46);
- sub_8087704(uVar2);
+ sub_8087704(ZapdosEntity);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8101898);
sub_808775C(1);
sub_8052910(&gUnknown_81018EC);
sub_808775C(2);
sub_8052910(&gUnknown_8101918);
- SetupBossFightHP(uVar2,300,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(ZapdosEntity,300,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void ZapdosPostStoryPreFightDialogue(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * ZapdosEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(8);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ZapdosEntity = sub_8085680(8);
sub_8086448();
if (sub_8086AE4(SPECIES_ZAPDOS)) {
sub_80866C4(&gUnknown_8101A38);
@@ -406,7 +406,7 @@ void ZapdosPostStoryPreFightDialogue(void)
sub_808775C(1);
PlaySoundEffect(0x1da);
sub_8052910(&gUnknown_810193C);
- sub_8087704(uVar3);
+ sub_8087704(ZapdosEntity);
sub_8052910(&gUnknown_8101970);
sub_808775C(1);
sub_8052910(&gUnknown_8101994);
@@ -415,8 +415,8 @@ void ZapdosPostStoryPreFightDialogue(void)
sub_808775C(2);
sub_8052910(&gUnknown_8101A04);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,300,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(ZapdosEntity,300,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -473,45 +473,45 @@ void sub_808775C(int param_1)
void sub_80877E8(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * MoltresEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(9);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MoltresEntity = sub_8085680(9);
sub_8083E88(0x26);
sub_8085374();
sub_80854D4();
sub_8085930(6);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX + -3,iVar1->posWorldY + -2);
+ SetFacingDirection(MoltresEntity, DIRECTION_SOUTH);
+ sub_8086A3C(MoltresEntity);
+ sub_8085860(LeaderEntity->posWorldX + -3,LeaderEntity->posWorldY + -2);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MOLTRES);
}
void sub_8087848(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MoltresEntity;
u32 uVar4;
s32 iVar3;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(9);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MoltresEntity = sub_8085680(9);
sub_8083E88(0x26);
sub_80854D4();
sub_8085930(6);
sub_80855E4(sub_8086A3C);
if (sub_8086AE4(SPECIES_MOLTRES)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(MoltresEntity,0x21c,0);
}
else {
- sub_8072008(uVar3,uVar3,gUnknown_80F57CE,0,0);
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
+ sub_8072008(MoltresEntity,MoltresEntity,gUnknown_80F57CE,0,0);
+ SetFacingDirection(MoltresEntity, DIRECTION_SOUTH);
+ sub_8086A3C(MoltresEntity);
}
- sub_8085860(iVar2->posWorldX - 5, iVar2->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX - 5, LeaderEntity->posWorldY);
uVar4 = sub_803F994();
iVar3 = sub_803F9B0();
sub_803F878(uVar4,iVar3 + -0x1000);
@@ -530,21 +530,21 @@ void sub_80878F4(char param_1, s32 param_2)
void MoltresPreFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *PartnerEntity;
+ struct DungeonEntity *MoltresEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_808548C();
- uVar3 = sub_8085680(9);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
+ MoltresEntity = sub_8085680(9);
sub_8087D80(0xc,5);
sub_8086500();
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8101A9C);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,5);
+ sub_80869E4(PartnerEntity,4,1,5);
sub_803E708(4,0x46);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8101AD4);
sub_803E708(10,0x46);
@@ -552,11 +552,11 @@ void MoltresPreFightDialogue(void)
sub_8087DE8(9,5);
sub_8052910(&gUnknown_8101C30);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(iVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
sub_8052910(&gUnknown_8101CBC);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,2,6);
+ sub_80869E4(PartnerEntity,4,2,6);
sub_8086690();
sub_8052910(&gUnknown_8101D8C);
sub_803E708(10,0x46);
@@ -571,7 +571,7 @@ void MoltresPreFightDialogue(void)
sub_8052910(&gUnknown_8101E1C);
sub_803E708(10,0x46);
PlaySoundEffect(0x1cf);
- sub_80856E0(uVar2,4);
+ sub_80856E0(PartnerEntity,4);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8101EAC);
sub_803E708(10,0x46);
@@ -585,7 +585,7 @@ void MoltresPreFightDialogue(void)
sub_803E708(10,0x46);
sub_8087D80(0xc,5);
sub_8087DE8(9,5);
- sub_8087D30(uVar3);
+ sub_8087D30(MoltresEntity);
sub_808663C();
sub_8087EB0();
sub_8052910(&gUnknown_81020D4);
@@ -593,40 +593,40 @@ void MoltresPreFightDialogue(void)
sub_8087DE8(0xb,6);
sub_8052910(&gUnknown_8102108);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,400,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(MoltresEntity,400,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void MoltresReFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *PartnerEntity;
+ struct DungeonEntity *MoltresEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_808548C();
- uVar3 = sub_8085680(9);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
+ MoltresEntity = sub_8085680(9);
sub_8087D80(10,5);
sub_8086500();
sub_803E708(10,0x46);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8102158);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(iVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
sub_8052910(&gUnknown_8102190);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,2,6);
- sub_80869E4(iVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,2,6);
+ sub_80869E4(LeaderEntity,4,2,6);
sub_8086690();
sub_8087F24();
sub_803E708(10,0x46);
sub_8085930(5);
sub_803E708(4,0x46);
sub_8085930(4);
- sub_8087D30(uVar3);
+ sub_8087D30(MoltresEntity);
sub_808663C();
sub_8087EB0();
sub_8052910(&gUnknown_8102200);
@@ -636,17 +636,17 @@ void MoltresReFightDialogue(void)
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81022F8);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,400,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(MoltresEntity,400,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void MoltresPostStoryPreFightDialogue(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * MoltresEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(9);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MoltresEntity = sub_8085680(9);
sub_8087D80(0xc,5);
sub_808654C();
if (sub_8086AE4(SPECIES_MOLTRES)) {
@@ -664,7 +664,7 @@ void MoltresPostStoryPreFightDialogue(void)
sub_8085930(5);
sub_803E708(4,0x46);
sub_8085930(4);
- sub_8087D30(uVar3);
+ sub_8087D30(MoltresEntity);
sub_8052910(&gUnknown_8102398);
sub_8087D80(0xc,5);
sub_8087DE8(9,5);
@@ -674,8 +674,8 @@ void MoltresPostStoryPreFightDialogue(void)
sub_8087DE8(0xb,6);
sub_8052910(&gUnknown_8102454);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,400,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(MoltresEntity,400,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -885,56 +885,56 @@ void sub_8087F24(void)
void sub_8087F54(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *ArticunoEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xd);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ArticunoEntity = sub_8085680(0xd);
sub_8083E88(0x72);
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar3, 0);
- sub_8086A3C(uVar3);
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY + -3);
+ SetFacingDirection(ArticunoEntity, DIRECTION_SOUTH);
+ sub_8086A3C(ArticunoEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ARTICUNO);
}
void sub_8087FB4(void)
{
- struct DungeonEntity *iVar2;
+ struct DungeonEntity *ArticunoEntity;
- iVar2 = sub_8085680(0xd);
+ ArticunoEntity = sub_8085680(0xd);
sub_8083E88(0x72);
sub_8085374();
sub_80854D4();
sub_8085930(4);
- sub_8085918(iVar2, 0);
- sub_806CDD4(iVar2, 0xF, 0);
+ SetFacingDirection(ArticunoEntity, DIRECTION_SOUTH);
+ sub_806CDD4(ArticunoEntity, 0xF, DIRECTION_SOUTH);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ARTICUNO);
}
void sub_8087FF8(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *ArticunoEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xd);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ArticunoEntity = sub_8085680(0xd);
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if (sub_8086AE4(SPECIES_ARTICUNO)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(ArticunoEntity,0x21c,0);
}
else {
- sub_8072008(uVar3,uVar3,gUnknown_80F57D0,0,0);
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
+ sub_8072008(ArticunoEntity,ArticunoEntity,gUnknown_80F57D0,0,0);
+ SetFacingDirection(ArticunoEntity, DIRECTION_SOUTH);
+ sub_8086A3C(ArticunoEntity);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY + -3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ARTICUNO);
}
@@ -950,49 +950,49 @@ void sub_8088088(char param_1, s32 param_2)
void ArticunoPreFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *PartnerEntity;
+ struct DungeonEntity *ArticunoEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_808548C();
- uVar3 = sub_8085680(0xd);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
+ ArticunoEntity = sub_8085680(0xd);
sub_8086448();
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
sub_8052910(&gUnknown_8102478);
sub_803E708(10,0x46);
sub_8086598();
sub_8083F14();
sub_8052910(&gUnknown_81025B4);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(iVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
sub_8052910(&gUnknown_81025D4);
sub_803E708(10,0x46);
- sub_8085918(iVar1,6);
+ SetFacingDirection(LeaderEntity, DIRECTION_WEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,5);
+ SetFacingDirection(LeaderEntity, DIRECTION_NORTHWEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,6);
+ SetFacingDirection(LeaderEntity, DIRECTION_WEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,7);
+ SetFacingDirection(LeaderEntity, DIRECTION_SOUTHWEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,6);
+ SetFacingDirection(LeaderEntity, DIRECTION_WEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,5);
+ SetFacingDirection(LeaderEntity, DIRECTION_NORTHWEST);
sub_803E708(4,0x46);
- sub_8085918(iVar1,6);
+ SetFacingDirection(LeaderEntity, DIRECTION_WEST);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8102610);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81026C4);
sub_803E708(10,0x46);
- sub_80869E4(iVar1,4,1,4);
- sub_80869E4(uVar2,4,2,4);
+ sub_80869E4(LeaderEntity,4,1,4);
+ sub_80869E4(PartnerEntity,4,2,4);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(iVar1);
+ SpriteLookAroundEffect(LeaderEntity);
sub_8052910(&gUnknown_810270C);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_810272C);
@@ -1010,51 +1010,51 @@ void ArticunoPreFightDialogue(void)
sub_8052910(&gUnknown_8102810);
sub_803E708(10,0x46);
PlaySoundEffect(0x1ea);
- sub_8088484(uVar3);
+ sub_8088484(ArticunoEntity);
sub_80865E8();
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102840);
- sub_806CDD4(uVar3,0xf,0);
+ sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
ArticunoScreenFlash();
sub_8052910(&gUnknown_810286C);
- sub_806CDD4(uVar3,0x10,0);
+ sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH);
ArticunoScreenFlash();
sub_8052910(&gUnknown_81028B8);
- sub_806CDD4(uVar3,0xf,0);
+ sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x10,0x46);
- SetupBossFightHP(uVar3,0x1c2,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void ArticunoReFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *ArticunoEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0xd);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ArticunoEntity = sub_8085680(0xd);
gDungeonGlobalData->unkE265 = 7;
sub_807EAA0(0,1);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_81028D4);
- sub_806CDD4(uVar2,0x10,0);
+ sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH);
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102918);
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102948);
- sub_806CDD4(uVar2,0xf,0);
+ sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x28,0x46);
- SetupBossFightHP(uVar2,0x1c2,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void ArticunoPostStoryPreFightDialogue(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *ArticunoEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xd);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ ArticunoEntity = sub_8085680(0xd);
sub_8086448();
if (sub_8086AE4(SPECIES_ARTICUNO)) {
sub_80866C4(&gUnknown_8102A9C);
@@ -1067,21 +1067,21 @@ void ArticunoPostStoryPreFightDialogue(void)
PlaySoundEffect(0x1da);
sub_8052910(&gUnknown_8102984);
sub_803E708(10,0x46);
- sub_8088484(uVar3);
+ sub_8088484(ArticunoEntity);
ArticunoScreenFlash();
sub_8052910(&gUnknown_81029B4);
- sub_806CDD4(uVar3,0xf,0);
+ sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102A18);
- sub_806CDD4(uVar3,0x10,0);
+ sub_806CDD4(ArticunoEntity,0x10,DIRECTION_SOUTH);
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102A24);
ArticunoScreenFlash();
sub_8052910(&gUnknown_8102A74);
- sub_806CDD4(uVar3,0xf,0);
+ sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x28,0x46);
- SetupBossFightHP(uVar3,0x1c2,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -1147,16 +1147,16 @@ void sub_80885A0(void)
void sub_80885C4(void)
{
- struct DungeonEntity * iVar1;
+ struct DungeonEntity * LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8083ED8(0x3c);
sub_803E708(0x3c,0x46);
sub_8083F14();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
}
void sub_8088608(void)
@@ -1175,49 +1175,49 @@ void sub_8088618(void)
void sub_808862C(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * AlakazamEntity;
+ struct DungeonEntity * GroudonEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(10);
- uVar3 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ AlakazamEntity = sub_8085680(10);
+ GroudonEntity = sub_8085680(0xe);
sub_8083E88(0x72);
sub_80867F4();
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,4);
- sub_80861D4(uVar2,0xd,4);
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY -3);
+ SetFacingDirection(AlakazamEntity, DIRECTION_NORTH);
+ sub_80861D4(AlakazamEntity,0xd,4);
+ SetFacingDirection(GroudonEntity, DIRECTION_SOUTH);
+ sub_8086A3C(GroudonEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY -3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON);
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM);
}
void sub_80886C4(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * AlakazamEntity;
+ struct DungeonEntity * GroudonEntity;
u32 uVar4;
s32 iVar2;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(10);
- uVar3 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ AlakazamEntity = sub_8085680(10);
+ GroudonEntity = sub_8085680(0xe);
PlaySoundEffect(0x3e5);
sub_80867F4();
sub_8085374();
sub_80854D4();
sub_8085930(4);
- sub_8068FE0(uVar2,0x21c,0);
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+ sub_8068FE0(AlakazamEntity,0x21c,0);
+ SetFacingDirection(GroudonEntity, DIRECTION_SOUTH);
+ sub_8086A3C(GroudonEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
uVar4 = sub_803F994();
iVar2 = sub_803F9B0();
sub_803F878(uVar4,iVar2 + -0x1000);
@@ -1227,27 +1227,27 @@ void sub_80886C4(void)
void sub_808875C(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
- struct DungeonEntity * uVar4;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * AlakazamEntity;
+ struct DungeonEntity * GroudonEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(10);
- uVar4 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ AlakazamEntity = sub_8085680(10);
+ GroudonEntity = sub_8085680(0xe);
sub_80867F4();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8068FE0(uVar3,0x21c,0);
- if (sub_8086AE4(0x19b)) {
- sub_8068FE0(uVar4,0x21c,0);
+ sub_8068FE0(AlakazamEntity,0x21c,0);
+ if (sub_8086AE4(SPECIES_GROUDON)) {
+ sub_8068FE0(GroudonEntity,0x21c,0);
}
else {
- sub_8072008(uVar4,uVar4,gUnknown_80F57D2,0,0);
- sub_8085918(uVar4,0);
- sub_80861D4(uVar4,0xf,0);
+ sub_8072008(GroudonEntity,GroudonEntity,gUnknown_80F57D2,0,0);
+ SetFacingDirection(GroudonEntity, DIRECTION_SOUTH);
+ sub_80861D4(GroudonEntity,0xf,0);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON);
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM);
}
@@ -1267,15 +1267,15 @@ void sub_8088848(void)
void GroudonPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
- struct DungeonEntity * uVar3;
- struct DungeonEntity * uVar4;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * PartnerEntity;
+ struct DungeonEntity * AlakazamEntity;
+ struct DungeonEntity * GroudonEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_808548C();
- uVar3 = sub_8085680(10);
- uVar4 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
+ AlakazamEntity = sub_8085680(10);
+ GroudonEntity = sub_8085680(0xe);
sub_8086448();
sub_8052910(&gUnknown_8102E70);
sub_803E708(10,0x46);
@@ -1294,21 +1294,21 @@ void GroudonPreFightDialogue(void)
sub_803E708(0x3c,0x46);
sub_8052910(&gUnknown_8102EF8);
sub_803E708(10,0x46);
- sub_8088CA0();
+ GroudonScreenFlash();
sub_8052910(&gUnknown_8102F30);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8102F64);
sub_803E708(10,0x46);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
sub_8052910(&gUnknown_8102F84);
sub_803E708(10,0x46);
sub_808682C();
sub_803E708(0x3c,0x46);
- sub_80861B8(uVar3,6,4);
+ sub_80861B8(AlakazamEntity,6,4);
PlaySoundEffect(0x205);
sub_8086738();
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(AlakazamEntity,0x21c,0);
sub_8052910(&gUnknown_8102FAC);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8102FC4);
@@ -1317,7 +1317,7 @@ void GroudonPreFightDialogue(void)
sub_8086764();
sub_803E708(0x28,0x46);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
sub_8052910(&gUnknown_8102FD8);
sub_803E708(10,0x46);
sub_8086838(1,1,1);
@@ -1326,7 +1326,7 @@ void GroudonPreFightDialogue(void)
sub_8052910(&gUnknown_8103054);
sub_803E708(10,0x46);
sub_8083F14();
- sub_8088D30();
+ GroudonScreenFlash2();
sub_803E708(0x1e,0x46);
sub_8052910(&gUnknown_81030D8);
sub_803E708(10,0x46);
@@ -1340,26 +1340,26 @@ void GroudonPreFightDialogue(void)
sub_8085930(4);
sub_8052910(&gUnknown_8103140);
sub_803E708(10,0x46);
- sub_8086A54(uVar4);
+ sub_8086A54(GroudonEntity);
sub_8085930(4);
sub_8086764();
- SetupBossFightHP(uVar4,500,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(GroudonEntity,500,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void GroudonReFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * GroudonEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ GroudonEntity = sub_8085680(0xe);
sub_8086838(1,1,1);
sub_808680C();
sub_803E708(0x3c,0x46);
sub_8052910(&gUnknown_8103188);
sub_803E708(10,0x46);
- sub_8088CA0();
+ GroudonScreenFlash();
sub_803E708(0x1e,0x46);
sub_8052910(&gUnknown_8103228);
sub_803E708(10,0x46);
@@ -1372,20 +1372,20 @@ void GroudonReFightDialogue(void)
sub_8086738();
sub_8052910(&gUnknown_8103340);
sub_803E708(10,0x46);
- sub_8086A54(uVar2);
+ sub_8086A54(GroudonEntity);
sub_8085930(4);
sub_8086764();
- SetupBossFightHP(uVar2,500,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(GroudonEntity,500,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void GroudonPostStoryPreFightDialogue(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * GroudonEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xe);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ GroudonEntity = sub_8085680(0xe);
sub_8086448();
if (sub_8086AE4(SPECIES_GROUDON)) {
sub_80866C4(&gUnknown_8103488);
@@ -1393,27 +1393,28 @@ void GroudonPostStoryPreFightDialogue(void)
else{
sub_8052910(&gUnknown_81033A0);
sub_803E708(10,0x46);
- sub_8088C08(uVar3);
- sub_8088C08(uVar3);
+ SceneGroudonMovement(GroudonEntity);
+ SceneGroudonMovement(GroudonEntity);
sub_8052910(&gUnknown_81033AC);
PlaySoundEffect(0x1f6);
- sub_8088CA0();
+ GroudonScreenFlash();
sub_8052910(&gUnknown_810343C);
PlaySoundEffect(0x1f6);
- sub_8088CA0();
+ GroudonScreenFlash();
sub_8052910(&gUnknown_810347C);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar3,500,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(GroudonEntity,500,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
-void sub_8088C08(struct DungeonEntity * param_1)
+// Moves Groudon down in a walking fashion
+void SceneGroudonMovement(struct DungeonEntity * param_1)
{
int iVar1;
sub_8086848(0x18,0x10);
- sub_806CDD4(param_1,0,0);
+ sub_806CDD4(param_1,0,DIRECTION_SOUTH);
for(iVar1 = 0; iVar1 < 0x2C; iVar1++)
{
if ((iVar1 == 10) || (iVar1 == 0x20)) {
@@ -1434,7 +1435,7 @@ void sub_8088C08(struct DungeonEntity * param_1)
sub_803E708(0x22,0x46);
}
-void sub_8088CA0(void)
+void GroudonScreenFlash(void)
{
s32 iVar1;
@@ -1461,7 +1462,7 @@ void sub_8088CA0(void)
sub_8085EB0();
}
-void sub_8088D30(void)
+void GroudonScreenFlash2(void)
{
s32 iVar1;
@@ -1491,11 +1492,11 @@ void sub_8088D30(void)
void sub_8088DC0(void)
{
- struct DungeonEntity * iVar1;
+ struct DungeonEntity * LeaderEntity;
struct DungeonEntity * uVar2;
struct DungeonEntity * uVar3;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
uVar2 = sub_8085680(0xb);
uVar3 = sub_8085680(0xc);
sub_80867F4();
@@ -1505,21 +1506,21 @@ void sub_8088DC0(void)
sub_8085930(4);
sub_80855E4(sub_8086A3C);
sub_8086A3C(uVar2);
- sub_806CDD4(uVar2,0xe,0);
+ sub_806CDD4(uVar2,0xe,DIRECTION_SOUTH);
sub_8086A3C(uVar3);
- sub_806CDD4(uVar3,0xe,0);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ sub_806CDD4(uVar3,0xe,DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON);
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM);
}
void sub_8088E5C(void)
{
- struct DungeonEntity * iVar1;
+ struct DungeonEntity * LeaderEntity;
struct DungeonEntity * uVar2;
struct DungeonEntity * uVar3;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
uVar2 = sub_8085680(0xb);
uVar3 = sub_8085680(0xc);
sub_80867F4();
@@ -1529,7 +1530,7 @@ void sub_8088E5C(void)
sub_80855E4(sub_8086A3C);
sub_8068FE0(uVar2,0x21c,0);
sub_8068FE0(uVar3,0x21c,0);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_GROUDON);
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_ALAKAZAM);
}
@@ -1542,26 +1543,26 @@ void sub_8088EE8(void)
void MagmaCavernMidDialogue(void)
{
- struct DungeonEntity * uVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * PartnerEntity;
struct DungeonEntity * iVar3;
struct DungeonEntity * iVar4;
u8 auStack36 [4];
s32 local_20[2];
- uVar1 = sub_8085480();
- uVar2 = sub_808548C();
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
iVar3 = sub_8085680(0xb);
iVar4 = sub_8085680(0xc);
- sub_8052D44(auStack36,uVar1,uVar2);
+ sub_8052D44(auStack36,LeaderEntity,PartnerEntity);
sub_8086448();
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
// Let's see..
// I wonder where we are?
sub_8052910(&gUnknown_8102B1C);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(uVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
// I know we've come pretty
// far...
//
@@ -1592,9 +1593,9 @@ void MagmaCavernMidDialogue(void)
sub_8052910(&gUnknown_8102BE4);
sub_803E708(10,0x46);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
PlaySoundEffect(0x1c7);
- sub_80856E0(uVar2,4);
+ sub_80856E0(PartnerEntity,4);
// Hey! {ARG_POKEMON_0}!
// Over there!
sub_8052910(&gUnknown_8102C30);
@@ -1615,7 +1616,7 @@ void MagmaCavernMidDialogue(void)
// Urrrrgh...
sub_8052910(&gUnknown_8102C98);
sub_803E708(10,0x46);
- sub_80869E4(uVar1,4,2,5);
+ sub_80869E4(LeaderEntity,4,2,5);
// What happened to you?
//
// What happened here?
@@ -1628,14 +1629,14 @@ void MagmaCavernMidDialogue(void)
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8102D34);
sub_803E708(10,0x46);
- sub_80869E4(uVar1,4,1,3);
- sub_80869E4(uVar2,4,1,3);
+ sub_80869E4(LeaderEntity,4,1,3);
+ sub_80869E4(PartnerEntity,4,1,3);
// Grrgh..
// We... It crushed us
sub_8052910(&gUnknown_8102D4C);
sub_803E708(10,0x46);
PlaySoundEffect(0x1d5);
- SpriteLookAroundEffect(uVar2);
+ SpriteLookAroundEffect(PartnerEntity);
// That's right...
// What happened to {ARG_POKEMON_3}?
// Where is {ARG_POKEMON_3}?
@@ -1649,8 +1650,8 @@ void MagmaCavernMidDialogue(void)
// Still battling {ARG_POKEMON_2}...
sub_8052910(&gUnknown_8102DFC);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(uVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
// {ARG_POKEMON_0}!
// We've got to hurry!
sub_8052910(&gUnknown_8102E2C);
@@ -1663,14 +1664,14 @@ void MagmaCavernMidDialogue(void)
void sub_8089168(void)
{
- struct DungeonEntity *iVar1;
+ struct DungeonEntity *LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8086448();
sub_803E708(10,0x46);
- SpriteLookAroundEffect(iVar1);
+ SpriteLookAroundEffect(LeaderEntity);
sub_803E708(10,0x46);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void sub_808919C(struct DungeonEntity *r0)
@@ -1680,14 +1681,14 @@ void sub_808919C(struct DungeonEntity *r0)
void sub_80891B0(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 0, 4);
+ sub_806CDD4(r0, 0, DIRECTION_NORTH);
r0->entityData->unk15F = 1;
}
void sub_80891D0(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 7, 4);
+ sub_806CDD4(r0, 7, DIRECTION_NORTH);
r0->entityData->unk15F = 0;
}
@@ -1761,41 +1762,41 @@ void sub_8089294(void)
void sub_80892C8(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RayquazaEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0xf);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RayquazaEntity = sub_8085680(0xf);
sub_8083E88(0x1a);
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ SetFacingDirection(RayquazaEntity, DIRECTION_SOUTH);
+ sub_8086A3C(RayquazaEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_RAYQUAZA);
}
void sub_8089328(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RayquazaEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xf);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RayquazaEntity = sub_8085680(0xf);
sub_8083E88(0x1a);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if (sub_8086AE4(SPECIES_RAYQUAZA)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(RayquazaEntity,0x21c,0);
}
else {
- sub_8072008(uVar3,uVar3,gUnknown_80F57CA,0,0);
- sub_8086A3C(uVar3);
+ sub_8072008(RayquazaEntity,RayquazaEntity,gUnknown_80F57CA,0,0);
+ sub_8086A3C(RayquazaEntity);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_RAYQUAZA);
}
@@ -1809,25 +1810,25 @@ void sub_80893B4(char param_1, s32 param_2)
void RayquazaPreFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *PartnerEntity;
+ struct DungeonEntity *RayquazaEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_808548C();
- uVar3 = sub_8085680(0xf);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ PartnerEntity = GetPartnerEntity();
+ RayquazaEntity = sub_8085680(0xf);
sub_8086448();
sub_8052910(&gUnknown_8103500);
RayquazaScreenFlash();
sub_8052910(&gUnknown_810352C);
- sub_80856E0(uVar2,4);
- SpriteLookAroundEffect(uVar2);
+ sub_80856E0(PartnerEntity,4);
+ SpriteLookAroundEffect(PartnerEntity);
sub_803E708(10,0x46);
- sub_80869E4(uVar2,4,1,2);
- sub_80869E4(iVar1,4,2,6);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
sub_8052910(&gUnknown_8103578);
- sub_80869E4(uVar2,4,2,4);
- sub_80869E4(iVar1,4,1,4);
+ sub_80869E4(PartnerEntity,4,2,4);
+ sub_80869E4(LeaderEntity,4,1,4);
sub_8052910(&gUnknown_81035D4);
sub_803E708(10,0x46);
sub_8052910(&gUnknown_8103618);
@@ -1836,7 +1837,7 @@ void RayquazaPreFightDialogue(void)
RayquazaScreenFlash();
PlaySoundEffect(0x1da); // Rayquaza Cry
sub_8052910(&gUnknown_8103690);
- sub_8089620(uVar3);
+ sub_8089620(RayquazaEntity);
sub_8052910(&gUnknown_81036C8);
RayquazaScreenFlash();
sub_8052910(&gUnknown_81037A0);
@@ -1844,23 +1845,23 @@ void RayquazaPreFightDialogue(void)
sub_8052910(&gUnknown_81037D4);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103820);
- SetupBossFightHP(uVar3,600,0x20);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(RayquazaEntity,600,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void RayquazaReFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *RayquazaEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0xf);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RayquazaEntity = sub_8085680(0xf);
sub_8086448();
RayquazaScreenFlash();
PlaySoundEffect(0x1da); // Rayquaza Cry
sub_8052910(&gUnknown_8103690);
sub_803E708(10,0x46);
- sub_8089620(uVar2);
+ sub_8089620(RayquazaEntity);
sub_8052910(&gUnknown_8103844);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103874);
@@ -1868,17 +1869,17 @@ void RayquazaReFightDialogue(void)
sub_8052910(&gUnknown_81038A8);
RayquazaScreenFlash();
sub_8052910(&gUnknown_81038F8);
- SetupBossFightHP(uVar2,600,0x20);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(RayquazaEntity,600,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void RayquazaPostStoryPreFightDialogue(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *RayquazaEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0xf);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RayquazaEntity = sub_8085680(0xf);
sub_8086448();
if (sub_8086AE4(SPECIES_RAYQUAZA)) {
sub_80866C4(&gUnknown_8103B58);
@@ -1886,7 +1887,7 @@ void RayquazaPostStoryPreFightDialogue(void)
else {
PlaySoundEffect(0x1da); // Rayquaza Cry
sub_8052910(&gUnknown_8103904);
- sub_8089620(uVar3);
+ sub_8089620(RayquazaEntity);
sub_8052910(&gUnknown_8103938);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103AA4);
@@ -1894,8 +1895,8 @@ void RayquazaPostStoryPreFightDialogue(void)
sub_8052910(&gUnknown_8103AE4);
RayquazaScreenFlash();
sub_8052910(&gUnknown_8103B30);
- SetupBossFightHP(uVar3,600,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(RayquazaEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -1950,27 +1951,27 @@ void RayquazaScreenFlash(void)
void sub_808970C(void)
{
- struct DungeonEntity *iVar1;
+ struct DungeonEntity *LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8083E88(0x7D);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
sub_808563C(sub_8089908);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3);
}
void sub_808974C(void)
{
- struct DungeonEntity *iVar1;
+ struct DungeonEntity *LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
sub_808563C(sub_80898F8);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -3);
}
void sub_8089788(struct DungeonEntity *param_1, u8 param_2, s32 param_3)
@@ -1982,7 +1983,7 @@ void sub_8089788(struct DungeonEntity *param_1, u8 param_2, s32 param_3)
unk1 = 0;
if ((((param_3 * 0x1000000) + 0xe6000000U) >> 0x18) < 2) {
- for(iVar3 = 0; iVar3 < 0x10; iVar3++)
+ for(iVar3 = 0; iVar3 < DUNGEON_MAX_WILD_POKEMON; iVar3++)
{
iVar2 = gDungeonGlobalData->wildPokemon[iVar3];
if ((EntityExists(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->entityData->clientType == param_2)) {
@@ -1999,9 +2000,9 @@ void sub_8089788(struct DungeonEntity *param_1, u8 param_2, s32 param_3)
void sub_80897F0(void)
{
- struct DungeonEntity *iVar1;
+ struct DungeonEntity *LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8086448();
sub_803E708(10,0x46);
sub_808563C(sub_80862BC);
@@ -2029,16 +2030,16 @@ void sub_80897F0(void)
// Get 'em! It's frenzy time!
sub_8052910(&gUnknown_8103D50);
sub_803E708(10,0x46);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void sub_8089878(void)
{
- struct DungeonEntity *iVar1;
+ struct DungeonEntity *LeaderEntity;
- iVar1 = sub_8085480();
+ LeaderEntity = xxx_call_GetLeaderEntity();
sub_8086448();
sub_803E708(10,0x46);
sub_808563C(sub_80862BC);
@@ -2049,7 +2050,7 @@ void sub_8089878(void)
sub_8052910(&gUnknown_8103DD8);
sub_8052910(&gUnknown_8103E28);
sub_803E708(10,0x46);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void sub_80898E4(void)
@@ -2065,48 +2066,48 @@ void sub_80898F8(struct DungeonEntity *r0)
void sub_8089908(struct DungeonEntity *r0)
{
- sub_8085918(r0, 4);
+ SetFacingDirection(r0, DIRECTION_NORTH);
}
void sub_8089914(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MewtwoEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x11);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MewtwoEntity = sub_8085680(0x11);
sub_8083F14();
gDungeonGlobalData->unk7 = 1;
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ SetFacingDirection(MewtwoEntity, DIRECTION_SOUTH);
+ sub_8086A3C(MewtwoEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_MEWTWO);
}
void sub_8089978(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MewtwoEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x11);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MewtwoEntity = sub_8085680(0x11);
sub_8083F14();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if(HasRecruitedMon(SPECIES_MEWTWO)){
sub_8083E88(0x23);
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(MewtwoEntity,0x21c,0);
}
else {
gDungeonGlobalData->unk7 = 1;
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
+ SetFacingDirection(MewtwoEntity, DIRECTION_SOUTH);
+ sub_8086A3C(MewtwoEntity);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_MEWTWO);
}
@@ -2120,18 +2121,18 @@ void sub_8089A00(char param_1, s32 param_2)
void MewtwoPreFightDialogue(void)
{
- struct DungeonEntity *iVar1;
- struct DungeonEntity *uVar2;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MewtwoEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x11);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MewtwoEntity = sub_8085680(0x11);
sub_8086448();
sub_8052910(&gUnknown_8103EA4);
sub_803E708(10,0x46);
sub_8083E88(0x23);
sub_8086794();
sub_803E708(0x1e,0x46);
- sub_8089B64(uVar2);
+ sub_8089B64(MewtwoEntity);
sub_803E708(0x3c,0x46);
sub_8052910(&gUnknown_8103F0C);
sub_8052910(&gUnknown_8103F4C);
@@ -2141,17 +2142,17 @@ void MewtwoPreFightDialogue(void)
MewtwoScreenFlash();
sub_8052910(&gUnknown_8104008);
sub_803E708(10,0x46);
- SetupBossFightHP(uVar2,900,0x20);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(MewtwoEntity,900,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void MewtwoPreFightDialogue1(void)
{
- struct DungeonEntity *iVar2;
- struct DungeonEntity *uVar3;
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *MewtwoEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x11);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ MewtwoEntity = sub_8085680(0x11);
sub_8086448();
if(HasRecruitedMon(SPECIES_MEWTWO)) {
sub_80866C4(&gUnknown_8104144);
@@ -2160,15 +2161,15 @@ void MewtwoPreFightDialogue1(void)
sub_8052910(&gUnknown_8104044);
sub_8083E88(0x23);
sub_8086794();
- sub_8089B64(uVar3);
+ sub_8089B64(MewtwoEntity);
sub_803E708(0x3c,0x46);
sub_8052910(&gUnknown_8104050);
MewtwoScreenFlash();
sub_8052910(&gUnknown_81040CC);
MewtwoScreenFlash();
sub_8052910(&gUnknown_8104114);
- SetupBossFightHP(uVar3,900,0x20);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(MewtwoEntity,900,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -2222,37 +2223,37 @@ void MewtwoScreenFlash(void)
void sub_8089C44(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * EnteiEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x12);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ EnteiEntity = sub_8085680(0x12);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar3, 0);
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ SetFacingDirection(EnteiEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ENTEI);
}
void sub_8089C90(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * EnteiEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x12);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ EnteiEntity = sub_8085680(0x12);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
if (HasRecruitedMon(SPECIES_ENTEI)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(EnteiEntity,0x21c,0);
}
else {
- sub_8085918(uVar3,0);
+ SetFacingDirection(EnteiEntity, DIRECTION_SOUTH);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_ENTEI);
}
@@ -2268,11 +2269,11 @@ void sub_8089CFC(char param_1,int param_2)
void EnteiPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * EnteiEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x12);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ EnteiEntity = sub_8085680(0x12);
EnteiScreenFlash();
sub_8052910(&gUnknown_8104150);
EnteiScreenFlash();
@@ -2280,17 +2281,17 @@ void EnteiPreFightDialogue(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81041F8);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,600,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(EnteiEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void EnteiPreFightDialogue1(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * EnteiEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x12);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ EnteiEntity = sub_8085680(0x12);
EnteiScreenFlash();
sub_8052910(&gUnknown_8104240);
EnteiScreenFlash();
@@ -2298,17 +2299,17 @@ void EnteiPreFightDialogue1(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81042B8);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,600,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(EnteiEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void EnteiPreFightDialogue2(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * EnteiEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x12);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ EnteiEntity = sub_8085680(0x12);
if (HasRecruitedMon(SPECIES_ENTEI)) {
sub_80866C4(&gUnknown_81043DC);
}
@@ -2320,8 +2321,8 @@ void EnteiPreFightDialogue2(void)
EnteiScreenFlash();
sub_8052910(&gUnknown_81043C0);
sub_803E708(10,70);
- SetupBossFightHP(uVar3,600,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(EnteiEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -2353,53 +2354,53 @@ void EnteiScreenFlash(void)
void sub_8089EFC(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar3, 0);
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ SetFacingDirection(RaikouEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU);
}
void sub_8089F44(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar3, 0);
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ SetFacingDirection(RaikouEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU);
}
void sub_8089F8C(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
if (HasRecruitedMon(SPECIES_RAIKOU)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(RaikouEntity,0x21c,0);
}
else {
- sub_8085918(uVar3,0);
+ SetFacingDirection(RaikouEntity, DIRECTION_SOUTH);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_RAIKOU);
}
@@ -2414,11 +2415,11 @@ void sub_8089FF0(char param_1,int param_2)
void RaikouPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
sub_8052910(&gUnknown_8104450);
RaikouScreenFlash();
sub_8052910(&gUnknown_81044B4);
@@ -2433,17 +2434,17 @@ void RaikouPreFightDialogue(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_81045B0);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,0x28a,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(RaikouEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void RaikouPreFightDialogue1(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
gDungeonGlobalData->unkE265 = 4;
sub_807EAA0(0,1);
RaikouScreenFlash();
@@ -2453,17 +2454,17 @@ void RaikouPreFightDialogue1(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_81046A0);
sub_803E708(10,70);
- SetupBossFightHP(uVar3,0x28a,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(RaikouEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void RaikouPreFightDialogue2(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * RaikouEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x13);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ RaikouEntity = sub_8085680(0x13);
if (HasRecruitedMon(SPECIES_RAIKOU)) {
sub_80866C4(&gUnknown_8104778);
}
@@ -2476,8 +2477,8 @@ void RaikouPreFightDialogue2(void)
RaikouScreenFlash();
sub_8052910(&gUnknown_810476C);
sub_803E708(10,70);
- SetupBossFightHP(uVar3,0x28a,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(RaikouEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -2509,53 +2510,53 @@ void RaikouScreenFlash(void)
void sub_808A264(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ SetFacingDirection(SuicuneEntity, DIRECTION_SOUTH);
+ sub_8086A3C(SuicuneEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE);
}
void sub_808A2C0(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar2,0);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+ SetFacingDirection(SuicuneEntity, DIRECTION_SOUTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE);
}
void sub_808A308(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
if (HasRecruitedMon(SPECIES_SUICUNE)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(SuicuneEntity,0x21c,0);
}
else {
- sub_8085918(uVar3,0);
+ SetFacingDirection(SuicuneEntity, DIRECTION_SOUTH);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SUICUNE);
}
@@ -2569,11 +2570,11 @@ void sub_808A36C(char param_1,int param_2)
void SuicunePreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
sub_8086448();
sub_8052910(&gUnknown_8104784);
sub_803E708(10,70);
@@ -2583,7 +2584,7 @@ void SuicunePreFightDialogue(void)
sub_803E708(0x3c,70);
sub_8052910(&gUnknown_81047B0);
sub_803E708(10,70);
- sub_808A528(uVar2);
+ sub_808A528(SuicuneEntity);
sub_8052910(&gUnknown_810484C);
sub_8052910(&gUnknown_8104888);
SuicuneScreenFlash();
@@ -2591,34 +2592,34 @@ void SuicunePreFightDialogue(void)
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104914);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,0x28a,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(SuicuneEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void SuicunePreFightDialogue1(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
sub_8052910(&gUnknown_8104930);
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104980);
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104998);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,0x28a,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(SuicuneEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void SuicunePreFightDialogue2(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SuicuneEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x14);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SuicuneEntity = sub_8085680(0x14);
if (HasRecruitedMon(SPECIES_SUICUNE)) {
sub_80866C4(&gUnknown_8104AC8);
}
@@ -2629,8 +2630,8 @@ void SuicunePreFightDialogue2(void)
SuicuneScreenFlash();
sub_8052910(&gUnknown_8104A9C);
sub_803E708(10,70);
- SetupBossFightHP(uVar3,0x28a,0xb);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(SuicuneEntity,0x28a,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -2684,42 +2685,42 @@ void SuicuneScreenFlash(void)
void sub_808A608(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * HoOhEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x15);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ HoOhEntity = sub_8085680(0x15);
sub_8083E88(0x1c);
sub_80867F4();
sub_8086838(0,0,0);
sub_80854D4();
sub_8085930(4);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -6);
+ SetFacingDirection(HoOhEntity, DIRECTION_SOUTH);
+ sub_8086A3C(HoOhEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -6);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_HO_OH);
}
void sub_808A668(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * HoOhEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x15);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ HoOhEntity = sub_8085680(0x15);
sub_8083E88(0x1c);
sub_80867F4();
sub_8086838(0,0,0);
sub_80854D4();
sub_8085930(4);
if (HasRecruitedMon(SPECIES_HO_OH)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(HoOhEntity,0x21c,0);
}
else {
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
+ SetFacingDirection(HoOhEntity, DIRECTION_SOUTH);
+ sub_8086A3C(HoOhEntity);
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 6);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 6);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_HO_OH);
}
@@ -2739,14 +2740,14 @@ void sub_808A718(void)
void HoOhPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * HoOhEntity;
int local_14[2];
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x15);
- local_14[0] = iVar1->posPixelX;
- local_14[1] = iVar1->posPixelY + -0x1000;
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ HoOhEntity = sub_8085680(0x15);
+ local_14[0] = LeaderEntity->posPixelX;
+ local_14[1] = LeaderEntity->posPixelY + -0x1000;
sub_80858AC(local_14,0x88);
sub_803E708(0x40,70);
sub_8052910(&gUnknown_8104AD4);
@@ -2758,7 +2759,7 @@ void HoOhPreFightDialogue(void)
sub_808680C();
PlaySoundEffect(0x1c5);
sub_803E708(0xfa,70);
- sub_808A904(uVar2);
+ sub_808A904(HoOhEntity);
sub_8083E58(0x1c5);
sub_808682C();
sub_80855E4(sub_8086910);
@@ -2772,21 +2773,21 @@ void HoOhPreFightDialogue(void)
HoOhScreenFlash();
sub_8052910(&gUnknown_8104CE0);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,800,0x20);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(HoOhEntity,800,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void HoOhPreFightDialogue1(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * HoOhEntity;
u32 local_14[2];
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x15);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ HoOhEntity = sub_8085680(0x15);
- local_14[0] = iVar2->posPixelX;
- local_14[1] = iVar2->posPixelY + -0x1000;
+ local_14[0] = LeaderEntity->posPixelX;
+ local_14[1] = LeaderEntity->posPixelY + -0x1000;
sub_80858AC(local_14,0x88);
sub_803E708(0x40,70);
if (HasRecruitedMon(SPECIES_HO_OH)) {
@@ -2798,7 +2799,7 @@ void HoOhPreFightDialogue1(void)
sub_80855E4(sub_80868F4);
sub_808680C();
sub_803E708(10,70);
- sub_808A904(uVar3);
+ sub_808A904(HoOhEntity);
sub_808682C();
sub_80855E4(sub_8086910);
sub_8085930(4);
@@ -2808,8 +2809,8 @@ void HoOhPreFightDialogue1(void)
HoOhScreenFlash();
sub_8052910(&gUnknown_8104E0C);
sub_803E708(10,70);
- SetupBossFightHP(uVar3,800,0x20);
- sub_80858AC(&iVar2->posPixelX,0x10);
+ SetupBossFightHP(HoOhEntity,800,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
}
@@ -2863,49 +2864,49 @@ void HoOhScreenFlash(void)
void sub_808A9E4(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LatiosEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x16);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LatiosEntity = sub_8085680(0x16);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,4);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 4);
+ SetFacingDirection(LatiosEntity, DIRECTION_NORTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 4);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS);
}
void sub_808AA3C(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LatiosEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x16);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LatiosEntity = sub_8085680(0x16);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,4);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ SetFacingDirection(LatiosEntity, DIRECTION_NORTH);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS);
}
void sub_808AA94(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LatiosEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x16);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LatiosEntity = sub_8085680(0x16);
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8068FE0(uVar2,0x21c,0);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ sub_8068FE0(LatiosEntity,0x21c,0);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_LATIOS);
}
@@ -2919,15 +2920,15 @@ void sub_808AAF0(char param_1, s32 param_2)
void LatiosPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * iVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LatiosEntity;
u32 local_18[3];
- iVar1 = sub_8085480();
- iVar2 = sub_8085680(0x16);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LatiosEntity = sub_8085680(0x16);
- local_18[0] = iVar2->posPixelX;
- local_18[1] = iVar2->posPixelY + (0x80 << 6);
+ local_18[0] = LatiosEntity->posPixelX;
+ local_18[1] = LatiosEntity->posPixelY + (0x80 << 6);
local_18[2] = 0x7000fc;
sub_8085EC8(0x1bd,0,0,&local_18[2],1);
@@ -2935,7 +2936,7 @@ void LatiosPreFightDialogue(void)
sub_8086448();
sub_80858AC(local_18,0x18);
sub_803E708(2,70);
- sub_80862BC(iVar2);
+ sub_80862BC(LatiosEntity);
sub_803E708(0x20,70);
sub_808692C();
sub_8052910(&gUnknown_8104E60);
@@ -2944,17 +2945,17 @@ void LatiosPreFightDialogue(void)
LatiosScreenFlash();
sub_8052910(&gUnknown_8104F30);
sub_803E708(10,70);
- SetupBossFightHP(iVar2,600,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(LatiosEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void LatiosReFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * LatiosEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x16);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ LatiosEntity = sub_8085680(0x16);
sub_8086448();
sub_808692C();
sub_8052910(&gUnknown_8104F64);
@@ -2963,8 +2964,8 @@ void LatiosReFightDialogue(void)
LatiosScreenFlash();
sub_8052910(&gUnknown_8104F30);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,600,0xb);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(LatiosEntity,600,0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void sub_808AC3C(void)
@@ -3094,13 +3095,13 @@ void sub_808ADCC(void)
void sub_808AE54(char param_1,char param_2,u32 *param_3)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack24 [4];
struct ItemSlot auStack20;
- uVar3 = sub_8085480();
- sub_8052D44(auStack24,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack24,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x2E) && (param_1 == 0x17)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
@@ -3117,13 +3118,13 @@ void sub_808AE54(char param_1,char param_2,u32 *param_3)
void sub_808AEC8(char param_1,char param_2,u32 *param_3)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack24 [4];
struct ItemSlot auStack20;
- uVar3 = sub_8085480();
- sub_8052D44(auStack24,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack24,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x2F) && (param_1 == 0x18)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
@@ -3139,13 +3140,13 @@ void sub_808AEC8(char param_1,char param_2,u32 *param_3)
void sub_808AF3C(char param_1,char param_2,u32 *param_3)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack24 [4];
struct ItemSlot auStack20;
- uVar3 = sub_8085480();
- sub_8052D44(auStack24,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack24,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x30) && (param_1 == 0x19)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
@@ -3161,11 +3162,11 @@ void sub_808AF3C(char param_1,char param_2,u32 *param_3)
void sub_808AFB0(char param_1)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack12 [4];
- uVar3 = sub_8085480();
- sub_8052D44(auStack12,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack12,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x2E) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ID_ROCK_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames,GetLeaderEntity(),0);
@@ -3179,11 +3180,11 @@ void sub_808AFB0(char param_1)
void sub_808B030(char param_1)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack12 [4];
- uVar3 = sub_8085480();
- sub_8052D44(auStack12,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack12,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x2F) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ID_ICE_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames,GetLeaderEntity(),0);
@@ -3197,11 +3198,11 @@ void sub_808B030(char param_1)
void sub_808B0B0(char param_1)
{
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
u8 auStack12 [4];
- uVar3 = sub_8085480();
- sub_8052D44(auStack12,uVar3,0);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8052D44(auStack12,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x30) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ID_STEEL_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames, GetLeaderEntity(), 0);
@@ -3364,7 +3365,7 @@ void sub_808B1CC(u8 r0)
void sub_808B2B0(struct DungeonEntity *r0)
{
r0->entityData->facingDir = DIRECTION_NORTH;
- sub_806CE68(r0, 4);
+ sub_806CE68(r0, DIRECTION_NORTH);
}
@@ -3387,45 +3388,45 @@ void sub_808B2E4(struct DungeonEntity *r0)
void sub_808B2F4(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * JirachiEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x1a);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ JirachiEntity = sub_8085680(0x1a);
sub_8083E88(0x79);
sub_808BCE4();
sub_8049ED4();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8085918(uVar2,0);
- sub_8086A3C(uVar2);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY - 3);
+ SetFacingDirection(JirachiEntity, DIRECTION_SOUTH);
+ sub_8086A3C(JirachiEntity);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI);
}
void sub_808B35C(void)
{
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * JirachiEntity;
- iVar2 = sub_8085480();
- uVar3 = sub_8085680(0x1a);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ JirachiEntity = sub_8085680(0x1a);
sub_8083E88(0x79);
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
if (HasRecruitedMon(SPECIES_JIRACHI)) {
- sub_8068FE0(uVar3,0x21c,0);
+ sub_8068FE0(JirachiEntity,0x21c,0);
}
else {
- sub_8085918(uVar3,0);
- sub_8086A3C(uVar3);
+ SetFacingDirection(JirachiEntity, DIRECTION_SOUTH);
+ sub_8086A3C(JirachiEntity);
sub_808BCE4();
sub_8049ED4();
}
- sub_8085860(iVar2->posWorldX,iVar2->posWorldY - 3);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI);
}
@@ -3520,43 +3521,43 @@ void sub_808B3E4(u8 param_1, u8 param_2, u8 param_3)
void JirachiPreFightDialogue(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * uVar2;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * JirachiEntity;
- iVar1 = sub_8085480();
- uVar2 = sub_8085680(0x1a);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ JirachiEntity = sub_8085680(0x1a);
sub_8086448();
sub_803E708(0x40,70);
sub_8052910(&gUnknown_8105438);
sub_803E708(10,70);
- SpriteLookAroundEffect(iVar1);
+ SpriteLookAroundEffect(LeaderEntity);
sub_803E708(10,70);
sub_8052910(&gUnknown_81054A0);
- sub_80861F8(0x37,uVar2,1);
+ sub_80861F8(0x37,JirachiEntity,1);
sub_80855E4(sub_80862BC);
sub_803E708(0x3c,70);
- sub_808BBB8(uVar2);
+ sub_808BBB8(JirachiEntity);
sub_803E708(0x5a,70);
sub_8052910(&gUnknown_81054E4);
sub_803E708(10,70);
sub_8052910(&gUnknown_810550C);
sub_803E708(10,70);
- SetupBossFightHP(uVar2,0x15e,0x20);
- sub_80858AC(&iVar1->posPixelX,0x10);
+ SetupBossFightHP(JirachiEntity,0x15e,0x20);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
}
void sub_808B50C(void)
{
- struct DungeonEntity * iVar1;
+ struct DungeonEntity * JirachiEntity;
- iVar1 = sub_8085680(0x1a);
+ JirachiEntity = sub_8085680(0x1a);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_JIRACHI);
sub_80855E4(sub_808BBA8);
- sub_808BBA8(iVar1);
+ sub_808BBA8(JirachiEntity);
sub_8041888(0);
- iVar1->entityData->unk15C = 1;
- iVar1->entityData->unk15E = 0;
- sub_80861B8(iVar1,0xe,0);
+ JirachiEntity->entityData->unk15C = 1;
+ JirachiEntity->entityData->unk15E = 0;
+ sub_80861B8(JirachiEntity,0xe,0);
sub_8083ED8(0x1e);
sub_803E708(0x1e,70);
// Fwaaaahhhh
@@ -3567,7 +3568,7 @@ void sub_808B50C(void)
// I'm sleepy so I'm going back to sleep.
sub_8052910(&gUnknown_8105558);
sub_803E708(10,70);
- sub_808BC20(iVar1);
+ sub_808BC20(JirachiEntity);
sub_8052910(&gUnknown_81055F4);
sub_803E708(10,70);
gDungeonGlobalData->unk2 = 1;
diff --git a/src/code_806CD90.c b/src/code_806CD90.c
new file mode 100644
index 0000000..30ca41d
--- /dev/null
+++ b/src/code_806CD90.c
@@ -0,0 +1,88 @@
+#include "global.h"
+#include "dungeon_global_data.h"
+#include "dungeon_entity.h"
+#include "constants/direction.h"
+
+extern struct DungeonGlobalData *gDungeonGlobalData;
+
+extern u8 sub_806CEBC(struct DungeonEntity *);
+extern bool8 EntityExists(struct DungeonEntity *);
+extern void sub_806CCB4(struct DungeonEntity *, u8);
+extern u32 GetEntityType(struct DungeonEntity *);
+
+void sub_806CD90(void)
+{
+ s32 iVar3;
+ struct DungeonEntity *iVar2;
+ for(iVar3 = 0; iVar3 < DUNGEON_MAX_POKEMON; iVar3++)
+ {
+ iVar2 = gDungeonGlobalData->allPokemon[iVar3];
+ if(EntityExists(iVar2))
+ sub_806CCB4(iVar2, sub_806CEBC(iVar2));
+ }
+}
+
+void sub_806CDD4(struct DungeonEntity *r0, u8 r1, u32 r2)
+{
+ if(GetEntityType(r0) == ENTITY_POKEMON)
+ {
+ r0->unk6A = r1;
+ if(r2 < NUM_DIRECTIONS) r0->facingDir = r2;
+ }
+}
+
+void sub_806CDFC(struct DungeonEntity *r0, u8 r1, u32 r2)
+{
+ if(GetEntityType(r0) == ENTITY_POKEMON)
+ {
+ if(r0->unk6B == r1)
+ {
+ if(r0->facingDir2 == r2)
+ return;
+ else
+ goto change_dir;
+ }
+ else
+ {
+change_dir:
+ sub_806CDD4(r0, r1, r2);
+ }
+ }
+}
+
+void sub_806CE34(struct DungeonEntity *r0, u32 newDir)
+{
+ if(GetEntityType(r0) == ENTITY_POKEMON)
+ {
+ r0->unk6A = sub_806CEBC(r0);
+ if(newDir < NUM_DIRECTIONS)
+ {
+ r0->entityData->facingDir = newDir & DIRECTION_MASK;
+ r0->facingDir = newDir & DIRECTION_MASK;
+ }
+ }
+}
+
+void sub_806CE68(struct DungeonEntity *r0, u32 newDir)
+{
+ if(GetEntityType(r0) == ENTITY_POKEMON)
+ {
+ r0->unk6A = sub_806CEBC(r0);
+ if(newDir < NUM_DIRECTIONS)
+ {
+ r0->facingDir = newDir;
+ }
+ }
+}
+
+void sub_806CE94(struct DungeonEntity *r0, u32 newDir)
+{
+ if(GetEntityType(r0) == ENTITY_POKEMON)
+ {
+ r0->unk6A = 6;
+ if(newDir < NUM_DIRECTIONS)
+ {
+ r0->facingDir = newDir;
+ }
+ }
+}
diff --git a/src/code_80848F0.c b/src/code_80848F0.c
index 365411a..14b8b3e 100644
--- a/src/code_80848F0.c
+++ b/src/code_80848F0.c
@@ -94,6 +94,236 @@ extern void sub_808AFB0(u8);
extern void sub_808B030(u8);
extern void sub_808B0B0(u8);
+extern void sub_8086B14(void);
+extern void sub_8086B94(void);
+extern void sub_8086E9C(void);
+extern void sub_8086F00(void);
+extern void sub_8087230(void);
+extern void sub_808729C(void);
+extern void sub_80877E8(void);
+extern void sub_8087848(void);
+extern void sub_8087F54(void);
+extern void sub_8087FB4(void);
+extern void sub_8087FF8(void);
+extern void sub_80885A0(void);
+extern void sub_80885C4(void);
+extern void sub_808862C(void);
+extern void sub_80886C4(void);
+extern void sub_808875C(void);
+extern void sub_8088DC0(void);
+extern void sub_8088E5C(void);
+extern void sub_80892C8(void);
+extern void sub_8089328(void);
+extern void sub_808970C(void);
+extern void sub_808974C(void);
+extern void sub_8089914(void);
+extern void sub_8089978(void);
+extern void sub_8089C44(void);
+extern void sub_8089C90(void);
+extern void sub_8089EFC(void);
+extern void sub_8089F44(void);
+extern void sub_8089F8C(void);
+extern void sub_808A264(void);
+extern void sub_808A2C0(void);
+extern void sub_808A308(void);
+extern void sub_808A608(void);
+extern void sub_808A668(void);
+extern void sub_808A9E4(void);
+extern void sub_808AA3C(void);
+extern void sub_808AA94(void);
+extern void sub_808ACC0(void);
+extern void sub_808AD48(void);
+extern void sub_808ADCC(void);
+extern void sub_808B2F4(void);
+extern void sub_808B35C(void);
+extern void sub_808BDEC(void);
+extern void sub_808C10C(void);
+extern void sub_808C3A0(void);
+extern void sub_808C5C0(void);
+extern void sub_808C938(void);
+extern void sub_808C9C4(void);
+extern void sub_808CB5C(void);
+extern void sub_808CBB0(void);
+extern void sub_808CD44(void);
+extern void sub_8097FF8(void);
+
+u32 sub_80848EC(void)
+{
+ return 1;
+}
+
+void sub_80848F0(void)
+{
+ gDungeonGlobalData->unk1356C = 1;
+ switch(gDungeonGlobalData->unk3A0D) {
+ case 0:
+ case 0x3c:
+ gDungeonGlobalData->unk1356C = 0;
+ break;
+ case 1:
+ case 2:
+ sub_8086B14();
+ break;
+ case 3:
+ sub_8086B94();
+ break;
+ case 4:
+ case 5:
+ sub_8086E9C();
+ break;
+ case 6:
+ sub_8086F00();
+ break;
+ case 7:
+ case 8:
+ sub_8087230();
+ break;
+ case 9:
+ sub_808729C();
+ break;
+ case 10:
+ case 0xb:
+ sub_80877E8();
+ break;
+ case 0xc:
+ sub_8087848();
+ break;
+ case 0xd:
+ sub_8087F54();
+ break;
+ case 0xe:
+ sub_8087FB4();
+ break;
+ case 0xf:
+ sub_8087FF8();
+ break;
+ case 0x10:
+ sub_80885A0();
+ break;
+ case 0x11:
+ sub_80885C4();
+ break;
+ case 0x12:
+ sub_808862C();
+ break;
+ case 0x13:
+ sub_80886C4();
+ break;
+ case 0x14:
+ sub_808875C();
+ break;
+ case 0x15:
+ sub_8088DC0();
+ break;
+ case 0x16:
+ sub_8088E5C();
+ break;
+ case 0x17:
+ case 0x18:
+ sub_80892C8();
+ break;
+ case 0x19:
+ sub_8089328();
+ break;
+ case 0x1a:
+ case 0x1b:
+ sub_808970C();
+ break;
+ case 0x1c:
+ sub_808974C();
+ break;
+ case 0x1d:
+ case 0x1e:
+ sub_8089914();
+ break;
+ case 0x1f:
+ sub_8089978();
+ break;
+ case 0x20:
+ case 0x21:
+ sub_8089C44();
+ break;
+ case 0x22:
+ sub_8089C90();
+ break;
+ case 0x23:
+ sub_8089EFC();
+ break;
+ case 0x24:
+ sub_8089F44();
+ break;
+ case 0x25:
+ sub_8089F8C();
+ break;
+ case 0x26:
+ sub_808A264();
+ break;
+ case 0x27:
+ sub_808A2C0();
+ break;
+ case 0x28:
+ sub_808A308();
+ break;
+ case 0x29:
+ sub_808A608();
+ break;
+ case 0x2a:
+ sub_808A668();
+ break;
+ case 0x2b:
+ sub_808A9E4();
+ break;
+ case 0x2c:
+ sub_808AA3C();
+ break;
+ case 0x2d:
+ sub_808AA94();
+ break;
+ case 0x2e:
+ sub_808ACC0();
+ break;
+ case 0x2f:
+ sub_808AD48();
+ break;
+ case 0x30:
+ sub_808ADCC();
+ break;
+ case 0x31:
+ sub_808B2F4();
+ break;
+ case 0x32:
+ sub_808B35C();
+ break;
+ case 0x33:
+ sub_808BDEC();
+ break;
+ case 0x34:
+ sub_808C10C();
+ break;
+ case 0x35:
+ sub_808C3A0();
+ break;
+ case 0x36:
+ sub_808C5C0();
+ break;
+ case 0x37:
+ sub_808C938();
+ break;
+ case 0x38:
+ sub_808C9C4();
+ break;
+ case 0x39:
+ sub_808CB5C();
+ break;
+ case 0x3a:
+ sub_808CBB0();
+ break;
+ case 0x3b:
+ sub_808CD44();
+ break;
+ }
+ sub_8097FF8();
+}
void DisplayPreFightDialogue(void)
{
diff --git a/src/code_80869E4.c b/src/code_80869E4.c
index f7ffdb6..b7526d0 100644
--- a/src/code_80869E4.c
+++ b/src/code_80869E4.c
@@ -25,7 +25,7 @@ extern void sub_803E46C(u32);
extern void sub_803E9D0(void);
extern void sub_8085C54(u32, u32, u32, u32, u32);
extern void PlaySoundEffect(u32);
-extern struct DungeonEntity *sub_8085480(void);
+extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
void SpriteLookAroundEffect(struct DungeonEntity *r0);
extern void sub_8052910(u32);
void sub_8086494();
@@ -64,7 +64,7 @@ void sub_80862DC(struct DungeonEntity *r0)
array[1] = r0->posPixelY + (0xE0 << 6);
sub_804535C(r0, array);
- sub_806CDD4(r0, 0, 4);
+ sub_806CDD4(r0, 0, DIRECTION_NORTH);
sub_8086A54(r0);
}
@@ -75,7 +75,7 @@ void sub_8086310(struct DungeonEntity *r0)
array[1] = r0->posPixelY + (0x90 << 8);
sub_804535C(r0, array);
- sub_806CE68(r0, 0);
+ sub_806CE68(r0, DIRECTION_SOUTH);
sub_8086A3C(r0);
r0->visible = 0;
}
@@ -87,7 +87,7 @@ void sub_8086348(struct DungeonEntity *r0)
array[1] = r0->posPixelY + 0xffffe000;
sub_804535C(r0, array);
- sub_806CDD4(r0, 0, 6);
+ sub_806CDD4(r0, 0, DIRECTION_WEST);
sub_8086A54(r0);
}
@@ -98,38 +98,38 @@ void sub_8086384(struct DungeonEntity *r0)
array[1] = r0->posPixelY;
sub_804535C(r0, array);
- sub_806CDD4(r0, 0, 6);
+ sub_806CDD4(r0, 0, DIRECTION_WEST);
sub_8086A54(r0);
}
void sub_80863B8(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 0, 4);
+ sub_806CDD4(r0, 0, DIRECTION_NORTH);
}
void sub_80863C8(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 0, 0);
+ sub_806CDD4(r0, 0, DIRECTION_SOUTH);
}
void sub_80863D8(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 0, 6);
+ sub_806CDD4(r0, 0, DIRECTION_WEST);
}
void sub_80863E8(struct DungeonEntity *r0)
{
- sub_806CDD4(r0, 6, 4);
+ sub_806CDD4(r0, 6, DIRECTION_NORTH);
}
void sub_80863F8(struct DungeonEntity *r0)
{
- sub_806CE68(r0, 4);
+ sub_806CE68(r0, DIRECTION_NORTH);
}
void sub_8086404(struct DungeonEntity *r0)
{
- sub_806CE68(r0, 6);
+ sub_806CE68(r0, DIRECTION_WEST);
}
void sub_8086410(struct DungeonEntity *r0)
@@ -310,7 +310,7 @@ void sub_8086690(void)
void sub_80866C4(u32 r0)
{
- SpriteLookAroundEffect(sub_8085480());
+ SpriteLookAroundEffect(xxx_call_GetLeaderEntity());
sub_803E708(0xA, 0x46);
sub_8052910(r0);
sub_803E708(0xA, 0x46);
diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c
index db438c0..d8dbe4c 100644
--- a/src/code_8086A3C.c
+++ b/src/code_8086A3C.c
@@ -5,7 +5,8 @@
extern struct DungeonGlobalData *gDungeonGlobalData;
extern void LoadIQSkills(struct DungeonEntity *);
-extern struct DungeonEntity *sub_8085480(void);
+extern struct DungeonEntity *GetPartnerEntity();
+extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
extern struct DungeonEntity *sub_8085680(u32);
extern void SetDefaultIQSkills(u8 *param_1, u8 param_2);
extern void sub_8097FF8(void);
@@ -20,6 +21,40 @@ extern void sub_80855E4(void *);
extern void sub_8085860(s32 r0, u32 r1);
extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
extern void sub_8097FA8(u32);
+extern void sub_80858AC(void *, u32);
+extern void sub_8052910(u8 *);
+extern void sub_806CDD4(struct DungeonEntity *, u32, u32);
+extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
+extern void sub_8083E88(u32);
+extern void sub_803E708(u32, u32);
+extern void sub_8086448(void);
+extern void sub_80862BC(struct DungeonEntity *);
+extern void sub_8086E74(struct DungeonEntity *);
+extern void SpriteLookAroundEffect(struct DungeonEntity *);
+extern void sub_8086A54(struct DungeonEntity *);
+extern void PlaySoundEffect(u32);
+extern void sub_808563C(void *);
+
+// X / Y Coords??
+struct subStruct_Skarmory
+{
+ int x;
+ int y;
+};
+
+extern u8 gUnknown_8100768;
+extern u8 gUnknown_8100798;
+extern u8 gUnknown_8100820;
+extern u8 gUnknown_8100844;
+extern u8 gUnknown_8100880;
+extern u8 gUnknown_8100928;
+extern u8 gUnknown_8100A04;
+extern u8 gUnknown_8100B80;
+extern u8 gUnknown_8100BC0;
+extern u8 gUnknown_8100C90;
+extern u8 gUnknown_8100CBC;
+extern u8 gUnknown_8100CDC;
+extern u8 gUnknown_8100D3C;
void sub_8086A3C(struct DungeonEntity *param_1)
{
@@ -79,40 +114,40 @@ u8 sub_8086AE4(s16 _index)
void sub_8086B14(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * DiglettEntity;
+ struct DungeonEntity * SkarmoryEntity;
- iVar1 = sub_8085480();
- iVar2 = sub_8085680(4);
- uVar3 = sub_8085680(3);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ DiglettEntity = sub_8085680(4);
+ SkarmoryEntity = sub_8085680(3);
sub_8083E88(0x72);
sub_8085374();
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8086A3C(uVar3);
- iVar2->entityData->unk15C = 1;
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY + -2);
+ sub_8086A3C(SkarmoryEntity);
+ DiglettEntity->entityData->unk15C = 1;
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY + -2);
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_DIGLETT);
CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_SKARMORY);
}
void sub_8086B94(void)
{
- struct DungeonEntity * iVar1;
- struct DungeonEntity * iVar2;
- struct DungeonEntity * uVar3;
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * DiglettEntity;
+ struct DungeonEntity * SkarmoryEntity;
- iVar1 = sub_8085480();
- iVar2 = sub_8085680(4);
- uVar3 = sub_8085680(3);
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ DiglettEntity = sub_8085680(4);
+ SkarmoryEntity = sub_8085680(3);
- sub_8068FE0(uVar3,0x21c,0);
- sub_8068FE0(iVar2,0x21c,0);
+ sub_8068FE0(SkarmoryEntity,0x21c,0);
+ sub_8068FE0(DiglettEntity,0x21c,0);
sub_80854D4();
sub_8085930(4);
- sub_8085860(iVar1->posWorldX,iVar1->posWorldY);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
}
void sub_8086BDC(char param_1, s32 param_2)
@@ -122,3 +157,136 @@ void sub_8086BDC(char param_1, s32 param_2)
gDungeonGlobalData->unk2 = 1;
}
}
+
+void SkarmoryPreFightDialogue(void)
+{
+ struct DungeonEntity *LeaderEntity;
+ struct DungeonEntity *PartnerEntity;
+ struct DungeonEntity * DiglettEntity;
+ struct DungeonEntity * SkarmoryEntity;
+
+ struct subStruct_Skarmory local_1c;
+ struct subStruct_Skarmory local_20;
+
+ LeaderEntity = xxx_call_GetLeaderEntity(); // Player
+ PartnerEntity = GetPartnerEntity(); // Partner
+ DiglettEntity = sub_8085680(4); // Diglett
+ SkarmoryEntity = sub_8085680(3); // Skarmory
+
+ local_1c.x = DiglettEntity->posPixelX;
+ local_1c.y = DiglettEntity->posPixelY + 0x3000;
+
+ local_20.x = SkarmoryEntity->posPixelX;
+ local_20.y = SkarmoryEntity->posPixelY + 0x2000;
+
+ sub_8086448();
+ sub_803E708(10,0x46);
+ sub_80862BC(PartnerEntity);
+ sub_803E708(0x20,0x46);
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100768);
+ sub_80858AC(&local_1c,0x40);
+ sub_803E708(0x40,0x46);
+ sub_80858AC(&local_20,0x30);
+ sub_8052910(&gUnknown_8100798);
+ sub_803E708(10,0x46);
+ DiglettEntity->entityData->unk15D = 1;
+ sub_80858AC(&local_1c,0x30);
+ sub_8052910(&gUnknown_8100820); // Diglett: ...I...\nI'm scared.
+ sub_803E708(10,0x46);
+ sub_80858AC(&local_20,0x20);
+ sub_803E708(0x20,0x46);
+ sub_8086E74(SkarmoryEntity);
+ sub_8052910(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?!
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100880);
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100928);
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100A04);
+ sub_803E708(10,0x46);
+ sub_806CDD4(SkarmoryEntity,0xd,0);
+ sub_8052910(&gUnknown_8100B80);
+ sub_803E708(10,0x46);
+ sub_80869E4(PartnerEntity,4,1,2);
+ sub_80869E4(LeaderEntity,4,2,6);
+ sub_8052910(&gUnknown_8100BC0);
+ sub_80869E4(PartnerEntity,4,2,4);
+ sub_80869E4(LeaderEntity,4,1,4);
+ sub_803E708(10,0x46);
+ sub_8083E88(0xb);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
+}
+
+void SkarmoryReFightDialogue(void)
+{
+ struct DungeonEntity * LeaderEntity;
+ struct DungeonEntity * SkarmoryEntity;
+ struct subStruct_Skarmory local_14;
+
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ SkarmoryEntity = sub_8085680(3);
+ local_14.x = SkarmoryEntity->posPixelX;
+ local_14.y = SkarmoryEntity->posPixelY + 0x2000;
+ sub_8086448();
+ sub_803E708(10,0x46);
+ sub_8086E74(SkarmoryEntity);
+ sub_80858AC(&local_14,0x10);
+ sub_8052910(&gUnknown_8100C90);
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100CBC);
+ sub_803E708(10,0x46);
+ sub_806CDD4(SkarmoryEntity,0xd,0);
+ sub_8052910(&gUnknown_8100CDC);
+ sub_803E708(10,0x46);
+ sub_80858AC(&LeaderEntity->posPixelX,0x10);
+ sub_8083E88(0xb);
+}
+
+void sub_8086E40(void)
+{
+ SpriteLookAroundEffect(xxx_call_GetLeaderEntity());
+ sub_803E708(10,0x46);
+ sub_8052910(&gUnknown_8100D3C);
+ sub_803E708(10,0x46);
+ gDungeonGlobalData->unk2 = 1;
+}
+
+void sub_8086E74(struct DungeonEntity * param_1)
+{
+ sub_806CDD4(param_1,0xf,0);
+ sub_8086A54(param_1);
+ PlaySoundEffect(0x1f8);
+ sub_803E708(0x44,0x46);
+}
+
+void sub_8086E9C(void)
+{
+ struct DungeonEntity * LeaderEntity;
+
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_8083E88(0x72);
+ sub_8085374();
+ sub_80854D4();
+ sub_8085930(4);
+ sub_80855E4(sub_8086A3C);
+ sub_808563C(sub_8086A3C);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
+ CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_METAPOD);
+ CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_GENGAR);
+ CopySpeciesNametoBuffer(gUnknown_202E038 + 0xA0, SPECIES_CATERPIE);
+}
+
+void sub_8086F00(void)
+{
+ struct DungeonEntity * LeaderEntity;
+
+ LeaderEntity = xxx_call_GetLeaderEntity();
+ sub_80854D4();
+ sub_8085930(4);
+ sub_80855E4(sub_8086A3C);
+ sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
+ CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_METAPOD);
+ CopySpeciesNametoBuffer(gUnknown_202E038 + 0x50, SPECIES_GENGAR);
+ CopySpeciesNametoBuffer(gUnknown_202E038 + 0xA0, SPECIES_CATERPIE);
+}
diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c
index 6c4d40f..1abd973 100644
--- a/src/friend_area_action_menu_1.c
+++ b/src/friend_area_action_menu_1.c
@@ -22,7 +22,6 @@ extern void PlaySound(u32);
extern void nullsub_104();
extern void sub_801A928();
extern void sub_8099690(u32);
-extern void GivePokemonItem(s16, struct HeldItem *);
extern u32 sub_801A8AC();
extern u32 sub_801A6E8(u32);
diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c
index 9fbf686..7dbc441 100644
--- a/src/friend_list_menu.c
+++ b/src/friend_list_menu.c
@@ -37,7 +37,6 @@ extern u8 gPartyMenuItemPlaceholder[];
extern struct UnkTextStruct2 gUnknown_80DD370;
extern u32 sub_8026F04(struct PokemonStruct *);
-extern void GivePokemonItem(s16 index_, struct HeldItem* item);
extern void sub_8026074(u32);
extern void PlaySound(u32);
bool8 sub_8026F38(struct PokemonStruct *r0);
diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c
index 9c50251..16f71bb 100644
--- a/src/kangaskhan_storage_2.c
+++ b/src/kangaskhan_storage_2.c
@@ -204,7 +204,7 @@ void sub_8017D24(void)
switch(menuAction)
{
case 3:
- if (GetNumberOfFilledInventorySlots() > 0x13)
+ if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
sub_801CBB8();
UpdateKangaskhanStorageState(6);
diff --git a/src/luminous_cave.c b/src/luminous_cave.c
index a50e92c..eef6acd 100644
--- a/src/luminous_cave.c
+++ b/src/luminous_cave.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "constants/bg_music.h"
+#include "constants/colors.h"
#include "input.h"
#include "item.h"
#include "memory.h"
@@ -75,7 +76,6 @@ extern u8 *gUnknown_80D4934[];
extern u8 gUnknown_80DCA24[];
extern u8 gUnknown_80DCA2C[];
-extern bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern void UpdateLuminousCaveState(u32);
@@ -116,7 +116,6 @@ extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
void sub_808F734(struct PokemonStruct *, s16);
void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
u32 sub_801602C(u32 r0, u8 *name);
-void sub_808D9AC(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801A6E8(u32);
extern s32 sub_801A8AC(void);
@@ -377,7 +376,7 @@ void UpdateLuminousCaveDialogue(void)
sub_80141B4(gLuminousCaveLetUsBegin,0,0,0x105);
break;
case LUMINOUS_CAVE_CHANGED_APPEARANCE:
- sub_808D9AC(gPlayerName,gUnknown_203B2B0->pokeStruct,5);
+ PrintColoredPokeNameToBuffer(gPlayerName,gUnknown_203B2B0->pokeStruct, COLOR_CYAN);
PlaySound(0x1ff);
gUnknown_203B2B0->fallbackState = LUMINOUS_CAVE_EVOLVED;
sub_80141B4(gLuminousCaveChangedAppearance,0,0,0x105);
diff --git a/src/mailbox.c b/src/mailbox.c
index 88eabdd..395701f 100644
--- a/src/mailbox.c
+++ b/src/mailbox.c
@@ -6,10 +6,10 @@
#include "mailbox.h"
-extern void sub_802E4B0(void);
+extern void HandleMailboxMenu(void);
extern void nullsub_133(void);
extern void sub_802E578(void);
-extern void sub_802E60C(void);
+extern void HandleMailActionMenu(void);
extern void sub_802E73C(void);
extern void sub_802E758(void);
extern void sub_802E774(void);
@@ -61,7 +61,7 @@ u32 sub_802DFD8(void)
SetMailboxState(1);
break;
case 1:
- sub_802E4B0();
+ HandleMailboxMenu();
break;
case 2:
nullsub_133();
@@ -71,7 +71,7 @@ u32 sub_802DFD8(void)
sub_802E578();
break;
case 6:
- sub_802E60C();
+ HandleMailActionMenu();
break;
case 7:
sub_802E73C();
diff --git a/src/mailbox_1.c b/src/mailbox_1.c
index 18bb8fc..41b7994 100644
--- a/src/mailbox_1.c
+++ b/src/mailbox_1.c
@@ -5,8 +5,11 @@
#include "input.h"
#include "mailbox.h"
+extern struct unkStruct_203B304 *gUnknown_203B304;
+
extern u8 gMailAccepted[];
extern u8 gUnknown_80E0324[];
+
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
@@ -21,10 +24,160 @@ extern u32 sub_802C898(void);
extern void sub_802C8F4(void);
extern u32 sub_802DEE0(void);
extern void sub_802DF24(void);
+extern u8 *sub_8095FE8(u8);
+extern u8 HasNoMailinMailbox(void);
+extern u8 sub_8012FD8(u32 *);
+extern void sub_8013114(u32 *, s32 *);
+extern u32 sub_802BDEC(u32);
+extern void sub_8096A78(void);
+extern void sub_8096C80(void);
+extern void sub_8096D24(void);
+extern void sub_8096040(u8);
+extern void sub_8096DF8(u8);
+extern void sub_8096078(void);
+extern void PlayMenuSoundEffect(u32);
+extern void PlaySound(u32);
+extern void sub_802BEDC(void);
+extern u8 sub_802BE74(void);
+extern u8 HasNoAcceptedJobs(void);
+extern u8 HasNoPKMNNews(void);
+extern void sub_8012EA4(u32 *, u32);
-extern struct unkStruct_203B304 *gUnknown_203B304;
+void HandleMailboxMenu(void)
+{
+ s32 menuAction = 0;
+
+ if(!sub_8012FD8(&gUnknown_203B304->unk6C))
+ {
+ sub_8013114(&gUnknown_203B304->unk6C, &menuAction);
+ if(menuAction != 1) gUnknown_203B304->unk64 = menuAction;
+ }
+ switch(menuAction)
+ {
+ case 2:
+ if(!HasNoMailinMailbox())
+ SetMailboxState(4);
+ else
+ sub_8012EA4(&gUnknown_203B304->unk6C, 1);
+ break;
+ case 3:
+ if(!HasNoAcceptedJobs())
+ SetMailboxState(8);
+ else
+ sub_8012EA4(&gUnknown_203B304->unk6C, 1);
+ break;
+ case 4:
+ if(!HasNoPKMNNews())
+ SetMailboxState(9);
+ else
+ sub_8012EA4(&gUnknown_203B304->unk6C, 1);
+ break;
+ case 8:
+ SetMailboxState(2);
+ break;
+ case 1:
+ SetMailboxState(3);
+ break;
+ }
+}
+
+void sub_802E578(void)
+{
+ u8 *return_var;
+
+ switch(sub_802BDEC(1))
+ {
+
+ case 3:
+ gUnknown_203B304->unk8 = sub_802BE74();
+ SetMailboxState(6);
+ break;
+ case 4:
+ gUnknown_203B304->unk8 = sub_802BE74();
+ return_var = sub_8095FE8(gUnknown_203B304->unk8);
+ if(return_var[0] == 1)
+ {
+ gUnknown_203B304->mailIndex = return_var[5];
+ gUnknown_203B304->fallbackState = 5;
+ SetMailboxState(0xB);
+ }
+ else
+ SetMailboxState(7);
+ break;
+ case 2:
+ sub_802BEDC();
+ SetMailboxState(1);
+ break;
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void HandleMailActionMenu(void)
+{
+ s32 menuAction = 0;
+ u8 *return_var;
+ sub_802BDEC(0);
+ if(!sub_8012FD8(&gUnknown_203B304->unk6C))
+ {
+ sub_8013114(&gUnknown_203B304->unk6C, &menuAction);
+ if(menuAction != 1) gUnknown_203B304->unk68 = menuAction;
+ }
+ switch(menuAction)
+ {
+ case 2:
+ case 3:
+ case 4:
+ break;
+ case 5:
+ PlaySound(0x133);
+ sub_8095FE8(gUnknown_203B304->unk8);
+ sub_8096A78();
+ sub_8096C80();
+ sub_8096D24();
+ sub_8096040(gUnknown_203B304->unk8);
+ sub_8096078();
+ if(HasNoMailinMailbox())
+ {
+ sub_802BEDC();
+ SetMailboxState(1);
+ }
+ else
+ SetMailboxState(5);
+ break;
+ case 8:
+ SetMailboxState(7);
+ break;
+ case 6:
+ PlaySound(0x133);
+ return_var = sub_8095FE8(gUnknown_203B304->unk8);
+ sub_8096DF8(return_var[5]);
+ sub_8096040(gUnknown_203B304->unk8);
+ sub_8096078();
+ if(HasNoMailinMailbox())
+ {
+ sub_802BEDC();
+ SetMailboxState(1);
+ }
+ else
+ SetMailboxState(5);
+ break;
+ case 7:
+ PlayMenuSoundEffect(0);
+ return_var = sub_8095FE8(gUnknown_203B304->unk8);
+ gUnknown_203B304->mailIndex = return_var[5];
+ gUnknown_203B304->fallbackState = 5;
+ SetMailboxState(0xB);
+ break;
+ case 1:
+ SetMailboxState(5);
+ break;
+ }
+}
+
void sub_802E73C(void)
{
switch(sub_802DEE0())
@@ -63,12 +216,12 @@ void sub_802E774(void)
case 3:
case 4:
gUnknown_203B304->mailIndex = GetPokemonNewsIndex();
- gUnknown_203B304->unk4 = 0xA;
+ gUnknown_203B304->fallbackState = 0xA;
SetMailboxState(0xB);
break;
case 2:
sub_802B81C();
- SetMailboxState(0x1);
+ SetMailboxState(1);
break;
}
}
@@ -80,7 +233,7 @@ void sub_802E7D0(void)
case 2:
case 3:
sub_802BACC();
- SetMailboxState(gUnknown_203B304->unk4);
+ SetMailboxState(gUnknown_203B304->fallbackState);
case 0:
case 1:
break;
diff --git a/src/pelipper_board_1.c b/src/pelipper_board_1.c
index 1bccc5a..a8e9b50 100644
--- a/src/pelipper_board_1.c
+++ b/src/pelipper_board_1.c
@@ -1,5 +1,32 @@
#include "global.h"
#include "mailbox.h"
+#include "pokemon.h"
+#include "item.h"
+#include "memory.h"
+#include "menu.h"
+#include "text.h"
+#include "team_inventory.h"
+
+struct unkStruct_203B308
+{
+ // size: 0xB6 << 1
+ u32 state;
+ u32 unk4;
+ u8 unk8;
+ u8 fill9[0xC - 9];
+ u32 unkC;
+ u8 fill10[0x50 - 0x10];
+ u8 unk50;
+ u8 fill51[0x64 - 0x51];
+ u32 unk64;
+ u32 unk68;
+ u32 unk6C;
+ u8 fill70[0xBC - 0x70];
+ struct MenuItem unkBC[8];
+ u16 unkFC[8];
+ struct UnkTextStruct2 unk10C[4];
+};
+extern struct unkStruct_203B308 *gUnknown_203B308;
extern u8 gPelipperBoard_Accepted[];
extern u8 gUnknown_80E03B8[];
@@ -10,10 +37,141 @@ extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern u32 sub_802C898(void);
extern void sub_802C8F4(void);
-extern void SetPelipperBoardState(u32);
extern u32 sub_802DEE0(void);
extern void sub_802DF24(void);
+extern u8 *sub_8096574(u8);
+extern u8 sub_802C4A4(void);
+extern void sub_8096C80(void);
+extern void sub_8096D24(void);
+extern void sub_8096A78(u8 *);
+extern void sub_80965B8(u8);
+extern void sub_80965F4(void);
+extern void sub_802C2D4(void);
+extern u8 sub_8012FD8(u32 *);
+extern void sub_8013114(u32 *, s32 *);
+extern u32 sub_802C1E4(u32);
+extern void PlaySound(u32);
+extern void SetPelipperBoardState(u32);
+extern u8 sub_802C26C(void);
+extern u8 HasNoAcceptedJobs(void);
+extern void sub_8012EA4(u32 *, u32);
+
+void sub_802ECB4(void)
+{
+ s32 menuAction = 0;
+
+ if(!sub_8012FD8(&gUnknown_203B308->unk6C))
+ {
+ sub_8013114(&gUnknown_203B308->unk6C, &menuAction);
+ if(menuAction != 1) gUnknown_203B308->unk64 = menuAction;
+ }
+
+ switch(menuAction)
+ {
+ case 2:
+ if(!sub_802C4A4())
+ SetPelipperBoardState(4);
+ else
+ sub_8012EA4(&gUnknown_203B308->unk6C, 1);
+ break;
+ case 3:
+ if(!HasNoAcceptedJobs())
+ SetPelipperBoardState(8);
+ else
+ sub_8012EA4(&gUnknown_203B308->unk6C, 1);
+ break;
+ case 5:
+ SetPelipperBoardState(2);
+ break;
+ case 1:
+ SetPelipperBoardState(3);
+ break;
+ }
+}
+
+void sub_802ED4C(void)
+{
+ switch(sub_802C1E4(1))
+ {
+ case 3:
+ gUnknown_203B308->unk8 = sub_802C26C();
+ SetPelipperBoardState(6);
+ break;
+ case 4:
+ gUnknown_203B308->unk8 = sub_802C26C();
+ SetPelipperBoardState(7);
+ break;
+ case 2:
+ sub_802C2D4();
+ SetPelipperBoardState(1);
+ break;
+ case 0:
+ case 1:
+ break;
+ }
+}
+void sub_802EDBC(void)
+{
+ u8 *return_var;
+ s32 menuAction = 0;
+
+ sub_802C1E4(0);
+ if(!sub_8012FD8(&gUnknown_203B308->unk6C))
+ {
+ sub_8013114(&gUnknown_203B308->unk6C, &menuAction);
+ if(menuAction != 1) gUnknown_203B308->unk68 = menuAction;
+ }
+ switch(menuAction)
+ {
+ case 4:
+ PlaySound(0x133);
+ return_var = sub_8096574(gUnknown_203B308->unk8);
+ switch(*return_var)
+ {
+ case 2:
+ gUnknown_203B308->unk4 = 1;
+ sub_80965B8(gUnknown_203B308->unk8);
+ sub_80965F4();
+ sub_802C2D4();
+ SetPelipperBoardState(3);
+ break;
+ case 3:
+ gUnknown_203B308->unk4 = 2;
+ sub_80965B8(gUnknown_203B308->unk8);
+ sub_80965F4();
+ sub_802C2D4();
+ SetPelipperBoardState(3);
+ break;
+ case 4:
+ gUnknown_203B308->unk4 = 3;
+ sub_80965B8(gUnknown_203B308->unk8);
+ sub_80965F4();
+ sub_802C2D4();
+ SetPelipperBoardState(3);
+ break;
+ default:
+ sub_8096A78(return_var);
+ sub_8096C80();
+ sub_8096D24();
+ if(sub_802C4A4())
+ {
+ sub_802C2D4();
+ SetPelipperBoardState(1);
+ }
+ else
+ SetPelipperBoardState(5);
+ break;
+ }
+ break;
+ case 5:
+ SetPelipperBoardState(7);
+ break;
+ case 1:
+ SetPelipperBoardState(5);
+ break;
+ }
+}
void sub_802EEA0(void)
{
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index 9bd00d5..1721e1d 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -270,12 +270,12 @@ char * GetMonSpecies(s16 index)
return gMonsterParameters[index].species;
}
-void sub_808D9AC(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum)
+void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum)
{
u8 nameBuffer [20];
sub_80922B4(nameBuffer, pokemon->name, POKEMON_NAME_LENGTH);
- if (colorNum == 0) {
+ if (colorNum == COLOR_WHITE) {
colorNum = COLOR_CYAN;
}
ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // #c%c%s{END_COLOR_TEXT_2}
@@ -286,7 +286,7 @@ void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
u8 nameBuffer [20];
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
- if (colorNum == 0) {
+ if (colorNum == COLOR_WHITE) {
colorNum = COLOR_YELLOW;
}
ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // #c%c%s{END_COLOR_TEXT_2}
@@ -300,7 +300,7 @@ void sub_808DA0C(u8 *buffer, u8 *param_2)
ExpandPlaceholdersBuffer(buffer,gUnknown_8107638,nameBuffer); // %s
}
-void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon)
+void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon)
{
sub_80922B4(buffer, pokemon->name, POKEMON_NAME_LENGTH);
}
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 34feee1..1ded0ec 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -86,7 +86,7 @@ extern void sub_8013984(u32 *);
extern u8 HasNoPKMNNews(void);
extern u8 CheckPKMNNewsSlot(u8 r0);
extern struct PokemonStruct *sub_808D3BC(void);
-extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
+extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern u16 gUnknown_203B2D0;
extern u16 gUnknown_203B2D2;
@@ -719,7 +719,7 @@ void sub_802BC08(void)
void sub_802BC7C(void)
{
- sub_808DA34(gAvailablePokemonNames, sub_808D3BC());
+ PrintPokeNameToBuffer(gAvailablePokemonNames, sub_808D3BC());
if(gUnknown_203B46C->playerGender == FEMALE)
{
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC4C); // She
diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c
index 9c54575..4d0efcb 100644
--- a/src/wonder_mail_3_mid.c
+++ b/src/wonder_mail_3_mid.c
@@ -135,7 +135,7 @@ extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_802DEE0(void);
extern void sub_802DF24(void);
-extern void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon);
+extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern void sub_802F6FC(void);
extern void sub_802F718(void);
@@ -368,7 +368,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, u8 r1)
// NOTE: dumb var to get correct ordering
preload = gUnknown_203B310;
strcpy(gUnknown_202E5D8, preload->unk10->clientName);
- sub_808DA34(gAvailablePokemonNames, GetPlayerPokemonStruct());
+ PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct());
gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->unk14);
gUnknown_203B310->faceData = NULL;