summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2022-03-11 10:10:49 -0800
committerGitHub <noreply@github.com>2022-03-11 10:10:49 -0800
commit30fea2d6f303e0e57b62032f56da86c8223ef1f7 (patch)
tree9636ef46bb5f555874dc8ba16c82dc79bc563a12
parentea1aa9c0c5c3a4167912d1078fffdd5e69cbbe98 (diff)
parentcf492fd141b33c21f369dfa7aabebf3c52cb8ec1 (diff)
Merge pull request #98 from AnonymousRandomPerson/master
Finished attack AI decomp
-rw-r--r--asm/code_800D090.s2
-rw-r--r--asm/code_8012A18.s16
-rw-r--r--asm/code_801EE10.s14
-rw-r--r--asm/code_803B050.s36
-rw-r--r--asm/code_803D110.s4
-rw-r--r--asm/code_8044210.s12
-rw-r--r--asm/code_80521D0.s12
-rw-r--r--asm/code_8057144.s691
-rw-r--r--asm/code_805744C.s552
-rw-r--r--asm/code_805D8C8.s (renamed from asm/code_805CEB8.s)1010
-rw-r--r--asm/code_806CD90.s3264
-rw-r--r--asm/code_806E8B0.s2951
-rw-r--r--asm/code_807034C.s2
-rw-r--r--asm/code_80718D8.s4
-rw-r--r--asm/code_8075BA4.s9211
-rw-r--r--asm/code_8077274.s9186
-rw-r--r--asm/code_807C4A0.s136
-rw-r--r--asm/code_807C7AC.s322
-rw-r--r--asm/code_8090208.s2
-rw-r--r--asm/code_8098BDC.s10
-rw-r--r--asm/friend_rescue.s2
-rw-r--r--asm/kecleon_items_1.s2
-rw-r--r--asm/makuhita_dojo.s2
-rw-r--r--asm/wonder_mail_2.s2
-rw-r--r--asm/wonder_mail_4.s2
-rw-r--r--asm/wonder_mail_5.s12
-rw-r--r--data/data_80F4E2C.s25
-rw-r--r--data/data_80F54B4.s22
-rw-r--r--data/data_8106A4C.s15
-rw-r--r--data/data_8106F7C.s9
-rw-r--r--include/charge_move.h2
-rw-r--r--include/code_800D090.h6
-rw-r--r--include/constants/move.h14
-rw-r--r--include/constants/type.h2
-rw-r--r--include/dungeon_action.h3
-rw-r--r--include/dungeon_ai_attack.h10
-rw-r--r--include/dungeon_ai_attack_1.h11
-rw-r--r--include/dungeon_ai_attack_2.h9
-rw-r--r--include/dungeon_ai_item_weight.h2
-rw-r--r--include/dungeon_ai_items.h4
-rw-r--r--include/dungeon_ai_movement.h1
-rw-r--r--include/dungeon_ai_targeting.h1
-rw-r--r--include/dungeon_ai_targeting_1.h2
-rw-r--r--include/dungeon_ai_targeting_2.h1
-rw-r--r--include/dungeon_capabilities.h1
-rw-r--r--include/dungeon_capabilities_1.h4
-rw-r--r--include/dungeon_engine.h2
-rw-r--r--include/dungeon_entity.h49
-rw-r--r--include/dungeon_global_data.h1
-rw-r--r--include/dungeon_items.h1
-rw-r--r--include/dungeon_map_access.h2
-rw-r--r--include/dungeon_movement.h1
-rw-r--r--include/dungeon_pokemon_attributes.h8
-rw-r--r--include/dungeon_random.h2
-rw-r--r--include/dungeon_random_1.h1
-rw-r--r--include/dungeon_range.h1
-rw-r--r--include/dungeon_util.h4
-rw-r--r--include/dungeon_util_1.h1
-rw-r--r--include/dungeon_visibility.h1
-rw-r--r--include/move_util.h9
-rw-r--r--include/moves.h10
-rw-r--r--include/number_util.h1
-rw-r--r--include/position_util.h1
-rw-r--r--include/status.h12
-rw-r--r--include/status_checker.h5
-rw-r--r--include/status_checks.h1
-rw-r--r--include/status_checks_1.h3
-rw-r--r--include/targeting.h1
-rw-r--r--include/targeting_flags.h1
-rw-r--r--include/tile_types.h2
-rw-r--r--include/trap.h1
-rw-r--r--include/type_chart.h17
-rw-r--r--include/type_effectiveness.h8
-rw-r--r--include/weather.h1
-rwxr-xr-xld_script.txt16
-rw-r--r--src/code_800D090.c3
-rw-r--r--src/code_801D760.c16
-rw-r--r--src/code_8090208.c10
-rw-r--r--src/dungeon_action.c7
-rw-r--r--src/dungeon_ai_attack.c417
-rw-r--r--src/dungeon_ai_attack_1.c175
-rw-r--r--src/dungeon_ai_attack_2.c76
-rw-r--r--src/dungeon_ai_items.c3
-rw-r--r--src/dungeon_ai_movement.c3
-rw-r--r--src/dungeon_pokemon_attributes.c6
-rw-r--r--src/friend_area.c6
-rw-r--r--src/friend_list_menu.c4
-rw-r--r--src/items.c20
-rw-r--r--src/kecleon_items_1.c14
-rw-r--r--src/load_screen.c34
-rw-r--r--src/move_util.c88
-rw-r--r--src/moves.c28
-rw-r--r--src/moves_1.c4
-rw-r--r--src/pokemon_mid.c16
-rw-r--r--src/status.c19
-rw-r--r--src/status_checker.c447
-rw-r--r--src/status_checks_1.c2
-rw-r--r--src/thank_you_wonder_mail.c6
-rw-r--r--src/type_chart.c27
-rw-r--r--src/type_effectiveness.c174
-rw-r--r--src/wonder_mail_2.c4
101 files changed, 14148 insertions, 15227 deletions
diff --git a/asm/code_800D090.s b/asm/code_800D090.s
index dd890d8..0a9e887 100644
--- a/asm/code_800D090.s
+++ b/asm/code_800D090.s
@@ -8704,7 +8704,7 @@ _08011406:
ldr r1, _0801147C
ldr r2, [r6]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
movs r0, 0
str r0, [sp]
movs r0, 0xC
diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s
index 53f3185..3f2b6b8 100644
--- a/asm/code_8012A18.s
+++ b/asm/code_8012A18.s
@@ -510,7 +510,7 @@ _08012F62:
_08012F64:
mov r0, r8
ldr r1, _08012FBC
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
adds r0, r5, 0
adds r0, 0x14
mov r1, r9
@@ -4504,7 +4504,7 @@ _08014E60:
adds r5, 0x1
ldr r2, [r0]
mov r0, sp
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_08014E78:
mov r4, sp
b _08014F0E
@@ -4525,7 +4525,7 @@ _08014E84:
subs r2, 0x30
adds r5, 0x1
mov r0, sp
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r0, sp
ldrb r1, [r0]
cmp r1, 0
@@ -4558,7 +4558,7 @@ _08014EC4:
subs r2, 0x30
adds r5, 0x1
mov r0, sp
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r0, sp
ldrb r1, [r0]
cmp r1, 0
@@ -6139,7 +6139,7 @@ _08015B04:
add r0, sp, 0x4
ldr r1, _08015B30
adds r2, r5, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r1, r8
ldr r0, [r1]
ldrb r0, [r0, 0x19]
@@ -6169,7 +6169,7 @@ _08015B34:
mov r0, r10
ldr r1, _08015B78
adds r2, r5, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r3, r8
ldr r0, [r3]
ldrb r0, [r0, 0x19]
@@ -6477,7 +6477,7 @@ _08015DD0:
adds r0, 0xF8
ldr r2, [r0]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _08015DEE
.align 2, 0
_08015DDC: .4byte gUnknown_80DB65C
@@ -6487,7 +6487,7 @@ _08015DE0:
adds r0, 0xF8
ldr r2, [r0]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_08015DEE:
movs r0, 0
str r0, [sp]
diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s
index 84256f9..d7ce879 100644
--- a/asm/code_801EE10.s
+++ b/asm/code_801EE10.s
@@ -1160,7 +1160,7 @@ sub_801F700:
movs r7, 0
ldrsh r3, [r0, r7]
adds r0, r5, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r6]
adds r0, r4
ldr r3, [r0]
@@ -4920,7 +4920,7 @@ _08021574:
mov r0, r10
ldr r1, _08021598
add r2, sp, 0x8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r3, r8
ldr r0, [r3]
adds r0, 0x40
@@ -4968,7 +4968,7 @@ _080215D8:
adds r2, r0, 0
mov r0, r10
ldr r1, _08021608
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r2, r8
ldr r0, [r2]
adds r0, 0x40
@@ -5519,7 +5519,7 @@ _08021A16:
add r0, sp, 0x4
ldr r1, _08021A58
adds r2, r7, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r1, r8
ldr r0, [r1]
ldr r3, [r0, 0x74]
@@ -9021,7 +9021,7 @@ _08023628:
ldr r1, _080236A0
adds r2, r7, 0
adds r3, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r6, _0802368C
ldr r0, [r6]
movs r1, 0xE4
@@ -10170,7 +10170,7 @@ _08023F02:
ldr r1, _08023F80
adds r2, r6, 0
mov r3, r9
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r1, r8
ldr r0, [r1]
movs r2, 0xD6
@@ -10874,7 +10874,7 @@ sub_80243E8:
ldr r1, _08024454
mov r0, sp
adds r2, r5, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
adds r0, r4, 0
add sp, 0x3C
pop {r4,r5}
diff --git a/asm/code_803B050.s b/asm/code_803B050.s
index c13b2b6..1dcdaab 100644
--- a/asm/code_803B050.s
+++ b/asm/code_803B050.s
@@ -3,7 +3,7 @@
.syntax unified
- .text
+ .text
thumb_func_start sub_803B050
sub_803B050:
@@ -1059,7 +1059,7 @@ _0803B818:
add r0, sp, 0x4
adds r2, r6, 0
_0803B84C:
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_0803B850:
ldr r1, [r7, 0x48]
ldr r3, [r7]
@@ -1096,7 +1096,7 @@ _0803B86C:
ldr r1, [r0]
add r0, sp, 0x4
adds r2, r6, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r1, [r7, 0x48]
ldr r3, [r7]
movs r0, 0
@@ -1160,7 +1160,7 @@ _0803B916:
ldr r1, _0803B938
add r0, sp, 0x4
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _0803B944
.align 2, 0
_0803B938: .4byte gUnknown_80E8884
@@ -1299,7 +1299,7 @@ _0803BA4C:
ldr r1, _0803BA68
add r0, sp, 0x4
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _0803BACC
.align 2, 0
_0803BA64: .4byte gUnknown_202DE58
@@ -1313,7 +1313,7 @@ _0803BA6C:
ldr r1, _0803BA88
add r0, sp, 0x4
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _0803BACC
.align 2, 0
_0803BA84: .4byte gUnknown_202DE58
@@ -1347,7 +1347,7 @@ _0803BAA0:
add r0, sp, 0x4
adds r2, r4, 0
adds r3, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_0803BACC:
ldr r3, [r7]
movs r0, 0
@@ -1408,7 +1408,7 @@ _0803BB10:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r6, 0
str r6, [sp]
@@ -1454,7 +1454,7 @@ _0803BB74:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r4, 0
str r4, [sp]
@@ -1472,7 +1472,7 @@ _0803BB74:
ldr r1, [r5]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
str r4, [sp]
b _0803BD32
@@ -1508,7 +1508,7 @@ _0803BBF0:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r6, 0
str r6, [sp]
@@ -1554,7 +1554,7 @@ _0803BC58:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r6, 0
str r6, [sp]
@@ -1600,7 +1600,7 @@ _0803BCC0:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r6, 0
str r6, [sp]
@@ -1621,7 +1621,7 @@ _0803BD1A:
ldr r1, [r0]
add r0, sp, 0x4
mov r2, r8
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
str r6, [sp]
_0803BD32:
@@ -1677,7 +1677,7 @@ _0803BD88:
adds r0, r5, 0
adds r2, r6, 0
adds r3, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
mov r1, r8
str r1, [sp]
@@ -1783,7 +1783,7 @@ _0803BE80:
_0803BE94:
add r0, sp, 0x4
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r0, 0
str r0, [sp]
@@ -1823,7 +1823,7 @@ _0803BEC8:
ldr r1, _0803BF00
add r0, sp, 0x4
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _0803BF0C
.align 2, 0
_0803BEF8: .4byte gSpecialMissionText
@@ -1940,7 +1940,7 @@ _0803BFD0:
add r0, sp, 0x4
adds r2, r4, 0
_0803BFEE:
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r3, [r7]
movs r0, 0
str r0, [sp]
diff --git a/asm/code_803D110.s b/asm/code_803D110.s
index fe3cd47..f5d2ba2 100644
--- a/asm/code_803D110.s
+++ b/asm/code_803D110.s
@@ -1388,7 +1388,7 @@ _0803DB54:
adds r1, r5, 0
adds r2, r6, 0
adds r3, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _0803DBCA
.align 2, 0
_0803DB84: .4byte gUnknown_80F60F8
@@ -1411,7 +1411,7 @@ _0803DBBC:
adds r3, 0x30
add r0, sp, 0x4
adds r2, r6, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_0803DBCA:
add r0, sp, 0x4
bl CalcStringWidth
diff --git a/asm/code_8044210.s b/asm/code_8044210.s
index 282af3b..32a8e69 100644
--- a/asm/code_8044210.s
+++ b/asm/code_8044210.s
@@ -1316,14 +1316,4 @@ sub_8044C50:
_08044C84: .4byte 0x0000ffff
thumb_func_end sub_8044C50
- thumb_func_start ResetAction
-ResetAction:
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- strb r2, [r0, 0x4]
- strb r2, [r0, 0xC]
- bx lr
- thumb_func_end ResetAction
-
- .align 2, 0
+ .align 2, 0 \ No newline at end of file
diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s
index f8846cd..df01702 100644
--- a/asm/code_80521D0.s
+++ b/asm/code_80521D0.s
@@ -785,7 +785,7 @@ _080529D4:
ldr r0, _080529E4
ldr r1, _080529E8
ldr r2, _080529EC
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _08052A28
.align 2, 0
_080529E4: .4byte gUnknown_202E5D8
@@ -795,7 +795,7 @@ _080529F0:
ldr r0, _080529FC
ldr r1, _08052A00
ldr r2, _08052A04
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _08052A28
.align 2, 0
_080529FC: .4byte gUnknown_202E5D8
@@ -2451,7 +2451,7 @@ _08053734:
ldrb r1, [r1]
strb r1, [r0]
ldr r0, [sp, 0x18]
- bl GetMoveTargetsUser
+ bl MoveTargetsUser
lsls r0, 24
cmp r0, 0
beq _080537B4
@@ -2856,7 +2856,7 @@ _08053A86:
cmp r0, 0x5
bne _08053AE8
ldr r0, [sp, 0x18]
- bl GetMoveAffectedByMagicCoat
+ bl MoveAffectedByMagicCoat
lsls r0, 24
cmp r0, 0
beq _08053B5C
@@ -7204,7 +7204,7 @@ _08056136:
adds r0, r5, 0
adds r1, r7, 0
movs r2, 0x1
- bl IsMoveUsable_2
+ bl IsMoveUsable
_08056142:
lsls r0, 24
lsrs r4, r0, 24
@@ -7222,7 +7222,7 @@ _08056156:
cmp r0, 0x1
bne _080561A0
ldrh r0, [r7, 0x2]
- bl GetMoveAffectedByMuzzled
+ bl MoveAffectedByMuzzled
lsls r0, 24
cmp r0, 0
beq _080561A0
diff --git a/asm/code_8057144.s b/asm/code_8057144.s
index dc65f27..cf86611 100644
--- a/asm/code_8057144.s
+++ b/asm/code_8057144.s
@@ -285,693 +285,4 @@ _08057340:
bx r1
thumb_func_end sub_8057308
- thumb_func_start IsMoveUsable_1
-IsMoveUsable_1:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r6, [r7, 0x70]
- lsls r1, 3
- movs r0, 0x8C
- lsls r0, 1
- adds r1, r0
- adds r4, r6, r1
- ldrb r1, [r4]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080573BE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080573BE
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _080573BE
- ldrb r1, [r4, 0x1]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0805738E
- b _080573BE
-_0805738A:
- movs r0, 0x1
- b _080573C0
-_0805738E:
- movs r5, 0
- b _08057394
-_08057392:
- adds r5, 0x1
-_08057394:
- cmp r5, 0x3
- bgt _080573BE
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, r8
- bl IsMoveUsable_2
- lsls r0, 24
- cmp r0, 0
- bne _0805738A
- adds r4, 0x8
- movs r1, 0x9C
- lsls r1, 1
- adds r0, r6, r1
- cmp r4, r0
- bcs _080573BE
- ldrb r1, [r4]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08057392
-_080573BE:
- movs r0, 0
-_080573C0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsMoveUsable_1
-
- thumb_func_start IsMoveUsable_2
-IsMoveUsable_2:
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r6, [r0, 0x70]
- ldrh r1, [r4, 0x2]
- ldr r0, _08057430
- cmp r1, r0
- beq _08057442
- ldrb r1, [r4]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0805743E
- ldrb r1, [r4, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0805743E
- cmp r2, 0
- beq _08057442
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _0805743E
- adds r0, r6, 0
- adds r0, 0xBC
- ldrb r1, [r0]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _08057414
- adds r0, r4, 0
- bl MoveDealsDirectDamage
- lsls r0, 24
- cmp r0, 0
- beq _0805743E
-_08057414:
- ldrb r0, [r5]
- cmp r0, 0x6
- bne _08057442
- ldrh r1, [r4, 0x2]
- movs r0, 0xB0
- lsls r0, 1
- cmp r1, r0
- bne _08057434
- movs r1, 0x9C
- lsls r1, 1
- adds r0, r6, r1
- ldrb r1, [r0]
- b _08057436
- .align 2, 0
-_08057430: .4byte 0x00000163
-_08057434:
- ldrb r1, [r4]
-_08057436:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08057442
-_0805743E:
- movs r0, 0
- b _08057444
-_08057442:
- movs r0, 0x1
-_08057444:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end IsMoveUsable_2
-
- thumb_func_start sub_805744C
-sub_805744C:
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r6, [r0, 0x70]
- ldrh r1, [r4, 0x2]
- ldr r0, _080574A8
- cmp r1, r0
- beq _080574BA
- ldrb r1, [r4]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _080574B6
- ldrb r1, [r4, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080574B6
- cmp r2, 0
- beq _080574BA
- adds r0, r6, 0
- adds r0, 0xBC
- ldrb r1, [r0]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _0805748E
- adds r0, r4, 0
- bl MoveDealsDirectDamage
- lsls r0, 24
- cmp r0, 0
- beq _080574B6
-_0805748E:
- ldrb r0, [r5]
- cmp r0, 0x6
- bne _080574BA
- ldrh r1, [r4, 0x2]
- movs r0, 0xB0
- lsls r0, 1
- cmp r1, r0
- bne _080574AC
- movs r1, 0x9C
- lsls r1, 1
- adds r0, r6, r1
- ldrb r1, [r0]
- b _080574AE
- .align 2, 0
-_080574A8: .4byte 0x00000163
-_080574AC:
- ldrb r1, [r4]
-_080574AE:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080574BA
-_080574B6:
- movs r0, 0
- b _080574BC
-_080574BA:
- movs r0, 0x1
-_080574BC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805744C
-
- thumb_func_start sub_80574C4
-sub_80574C4:
- push {r4-r6,lr}
- sub sp, 0x104
- adds r4, r0, 0
- adds r5, r1, 0
- movs r3, 0
- movs r2, 0
- ldr r0, [r4]
- cmp r0, 0
- beq _08057502
- cmp r0, r5
- beq _080574EA
-_080574DA:
- lsls r0, r3, 2
- mov r6, sp
- adds r1, r6, r0
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r3, 0x1
-_080574EA:
- adds r2, 0x1
- cmp r2, 0x40
- bgt _08057502
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _08057502
- cmp r0, r5
- beq _080574EA
- cmp r3, 0x3F
- ble _080574DA
-_08057502:
- movs r2, 0
- ldr r0, [r4]
- b _08057524
-_08057508:
- lsls r0, r3, 2
- mov r6, sp
- adds r1, r6, r0
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r3, 0x1
-_08057518:
- adds r2, 0x1
- cmp r2, 0x40
- bgt _08057530
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
-_08057524:
- cmp r0, 0
- beq _08057530
- cmp r0, r5
- bne _08057518
- cmp r3, 0x3F
- ble _08057508
-_08057530:
- cmp r3, 0x40
- bgt _08057542
- movs r1, 0
- lsls r0, r3, 2
- add r0, sp
-_0805753A:
- stm r0!, {r1}
- adds r3, 0x1
- cmp r3, 0x40
- ble _0805753A
-_08057542:
- mov r3, sp
- adds r1, r4, 0
- movs r2, 0x40
-_08057548:
- ldm r3!, {r0}
- stm r1!, {r0}
- subs r2, 0x1
- cmp r2, 0
- bge _08057548
- add sp, 0x104
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80574C4
-
- thumb_func_start sub_805755C
-sub_805755C:
- push {r4,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- cmp r4, 0x97
- bne _08057576
- bl GetWeather
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08057576
- movs r0, 0
- b _08057580
-_08057576:
- adds r0, r4, 0
- bl DoesMoveCharge
- lsls r0, 24
- lsrs r0, 24
-_08057580:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805755C
-
- thumb_func_start sub_8057588
-sub_8057588:
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080575F8
- ldr r5, [r4, 0x70]
- movs r3, 0
-_0805759E:
- lsls r0, r3, 3
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- adds r2, r5, r0
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- adds r4, r3, 0x1
- cmp r0, 0
- beq _080575F2
- movs r3, 0x1
- ldrb r1, [r2, 0x1]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080575C8
- movs r0, 0xEF
- ands r0, r1
- strb r0, [r2, 0x1]
- movs r3, 0x2
-_080575C8:
- ldrb r1, [r2, 0x1]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080575F2
- movs r0, 0xF7
- ands r0, r1
- strb r0, [r2, 0x1]
- cmp r6, 0
- beq _080575F2
- cmp r3, 0
- beq _080575F2
- adds r1, r3, 0
-_080575E2:
- ldrb r0, [r2, 0x4]
- cmp r0, 0
- beq _080575EC
- subs r0, 0x1
- strb r0, [r2, 0x4]
-_080575EC:
- subs r1, 0x1
- cmp r1, 0
- bne _080575E2
-_080575F2:
- adds r3, r4, 0
- cmp r3, 0x3
- ble _0805759E
-_080575F8:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8057588
-
- thumb_func_start sub_8057600
-sub_8057600:
- push {r4,lr}
- ldrh r4, [r0, 0x2]
- adds r0, r1, 0
- bl sub_8057620
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8094828
- lsls r0, 16
- asrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8057600
-
- thumb_func_start sub_8057620
-sub_8057620:
- push {lr}
- cmp r0, 0
- beq _0805762C
- lsls r0, 24
- lsrs r0, 24
- b _0805762E
-_0805762C:
- movs r0, 0
-_0805762E:
- pop {r1}
- bx r1
- thumb_func_end sub_8057620
-
- thumb_func_start sub_8057634
-sub_8057634:
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- movs r7, 0
- movs r4, 0x80
- lsls r4, 1
- str r3, [sp]
- adds r3, r4, 0
- bl sub_8055640
- cmp r0, 0
- beq _08057678
- movs r7, 0x1
- ldr r0, _08057684
- movs r1, 0
- ldrsh r2, [r0, r1]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_805727C
- lsls r0, 24
- cmp r0, 0
- beq _08057678
- ldr r0, _08057688
- ldr r2, [r0]
- str r7, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r3, 0x1
- bl sub_8076F80
-_08057678:
- adds r0, r7, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08057684: .4byte gUnknown_80F4DB4
-_08057688: .4byte gUnknown_8106A4C
- thumb_func_end sub_8057634
-
- thumb_func_start sub_805768C
-sub_805768C:
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r3, 0
- movs r6, 0
- ldr r4, _080576B8
- ldr r3, [r4]
- adds r3, 0x1
- str r3, [r4]
- ldr r4, _080576BC
- lsls r3, 2
- adds r3, r4
- ldr r3, [r3]
- str r5, [sp]
- bl sub_8055640
- cmp r0, 0
- bne _080576C4
- ldr r1, _080576C0
- movs r0, 0x1
- strb r0, [r1]
- b _080576C6
- .align 2, 0
-_080576B8: .4byte gUnknown_202F21C
-_080576BC: .4byte gUnknown_8106A54
-_080576C0: .4byte gUnknown_202F220
-_080576C4:
- movs r6, 0x1
-_080576C6:
- adds r0, r6, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805768C
-
- thumb_func_start sub_80576D0
-sub_80576D0:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _080576F4
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r2, r0, 0
- adds r2, 0x1
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075F34
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080576F4: .4byte gUnknown_80F4F28
- thumb_func_end sub_80576D0
-
- thumb_func_start sub_80576F8
-sub_80576F8:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _0805771C
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r2, r0, 0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_8075C58
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805771C: .4byte gUnknown_80F4E74
- thumb_func_end sub_80576F8
-
- thumb_func_start sub_8057720
-sub_8057720:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _08057744
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r2, r0, 0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8075DBC
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08057744: .4byte gUnknown_80F4E78
- thumb_func_end sub_8057720
-
- thumb_func_start sub_8057748
-sub_8057748:
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r4, _08057778
- bl GetWeather
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r3, 0
- bl HealTargetHP
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08057778: .4byte gUnknown_80F502A
- thumb_func_end sub_8057748
-
- thumb_func_start sub_805777C
-sub_805777C:
- push {lr}
- bl sub_8079DB8
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_805777C
-
- thumb_func_start sub_8057788
-sub_8057788:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- adds r6, r2, 0
- mov r8, r3
- movs r0, 0
- mov r9, r0
- adds r0, r4, 0
- bl GetMapTileForDungeonEntity_2
- adds r5, r0, 0
- bl IsTileGround
- lsls r0, 24
- cmp r0, 0
- beq _080577BA
- ldrh r1, [r5]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- beq _080577CC
-_080577BA:
- ldr r0, _080577C8
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r7, 0
- bl sub_80522F4
- b _0805780E
- .align 2, 0
-_080577C8: .4byte gUnknown_80FD14C
-_080577CC:
- adds r0, r4, 0
- adds r1, r6, 0
- bl MoveMatchesChargingStatus
- lsls r0, 24
- cmp r0, 0
- beq _080577F8
- ldr r0, _080577F4
- ldr r3, [r0]
- mov r0, r8
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_8055640
- adds r0, r4, 0
- bl sub_8079764
- b _0805780A
- .align 2, 0
-_080577F4: .4byte gUnknown_80F4F68
-_080577F8:
- ldr r0, _08057820
- ldr r0, [r0]
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0xA
- adds r3, r6, 0
- bl sub_8079618
-_0805780A:
- movs r0, 0x1
- mov r9, r0
-_0805780E:
- mov r0, r9
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08057820: .4byte gUnknown_80FAD4C
- thumb_func_end sub_8057788
-
- .align 2,0 @ Don't pad with nop
+ .align 2, 0 \ No newline at end of file
diff --git a/asm/code_805744C.s b/asm/code_805744C.s
new file mode 100644
index 0000000..4272c44
--- /dev/null
+++ b/asm/code_805744C.s
@@ -0,0 +1,552 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_805744C
+sub_805744C:
+ push {r4-r6,lr}
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r6, [r0, 0x70]
+ ldrh r1, [r4, 0x2]
+ ldr r0, _080574A8
+ cmp r1, r0
+ beq _080574BA
+ ldrb r1, [r4]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _080574B6
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080574B6
+ cmp r2, 0
+ beq _080574BA
+ adds r0, r6, 0
+ adds r0, 0xBC
+ ldrb r1, [r0]
+ adds r5, r0, 0
+ cmp r1, 0x5
+ bne _0805748E
+ adds r0, r4, 0
+ bl MoveDealsDirectDamage
+ lsls r0, 24
+ cmp r0, 0
+ beq _080574B6
+_0805748E:
+ ldrb r0, [r5]
+ cmp r0, 0x6
+ bne _080574BA
+ ldrh r1, [r4, 0x2]
+ movs r0, 0xB0
+ lsls r0, 1
+ cmp r1, r0
+ bne _080574AC
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r0, r6, r1
+ ldrb r1, [r0]
+ b _080574AE
+ .align 2, 0
+_080574A8: .4byte 0x00000163
+_080574AC:
+ ldrb r1, [r4]
+_080574AE:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _080574BA
+_080574B6:
+ movs r0, 0
+ b _080574BC
+_080574BA:
+ movs r0, 0x1
+_080574BC:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805744C
+
+ thumb_func_start sub_80574C4
+sub_80574C4:
+ push {r4-r6,lr}
+ sub sp, 0x104
+ adds r4, r0, 0
+ adds r5, r1, 0
+ movs r3, 0
+ movs r2, 0
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _08057502
+ cmp r0, r5
+ beq _080574EA
+_080574DA:
+ lsls r0, r3, 2
+ mov r6, sp
+ adds r1, r6, r0
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r3, 0x1
+_080574EA:
+ adds r2, 0x1
+ cmp r2, 0x40
+ bgt _08057502
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08057502
+ cmp r0, r5
+ beq _080574EA
+ cmp r3, 0x3F
+ ble _080574DA
+_08057502:
+ movs r2, 0
+ ldr r0, [r4]
+ b _08057524
+_08057508:
+ lsls r0, r3, 2
+ mov r6, sp
+ adds r1, r6, r0
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [r1]
+ adds r3, 0x1
+_08057518:
+ adds r2, 0x1
+ cmp r2, 0x40
+ bgt _08057530
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+_08057524:
+ cmp r0, 0
+ beq _08057530
+ cmp r0, r5
+ bne _08057518
+ cmp r3, 0x3F
+ ble _08057508
+_08057530:
+ cmp r3, 0x40
+ bgt _08057542
+ movs r1, 0
+ lsls r0, r3, 2
+ add r0, sp
+_0805753A:
+ stm r0!, {r1}
+ adds r3, 0x1
+ cmp r3, 0x40
+ ble _0805753A
+_08057542:
+ mov r3, sp
+ adds r1, r4, 0
+ movs r2, 0x40
+_08057548:
+ ldm r3!, {r0}
+ stm r1!, {r0}
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08057548
+ add sp, 0x104
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80574C4
+
+ thumb_func_start sub_805755C
+sub_805755C:
+ push {r4,lr}
+ lsls r1, 16
+ lsrs r4, r1, 16
+ cmp r4, 0x97
+ bne _08057576
+ bl GetWeather
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08057576
+ movs r0, 0
+ b _08057580
+_08057576:
+ adds r0, r4, 0
+ bl DoesMoveCharge
+ lsls r0, 24
+ lsrs r0, 24
+_08057580:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805755C
+
+ thumb_func_start sub_8057588
+sub_8057588:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080575F8
+ ldr r5, [r4, 0x70]
+ movs r3, 0
+_0805759E:
+ lsls r0, r3, 3
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r0, r1
+ adds r2, r5, r0
+ ldrb r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ adds r4, r3, 0x1
+ cmp r0, 0
+ beq _080575F2
+ movs r3, 0x1
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080575C8
+ movs r0, 0xEF
+ ands r0, r1
+ strb r0, [r2, 0x1]
+ movs r3, 0x2
+_080575C8:
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _080575F2
+ movs r0, 0xF7
+ ands r0, r1
+ strb r0, [r2, 0x1]
+ cmp r6, 0
+ beq _080575F2
+ cmp r3, 0
+ beq _080575F2
+ adds r1, r3, 0
+_080575E2:
+ ldrb r0, [r2, 0x4]
+ cmp r0, 0
+ beq _080575EC
+ subs r0, 0x1
+ strb r0, [r2, 0x4]
+_080575EC:
+ subs r1, 0x1
+ cmp r1, 0
+ bne _080575E2
+_080575F2:
+ adds r3, r4, 0
+ cmp r3, 0x3
+ ble _0805759E
+_080575F8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8057588
+
+ thumb_func_start sub_8057600
+sub_8057600:
+ push {r4,lr}
+ ldrh r4, [r0, 0x2]
+ adds r0, r1, 0
+ bl sub_8057620
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_8094828
+ lsls r0, 16
+ asrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057600
+
+ thumb_func_start sub_8057620
+sub_8057620:
+ push {lr}
+ cmp r0, 0
+ beq _0805762C
+ lsls r0, 24
+ lsrs r0, 24
+ b _0805762E
+_0805762C:
+ movs r0, 0
+_0805762E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8057620
+
+ thumb_func_start sub_8057634
+sub_8057634:
+ push {r4-r7,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r6, r1, 0
+ movs r7, 0
+ movs r4, 0x80
+ lsls r4, 1
+ str r3, [sp]
+ adds r3, r4, 0
+ bl sub_8055640
+ cmp r0, 0
+ beq _08057678
+ movs r7, 0x1
+ ldr r0, _08057684
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_805727C
+ lsls r0, 24
+ cmp r0, 0
+ beq _08057678
+ ldr r0, _08057688
+ ldr r2, [r0]
+ str r7, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r3, 0x1
+ bl sub_8076F80
+_08057678:
+ adds r0, r7, 0
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08057684: .4byte gUnknown_80F4DB4
+_08057688: .4byte gUnknown_8106A4C
+ thumb_func_end sub_8057634
+
+ thumb_func_start sub_805768C
+sub_805768C:
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r3, 0
+ movs r6, 0
+ ldr r4, _080576B8
+ ldr r3, [r4]
+ adds r3, 0x1
+ str r3, [r4]
+ ldr r4, _080576BC
+ lsls r3, 2
+ adds r3, r4
+ ldr r3, [r3]
+ str r5, [sp]
+ bl sub_8055640
+ cmp r0, 0
+ bne _080576C4
+ ldr r1, _080576C0
+ movs r0, 0x1
+ strb r0, [r1]
+ b _080576C6
+ .align 2, 0
+_080576B8: .4byte gUnknown_202F21C
+_080576BC: .4byte gUnknown_8106A54
+_080576C0: .4byte gUnknown_202F220
+_080576C4:
+ movs r6, 0x1
+_080576C6:
+ adds r0, r6, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805768C
+
+ thumb_func_start sub_80576D0
+sub_80576D0:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _080576F4
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r2, r0, 0
+ adds r2, 0x1
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8075F34
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080576F4: .4byte gUnknown_80F4F28
+ thumb_func_end sub_80576D0
+
+ thumb_func_start sub_80576F8
+sub_80576F8:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _0805771C
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r2, r0, 0
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r3, 0x1
+ bl sub_8075C58
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0805771C: .4byte gUnknown_80F4E74
+ thumb_func_end sub_80576F8
+
+ thumb_func_start sub_8057720
+sub_8057720:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _08057744
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r2, r0, 0
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8075DBC
+ movs r0, 0x1
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08057744: .4byte gUnknown_80F4E78
+ thumb_func_end sub_8057720
+
+ thumb_func_start sub_8057748
+sub_8057748:
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r6, r1, 0
+ ldr r4, _08057778
+ bl GetWeather
+ lsls r0, 24
+ lsrs r0, 23
+ adds r0, r4
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r3, 0
+ bl HealTargetHP
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08057778: .4byte gUnknown_80F502A
+ thumb_func_end sub_8057748
+
+ thumb_func_start sub_805777C
+sub_805777C:
+ push {lr}
+ bl sub_8079DB8
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_805777C
+
+ thumb_func_start sub_8057788
+sub_8057788:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r7, r1, 0
+ adds r6, r2, 0
+ mov r8, r3
+ movs r0, 0
+ mov r9, r0
+ adds r0, r4, 0
+ bl GetMapTileForDungeonEntity_2
+ adds r5, r0, 0
+ bl IsTileGround
+ lsls r0, 24
+ cmp r0, 0
+ beq _080577BA
+ ldrh r1, [r5]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ beq _080577CC
+_080577BA:
+ ldr r0, _080577C8
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0805780E
+ .align 2, 0
+_080577C8: .4byte gUnknown_80FD14C
+_080577CC:
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl MoveMatchesChargingStatus
+ lsls r0, 24
+ cmp r0, 0
+ beq _080577F8
+ ldr r0, _080577F4
+ ldr r3, [r0]
+ mov r0, r8
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r7, 0
+ adds r2, r6, 0
+ bl sub_8055640
+ adds r0, r4, 0
+ bl sub_8079764
+ b _0805780A
+ .align 2, 0
+_080577F4: .4byte gUnknown_80F4F68
+_080577F8:
+ ldr r0, _08057820
+ ldr r0, [r0]
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r4, 0
+ movs r2, 0xA
+ adds r3, r6, 0
+ bl sub_8079618
+_0805780A:
+ movs r0, 0x1
+ mov r9, r0
+_0805780E:
+ mov r0, r9
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08057820: .4byte gUnknown_80FAD4C
+ thumb_func_end sub_8057788
+
+ .align 2,0 @ Don't pad with nop
diff --git a/asm/code_805CEB8.s b/asm/code_805D8C8.s
index d318b14..2200fb9 100644
--- a/asm/code_805CEB8.s
+++ b/asm/code_805D8C8.s
@@ -5,1002 +5,6 @@
.text
- thumb_func_start CanUseOnTargetWithStatusChecker
-CanUseOnTargetWithStatusChecker:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r6, r1, 0
- adds r7, r2, 0
- ldr r5, [r0, 0x70]
- ldr r4, [r6, 0x70]
- adds r0, r4, 0
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0805CEE0
- adds r0, r7, 0
- bl MoveCannotHitFrozen
- lsls r0, 24
- cmp r0, 0
- beq _0805CEE0
- b _0805D540
-_0805CEE0:
- ldrh r0, [r7, 0x2]
- subs r2, r0, 0x3
- ldr r0, _0805CEF8
- cmp r2, r0
- bls _0805CEEE
- bl _0805D802
-_0805CEEE:
- lsls r0, r2, 2
- ldr r1, _0805CEFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0805CEF8: .4byte 0x0000017b
-_0805CEFC: .4byte _0805CF00
- .align 2, 0
-_0805CF00:
- .4byte _0805D4FA
- .4byte _0805D4F0
- .4byte _0805D50E
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D516
- .4byte _0805D51C
- .4byte _0805D802
- .4byte _0805D7F6
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D520
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D52C
- .4byte _0805D532
- .4byte _0805D544
- .4byte _0805D55A
- .4byte _0805D7F6
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D566
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D56A
- .4byte _0805D4F0
- .4byte _0805D570
- .4byte _0805D802
- .4byte _0805D57E
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D584
- .4byte _0805D802
- .4byte _0805D7F6
- .4byte _0805D802
- .4byte _0805D596
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D59C
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5C8
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5D0
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D4F0
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5E2
- .4byte _0805D4F0
- .4byte _0805D5E8
- .4byte _0805D5F8
- .4byte _0805D802
- .4byte _0805D5FE
- .4byte _0805D5F8
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D55A
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D4F0
- .4byte _0805D662
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D668
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5DC
- .4byte _0805D802
- .4byte _0805D5C8
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7AC
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D704
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D704
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7F6
- .4byte _0805D70A
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7F6
- .4byte _0805D5C8
- .4byte _0805D802
- .4byte _0805D5F8
- .4byte _0805D802
- .4byte _0805D7E4
- .4byte _0805D7DC
- .4byte _0805D802
- .4byte _0805D7E4
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D716
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D740
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D74A
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5DC
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D4F0
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D75C
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D734
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D782
- .4byte _0805D740
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D704
- .4byte _0805D7F6
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D5C8
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7A0
- .4byte _0805D7CA
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D78A
- .4byte _0805D59C
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7BE
- .4byte _0805D7AC
- .4byte _0805D802
- .4byte _0805D794
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D55A
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D782
- .4byte _0805D802
- .4byte _0805D802
- .4byte _0805D7F6
-_0805D4F0:
- adds r0, r6, 0
- bl IsSleeping
- lsls r0, 24
- b _0805D7A6
-_0805D4FA:
- adds r0, r4, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _0805D540
- adds r0, r6, 0
- bl IsSleeping
- lsls r0, 24
- b _0805D7A6
-_0805D50E:
- adds r0, r4, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- b _0805D7F0
-_0805D516:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- b _0805D744
-_0805D51C:
- ldr r0, [r4, 0x2C]
- b _0805D58E
-_0805D520:
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _0805D540
- b _0805D7AC
-_0805D52C:
- movs r3, 0xE
- ldrsh r0, [r4, r3]
- b _0805D78E
-_0805D532:
- movs r7, 0xE
- ldrsh r1, [r4, r7]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r1, r0
- ble _0805D540
- b _0805D802
-_0805D540:
- movs r0, 0
- b _0805D804
-_0805D544:
- movs r3, 0x8C
- lsls r3, 1
- adds r4, r3
- adds r0, r4, 0
- bl HasDisabledMove
- lsls r0, 24
- cmp r0, 0
- bne _0805D540
- adds r0, r4, 0
- b _0805D7B2
-_0805D55A:
- ldr r0, [r6, 0x70]
- movs r7, 0x82
- lsls r7, 1
- adds r0, r7
- ldr r0, [r0]
- b _0805D744
-_0805D566:
- ldr r0, [r4, 0x34]
- b _0805D58E
-_0805D56A:
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- b _0805D744
-_0805D570:
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r4, r2
- bl LastMoveOutOfPP
- lsls r0, 24
- b _0805D7A6
-_0805D57E:
- adds r0, r4, 0
- adds r0, 0xDC
- b _0805D7FA
-_0805D584:
- ldr r0, [r4, 0x2C]
- cmp r0, 0x3E
- ble _0805D58C
- b _0805D802
-_0805D58C:
- ldr r0, [r4, 0x30]
-_0805D58E:
- cmp r0, 0x3E
- ble _0805D594
- b _0805D802
-_0805D594:
- b _0805D540
-_0805D596:
- adds r0, r4, 0
- adds r0, 0xAC
- b _0805D798
-_0805D59C:
- adds r0, r4, 0
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r0, 0xE
- beq _0805D5B0
- adds r0, r4, 0
- adds r0, 0x5D
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0805D5BC
-_0805D5B0:
- adds r0, r4, 0
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805D5BC
- b _0805D802
-_0805D5BC:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- cmp r0, 0xA
- ble _0805D5C6
- b _0805D802
-_0805D5C6:
- b _0805D540
-_0805D5C8:
- adds r0, r4, 0
- adds r0, 0xAC
- ldrb r0, [r0]
- b _0805D7D6
-_0805D5D0:
- movs r7, 0xE
- ldrsh r0, [r4, r7]
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- subs r0, r1
- b _0805D744
-_0805D5DC:
- movs r3, 0x20
- ldrsh r0, [r4, r3]
- b _0805D744
-_0805D5E2:
- movs r7, 0x22
- ldrsh r0, [r4, r7]
- b _0805D744
-_0805D5E8:
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _0805D5F2
- b _0805D802
-_0805D5F2:
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- b _0805D744
-_0805D5F8:
- adds r0, r4, 0
- adds r0, 0xB0
- b _0805D7FA
-_0805D5FE:
- movs r6, 0
- adds r2, r4, 0
- adds r2, 0x1C
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- cmp r0, 0x9
- ble _0805D6FC
- adds r1, r4, 0
- adds r1, 0x20
- movs r7, 0x20
- ldrsh r0, [r4, r7]
- cmp r0, 0x9
- ble _0805D6FC
- adds r3, r1, 0
- movs r5, 0
-_0805D61C:
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r5
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x9
- ble _0805D6FC
- lsls r1, r6, 2
- adds r0, r4, 0
- adds r0, 0x2C
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0xFF
- ble _0805D6FC
- adds r0, r4, 0
- adds r0, 0x34
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0xFF
- ble _0805D6FC
- adds r3, 0x2
- adds r2, 0x2
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x1
- bgt _0805D6FC
- movs r7, 0
- ldrsh r0, [r2, r7]
- cmp r0, 0x9
- ble _0805D6FC
- movs r1, 0
- ldrsh r0, [r3, r1]
- cmp r0, 0x9
- bgt _0805D61C
- b _0805D6FC
-_0805D662:
- adds r0, r4, 0
- adds r0, 0xA8
- b _0805D7FA
-_0805D668:
- movs r6, 0
- adds r3, r5, 0
- adds r3, 0x1C
- adds r2, r4, 0
- adds r2, 0x1C
- movs r7, 0x1C
- ldrsh r1, [r5, r7]
- movs r7, 0x1C
- ldrsh r0, [r4, r7]
- cmp r1, r0
- blt _0805D6FC
- mov r12, r2
- mov r8, r3
- movs r3, 0
-_0805D684:
- adds r1, r5, 0
- adds r1, 0x20
- adds r1, r3
- adds r0, r4, 0
- adds r0, 0x20
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _0805D6FC
- adds r1, r5, 0
- adds r1, 0x24
- adds r1, r3
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _0805D6FC
- lsls r2, r6, 2
- adds r1, r5, 0
- adds r1, 0x2C
- adds r1, r2
- adds r0, r4, 0
- adds r0, 0x2C
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- blt _0805D6FC
- adds r1, r5, 0
- adds r1, 0x34
- adds r1, r2
- adds r0, r4, 0
- adds r0, 0x34
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- blt _0805D6FC
- movs r0, 0x2
- add r12, r0
- add r8, r0
- adds r3, 0x2
- adds r6, 0x1
- cmp r6, 0x1
- bgt _0805D6FC
- mov r2, r8
- movs r7, 0
- ldrsh r1, [r2, r7]
- mov r2, r12
- movs r7, 0
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _0805D684
-_0805D6FC:
- cmp r6, 0x2
- beq _0805D702
- b _0805D802
-_0805D702:
- b _0805D540
-_0805D704:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- b _0805D744
-_0805D70A:
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0805D802
- b _0805D540
-_0805D716:
- adds r0, r5, 0
- adds r0, 0x60
- ldrb r1, [r0]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0805D728
- b _0805D540
-_0805D728:
- adds r0, r4, 0
- adds r0, 0x60
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- b _0805D7B8
-_0805D734:
- adds r0, r4, 0
- adds r0, 0x60
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- b _0805D7B8
-_0805D740:
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
-_0805D744:
- cmp r0, 0
- bgt _0805D802
- b _0805D540
-_0805D74A:
- adds r0, r5, 0
- adds r0, 0x5E
- adds r1, r4, 0
- adds r1, 0x5E
- ldrh r0, [r0]
- ldrh r1, [r1]
- cmp r0, r1
- bne _0805D802
- b _0805D540
-_0805D75C:
- mov r0, r8
- movs r1, 0xE
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _0805D770
- adds r0, r4, 0
- adds r0, 0xC8
- b _0805D798
-_0805D770:
- movs r3, 0x1C
- ldrsh r0, [r5, r3]
- cmp r0, 0x13
- ble _0805D802
- movs r7, 0x20
- ldrsh r0, [r5, r7]
- cmp r0, 0x13
- ble _0805D802
- b _0805D540
-_0805D782:
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- b _0805D7F0
-_0805D78A:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
-_0805D78E:
- cmp r0, 0x1
- bgt _0805D802
- b _0805D540
-_0805D794:
- adds r0, r4, 0
- adds r0, 0xD0
-_0805D798:
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0805D802
- b _0805D540
-_0805D7A0:
- adds r0, r4, 0
- adds r0, 0xFD
- ldrb r0, [r0]
-_0805D7A6:
- cmp r0, 0
- beq _0805D802
- b _0805D540
-_0805D7AC:
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r4, r2
-_0805D7B2:
- bl HasLastUsedMove
- lsls r0, 24
-_0805D7B8:
- cmp r0, 0
- bne _0805D802
- b _0805D540
-_0805D7BE:
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0805D802
- b _0805D540
-_0805D7CA:
- adds r0, r4, 0
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0805D7D6
- b _0805D540
-_0805D7D6:
- cmp r0, 0x4
- bne _0805D802
- b _0805D540
-_0805D7DC:
- adds r0, r4, 0
- adds r0, 0xAC
- ldrb r0, [r0]
- b _0805D7F0
-_0805D7E4:
- adds r0, r4, 0
- adds r0, 0xAC
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0805D7F0
- b _0805D540
-_0805D7F0:
- cmp r0, 0x3
- bne _0805D802
- b _0805D540
-_0805D7F6:
- adds r0, r4, 0
- adds r0, 0xBC
-_0805D7FA:
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0805D802
- b _0805D540
-_0805D802:
- movs r0, 0x1
-_0805D804:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CanUseOnTargetWithStatusChecker
-
- thumb_func_start HasDisabledMove
-HasDisabledMove:
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r3, 0
- movs r6, 0x1
- movs r5, 0x20
- adds r2, r4, 0
-_0805D81C:
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0805D82E
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0805D848
-_0805D82E:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x3
- ble _0805D81C
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0805D848
- movs r0, 0
- b _0805D84A
-_0805D848:
- movs r0, 0x1
-_0805D84A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end HasDisabledMove
-
- thumb_func_start LastMoveOutOfPP
-LastMoveOutOfPP:
- push {r4,r5,lr}
- movs r3, 0
- movs r5, 0x1
- adds r2, r0, 0
- movs r4, 0x10
-_0805D85A:
- ldrb r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0805D876
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0805D876
- ldrb r0, [r2, 0x4]
- cmp r0, 0
- bne _0805D876
- movs r0, 0x1
- b _0805D880
-_0805D876:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x3
- ble _0805D85A
- movs r0, 0
-_0805D880:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end LastMoveOutOfPP
-
- thumb_func_start HasLastUsedMove
-HasLastUsedMove:
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r3, 0
- movs r6, 0x1
- movs r5, 0x10
- adds r2, r4, 0
-_0805D894:
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0805D8A6
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0805D8C0
-_0805D8A6:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x3
- ble _0805D894
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0805D8C0
- movs r0, 0
- b _0805D8C2
-_0805D8C0:
- movs r0, 0x1
-_0805D8C2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end HasLastUsedMove
-
thumb_func_start sub_805D8C8
sub_805D8C8:
push {r4-r7,lr}
@@ -5458,7 +4462,7 @@ _0805FCEC:
adds r0, r5, 0
ldr r1, _0805FD38
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, _0805FD30
adds r1, r6, 0
bl sub_8013800
@@ -11304,7 +10308,7 @@ _08062C24:
mov r0, r10
adds r1, r5, 0
movs r2, 0x1
- bl IsMoveUsable_2
+ bl IsMoveUsable
add r1, sp, 0x4
movs r2, 0
lsls r0, 24
@@ -12538,7 +11542,7 @@ _08063606:
ldr r0, [sp, 0x14]
adds r1, r5, 0
movs r2, 0x1
- bl IsMoveUsable_2
+ bl IsMoveUsable
add r1, sp, 0x4
movs r2, 0
lsls r0, 24
@@ -12715,7 +11719,7 @@ _0806376A:
bgt _08063788
mov r0, r8
movs r2, 0x1
- bl IsMoveUsable_1
+ bl IsMoveIndexUsable
lsls r0, 24
lsrs r0, 24
negs r1, r0
@@ -18050,7 +17054,7 @@ _08066208:
ldrb r2, [r0]
add r0, sp, 0x4
ldr r1, _08066258
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
movs r0, 0
ldrsh r1, [r5, r0]
ldr r0, _0806625C
@@ -18146,7 +17150,7 @@ _080662C4:
adds r0, r4
ldrb r2, [r0]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, _0806634C
lsls r1, r4, 1
adds r1, r5, r1
@@ -18248,7 +17252,7 @@ _080663A0:
adds r0, r4
ldrb r2, [r0]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, _08066428
lsls r1, r4, 1
adds r1, r5, r1
diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s
index 509da75..34b2572 100644
--- a/asm/code_806CD90.s
+++ b/asm/code_806CD90.s
@@ -2969,3266 +2969,4 @@ _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 RoundUpFixedPoint
- 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
+ .align 2, 0 \ No newline at end of file
diff --git a/asm/code_806E8B0.s b/asm/code_806E8B0.s
new file mode 100644
index 0000000..3596b4d
--- /dev/null
+++ b/asm/code_806E8B0.s
@@ -0,0 +1,2951 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ 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 RoundUpFixedPoint
+ 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_807034C.s b/asm/code_807034C.s
index c8f4d56..83d614f 100644
--- a/asm/code_807034C.s
+++ b/asm/code_807034C.s
@@ -858,7 +858,7 @@ sub_8070968:
ldr r0, _0807098C
ldr r3, [r0]
adds r0, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
b _080709BA
.align 2, 0
_08070988: .4byte gUnknown_8106FA4
diff --git a/asm/code_80718D8.s b/asm/code_80718D8.s
index f1fe7a5..4732f6b 100644
--- a/asm/code_80718D8.s
+++ b/asm/code_80718D8.s
@@ -3173,7 +3173,7 @@ _080733DE:
mov r0, r8
adds r1, r5, 0
movs r2, 0x1
- bl IsMoveUsable_2
+ bl IsMoveUsable
lsls r0, 24
cmp r0, 0
bne _08073440
@@ -3384,7 +3384,7 @@ _0807357A:
adds r1, r5, 0
movs r2, 0x1
str r3, [sp, 0x14]
- bl IsMoveUsable_2
+ bl IsMoveUsable
lsls r0, 24
ldr r3, [sp, 0x14]
cmp r0, 0
diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s
index f07f25e..2f26f52 100644
--- a/asm/code_8075BA4.s
+++ b/asm/code_8075BA4.s
@@ -2761,9215 +2761,4 @@ _0807722E:
_08077238: .4byte gUnknown_80FC21C
thumb_func_end sub_8077160
- thumb_func_start GetFlashFireStatus
-GetFlashFireStatus:
- push {r4,lr}
- adds r4, r0, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077258
- adds r0, r4, 0
- movs r1, 0x48
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- bne _0807725C
-_08077258:
- movs r0, 0
- b _0807726C
-_0807725C:
- ldr r0, [r4, 0x70]
- movs r1, 0x28
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bgt _0807726A
- movs r0, 0x2
- b _0807726C
-_0807726A:
- movs r0, 0x1
-_0807726C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetFlashFireStatus
-
- thumb_func_start sub_8077274
-sub_8077274:
- push {r4,r5,lr}
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080772B4
- ldr r0, [r5, 0x70]
- adds r4, r0, 0
- ldr r0, _080772BC
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- movs r0, 0x28
- ldrsh r1, [r4, r0]
- adds r1, 0x1
- cmp r1, 0x1
- ble _0807729E
- movs r1, 0x2
-_0807729E:
- movs r2, 0x28
- ldrsh r0, [r4, r2]
- cmp r0, r1
- beq _080772AE
- strh r1, [r4, 0x28]
- adds r0, r5, 0
- bl sub_8041C58
-_080772AE:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_080772B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080772BC: .4byte gAvailablePokemonNames
- thumb_func_end sub_8077274
-
- thumb_func_start sub_80772C0
-sub_80772C0:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- adds r5, r1, 0
- adds r4, r2, 0
- adds r7, r3, 0
- ldr r0, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _080772E6
- b _08077422
-_080772E6:
- cmp r4, 0
- beq _08077300
- ldr r0, _080772F8
- ldr r1, _080772FC
- ldr r1, [r1]
- bl strcpy
- b _0807730A
- .align 2, 0
-_080772F8: .4byte gUnknown_202DE58
-_080772FC: .4byte gUnknown_80FC0C8
-_08077300:
- ldr r0, _08077340
- ldr r1, _08077344
- ldr r1, [r1]
- bl strcpy
-_0807730A:
- cmp r7, 0xFF
- bgt _08077320
- mov r0, r9
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_8071728
- lsls r0, 24
- cmp r0, 0
- beq _08077320
- b _08077422
-_08077320:
- adds r0, r5, 0
- movs r1, 0xB
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _08077350
- cmp r7, 0xFF
- bgt _08077350
- ldr r0, _08077348
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0807734C
- b _08077376
- .align 2, 0
-_08077340: .4byte gUnknown_202DE58
-_08077344: .4byte gUnknown_80FC0B8
-_08077348: .4byte gAvailablePokemonNames
-_0807734C: .4byte gUnknown_80FD550
-_08077350:
- adds r0, r5, 0
- movs r1, 0x9
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _0807738C
- cmp r4, 0
- bne _0807738C
- cmp r7, 0xFF
- bgt _0807738C
- cmp r6, 0
- beq _08077422
- ldr r0, _08077384
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08077388
-_08077376:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
- b _08077422
- .align 2, 0
-_08077384: .4byte gAvailablePokemonNames
-_08077388: .4byte gUnknown_80FCA60
-_0807738C:
- ldr r0, [r5, 0x70]
- mov r8, r0
- ldr r0, _080773B8
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- lsls r1, r4, 2
- mov r0, r8
- adds r0, 0x2C
- adds r0, r1
- ldr r0, [r0]
- mov r10, r0
- adds r6, r1, 0
- cmp r7, 0xFF
- bgt _080773BC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8041FD8
- b _080773C4
- .align 2, 0
-_080773B8: .4byte gAvailablePokemonNames
-_080773BC:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8041FB4
-_080773C4:
- mov r0, r8
- adds r0, 0x2C
- adds r4, r0, r6
- ldr r0, [r4]
- adds r1, r7, 0
- bl sub_8009DA4
- str r0, [r4]
- cmp r0, 0x1
- bgt _080773DC
- movs r0, 0x2
- str r0, [r4]
-_080773DC:
- ldr r0, [r4]
- ldr r1, _080773F0
- cmp r0, r1
- ble _080773E6
- str r1, [r4]
-_080773E6:
- ldr r0, [r4]
- cmp r10, r0
- ble _080773F8
- ldr r0, _080773F4
- b _080773FE
- .align 2, 0
-_080773F0: .4byte 0x000063fd
-_080773F4: .4byte gUnknown_80FC11C
-_080773F8:
- cmp r10, r0
- bge _08077410
- ldr r0, _0807740C
-_080773FE:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
- b _0807741C
- .align 2, 0
-_0807740C: .4byte gUnknown_80FC118
-_08077410:
- ldr r0, _08077430
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
-_0807741C:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_08077422:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077430: .4byte gUnknown_80FC184
- thumb_func_end sub_80772C0
-
- thumb_func_start sub_8077434
-sub_8077434:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- adds r5, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r0, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807752E
- cmp r4, 0
- beq _08077470
- ldr r0, _08077468
- ldr r1, _0807746C
- ldr r1, [r1]
- bl strcpy
- b _0807747A
- .align 2, 0
-_08077468: .4byte gUnknown_202DE58
-_0807746C: .4byte gUnknown_80FC0AC
-_08077470:
- ldr r0, _080774BC
- ldr r1, _080774C0
- ldr r1, [r1]
- bl strcpy
-_0807747A:
- mov r0, r8
- cmp r0, 0xFF
- bgt _08077490
- mov r0, r9
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_8071728
- lsls r0, 24
- cmp r0, 0
- bne _0807752E
-_08077490:
- ldr r7, [r5, 0x70]
- ldr r0, _080774C4
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- lsls r1, r4, 2
- adds r0, r7, 0
- adds r0, 0x34
- adds r0, r1
- ldr r0, [r0]
- mov r10, r0
- adds r6, r1, 0
- mov r0, r8
- cmp r0, 0xFF
- bgt _080774C8
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_804201C
- b _080774D0
- .align 2, 0
-_080774BC: .4byte gUnknown_202DE58
-_080774C0: .4byte gUnknown_80FC09C
-_080774C4: .4byte gAvailablePokemonNames
-_080774C8:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8041FFC
-_080774D0:
- adds r0, r7, 0
- adds r0, 0x34
- adds r4, r0, r6
- ldr r0, [r4]
- mov r1, r8
- bl sub_8009DA4
- str r0, [r4]
- cmp r0, 0x1
- bgt _080774E8
- movs r0, 0x2
- str r0, [r4]
-_080774E8:
- ldr r0, [r4]
- ldr r1, _080774FC
- cmp r0, r1
- ble _080774F2
- str r1, [r4]
-_080774F2:
- ldr r0, [r4]
- cmp r10, r0
- ble _08077504
- ldr r0, _08077500
- b _0807750A
- .align 2, 0
-_080774FC: .4byte 0x000063fd
-_08077500: .4byte gUnknown_80FC114
-_08077504:
- cmp r10, r0
- bge _0807751C
- ldr r0, _08077518
-_0807750A:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
- b _08077528
- .align 2, 0
-_08077518: .4byte gUnknown_80FC0FC
-_0807751C:
- ldr r0, _0807753C
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
-_08077528:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_0807752E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807753C: .4byte gUnknown_80FC180
- thumb_func_end sub_8077434
-
- thumb_func_start sub_8077540
-sub_8077540:
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080775D2
- ldr r6, [r4, 0x70]
- ldr r0, _08077578
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8042040
- cmp r5, 0
- beq _08077584
- ldr r0, _0807757C
- ldr r1, _08077580
- ldr r1, [r1]
- bl strcpy
- b _0807758E
- .align 2, 0
-_08077578: .4byte gAvailablePokemonNames
-_0807757C: .4byte gUnknown_202DE58
-_08077580: .4byte gUnknown_80FC090
-_08077584:
- ldr r0, _080775B4
- ldr r1, _080775B8
- ldr r1, [r1]
- bl strcpy
-_0807758E:
- lsls r0, r5, 1
- adds r1, r6, 0
- adds r1, 0x24
- adds r1, r0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x13
- bgt _080775C0
- adds r0, r2, 0x1
- strh r0, [r1]
- ldr r0, _080775BC
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080775CC
- .align 2, 0
-_080775B4: .4byte gUnknown_202DE58
-_080775B8: .4byte gUnknown_80FC084
-_080775BC: .4byte gUnknown_80FC1C4
-_080775C0:
- ldr r0, _080775D8
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080775CC:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080775D2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080775D8: .4byte gUnknown_80FC218
- thumb_func_end sub_8077540
-
- thumb_func_start sub_80775DC
-sub_80775DC:
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r3, 24
- lsrs r4, r3, 24
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080776B6
- cmp r6, 0
- beq _0807760C
- ldr r0, _08077604
- ldr r1, _08077608
- ldr r1, [r1]
- bl strcpy
- b _08077616
- .align 2, 0
-_08077604: .4byte gUnknown_202DE58
-_08077608: .4byte gUnknown_80FC090
-_0807760C:
- ldr r0, _08077654
- ldr r1, _08077658
- ldr r1, [r1]
- bl strcpy
-_08077616:
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8071728
- lsls r0, 24
- cmp r0, 0
- bne _080776B6
- adds r0, r5, 0
- movs r1, 0x1E
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _08077664
- cmp r6, 0
- bne _08077664
- cmp r4, 0
- beq _080776B6
- ldr r0, _0807765C
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08077660
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _080776B6
- .align 2, 0
-_08077654: .4byte gUnknown_202DE58
-_08077658: .4byte gUnknown_80FC084
-_0807765C: .4byte gAvailablePokemonNames
-_08077660: .4byte gUnknown_80FCA64
-_08077664:
- ldr r4, [r5, 0x70]
- ldr r0, _0807769C
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_8042060
- lsls r0, r6, 1
- adds r4, 0x24
- adds r1, r4, r0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080776A4
- subs r0, r2, 0x1
- strh r0, [r1]
- ldr r0, _080776A0
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _080776B0
- .align 2, 0
-_0807769C: .4byte gAvailablePokemonNames
-_080776A0: .4byte gUnknown_80FC1A4
-_080776A4:
- ldr r0, _080776BC
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
-_080776B0:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_080776B6:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080776BC: .4byte gUnknown_80FC1F0
- thumb_func_end sub_80775DC
-
- thumb_func_start sub_80776C0
-sub_80776C0:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077776
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08077776
- adds r0, r4, 0
- movs r1, 0x1F
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _08077718
- ldr r0, _08077710
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- cmp r6, 0
- beq _08077776
- ldr r0, _08077714
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077776
- .align 2, 0
-_08077710: .4byte gAvailablePokemonNames
-_08077714: .4byte gUnknown_80FCC18
-_08077718:
- ldr r6, [r4, 0x70]
- ldr r0, _08077758
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r6, 0
- adds r1, 0xBC
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _08077764
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _0807775C
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xBD
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_80420A0
- ldr r0, _08077760
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077770
- .align 2, 0
-_08077758: .4byte gAvailablePokemonNames
-_0807775C: .4byte gUnknown_80F4E3C
-_08077760: .4byte gUnknown_80FB2E0
-_08077764:
- ldr r0, _0807777C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08077770:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077776:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807777C: .4byte gUnknown_80FB300
- thumb_func_end sub_80776C0
-
- thumb_func_start sub_8077780
-sub_8077780:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _080777A2
- b _080778F0
-_080777A2:
- adds r0, r7, 0
- adds r1, r5, 0
- mov r2, r10
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- beq _080777B4
- b _080778F0
-_080777B4:
- adds r0, r5, 0
- movs r1, 0x16
- bl HasAbility
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080777EC
- ldr r0, _080777E4
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- mov r0, r10
- cmp r0, 0
- bne _080777D6
- b _080778F0
-_080777D6:
- ldr r0, _080777E8
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _080778F0
- .align 2, 0
-_080777E4: .4byte gAvailablePokemonNames
-_080777E8: .4byte gUnknown_80FCBF8
-_080777EC:
- movs r6, 0x1
- ldr r1, [r5, 0x70]
- mov r8, r1
- ldr r0, _08077844
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- mov r1, r8
- adds r1, 0xAC
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _08077850
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, _08077848
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- mov r1, r8
- adds r1, 0xAD
- strb r0, [r1]
- mov r0, r8
- adds r0, 0xAE
- strb r4, [r0]
- adds r0, 0x1
- strb r4, [r0]
- movs r6, 0
- ldr r0, _0807784C
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
- adds r0, r5, 0
- bl sub_8041C1C
- adds r0, r5, 0
- bl GetMovementSpeed
- b _0807785C
- .align 2, 0
-_08077844: .4byte gAvailablePokemonNames
-_08077848: .4byte gUnknown_80F4E50
-_0807784C: .4byte gUnknown_80FB2AC
-_08077850:
- ldr r0, _08077900
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
-_0807785C:
- adds r0, r5, 0
- movs r1, 0x19
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _080778EA
- cmp r6, 0
- bne _080778EA
- movs r3, 0
- mov r9, r3
- movs r6, 0
-_08077874:
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- ldr r1, _08077904
- lsls r2, r6, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r3, 0x6
- ldrsh r1, [r5, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTile_1
- ldr r4, [r0, 0x10]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080778E4
- adds r0, r4, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _080778E4
- mov r0, r9
- cmp r0, 0
- bne _080778CA
- movs r1, 0x1
- mov r9, r1
- ldr r0, _08077908
- mov r1, r8
- movs r2, 0
- bl SetMessageArgument_2
- ldr r0, _0807790C
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_80522F4
-_080778CA:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807167C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080778E4
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, r10
- bl sub_8077780
-_080778E4:
- adds r6, 0x1
- cmp r6, 0x7
- ble _08077874
-_080778EA:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_080778F0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077900: .4byte gUnknown_80FB2CC
-_08077904: .4byte gAdjacentTileOffsets
-_08077908: .4byte gAvailablePokemonNames
-_0807790C: .4byte gUnknown_80FF01C
- thumb_func_end sub_8077780
-
- thumb_func_start sub_8077910
-sub_8077910:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080779DE
- cmp r4, 0
- bne _08077940
- ldr r1, _08077964
- adds r0, r5, 0
- movs r2, 0
- bl sub_808417C
- adds r4, r0, 0x1
-_08077940:
- ldr r6, [r5, 0x70]
- ldr r0, _08077968
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- bl GetMovementSpeed
- adds r7, r0, 0
- cmp r7, 0x4
- bne _08077970
- mov r0, r9
- cmp r0, 0
- beq _080779D8
- ldr r0, _0807796C
- b _0807799E
- .align 2, 0
-_08077964: .4byte gUnknown_80F4E40
-_08077968: .4byte gAvailablePokemonNames
-_0807796C: .4byte gUnknown_80FC2B8
-_08077970:
- movs r2, 0
- movs r0, 0x84
- lsls r0, 1
- adds r1, r6, r0
- b _08077988
-_0807797A:
- adds r2, 0x1
- cmp r2, 0x4
- bgt _08077990
- movs r1, 0x84
- lsls r1, 1
- adds r0, r6, r1
- adds r1, r0, r2
-_08077988:
- ldrb r0, [r1]
- cmp r0, 0
- bne _0807797A
- strb r4, [r1]
-_08077990:
- adds r0, r5, 0
- bl GetMovementSpeed
- adds r4, r0, 0
- cmp r7, r4
- bne _080779B0
- ldr r0, _080779AC
-_0807799E:
- ldr r2, [r0]
- mov r0, r8
- adds r1, r5, 0
- bl sub_80522F4
- b _080779D8
- .align 2, 0
-_080779AC: .4byte gUnknown_80FC298
-_080779B0:
- adds r0, r5, 0
- bl sub_8041CB8
- ldr r1, _080779EC
- lsls r0, r4, 2
- adds r0, r1
- ldr r2, [r0]
- mov r0, r8
- adds r1, r5, 0
- bl sub_80522F4
- adds r1, r6, 0
- adds r1, 0xF8
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1]
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r6, r1
- strb r2, [r0]
-_080779D8:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_080779DE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080779EC: .4byte gUnknown_80FA124
- thumb_func_end sub_8077910
-
- thumb_func_start sub_80779F0
-sub_80779F0:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- adds r5, r1, 0
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077AD0
- mov r0, r10
- adds r1, r5, 0
- mov r2, r9
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08077AD0
- ldr r7, [r5, 0x70]
- ldr r0, _08077A48
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- bl GetMovementSpeed
- str r0, [sp]
- cmp r0, 0
- bne _08077A50
- mov r0, r9
- cmp r0, 0
- beq _08077ACA
- ldr r0, _08077A4C
- b _08077AA2
- .align 2, 0
-_08077A48: .4byte gAvailablePokemonNames
-_08077A4C: .4byte gUnknown_80FC2D8
-_08077A50:
- movs r0, 0
- cmp r0, r8
- bge _08077A8C
-_08077A56:
- movs r1, 0
- adds r6, r0, 0x1
-_08077A5A:
- ldr r2, _08077A78
- adds r0, r7, r2
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _08077A80
- adds r0, r5, 0
- ldr r1, _08077A7C
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- strb r0, [r4]
- b _08077A86
- .align 2, 0
-_08077A78: .4byte 0x0000010d
-_08077A7C: .4byte gUnknown_80F4E48
-_08077A80:
- adds r1, 0x1
- cmp r1, 0x4
- ble _08077A5A
-_08077A86:
- adds r0, r6, 0
- cmp r0, r8
- blt _08077A56
-_08077A8C:
- adds r0, r5, 0
- bl GetMovementSpeed
- adds r4, r0, 0
- ldr r0, [sp]
- cmp r0, r4
- bne _08077AB4
- mov r2, r9
- cmp r2, 0
- beq _08077ACA
- ldr r0, _08077AB0
-_08077AA2:
- ldr r2, [r0]
- mov r0, r10
- adds r1, r5, 0
- bl sub_80522F4
- b _08077ACA
- .align 2, 0
-_08077AB0: .4byte gUnknown_80FC298
-_08077AB4:
- adds r0, r5, 0
- bl sub_8041CCC
- ldr r0, _08077AE0
- lsls r1, r4, 2
- adds r1, r0
- ldr r2, [r1]
- mov r0, r10
- adds r1, r5, 0
- bl sub_80522F4
-_08077ACA:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_08077AD0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077AE0: .4byte gUnknown_80FA124
- thumb_func_end sub_80779F0
-
- thumb_func_start sub_8077AE4
-sub_8077AE4:
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r5, r2, 24
- adds r7, r5, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077BAA
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08077BAA
- ldr r0, _08077B2C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r4, 0
- movs r1, 0x12
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _08077B34
- cmp r5, 0
- beq _08077BAA
- ldr r0, _08077B30
- b _08077B48
- .align 2, 0
-_08077B2C: .4byte gAvailablePokemonNames
-_08077B30: .4byte gUnknown_80FD500
-_08077B34:
- adds r0, r4, 0
- movs r1, 0x40
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _08077B58
- cmp r7, 0
- beq _08077BAA
- ldr r0, _08077B54
-_08077B48:
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077BAA
- .align 2, 0
-_08077B54: .4byte gUnknown_80FCDB4
-_08077B58:
- adds r0, r4, 0
- bl sub_8041BE8
- ldr r5, [r4, 0x70]
- adds r1, r5, 0
- adds r1, 0xBC
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _08077B98
- movs r0, 0x2
- strb r0, [r1]
- ldr r1, _08077B90
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xBD
- strb r0, [r1]
- ldr r0, _08077B94
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077BA4
- .align 2, 0
-_08077B90: .4byte gUnknown_80F4E4C
-_08077B94: .4byte gUnknown_80FB25C
-_08077B98:
- ldr r0, _08077BB0
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08077BA4:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077BAA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077BB0: .4byte gUnknown_80FB27C
- thumb_func_end sub_8077AE4
-
- thumb_func_start sub_8077BB4
-sub_8077BB4:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r5, r2, 24
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077C3A
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08077C3A
- ldr r5, [r4, 0x70]
- ldr r0, _08077C1C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xBC
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _08077C28
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, _08077C20
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xBD
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8041BF8
- ldr r0, _08077C24
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077C34
- .align 2, 0
-_08077C1C: .4byte gAvailablePokemonNames
-_08077C20: .4byte gUnknown_80F4ECC
-_08077C24: .4byte gUnknown_80FB940
-_08077C28:
- ldr r0, _08077C40
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08077C34:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077C3A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08077C40: .4byte gUnknown_80FB960
- thumb_func_end sub_8077BB4
-
- thumb_func_start HealTargetHP
-HealTargetHP:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- adds r5, r1, 0
- mov r10, r2
- mov r8, r3
- ldr r0, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08077C6E
- b _08077DC8
-_08077C6E:
- ldr r4, [r5, 0x70]
- movs r0, 0x10
- ldrsh r7, [r4, r0]
- movs r1, 0xE
- ldrsh r6, [r4, r1]
- ldrh r2, [r4, 0xE]
- adds r0, r6, 0
- ldrh r1, [r4, 0x10]
- mov r12, r1
- adds r1, r7, 0
- cmp r0, r1
- bne _08077C8C
- mov r0, r8
- cmp r0, 0
- bgt _08077C92
-_08077C8C:
- mov r3, r10
- cmp r3, 0
- bne _08077CD0
-_08077C92:
- ldrh r1, [r4, 0x10]
- add r1, r8
- strh r1, [r4, 0x10]
- ldrh r0, [r4, 0xE]
- add r0, r8
- strh r0, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- ldr r0, _08077CCC
- cmp r1, r0
- ble _08077CAA
- strh r0, [r4, 0x10]
-_08077CAA:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r3, 0x10
- ldrsh r2, [r4, r3]
- ldrh r1, [r4, 0x10]
- cmp r0, r2
- ble _08077CBA
- strh r1, [r4, 0xE]
-_08077CBA:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, r2
- bne _08077CC4
- adds r6, r0, 0
-_08077CC4:
- adds r0, r5, 0
- bl sub_8041C94
- b _08077CE8
- .align 2, 0
-_08077CCC: .4byte 0x000003e7
-_08077CD0:
- mov r3, r10
- adds r0, r2, r3
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, r1
- ble _08077CE2
- mov r0, r12
- strh r0, [r4, 0xE]
-_08077CE2:
- adds r0, r5, 0
- bl sub_8041CA8
-_08077CE8:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- subs r7, r0, r7
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- subs r6, r0, r6
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
- ldr r0, _08077D1C
- str r6, [r0]
- str r7, [r0, 0x4]
- ldr r0, _08077D20
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- cmp r6, 0
- bne _08077D28
- cmp r7, 0
- bne _08077D28
- ldr r3, [sp]
- cmp r3, 0
- beq _08077DC8
- ldr r0, _08077D24
- b _08077D3A
- .align 2, 0
-_08077D1C: .4byte gUnknown_202DE30
-_08077D20: .4byte gAvailablePokemonNames
-_08077D24: .4byte gUnknown_80FB204
-_08077D28:
- mov r0, r8
- cmp r0, 0
- bne _08077D4C
- cmp r6, 0
- bne _08077D4C
- ldr r1, [sp]
- cmp r1, 0
- beq _08077DC8
- ldr r0, _08077D48
-_08077D3A:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
- b _08077DC8
- .align 2, 0
-_08077D48: .4byte gUnknown_80FB21C
-_08077D4C:
- movs r2, 0
- mov r8, r2
- cmp r7, 0
- beq _08077D6E
- adds r0, r5, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _08077D62
- mov r8, r7
-_08077D62:
- ldr r0, _08077DA0
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
-_08077D6E:
- cmp r6, 0
- beq _08077DB4
- adds r0, r5, 0
- bl sub_8045888
- lsls r0, 24
- cmp r0, 0
- beq _08077D80
- mov r8, r6
-_08077D80:
- mov r3, r10
- cmp r3, 0
- beq _08077DB4
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08077DA8
- ldr r0, _08077DA4
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
- b _08077DB4
- .align 2, 0
-_08077DA0: .4byte gUnknown_80FB240
-_08077DA4: .4byte gUnknown_80FB1E0
-_08077DA8:
- ldr r0, _08077DD8
- ldr r2, [r0]
- mov r0, r9
- adds r1, r5, 0
- bl sub_80522F4
-_08077DB4:
- mov r3, r8
- cmp r3, 0
- beq _08077DC8
- movs r3, 0x1
- negs r3, r3
- mov r0, r8
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_803ED30
-_08077DC8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08077DD8: .4byte gUnknown_80FB1C4
- thumb_func_end HealTargetHP
-
- thumb_func_start sub_8077DDC
-sub_8077DDC:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077E3C
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- adds r1, 0xF1
- ldrb r0, [r1]
- cmp r0, 0
- beq _08077E0C
- ldr r0, _08077E08
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077E3C
- .align 2, 0
-_08077E08: .4byte gUnknown_80FAEF0
-_08077E0C:
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_75
- ldr r0, _08077E44
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08077E48
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0
- bl sub_803F580
- bl sub_8040A84
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077E3C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08077E44: .4byte gAvailablePokemonNames
-_08077E48: .4byte gUnknown_80FAEA0
- thumb_func_end sub_8077DDC
-
- thumb_func_start sub_8077E4C
-sub_8077E4C:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077EC0
- bl sub_8043D10
- lsls r0, 24
- cmp r0, 0
- beq _08077E70
- ldr r0, _08077E6C
- b _08077E7E
- .align 2, 0
-_08077E6C: .4byte gUnknown_80FAF3C
-_08077E70:
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- adds r1, 0xF2
- ldrb r0, [r1]
- cmp r0, 0
- beq _08077E90
- ldr r0, _08077E8C
-_08077E7E:
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077EC0
- .align 2, 0
-_08077E8C: .4byte gUnknown_80FAF1C
-_08077E90:
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_76
- ldr r0, _08077EC8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08077ECC
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0
- bl sub_803F580
- bl sub_8040A84
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077EC0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08077EC8: .4byte gAvailablePokemonNames
-_08077ECC: .4byte gUnknown_80FAEC8
- thumb_func_end sub_8077E4C
-
- thumb_func_start sub_8077ED0
-sub_8077ED0:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08077F30
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- adds r1, 0xF0
- ldrb r0, [r1]
- cmp r0, 0
- beq _08077F00
- ldr r0, _08077EFC
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08077F30
- .align 2, 0
-_08077EFC: .4byte gUnknown_80FAFD0
-_08077F00:
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_77
- ldr r0, _08077F38
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08077F3C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0
- bl sub_803F580
- bl sub_8040A84
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08077F30:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08077F38: .4byte gAvailablePokemonNames
-_08077F3C: .4byte gUnknown_80FAFAC
- thumb_func_end sub_8077ED0
-
- thumb_func_start sub_8077F40
-sub_8077F40:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- mov r9, r6
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08077F62
- b _08078068
-_08077F62:
- adds r0, r5, 0
- bl GetEntityType
- mov r10, r0
- cmp r0, 0x1
- beq _08077F70
- b _08078068
-_08077F70:
- ldr r7, [r4, 0x70]
- cmp r5, r4
- bne _08077F88
- cmp r6, 0
- beq _08078068
- ldr r0, _08077F84
- ldr r2, [r0]
- adds r0, r4, 0
- b _08078022
- .align 2, 0
-_08077F84: .4byte gPtrCantLeechSeedSelfMessage
-_08077F88:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r9
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08078068
- ldr r0, _08077FC0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r4, 0
- movs r1, 0x4
- bl HasType
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- beq _08077FC8
- mov r0, r9
- cmp r0, 0
- beq _08078068
- ldr r0, _08077FC4
- b _0807801E
- .align 2, 0
-_08077FC0: .4byte gAvailablePokemonNames
-_08077FC4: .4byte gPtrCantLeechSeedMonMessage
-_08077FC8:
- adds r6, r7, 0
- adds r6, 0xD0
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _0807801C
- cmp r0, 0x2
- bne _08077FE2
- ldr r0, _08078014
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08077FE2:
- mov r1, r10
- strb r1, [r6]
- ldr r1, _08078018
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xD9
- strb r0, [r1]
- adds r0, r7, 0
- adds r0, 0xDA
- mov r6, r8
- strb r6, [r0]
- adds r0, r4, 0
- bl nullsub_78
- adds r1, r7, 0
- adds r1, 0xD8
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
- adds r3, r1, 0
- b _08078030
- .align 2, 0
-_08078014: .4byte gUnknown_80FAA8C
-_08078018: .4byte gUnknown_80F4EB0
-_0807801C:
- ldr r0, _0807802C
-_0807801E:
- ldr r2, [r0]
- adds r0, r5, 0
-_08078022:
- adds r1, r4, 0
- bl sub_80522F4
- b _08078068
- .align 2, 0
-_0807802C: .4byte gUnknown_80FAE7C
-_08078030:
- ldr r0, _08078078
- ldr r0, [r0]
- lsls r1, r2, 2
- ldr r6, _0807807C
- adds r0, r6
- adds r0, r1
- ldr r0, [r0]
- cmp r5, r0
- bne _08078050
- strb r2, [r3]
- ldr r0, [r5, 0x70]
- adds r1, r7, 0
- adds r1, 0xD4
- adds r0, 0x98
- ldr r0, [r0]
- str r0, [r1]
-_08078050:
- adds r2, 0x1
- cmp r2, 0x13
- ble _08078030
- ldr r0, _08078080
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08078068:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078078: .4byte gDungeonGlobalData
-_0807807C: .4byte 0x000135cc
-_08078080: .4byte gUnknown_80FAE58
- thumb_func_end sub_8077F40
-
- thumb_func_start sub_8078084
-sub_8078084:
- push {r4-r6,lr}
- ldr r6, [r0, 0x70]
- movs r5, 0
-_0807808A:
- ldr r0, _080780DC
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _080780E0
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080780D0
- ldr r1, [r4, 0x70]
- adds r3, r1, 0
- adds r3, 0xD0
- ldrb r0, [r3]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080780D0
- adds r0, r1, 0
- adds r0, 0xD4
- adds r1, r6, 0
- adds r1, 0x98
- ldr r2, [r0]
- ldr r0, [r1]
- cmp r2, r0
- bne _080780D0
- movs r0, 0
- strb r0, [r3]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080780D0:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807808A
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080780DC: .4byte gDungeonGlobalData
-_080780E0: .4byte 0x000135cc
- thumb_func_end sub_8078084
-
- thumb_func_start sub_80780E4
-sub_80780E4:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080781C4
- adds r0, r4, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _080781C4
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _080781C4
- ldr r6, [r4, 0x70]
- ldr r0, _0807816C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r7, r6, 0
- adds r7, 0xD0
- ldrb r0, [r7]
- cmp r0, 0x2
- beq _08078178
- cmp r0, 0x1
- bne _08078134
- ldr r0, _08078170
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80522F4
-_08078134:
- movs r0, 0
- mov r8, r0
- movs r0, 0x2
- strb r0, [r7]
- ldr r1, _08078174
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xD9
- strb r0, [r1]
- adds r0, r6, 0
- adds r0, 0xDA
- mov r1, r8
- strb r1, [r0]
- adds r0, r5, 0
- bl nullsub_74
- adds r1, r6, 0
- adds r1, 0xD8
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
- adds r3, r1, 0
- b _0807818C
- .align 2, 0
-_0807816C: .4byte gAvailablePokemonNames
-_08078170: .4byte gUnknown_80FA79C
-_08078174: .4byte gUnknown_80F4EF0
-_08078178:
- ldr r0, _08078188
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _080781C4
- .align 2, 0
-_08078188: .4byte gUnknown_80FBB78
-_0807818C:
- ldr r0, _080781D0
- ldr r0, [r0]
- lsls r1, r2, 2
- ldr r7, _080781D4
- adds r0, r7
- adds r0, r1
- ldr r0, [r0]
- cmp r5, r0
- bne _080781AC
- strb r2, [r3]
- ldr r0, [r5, 0x70]
- adds r1, r6, 0
- adds r1, 0xD4
- adds r0, 0x98
- ldr r0, [r0]
- str r0, [r1]
-_080781AC:
- adds r2, 0x1
- cmp r2, 0x13
- ble _0807818C
- ldr r0, _080781D8
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80522F4
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_080781C4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080781D0: .4byte gDungeonGlobalData
-_080781D4: .4byte 0x000135cc
-_080781D8: .4byte gUnknown_80FBB4C
- thumb_func_end sub_80780E4
-
- thumb_func_start sub_80781DC
-sub_80781DC:
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078242
- ldr r5, [r4, 0x70]
- ldr r0, _08078228
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xDC
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _08078230
- movs r0, 0x1
- strb r0, [r1]
- adds r1, r6, 0x1
- adds r0, r5, 0
- adds r0, 0xDD
- strb r1, [r0]
- adds r0, r4, 0
- bl sub_8041CDC
- ldr r0, _0807822C
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _0807823C
- .align 2, 0
-_08078228: .4byte gAvailablePokemonNames
-_0807822C: .4byte gUnknown_80FB73C
-_08078230:
- ldr r0, _08078248
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807823C:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08078242:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078248: .4byte gUnknown_80FB764
- thumb_func_end sub_80781DC
-
- thumb_func_start sub_807824C
-sub_807824C:
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r7, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080782C2
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _080782C2
- ldr r5, [r4, 0x70]
- ldr r0, _080782A8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xDC
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _080782B0
- movs r0, 0x2
- strb r0, [r1]
- adds r1, r7, 0x1
- adds r0, r5, 0
- adds r0, 0xDD
- strb r1, [r0]
- adds r0, r4, 0
- bl sub_8041CEC
- ldr r0, _080782AC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080782BC
- .align 2, 0
-_080782A8: .4byte gAvailablePokemonNames
-_080782AC: .4byte gUnknown_80FB780
-_080782B0:
- ldr r0, _080782C8
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080782BC:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080782C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080782C8: .4byte gUnknown_80FB7A0
- thumb_func_end sub_807824C
-
- thumb_func_start sub_80782CC
-sub_80782CC:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807833E
- ldr r5, [r4, 0x70]
- ldr r0, _08078320
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xDC
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _0807832C
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _08078324
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xDD
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_79
- ldr r0, _08078328
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08078338
- .align 2, 0
-_08078320: .4byte gAvailablePokemonNames
-_08078324: .4byte gUnknown_80F4EC4
-_08078328: .4byte gUnknown_80FB8BC
-_0807832C:
- ldr r0, _08078344
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08078338:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807833E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08078344: .4byte gUnknown_80FB8E4
- thumb_func_end sub_80782CC
-
- thumb_func_start sub_8078348
-sub_8078348:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080783BA
- ldr r5, [r4, 0x70]
- ldr r0, _0807839C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xDC
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _080783A8
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, _080783A0
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xDD
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_80
- ldr r0, _080783A4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080783B4
- .align 2, 0
-_0807839C: .4byte gAvailablePokemonNames
-_080783A0: .4byte gUnknown_80F4EC8
-_080783A4: .4byte gUnknown_80FB900
-_080783A8:
- ldr r0, _080783C0
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080783B4:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080783BA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080783C0: .4byte gUnknown_80FB924
- thumb_func_end sub_8078348
-
- thumb_func_start sub_80783C4
-sub_80783C4:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- adds r5, r0, 0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- adds r0, r7, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _080783E8
- b _0807856A
-_080783E8:
- adds r0, r5, 0
- adds r1, r7, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- beq _080783FA
- b _0807856A
-_080783FA:
- ldr r4, [r7, 0x70]
- ldr r0, _08078420
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r4, 0
- adds r1, 0xC8
- ldrb r0, [r1]
- cmp r0, 0x2
- bne _08078428
- ldr r0, _08078424
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_80522F4
- b _0807856A
- .align 2, 0
-_08078420: .4byte gAvailablePokemonNames
-_08078424: .4byte gUnknown_80FB994
-_08078428:
- movs r6, 0
- mov r8, r1
- movs r0, 0xC9
- adds r0, r4
- mov r9, r0
- movs r1, 0xCA
- adds r1, r4
- mov r10, r1
- adds r2, r4, 0
- adds r2, 0xCB
- str r2, [sp, 0x1C]
- adds r4, 0xCC
- str r4, [sp, 0x20]
-_08078442:
- ldr r0, _0807857C
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r3, _08078580
- adds r0, r3
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078480
- cmp r7, r4
- beq _08078480
- ldr r0, [r4, 0x70]
- adds r0, 0xC8
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08078480
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_807A5D0
- movs r0, 0x2A
- bl sub_803E46C
-_08078480:
- adds r6, 0x1
- cmp r6, 0x13
- ble _08078442
- adds r0, r7, 0
- bl sub_8041D38
- ldr r0, _08078584
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- mov r4, r8
- ldrb r0, [r4]
- cmp r0, 0
- beq _080784A8
- adds r0, r5, 0
- adds r1, r7, 0
- movs r2, 0x2
- bl sub_807A5D0
-_080784A8:
- movs r4, 0
- movs r0, 0x2
- mov r1, r8
- strb r0, [r1]
- ldr r0, [r5, 0x70]
- ldrb r0, [r0, 0x6]
- mov r2, r9
- strb r0, [r2]
- mov r3, sp
- ldrb r0, [r3, 0x18]
- mov r3, r10
- strb r0, [r3]
- ldr r1, _08078588
- adds r0, r7, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- ldr r1, [sp, 0x1C]
- strb r0, [r1]
- ldr r2, [sp, 0x20]
- strb r4, [r2]
- adds r0, r7, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl sub_806CCB4
- ldr r0, _0807857C
- ldr r0, [r0]
- ldr r3, _0807858C
- adds r0, r3
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08078590
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r7, 0
- bl sub_80522F4
- movs r6, 0
- mov r8, r6
-_08078502:
- ldr r0, _0807857C
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r4, _08078580
- adds r0, r4
- adds r0, r1
- ldr r0, [r0]
- mov r9, r0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807855E
- mov r5, r9
- ldr r4, [r5, 0x70]
- adds r1, r4, 0
- adds r1, 0x78
- movs r0, 0x6
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x80
- mov r1, r8
- str r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- bne _0807855E
- mov r1, sp
- adds r0, r4, 0
- adds r0, 0x44
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- mov r0, r9
- movs r1, 0x1
- bl MoveIfPossible
- adds r1, r4, 0
- adds r1, 0x44
- mov r0, sp
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_0807855E:
- adds r6, 0x1
- cmp r6, 0x13
- ble _08078502
- adds r0, r7, 0
- bl DungeonEntityUpdateStatusSprites
-_0807856A:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807857C: .4byte gDungeonGlobalData
-_08078580: .4byte 0x000135cc
-_08078584: .4byte gAvailablePokemonNames
-_08078588: .4byte gUnknown_80F4ED0
-_0807858C: .4byte 0x000037fc
-_08078590: .4byte gUnknown_80FB978
- thumb_func_end sub_80783C4
-
- thumb_func_start sub_8078594
-sub_8078594:
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807866E
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807866E
- ldr r4, [r5, 0x70]
- ldr r7, [r6, 0x70]
- adds r0, r5, 0
- movs r1, 0xE
- bl HasType
- lsls r0, 24
- cmp r0, 0
- beq _08078640
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _0807866E
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_807A5D0
- adds r0, r6, 0
- bl sub_8041D48
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0xE]
- cmp r0, 0
- bne _080785F6
- movs r0, 0x1
- strh r0, [r4, 0xE]
-_080785F6:
- adds r1, r7, 0
- adds r1, 0xC8
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _0807861C
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08078634
- adds r0, r6, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xCB
- strb r0, [r1]
- adds r1, 0x1
- movs r0, 0
- strb r0, [r1]
-_0807861C:
- ldr r0, _08078638
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0807863C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80522F4
- b _08078668
- .align 2, 0
-_08078634: .4byte gUnknown_80F4EA4
-_08078638: .4byte gAvailablePokemonNames
-_0807863C: .4byte gUnknown_80FB004
-_08078640:
- ldr r0, _08078674
- ldr r4, [r0]
- adds r0, r5, 0
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_8077084
- adds r0, r5, 0
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_8077160
- adds r0, r5, 0
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x1
- bl sub_80779F0
-_08078668:
- adds r0, r6, 0
- bl DungeonEntityUpdateStatusSprites
-_0807866E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078674: .4byte gUnknown_8106A4C
- thumb_func_end sub_8078594
-
- thumb_func_start sub_8078678
-sub_8078678:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r6, r1, 0
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078732
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x3
- bl sub_807A5D0
- movs r5, 0
-_0807869A:
- ldr r0, _0807873C
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _08078740
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080786C8
- ldr r0, [r4, 0x70]
- adds r0, 0xC8
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _080786C8
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_807A5D0
-_080786C8:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807869A
- adds r0, r6, 0
- bl nullsub_81
- ldr r5, [r6, 0x70]
- mov r8, r5
- adds r1, r5, 0
- adds r1, 0xC8
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _08078700
- movs r4, 0
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _08078744
- adds r0, r6, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xCB
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0xCC
- strb r4, [r0]
-_08078700:
- ldr r0, _0807873C
- ldr r1, [r0]
- ldr r2, _08078748
- adds r0, r1, r2
- str r6, [r0]
- ldr r0, _0807874C
- adds r1, r0
- mov r0, r8
- adds r0, 0x98
- ldr r0, [r0]
- str r0, [r1]
- ldr r0, _08078750
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08078754
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_80522F4
- adds r0, r6, 0
- bl DungeonEntityUpdateStatusSprites
-_08078732:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807873C: .4byte gDungeonGlobalData
-_08078740: .4byte 0x000135cc
-_08078744: .4byte gUnknown_80F4EA8
-_08078748: .4byte 0x00017b30
-_0807874C: .4byte 0x00017b3c
-_08078750: .4byte gAvailablePokemonNames
-_08078754: .4byte gUnknown_80FB01C
- thumb_func_end sub_8078678
-
- thumb_func_start sub_8078758
-sub_8078758:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080787DA
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _080787DA
- ldr r6, [r4, 0x70]
- ldr r0, _080787BC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r6, 0
- adds r1, 0xBC
- ldrb r0, [r1]
- cmp r0, 0x5
- beq _080787C8
- movs r0, 0x5
- strb r0, [r1]
- ldr r1, _080787C0
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xBD
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_73
- ldr r0, _080787C4
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080787D4
- .align 2, 0
-_080787BC: .4byte gAvailablePokemonNames
-_080787C0: .4byte gUnknown_80F4ED8
-_080787C4: .4byte gUnknown_80FB9F0
-_080787C8:
- ldr r0, _080787E0
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080787D4:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080787DA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080787E0: .4byte gUnknown_80FBA14
- thumb_func_end sub_8078758
-
- thumb_func_start sub_80787E4
-sub_80787E4:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078852
- ldr r4, [r5, 0x70]
- ldr r0, _08078834
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- movs r0, 0x89
- lsls r0, 1
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0x2
- bhi _08078840
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- bl sub_804178C
- adds r0, r5, 0
- bl sub_8041D5C
- ldr r1, _08078838
- ldrb r0, [r4]
- str r0, [r1]
- ldr r0, _0807883C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _0807884C
- .align 2, 0
-_08078834: .4byte gAvailablePokemonNames
-_08078838: .4byte gUnknown_202DE30
-_0807883C: .4byte gUnknown_80FBA38
-_08078840:
- ldr r0, _08078858
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
-_0807884C:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_08078852:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08078858: .4byte gUnknown_80FBA60
- thumb_func_end sub_80787E4
-
- thumb_func_start sub_807885C
-sub_807885C:
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080788DE
- ldr r0, [r4, 0x70]
- adds r7, r0, 0
- adds r5, r7, 0
- adds r5, 0xE4
- ldrb r0, [r5]
- cmp r0, 0x2
- bne _08078884
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_807A7C8
-_08078884:
- ldr r0, _080788C0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _080788CC
- movs r0, 0x1
- strb r0, [r5]
- ldr r1, _080788C4
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xE5
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8041D84
- ldr r0, _080788C8
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080788D8
- .align 2, 0
-_080788C0: .4byte gAvailablePokemonNames
-_080788C4: .4byte gUnknown_80F4EE4
-_080788C8: .4byte gUnknown_80FBA80
-_080788CC:
- ldr r0, _080788E4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080788D8:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080788DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080788E4: .4byte gUnknown_80FBAA0
- thumb_func_end sub_807885C
-
- thumb_func_start sub_80788E8
-sub_80788E8:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807895E
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _0807895E
- adds r0, r5, 0
- bl nullsub_82
- ldr r4, [r5, 0x70]
- ldr r0, _08078940
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0xFD
- ldrb r0, [r4]
- cmp r0, 0
- bne _0807894C
- ldr r1, _08078944
- adds r0, r5, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _08078948
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _08078958
- .align 2, 0
-_08078940: .4byte gAvailablePokemonNames
-_08078944: .4byte gUnknown_80F4EEC
-_08078948: .4byte gUnknown_80FBB04
-_0807894C:
- ldr r0, _08078964
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
-_08078958:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_0807895E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08078964: .4byte gUnknown_80FBB28
- thumb_func_end sub_80788E8
-
- thumb_func_start sub_8078968
-sub_8078968:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- ldr r5, [r4, 0x70]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078A4A
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08078A4A
- movs r3, 0
- ldr r0, _080789E8
- mov r8, r0
- movs r1, 0x1
- mov r12, r1
- movs r0, 0x8C
- lsls r0, 1
- adds r2, r5, r0
- movs r7, 0x10
-_080789A2:
- ldrb r1, [r2]
- mov r0, r12
- ands r0, r1
- cmp r0, 0
- beq _080789B4
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _080789BC
-_080789B4:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x3
- ble _080789A2
-_080789BC:
- cmp r3, 0x4
- bne _080789F0
- movs r1, 0x9C
- lsls r1, 1
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080789F0
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _080789EC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08078A4A
- .align 2, 0
-_080789E8: .4byte gAvailablePokemonNames
-_080789EC: .4byte gUnknown_80FBBD4
-_080789F0:
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xBC
- ldrb r0, [r1]
- cmp r0, 0x6
- beq _08078A38
- movs r0, 0x6
- strb r0, [r1]
- ldr r1, _08078A30
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xBD
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_83
- ldr r0, _08078A34
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08078A44
- .align 2, 0
-_08078A30: .4byte gUnknown_80F4EF4
-_08078A34: .4byte gUnknown_80FBB94
-_08078A38:
- ldr r0, _08078A54
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08078A44:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08078A4A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078A54: .4byte gUnknown_80FBBB8
- thumb_func_end sub_8078968
-
- thumb_func_start sub_8078A58
-sub_8078A58:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- mov r8, r0
- adds r6, r1, 0
- adds r7, r2, 0
- adds r5, r3, 0
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078B4A
- ldr r4, [r6, 0x70]
- cmp r5, 0
- beq _08078AE0
- mov r0, sp
- adds r1, r5, 0
- bl sub_80943A0
- ldr r2, [sp]
- movs r0, 0xA0
- lsls r0, 1
- adds r5, r4, r0
- ldr r7, [r5]
- add r0, sp, 0x4
- adds r1, r7, 0
- bl sub_80942C0
- ldr r2, [sp, 0x4]
- str r2, [r5]
- movs r0, 0x9E
- lsls r0, 1
- adds r4, r0
- ldr r1, [r4]
- add r0, sp, 0x8
- bl sub_8094318
- ldr r0, [sp, 0x8]
- str r0, [r4]
- ldr r0, _08078AD0
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r7, 0
- bl RoundUpFixedPoint
- adds r4, r0, 0
- ldr r0, [r5]
- bl RoundUpFixedPoint
- cmp r4, r0
- beq _08078AD8
- adds r0, r6, 0
- bl sub_8041D9C
- ldr r0, _08078AD4
- b _08078B22
- .align 2, 0
-_08078AD0: .4byte gAvailablePokemonNames
-_08078AD4: .4byte gUnknown_80FBD9C
-_08078AD8:
- ldr r0, _08078ADC
- b _08078B22
- .align 2, 0
-_08078ADC: .4byte gUnknown_80FBE3C
-_08078AE0:
- add r0, sp, 0xC
- adds r1, r7, 0
- bl sub_80943A0
- ldr r2, [sp, 0xC]
- movs r0, 0x9E
- lsls r0, 1
- adds r4, r0
- ldr r7, [r4]
- add r0, sp, 0x10
- adds r1, r7, 0
- bl sub_80942C0
- ldr r0, [sp, 0x10]
- str r0, [r4]
- ldr r0, _08078B30
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r7, 0
- bl RoundUpFixedPoint
- adds r5, r0, 0
- ldr r0, [r4]
- bl RoundUpFixedPoint
- cmp r5, r0
- beq _08078B38
- adds r0, r6, 0
- bl nullsub_84
- ldr r0, _08078B34
-_08078B22:
- ldr r2, [r0]
- mov r0, r8
- adds r1, r6, 0
- bl sub_80522F4
- b _08078B44
- .align 2, 0
-_08078B30: .4byte gAvailablePokemonNames
-_08078B34: .4byte gUnknown_80FBD78
-_08078B38:
- ldr r0, _08078B58
- ldr r2, [r0]
- mov r0, r8
- adds r1, r6, 0
- bl sub_80522F4
-_08078B44:
- adds r0, r6, 0
- bl DungeonEntityUpdateStatusSprites
-_08078B4A:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078B58: .4byte gUnknown_80FBE40
- thumb_func_end sub_8078A58
-
- thumb_func_start sub_8078B5C
-sub_8078B5C:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- mov r9, r0
- adds r6, r1, 0
- mov r10, r2
- str r3, [sp, 0x1C]
- ldr r0, [sp, 0x48]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08078B86
- b _08078D78
-_08078B86:
- ldr r7, [r6, 0x70]
- ldrb r0, [r7, 0x7]
- cmp r0, 0
- bne _08078BB8
- adds r0, r6, 0
- movs r1, 0x1B
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _08078BB8
- mov r0, r8
- cmp r0, 0
- bne _08078BA4
- b _08078D78
-_08078BA4:
- ldr r0, _08078BB4
- ldr r2, [r0]
- mov r0, r9
- adds r1, r6, 0
- bl sub_80522F4
- b _08078D78
- .align 2, 0
-_08078BB4: .4byte gUnknown_80FBEA0
-_08078BB8:
- movs r5, 0
- ldr r1, [sp, 0x1C]
- cmp r1, 0
- beq _08078BE8
- movs r1, 0x9E
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- bl RoundUpFixedPoint
- adds r4, r0, 0
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- bl RoundUpFixedPoint
- cmp r4, r0
- blt _08078BE0
- movs r5, 0x1
-_08078BE0:
- ldr r0, _08078C8C
- cmp r10, r0
- bne _08078BE8
- movs r5, 0x1
-_08078BE8:
- cmp r5, 0
- beq _08078CC0
- movs r0, 0xA0
- lsls r0, 1
- adds r5, r7, r0
- ldr r1, [r5]
- str r1, [sp, 0x20]
- subs r0, 0x4
- adds r0, r7
- mov r10, r0
- ldr r0, [r0]
- bl RoundUpFixedPoint
- adds r4, r0, 0
- ldr r0, [r5]
- bl RoundUpFixedPoint
- movs r1, 0
- str r1, [sp, 0x24]
- cmp r4, r0
- bne _08078C16
- movs r0, 0x1
- str r0, [sp, 0x24]
-_08078C16:
- mov r0, sp
- ldr r1, [sp, 0x1C]
- bl sub_80943A0
- ldr r2, [sp]
- ldr r1, [r5]
- add r0, sp, 0x4
- bl sub_8094268
- ldr r4, [sp, 0x4]
- str r4, [r5]
- add r0, sp, 0x8
- movs r1, 0xC8
- bl sub_80943A0
- ldr r2, [sp, 0x8]
- add r0, sp, 0xC
- adds r1, r4, 0
- bl sub_8094318
- ldr r0, [sp, 0xC]
- str r0, [r5]
- mov r1, r10
- str r0, [r1]
- ldr r0, [sp, 0x24]
- cmp r0, 0
- bne _08078C5E
- mov r1, r8
- cmp r1, 0
- beq _08078C5E
- ldr r0, _08078C90
- ldr r2, [r0]
- mov r0, r9
- adds r1, r6, 0
- bl sub_80522F4
-_08078C5E:
- ldr r0, [sp, 0x20]
- bl RoundUpFixedPoint
- adds r4, r0, 0
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- bl RoundUpFixedPoint
- cmp r4, r0
- bne _08078C9C
- ldr r0, _08078C94
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- mov r0, r8
- cmp r0, 0
- beq _08078D72
- ldr r0, _08078C98
- b _08078D4E
- .align 2, 0
-_08078C8C: .4byte 0x000003e7
-_08078C90: .4byte gUnknown_80FBE64
-_08078C94: .4byte gAvailablePokemonNames
-_08078C98: .4byte gUnknown_80FBDF0
-_08078C9C:
- adds r0, r6, 0
- bl sub_8041DB0
- ldr r0, _08078CB8
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- mov r1, r8
- cmp r1, 0
- beq _08078D72
- ldr r0, _08078CBC
- b _08078D4E
- .align 2, 0
-_08078CB8: .4byte gAvailablePokemonNames
-_08078CBC: .4byte gUnknown_80FBDC4
-_08078CC0:
- movs r0, 0x9E
- lsls r0, 1
- adds r5, r7, r0
- ldr r4, [r5]
- add r0, sp, 0x10
- mov r1, r10
- bl sub_80943A0
- ldr r2, [sp, 0x10]
- ldr r1, [r5]
- add r0, sp, 0x14
- bl sub_8094268
- ldr r1, [sp, 0x14]
- str r1, [r5]
- movs r0, 0xA0
- lsls r0, 1
- adds r7, r0
- ldr r2, [r7]
- add r0, sp, 0x18
- bl sub_8094318
- ldr r0, [sp, 0x18]
- str r0, [r5]
- ldr r0, _08078D28
- cmp r10, r0
- bne _08078CFA
- ldr r0, [r7]
- str r0, [r5]
-_08078CFA:
- adds r0, r6, 0
- bl nullsub_85
- ldr r0, _08078D2C
- adds r1, r6, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r4, 0
- bl RoundUpFixedPoint
- adds r4, r0, 0
- ldr r0, [r5]
- bl RoundUpFixedPoint
- cmp r4, r0
- bne _08078D34
- mov r1, r8
- cmp r1, 0
- beq _08078D72
- ldr r0, _08078D30
- b _08078D4E
- .align 2, 0
-_08078D28: .4byte 0x000003e7
-_08078D2C: .4byte gAvailablePokemonNames
-_08078D30: .4byte gUnknown_80FBE14
-_08078D34:
- ldr r0, [r5]
- bl RoundUpFixedPoint
- adds r4, r0, 0
- ldr r0, [r7]
- bl RoundUpFixedPoint
- cmp r4, r0
- blt _08078D60
- mov r0, r8
- cmp r0, 0
- beq _08078D72
- ldr r0, _08078D5C
-_08078D4E:
- ldr r2, [r0]
- mov r0, r9
- adds r1, r6, 0
- bl sub_80522F4
- b _08078D72
- .align 2, 0
-_08078D5C: .4byte gUnknown_80FBE64
-_08078D60:
- mov r1, r8
- cmp r1, 0
- beq _08078D72
- ldr r0, _08078D88
- ldr r2, [r0]
- mov r0, r9
- adds r1, r6, 0
- bl sub_80522F4
-_08078D72:
- adds r0, r6, 0
- bl DungeonEntityUpdateStatusSprites
-_08078D78:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078D88: .4byte gUnknown_80FBE84
- thumb_func_end sub_8078B5C
-
- thumb_func_start sub_8078D8C
-sub_8078D8C:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078E0E
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08078E0E
- ldr r6, [r4, 0x70]
- ldr r0, _08078DF0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r6, 0
- adds r1, 0xEC
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _08078DFC
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08078DF4
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xED
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_86
- ldr r0, _08078DF8
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08078E08
- .align 2, 0
-_08078DF0: .4byte gAvailablePokemonNames
-_08078DF4: .4byte gUnknown_80F4F1C
-_08078DF8: .4byte gUnknown_80FBF68
-_08078DFC:
- ldr r0, _08078E14
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08078E08:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08078E0E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08078E14: .4byte gUnknown_80FBF84
- thumb_func_end sub_8078D8C
-
- thumb_func_start sub_8078E18
-sub_8078E18:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, _08078E48
- add sp, r4
- mov r10, r0
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078F2E
- ldr r7, [r5, 0x70]
- adds r0, r7, 0
- adds r0, 0xE4
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _08078E50
- ldr r0, _08078E4C
- b _08078EC0
- .align 2, 0
-_08078E48: .4byte 0xfffffe00
-_08078E4C: .4byte gUnknown_80FBF04
-_08078E50:
- ldr r0, _08078ECC
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- mov r0, sp
- movs r1, 0
- bl sub_803D870
- mov r8, r0
- cmp r0, 0
- beq _08078EBE
- movs r0, 0
- mov r9, r0
- movs r6, 0
-_08078E6E:
- mov r0, r8
- bl DungeonRandomCapped
- lsls r0, 3
- add r0, sp
- bl ExtractSpeciesIndex
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- bl sub_8069F54
- lsls r0, 16
- asrs r4, r0, 16
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- cmp r4, r0
- beq _08078EAE
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_806AA0C
- lsls r0, 24
- cmp r0, 0
- beq _08078EAE
- adds r0, r4, 0
- bl sub_80687D0
- mov r9, r0
- cmp r0, 0
- bne _08078EB4
-_08078EAE:
- adds r6, 0x1
- cmp r6, 0x13
- ble _08078E6E
-_08078EB4:
- cmp r6, 0x14
- beq _08078EBE
- mov r2, r9
- cmp r2, 0
- bne _08078ED4
-_08078EBE:
- ldr r0, _08078ED0
-_08078EC0:
- ldr r2, [r0]
- mov r0, r10
- adds r1, r5, 0
- bl sub_80522F4
- b _08078F2E
- .align 2, 0
-_08078ECC: .4byte gAvailablePokemonNames
-_08078ED0: .4byte gUnknown_80FBEE4
-_08078ED4:
- strh r4, [r7, 0x4]
- mov r0, r9
- str r0, [r5, 0x64]
- adds r1, r7, 0
- adds r1, 0xE4
- movs r0, 0x2
- strb r0, [r1]
- ldr r1, _08078F44
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xE5
- strb r0, [r1]
- adds r0, r5, 0
- bl sub_806CF98
- adds r0, r5, 0
- bl nullsub_87
- adds r0, r5, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_806CCB4
- ldr r0, _08078F48
- movs r2, 0x4
- ldrsh r1, [r7, r2]
- bl CopyCyanSpeciesNametoBuffer
- ldr r0, _08078F4C
- ldr r2, [r0]
- mov r0, r10
- adds r1, r5, 0
- bl sub_80522F4
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_08078F2E:
- movs r3, 0x80
- lsls r3, 2
- add sp, r3
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078F44: .4byte gUnknown_80F4EFC
-_08078F48: .4byte gUnknown_202DFE8
-_08078F4C: .4byte gUnknown_80FBEC0
- thumb_func_end sub_8078E18
-
- thumb_func_start sub_8078F50
-sub_8078F50:
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08078FD2
- ldr r0, [r4, 0x70]
- adds r7, r0, 0
- adds r5, r7, 0
- adds r5, 0xE4
- ldrb r0, [r5]
- cmp r0, 0x2
- bne _08078F78
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_807A7C8
-_08078F78:
- ldr r0, _08078FB4
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldrb r0, [r5]
- cmp r0, 0x3
- beq _08078FC0
- movs r0, 0x3
- strb r0, [r5]
- ldr r1, _08078FB8
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xE5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_88
- ldr r0, _08078FBC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08078FCC
- .align 2, 0
-_08078FB4: .4byte gAvailablePokemonNames
-_08078FB8: .4byte gUnknown_80F4F04
-_08078FBC: .4byte gUnknown_80FBF28
-_08078FC0:
- ldr r0, _08078FD8
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08078FCC:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08078FD2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08078FD8: .4byte gUnknown_80FBF50
- thumb_func_end sub_8078F50
-
- thumb_func_start sub_8078FDC
-sub_8078FDC:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r2, 16
- asrs r7, r2, 16
- mov r10, r7
- movs r0, 0
- mov r8, r0
- mov r9, r0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080790B6
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _080790B6
- ldr r5, [r4, 0x70]
- ldr r0, _08079064
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0xA
- ble _0807902E
- movs r0, 0xA
- strh r0, [r5, 0x26]
- movs r0, 0x1
- mov r8, r0
-_0807902E:
- mov r1, r8
- cmp r1, 0
- beq _0807904C
- adds r0, r4, 0
- adds r1, r7, 0
- bl sub_8041DD8
- ldr r0, _08079068
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0x1
- mov r9, r0
-_0807904C:
- adds r5, 0xF5
- ldrb r0, [r5]
- cmp r0, 0
- beq _08079070
- ldr r0, _0807906C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080790B6
- .align 2, 0
-_08079064: .4byte gAvailablePokemonNames
-_08079068: .4byte gUnknown_80FC000
-_0807906C: .4byte gUnknown_80FBFB8
-_08079070:
- mov r1, r9
- cmp r1, 0
- bne _0807907E
- adds r0, r4, 0
- mov r1, r10
- bl sub_8041DD8
-_0807907E:
- adds r0, r4, 0
- movs r1, 0xE
- bl HasType
- lsls r0, 24
- cmp r0, 0
- bne _080790A0
- ldr r0, _0807909C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080790B0
- .align 2, 0
-_0807909C: .4byte gUnknown_80FBFD8
-_080790A0:
- movs r0, 0x1
- strb r0, [r5]
- ldr r0, _080790C4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080790B0:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080790B6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080790C4: .4byte gUnknown_80FBF9C
- thumb_func_end sub_8078FDC
-
- thumb_func_start sub_80790C8
-sub_80790C8:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079134
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08079134
- ldr r6, _0807911C
- ldr r0, [r6]
- ldr r1, _08079120
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08079128
- adds r0, r4, 0
- bl nullsub_89
- ldr r0, [r6]
- ldr r1, _08079120
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
- ldr r0, _08079124
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079134
- .align 2, 0
-_0807911C: .4byte gDungeonGlobalData
-_08079120: .4byte 0x00000676
-_08079124: .4byte gUnknown_80FC028
-_08079128:
- ldr r0, _0807913C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079134:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807913C: .4byte gUnknown_80FC054
- thumb_func_end sub_80790C8
-
- thumb_func_start BlindTarget
-BlindTarget:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080791CE
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _080791CE
- ldr r6, [r4, 0x70]
- ldr r0, _080791B0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r6, 0
- adds r1, 0xE8
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _080791BC
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080791B4
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xE9
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8041E0C
- ldr r0, _080791B8
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0x31
- bl sub_803E46C
- bl sub_8049ED4
- bl sub_8040A84
- b _080791C8
- .align 2, 0
-_080791B0: .4byte gAvailablePokemonNames
-_080791B4: .4byte gUnknown_80F4F08
-_080791B8: .4byte gUnknown_80FB7F4
-_080791BC:
- ldr r0, _080791D4
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080791C8:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080791CE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080791D4: .4byte gUnknown_80FB810
- thumb_func_end BlindTarget
-
- thumb_func_start sub_80791D8
-sub_80791D8:
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079266
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_80716E8
- lsls r0, 24
- cmp r0, 0
- bne _08079266
- ldr r7, [r4, 0x70]
- ldr r0, _08079248
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r6, r7, 0
- adds r6, 0xE8
- ldrb r0, [r6]
- cmp r0, 0x2
- beq _08079254
- adds r0, r4, 0
- bl sub_8041E1C
- ldr r0, _0807924C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0x2
- strb r0, [r6]
- ldr r1, _08079250
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_808417C
- adds r0, 0x1
- adds r1, r7, 0
- adds r1, 0xE9
- strb r0, [r1]
- movs r0, 0x1
- bl sub_803F580
- bl sub_8049ED4
- bl sub_8040A84
- b _08079260
- .align 2, 0
-_08079248: .4byte gAvailablePokemonNames
-_0807924C: .4byte gUnknown_80FB834
-_08079250: .4byte gUnknown_80F4F0C
-_08079254:
- ldr r0, _0807926C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079260:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079266:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807926C: .4byte gUnknown_80FB85C
- thumb_func_end sub_80791D8
-
- thumb_func_start RestoreVisionTarget
-RestoreVisionTarget:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080792EE
- ldr r5, [r4, 0x70]
- ldr r0, _080792D0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xE8
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _080792DC
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _080792D4
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xE9
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8041E3C
- ldr r0, _080792D8
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r0, 0x31
- bl sub_803E46C
- bl sub_8049ED4
- bl sub_8040A84
- b _080792E8
- .align 2, 0
-_080792D0: .4byte gAvailablePokemonNames
-_080792D4: .4byte gUnknown_80F4F10
-_080792D8: .4byte gUnknown_80FB880
-_080792DC:
- ldr r0, _080792F4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080792E8:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080792EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080792F4: .4byte gUnknown_80FB89C
- thumb_func_end RestoreVisionTarget
-
- thumb_func_start sub_80792F8
-sub_80792F8:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r10, r0
- adds r6, r1, 0
- mov r9, r2
- movs r0, 0
- mov r8, r0
- adds r0, r6, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807939A
- ldr r0, [r6, 0x70]
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r0, r1
- adds r5, r4, 0
- movs r7, 0x3
-_08079326:
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807935E
- ldrb r0, [r4, 0x4]
- str r0, [sp]
- adds r0, r5, 0
- bl GetMoveMaxPP
- str r0, [sp, 0x4]
- ldr r1, [sp]
- ldr r0, [sp, 0x4]
- cmp r1, r0
- bge _0807935E
- ldr r0, [sp]
- add r0, r9
- str r0, [sp]
- ldr r1, [sp]
- ldr r0, [sp, 0x4]
- cmp r1, r0
- ble _08079356
- ldr r0, [sp, 0x4]
- str r0, [sp]
-_08079356:
- ldr r0, [sp]
- strb r0, [r4, 0x4]
- movs r0, 0x1
- mov r8, r0
-_0807935E:
- adds r4, 0x8
- adds r5, 0x8
- subs r7, 0x1
- cmp r7, 0
- bge _08079326
- mov r1, r8
- cmp r1, 0
- beq _08079388
- adds r0, r6, 0
- bl sub_8041E4C
- ldr r0, _08079384
- ldr r2, [r0]
- mov r0, r10
- adds r1, r6, 0
- bl sub_80522F4
- b _08079394
- .align 2, 0
-_08079384: .4byte gUnknown_80FDBD0
-_08079388:
- ldr r0, _080793AC
- ldr r2, [r0]
- mov r0, r10
- adds r1, r6, 0
- bl sub_80522F4
-_08079394:
- adds r0, r6, 0
- bl DungeonEntityUpdateStatusSprites
-_0807939A:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080793AC: .4byte gUnknown_80FDBF0
- thumb_func_end sub_80792F8
-
- thumb_func_start sub_80793B0
-sub_80793B0:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079416
- ldr r0, _080793FC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- ldrb r0, [r1, 0x14]
- adds r2, r0, 0
- adds r0, r2, r5
- cmp r0, 0xFE
- ble _080793DE
- movs r0, 0xFF
-_080793DE:
- strb r0, [r1, 0x14]
- lsls r0, 24
- lsrs r0, 24
- cmp r2, r0
- bcs _08079404
- adds r0, r4, 0
- bl sub_8041E60
- ldr r0, _08079400
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079410
- .align 2, 0
-_080793FC: .4byte gAvailablePokemonNames
-_08079400: .4byte gUnknown_80FC33C
-_08079404:
- ldr r0, _0807941C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079410:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079416:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807941C: .4byte gUnknown_80FC360
- thumb_func_end sub_80793B0
-
- thumb_func_start sub_8079420
-sub_8079420:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079486
- ldr r0, _0807946C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- ldrb r0, [r1, 0x15]
- adds r2, r0, 0
- adds r0, r2, r5
- cmp r0, 0xFE
- ble _0807944E
- movs r0, 0xFF
-_0807944E:
- strb r0, [r1, 0x15]
- lsls r0, 24
- lsrs r0, 24
- cmp r2, r0
- bcs _08079474
- adds r0, r4, 0
- bl sub_8041E74
- ldr r0, _08079470
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079480
- .align 2, 0
-_0807946C: .4byte gAvailablePokemonNames
-_08079470: .4byte gUnknown_80FC388
-_08079474:
- ldr r0, _0807948C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079480:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079486:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807948C: .4byte gUnknown_80FC3B4
- thumb_func_end sub_8079420
-
- thumb_func_start sub_8079490
-sub_8079490:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080794F6
- ldr r0, _080794DC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- ldrb r0, [r1, 0x16]
- adds r2, r0, 0
- adds r0, r2, r5
- cmp r0, 0xFE
- ble _080794BE
- movs r0, 0xFF
-_080794BE:
- strb r0, [r1, 0x16]
- lsls r0, 24
- lsrs r0, 24
- cmp r2, r0
- bcs _080794E4
- adds r0, r4, 0
- bl sub_8041E84
- ldr r0, _080794E0
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080794F0
- .align 2, 0
-_080794DC: .4byte gAvailablePokemonNames
-_080794E0: .4byte gUnknown_80FC3D8
-_080794E4:
- ldr r0, _080794FC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080794F0:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080794F6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080794FC: .4byte gUnknown_80FC3FC
- thumb_func_end sub_8079490
-
- thumb_func_start sub_8079500
-sub_8079500:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079566
- ldr r0, _0807954C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- ldrb r0, [r1, 0x17]
- adds r2, r0, 0
- adds r0, r2, r5
- cmp r0, 0xFE
- ble _0807952E
- movs r0, 0xFF
-_0807952E:
- strb r0, [r1, 0x17]
- lsls r0, 24
- lsrs r0, 24
- cmp r2, r0
- bcs _08079554
- adds r0, r4, 0
- bl sub_8041E94
- ldr r0, _08079550
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079560
- .align 2, 0
-_0807954C: .4byte gAvailablePokemonNames
-_08079550: .4byte gUnknown_80FC428
-_08079554:
- ldr r0, _0807956C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079560:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079566:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807956C: .4byte gUnknown_80FC454
- thumb_func_end sub_8079500
-
- thumb_func_start sub_8079570
-sub_8079570:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- ldr r4, [r5, 0x70]
- ldr r0, _080795A0
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0xE0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _080795A8
- movs r0, 0x1
- strb r0, [r4]
- adds r0, r5, 0
- bl sub_8041EA4
- ldr r0, _080795A4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _080795B4
- .align 2, 0
-_080795A0: .4byte gUnknown_202DFE8
-_080795A4: .4byte gUnknown_80FD20C
-_080795A8:
- ldr r0, _080795C0
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
-_080795B4:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080795C0: .4byte gUnknown_80FD22C
- thumb_func_end sub_8079570
-
- thumb_func_start sub_80795C4
-sub_80795C4:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- ldr r4, [r5, 0x70]
- ldr r0, _080795F4
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0xE0
- ldrb r0, [r4]
- cmp r0, 0x2
- beq _080795FC
- movs r0, 0x2
- strb r0, [r4]
- adds r0, r5, 0
- bl sub_8041EB4
- ldr r0, _080795F8
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _08079608
- .align 2, 0
-_080795F4: .4byte gUnknown_202DFE8
-_080795F8: .4byte gUnknown_80FD254
-_080795FC:
- ldr r0, _08079614
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
-_08079608:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079614: .4byte gUnknown_80FD27C
- thumb_func_end sub_80795C4
-
- thumb_func_start sub_8079618
-sub_8079618:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- adds r0, r7, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08079638
- b _08079752
-_08079638:
- ldr r5, [r7, 0x70]
- ldr r0, _08079660
- adds r1, r7, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xC0
- ldrb r0, [r0]
- cmp r0, r6
- bne _08079668
- cmp r6, 0xC
- bne _08079668
- ldr r0, _08079664
- ldr r2, [r0]
- mov r0, r9
- adds r1, r7, 0
- bl sub_80522F4
- b _08079752
- .align 2, 0
-_08079660: .4byte gAvailablePokemonNames
-_08079664: .4byte gUnknown_80FC074
-_08079668:
- adds r0, r5, 0
- adds r0, 0xC0
- strb r6, [r0]
- movs r4, 0
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r5, r1
- subs r2, r6, 0x7
- b _0807968A
-_0807967A:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08079694
- lsls r0, r4, 3
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- adds r0, r5, r0
-_0807968A:
- cmp r0, r8
- bne _0807967A
- adds r0, r5, 0
- adds r0, 0xC2
- strb r4, [r0]
-_08079694:
- movs r1, 0xA5
- lsls r1, 1
- adds r0, r5, r1
- movs r1, 0x1
- strb r1, [r0]
- movs r4, 0
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080796B2
- adds r0, r5, 0
- adds r0, 0xFF
- strb r1, [r0]
- movs r4, 0x1
- b _080796C6
-_080796B2:
- adds r0, r6, 0
- subs r0, 0x9
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080796C6
- adds r1, r5, 0
- adds r1, 0xFF
- movs r0, 0x2
- strb r0, [r1]
-_080796C6:
- cmp r6, 0x1
- bne _080796E4
- ldr r1, _08079718
- adds r0, r7, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r2, r5, 0
- adds r2, 0xC1
- movs r1, 0
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0xA0
- str r1, [r0]
-_080796E4:
- cmp r6, 0xC
- bne _080796FA
- ldr r1, _0807971C
- adds r0, r7, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC1
- strb r0, [r1]
-_080796FA:
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_8041BD0
- mov r0, r9
- adds r1, r7, 0
- ldr r2, [sp, 0x1C]
- bl sub_80522F4
- adds r0, r7, 0
- bl DungeonEntityUpdateStatusSprites
- movs r4, 0
- ldr r6, _08079720
- b _0807972C
- .align 2, 0
-_08079718: .4byte gUnknown_80F4E9C
-_0807971C: .4byte gUnknown_80F4EA0
-_08079720: .4byte 0x0000c7ff
-_08079724:
- movs r0, 0x53
- bl sub_803E46C
- adds r4, 0x1
-_0807972C:
- ldr r0, _08079760
- cmp r4, r0
- bgt _08079752
- movs r1, 0x1
- adds r0, r5, 0
- adds r0, 0xFF
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0807974E
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r5, r1
- ldr r0, [r0]
- movs r1, 0
- cmp r0, r6
- ble _0807974E
- movs r1, 0x1
-_0807974E:
- cmp r1, 0
- beq _08079724
-_08079752:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08079760: .4byte 0x0000018f
- thumb_func_end sub_8079618
-
- thumb_func_start sub_8079764
-sub_8079764:
- push {r4,lr}
- adds r4, r0, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807979A
- ldr r2, [r4, 0x70]
- adds r3, r2, 0
- adds r3, 0xC0
- ldrb r0, [r3]
- cmp r0, 0x1
- beq _08079794
- cmp r0, 0xC
- beq _08079794
- movs r1, 0
- strb r1, [r3]
- movs r3, 0xA5
- lsls r3, 1
- adds r0, r2, r3
- strb r1, [r0]
- adds r0, r2, 0
- adds r0, 0xFF
- strb r1, [r0]
-_08079794:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807979A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8079764
-
- thumb_func_start sub_80797A0
-sub_80797A0:
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079822
- ldr r6, [r4, 0x70]
- ldr r0, _080797E0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r5, r6, 0
- adds r5, 0xC4
- ldrb r0, [r5]
- cmp r0, r7
- bne _080797E8
- ldr r0, _080797E4
- ldr r2, [r0]
- mov r0, r8
- adds r1, r4, 0
- bl sub_80522F4
- b _08079822
- .align 2, 0
-_080797E0: .4byte gAvailablePokemonNames
-_080797E4: .4byte gUnknown_80FB10C
-_080797E8:
- adds r0, r4, 0
- bl nullsub_57
- ldrb r0, [r5]
- cmp r0, 0x4
- beq _0807980A
- cmp r0, 0xA
- beq _0807980A
- ldr r1, _0807982C
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xC5
- strb r0, [r1]
-_0807980A:
- adds r0, r6, 0
- adds r0, 0xC4
- strb r7, [r0]
- ldr r0, _08079830
- ldr r2, [r0]
- mov r0, r8
- adds r1, r4, 0
- bl sub_80522F4
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079822:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807982C: .4byte gUnknown_80F4E98
-_08079830: .4byte gUnknown_80FB0E0
- thumb_func_end sub_80797A0
-
- thumb_func_start sub_8079834
-sub_8079834:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _080798A6
- ldr r5, [r4, 0x70]
- ldr r0, _08079888
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _08079894
- movs r0, 0x2
- strb r0, [r1]
- ldr r1, _0807988C
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_58
- ldr r0, _08079890
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _080798A0
- .align 2, 0
-_08079888: .4byte gAvailablePokemonNames
-_0807988C: .4byte gUnknown_80F4E88
-_08079890: .4byte gUnknown_80FB048
-_08079894:
- ldr r0, _080798AC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_080798A0:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_080798A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080798AC: .4byte gUnknown_80FB074
- thumb_func_end sub_8079834
-
- thumb_func_start sub_80798B0
-sub_80798B0:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079922
- ldr r5, [r4, 0x70]
- ldr r0, _08079904
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0xE
- beq _08079910
- movs r0, 0xE
- strb r0, [r1]
- ldr r1, _08079908
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_59
- ldr r0, _0807990C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _0807991C
- .align 2, 0
-_08079904: .4byte gAvailablePokemonNames
-_08079908: .4byte gUnknown_80F4E8C
-_0807990C: .4byte gUnknown_80FB09C
-_08079910:
- ldr r0, _08079928
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807991C:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079922:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079928: .4byte gUnknown_80FB0C4
- thumb_func_end sub_80798B0
-
- thumb_func_start sub_807992C
-sub_807992C:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807999E
- ldr r5, [r4, 0x70]
- ldr r0, _08079980
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x6
- beq _0807998C
- movs r0, 0x6
- strb r0, [r1]
- ldr r1, _08079984
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8041B34
- ldr r0, _08079988
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079998
- .align 2, 0
-_08079980: .4byte gAvailablePokemonNames
-_08079984: .4byte gUnknown_80F4EB4
-_08079988: .4byte gUnknown_80FAE1C
-_0807998C:
- ldr r0, _080799A4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079998:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807999E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080799A4: .4byte gUnknown_80FAE3C
- thumb_func_end sub_807992C
-
- thumb_func_start sub_80799A8
-sub_80799A8:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079A1A
- ldr r5, [r4, 0x70]
- ldr r0, _080799FC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x5
- beq _08079A08
- movs r0, 0x5
- strb r0, [r1]
- ldr r1, _08079A00
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_60
- ldr r0, _08079A04
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079A14
- .align 2, 0
-_080799FC: .4byte gAvailablePokemonNames
-_08079A00: .4byte gUnknown_80F4E90
-_08079A04: .4byte gUnknown_80FAF5C
-_08079A08:
- ldr r0, _08079A20
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079A14:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079A1A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079A20: .4byte gUnknown_80FAF8C
- thumb_func_end sub_80799A8
-
- thumb_func_start sub_8079A24
-sub_8079A24:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079A96
- ldr r5, [r4, 0x70]
- ldr r0, _08079A78
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _08079A84
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _08079A7C
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_61
- ldr r0, _08079A80
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079A90
- .align 2, 0
-_08079A78: .4byte gAvailablePokemonNames
-_08079A7C: .4byte gUnknown_80F4E84
-_08079A80: .4byte gUnknown_80FB130
-_08079A84:
- ldr r0, _08079A9C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079A90:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079A96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079A9C: .4byte gUnknown_80FB160
- thumb_func_end sub_8079A24
-
- thumb_func_start sub_8079AA0
-sub_8079AA0:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079B12
- ldr r5, [r4, 0x70]
- ldr r0, _08079AF4
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _08079B00
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08079AF8
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_62
- ldr r0, _08079AFC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079B0C
- .align 2, 0
-_08079AF4: .4byte gAvailablePokemonNames
-_08079AF8: .4byte gUnknown_80F4E80
-_08079AFC: .4byte gUnknown_80FB17C
-_08079B00:
- ldr r0, _08079B18
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079B0C:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079B12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079B18: .4byte gUnknown_80FB1A8
- thumb_func_end sub_8079AA0
-
- thumb_func_start sub_8079B1C
-sub_8079B1C:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079B98
- adds r0, r4, 0
- bl nullsub_63
- ldr r5, [r4, 0x70]
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x7
- beq _08079B7C
- movs r0, 0x7
- strb r0, [r1]
- ldr r1, _08079B70
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- ldr r0, _08079B74
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08079B78
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079B92
- .align 2, 0
-_08079B70: .4byte gUnknown_80F4ED4
-_08079B74: .4byte gAvailablePokemonNames
-_08079B78: .4byte gUnknown_80FB9B0
-_08079B7C:
- ldr r0, _08079BA0
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _08079BA4
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079B92:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079B98:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079BA0: .4byte gAvailablePokemonNames
-_08079BA4: .4byte gUnknown_80FB9D8
- thumb_func_end sub_8079B1C
-
- thumb_func_start sub_8079BA8
-sub_8079BA8:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079C1A
- ldr r5, [r4, 0x70]
- ldr r0, _08079BFC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x8
- beq _08079C08
- movs r0, 0x8
- strb r0, [r1]
- ldr r1, _08079C00
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_64
- ldr r0, _08079C04
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079C14
- .align 2, 0
-_08079BFC: .4byte gAvailablePokemonNames
-_08079C00: .4byte gUnknown_80F4EE8
-_08079C04: .4byte gUnknown_80FBAC0
-_08079C08:
- ldr r0, _08079C20
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079C14:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079C1A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079C20: .4byte gUnknown_80FBAE4
- thumb_func_end sub_8079BA8
-
- thumb_func_start sub_8079C24
-sub_8079C24:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079C96
- ldr r5, [r4, 0x70]
- ldr r0, _08079C78
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0x9
- beq _08079C84
- movs r0, 0x9
- strb r0, [r1]
- ldr r1, _08079C7C
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_65
- ldr r0, _08079C80
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079C90
- .align 2, 0
-_08079C78: .4byte gAvailablePokemonNames
-_08079C7C: .4byte gUnknown_80F4EF8
-_08079C80: .4byte gUnknown_80FBBF0
-_08079C84:
- ldr r0, _08079C9C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079C90:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079C96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079C9C: .4byte gUnknown_80FBC14
- thumb_func_end sub_8079C24
-
- thumb_func_start sub_8079CA0
-sub_8079CA0:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079D12
- ldr r5, [r4, 0x70]
- ldr r0, _08079CF4
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0xB
- beq _08079D00
- movs r0, 0xB
- strb r0, [r1]
- ldr r1, _08079CF8
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_66
- ldr r0, _08079CFC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079D0C
- .align 2, 0
-_08079CF4: .4byte gAvailablePokemonNames
-_08079CF8: .4byte gUnknown_80F4F18
-_08079CFC: .4byte gUnknown_80FBC38
-_08079D00:
- ldr r0, _08079D18
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079D0C:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079D12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079D18: .4byte gUnknown_80FBC5C
- thumb_func_end sub_8079CA0
-
- thumb_func_start sub_8079D1C
-sub_8079D1C:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079DAE
- ldr r6, [r4, 0x70]
- adds r0, r4, 0
- movs r1, 0x25
- bl HasAbility
- lsls r0, 24
- cmp r0, 0
- beq _08079D50
- ldr r0, _08079D4C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079DAE
- .align 2, 0
-_08079D4C: .4byte gPtrForecastPreventsConversion2Message
-_08079D50:
- ldr r0, _08079D90
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r6, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0xC
- beq _08079D9C
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _08079D94
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r6, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_67
- ldr r0, _08079D98
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079DA8
- .align 2, 0
-_08079D90: .4byte gAvailablePokemonNames
-_08079D94: .4byte gUnknown_80F4F20
-_08079D98: .4byte gUnknown_80FBC7C
-_08079D9C:
- ldr r0, _08079DB4
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079DA8:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079DAE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079DB4: .4byte gUnknown_80FBCA4
- thumb_func_end sub_8079D1C
-
- thumb_func_start sub_8079DB8
-sub_8079DB8:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079E2A
- ldr r5, [r4, 0x70]
- ldr r0, _08079E0C
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r1, r5, 0
- adds r1, 0xC4
- ldrb r0, [r1]
- cmp r0, 0xD
- beq _08079E18
- movs r0, 0xD
- strb r0, [r1]
- ldr r1, _08079E10
- adds r0, r4, 0
- movs r2, 0
- bl sub_808417C
- adds r0, 0x1
- adds r1, r5, 0
- adds r1, 0xC5
- strb r0, [r1]
- adds r0, r4, 0
- bl nullsub_68
- ldr r0, _08079E14
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _08079E24
- .align 2, 0
-_08079E0C: .4byte gAvailablePokemonNames
-_08079E10: .4byte gUnknown_80F4F24
-_08079E14: .4byte gUnknown_80FBCC8
-_08079E18:
- ldr r0, _08079E30
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079E24:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_08079E2A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08079E30: .4byte gUnknown_80FBCF0
- thumb_func_end sub_8079DB8
-
- thumb_func_start sub_8079E34
-sub_8079E34:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- movs r6, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _08079F0E
- ldr r0, [r5, 0x70]
- mov r12, r0
- movs r4, 0
- movs r7, 0xA
-_08079E5C:
- lsls r2, r4, 1
- mov r0, r12
- adds r0, 0x1C
- adds r1, r0, r2
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xA
- beq _08079E70
- strh r7, [r1]
- movs r6, 0x1
-_08079E70:
- mov r0, r12
- adds r0, 0x20
- adds r1, r0, r2
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xA
- beq _08079E82
- strh r7, [r1]
- movs r6, 0x1
-_08079E82:
- mov r0, r12
- adds r0, 0x24
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- beq _08079E94
- strh r7, [r1]
- movs r6, 0x1
-_08079E94:
- lsls r3, r4, 2
- mov r0, r12
- adds r0, 0x2C
- adds r1, r0, r3
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 1
- cmp r0, r2
- beq _08079EAA
- str r2, [r1]
- movs r6, 0x1
-_08079EAA:
- mov r0, r12
- adds r0, 0x34
- adds r1, r0, r3
- ldr r0, [r1]
- cmp r0, r2
- beq _08079EBA
- str r2, [r1]
- movs r6, 0x1
-_08079EBA:
- adds r4, 0x1
- cmp r4, 0x1
- ble _08079E5C
- cmp r6, 0
- beq _08079ECC
- adds r0, r5, 0
- bl sub_80420C8
- b _08079ED8
-_08079ECC:
- mov r3, r9
- cmp r3, 0
- beq _08079ED8
- adds r0, r5, 0
- bl sub_80420C8
-_08079ED8:
- ldr r0, _08079EF4
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- cmp r6, 0
- beq _08079EFC
- ldr r0, _08079EF8
- ldr r2, [r0]
- mov r0, r8
- adds r1, r5, 0
- bl sub_80522F4
- b _08079F08
- .align 2, 0
-_08079EF4: .4byte gAvailablePokemonNames
-_08079EF8: .4byte gUnknown_80FBD18
-_08079EFC:
- ldr r0, _08079F1C
- ldr r2, [r0]
- mov r0, r8
- adds r1, r5, 0
- bl sub_80522F4
-_08079F08:
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_08079F0E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08079F1C: .4byte gUnknown_80FBD3C
- thumb_func_end sub_8079E34
-
- thumb_func_start sub_8079F20
-sub_8079F20:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- movs r0, 0
- mov r8, r0
- mov r9, r0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08079F50
- b _0807A0B8
-_08079F50:
- ldr r7, [r4, 0x70]
- adds r0, r4, 0
- bl HasNegativeStatus
- lsls r0, 24
- cmp r0, 0
- beq _08079FF2
- movs r2, 0x1
- mov r8, r2
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_807A124
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _08079F7C
- b _0807A0B8
-_08079F7C:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A290
- adds r0, r5, 0
- adds r1, r4, 0
- bl SendImmobilizeEndMessage
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A400
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_807A5D0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A6C8
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A734
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A888
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_807A924
- adds r1, r7, 0
- adds r1, 0xFD
- ldrb r0, [r1]
- cmp r0, 0
- beq _08079FD8
- mov r0, r9
- strb r0, [r1]
- ldr r0, _0807A08C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079FD8:
- adds r1, r7, 0
- adds r1, 0xF5
- ldrb r0, [r1]
- cmp r0, 0
- beq _08079FF2
- mov r2, r9
- strb r2, [r1]
- ldr r0, _0807A090
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_08079FF2:
- adds r0, r4, 0
- bl GetMovementSpeed
- adds r6, r0, 0
- movs r1, 0
- movs r3, 0x4
- ldr r2, _0807A094
- adds r0, r7, r2
-_0807A002:
- strb r1, [r0]
- subs r0, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0807A002
- adds r0, r4, 0
- bl GetMovementSpeed
- cmp r6, r0
- beq _0807A032
- movs r0, 0x1
- mov r8, r0
- ldr r1, _0807A098
- movs r2, 0x82
- lsls r2, 1
- adds r0, r7, r2
- ldr r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807A032:
- movs r6, 0x1
- movs r0, 0x8C
- lsls r0, 1
- adds r2, r7, r0
- movs r7, 0xFE
- movs r3, 0x3
-_0807A03E:
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0807A05E
- ldrb r1, [r2, 0x1]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0807A05E
- movs r0, 0x1
- mov r8, r0
- mov r9, r0
- adds r0, r7, 0
- ands r0, r1
- strb r0, [r2, 0x1]
-_0807A05E:
- adds r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- bge _0807A03E
- mov r2, r8
- cmp r2, 0
- beq _0807A0A0
- ldr r0, [sp]
- cmp r0, 0
- beq _0807A078
- adds r0, r4, 0
- bl sub_80420C8
-_0807A078:
- mov r2, r9
- cmp r2, 0
- beq _0807A0B2
- ldr r0, _0807A09C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _0807A0B2
- .align 2, 0
-_0807A08C: .4byte gUnknown_8100594
-_0807A090: .4byte gPtrExposedWoreOffMessage
-_0807A094: .4byte 0x00000111
-_0807A098: .4byte gUnknown_80FA124
-_0807A09C: .4byte gPtrSealedMoveReleasedMessage
-_0807A0A0:
- mov r0, r10
- cmp r0, 0
- bne _0807A0B2
- ldr r0, _0807A0C8
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807A0B2:
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A0B8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A0C8: .4byte gUnknown_81004E8
- thumb_func_end sub_8079F20
-
- thumb_func_start sub_807A0CC
-sub_807A0CC:
- push {r4-r7,lr}
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A11E
- ldr r4, [r5, 0x70]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806BFC0
- adds r1, r4, 0
- adds r1, 0xFD
- movs r0, 0
- strb r0, [r1]
- subs r1, 0x8
- strb r0, [r1]
- movs r7, 0x1
- movs r6, 0xFE
- movs r0, 0x8C
- lsls r0, 1
- adds r2, r4, r0
- movs r3, 0x3
-_0807A0FE:
- ldrb r1, [r2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _0807A110
- ldrb r1, [r2, 0x1]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r2, 0x1]
-_0807A110:
- adds r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- bge _0807A0FE
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A11E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_807A0CC
-
- thumb_func_start sub_807A124
-sub_807A124:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- movs r0, 0
- mov r9, r0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0807A14E
- b _0807A27C
-_0807A14E:
- ldr r7, [r5, 0x70]
- ldr r0, _0807A170
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r7, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _0807A166
- b _0807A260
-_0807A166:
- lsls r0, 2
- ldr r1, _0807A174
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A170: .4byte gAvailablePokemonNames
-_0807A174: .4byte _0807A178
- .align 2, 0
-_0807A178:
- .4byte _0807A260
- .4byte _0807A194
- .4byte _0807A1A0
- .4byte _0807A1B4
- .4byte _0807A228
- .4byte _0807A1E8
- .4byte _0807A260
-_0807A194:
- movs r1, 0x1
- mov r9, r1
- ldr r0, _0807A19C
- b _0807A1A2
- .align 2, 0
-_0807A19C: .4byte gUnknown_80FA6E8
-_0807A1A0:
- ldr r0, _0807A1B0
-_0807A1A2:
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _0807A260
- .align 2, 0
-_0807A1B0: .4byte gUnknown_80FA708
-_0807A1B4:
- movs r2, 0x1
- mov r9, r2
- ldr r0, _0807A1DC
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- mov r0, r8
- cmp r0, 0
- beq _0807A260
- ldr r0, _0807A1E0
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r3, _0807A1E4
- adds r0, r5, 0
- movs r2, 0x8
- bl sub_806F324
- b _0807A260
- .align 2, 0
-_0807A1DC: .4byte gUnknown_80FA70C
-_0807A1E0: .4byte gUnknown_80F4F78
-_0807A1E4: .4byte 0x0000020f
-_0807A1E8:
- movs r0, 0x1
- mov r9, r0
- ldr r0, _0807A220
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
- ldr r0, _0807A224
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r4, 0
- str r4, [sp]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r3, 0
- bl HealTargetHP
- adds r0, r7, 0
- adds r0, 0xA8
- strb r4, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8079F20
- b _0807A260
- .align 2, 0
-_0807A220: .4byte gUnknown_80FA710
-_0807A224: .4byte gUnknown_80F4F7A
-_0807A228:
- cmp r4, 0
- beq _0807A254
- adds r1, r7, 0
- adds r1, 0xA8
- movs r0, 0
- strb r0, [r1]
- ldr r1, _0807A250
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_808417C
- adds r2, r0, 0
- adds r2, 0x1
- adds r0, r6, 0
- adds r1, r5, 0
- movs r3, 0x1
- bl sub_8075C58
- b _0807A27C
- .align 2, 0
-_0807A250: .4byte gUnknown_80F4F2C
-_0807A254:
- ldr r0, _0807A28C
- ldr r2, [r0]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80522F4
-_0807A260:
- adds r1, r7, 0
- adds r1, 0xA8
- movs r0, 0
- strb r0, [r1]
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
- mov r2, r9
- cmp r2, 0
- beq _0807A27C
- adds r0, r5, 0
- movs r1, 0x8
- bl sub_806CE68
-_0807A27C:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A28C: .4byte gUnknown_80FA734
- thumb_func_end sub_807A124
-
- thumb_func_start sub_807A290
-sub_807A290:
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A31A
- ldr r6, [r4, 0x70]
- ldr r0, _0807A2C4
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r6, 0
- adds r0, 0xAC
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0807A30C
- lsls r0, 2
- ldr r1, _0807A2C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A2C4: .4byte gAvailablePokemonNames
-_0807A2C8: .4byte _0807A2CC
- .align 2, 0
-_0807A2CC:
- .4byte _0807A30C
- .4byte _0807A300
- .4byte _0807A2E4
- .4byte _0807A2E4
- .4byte _0807A2EC
- .4byte _0807A30C
-_0807A2E4:
- ldr r0, _0807A2E8
- b _0807A2EE
- .align 2, 0
-_0807A2E8: .4byte gUnknown_80FA8A8
-_0807A2EC:
- ldr r0, _0807A2FC
-_0807A2EE:
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _0807A30C
- .align 2, 0
-_0807A2FC: .4byte gUnknown_80FA868
-_0807A300:
- ldr r0, _0807A320
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807A30C:
- adds r1, r6, 0
- adds r1, 0xAC
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A31A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A320: .4byte gUnknown_80FA888
- thumb_func_end sub_807A290
-
- thumb_func_start SendImmobilizeEndMessage
-SendImmobilizeEndMessage:
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r7, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A3F4
- ldr r6, [r4, 0x70]
- ldr r0, _0807A358
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r6, 0
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _0807A3DC
- lsls r0, 2
- ldr r1, _0807A35C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A358: .4byte gAvailablePokemonNames
-_0807A35C: .4byte _0807A360
- .align 2, 0
-_0807A360:
- .4byte _0807A3DC
- .4byte _0807A384
- .4byte _0807A3A0
- .4byte _0807A3B4
- .4byte _0807A3B4
- .4byte _0807A3A0
- .4byte _0807A3D0
- .4byte _0807A398
- .4byte _0807A3DC
-_0807A384:
- ldr r0, _0807A394
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- movs r7, 0x1
- b _0807A3DC
- .align 2, 0
-_0807A394: .4byte gUnknown_80FA8BC
-_0807A398:
- ldr r0, _0807A39C
- b _0807A3A2
- .align 2, 0
-_0807A39C: .4byte gUnknown_80FA820
-_0807A3A0:
- ldr r0, _0807A3B0
-_0807A3A2:
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- b _0807A3DC
- .align 2, 0
-_0807A3B0: .4byte gUnknown_80FA824
-_0807A3B4:
- ldr r0, _0807A3CC
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- adds r0, r6, 0
- adds r0, 0x9C
- ldr r0, [r0]
- bl sub_8076CB4
- b _0807A3DC
- .align 2, 0
-_0807A3CC: .4byte gUnknown_80FA81C
-_0807A3D0:
- ldr r0, _0807A3FC
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
-_0807A3DC:
- adds r1, r6, 0
- adds r1, 0xB0
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
- cmp r7, 0
- beq _0807A3F4
- adds r0, r4, 0
- bl sub_8042A74
-_0807A3F4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A3FC: .4byte gUnknown_80FABF8
- thumb_func_end SendImmobilizeEndMessage
-
- thumb_func_start sub_807A400
-sub_807A400:
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A4BC
- ldr r6, [r5, 0x70]
- ldr r0, _0807A434
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r6, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _0807A4A8
- lsls r0, 2
- ldr r1, _0807A438
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A434: .4byte gAvailablePokemonNames
-_0807A438: .4byte _0807A43C
- .align 2, 0
-_0807A43C:
- .4byte _0807A4A8
- .4byte _0807A49C
- .4byte _0807A460
- .4byte _0807A478
- .4byte _0807A468
- .4byte _0807A470
- .4byte _0807A488
- .4byte _0807A480
- .4byte _0807A4A8
-_0807A460:
- ldr r0, _0807A464
- b _0807A48A
- .align 2, 0
-_0807A464: .4byte gUnknown_80FA800
-_0807A468:
- ldr r0, _0807A46C
- b _0807A48A
- .align 2, 0
-_0807A46C: .4byte gUnknown_80FA97C
-_0807A470:
- ldr r0, _0807A474
- b _0807A48A
- .align 2, 0
-_0807A474: .4byte gUnknown_80FA9DC
-_0807A478:
- ldr r0, _0807A47C
- b _0807A48A
- .align 2, 0
-_0807A47C: .4byte gUnknown_80FAC38
-_0807A480:
- ldr r0, _0807A484
- b _0807A48A
- .align 2, 0
-_0807A484: .4byte gUnknown_80FAB90
-_0807A488:
- ldr r0, _0807A498
-_0807A48A:
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80522F4
- b _0807A4A8
- .align 2, 0
-_0807A498: .4byte gUnknown_80FAAAC
-_0807A49C:
- ldr r0, _0807A4C4
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80522F4
-_0807A4A8:
- adds r1, r6, 0
- adds r1, 0xBC
- movs r0, 0
- strb r0, [r1]
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
- adds r0, r5, 0
- bl GetMovementSpeed
-_0807A4BC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A4C4: .4byte gUnknown_80FAC18
- thumb_func_end sub_807A400
-
- thumb_func_start sub_807A4C8
-sub_807A4C8:
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- bne _0807A4DA
- b _0807A5C4
-_0807A4DA:
- ldr r5, [r4, 0x70]
- ldr r0, _0807A4FC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xC4
- ldrb r0, [r0]
- cmp r0, 0xF
- bhi _0807A5B6
- lsls r0, 2
- ldr r1, _0807A500
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A4FC: .4byte gAvailablePokemonNames
-_0807A500: .4byte _0807A504
- .align 2, 0
-_0807A504:
- .4byte _0807A5B6
- .4byte _0807A544
- .4byte _0807A54C
- .4byte _0807A554
- .4byte _0807A55C
- .4byte _0807A564
- .4byte _0807A56C
- .4byte _0807A574
- .4byte _0807A57C
- .4byte _0807A584
- .4byte _0807A55C
- .4byte _0807A58C
- .4byte _0807A594
- .4byte _0807A59C
- .4byte _0807A5AC
- .4byte _0807A5B6
-_0807A544:
- ldr r0, _0807A548
- b _0807A59E
- .align 2, 0
-_0807A548: .4byte gUnknown_80FA638
-_0807A54C:
- ldr r0, _0807A550
- b _0807A59E
- .align 2, 0
-_0807A550: .4byte gUnknown_80FA69C
-_0807A554:
- ldr r0, _0807A558
- b _0807A59E
- .align 2, 0
-_0807A558: .4byte gUnknown_80FA658
-_0807A55C:
- ldr r0, _0807A560
- b _0807A59E
- .align 2, 0
-_0807A560: .4byte gUnknown_80FA67C
-_0807A564:
- ldr r0, _0807A568
- b _0807A59E
- .align 2, 0
-_0807A568: .4byte gUnknown_80FA6BC
-_0807A56C:
- ldr r0, _0807A570
- b _0807A59E
- .align 2, 0
-_0807A570: .4byte gUnknown_80FA6D4
-_0807A574:
- ldr r0, _0807A578
- b _0807A59E
- .align 2, 0
-_0807A578: .4byte gUnknown_80FA9C0
-_0807A57C:
- ldr r0, _0807A580
- b _0807A59E
- .align 2, 0
-_0807A580: .4byte gUnknown_80FAA68
-_0807A584:
- ldr r0, _0807A588
- b _0807A59E
- .align 2, 0
-_0807A588: .4byte gUnknown_80FAAC8
-_0807A58C:
- ldr r0, _0807A590
- b _0807A59E
- .align 2, 0
-_0807A590: .4byte gUnknown_80FAAE8
-_0807A594:
- ldr r0, _0807A598
- b _0807A59E
- .align 2, 0
-_0807A598: .4byte gUnknown_80FAB08
-_0807A59C:
- ldr r0, _0807A5A8
-_0807A59E:
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
- b _0807A5B6
- .align 2, 0
-_0807A5A8: .4byte gUnknown_80FAB28
-_0807A5AC:
- ldr r0, _0807A5CC
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
-_0807A5B6:
- adds r1, r5, 0
- adds r1, 0xC4
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A5C4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A5CC: .4byte gUnknown_80FAB40
- thumb_func_end sub_807A4C8
-
- thumb_func_start sub_807A5D0
-sub_807A5D0:
- push {r4-r7,lr}
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A6B2
- ldr r7, [r5, 0x70]
- ldr r0, _0807A604
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r7, 0
- adds r0, 0xC8
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _0807A6A4
- lsls r0, 2
- ldr r1, _0807A608
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A604: .4byte gAvailablePokemonNames
-_0807A608: .4byte _0807A60C
- .align 2, 0
-_0807A60C:
- .4byte _0807A6A4
- .4byte _0807A620
- .4byte _0807A668
- .4byte _0807A634
- .4byte _0807A6A4
-_0807A620:
- cmp r6, 0x1
- beq _0807A6A4
- ldr r0, _0807A630
- ldr r1, [r0]
- adds r0, r5, 0
- bl SendMessage
- b _0807A6A4
- .align 2, 0
-_0807A630: .4byte gUnknown_80FA7BC
-_0807A634:
- cmp r6, 0x3
- beq _0807A642
- ldr r0, _0807A658
- ldr r1, [r0]
- adds r0, r5, 0
- bl SendMessage
-_0807A642:
- ldr r0, _0807A65C
- ldr r0, [r0]
- ldr r2, _0807A660
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r1, _0807A664
- adds r0, r1
- str r2, [r0]
- b _0807A6A4
- .align 2, 0
-_0807A658: .4byte gUnknown_80FA7DC
-_0807A65C: .4byte gDungeonGlobalData
-_0807A660: .4byte 0x00017b30
-_0807A664: .4byte 0x00017b3c
-_0807A668:
- adds r0, r7, 0
- adds r0, 0xC8
- movs r4, 0
- strb r4, [r0]
- adds r0, r5, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl sub_806CCB4
- ldr r0, _0807A6B8
- ldr r0, [r0]
- ldr r2, _0807A6BC
- adds r0, r2
- strb r4, [r0]
- cmp r6, 0x2
- beq _0807A6A4
- ldr r0, _0807A6C0
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0807A6C4
- ldr r1, [r0]
- adds r0, r5, 0
- bl SendMessage
-_0807A6A4:
- adds r1, r7, 0
- adds r1, 0xC8
- movs r0, 0
- strb r0, [r1]
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A6B2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A6B8: .4byte gDungeonGlobalData
-_0807A6BC: .4byte 0x000037fc
-_0807A6C0: .4byte gAvailablePokemonNames
-_0807A6C4: .4byte gUnknown_80FA9A0
- thumb_func_end sub_807A5D0
-
- thumb_func_start sub_807A6C8
-sub_807A6C8:
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A72A
- ldr r5, [r4, 0x70]
- ldr r0, _0807A6F8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xD0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0807A6FC
- cmp r0, 0x1
- ble _0807A716
- cmp r0, 0x2
- beq _0807A70C
- b _0807A716
- .align 2, 0
-_0807A6F8: .4byte gAvailablePokemonNames
-_0807A6FC:
- ldr r0, _0807A708
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
- b _0807A716
- .align 2, 0
-_0807A708: .4byte gUnknown_80FA79C
-_0807A70C:
- ldr r0, _0807A730
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
-_0807A716:
- adds r1, r5, 0
- adds r1, 0xD0
- movs r0, 0
- strb r0, [r1]
- adds r1, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A72A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A730: .4byte gUnknown_80FAA8C
- thumb_func_end sub_807A6C8
-
- thumb_func_start sub_807A734
-sub_807A734:
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A7BC
- ldr r5, [r4, 0x70]
- ldr r0, _0807A764
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xDC
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0807A7AE
- lsls r0, 2
- ldr r1, _0807A768
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A764: .4byte gAvailablePokemonNames
-_0807A768: .4byte _0807A76C
- .align 2, 0
-_0807A76C:
- .4byte _0807A7AE
- .4byte _0807A784
- .4byte _0807A78C
- .4byte _0807A794
- .4byte _0807A7A4
- .4byte _0807A7AE
-_0807A784:
- ldr r0, _0807A788
- b _0807A796
- .align 2, 0
-_0807A788: .4byte gUnknown_80FA8E0
-_0807A78C:
- ldr r0, _0807A790
- b _0807A796
- .align 2, 0
-_0807A790: .4byte gUnknown_80FA90C
-_0807A794:
- ldr r0, _0807A7A0
-_0807A796:
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
- b _0807A7AE
- .align 2, 0
-_0807A7A0: .4byte gUnknown_80FA934
-_0807A7A4:
- ldr r0, _0807A7C4
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
-_0807A7AE:
- adds r1, r5, 0
- adds r1, 0xDC
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A7BC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A7C4: .4byte gUnknown_80FA95C
- thumb_func_end sub_807A734
-
- thumb_func_start sub_807A7C8
-sub_807A7C8:
- push {r4-r6,lr}
- adds r4, r1, 0
- movs r6, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A87E
- ldr r5, [r4, 0x70]
- ldr r0, _0807A7FC
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xE4
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _0807A866
- lsls r0, 2
- ldr r1, _0807A800
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A7FC: .4byte gAvailablePokemonNames
-_0807A800: .4byte _0807A804
- .align 2, 0
-_0807A804:
- .4byte _0807A866
- .4byte _0807A818
- .4byte _0807A834
- .4byte _0807A824
- .4byte _0807A866
-_0807A818:
- movs r6, 0x1
- ldr r0, _0807A820
- b _0807A826
- .align 2, 0
-_0807A820: .4byte gUnknown_80FA9F4
-_0807A824:
- ldr r0, _0807A830
-_0807A826:
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
- b _0807A866
- .align 2, 0
-_0807A830: .4byte gUnknown_80FABBC
-_0807A834:
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_8069F54
- strh r0, [r5, 0x4]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- bl sub_80687D0
- str r0, [r4, 0x64]
- adds r0, r4, 0
- bl sub_806CEBC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806CCB4
- ldr r0, _0807A884
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
-_0807A866:
- adds r1, r5, 0
- adds r1, 0xE4
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
- cmp r6, 0
- beq _0807A87E
- movs r0, 0x1
- bl sub_807EC28
-_0807A87E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A884: .4byte gUnknown_80FAB6C
- thumb_func_end sub_807A7C8
-
- thumb_func_start sub_807A888
-sub_807A888:
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A918
- ldr r5, [r4, 0x70]
- ldr r0, _0807A8B8
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- adds r0, r5, 0
- adds r0, 0xE8
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _0807A8F6
- lsls r0, 2
- ldr r1, _0807A8BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807A8B8: .4byte gAvailablePokemonNames
-_0807A8BC: .4byte _0807A8C0
- .align 2, 0
-_0807A8C0:
- .4byte _0807A8F6
- .4byte _0807A8D4
- .4byte _0807A8DC
- .4byte _0807A8EC
- .4byte _0807A8F6
-_0807A8D4:
- ldr r0, _0807A8D8
- b _0807A8DE
- .align 2, 0
-_0807A8D8: .4byte gUnknown_80FAA0C
-_0807A8DC:
- ldr r0, _0807A8E8
-_0807A8DE:
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
- b _0807A8F6
- .align 2, 0
-_0807A8E8: .4byte gUnknown_80FAA2C
-_0807A8EC:
- ldr r0, _0807A920
- ldr r1, [r0]
- adds r0, r4, 0
- bl SendMessage
-_0807A8F6:
- adds r0, r5, 0
- adds r0, 0xE8
- movs r1, 0
- strb r1, [r0]
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
- ldrb r0, [r5, 0x7]
- cmp r0, 0
- beq _0807A918
- movs r0, 0x31
- bl sub_803E46C
- bl sub_8049ED4
- bl sub_8040A84
-_0807A918:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A920: .4byte gUnknown_80FAA48
- thumb_func_end sub_807A888
-
- thumb_func_start sub_807A924
-sub_807A924:
- push {r4,r5,lr}
- adds r5, r1, 0
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807A95C
- ldr r4, [r5, 0x70]
- ldr r0, _0807A964
- adds r1, r5, 0
- movs r2, 0
- bl SetMessageArgument
- adds r4, 0xEC
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _0807A952
- ldr r0, _0807A968
- ldr r1, [r0]
- adds r0, r5, 0
- bl SendMessage
-_0807A952:
- movs r0, 0
- strb r0, [r4]
- adds r0, r5, 0
- bl DungeonEntityUpdateStatusSprites
-_0807A95C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807A964: .4byte gAvailablePokemonNames
-_0807A968: .4byte gUnknown_80FABC0
- thumb_func_end sub_807A924
-
- thumb_func_start sub_807A96C
-sub_807A96C:
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- ldr r0, [r4, 0x70]
- adds r5, r0, 0
- movs r2, 0
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0807A988
- adds r0, r6, 0
- bl SendImmobilizeEndMessage
- movs r2, 0x1
-_0807A988:
- adds r0, r5, 0
- adds r0, 0xA8
- ldrh r1, [r0]
- ldr r0, _0807A9AC
- cmp r1, r0
- bne _0807A9A2
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_807A124
- movs r2, 0x1
-_0807A9A2:
- adds r0, r2, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0807A9AC: .4byte 0x00007f01
- thumb_func_end sub_807A96C
-
- thumb_func_start sub_807A9B0
-sub_807A9B0:
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- adds r1, 0xA8
- movs r2, 0
- strb r2, [r1]
- adds r0, 0xA9
- strb r2, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_806A898
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807A9B0
-
- thumb_func_start sub_807A9D8
-sub_807A9D8:
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807AA20
- ldr r2, [r4, 0x70]
- adds r3, r2, 0
- adds r3, 0xB0
- ldrb r0, [r3]
- cmp r0, 0x1
- bne _0807AA20
- movs r1, 0
- strb r1, [r3]
- adds r0, r2, 0
- adds r0, 0xB8
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- ldr r0, _0807AA28
- adds r1, r4, 0
- movs r2, 0
- bl SetMessageArgument
- ldr r0, _0807AA2C
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80522F4
- adds r0, r4, 0
- bl DungeonEntityUpdateStatusSprites
-_0807AA20:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807AA28: .4byte gAvailablePokemonNames
-_0807AA2C: .4byte gUnknown_80FA8BC
- thumb_func_end sub_807A9D8
-
- thumb_func_start sub_807AA30
-sub_807AA30:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r4, 0
-_0807AA3C:
- ldr r0, _0807AAD8
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _0807AADC
- adds r0, r2
- adds r0, r1
- ldr r5, [r0]
- adds r0, r5, 0
- bl EntityExists
- lsls r0, 24
- adds r4, 0x1
- mov r10, r4
- cmp r0, 0
- beq _0807AB22
- ldr r1, [r5, 0x70]
- adds r0, r1, 0
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0807AB22
- adds r0, r1, 0
- adds r0, 0xA9
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _0807AB22
- movs r0, 0
- mov r9, r0
- mov r8, r0
- adds r0, r5, 0
- bl GetEntityRoomIndex
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
-_0807AA82:
- ldr r0, _0807AAD8
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r2, _0807AAE0
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807AB00
- adds r0, r4, 0
- movs r1, 0x18
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- bne _0807AB00
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0807AABA
- negs r1, r1
-_0807AABA:
- cmp r1, 0x1
- bgt _0807AAE4
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- subs r1, r0
- cmp r1, 0
- bge _0807AACE
- negs r1, r1
-_0807AACE:
- cmp r1, 0x1
- bgt _0807AAE4
- movs r0, 0x1
- mov r9, r0
- b _0807AB06
- .align 2, 0
-_0807AAD8: .4byte gDungeonGlobalData
-_0807AADC: .4byte 0x0001358c
-_0807AAE0: .4byte 0x0001357c
-_0807AAE4:
- adds r0, r4, 0
- movs r1, 0x1D
- bl HasItem
- lsls r0, 24
- cmp r0, 0
- beq _0807AB00
- adds r0, r4, 0
- bl GetEntityRoomIndex
- lsls r0, 24
- lsrs r0, 24
- cmp r7, r0
- beq _0807AB1C
-_0807AB00:
- adds r6, 0x1
- cmp r6, 0x3
- ble _0807AA82
-_0807AB06:
- mov r2, r8
- cmp r2, 0
- bne _0807AB1C
- mov r0, r9
- cmp r0, 0
- beq _0807AB16
- movs r2, 0x1
- mov r8, r2
-_0807AB16:
- mov r0, r8
- cmp r0, 0
- beq _0807AB22
-_0807AB1C:
- adds r0, r5, 0
- bl sub_807A9B0
-_0807AB22:
- mov r4, r10
- cmp r4, 0xF
- ble _0807AA3C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_807AA30
-
- thumb_func_start sub_807AB38
-sub_807AB38:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1A8
- adds r2, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, [r2, 0x70]
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- beq _0807AB54
- b _0807ADA6
-_0807AB54:
- adds r0, r2, 0
- str r2, [sp, 0x1A4]
- bl GetMapTileForDungeonEntity_2
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r2, [sp, 0x1A4]
- cmp r0, 0
- bne _0807AB6A
- b _0807ADA6
-_0807AB6A:
- ldr r3, _0807AC10
- ldr r0, [r3]
- ldr r5, _0807AC14
- adds r1, r0, r5
- ldrb r0, [r1]
- cmp r0, 0
- beq _0807AB7A
- b _0807ADA6
-_0807AB7A:
- movs r0, 0x1
- strb r0, [r1]
- ldr r3, [r3]
- ldr r1, _0807AC18
- adds r0, r3, r1
- ldrb r1, [r0]
- cmp r1, 0xFF
- bne _0807AB8C
- b _0807ADA6
-_0807AB8C:
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r5, _0807AC1C
- adds r0, r5
- adds r3, r0
- movs r0, 0
- mov r8, r0
- cmp r4, 0
- beq _0807AC20
- movs r1, 0x6
- ldrsh r0, [r2, r1]
- subs r6, r0, 0x4
- adds r0, 0x4
- cmp r6, r0
- ble _0807ABAE
- b _0807ACB4
-_0807ABAE:
- movs r4, 0x4
- ldrsh r0, [r2, r4]
- subs r4, r0, 0x4
- adds r0, 0x4
- adds r5, r6, 0x1
- mov r9, r5
- cmp r4, r0
- bgt _0807AC00
- mov r1, r8
- lsls r0, r1, 2
- mov r1, sp
- adds r5, r0, r1
-_0807ABC6:
- adds r0, r4, 0
- adds r1, r6, 0
- str r2, [sp, 0x1A4]
- bl GetMapTile_2
- adds r1, r0, 0
- ldr r0, [r1, 0x10]
- ldr r2, [sp, 0x1A4]
- cmp r0, 0
- bne _0807ABF4
- ldrh r1, [r1]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0807ABF4
- mov r0, r8
- cmp r0, 0x63
- bgt _0807ABF4
- strh r4, [r5]
- strh r6, [r5, 0x2]
- adds r5, 0x4
- movs r1, 0x1
- add r8, r1
-_0807ABF4:
- adds r4, 0x1
- movs r1, 0x4
- ldrsh r0, [r2, r1]
- adds r0, 0x4
- cmp r4, r0
- ble _0807ABC6
-_0807AC00:
- mov r6, r9
- movs r4, 0x6
- ldrsh r0, [r2, r4]
- adds r0, 0x4
- cmp r6, r0
- ble _0807ABAE
- b _0807ACB4
- .align 2, 0
-_0807AC10: .4byte gDungeonGlobalData
-_0807AC14: .4byte 0x00000671
-_0807AC18: .4byte 0x00003a0c
-_0807AC1C: .4byte 0x000104c4
-_0807AC20:
- movs r5, 0x4
- ldrsh r0, [r2, r5]
- subs r1, r0, 0x4
- movs r5, 0x2
- ldrsh r4, [r3, r5]
- mov r10, r4
- cmp r10, r1
- bge _0807AC32
- mov r10, r1
-_0807AC32:
- adds r1, r0, 0x5
- movs r0, 0x6
- ldrsh r7, [r3, r0]
- cmp r7, r1
- ble _0807AC3E
- adds r7, r1, 0
-_0807AC3E:
- movs r1, 0x6
- ldrsh r0, [r2, r1]
- subs r2, r0, 0x4
- movs r4, 0x4
- ldrsh r1, [r3, r4]
- cmp r1, r2
- bge _0807AC4E
- adds r1, r2, 0
-_0807AC4E:
- adds r0, 0x5
- movs r5, 0x8
- ldrsh r2, [r3, r5]
- cmp r2, r0
- ble _0807AC5A
- adds r2, r0, 0
-_0807AC5A:
- adds r6, r1, 0
- cmp r6, r2
- bge _0807ACB4
-_0807AC60:
- mov r4, r10
- adds r0, r6, 0x1
- mov r9, r0
- cmp r4, r7
- bge _0807ACAE
- mov r1, r8
- lsls r0, r1, 2
- mov r1, sp
- adds r5, r0, r1
-_0807AC72:
- adds r0, r4, 0
- adds r1, r6, 0
- str r2, [sp, 0x1A4]
- bl GetMapTile_2
- adds r1, r0, 0
- ldr r0, [r1, 0x10]
- ldr r2, [sp, 0x1A4]
- cmp r0, 0
- bne _0807ACA8
- ldrh r1, [r1]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0807ACA8
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0807ACA8
- mov r0, r8
- cmp r0, 0x63
- bgt _0807ACA8
- strh r4, [r5]
- strh r6, [r5, 0x2]
- adds r5, 0x4
- movs r1, 0x1
- add r8, r1
-_0807ACA8:
- adds r4, 0x1
- cmp r4, r7
- blt _0807AC72
-_0807ACAE:
- mov r6, r9
- cmp r6, r2
- blt _0807AC60
-_0807ACB4:
- ldr r0, _0807AD74
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r1, _0807AD78
- movs r4, 0
- ldrsh r1, [r1, r4]
- bl sub_808411C
- adds r7, r0, 0
- cmp r7, r8
- blt _0807ACCC
- mov r7, r8
-_0807ACCC:
- movs r6, 0
- cmp r6, r7
- bge _0807ADA0
- mov r10, r6
-_0807ACD4:
- mov r0, r8
- bl DungeonRandomCapped
- adds r2, r0, 0
- movs r3, 0
- cmp r3, r8
- bge _0807AD0C
- lsls r0, r2, 2
- mov r5, sp
- adds r1, r5, r0
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r5, r0, 0
- cmp r1, 0
- bne _0807AD1C
-_0807ACF2:
- adds r2, 0x1
- cmp r2, r8
- blt _0807ACFA
- movs r2, 0
-_0807ACFA:
- adds r3, 0x1
- cmp r3, r8
- bge _0807AD0C
- lsls r0, r2, 2
- add r0, sp
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0
- beq _0807ACF2
-_0807AD0C:
- lsls r0, r2, 2
- mov r2, sp
- adds r1, r2, r0
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r5, r0, 0
- cmp r1, 0
- beq _0807ADA0
-_0807AD1C:
- movs r0, 0x1
- bl sub_803D970
- add r4, sp, 0x190
- movs r1, 0
- strh r0, [r4]
- mov r0, r10
- strh r0, [r4, 0x8]
- strb r1, [r4, 0x2]
- mov r1, r10
- str r1, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r4, 0x10]
- mov r2, sp
- adds r1, r2, r5
- ldrh r0, [r1]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xE]
- movs r5, 0
- ldrsh r0, [r4, r5]
- movs r1, 0x1
- bl sub_806AA0C
- lsls r0, 24
- adds r6, 0x1
- mov r9, r6
- cmp r0, 0
- beq _0807AD9A
- adds r0, r4, 0
- movs r1, 0
- bl sub_806B7F8
- adds r4, r0, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807AD9A
- movs r0, 0xC8
- lsls r0, 8
- str r0, [r4, 0x1C]
- movs r5, 0
- b _0807AD84
- .align 2, 0
-_0807AD74: .4byte gUnknown_80F4DA2
-_0807AD78: .4byte gUnknown_80F4DA4
-_0807AD7C:
- movs r0, 0x57
- bl sub_803E46C
- adds r5, 0x1
-_0807AD84:
- cmp r5, 0x63
- bgt _0807AD96
- ldr r0, [r4, 0x1C]
- movs r1, 0xAA
- bl sub_8009DA4
- str r0, [r4, 0x1C]
- cmp r0, 0xFF
- bgt _0807AD7C
-_0807AD96:
- mov r0, r10
- str r0, [r4, 0x1C]
-_0807AD9A:
- mov r6, r9
- cmp r6, r7
- blt _0807ACD4
-_0807ADA0:
- movs r0, 0x1
- bl sub_804178C
-_0807ADA6:
- add sp, 0x1A8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_807AB38
-
- thumb_func_start MoveIfPossible
-MoveIfPossible:
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r4, [r5, 0x70]
- adds r0, r4, 0
- adds r0, 0x79
- movs r6, 0
- strb r6, [r0]
- adds r0, 0x1
- strb r6, [r0]
- adds r0, 0x1
- strb r6, [r0]
- adds r0, r5, 0
- movs r1, 0x7
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- beq _0807ADFA
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- asrs r0, 1
- cmp r1, r0
- bgt _0807ADFA
- adds r0, r4, 0
- adds r0, 0x44
- strh r6, [r0]
- b _0807AEB4
-_0807ADFA:
- adds r0, r5, 0
- movs r1, 0x9
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- beq _0807AE12
- adds r1, r4, 0
- adds r1, 0x44
- movs r0, 0
- strh r0, [r1]
- b _0807AEB4
-_0807AE12:
- ldrb r0, [r4, 0x7]
- cmp r0, 0
- bne _0807AE32
- movs r1, 0x9E
- lsls r1, 1
- adds r0, r4, r1
- ldr r0, [r0]
- bl RoundUpFixedPoint
- adds r1, r0, 0
- cmp r1, 0
- bne _0807AE32
- adds r0, r4, 0
- adds r0, 0x44
- strh r1, [r0]
- b _0807AEB4
-_0807AE32:
- adds r0, r4, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0807AE6A
- adds r0, r4, 0
- adds r0, 0x44
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl SetWalkAction
- movs r0, 0x8
- bl DungeonRandomCapped
- adds r1, r4, 0
- adds r1, 0x46
- strb r0, [r1]
- ldrh r1, [r5, 0x4]
- movs r2, 0xB6
- lsls r2, 1
- adds r0, r4, r2
- strh r1, [r0]
- ldrh r0, [r5, 0x6]
- subs r0, 0x1
- adds r2, 0x2
- adds r1, r4, r2
- strh r0, [r1]
- b _0807AEB4
-_0807AE6A:
- adds r0, r5, 0
- adds r1, r7, 0
- bl ShouldAvoidEnemiesAndShowEffect
- lsls r0, 24
- cmp r0, 0
- beq _0807AE80
- adds r0, r5, 0
- bl AvoidEnemies
- b _0807AE9C
-_0807AE80:
- adds r0, r5, 0
- bl CanTakeItem
- lsls r0, 24
- cmp r0, 0
- beq _0807AE96
- adds r1, r4, 0
- adds r1, 0x44
- movs r0, 0x3F
- strh r0, [r1]
- b _0807AEB4
-_0807AE96:
- adds r0, r5, 0
- bl ChooseTargetPosition
-_0807AE9C:
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0807AEAC
- adds r0, r4, 0
- adds r0, 0x44
- strh r2, [r0]
- b _0807AEB4
-_0807AEAC:
- adds r0, r5, 0
- adds r1, r7, 0
- bl DecideMovement
-_0807AEB4:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end MoveIfPossible
-
- thumb_func_start CanTakeItem
-CanTakeItem:
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, [r4, 0x70]
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807AF50
- adds r0, r4, 0
- bl CannotUseItems
- lsls r0, 24
- cmp r0, 0
- bne _0807AF50
- adds r0, r4, 0
- bl GetMapTileForDungeonEntity_2
- adds r6, r0, 0
- ldr r4, [r6, 0x14]
- cmp r4, 0
- beq _0807AF50
- adds r0, r4, 0
- bl GetEntityType
- cmp r0, 0x5
- bhi _0807AF50
- lsls r0, 2
- ldr r1, _0807AEFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807AEFC: .4byte _0807AF00
- .align 2, 0
-_0807AF00:
- .4byte _0807AF50
- .4byte _0807AF50
- .4byte _0807AF50
- .4byte _0807AF18
- .4byte _0807AF50
- .4byte _0807AF50
-_0807AF18:
- ldrb r0, [r5, 0x7]
- cmp r0, 0
- bne _0807AF50
- adds r0, r5, 0
- adds r0, 0x60
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0807AF50
- ldrh r1, [r6]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0807AF3C
- ldrb r0, [r5, 0x6]
- cmp r0, 0
- bne _0807AF50
-_0807AF3C:
- adds r0, r4, 0
- bl GetItemData
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0807AF50
- movs r0, 0x1
- b _0807AF52
-_0807AF50:
- movs r0, 0
-_0807AF52:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CanTakeItem
-
- thumb_func_start ChooseTargetPosition
-ChooseTargetPosition:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- ldr r7, [r0, 0x70]
- bl TargetLeader
- lsls r0, 24
- cmp r0, 0
- beq _0807AF74
- b _0807B12C
-_0807AF74:
- ldr r0, _0807AF8C
- ldr r1, [r0]
- ldr r2, _0807AF90
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807AF98
- ldr r3, _0807AF94
- adds r6, r1, r3
- movs r4, 0x14
- mov r10, r4
- b _0807AFB4
- .align 2, 0
-_0807AF8C: .4byte gDungeonGlobalData
-_0807AF90: .4byte 0x000037fc
-_0807AF94: .4byte 0x000135cc
-_0807AF98:
- ldrb r0, [r7, 0x6]
- cmp r0, 0
- beq _0807AFAC
- ldr r0, _0807AFA8
- adds r6, r1, r0
- movs r1, 0x4
- mov r10, r1
- b _0807AFB4
- .align 2, 0
-_0807AFA8: .4byte 0x0001357c
-_0807AFAC:
- ldr r2, _0807B01C
- adds r6, r1, r2
- movs r3, 0x10
- mov r10, r3
-_0807AFB4:
- mov r0, r8
- bl CanCrossWalls
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp]
- ldr r0, _0807B020
- mov r9, r0
- movs r5, 0
- adds r1, r7, 0
- adds r1, 0x78
- str r1, [sp, 0x8]
- cmp r5, r10
- bge _0807B09E
-_0807AFD6:
- lsls r0, r5, 2
- adds r0, r6
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807B098
- ldr r0, [r4, 0x70]
- adds r1, r0, 0
- adds r1, 0xA4
- ldrb r1, [r1]
- adds r2, r0, 0
- cmp r1, 0
- bne _0807B098
- ldr r0, _0807B024
- ldr r0, [r0]
- ldr r3, _0807B028
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B02C
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807B098
- ldr r2, [r4, 0x70]
- b _0807B03C
- .align 2, 0
-_0807B01C: .4byte 0x0001358c
-_0807B020: .4byte 0x000003e7
-_0807B024: .4byte gDungeonGlobalData
-_0807B028: .4byte 0x000037fc
-_0807B02C:
- ldrb r0, [r7, 0x6]
- cmp r0, 0
- bne _0807B03C
- adds r0, r2, 0
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _0807B098
-_0807B03C:
- ldrb r0, [r2, 0x8]
- cmp r0, 0x1
- beq _0807B098
- ldr r0, [sp, 0x4]
- cmp r0, 0
- beq _0807B074
- mov r2, r8
- movs r3, 0x4
- ldrsh r1, [r2, r3]
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- subs r1, r0
- cmp r1, 0
- bge _0807B05A
- negs r1, r1
-_0807B05A:
- cmp r1, 0x5
- bgt _0807B074
- mov r3, r8
- movs r0, 0x6
- ldrsh r1, [r3, r0]
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- subs r1, r0
- cmp r1, 0
- bge _0807B070
- negs r1, r1
-_0807B070:
- cmp r1, 0x5
- ble _0807B082
-_0807B074:
- mov r0, r8
- adds r1, r4, 0
- bl CanSee_2
- lsls r0, 24
- cmp r0, 0
- beq _0807B098
-_0807B082:
- adds r1, r4, 0x4
- mov r0, r8
- adds r0, 0x4
- bl GetMaxPositionDifference
- cmp r9, r0
- ble _0807B098
- mov r9, r0
- str r5, [sp]
- cmp r0, 0x1
- ble _0807B09E
-_0807B098:
- adds r5, 0x1
- cmp r5, r10
- blt _0807AFD6
-_0807B09E:
- ldr r3, [sp]
- cmp r3, 0
- blt _0807B12C
- movs r2, 0
- movs r5, 0x1
- ldr r4, [sp, 0x8]
- strb r5, [r4]
- adds r1, r7, 0
- adds r1, 0x88
- lsls r0, r3, 2
- adds r4, r0, r6
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- str r0, [r1]
- subs r1, 0x8
- ldr r0, [r4]
- str r0, [r1]
- ldrh r1, [r0, 0x26]
- adds r0, r7, 0
- adds r0, 0x7C
- strh r1, [r0]
- subs r0, 0x2
- strb r5, [r0]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r7, r1
- str r2, [r0]
- mov r0, r8
- movs r1, 0x8
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- bne _0807B0E4
- b _0807B2C6
-_0807B0E4:
- mov r0, r8
- bl CanSeeTeammate
- lsls r0, 24
- cmp r0, 0
- beq _0807B0F2
- b _0807B2C6
-_0807B0F2:
- mov r2, r8
- movs r3, 0x4
- ldrsh r1, [r2, r3]
- ldr r2, [r4]
- movs r4, 0x4
- ldrsh r0, [r2, r4]
- subs r1, r0
- cmp r1, 0
- bge _0807B106
- negs r1, r1
-_0807B106:
- cmp r1, 0x1
- ble _0807B10C
- b _0807B2C6
-_0807B10C:
- mov r0, r8
- movs r3, 0x6
- ldrsh r1, [r0, r3]
- movs r4, 0x6
- ldrsh r0, [r2, r4]
- subs r0, r1, r0
- cmp r0, 0
- bge _0807B11E
- negs r0, r0
-_0807B11E:
- cmp r0, 0x1
- ble _0807B124
- b _0807B2C6
-_0807B124:
- adds r0, r7, 0
- adds r0, 0x7B
- strb r5, [r0]
- b _0807B2C6
-_0807B12C:
- mov r0, r8
- movs r1, 0x1
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- bne _0807B17C
- ldrb r5, [r7, 0x6]
- adds r0, r7, 0
- adds r0, 0x78
- str r0, [sp, 0x8]
- cmp r5, 0
- bne _0807B222
- mov r0, r8
- bl GetLeaderEntityIfVisible
- adds r4, r0, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807B222
- movs r0, 0x1
- ldr r1, [sp, 0x8]
- strb r0, [r1]
- adds r1, r7, 0
- adds r1, 0x88
- ldr r0, [r4, 0x4]
- str r0, [r1]
- adds r0, r7, 0
- adds r0, 0x80
- str r4, [r0]
- ldrh r1, [r4, 0x26]
- subs r0, 0x4
- strh r1, [r0]
- movs r2, 0x8A
- lsls r2, 1
- adds r0, r7, r2
- str r5, [r0]
- b _0807B2C6
-_0807B17C:
- ldrb r0, [r7, 0x7]
- adds r3, r7, 0
- adds r3, 0x78
- str r3, [sp, 0x8]
- cmp r0, 0
- beq _0807B222
- ldr r4, _0807B1BC
- ldr r0, [r4]
- ldr r1, _0807B1C0
- adds r0, r1
- ldrb r0, [r0]
- mov r2, r8
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- movs r3, 0x6
- ldrsh r1, [r2, r3]
- bl GetMapTile_1
- ldrb r1, [r0, 0x9]
- cmp r1, 0xFF
- bne _0807B1C4
- mov r4, r8
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- subs r2, r1, 0x2
- mov r10, r2
- movs r3, 0x6
- ldrsh r0, [r4, r3]
- subs r2, r0, 0x2
- adds r6, r1, 0x2
- adds r0, 0x2
- b _0807B1EC
- .align 2, 0
-_0807B1BC: .4byte gDungeonGlobalData
-_0807B1C0: .4byte 0x00018209
-_0807B1C4:
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _0807B26C
- adds r0, r1
- ldr r1, [r4]
- adds r1, r0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- subs r0, 0x1
- mov r10, r0
- movs r3, 0x4
- ldrsh r0, [r1, r3]
- subs r2, r0, 0x1
- movs r4, 0x6
- ldrsh r0, [r1, r4]
- adds r6, r0, 0x1
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- adds r0, 0x1
-_0807B1EC:
- mov r9, r0
- adds r5, r2, 0
- adds r4, r7, 0
- adds r4, 0x78
- str r4, [sp, 0x8]
- cmp r5, r9
- bgt _0807B222
-_0807B1FA:
- mov r4, r10
- cmp r4, r6
- bgt _0807B21C
-_0807B200:
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetMapTile_2
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _0807B216
- bl GetEntityType
- cmp r0, 0x3
- beq _0807B270
-_0807B216:
- adds r4, 0x1
- cmp r4, r6
- ble _0807B200
-_0807B21C:
- adds r5, 0x1
- cmp r5, r9
- ble _0807B1FA
-_0807B222:
- ldr r1, [sp, 0x8]
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0807B2C0
- adds r3, r7, 0
- adds r3, 0x80
- ldr r1, [r3]
- cmp r1, 0
- beq _0807B2C0
- adds r2, r7, 0
- adds r2, 0x7C
- ldrh r0, [r1, 0x26]
- ldrh r4, [r2]
- cmp r0, r4
- bne _0807B2B4
- ldr r1, [r1, 0x70]
- mov r9, r1
- movs r5, 0
- mov r4, r9
- adds r4, 0x68
-_0807B250:
- lsls r6, r5, 2
- mov r0, r8
- adds r1, r4, 0
- bl InSameRoom
- lsls r0, 24
- cmp r0, 0
- bne _0807B294
- adds r4, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- ble _0807B250
- b _0807B2C0
- .align 2, 0
-_0807B26C: .4byte 0x000104c4
-_0807B270:
- movs r1, 0
- movs r0, 0x7
- ldr r2, [sp, 0x8]
- strb r0, [r2]
- adds r0, r7, 0
- adds r0, 0x88
- strh r4, [r0]
- adds r0, 0x2
- strh r5, [r0]
- subs r0, 0xA
- str r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- movs r3, 0x8A
- lsls r3, 1
- adds r0, r7, r3
- str r1, [r0]
- b _0807B2C6
-_0807B294:
- movs r2, 0
- movs r0, 0x2
- ldr r4, [sp, 0x8]
- strb r0, [r4]
- adds r1, r7, 0
- adds r1, 0x88
- mov r0, r9
- adds r0, 0x68
- adds r0, r6
- ldr r0, [r0]
- str r0, [r1]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r7, r1
- str r2, [r0]
- b _0807B2C6
-_0807B2B4:
- movs r1, 0
- movs r0, 0x6
- ldr r4, [sp, 0x8]
- strb r0, [r4]
- str r1, [r3]
- strh r1, [r2]
-_0807B2C0:
- mov r0, r8
- bl Explore
-_0807B2C6:
- movs r0, 0x1
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ChooseTargetPosition
-
- thumb_func_start DecideMovement
-DecideMovement:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x3C
- mov r9, r0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r5, [r0, 0x70]
- movs r0, 0xB6
- lsls r0, 1
- adds r1, r5, r0
- adds r4, r5, 0
- adds r4, 0x88
- ldr r0, [r4]
- str r0, [r1]
- mov r2, r9
- ldr r1, [r2, 0x4]
- ldr r0, [r4]
- cmp r1, r0
- beq _0807B348
- mov r6, r9
- adds r6, 0x4
- adds r0, r6, 0
- adds r1, r4, 0
- bl CalculateFacingDir
- mov r8, r0
- adds r0, r5, 0
- adds r0, 0x7A
- ldrb r1, [r0]
- mov r0, r9
- bl ShouldAvoidFirstHit
- lsls r0, 24
- cmp r0, 0
- beq _0807B366
- adds r0, r5, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0807B37C
- adds r0, r6, 0
- adds r1, r4, 0
- bl IsTargetTwoTilesAway
- lsls r0, 24
- cmp r0, 0
- beq _0807B37C
- adds r0, r6, 0
- adds r1, r4, 0
- bl GetMaxPositionDifference
- cmp r0, 0x2
- bne _0807B354
-_0807B348:
- adds r0, r5, 0
- adds r0, 0x44
- movs r1, 0x1
- bl SetAction
- b _0807B5CE
-_0807B354:
- cmp r0, 0x1
- bgt _0807B37C
- movs r3, 0x4
- add r8, r3
- movs r0, 0x7
- mov r1, r8
- ands r1, r0
- mov r8, r1
- b _0807B37C
-_0807B366:
- adds r0, r5, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B37C
- movs r2, 0x4
- add r8, r2
- movs r0, 0x7
- mov r3, r8
- ands r3, r0
- mov r8, r3
-_0807B37C:
- add r4, sp, 0x30
- mov r0, r9
- mov r1, r8
- adds r2, r4, 0
- bl CanMoveForward
- lsls r0, 24
- cmp r0, 0
- beq _0807B3A8
- adds r0, r5, 0
- adds r0, 0x44
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl SetWalkAction
- movs r0, 0x7
- mov r3, r8
- ands r3, r0
- adds r0, r5, 0
- adds r0, 0x46
- strb r3, [r0]
- b _0807B5CE
-_0807B3A8:
- ldrb r0, [r4]
- cmp r0, 0
- beq _0807B444
- ldrb r0, [r5, 0x6]
- cmp r0, 0
- bne _0807B3E8
- ldr r1, _0807B3E0
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807B3E8
- adds r0, r5, 0
- adds r0, 0x79
- movs r4, 0x1
- strb r4, [r0]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r5, r2
- strb r4, [r0]
- adds r0, r5, 0
- adds r0, 0x44
- movs r1, 0x1
- bl SetAction
- ldr r3, _0807B3E4
- adds r0, r5, r3
- strb r4, [r0]
- b _0807B5CE
- .align 2, 0
-_0807B3E0: .4byte 0x00000145
-_0807B3E4: .4byte 0x00000147
-_0807B3E8:
- mov r0, r9
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- ldr r2, _0807B434
- mov r3, r8
- lsls r0, r3, 2
- adds r2, r0, r2
- movs r3, 0
- ldrsh r0, [r2, r3]
- adds r1, r0
- adds r0, r5, 0
- adds r0, 0x88
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bne _0807B43C
- mov r1, r9
- movs r3, 0x6
- ldrsh r0, [r1, r3]
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x8A
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- bne _0807B43C
- adds r0, r5, 0
- adds r0, 0x44
- movs r1, 0x1
- bl SetAction
- ldr r3, _0807B438
- adds r1, r5, r3
- movs r0, 0x1
- strb r0, [r1]
- b _0807B5CE
- .align 2, 0
-_0807B434: .4byte gAdjacentTileOffsets
-_0807B438: .4byte 0x00000147
-_0807B43C:
- adds r1, r5, 0
- adds r1, 0x79
- movs r0, 0x1
- strb r0, [r1]
-_0807B444:
- mov r3, sp
- mov r2, sp
- mov r1, sp
- add r0, sp, 0x28
- movs r4, 0x1
- strb r4, [r0]
- add r0, sp, 0x20
- strb r4, [r0]
- strb r4, [r1, 0x18]
- strb r4, [r2, 0x10]
- strb r4, [r3, 0x8]
- ldrb r6, [r5, 0x6]
- cmp r6, 0
- bne _0807B4C8
- mov r0, r8
- ands r0, r4
- cmp r0, 0
- beq _0807B4C8
- mov r1, r9
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- adds r1, r5, 0
- adds r1, 0x88
- movs r3, 0
- ldrsh r1, [r1, r3]
- subs r2, r0, r1
- cmp r2, 0
- bge _0807B47E
- negs r2, r2
-_0807B47E:
- mov r0, r9
- movs r3, 0x6
- ldrsh r1, [r0, r3]
- adds r0, r5, 0
- adds r0, 0x8A
- movs r3, 0
- ldrsh r0, [r0, r3]
- subs r1, r0
- cmp r1, 0
- bge _0807B494
- negs r1, r1
-_0807B494:
- cmp r2, 0x2
- bgt _0807B4C8
- cmp r1, 0x2
- bgt _0807B4C8
- cmp r2, r1
- beq _0807B4C8
- movs r3, 0x2
- mov r0, r8
- ands r3, r0
- cmp r3, 0
- beq _0807B4BA
- cmp r2, r1
- bge _0807B4B4
- mov r0, sp
- strb r6, [r0, 0x10]
- b _0807B4C8
-_0807B4B4:
- mov r0, sp
- strb r6, [r0, 0x8]
- b _0807B4C8
-_0807B4BA:
- cmp r2, r1
- bge _0807B4C4
- mov r0, sp
- strb r3, [r0, 0x8]
- b _0807B4C8
-_0807B4C4:
- mov r0, sp
- strb r3, [r0, 0x10]
-_0807B4C8:
- movs r1, 0x3
- mov r10, r1
- mov r0, r9
- adds r1, r7, 0
- bl ShouldAvoidEnemiesAndShowEffect
- lsls r0, 24
- cmp r0, 0
- bne _0807B4E4
- adds r0, r5, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B4E8
-_0807B4E4:
- movs r2, 0x5
- mov r10, r2
-_0807B4E8:
- movs r6, 0x1
- adds r3, r5, 0
- adds r3, 0x44
- str r3, [sp, 0x34]
- cmp r6, r10
- bge _0807B53C
- mov r3, sp
- mov r4, sp
- adds r4, 0xA
- add r7, sp, 0x8
-_0807B4FC:
- lsls r0, r6, 3
- add r2, sp, 0x4
- adds r2, r0
- ldr r1, _0807B598
- lsls r0, r6, 2
- adds r0, r1
- ldr r1, [r0]
- add r1, r8
- movs r0, 0x7
- ands r1, r0
- str r1, [r2]
- mov r0, r9
- adds r2, r4, 0
- str r3, [sp, 0x38]
- bl CanMoveForward
- strb r0, [r7, 0x1]
- lsls r0, 24
- ldr r3, [sp, 0x38]
- cmp r0, 0
- bne _0807B532
- ldrb r0, [r4]
- cmp r0, 0
- bne _0807B532
- movs r0, 0x1
- strb r0, [r3, 0x10]
- strb r0, [r3, 0x8]
-_0807B532:
- adds r4, 0x8
- adds r7, 0x8
- adds r6, 0x1
- cmp r6, r10
- blt _0807B4FC
-_0807B53C:
- movs r6, 0x1
- cmp r6, r10
- bge _0807B56E
- adds r3, r5, 0
- adds r3, 0x79
- add r1, sp, 0x8
- movs r4, 0x8
- movs r7, 0x1
-_0807B54C:
- adds r2, r4, 0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0807B55A
- ldrb r0, [r1]
- cmp r0, 0
- bne _0807B5A0
-_0807B55A:
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _0807B562
- strb r7, [r3]
-_0807B562:
- adds r1, 0x8
- adds r4, r2, 0
- adds r4, 0x8
- adds r6, 0x1
- cmp r6, r10
- blt _0807B54C
-_0807B56E:
- ldr r0, [sp, 0x34]
- movs r1, 0x1
- bl SetAction
- ldr r1, _0807B59C
- adds r0, r5, r1
- movs r1, 0
- movs r2, 0x1
- strb r2, [r0]
- ldrb r0, [r5, 0x7]
- cmp r0, 0
- beq _0807B5BC
- adds r0, r5, 0
- adds r0, 0x79
- strb r1, [r0]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r5, r2
- strb r1, [r0]
- b _0807B5CE
- .align 2, 0
-_0807B598: .4byte gFaceDirectionIncrements
-_0807B59C: .4byte 0x00000147
-_0807B5A0:
- movs r3, 0x2
- ldrsh r1, [r5, r3]
- ldr r0, [sp, 0x34]
- bl SetWalkAction
- add r0, sp, 0x4
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- adds r1, r5, 0
- adds r1, 0x46
- strb r0, [r1]
- b _0807B5CE
-_0807B5BC:
- adds r0, r5, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B5CE
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r5, r1
- strb r2, [r0]
-_0807B5CE:
- add sp, 0x3C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end DecideMovement
-
- thumb_func_start AvoidEnemies
-AvoidEnemies:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- adds r7, r0, 0
- ldr r0, _0807B61C
- str r0, [sp, 0x8]
- ldr r1, [r7, 0x70]
- str r1, [sp, 0x10]
- adds r0, r7, 0
- bl GetEntityRoomIndex
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _0807B620
- ldr r1, [r0]
- ldr r2, _0807B624
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B62C
- ldr r3, _0807B628
- adds r0, r1, r3
- movs r4, 0x14
- mov r9, r4
- b _0807B64C
- .align 2, 0
-_0807B61C: .4byte 0x000f423f
-_0807B620: .4byte gDungeonGlobalData
-_0807B624: .4byte 0x000037fc
-_0807B628: .4byte 0x000135cc
-_0807B62C:
- ldr r2, [sp, 0x10]
- ldrb r0, [r2, 0x6]
- cmp r0, 0
- beq _0807B644
- ldr r3, _0807B640
- adds r0, r1, r3
- movs r4, 0x4
- mov r9, r4
- b _0807B64C
- .align 2, 0
-_0807B640: .4byte 0x0001357c
-_0807B644:
- ldr r2, _0807B790
- adds r0, r1, r2
- movs r3, 0x10
- mov r9, r3
-_0807B64C:
- movs r4, 0
- str r4, [sp, 0xC]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- mov r8, r4
- cmp r4, r9
- bge _0807B6D8
- adds r6, r0, 0
-_0807B65C:
- ldr r4, [r6]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807B6CE
- adds r0, r7, 0
- adds r1, r4, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0807B6CE
- ldr r0, _0807B794
- ldr r0, [r0]
- ldr r2, _0807B798
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807B69A
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807B6CE
-_0807B69A:
- adds r1, r4, 0x4
- adds r0, r7, 0x4
- bl GetMaxPositionDifference
- ldr r3, [sp, 0x8]
- cmp r3, r0
- ble _0807B6CE
- str r0, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r4, 0
- bl GetEntityRoomIndex
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r1, [sp, 0x10]
- adds r1, 0x88
- ldr r4, [sp, 0xC]
- ldr r0, [r4, 0x4]
- str r0, [r1]
- ldr r0, [sp, 0x10]
- movs r2, 0xB6
- lsls r2, 1
- adds r1, r0, r2
- ldr r0, [r4, 0x4]
- str r0, [r1]
-_0807B6CE:
- adds r6, 0x4
- movs r3, 0x1
- add r8, r3
- cmp r8, r9
- blt _0807B65C
-_0807B6D8:
- ldr r0, _0807B79C
- ldr r4, [sp, 0x8]
- cmp r4, r0
- bne _0807B6E2
- b _0807B906
-_0807B6E2:
- ldr r0, [sp, 0x10]
- adds r0, 0x88
- str r0, [sp, 0x28]
- ldr r1, [sp, 0x10]
- adds r1, 0x78
- str r1, [sp, 0x24]
- ldr r2, [sp, 0x4]
- cmp r10, r2
- beq _0807B6F6
- b _0807B8E0
-_0807B6F6:
- mov r3, r10
- cmp r3, 0xFF
- bne _0807B6FE
- b _0807B8E0
-_0807B6FE:
- movs r4, 0x4
- ldrsh r0, [r7, r4]
- movs r2, 0x6
- ldrsh r1, [r7, r2]
- bl GetMapTile_1
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0807B7B2
- ldrh r0, [r7, 0x6]
- lsls r0, 16
- ldrh r5, [r7, 0x4]
- orrs r5, r0
- movs r4, 0
-_0807B71E:
- ldr r1, _0807B7A0
- lsls r0, r4, 2
- adds r0, r1
- ldrh r1, [r0]
- ldrh r3, [r7, 0x4]
- adds r1, r3
- lsls r1, 16
- ldrh r0, [r0, 0x2]
- ldrh r2, [r7, 0x6]
- adds r0, r2
- lsls r0, 16
- lsrs r5, r1, 16
- orrs r5, r0
- lsls r0, r5, 16
- asrs r0, 16
- asrs r1, r5, 16
- bl GetMapTile_1
- ldrb r0, [r0, 0x9]
- cmp r0, r10
- beq _0807B758
- adds r0, r7, 0
- adds r1, r4, 0
- mov r2, sp
- bl CanMoveForward
- lsls r0, 24
- cmp r0, 0
- bne _0807B75E
-_0807B758:
- adds r4, 0x1
- cmp r4, 0x7
- ble _0807B71E
-_0807B75E:
- cmp r4, 0x8
- bne _0807B7A4
- movs r0, 0x8
- bl DungeonRandomCapped
- adds r4, r0, 0
- movs r0, 0x6
- ldr r3, [sp, 0x24]
- strb r0, [r3]
- ldr r0, _0807B7A0
- lsls r1, r4, 2
- adds r1, r0
- ldrh r0, [r1]
- ldrh r4, [r7, 0x4]
- adds r0, r4
- ldr r2, [sp, 0x28]
- strh r0, [r2]
- ldrh r0, [r1, 0x2]
- ldrh r7, [r7, 0x6]
- adds r0, r7
- ldr r1, [sp, 0x10]
- adds r1, 0x8A
- strh r0, [r1]
- movs r0, 0x1
- b _0807B910
- .align 2, 0
-_0807B790: .4byte 0x0001358c
-_0807B794: .4byte gDungeonGlobalData
-_0807B798: .4byte 0x000037fc
-_0807B79C: .4byte 0x000f423f
-_0807B7A0: .4byte gAdjacentTileOffsets
-_0807B7A4:
- movs r0, 0x5
- ldr r3, [sp, 0x24]
- strb r0, [r3]
- ldr r4, [sp, 0x28]
- str r5, [r4]
- movs r0, 0x1
- b _0807B910
-_0807B7B2:
- ldr r0, _0807B8D0
- mov r2, r10
- lsls r1, r2, 7
- ldr r3, _0807B8D4
- adds r1, r3
- ldr r0, [r0]
- adds r1, r0, r1
- str r1, [sp, 0x18]
- lsls r1, r2, 1
- ldr r4, _0807B8D8
- adds r0, r4
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- str r1, [sp, 0x14]
- ldr r3, _0807B8DC
- str r3, [sp, 0x20]
- movs r4, 0
- str r4, [sp, 0x1C]
- ldr r0, [sp, 0xC]
- movs r1, 0x4
- ldrsh r3, [r0, r1]
- movs r2, 0x4
- ldrsh r0, [r7, r2]
- subs r2, r3, r0
- cmp r2, 0
- bge _0807B7EA
- negs r2, r2
-_0807B7EA:
- ldr r4, [sp, 0xC]
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r4, 0x6
- ldrsh r0, [r7, r4]
- subs r1, r0
- mov r8, r1
- cmp r1, 0
- bge _0807B802
- mov r0, r8
- negs r0, r0
- mov r8, r0
-_0807B802:
- cmp r8, r2
- bge _0807B808
- mov r8, r2
-_0807B808:
- movs r1, 0
- mov r9, r1
- ldr r2, [sp, 0x10]
- adds r2, 0x8A
- str r2, [sp, 0x2C]
- ldr r4, [sp, 0x1C]
- ldr r0, [sp, 0x14]
- cmp r4, r0
- bge _0807B8AA
- mov r10, r3
- ldr r6, [sp, 0x18]
-_0807B81E:
- movs r1, 0
- ldrsh r3, [r6, r1]
- mov r2, r10
- subs r0, r2, r3
- cmp r0, 0
- bge _0807B82C
- negs r0, r0
-_0807B82C:
- ldr r4, [sp, 0xC]
- movs r1, 0x6
- ldrsh r4, [r4, r1]
- mov r12, r4
- movs r4, 0x2
- ldrsh r2, [r6, r4]
- mov r4, r12
- subs r1, r4, r2
- cmp r1, 0
- bge _0807B842
- negs r1, r1
-_0807B842:
- cmp r1, r0
- bge _0807B848
- adds r1, r0, 0
-_0807B848:
- movs r0, 0x4
- ldrsh r4, [r7, r0]
- subs r0, r3, r4
- movs r3, 0x6
- ldrsh r5, [r7, r3]
- subs r3, r2, r5
- movs r2, 0x1
- negs r2, r2
- cmp r0, r2
- bge _0807B85E
- adds r0, r2, 0
-_0807B85E:
- cmp r3, r2
- bge _0807B864
- adds r3, r2, 0
-_0807B864:
- cmp r0, 0x1
- ble _0807B86A
- movs r0, 0x1
-_0807B86A:
- cmp r3, 0x1
- ble _0807B870
- movs r3, 0x1
-_0807B870:
- adds r0, r4, r0
- mov r4, r10
- subs r2, r4, r0
- cmp r2, 0
- bge _0807B87C
- negs r2, r2
-_0807B87C:
- adds r0, r5, r3
- mov r3, r12
- subs r0, r3, r0
- cmp r0, 0
- bge _0807B888
- negs r0, r0
-_0807B888:
- cmp r0, r2
- bge _0807B88E
- adds r0, r2, 0
-_0807B88E:
- cmp r0, r8
- blt _0807B89E
- ldr r4, [sp, 0x20]
- cmp r4, r1
- bge _0807B89E
- mov r0, r9
- str r0, [sp, 0x1C]
- str r1, [sp, 0x20]
-_0807B89E:
- adds r6, 0x4
- movs r1, 0x1
- add r9, r1
- ldr r2, [sp, 0x14]
- cmp r9, r2
- blt _0807B81E
-_0807B8AA:
- ldr r3, [sp, 0x20]
- cmp r3, 0
- blt _0807B8E0
- movs r0, 0x5
- ldr r4, [sp, 0x24]
- strb r0, [r4]
- ldr r1, [sp, 0x1C]
- lsls r0, r1, 2
- ldr r2, [sp, 0x18]
- adds r0, r2
- ldrh r1, [r0]
- ldr r3, [sp, 0x28]
- strh r1, [r3]
- ldrh r0, [r0, 0x2]
- ldr r4, [sp, 0x2C]
- strh r0, [r4]
- movs r0, 0x1
- b _0807B910
- .align 2, 0
-_0807B8D0: .4byte gDungeonGlobalData
-_0807B8D4: .4byte 0x00010884
-_0807B8D8: .4byte 0x00010844
-_0807B8DC: .4byte 0xfff0bdc1
-_0807B8E0:
- movs r0, 0x5
- ldr r1, [sp, 0x24]
- strb r0, [r1]
- ldr r2, [sp, 0xC]
- ldrh r1, [r2, 0x4]
- ldrh r0, [r7, 0x4]
- subs r1, r0
- subs r0, r1
- ldr r3, [sp, 0x28]
- strh r0, [r3]
- ldrh r0, [r2, 0x6]
- ldrh r1, [r7, 0x6]
- subs r0, r1
- subs r1, r0
- ldr r0, [sp, 0x10]
- adds r0, 0x8A
- strh r1, [r0]
- movs r0, 0x1
- b _0807B910
-_0807B906:
- adds r0, r7, 0
- bl Explore
- lsls r0, 24
- lsrs r0, 24
-_0807B910:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AvoidEnemies
-
- thumb_func_start Explore
-Explore:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- adds r6, r0, 0
- ldr r7, [r6, 0x70]
- bl GetEntityRoomIndex
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xFF
- bne _0807B9DC
- movs r0, 0
- str r0, [sp, 0x4]
- adds r4, r7, 0
- adds r4, 0x46
- ldrb r0, [r4]
- adds r0, 0x4
- mov r8, r0
- movs r0, 0x7
- mov r1, r8
- ands r1, r0
- mov r8, r1
- adds r0, r6, 0
- bl IsAtJunction
- lsls r0, 24
- mov r9, r4
- cmp r0, 0
- beq _0807B96C
- movs r0, 0x8
- bl DungeonRandomCapped
- strb r0, [r4]
- movs r2, 0x1
- str r2, [sp, 0x4]
-_0807B96C:
- movs r3, 0
- movs r4, 0x78
- adds r4, r7
- mov r10, r4
- adds r0, r7, 0
- adds r0, 0x88
- str r0, [sp, 0x8]
- adds r7, 0x8A
- ldr r5, _0807B9D4
-_0807B97E:
- mov r1, r9
- ldrb r0, [r1]
- ldr r1, [r5]
- adds r4, r0, r1
- movs r0, 0x7
- ands r4, r0
- ldr r2, [sp, 0x4]
- cmp r2, 0
- beq _0807B994
- cmp r4, r8
- beq _0807B9AA
-_0807B994:
- adds r0, r6, 0
- adds r1, r4, 0
- mov r2, sp
- str r3, [sp, 0xC]
- bl CanMoveForward
- lsls r0, 24
- ldr r3, [sp, 0xC]
- cmp r0, 0
- beq _0807B9AA
- b _0807BB42
-_0807B9AA:
- adds r5, 0x4
- adds r3, 0x1
- cmp r3, 0x7
- ble _0807B97E
- movs r0, 0x8
- bl DungeonRandomCapped
- movs r1, 0x6
- mov r3, r10
- strb r1, [r3]
- ldr r1, _0807B9D8
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0]
- ldrh r4, [r6, 0x4]
- adds r1, r4
- ldr r2, [sp, 0x8]
- strh r1, [r2]
- ldrh r0, [r0, 0x2]
- b _0807BB5A
- .align 2, 0
-_0807B9D4: .4byte gFaceDirectionIncrements
-_0807B9D8: .4byte gAdjacentTileOffsets
-_0807B9DC:
- ldr r0, _0807BA30
- ldr r2, [r0]
- lsls r1, r3, 1
- ldr r4, _0807BA34
- adds r0, r2, r4
- adds r0, r1
- movs r4, 0
- ldrsh r1, [r0, r4]
- mov r8, r1
- lsls r0, r3, 7
- ldr r1, _0807BA38
- adds r0, r1
- adds r2, r0
- mov r9, r2
- movs r2, 0x8A
- lsls r2, 1
- adds r0, r7, r2
- ldr r0, [r0]
- cmp r0, 0
- beq _0807BA40
- movs r0, 0x8
- bl DungeonRandomCapped
- adds r2, r7, 0
- adds r2, 0x78
- movs r1, 0x6
- strb r1, [r2]
- ldr r1, _0807BA3C
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0]
- ldrh r3, [r6, 0x4]
- adds r1, r3
- adds r2, 0x10
- strh r1, [r2]
- ldrh r0, [r0, 0x2]
- ldrh r6, [r6, 0x6]
- adds r0, r6
- adds r1, r7, 0
- adds r1, 0x8A
- strh r0, [r1]
- b _0807BB60
- .align 2, 0
-_0807BA30: .4byte gDungeonGlobalData
-_0807BA34: .4byte 0x00010844
-_0807BA38: .4byte 0x00010884
-_0807BA3C: .4byte gAdjacentTileOffsets
-_0807BA40:
- adds r0, r7, 0
- adds r0, 0x78
- ldrb r1, [r0]
- mov r10, r0
- cmp r1, 0x4
- beq _0807BAA2
- mov r4, r8
- cmp r4, 0
- bne _0807BA84
- movs r0, 0x8
- bl DungeonRandomCapped
- adds r4, r0, 0
- movs r0, 0x6
- mov r1, r10
- strb r0, [r1]
- ldr r0, _0807BA80
- lsls r2, r4, 2
- adds r2, r0
- ldrh r0, [r2]
- ldrh r3, [r6, 0x4]
- adds r0, r3
- adds r1, r7, 0
- adds r1, 0x88
- strh r0, [r1]
- ldrh r0, [r2, 0x2]
- ldrh r6, [r6, 0x6]
- adds r0, r6
- adds r1, 0x2
- strh r0, [r1]
- b _0807BB60
- .align 2, 0
-_0807BA80: .4byte gAdjacentTileOffsets
-_0807BA84:
- movs r5, 0
-_0807BA86:
- mov r0, r8
- bl DungeonRandomCapped
- adds r4, r0, 0
- ldr r0, [r6, 0x4]
- lsls r1, r4, 2
- mov r4, r9
- adds r2, r1, r4
- ldr r1, [r2]
- cmp r0, r1
- bne _0807BB18
- adds r5, 0x1
- cmp r5, 0x9
- ble _0807BA86
-_0807BAA2:
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- bl GetMapTile_1
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0807BB60
- movs r0, 0x8
- bl DungeonRandomCapped
- adds r4, r0, 0
- movs r3, 0
- mov r9, r3
-_0807BAC4:
- movs r0, 0x7
- ands r4, r0
- movs r0, 0x4
- ldrsh r2, [r6, r0]
- ldr r0, _0807BB14
- lsls r1, r4, 2
- adds r1, r0
- movs r3, 0
- ldrsh r0, [r1, r3]
- adds r2, r0
- mov r8, r2
- movs r0, 0x6
- ldrsh r2, [r6, r0]
- movs r3, 0x2
- ldrsh r0, [r1, r3]
- adds r5, r2, r0
- mov r0, r8
- adds r1, r5, 0
- bl GetMapTile_1
- ldrb r0, [r0, 0x9]
- cmp r0, 0xFF
- bne _0807BB04
- adds r0, r6, 0
- adds r1, r4, 0
- mov r2, sp
- adds r2, 0x1
- bl CanMoveForward
- lsls r0, 24
- cmp r0, 0
- bne _0807BB2E
-_0807BB04:
- movs r0, 0x1
- add r9, r0
- adds r4, 0x1
- mov r1, r9
- cmp r1, 0x7
- ble _0807BAC4
- b _0807BB60
- .align 2, 0
-_0807BB14: .4byte gAdjacentTileOffsets
-_0807BB18:
- movs r0, 0x4
- mov r3, r10
- strb r0, [r3]
- ldrh r1, [r2]
- adds r0, r7, 0
- adds r0, 0x88
- strh r1, [r0]
- ldrh r1, [r2, 0x2]
- adds r0, 0x2
- strh r1, [r0]
- b _0807BB60
-_0807BB2E:
- movs r0, 0x3
- mov r4, r10
- strb r0, [r4]
- adds r0, r7, 0
- adds r0, 0x88
- mov r1, r8
- strh r1, [r0]
- adds r0, 0x2
- strh r5, [r0]
- b _0807BB60
-_0807BB42:
- movs r0, 0x3
- mov r2, r10
- strb r0, [r2]
- ldr r0, _0807BB74
- lsls r1, r4, 2
- adds r1, r0
- ldrh r0, [r1]
- ldrh r3, [r6, 0x4]
- adds r0, r3
- ldr r4, [sp, 0x8]
- strh r0, [r4]
- ldrh r0, [r1, 0x2]
-_0807BB5A:
- ldrh r6, [r6, 0x6]
- adds r0, r6
- strh r0, [r7]
-_0807BB60:
- movs r0, 0x1
- 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
-_0807BB74: .4byte gAdjacentTileOffsets
- thumb_func_end Explore
-
- thumb_func_start sub_807BB78
-sub_807BB78:
- ldr r3, [r0, 0x70]
- adds r1, r3, 0
- adds r1, 0x78
- movs r2, 0
- strb r2, [r1]
- adds r1, 0x10
- ldr r0, [r0, 0x4]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x80
- str r2, [r0]
- subs r0, 0x4
- strh r2, [r0]
- bx lr
- thumb_func_end sub_807BB78
-
.align 2, 0 \ No newline at end of file
diff --git a/asm/code_8077274.s b/asm/code_8077274.s
new file mode 100644
index 0000000..3837f69
--- /dev/null
+++ b/asm/code_8077274.s
@@ -0,0 +1,9186 @@
+ #include "asm/constants/gba_constants.inc"
+ #include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8077274
+sub_8077274:
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080772B4
+ ldr r0, [r5, 0x70]
+ adds r4, r0, 0
+ ldr r0, _080772BC
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ movs r0, 0x28
+ ldrsh r1, [r4, r0]
+ adds r1, 0x1
+ cmp r1, 0x1
+ ble _0807729E
+ movs r1, 0x2
+_0807729E:
+ movs r2, 0x28
+ ldrsh r0, [r4, r2]
+ cmp r0, r1
+ beq _080772AE
+ strh r1, [r4, 0x28]
+ adds r0, r5, 0
+ bl sub_8041C58
+_080772AE:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_080772B4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080772BC: .4byte gAvailablePokemonNames
+ thumb_func_end sub_8077274
+
+ thumb_func_start sub_80772C0
+sub_80772C0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r9, r0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ adds r7, r3, 0
+ ldr r0, [sp, 0x20]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _080772E6
+ b _08077422
+_080772E6:
+ cmp r4, 0
+ beq _08077300
+ ldr r0, _080772F8
+ ldr r1, _080772FC
+ ldr r1, [r1]
+ bl strcpy
+ b _0807730A
+ .align 2, 0
+_080772F8: .4byte gUnknown_202DE58
+_080772FC: .4byte gUnknown_80FC0C8
+_08077300:
+ ldr r0, _08077340
+ ldr r1, _08077344
+ ldr r1, [r1]
+ bl strcpy
+_0807730A:
+ cmp r7, 0xFF
+ bgt _08077320
+ mov r0, r9
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_8071728
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077320
+ b _08077422
+_08077320:
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077350
+ cmp r7, 0xFF
+ bgt _08077350
+ ldr r0, _08077348
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0807734C
+ b _08077376
+ .align 2, 0
+_08077340: .4byte gUnknown_202DE58
+_08077344: .4byte gUnknown_80FC0B8
+_08077348: .4byte gAvailablePokemonNames
+_0807734C: .4byte gUnknown_80FD550
+_08077350:
+ adds r0, r5, 0
+ movs r1, 0x9
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807738C
+ cmp r4, 0
+ bne _0807738C
+ cmp r7, 0xFF
+ bgt _0807738C
+ cmp r6, 0
+ beq _08077422
+ ldr r0, _08077384
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08077388
+_08077376:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08077422
+ .align 2, 0
+_08077384: .4byte gAvailablePokemonNames
+_08077388: .4byte gUnknown_80FCA60
+_0807738C:
+ ldr r0, [r5, 0x70]
+ mov r8, r0
+ ldr r0, _080773B8
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ lsls r1, r4, 2
+ mov r0, r8
+ adds r0, 0x2C
+ adds r0, r1
+ ldr r0, [r0]
+ mov r10, r0
+ adds r6, r1, 0
+ cmp r7, 0xFF
+ bgt _080773BC
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8041FD8
+ b _080773C4
+ .align 2, 0
+_080773B8: .4byte gAvailablePokemonNames
+_080773BC:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8041FB4
+_080773C4:
+ mov r0, r8
+ adds r0, 0x2C
+ adds r4, r0, r6
+ ldr r0, [r4]
+ adds r1, r7, 0
+ bl sub_8009DA4
+ str r0, [r4]
+ cmp r0, 0x1
+ bgt _080773DC
+ movs r0, 0x2
+ str r0, [r4]
+_080773DC:
+ ldr r0, [r4]
+ ldr r1, _080773F0
+ cmp r0, r1
+ ble _080773E6
+ str r1, [r4]
+_080773E6:
+ ldr r0, [r4]
+ cmp r10, r0
+ ble _080773F8
+ ldr r0, _080773F4
+ b _080773FE
+ .align 2, 0
+_080773F0: .4byte 0x000063fd
+_080773F4: .4byte gUnknown_80FC11C
+_080773F8:
+ cmp r10, r0
+ bge _08077410
+ ldr r0, _0807740C
+_080773FE:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _0807741C
+ .align 2, 0
+_0807740C: .4byte gUnknown_80FC118
+_08077410:
+ ldr r0, _08077430
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+_0807741C:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077422:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077430: .4byte gUnknown_80FC184
+ thumb_func_end sub_80772C0
+
+ thumb_func_start sub_8077434
+sub_8077434:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r9, r0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ mov r8, r3
+ ldr r0, [sp, 0x20]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807752E
+ cmp r4, 0
+ beq _08077470
+ ldr r0, _08077468
+ ldr r1, _0807746C
+ ldr r1, [r1]
+ bl strcpy
+ b _0807747A
+ .align 2, 0
+_08077468: .4byte gUnknown_202DE58
+_0807746C: .4byte gUnknown_80FC0AC
+_08077470:
+ ldr r0, _080774BC
+ ldr r1, _080774C0
+ ldr r1, [r1]
+ bl strcpy
+_0807747A:
+ mov r0, r8
+ cmp r0, 0xFF
+ bgt _08077490
+ mov r0, r9
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_8071728
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807752E
+_08077490:
+ ldr r7, [r5, 0x70]
+ ldr r0, _080774C4
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ lsls r1, r4, 2
+ adds r0, r7, 0
+ adds r0, 0x34
+ adds r0, r1
+ ldr r0, [r0]
+ mov r10, r0
+ adds r6, r1, 0
+ mov r0, r8
+ cmp r0, 0xFF
+ bgt _080774C8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_804201C
+ b _080774D0
+ .align 2, 0
+_080774BC: .4byte gUnknown_202DE58
+_080774C0: .4byte gUnknown_80FC09C
+_080774C4: .4byte gAvailablePokemonNames
+_080774C8:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_8041FFC
+_080774D0:
+ adds r0, r7, 0
+ adds r0, 0x34
+ adds r4, r0, r6
+ ldr r0, [r4]
+ mov r1, r8
+ bl sub_8009DA4
+ str r0, [r4]
+ cmp r0, 0x1
+ bgt _080774E8
+ movs r0, 0x2
+ str r0, [r4]
+_080774E8:
+ ldr r0, [r4]
+ ldr r1, _080774FC
+ cmp r0, r1
+ ble _080774F2
+ str r1, [r4]
+_080774F2:
+ ldr r0, [r4]
+ cmp r10, r0
+ ble _08077504
+ ldr r0, _08077500
+ b _0807750A
+ .align 2, 0
+_080774FC: .4byte 0x000063fd
+_08077500: .4byte gUnknown_80FC114
+_08077504:
+ cmp r10, r0
+ bge _0807751C
+ ldr r0, _08077518
+_0807750A:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08077528
+ .align 2, 0
+_08077518: .4byte gUnknown_80FC0FC
+_0807751C:
+ ldr r0, _0807753C
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+_08077528:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807752E:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807753C: .4byte gUnknown_80FC180
+ thumb_func_end sub_8077434
+
+ thumb_func_start sub_8077540
+sub_8077540:
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080775D2
+ ldr r6, [r4, 0x70]
+ ldr r0, _08077578
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8042040
+ cmp r5, 0
+ beq _08077584
+ ldr r0, _0807757C
+ ldr r1, _08077580
+ ldr r1, [r1]
+ bl strcpy
+ b _0807758E
+ .align 2, 0
+_08077578: .4byte gAvailablePokemonNames
+_0807757C: .4byte gUnknown_202DE58
+_08077580: .4byte gUnknown_80FC090
+_08077584:
+ ldr r0, _080775B4
+ ldr r1, _080775B8
+ ldr r1, [r1]
+ bl strcpy
+_0807758E:
+ lsls r0, r5, 1
+ adds r1, r6, 0
+ adds r1, 0x24
+ adds r1, r0
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x13
+ bgt _080775C0
+ adds r0, r2, 0x1
+ strh r0, [r1]
+ ldr r0, _080775BC
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080775CC
+ .align 2, 0
+_080775B4: .4byte gUnknown_202DE58
+_080775B8: .4byte gUnknown_80FC084
+_080775BC: .4byte gUnknown_80FC1C4
+_080775C0:
+ ldr r0, _080775D8
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080775CC:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080775D2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080775D8: .4byte gUnknown_80FC218
+ thumb_func_end sub_8077540
+
+ thumb_func_start sub_80775DC
+sub_80775DC:
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r5, r1, 0
+ adds r6, r2, 0
+ lsls r3, 24
+ lsrs r4, r3, 24
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080776B6
+ cmp r6, 0
+ beq _0807760C
+ ldr r0, _08077604
+ ldr r1, _08077608
+ ldr r1, [r1]
+ bl strcpy
+ b _08077616
+ .align 2, 0
+_08077604: .4byte gUnknown_202DE58
+_08077608: .4byte gUnknown_80FC090
+_0807760C:
+ ldr r0, _08077654
+ ldr r1, _08077658
+ ldr r1, [r1]
+ bl strcpy
+_08077616:
+ adds r0, r7, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_8071728
+ lsls r0, 24
+ cmp r0, 0
+ bne _080776B6
+ adds r0, r5, 0
+ movs r1, 0x1E
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077664
+ cmp r6, 0
+ bne _08077664
+ cmp r4, 0
+ beq _080776B6
+ ldr r0, _0807765C
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08077660
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080776B6
+ .align 2, 0
+_08077654: .4byte gUnknown_202DE58
+_08077658: .4byte gUnknown_80FC084
+_0807765C: .4byte gAvailablePokemonNames
+_08077660: .4byte gUnknown_80FCA64
+_08077664:
+ ldr r4, [r5, 0x70]
+ ldr r0, _0807769C
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_8042060
+ lsls r0, r6, 1
+ adds r4, 0x24
+ adds r1, r4, r0
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ beq _080776A4
+ subs r0, r2, 0x1
+ strh r0, [r1]
+ ldr r0, _080776A0
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080776B0
+ .align 2, 0
+_0807769C: .4byte gAvailablePokemonNames
+_080776A0: .4byte gUnknown_80FC1A4
+_080776A4:
+ ldr r0, _080776BC
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_080776B0:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_080776B6:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080776BC: .4byte gUnknown_80FC1F0
+ thumb_func_end sub_80775DC
+
+ thumb_func_start sub_80776C0
+sub_80776C0:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r6, r2, 24
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077776
+ adds r0, r5, 0
+ adds r1, r4, 0
+ adds r2, r6, 0
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077776
+ adds r0, r4, 0
+ movs r1, 0x1F
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077718
+ ldr r0, _08077710
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ cmp r6, 0
+ beq _08077776
+ ldr r0, _08077714
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077776
+ .align 2, 0
+_08077710: .4byte gAvailablePokemonNames
+_08077714: .4byte gUnknown_80FCC18
+_08077718:
+ ldr r6, [r4, 0x70]
+ ldr r0, _08077758
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r6, 0
+ adds r1, 0xBC
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _08077764
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _0807775C
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xBD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_80420A0
+ ldr r0, _08077760
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077770
+ .align 2, 0
+_08077758: .4byte gAvailablePokemonNames
+_0807775C: .4byte gUnknown_80F4E3C
+_08077760: .4byte gUnknown_80FB2E0
+_08077764:
+ ldr r0, _0807777C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08077770:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077776:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807777C: .4byte gUnknown_80FB300
+ thumb_func_end sub_80776C0
+
+ thumb_func_start sub_8077780
+sub_8077780:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r7, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _080777A2
+ b _080778F0
+_080777A2:
+ adds r0, r7, 0
+ adds r1, r5, 0
+ mov r2, r10
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080777B4
+ b _080778F0
+_080777B4:
+ adds r0, r5, 0
+ movs r1, 0x16
+ bl HasAbility
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _080777EC
+ ldr r0, _080777E4
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r0, r10
+ cmp r0, 0
+ bne _080777D6
+ b _080778F0
+_080777D6:
+ ldr r0, _080777E8
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080778F0
+ .align 2, 0
+_080777E4: .4byte gAvailablePokemonNames
+_080777E8: .4byte gUnknown_80FCBF8
+_080777EC:
+ movs r6, 0x1
+ ldr r1, [r5, 0x70]
+ mov r8, r1
+ ldr r0, _08077844
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r1, r8
+ adds r1, 0xAC
+ ldrb r0, [r1]
+ cmp r0, 0x4
+ beq _08077850
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r1, _08077848
+ adds r0, r5, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ mov r1, r8
+ adds r1, 0xAD
+ strb r0, [r1]
+ mov r0, r8
+ adds r0, 0xAE
+ strb r4, [r0]
+ adds r0, 0x1
+ strb r4, [r0]
+ movs r6, 0
+ ldr r0, _0807784C
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ adds r0, r5, 0
+ bl sub_8041C1C
+ adds r0, r5, 0
+ bl GetMovementSpeed
+ b _0807785C
+ .align 2, 0
+_08077844: .4byte gAvailablePokemonNames
+_08077848: .4byte gUnknown_80F4E50
+_0807784C: .4byte gUnknown_80FB2AC
+_08077850:
+ ldr r0, _08077900
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_0807785C:
+ adds r0, r5, 0
+ movs r1, 0x19
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _080778EA
+ cmp r6, 0
+ bne _080778EA
+ movs r3, 0
+ mov r9, r3
+ movs r6, 0
+_08077874:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ ldr r1, _08077904
+ lsls r2, r6, 2
+ adds r2, r1
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r3, 0x6
+ ldrsh r1, [r5, r3]
+ movs r3, 0x2
+ ldrsh r2, [r2, r3]
+ adds r1, r2
+ bl GetMapTile_1
+ ldr r4, [r0, 0x10]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080778E4
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _080778E4
+ mov r0, r9
+ cmp r0, 0
+ bne _080778CA
+ movs r1, 0x1
+ mov r9, r1
+ ldr r0, _08077908
+ mov r1, r8
+ movs r2, 0
+ bl SetMessageArgument_2
+ ldr r0, _0807790C
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_080778CA:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807167C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080778E4
+ adds r0, r7, 0
+ adds r1, r4, 0
+ mov r2, r10
+ bl sub_8077780
+_080778E4:
+ adds r6, 0x1
+ cmp r6, 0x7
+ ble _08077874
+_080778EA:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_080778F0:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077900: .4byte gUnknown_80FB2CC
+_08077904: .4byte gAdjacentTileOffsets
+_08077908: .4byte gAvailablePokemonNames
+_0807790C: .4byte gUnknown_80FF01C
+ thumb_func_end sub_8077780
+
+ thumb_func_start sub_8077910
+sub_8077910:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r8, r0
+ adds r5, r1, 0
+ adds r4, r2, 0
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080779DE
+ cmp r4, 0
+ bne _08077940
+ ldr r1, _08077964
+ adds r0, r5, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r4, r0, 0x1
+_08077940:
+ ldr r6, [r5, 0x70]
+ ldr r0, _08077968
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ bl GetMovementSpeed
+ adds r7, r0, 0
+ cmp r7, 0x4
+ bne _08077970
+ mov r0, r9
+ cmp r0, 0
+ beq _080779D8
+ ldr r0, _0807796C
+ b _0807799E
+ .align 2, 0
+_08077964: .4byte gUnknown_80F4E40
+_08077968: .4byte gAvailablePokemonNames
+_0807796C: .4byte gUnknown_80FC2B8
+_08077970:
+ movs r2, 0
+ movs r0, 0x84
+ lsls r0, 1
+ adds r1, r6, r0
+ b _08077988
+_0807797A:
+ adds r2, 0x1
+ cmp r2, 0x4
+ bgt _08077990
+ movs r1, 0x84
+ lsls r1, 1
+ adds r0, r6, r1
+ adds r1, r0, r2
+_08077988:
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0807797A
+ strb r4, [r1]
+_08077990:
+ adds r0, r5, 0
+ bl GetMovementSpeed
+ adds r4, r0, 0
+ cmp r7, r4
+ bne _080779B0
+ ldr r0, _080779AC
+_0807799E:
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080779D8
+ .align 2, 0
+_080779AC: .4byte gUnknown_80FC298
+_080779B0:
+ adds r0, r5, 0
+ bl sub_8041CB8
+ ldr r1, _080779EC
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_80522F4
+ adds r1, r6, 0
+ adds r1, 0xF8
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r1, 0xA4
+ lsls r1, 1
+ adds r0, r6, r1
+ strb r2, [r0]
+_080779D8:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_080779DE:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080779EC: .4byte gUnknown_80FA124
+ thumb_func_end sub_8077910
+
+ thumb_func_start sub_80779F0
+sub_80779F0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r10, r0
+ adds r5, r1, 0
+ mov r8, r2
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077AD0
+ mov r0, r10
+ adds r1, r5, 0
+ mov r2, r9
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077AD0
+ ldr r7, [r5, 0x70]
+ ldr r0, _08077A48
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ bl GetMovementSpeed
+ str r0, [sp]
+ cmp r0, 0
+ bne _08077A50
+ mov r0, r9
+ cmp r0, 0
+ beq _08077ACA
+ ldr r0, _08077A4C
+ b _08077AA2
+ .align 2, 0
+_08077A48: .4byte gAvailablePokemonNames
+_08077A4C: .4byte gUnknown_80FC2D8
+_08077A50:
+ movs r0, 0
+ cmp r0, r8
+ bge _08077A8C
+_08077A56:
+ movs r1, 0
+ adds r6, r0, 0x1
+_08077A5A:
+ ldr r2, _08077A78
+ adds r0, r7, r2
+ adds r4, r0, r1
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _08077A80
+ adds r0, r5, 0
+ ldr r1, _08077A7C
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ strb r0, [r4]
+ b _08077A86
+ .align 2, 0
+_08077A78: .4byte 0x0000010d
+_08077A7C: .4byte gUnknown_80F4E48
+_08077A80:
+ adds r1, 0x1
+ cmp r1, 0x4
+ ble _08077A5A
+_08077A86:
+ adds r0, r6, 0
+ cmp r0, r8
+ blt _08077A56
+_08077A8C:
+ adds r0, r5, 0
+ bl GetMovementSpeed
+ adds r4, r0, 0
+ ldr r0, [sp]
+ cmp r0, r4
+ bne _08077AB4
+ mov r2, r9
+ cmp r2, 0
+ beq _08077ACA
+ ldr r0, _08077AB0
+_08077AA2:
+ ldr r2, [r0]
+ mov r0, r10
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08077ACA
+ .align 2, 0
+_08077AB0: .4byte gUnknown_80FC298
+_08077AB4:
+ adds r0, r5, 0
+ bl sub_8041CCC
+ ldr r0, _08077AE0
+ lsls r1, r4, 2
+ adds r1, r0
+ ldr r2, [r1]
+ mov r0, r10
+ adds r1, r5, 0
+ bl sub_80522F4
+_08077ACA:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077AD0:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077AE0: .4byte gUnknown_80FA124
+ thumb_func_end sub_80779F0
+
+ thumb_func_start sub_8077AE4
+sub_8077AE4:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r7, r5, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077BAA
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077BAA
+ ldr r0, _08077B2C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r4, 0
+ movs r1, 0x12
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077B34
+ cmp r5, 0
+ beq _08077BAA
+ ldr r0, _08077B30
+ b _08077B48
+ .align 2, 0
+_08077B2C: .4byte gAvailablePokemonNames
+_08077B30: .4byte gUnknown_80FD500
+_08077B34:
+ adds r0, r4, 0
+ movs r1, 0x40
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077B58
+ cmp r7, 0
+ beq _08077BAA
+ ldr r0, _08077B54
+_08077B48:
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077BAA
+ .align 2, 0
+_08077B54: .4byte gUnknown_80FCDB4
+_08077B58:
+ adds r0, r4, 0
+ bl sub_8041BE8
+ ldr r5, [r4, 0x70]
+ adds r1, r5, 0
+ adds r1, 0xBC
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ beq _08077B98
+ movs r0, 0x2
+ strb r0, [r1]
+ ldr r1, _08077B90
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xBD
+ strb r0, [r1]
+ ldr r0, _08077B94
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077BA4
+ .align 2, 0
+_08077B90: .4byte gUnknown_80F4E4C
+_08077B94: .4byte gUnknown_80FB25C
+_08077B98:
+ ldr r0, _08077BB0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08077BA4:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077BAA:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077BB0: .4byte gUnknown_80FB27C
+ thumb_func_end sub_8077AE4
+
+ thumb_func_start sub_8077BB4
+sub_8077BB4:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077C3A
+ adds r0, r6, 0
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077C3A
+ ldr r5, [r4, 0x70]
+ ldr r0, _08077C1C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xBC
+ ldrb r0, [r1]
+ cmp r0, 0x4
+ beq _08077C28
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r1, _08077C20
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xBD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_8041BF8
+ ldr r0, _08077C24
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077C34
+ .align 2, 0
+_08077C1C: .4byte gAvailablePokemonNames
+_08077C20: .4byte gUnknown_80F4ECC
+_08077C24: .4byte gUnknown_80FB940
+_08077C28:
+ ldr r0, _08077C40
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08077C34:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077C3A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077C40: .4byte gUnknown_80FB960
+ thumb_func_end sub_8077BB4
+
+ thumb_func_start HealTargetHP
+HealTargetHP:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r9, r0
+ adds r5, r1, 0
+ mov r10, r2
+ mov r8, r3
+ ldr r0, [sp, 0x24]
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077C6E
+ b _08077DC8
+_08077C6E:
+ ldr r4, [r5, 0x70]
+ movs r0, 0x10
+ ldrsh r7, [r4, r0]
+ movs r1, 0xE
+ ldrsh r6, [r4, r1]
+ ldrh r2, [r4, 0xE]
+ adds r0, r6, 0
+ ldrh r1, [r4, 0x10]
+ mov r12, r1
+ adds r1, r7, 0
+ cmp r0, r1
+ bne _08077C8C
+ mov r0, r8
+ cmp r0, 0
+ bgt _08077C92
+_08077C8C:
+ mov r3, r10
+ cmp r3, 0
+ bne _08077CD0
+_08077C92:
+ ldrh r1, [r4, 0x10]
+ add r1, r8
+ strh r1, [r4, 0x10]
+ ldrh r0, [r4, 0xE]
+ add r0, r8
+ strh r0, [r4, 0xE]
+ lsls r1, 16
+ asrs r1, 16
+ ldr r0, _08077CCC
+ cmp r1, r0
+ ble _08077CAA
+ strh r0, [r4, 0x10]
+_08077CAA:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r3, 0x10
+ ldrsh r2, [r4, r3]
+ ldrh r1, [r4, 0x10]
+ cmp r0, r2
+ ble _08077CBA
+ strh r1, [r4, 0xE]
+_08077CBA:
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, r2
+ bne _08077CC4
+ adds r6, r0, 0
+_08077CC4:
+ adds r0, r5, 0
+ bl sub_8041C94
+ b _08077CE8
+ .align 2, 0
+_08077CCC: .4byte 0x000003e7
+_08077CD0:
+ mov r3, r10
+ adds r0, r2, r3
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, r1
+ ble _08077CE2
+ mov r0, r12
+ strh r0, [r4, 0xE]
+_08077CE2:
+ adds r0, r5, 0
+ bl sub_8041CA8
+_08077CE8:
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ subs r7, r0, r7
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ subs r6, r0, r6
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+ ldr r0, _08077D1C
+ str r6, [r0]
+ str r7, [r0, 0x4]
+ ldr r0, _08077D20
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ cmp r6, 0
+ bne _08077D28
+ cmp r7, 0
+ bne _08077D28
+ ldr r3, [sp]
+ cmp r3, 0
+ beq _08077DC8
+ ldr r0, _08077D24
+ b _08077D3A
+ .align 2, 0
+_08077D1C: .4byte gUnknown_202DE30
+_08077D20: .4byte gAvailablePokemonNames
+_08077D24: .4byte gUnknown_80FB204
+_08077D28:
+ mov r0, r8
+ cmp r0, 0
+ bne _08077D4C
+ cmp r6, 0
+ bne _08077D4C
+ ldr r1, [sp]
+ cmp r1, 0
+ beq _08077DC8
+ ldr r0, _08077D48
+_08077D3A:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08077DC8
+ .align 2, 0
+_08077D48: .4byte gUnknown_80FB21C
+_08077D4C:
+ movs r2, 0
+ mov r8, r2
+ cmp r7, 0
+ beq _08077D6E
+ adds r0, r5, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077D62
+ mov r8, r7
+_08077D62:
+ ldr r0, _08077DA0
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+_08077D6E:
+ cmp r6, 0
+ beq _08077DB4
+ adds r0, r5, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077D80
+ mov r8, r6
+_08077D80:
+ mov r3, r10
+ cmp r3, 0
+ beq _08077DB4
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08077DA8
+ ldr r0, _08077DA4
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08077DB4
+ .align 2, 0
+_08077DA0: .4byte gUnknown_80FB240
+_08077DA4: .4byte gUnknown_80FB1E0
+_08077DA8:
+ ldr r0, _08077DD8
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_80522F4
+_08077DB4:
+ mov r3, r8
+ cmp r3, 0
+ beq _08077DC8
+ movs r3, 0x1
+ negs r3, r3
+ mov r0, r8
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_803ED30
+_08077DC8:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077DD8: .4byte gUnknown_80FB1C4
+ thumb_func_end HealTargetHP
+
+ thumb_func_start sub_8077DDC
+sub_8077DDC:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077E3C
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ adds r1, 0xF1
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08077E0C
+ ldr r0, _08077E08
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077E3C
+ .align 2, 0
+_08077E08: .4byte gUnknown_80FAEF0
+_08077E0C:
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_75
+ ldr r0, _08077E44
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08077E48
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0
+ bl sub_803F580
+ bl sub_8040A84
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077E3C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077E44: .4byte gAvailablePokemonNames
+_08077E48: .4byte gUnknown_80FAEA0
+ thumb_func_end sub_8077DDC
+
+ thumb_func_start sub_8077E4C
+sub_8077E4C:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077EC0
+ bl sub_8043D10
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077E70
+ ldr r0, _08077E6C
+ b _08077E7E
+ .align 2, 0
+_08077E6C: .4byte gUnknown_80FAF3C
+_08077E70:
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ adds r1, 0xF2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08077E90
+ ldr r0, _08077E8C
+_08077E7E:
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077EC0
+ .align 2, 0
+_08077E8C: .4byte gUnknown_80FAF1C
+_08077E90:
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_76
+ ldr r0, _08077EC8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08077ECC
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0
+ bl sub_803F580
+ bl sub_8040A84
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077EC0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077EC8: .4byte gAvailablePokemonNames
+_08077ECC: .4byte gUnknown_80FAEC8
+ thumb_func_end sub_8077E4C
+
+ thumb_func_start sub_8077ED0
+sub_8077ED0:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08077F30
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ adds r1, 0xF0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08077F00
+ ldr r0, _08077EFC
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08077F30
+ .align 2, 0
+_08077EFC: .4byte gUnknown_80FAFD0
+_08077F00:
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_77
+ ldr r0, _08077F38
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08077F3C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0
+ bl sub_803F580
+ bl sub_8040A84
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08077F30:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08077F38: .4byte gAvailablePokemonNames
+_08077F3C: .4byte gUnknown_80FAFAC
+ thumb_func_end sub_8077ED0
+
+ thumb_func_start sub_8077F40
+sub_8077F40:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r6, r2, 24
+ mov r9, r6
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08077F62
+ b _08078068
+_08077F62:
+ adds r0, r5, 0
+ bl GetEntityType
+ mov r10, r0
+ cmp r0, 0x1
+ beq _08077F70
+ b _08078068
+_08077F70:
+ ldr r7, [r4, 0x70]
+ cmp r5, r4
+ bne _08077F88
+ cmp r6, 0
+ beq _08078068
+ ldr r0, _08077F84
+ ldr r2, [r0]
+ adds r0, r4, 0
+ b _08078022
+ .align 2, 0
+_08077F84: .4byte gPtrCantLeechSeedSelfMessage
+_08077F88:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, r9
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08078068
+ ldr r0, _08077FC0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl HasType
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ cmp r0, 0
+ beq _08077FC8
+ mov r0, r9
+ cmp r0, 0
+ beq _08078068
+ ldr r0, _08077FC4
+ b _0807801E
+ .align 2, 0
+_08077FC0: .4byte gAvailablePokemonNames
+_08077FC4: .4byte gPtrCantLeechSeedMonMessage
+_08077FC8:
+ adds r6, r7, 0
+ adds r6, 0xD0
+ ldrb r0, [r6]
+ cmp r0, 0x1
+ beq _0807801C
+ cmp r0, 0x2
+ bne _08077FE2
+ ldr r0, _08078014
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08077FE2:
+ mov r1, r10
+ strb r1, [r6]
+ ldr r1, _08078018
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xD9
+ strb r0, [r1]
+ adds r0, r7, 0
+ adds r0, 0xDA
+ mov r6, r8
+ strb r6, [r0]
+ adds r0, r4, 0
+ bl nullsub_78
+ adds r1, r7, 0
+ adds r1, 0xD8
+ movs r0, 0xFF
+ strb r0, [r1]
+ movs r2, 0
+ adds r3, r1, 0
+ b _08078030
+ .align 2, 0
+_08078014: .4byte gUnknown_80FAA8C
+_08078018: .4byte gUnknown_80F4EB0
+_0807801C:
+ ldr r0, _0807802C
+_0807801E:
+ ldr r2, [r0]
+ adds r0, r5, 0
+_08078022:
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078068
+ .align 2, 0
+_0807802C: .4byte gUnknown_80FAE7C
+_08078030:
+ ldr r0, _08078078
+ ldr r0, [r0]
+ lsls r1, r2, 2
+ ldr r6, _0807807C
+ adds r0, r6
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r5, r0
+ bne _08078050
+ strb r2, [r3]
+ ldr r0, [r5, 0x70]
+ adds r1, r7, 0
+ adds r1, 0xD4
+ adds r0, 0x98
+ ldr r0, [r0]
+ str r0, [r1]
+_08078050:
+ adds r2, 0x1
+ cmp r2, 0x13
+ ble _08078030
+ ldr r0, _08078080
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078068:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078078: .4byte gDungeonGlobalData
+_0807807C: .4byte 0x000135cc
+_08078080: .4byte gUnknown_80FAE58
+ thumb_func_end sub_8077F40
+
+ thumb_func_start sub_8078084
+sub_8078084:
+ push {r4-r6,lr}
+ ldr r6, [r0, 0x70]
+ movs r5, 0
+_0807808A:
+ ldr r0, _080780DC
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _080780E0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080780D0
+ ldr r1, [r4, 0x70]
+ adds r3, r1, 0
+ adds r3, 0xD0
+ ldrb r0, [r3]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080780D0
+ adds r0, r1, 0
+ adds r0, 0xD4
+ adds r1, r6, 0
+ adds r1, 0x98
+ ldr r2, [r0]
+ ldr r0, [r1]
+ cmp r2, r0
+ bne _080780D0
+ movs r0, 0
+ strb r0, [r3]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080780D0:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0807808A
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080780DC: .4byte gDungeonGlobalData
+_080780E0: .4byte 0x000135cc
+ thumb_func_end sub_8078084
+
+ thumb_func_start sub_80780E4
+sub_80780E4:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080781C4
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _080781C4
+ adds r0, r5, 0
+ bl GetEntityType
+ cmp r0, 0x1
+ bne _080781C4
+ ldr r6, [r4, 0x70]
+ ldr r0, _0807816C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r7, r6, 0
+ adds r7, 0xD0
+ ldrb r0, [r7]
+ cmp r0, 0x2
+ beq _08078178
+ cmp r0, 0x1
+ bne _08078134
+ ldr r0, _08078170
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_08078134:
+ movs r0, 0
+ mov r8, r0
+ movs r0, 0x2
+ strb r0, [r7]
+ ldr r1, _08078174
+ adds r0, r5, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xD9
+ strb r0, [r1]
+ adds r0, r6, 0
+ adds r0, 0xDA
+ mov r1, r8
+ strb r1, [r0]
+ adds r0, r5, 0
+ bl nullsub_74
+ adds r1, r6, 0
+ adds r1, 0xD8
+ movs r0, 0xFF
+ strb r0, [r1]
+ movs r2, 0
+ adds r3, r1, 0
+ b _0807818C
+ .align 2, 0
+_0807816C: .4byte gAvailablePokemonNames
+_08078170: .4byte gUnknown_80FA79C
+_08078174: .4byte gUnknown_80F4EF0
+_08078178:
+ ldr r0, _08078188
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080781C4
+ .align 2, 0
+_08078188: .4byte gUnknown_80FBB78
+_0807818C:
+ ldr r0, _080781D0
+ ldr r0, [r0]
+ lsls r1, r2, 2
+ ldr r7, _080781D4
+ adds r0, r7
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r5, r0
+ bne _080781AC
+ strb r2, [r3]
+ ldr r0, [r5, 0x70]
+ adds r1, r6, 0
+ adds r1, 0xD4
+ adds r0, 0x98
+ ldr r0, [r0]
+ str r0, [r1]
+_080781AC:
+ adds r2, 0x1
+ cmp r2, 0x13
+ ble _0807818C
+ ldr r0, _080781D8
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_080781C4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080781D0: .4byte gDungeonGlobalData
+_080781D4: .4byte 0x000135cc
+_080781D8: .4byte gUnknown_80FBB4C
+ thumb_func_end sub_80780E4
+
+ thumb_func_start sub_80781DC
+sub_80781DC:
+ push {r4-r7,lr}
+ adds r7, r0, 0
+ adds r4, r1, 0
+ adds r6, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078242
+ ldr r5, [r4, 0x70]
+ ldr r0, _08078228
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xDC
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _08078230
+ movs r0, 0x1
+ strb r0, [r1]
+ adds r1, r6, 0x1
+ adds r0, r5, 0
+ adds r0, 0xDD
+ strb r1, [r0]
+ adds r0, r4, 0
+ bl sub_8041CDC
+ ldr r0, _0807822C
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _0807823C
+ .align 2, 0
+_08078228: .4byte gAvailablePokemonNames
+_0807822C: .4byte gUnknown_80FB73C
+_08078230:
+ ldr r0, _08078248
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807823C:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078242:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078248: .4byte gUnknown_80FB764
+ thumb_func_end sub_80781DC
+
+ thumb_func_start sub_807824C
+sub_807824C:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r7, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080782C2
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080782C2
+ ldr r5, [r4, 0x70]
+ ldr r0, _080782A8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xDC
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ beq _080782B0
+ movs r0, 0x2
+ strb r0, [r1]
+ adds r1, r7, 0x1
+ adds r0, r5, 0
+ adds r0, 0xDD
+ strb r1, [r0]
+ adds r0, r4, 0
+ bl sub_8041CEC
+ ldr r0, _080782AC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080782BC
+ .align 2, 0
+_080782A8: .4byte gAvailablePokemonNames
+_080782AC: .4byte gUnknown_80FB780
+_080782B0:
+ ldr r0, _080782C8
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080782BC:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080782C2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080782C8: .4byte gUnknown_80FB7A0
+ thumb_func_end sub_807824C
+
+ thumb_func_start sub_80782CC
+sub_80782CC:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807833E
+ ldr r5, [r4, 0x70]
+ ldr r0, _08078320
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xDC
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ beq _0807832C
+ movs r0, 0x3
+ strb r0, [r1]
+ ldr r1, _08078324
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xDD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_79
+ ldr r0, _08078328
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078338
+ .align 2, 0
+_08078320: .4byte gAvailablePokemonNames
+_08078324: .4byte gUnknown_80F4EC4
+_08078328: .4byte gUnknown_80FB8BC
+_0807832C:
+ ldr r0, _08078344
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08078338:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807833E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078344: .4byte gUnknown_80FB8E4
+ thumb_func_end sub_80782CC
+
+ thumb_func_start sub_8078348
+sub_8078348:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080783BA
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807839C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xDC
+ ldrb r0, [r1]
+ cmp r0, 0x4
+ beq _080783A8
+ movs r0, 0x4
+ strb r0, [r1]
+ ldr r1, _080783A0
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xDD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_80
+ ldr r0, _080783A4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080783B4
+ .align 2, 0
+_0807839C: .4byte gAvailablePokemonNames
+_080783A0: .4byte gUnknown_80F4EC8
+_080783A4: .4byte gUnknown_80FB900
+_080783A8:
+ ldr r0, _080783C0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080783B4:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080783BA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080783C0: .4byte gUnknown_80FB924
+ thumb_func_end sub_8078348
+
+ thumb_func_start sub_80783C4
+sub_80783C4:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ adds r5, r0, 0
+ adds r7, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x18]
+ adds r0, r7, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _080783E8
+ b _0807856A
+_080783E8:
+ adds r0, r5, 0
+ adds r1, r7, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ beq _080783FA
+ b _0807856A
+_080783FA:
+ ldr r4, [r7, 0x70]
+ ldr r0, _08078420
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r4, 0
+ adds r1, 0xC8
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bne _08078428
+ ldr r0, _08078424
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _0807856A
+ .align 2, 0
+_08078420: .4byte gAvailablePokemonNames
+_08078424: .4byte gUnknown_80FB994
+_08078428:
+ movs r6, 0
+ mov r8, r1
+ movs r0, 0xC9
+ adds r0, r4
+ mov r9, r0
+ movs r1, 0xCA
+ adds r1, r4
+ mov r10, r1
+ adds r2, r4, 0
+ adds r2, 0xCB
+ str r2, [sp, 0x1C]
+ adds r4, 0xCC
+ str r4, [sp, 0x20]
+_08078442:
+ ldr r0, _0807857C
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r3, _08078580
+ adds r0, r3
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078480
+ cmp r7, r4
+ beq _08078480
+ ldr r0, [r4, 0x70]
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ subs r0, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08078480
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0
+ bl sub_807A5D0
+ movs r0, 0x2A
+ bl sub_803E46C
+_08078480:
+ adds r6, 0x1
+ cmp r6, 0x13
+ ble _08078442
+ adds r0, r7, 0
+ bl sub_8041D38
+ ldr r0, _08078584
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r4, r8
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _080784A8
+ adds r0, r5, 0
+ adds r1, r7, 0
+ movs r2, 0x2
+ bl sub_807A5D0
+_080784A8:
+ movs r4, 0
+ movs r0, 0x2
+ mov r1, r8
+ strb r0, [r1]
+ ldr r0, [r5, 0x70]
+ ldrb r0, [r0, 0x6]
+ mov r2, r9
+ strb r0, [r2]
+ mov r3, sp
+ ldrb r0, [r3, 0x18]
+ mov r3, r10
+ strb r0, [r3]
+ ldr r1, _08078588
+ adds r0, r7, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ ldr r1, [sp, 0x1C]
+ strb r0, [r1]
+ ldr r2, [sp, 0x20]
+ strb r4, [r2]
+ adds r0, r7, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r7, 0
+ bl sub_806CCB4
+ ldr r0, _0807857C
+ ldr r0, [r0]
+ ldr r3, _0807858C
+ adds r0, r3
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r0, _08078590
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl sub_80522F4
+ movs r6, 0
+ mov r8, r6
+_08078502:
+ ldr r0, _0807857C
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r4, _08078580
+ adds r0, r4
+ adds r0, r1
+ ldr r0, [r0]
+ mov r9, r0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807855E
+ mov r5, r9
+ ldr r4, [r5, 0x70]
+ adds r1, r4, 0
+ adds r1, 0x78
+ movs r0, 0x6
+ strb r0, [r1]
+ adds r0, r4, 0
+ adds r0, 0x80
+ mov r1, r8
+ str r1, [r0]
+ subs r0, 0x4
+ strh r1, [r0]
+ ldrb r0, [r4, 0x7]
+ cmp r0, 0
+ bne _0807855E
+ mov r1, sp
+ adds r0, r4, 0
+ adds r0, 0x44
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+ mov r0, r9
+ movs r1, 0x1
+ bl MoveIfPossible
+ adds r1, r4, 0
+ adds r1, 0x44
+ mov r0, sp
+ ldm r0!, {r2-r4}
+ stm r1!, {r2-r4}
+ ldm r0!, {r2,r3,r5}
+ stm r1!, {r2,r3,r5}
+_0807855E:
+ adds r6, 0x1
+ cmp r6, 0x13
+ ble _08078502
+ adds r0, r7, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807856A:
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807857C: .4byte gDungeonGlobalData
+_08078580: .4byte 0x000135cc
+_08078584: .4byte gAvailablePokemonNames
+_08078588: .4byte gUnknown_80F4ED0
+_0807858C: .4byte 0x000037fc
+_08078590: .4byte gUnknown_80FB978
+ thumb_func_end sub_80783C4
+
+ thumb_func_start sub_8078594
+sub_8078594:
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807866E
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807866E
+ ldr r4, [r5, 0x70]
+ ldr r7, [r6, 0x70]
+ adds r0, r5, 0
+ movs r1, 0xE
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078640
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807866E
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0x1
+ bl sub_807A5D0
+ adds r0, r6, 0
+ bl sub_8041D48
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0xE]
+ cmp r0, 0
+ bne _080785F6
+ movs r0, 0x1
+ strh r0, [r4, 0xE]
+_080785F6:
+ adds r1, r7, 0
+ adds r1, 0xC8
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _0807861C
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _08078634
+ adds r0, r6, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xCB
+ strb r0, [r1]
+ adds r1, 0x1
+ movs r0, 0
+ strb r0, [r1]
+_0807861C:
+ ldr r0, _08078638
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0807863C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl sub_80522F4
+ b _08078668
+ .align 2, 0
+_08078634: .4byte gUnknown_80F4EA4
+_08078638: .4byte gAvailablePokemonNames
+_0807863C: .4byte gUnknown_80FB004
+_08078640:
+ ldr r0, _08078674
+ ldr r4, [r0]
+ adds r0, r5, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ movs r3, 0x1
+ bl sub_8077084
+ adds r0, r5, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ movs r3, 0x1
+ bl sub_8077160
+ adds r0, r5, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_80779F0
+_08078668:
+ adds r0, r6, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807866E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078674: .4byte gUnknown_8106A4C
+ thumb_func_end sub_8078594
+
+ thumb_func_start sub_8078678
+sub_8078678:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r7, r0, 0
+ adds r6, r1, 0
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078732
+ adds r0, r7, 0
+ adds r1, r6, 0
+ movs r2, 0x3
+ bl sub_807A5D0
+ movs r5, 0
+_0807869A:
+ ldr r0, _0807873C
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _08078740
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080786C8
+ ldr r0, [r4, 0x70]
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _080786C8
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0
+ bl sub_807A5D0
+_080786C8:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _0807869A
+ adds r0, r6, 0
+ bl nullsub_81
+ ldr r5, [r6, 0x70]
+ mov r8, r5
+ adds r1, r5, 0
+ adds r1, 0xC8
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ beq _08078700
+ movs r4, 0
+ movs r0, 0x3
+ strb r0, [r1]
+ ldr r1, _08078744
+ adds r0, r6, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xCB
+ strb r0, [r1]
+ adds r0, r5, 0
+ adds r0, 0xCC
+ strb r4, [r0]
+_08078700:
+ ldr r0, _0807873C
+ ldr r1, [r0]
+ ldr r2, _08078748
+ adds r0, r1, r2
+ str r6, [r0]
+ ldr r0, _0807874C
+ adds r1, r0
+ mov r0, r8
+ adds r0, 0x98
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r0, _08078750
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08078754
+ ldr r2, [r0]
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl sub_80522F4
+ adds r0, r6, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078732:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807873C: .4byte gDungeonGlobalData
+_08078740: .4byte 0x000135cc
+_08078744: .4byte gUnknown_80F4EA8
+_08078748: .4byte 0x00017b30
+_0807874C: .4byte 0x00017b3c
+_08078750: .4byte gAvailablePokemonNames
+_08078754: .4byte gUnknown_80FB01C
+ thumb_func_end sub_8078678
+
+ thumb_func_start sub_8078758
+sub_8078758:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080787DA
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080787DA
+ ldr r6, [r4, 0x70]
+ ldr r0, _080787BC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r6, 0
+ adds r1, 0xBC
+ ldrb r0, [r1]
+ cmp r0, 0x5
+ beq _080787C8
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r1, _080787C0
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xBD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_73
+ ldr r0, _080787C4
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080787D4
+ .align 2, 0
+_080787BC: .4byte gAvailablePokemonNames
+_080787C0: .4byte gUnknown_80F4ED8
+_080787C4: .4byte gUnknown_80FB9F0
+_080787C8:
+ ldr r0, _080787E0
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080787D4:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080787DA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080787E0: .4byte gUnknown_80FBA14
+ thumb_func_end sub_8078758
+
+ thumb_func_start sub_80787E4
+sub_80787E4:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078852
+ ldr r4, [r5, 0x70]
+ ldr r0, _08078834
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ movs r0, 0x89
+ lsls r0, 1
+ adds r4, r0
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ bhi _08078840
+ adds r0, 0x1
+ strb r0, [r4]
+ movs r0, 0x1
+ bl sub_804178C
+ adds r0, r5, 0
+ bl sub_8041D5C
+ ldr r1, _08078838
+ ldrb r0, [r4]
+ str r0, [r1]
+ ldr r0, _0807883C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _0807884C
+ .align 2, 0
+_08078834: .4byte gAvailablePokemonNames
+_08078838: .4byte gUnknown_202DE30
+_0807883C: .4byte gUnknown_80FBA38
+_08078840:
+ ldr r0, _08078858
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_0807884C:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078852:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078858: .4byte gUnknown_80FBA60
+ thumb_func_end sub_80787E4
+
+ thumb_func_start sub_807885C
+sub_807885C:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080788DE
+ ldr r0, [r4, 0x70]
+ adds r7, r0, 0
+ adds r5, r7, 0
+ adds r5, 0xE4
+ ldrb r0, [r5]
+ cmp r0, 0x2
+ bne _08078884
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A7C8
+_08078884:
+ ldr r0, _080788C0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldrb r0, [r5]
+ cmp r0, 0x1
+ beq _080788CC
+ movs r0, 0x1
+ strb r0, [r5]
+ ldr r1, _080788C4
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xE5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_8041D84
+ ldr r0, _080788C8
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080788D8
+ .align 2, 0
+_080788C0: .4byte gAvailablePokemonNames
+_080788C4: .4byte gUnknown_80F4EE4
+_080788C8: .4byte gUnknown_80FBA80
+_080788CC:
+ ldr r0, _080788E4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080788D8:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080788DE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080788E4: .4byte gUnknown_80FBAA0
+ thumb_func_end sub_807885C
+
+ thumb_func_start sub_80788E8
+sub_80788E8:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807895E
+ adds r0, r6, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807895E
+ adds r0, r5, 0
+ bl nullsub_82
+ ldr r4, [r5, 0x70]
+ ldr r0, _08078940
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0xFD
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _0807894C
+ ldr r1, _08078944
+ adds r0, r5, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r0, _08078948
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08078958
+ .align 2, 0
+_08078940: .4byte gAvailablePokemonNames
+_08078944: .4byte gUnknown_80F4EEC
+_08078948: .4byte gUnknown_80FBB04
+_0807894C:
+ ldr r0, _08078964
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_08078958:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807895E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078964: .4byte gUnknown_80FBB28
+ thumb_func_end sub_80788E8
+
+ thumb_func_start sub_8078968
+sub_8078968:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ ldr r5, [r4, 0x70]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078A4A
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08078A4A
+ movs r3, 0
+ ldr r0, _080789E8
+ mov r8, r0
+ movs r1, 0x1
+ mov r12, r1
+ movs r0, 0x8C
+ lsls r0, 1
+ adds r2, r5, r0
+ movs r7, 0x10
+_080789A2:
+ ldrb r1, [r2]
+ mov r0, r12
+ ands r0, r1
+ cmp r0, 0
+ beq _080789B4
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080789BC
+_080789B4:
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, 0x3
+ ble _080789A2
+_080789BC:
+ cmp r3, 0x4
+ bne _080789F0
+ movs r1, 0x9C
+ lsls r1, 1
+ adds r0, r5, r1
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _080789F0
+ mov r0, r8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _080789EC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078A4A
+ .align 2, 0
+_080789E8: .4byte gAvailablePokemonNames
+_080789EC: .4byte gUnknown_80FBBD4
+_080789F0:
+ mov r0, r8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xBC
+ ldrb r0, [r1]
+ cmp r0, 0x6
+ beq _08078A38
+ movs r0, 0x6
+ strb r0, [r1]
+ ldr r1, _08078A30
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xBD
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_83
+ ldr r0, _08078A34
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078A44
+ .align 2, 0
+_08078A30: .4byte gUnknown_80F4EF4
+_08078A34: .4byte gUnknown_80FBB94
+_08078A38:
+ ldr r0, _08078A54
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08078A44:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078A4A:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078A54: .4byte gUnknown_80FBBB8
+ thumb_func_end sub_8078968
+
+ thumb_func_start sub_8078A58
+sub_8078A58:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ mov r8, r0
+ adds r6, r1, 0
+ adds r7, r2, 0
+ adds r5, r3, 0
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078B4A
+ ldr r4, [r6, 0x70]
+ cmp r5, 0
+ beq _08078AE0
+ mov r0, sp
+ adds r1, r5, 0
+ bl sub_80943A0
+ ldr r2, [sp]
+ movs r0, 0xA0
+ lsls r0, 1
+ adds r5, r4, r0
+ ldr r7, [r5]
+ add r0, sp, 0x4
+ adds r1, r7, 0
+ bl sub_80942C0
+ ldr r2, [sp, 0x4]
+ str r2, [r5]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r4, r0
+ ldr r1, [r4]
+ add r0, sp, 0x8
+ bl sub_8094318
+ ldr r0, [sp, 0x8]
+ str r0, [r4]
+ ldr r0, _08078AD0
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r7, 0
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ ldr r0, [r5]
+ bl RoundUpFixedPoint
+ cmp r4, r0
+ beq _08078AD8
+ adds r0, r6, 0
+ bl sub_8041D9C
+ ldr r0, _08078AD4
+ b _08078B22
+ .align 2, 0
+_08078AD0: .4byte gAvailablePokemonNames
+_08078AD4: .4byte gUnknown_80FBD9C
+_08078AD8:
+ ldr r0, _08078ADC
+ b _08078B22
+ .align 2, 0
+_08078ADC: .4byte gUnknown_80FBE3C
+_08078AE0:
+ add r0, sp, 0xC
+ adds r1, r7, 0
+ bl sub_80943A0
+ ldr r2, [sp, 0xC]
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r4, r0
+ ldr r7, [r4]
+ add r0, sp, 0x10
+ adds r1, r7, 0
+ bl sub_80942C0
+ ldr r0, [sp, 0x10]
+ str r0, [r4]
+ ldr r0, _08078B30
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r7, 0
+ bl RoundUpFixedPoint
+ adds r5, r0, 0
+ ldr r0, [r4]
+ bl RoundUpFixedPoint
+ cmp r5, r0
+ beq _08078B38
+ adds r0, r6, 0
+ bl nullsub_84
+ ldr r0, _08078B34
+_08078B22:
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r6, 0
+ bl sub_80522F4
+ b _08078B44
+ .align 2, 0
+_08078B30: .4byte gAvailablePokemonNames
+_08078B34: .4byte gUnknown_80FBD78
+_08078B38:
+ ldr r0, _08078B58
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r6, 0
+ bl sub_80522F4
+_08078B44:
+ adds r0, r6, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078B4A:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078B58: .4byte gUnknown_80FBE40
+ thumb_func_end sub_8078A58
+
+ thumb_func_start sub_8078B5C
+sub_8078B5C:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ mov r9, r0
+ adds r6, r1, 0
+ mov r10, r2
+ str r3, [sp, 0x1C]
+ ldr r0, [sp, 0x48]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08078B86
+ b _08078D78
+_08078B86:
+ ldr r7, [r6, 0x70]
+ ldrb r0, [r7, 0x7]
+ cmp r0, 0
+ bne _08078BB8
+ adds r0, r6, 0
+ movs r1, 0x1B
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078BB8
+ mov r0, r8
+ cmp r0, 0
+ bne _08078BA4
+ b _08078D78
+_08078BA4:
+ ldr r0, _08078BB4
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r6, 0
+ bl sub_80522F4
+ b _08078D78
+ .align 2, 0
+_08078BB4: .4byte gUnknown_80FBEA0
+_08078BB8:
+ movs r5, 0
+ ldr r1, [sp, 0x1C]
+ cmp r1, 0
+ beq _08078BE8
+ movs r1, 0x9E
+ lsls r1, 1
+ adds r0, r7, r1
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r7, r1
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ cmp r4, r0
+ blt _08078BE0
+ movs r5, 0x1
+_08078BE0:
+ ldr r0, _08078C8C
+ cmp r10, r0
+ bne _08078BE8
+ movs r5, 0x1
+_08078BE8:
+ cmp r5, 0
+ beq _08078CC0
+ movs r0, 0xA0
+ lsls r0, 1
+ adds r5, r7, r0
+ ldr r1, [r5]
+ str r1, [sp, 0x20]
+ subs r0, 0x4
+ adds r0, r7
+ mov r10, r0
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ ldr r0, [r5]
+ bl RoundUpFixedPoint
+ movs r1, 0
+ str r1, [sp, 0x24]
+ cmp r4, r0
+ bne _08078C16
+ movs r0, 0x1
+ str r0, [sp, 0x24]
+_08078C16:
+ mov r0, sp
+ ldr r1, [sp, 0x1C]
+ bl sub_80943A0
+ ldr r2, [sp]
+ ldr r1, [r5]
+ add r0, sp, 0x4
+ bl sub_8094268
+ ldr r4, [sp, 0x4]
+ str r4, [r5]
+ add r0, sp, 0x8
+ movs r1, 0xC8
+ bl sub_80943A0
+ ldr r2, [sp, 0x8]
+ add r0, sp, 0xC
+ adds r1, r4, 0
+ bl sub_8094318
+ ldr r0, [sp, 0xC]
+ str r0, [r5]
+ mov r1, r10
+ str r0, [r1]
+ ldr r0, [sp, 0x24]
+ cmp r0, 0
+ bne _08078C5E
+ mov r1, r8
+ cmp r1, 0
+ beq _08078C5E
+ ldr r0, _08078C90
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r6, 0
+ bl sub_80522F4
+_08078C5E:
+ ldr r0, [sp, 0x20]
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ movs r1, 0xA0
+ lsls r1, 1
+ adds r0, r7, r1
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ cmp r4, r0
+ bne _08078C9C
+ ldr r0, _08078C94
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r0, r8
+ cmp r0, 0
+ beq _08078D72
+ ldr r0, _08078C98
+ b _08078D4E
+ .align 2, 0
+_08078C8C: .4byte 0x000003e7
+_08078C90: .4byte gUnknown_80FBE64
+_08078C94: .4byte gAvailablePokemonNames
+_08078C98: .4byte gUnknown_80FBDF0
+_08078C9C:
+ adds r0, r6, 0
+ bl sub_8041DB0
+ ldr r0, _08078CB8
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r1, r8
+ cmp r1, 0
+ beq _08078D72
+ ldr r0, _08078CBC
+ b _08078D4E
+ .align 2, 0
+_08078CB8: .4byte gAvailablePokemonNames
+_08078CBC: .4byte gUnknown_80FBDC4
+_08078CC0:
+ movs r0, 0x9E
+ lsls r0, 1
+ adds r5, r7, r0
+ ldr r4, [r5]
+ add r0, sp, 0x10
+ mov r1, r10
+ bl sub_80943A0
+ ldr r2, [sp, 0x10]
+ ldr r1, [r5]
+ add r0, sp, 0x14
+ bl sub_8094268
+ ldr r1, [sp, 0x14]
+ str r1, [r5]
+ movs r0, 0xA0
+ lsls r0, 1
+ adds r7, r0
+ ldr r2, [r7]
+ add r0, sp, 0x18
+ bl sub_8094318
+ ldr r0, [sp, 0x18]
+ str r0, [r5]
+ ldr r0, _08078D28
+ cmp r10, r0
+ bne _08078CFA
+ ldr r0, [r7]
+ str r0, [r5]
+_08078CFA:
+ adds r0, r6, 0
+ bl nullsub_85
+ ldr r0, _08078D2C
+ adds r1, r6, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r4, 0
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ ldr r0, [r5]
+ bl RoundUpFixedPoint
+ cmp r4, r0
+ bne _08078D34
+ mov r1, r8
+ cmp r1, 0
+ beq _08078D72
+ ldr r0, _08078D30
+ b _08078D4E
+ .align 2, 0
+_08078D28: .4byte 0x000003e7
+_08078D2C: .4byte gAvailablePokemonNames
+_08078D30: .4byte gUnknown_80FBE14
+_08078D34:
+ ldr r0, [r5]
+ bl RoundUpFixedPoint
+ adds r4, r0, 0
+ ldr r0, [r7]
+ bl RoundUpFixedPoint
+ cmp r4, r0
+ blt _08078D60
+ mov r0, r8
+ cmp r0, 0
+ beq _08078D72
+ ldr r0, _08078D5C
+_08078D4E:
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r6, 0
+ bl sub_80522F4
+ b _08078D72
+ .align 2, 0
+_08078D5C: .4byte gUnknown_80FBE64
+_08078D60:
+ mov r1, r8
+ cmp r1, 0
+ beq _08078D72
+ ldr r0, _08078D88
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r6, 0
+ bl sub_80522F4
+_08078D72:
+ adds r0, r6, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078D78:
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078D88: .4byte gUnknown_80FBE84
+ thumb_func_end sub_8078B5C
+
+ thumb_func_start sub_8078D8C
+sub_8078D8C:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078E0E
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08078E0E
+ ldr r6, [r4, 0x70]
+ ldr r0, _08078DF0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r6, 0
+ adds r1, 0xEC
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _08078DFC
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _08078DF4
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xED
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_86
+ ldr r0, _08078DF8
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078E08
+ .align 2, 0
+_08078DF0: .4byte gAvailablePokemonNames
+_08078DF4: .4byte gUnknown_80F4F1C
+_08078DF8: .4byte gUnknown_80FBF68
+_08078DFC:
+ ldr r0, _08078E14
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08078E08:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078E0E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078E14: .4byte gUnknown_80FBF84
+ thumb_func_end sub_8078D8C
+
+ thumb_func_start sub_8078E18
+sub_8078E18:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r4, _08078E48
+ add sp, r4
+ mov r10, r0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078F2E
+ ldr r7, [r5, 0x70]
+ adds r0, r7, 0
+ adds r0, 0xE4
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _08078E50
+ ldr r0, _08078E4C
+ b _08078EC0
+ .align 2, 0
+_08078E48: .4byte 0xfffffe00
+_08078E4C: .4byte gUnknown_80FBF04
+_08078E50:
+ ldr r0, _08078ECC
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ mov r0, sp
+ movs r1, 0
+ bl sub_803D870
+ mov r8, r0
+ cmp r0, 0
+ beq _08078EBE
+ movs r0, 0
+ mov r9, r0
+ movs r6, 0
+_08078E6E:
+ mov r0, r8
+ bl DungeonRandomCapped
+ lsls r0, 3
+ add r0, sp
+ bl ExtractSpeciesIndex
+ adds r1, r0, 0
+ lsls r1, 16
+ asrs r1, 16
+ adds r0, r5, 0
+ bl sub_8069F54
+ lsls r0, 16
+ asrs r4, r0, 16
+ movs r1, 0x4
+ ldrsh r0, [r7, r1]
+ cmp r4, r0
+ beq _08078EAE
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_806AA0C
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078EAE
+ adds r0, r4, 0
+ bl sub_80687D0
+ mov r9, r0
+ cmp r0, 0
+ bne _08078EB4
+_08078EAE:
+ adds r6, 0x1
+ cmp r6, 0x13
+ ble _08078E6E
+_08078EB4:
+ cmp r6, 0x14
+ beq _08078EBE
+ mov r2, r9
+ cmp r2, 0
+ bne _08078ED4
+_08078EBE:
+ ldr r0, _08078ED0
+_08078EC0:
+ ldr r2, [r0]
+ mov r0, r10
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08078F2E
+ .align 2, 0
+_08078ECC: .4byte gAvailablePokemonNames
+_08078ED0: .4byte gUnknown_80FBEE4
+_08078ED4:
+ strh r4, [r7, 0x4]
+ mov r0, r9
+ str r0, [r5, 0x64]
+ adds r1, r7, 0
+ adds r1, 0xE4
+ movs r0, 0x2
+ strb r0, [r1]
+ ldr r1, _08078F44
+ adds r0, r5, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xE5
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl sub_806CF98
+ adds r0, r5, 0
+ bl nullsub_87
+ adds r0, r5, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_806CCB4
+ ldr r0, _08078F48
+ movs r2, 0x4
+ ldrsh r1, [r7, r2]
+ bl CopyCyanSpeciesNametoBuffer
+ ldr r0, _08078F4C
+ ldr r2, [r0]
+ mov r0, r10
+ adds r1, r5, 0
+ bl sub_80522F4
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078F2E:
+ movs r3, 0x80
+ lsls r3, 2
+ add sp, r3
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078F44: .4byte gUnknown_80F4EFC
+_08078F48: .4byte gUnknown_202DFE8
+_08078F4C: .4byte gUnknown_80FBEC0
+ thumb_func_end sub_8078E18
+
+ thumb_func_start sub_8078F50
+sub_8078F50:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08078FD2
+ ldr r0, [r4, 0x70]
+ adds r7, r0, 0
+ adds r5, r7, 0
+ adds r5, 0xE4
+ ldrb r0, [r5]
+ cmp r0, 0x2
+ bne _08078F78
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_807A7C8
+_08078F78:
+ ldr r0, _08078FB4
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldrb r0, [r5]
+ cmp r0, 0x3
+ beq _08078FC0
+ movs r0, 0x3
+ strb r0, [r5]
+ ldr r1, _08078FB8
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xE5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_88
+ ldr r0, _08078FBC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08078FCC
+ .align 2, 0
+_08078FB4: .4byte gAvailablePokemonNames
+_08078FB8: .4byte gUnknown_80F4F04
+_08078FBC: .4byte gUnknown_80FBF28
+_08078FC0:
+ ldr r0, _08078FD8
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08078FCC:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08078FD2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08078FD8: .4byte gUnknown_80FBF50
+ thumb_func_end sub_8078F50
+
+ thumb_func_start sub_8078FDC
+sub_8078FDC:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ lsls r2, 16
+ asrs r7, r2, 16
+ mov r10, r7
+ movs r0, 0
+ mov r8, r0
+ mov r9, r0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080790B6
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080790B6
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079064
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ cmp r0, 0xA
+ ble _0807902E
+ movs r0, 0xA
+ strh r0, [r5, 0x26]
+ movs r0, 0x1
+ mov r8, r0
+_0807902E:
+ mov r1, r8
+ cmp r1, 0
+ beq _0807904C
+ adds r0, r4, 0
+ adds r1, r7, 0
+ bl sub_8041DD8
+ ldr r0, _08079068
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0x1
+ mov r9, r0
+_0807904C:
+ adds r5, 0xF5
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _08079070
+ ldr r0, _0807906C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080790B6
+ .align 2, 0
+_08079064: .4byte gAvailablePokemonNames
+_08079068: .4byte gUnknown_80FC000
+_0807906C: .4byte gUnknown_80FBFB8
+_08079070:
+ mov r1, r9
+ cmp r1, 0
+ bne _0807907E
+ adds r0, r4, 0
+ mov r1, r10
+ bl sub_8041DD8
+_0807907E:
+ adds r0, r4, 0
+ movs r1, 0xE
+ bl HasType
+ lsls r0, 24
+ cmp r0, 0
+ bne _080790A0
+ ldr r0, _0807909C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080790B0
+ .align 2, 0
+_0807909C: .4byte gUnknown_80FBFD8
+_080790A0:
+ movs r0, 0x1
+ strb r0, [r5]
+ ldr r0, _080790C4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080790B0:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080790B6:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080790C4: .4byte gUnknown_80FBF9C
+ thumb_func_end sub_8078FDC
+
+ thumb_func_start sub_80790C8
+sub_80790C8:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079134
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08079134
+ ldr r6, _0807911C
+ ldr r0, [r6]
+ ldr r1, _08079120
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08079128
+ adds r0, r4, 0
+ bl nullsub_89
+ ldr r0, [r6]
+ ldr r1, _08079120
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+ ldr r0, _08079124
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079134
+ .align 2, 0
+_0807911C: .4byte gDungeonGlobalData
+_08079120: .4byte 0x00000676
+_08079124: .4byte gUnknown_80FC028
+_08079128:
+ ldr r0, _0807913C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079134:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807913C: .4byte gUnknown_80FC054
+ thumb_func_end sub_80790C8
+
+ thumb_func_start BlindTarget
+BlindTarget:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080791CE
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080791CE
+ ldr r6, [r4, 0x70]
+ ldr r0, _080791B0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r6, 0
+ adds r1, 0xE8
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _080791BC
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _080791B4
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xE9
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_8041E0C
+ ldr r0, _080791B8
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0x31
+ bl sub_803E46C
+ bl sub_8049ED4
+ bl sub_8040A84
+ b _080791C8
+ .align 2, 0
+_080791B0: .4byte gAvailablePokemonNames
+_080791B4: .4byte gUnknown_80F4F08
+_080791B8: .4byte gUnknown_80FB7F4
+_080791BC:
+ ldr r0, _080791D4
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080791C8:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080791CE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080791D4: .4byte gUnknown_80FB810
+ thumb_func_end BlindTarget
+
+ thumb_func_start sub_80791D8
+sub_80791D8:
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079266
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl sub_80716E8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08079266
+ ldr r7, [r4, 0x70]
+ ldr r0, _08079248
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r6, r7, 0
+ adds r6, 0xE8
+ ldrb r0, [r6]
+ cmp r0, 0x2
+ beq _08079254
+ adds r0, r4, 0
+ bl sub_8041E1C
+ ldr r0, _0807924C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0x2
+ strb r0, [r6]
+ ldr r1, _08079250
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r7, 0
+ adds r1, 0xE9
+ strb r0, [r1]
+ movs r0, 0x1
+ bl sub_803F580
+ bl sub_8049ED4
+ bl sub_8040A84
+ b _08079260
+ .align 2, 0
+_08079248: .4byte gAvailablePokemonNames
+_0807924C: .4byte gUnknown_80FB834
+_08079250: .4byte gUnknown_80F4F0C
+_08079254:
+ ldr r0, _0807926C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079260:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079266:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807926C: .4byte gUnknown_80FB85C
+ thumb_func_end sub_80791D8
+
+ thumb_func_start RestoreVisionTarget
+RestoreVisionTarget:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080792EE
+ ldr r5, [r4, 0x70]
+ ldr r0, _080792D0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xE8
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ beq _080792DC
+ movs r0, 0x3
+ strb r0, [r1]
+ ldr r1, _080792D4
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xE9
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_8041E3C
+ ldr r0, _080792D8
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r0, 0x31
+ bl sub_803E46C
+ bl sub_8049ED4
+ bl sub_8040A84
+ b _080792E8
+ .align 2, 0
+_080792D0: .4byte gAvailablePokemonNames
+_080792D4: .4byte gUnknown_80F4F10
+_080792D8: .4byte gUnknown_80FB880
+_080792DC:
+ ldr r0, _080792F4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080792E8:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080792EE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080792F4: .4byte gUnknown_80FB89C
+ thumb_func_end RestoreVisionTarget
+
+ thumb_func_start sub_80792F8
+sub_80792F8:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ mov r10, r0
+ adds r6, r1, 0
+ mov r9, r2
+ movs r0, 0
+ mov r8, r0
+ adds r0, r6, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807939A
+ ldr r0, [r6, 0x70]
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r4, r0, r1
+ adds r5, r4, 0
+ movs r7, 0x3
+_08079326:
+ ldrb r1, [r4]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0807935E
+ ldrb r0, [r4, 0x4]
+ str r0, [sp]
+ adds r0, r5, 0
+ bl GetMoveMaxPP
+ str r0, [sp, 0x4]
+ ldr r1, [sp]
+ ldr r0, [sp, 0x4]
+ cmp r1, r0
+ bge _0807935E
+ ldr r0, [sp]
+ add r0, r9
+ str r0, [sp]
+ ldr r1, [sp]
+ ldr r0, [sp, 0x4]
+ cmp r1, r0
+ ble _08079356
+ ldr r0, [sp, 0x4]
+ str r0, [sp]
+_08079356:
+ ldr r0, [sp]
+ strb r0, [r4, 0x4]
+ movs r0, 0x1
+ mov r8, r0
+_0807935E:
+ adds r4, 0x8
+ adds r5, 0x8
+ subs r7, 0x1
+ cmp r7, 0
+ bge _08079326
+ mov r1, r8
+ cmp r1, 0
+ beq _08079388
+ adds r0, r6, 0
+ bl sub_8041E4C
+ ldr r0, _08079384
+ ldr r2, [r0]
+ mov r0, r10
+ adds r1, r6, 0
+ bl sub_80522F4
+ b _08079394
+ .align 2, 0
+_08079384: .4byte gUnknown_80FDBD0
+_08079388:
+ ldr r0, _080793AC
+ ldr r2, [r0]
+ mov r0, r10
+ adds r1, r6, 0
+ bl sub_80522F4
+_08079394:
+ adds r0, r6, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807939A:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080793AC: .4byte gUnknown_80FDBF0
+ thumb_func_end sub_80792F8
+
+ thumb_func_start sub_80793B0
+sub_80793B0:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079416
+ ldr r0, _080793FC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x14]
+ adds r2, r0, 0
+ adds r0, r2, r5
+ cmp r0, 0xFE
+ ble _080793DE
+ movs r0, 0xFF
+_080793DE:
+ strb r0, [r1, 0x14]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r2, r0
+ bcs _08079404
+ adds r0, r4, 0
+ bl sub_8041E60
+ ldr r0, _08079400
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079410
+ .align 2, 0
+_080793FC: .4byte gAvailablePokemonNames
+_08079400: .4byte gUnknown_80FC33C
+_08079404:
+ ldr r0, _0807941C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079410:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079416:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807941C: .4byte gUnknown_80FC360
+ thumb_func_end sub_80793B0
+
+ thumb_func_start sub_8079420
+sub_8079420:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079486
+ ldr r0, _0807946C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x15]
+ adds r2, r0, 0
+ adds r0, r2, r5
+ cmp r0, 0xFE
+ ble _0807944E
+ movs r0, 0xFF
+_0807944E:
+ strb r0, [r1, 0x15]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r2, r0
+ bcs _08079474
+ adds r0, r4, 0
+ bl sub_8041E74
+ ldr r0, _08079470
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079480
+ .align 2, 0
+_0807946C: .4byte gAvailablePokemonNames
+_08079470: .4byte gUnknown_80FC388
+_08079474:
+ ldr r0, _0807948C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079480:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079486:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807948C: .4byte gUnknown_80FC3B4
+ thumb_func_end sub_8079420
+
+ thumb_func_start sub_8079490
+sub_8079490:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080794F6
+ ldr r0, _080794DC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x16]
+ adds r2, r0, 0
+ adds r0, r2, r5
+ cmp r0, 0xFE
+ ble _080794BE
+ movs r0, 0xFF
+_080794BE:
+ strb r0, [r1, 0x16]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r2, r0
+ bcs _080794E4
+ adds r0, r4, 0
+ bl sub_8041E84
+ ldr r0, _080794E0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080794F0
+ .align 2, 0
+_080794DC: .4byte gAvailablePokemonNames
+_080794E0: .4byte gUnknown_80FC3D8
+_080794E4:
+ ldr r0, _080794FC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080794F0:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080794F6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080794FC: .4byte gUnknown_80FC3FC
+ thumb_func_end sub_8079490
+
+ thumb_func_start sub_8079500
+sub_8079500:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r5, r2, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079566
+ ldr r0, _0807954C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ ldrb r0, [r1, 0x17]
+ adds r2, r0, 0
+ adds r0, r2, r5
+ cmp r0, 0xFE
+ ble _0807952E
+ movs r0, 0xFF
+_0807952E:
+ strb r0, [r1, 0x17]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r2, r0
+ bcs _08079554
+ adds r0, r4, 0
+ bl sub_8041E94
+ ldr r0, _08079550
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079560
+ .align 2, 0
+_0807954C: .4byte gAvailablePokemonNames
+_08079550: .4byte gUnknown_80FC428
+_08079554:
+ ldr r0, _0807956C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079560:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079566:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807956C: .4byte gUnknown_80FC454
+ thumb_func_end sub_8079500
+
+ thumb_func_start sub_8079570
+sub_8079570:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ ldr r4, [r5, 0x70]
+ ldr r0, _080795A0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0xE0
+ ldrb r0, [r4]
+ cmp r0, 0x1
+ beq _080795A8
+ movs r0, 0x1
+ strb r0, [r4]
+ adds r0, r5, 0
+ bl sub_8041EA4
+ ldr r0, _080795A4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _080795B4
+ .align 2, 0
+_080795A0: .4byte gUnknown_202DFE8
+_080795A4: .4byte gUnknown_80FD20C
+_080795A8:
+ ldr r0, _080795C0
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_080795B4:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080795C0: .4byte gUnknown_80FD22C
+ thumb_func_end sub_8079570
+
+ thumb_func_start sub_80795C4
+sub_80795C4:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ ldr r4, [r5, 0x70]
+ ldr r0, _080795F4
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0xE0
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ beq _080795FC
+ movs r0, 0x2
+ strb r0, [r4]
+ adds r0, r5, 0
+ bl sub_8041EB4
+ ldr r0, _080795F8
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08079608
+ .align 2, 0
+_080795F4: .4byte gUnknown_202DFE8
+_080795F8: .4byte gUnknown_80FD254
+_080795FC:
+ ldr r0, _08079614
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_08079608:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079614: .4byte gUnknown_80FD27C
+ thumb_func_end sub_80795C4
+
+ thumb_func_start sub_8079618
+sub_8079618:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r9, r0
+ adds r7, r1, 0
+ mov r8, r3
+ lsls r2, 24
+ lsrs r6, r2, 24
+ adds r0, r7, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08079638
+ b _08079752
+_08079638:
+ ldr r5, [r7, 0x70]
+ ldr r0, _08079660
+ adds r1, r7, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08079668
+ cmp r6, 0xC
+ bne _08079668
+ ldr r0, _08079664
+ ldr r2, [r0]
+ mov r0, r9
+ adds r1, r7, 0
+ bl sub_80522F4
+ b _08079752
+ .align 2, 0
+_08079660: .4byte gAvailablePokemonNames
+_08079664: .4byte gUnknown_80FC074
+_08079668:
+ adds r0, r5, 0
+ adds r0, 0xC0
+ strb r6, [r0]
+ movs r4, 0
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r0, r5, r1
+ subs r2, r6, 0x7
+ b _0807968A
+_0807967A:
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _08079694
+ lsls r0, r4, 3
+ movs r1, 0x8C
+ lsls r1, 1
+ adds r0, r1
+ adds r0, r5, r0
+_0807968A:
+ cmp r0, r8
+ bne _0807967A
+ adds r0, r5, 0
+ adds r0, 0xC2
+ strb r4, [r0]
+_08079694:
+ movs r1, 0xA5
+ lsls r1, 1
+ adds r0, r5, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ movs r4, 0
+ lsls r0, r2, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080796B2
+ adds r0, r5, 0
+ adds r0, 0xFF
+ strb r1, [r0]
+ movs r4, 0x1
+ b _080796C6
+_080796B2:
+ adds r0, r6, 0
+ subs r0, 0x9
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _080796C6
+ adds r1, r5, 0
+ adds r1, 0xFF
+ movs r0, 0x2
+ strb r0, [r1]
+_080796C6:
+ cmp r6, 0x1
+ bne _080796E4
+ ldr r1, _08079718
+ adds r0, r7, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r2, r5, 0
+ adds r2, 0xC1
+ movs r1, 0
+ strb r0, [r2]
+ adds r0, r5, 0
+ adds r0, 0xA0
+ str r1, [r0]
+_080796E4:
+ cmp r6, 0xC
+ bne _080796FA
+ ldr r1, _0807971C
+ adds r0, r7, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC1
+ strb r0, [r1]
+_080796FA:
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_8041BD0
+ mov r0, r9
+ adds r1, r7, 0
+ ldr r2, [sp, 0x1C]
+ bl sub_80522F4
+ adds r0, r7, 0
+ bl DungeonEntityUpdateStatusSprites
+ movs r4, 0
+ ldr r6, _08079720
+ b _0807972C
+ .align 2, 0
+_08079718: .4byte gUnknown_80F4E9C
+_0807971C: .4byte gUnknown_80F4EA0
+_08079720: .4byte 0x0000c7ff
+_08079724:
+ movs r0, 0x53
+ bl sub_803E46C
+ adds r4, 0x1
+_0807972C:
+ ldr r0, _08079760
+ cmp r4, r0
+ bgt _08079752
+ movs r1, 0x1
+ adds r0, r5, 0
+ adds r0, 0xFF
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0807974E
+ movs r1, 0xBA
+ lsls r1, 1
+ adds r0, r5, r1
+ ldr r0, [r0]
+ movs r1, 0
+ cmp r0, r6
+ ble _0807974E
+ movs r1, 0x1
+_0807974E:
+ cmp r1, 0
+ beq _08079724
+_08079752:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079760: .4byte 0x0000018f
+ thumb_func_end sub_8079618
+
+ thumb_func_start sub_8079764
+sub_8079764:
+ push {r4,lr}
+ adds r4, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807979A
+ ldr r2, [r4, 0x70]
+ adds r3, r2, 0
+ adds r3, 0xC0
+ ldrb r0, [r3]
+ cmp r0, 0x1
+ beq _08079794
+ cmp r0, 0xC
+ beq _08079794
+ movs r1, 0
+ strb r1, [r3]
+ movs r3, 0xA5
+ lsls r3, 1
+ adds r0, r2, r3
+ strb r1, [r0]
+ adds r0, r2, 0
+ adds r0, 0xFF
+ strb r1, [r0]
+_08079794:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807979A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8079764
+
+ thumb_func_start sub_80797A0
+sub_80797A0:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r8, r0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r7, r2, 24
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079822
+ ldr r6, [r4, 0x70]
+ ldr r0, _080797E0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r5, r6, 0
+ adds r5, 0xC4
+ ldrb r0, [r5]
+ cmp r0, r7
+ bne _080797E8
+ ldr r0, _080797E4
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079822
+ .align 2, 0
+_080797E0: .4byte gAvailablePokemonNames
+_080797E4: .4byte gUnknown_80FB10C
+_080797E8:
+ adds r0, r4, 0
+ bl nullsub_57
+ ldrb r0, [r5]
+ cmp r0, 0x4
+ beq _0807980A
+ cmp r0, 0xA
+ beq _0807980A
+ ldr r1, _0807982C
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+_0807980A:
+ adds r0, r6, 0
+ adds r0, 0xC4
+ strb r7, [r0]
+ ldr r0, _08079830
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r4, 0
+ bl sub_80522F4
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079822:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807982C: .4byte gUnknown_80F4E98
+_08079830: .4byte gUnknown_80FB0E0
+ thumb_func_end sub_80797A0
+
+ thumb_func_start sub_8079834
+sub_8079834:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _080798A6
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079888
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ beq _08079894
+ movs r0, 0x2
+ strb r0, [r1]
+ ldr r1, _0807988C
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_58
+ ldr r0, _08079890
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _080798A0
+ .align 2, 0
+_08079888: .4byte gAvailablePokemonNames
+_0807988C: .4byte gUnknown_80F4E88
+_08079890: .4byte gUnknown_80FB048
+_08079894:
+ ldr r0, _080798AC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_080798A0:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_080798A6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080798AC: .4byte gUnknown_80FB074
+ thumb_func_end sub_8079834
+
+ thumb_func_start sub_80798B0
+sub_80798B0:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079922
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079904
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0xE
+ beq _08079910
+ movs r0, 0xE
+ strb r0, [r1]
+ ldr r1, _08079908
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_59
+ ldr r0, _0807990C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _0807991C
+ .align 2, 0
+_08079904: .4byte gAvailablePokemonNames
+_08079908: .4byte gUnknown_80F4E8C
+_0807990C: .4byte gUnknown_80FB09C
+_08079910:
+ ldr r0, _08079928
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807991C:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079922:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079928: .4byte gUnknown_80FB0C4
+ thumb_func_end sub_80798B0
+
+ thumb_func_start sub_807992C
+sub_807992C:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807999E
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079980
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x6
+ beq _0807998C
+ movs r0, 0x6
+ strb r0, [r1]
+ ldr r1, _08079984
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_8041B34
+ ldr r0, _08079988
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079998
+ .align 2, 0
+_08079980: .4byte gAvailablePokemonNames
+_08079984: .4byte gUnknown_80F4EB4
+_08079988: .4byte gUnknown_80FAE1C
+_0807998C:
+ ldr r0, _080799A4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079998:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807999E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080799A4: .4byte gUnknown_80FAE3C
+ thumb_func_end sub_807992C
+
+ thumb_func_start sub_80799A8
+sub_80799A8:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079A1A
+ ldr r5, [r4, 0x70]
+ ldr r0, _080799FC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x5
+ beq _08079A08
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r1, _08079A00
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_60
+ ldr r0, _08079A04
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079A14
+ .align 2, 0
+_080799FC: .4byte gAvailablePokemonNames
+_08079A00: .4byte gUnknown_80F4E90
+_08079A04: .4byte gUnknown_80FAF5C
+_08079A08:
+ ldr r0, _08079A20
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079A14:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079A1A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079A20: .4byte gUnknown_80FAF8C
+ thumb_func_end sub_80799A8
+
+ thumb_func_start sub_8079A24
+sub_8079A24:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079A96
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079A78
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ beq _08079A84
+ movs r0, 0x3
+ strb r0, [r1]
+ ldr r1, _08079A7C
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_61
+ ldr r0, _08079A80
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079A90
+ .align 2, 0
+_08079A78: .4byte gAvailablePokemonNames
+_08079A7C: .4byte gUnknown_80F4E84
+_08079A80: .4byte gUnknown_80FB130
+_08079A84:
+ ldr r0, _08079A9C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079A90:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079A96:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079A9C: .4byte gUnknown_80FB160
+ thumb_func_end sub_8079A24
+
+ thumb_func_start sub_8079AA0
+sub_8079AA0:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079B12
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079AF4
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ beq _08079B00
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _08079AF8
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_62
+ ldr r0, _08079AFC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079B0C
+ .align 2, 0
+_08079AF4: .4byte gAvailablePokemonNames
+_08079AF8: .4byte gUnknown_80F4E80
+_08079AFC: .4byte gUnknown_80FB17C
+_08079B00:
+ ldr r0, _08079B18
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079B0C:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079B12:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079B18: .4byte gUnknown_80FB1A8
+ thumb_func_end sub_8079AA0
+
+ thumb_func_start sub_8079B1C
+sub_8079B1C:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079B98
+ adds r0, r4, 0
+ bl nullsub_63
+ ldr r5, [r4, 0x70]
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x7
+ beq _08079B7C
+ movs r0, 0x7
+ strb r0, [r1]
+ ldr r1, _08079B70
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ ldr r0, _08079B74
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08079B78
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079B92
+ .align 2, 0
+_08079B70: .4byte gUnknown_80F4ED4
+_08079B74: .4byte gAvailablePokemonNames
+_08079B78: .4byte gUnknown_80FB9B0
+_08079B7C:
+ ldr r0, _08079BA0
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _08079BA4
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079B92:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079B98:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079BA0: .4byte gAvailablePokemonNames
+_08079BA4: .4byte gUnknown_80FB9D8
+ thumb_func_end sub_8079B1C
+
+ thumb_func_start sub_8079BA8
+sub_8079BA8:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079C1A
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079BFC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x8
+ beq _08079C08
+ movs r0, 0x8
+ strb r0, [r1]
+ ldr r1, _08079C00
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_64
+ ldr r0, _08079C04
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079C14
+ .align 2, 0
+_08079BFC: .4byte gAvailablePokemonNames
+_08079C00: .4byte gUnknown_80F4EE8
+_08079C04: .4byte gUnknown_80FBAC0
+_08079C08:
+ ldr r0, _08079C20
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079C14:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079C1A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079C20: .4byte gUnknown_80FBAE4
+ thumb_func_end sub_8079BA8
+
+ thumb_func_start sub_8079C24
+sub_8079C24:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079C96
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079C78
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0x9
+ beq _08079C84
+ movs r0, 0x9
+ strb r0, [r1]
+ ldr r1, _08079C7C
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_65
+ ldr r0, _08079C80
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079C90
+ .align 2, 0
+_08079C78: .4byte gAvailablePokemonNames
+_08079C7C: .4byte gUnknown_80F4EF8
+_08079C80: .4byte gUnknown_80FBBF0
+_08079C84:
+ ldr r0, _08079C9C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079C90:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079C96:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079C9C: .4byte gUnknown_80FBC14
+ thumb_func_end sub_8079C24
+
+ thumb_func_start sub_8079CA0
+sub_8079CA0:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079D12
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079CF4
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0xB
+ beq _08079D00
+ movs r0, 0xB
+ strb r0, [r1]
+ ldr r1, _08079CF8
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_66
+ ldr r0, _08079CFC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079D0C
+ .align 2, 0
+_08079CF4: .4byte gAvailablePokemonNames
+_08079CF8: .4byte gUnknown_80F4F18
+_08079CFC: .4byte gUnknown_80FBC38
+_08079D00:
+ ldr r0, _08079D18
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079D0C:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079D12:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079D18: .4byte gUnknown_80FBC5C
+ thumb_func_end sub_8079CA0
+
+ thumb_func_start sub_8079D1C
+sub_8079D1C:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079DAE
+ ldr r6, [r4, 0x70]
+ adds r0, r4, 0
+ movs r1, 0x25
+ bl HasAbility
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079D50
+ ldr r0, _08079D4C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079DAE
+ .align 2, 0
+_08079D4C: .4byte gPtrForecastPreventsConversion2Message
+_08079D50:
+ ldr r0, _08079D90
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r6, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0xC
+ beq _08079D9C
+ movs r0, 0xC
+ strb r0, [r1]
+ ldr r1, _08079D94
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r6, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_67
+ ldr r0, _08079D98
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079DA8
+ .align 2, 0
+_08079D90: .4byte gAvailablePokemonNames
+_08079D94: .4byte gUnknown_80F4F20
+_08079D98: .4byte gUnknown_80FBC7C
+_08079D9C:
+ ldr r0, _08079DB4
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079DA8:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079DAE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079DB4: .4byte gUnknown_80FBCA4
+ thumb_func_end sub_8079D1C
+
+ thumb_func_start sub_8079DB8
+sub_8079DB8:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079E2A
+ ldr r5, [r4, 0x70]
+ ldr r0, _08079E0C
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r1, r5, 0
+ adds r1, 0xC4
+ ldrb r0, [r1]
+ cmp r0, 0xD
+ beq _08079E18
+ movs r0, 0xD
+ strb r0, [r1]
+ ldr r1, _08079E10
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_808417C
+ adds r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0xC5
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl nullsub_68
+ ldr r0, _08079E14
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _08079E24
+ .align 2, 0
+_08079E0C: .4byte gAvailablePokemonNames
+_08079E10: .4byte gUnknown_80F4F24
+_08079E14: .4byte gUnknown_80FBCC8
+_08079E18:
+ ldr r0, _08079E30
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079E24:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079E2A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079E30: .4byte gUnknown_80FBCF0
+ thumb_func_end sub_8079DB8
+
+ thumb_func_start sub_8079E34
+sub_8079E34:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r8, r0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ movs r6, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079F0E
+ ldr r0, [r5, 0x70]
+ mov r12, r0
+ movs r4, 0
+ movs r7, 0xA
+_08079E5C:
+ lsls r2, r4, 1
+ mov r0, r12
+ adds r0, 0x1C
+ adds r1, r0, r2
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0xA
+ beq _08079E70
+ strh r7, [r1]
+ movs r6, 0x1
+_08079E70:
+ mov r0, r12
+ adds r0, 0x20
+ adds r1, r0, r2
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, 0xA
+ beq _08079E82
+ strh r7, [r1]
+ movs r6, 0x1
+_08079E82:
+ mov r0, r12
+ adds r0, 0x24
+ adds r1, r0, r2
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0xA
+ beq _08079E94
+ strh r7, [r1]
+ movs r6, 0x1
+_08079E94:
+ lsls r3, r4, 2
+ mov r0, r12
+ adds r0, 0x2C
+ adds r1, r0, r3
+ ldr r0, [r1]
+ movs r2, 0x80
+ lsls r2, 1
+ cmp r0, r2
+ beq _08079EAA
+ str r2, [r1]
+ movs r6, 0x1
+_08079EAA:
+ mov r0, r12
+ adds r0, 0x34
+ adds r1, r0, r3
+ ldr r0, [r1]
+ cmp r0, r2
+ beq _08079EBA
+ str r2, [r1]
+ movs r6, 0x1
+_08079EBA:
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _08079E5C
+ cmp r6, 0
+ beq _08079ECC
+ adds r0, r5, 0
+ bl sub_80420C8
+ b _08079ED8
+_08079ECC:
+ mov r3, r9
+ cmp r3, 0
+ beq _08079ED8
+ adds r0, r5, 0
+ bl sub_80420C8
+_08079ED8:
+ ldr r0, _08079EF4
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ cmp r6, 0
+ beq _08079EFC
+ ldr r0, _08079EF8
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _08079F08
+ .align 2, 0
+_08079EF4: .4byte gAvailablePokemonNames
+_08079EF8: .4byte gUnknown_80FBD18
+_08079EFC:
+ ldr r0, _08079F1C
+ ldr r2, [r0]
+ mov r0, r8
+ adds r1, r5, 0
+ bl sub_80522F4
+_08079F08:
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_08079F0E:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08079F1C: .4byte gUnknown_80FBD3C
+ thumb_func_end sub_8079E34
+
+ thumb_func_start sub_8079F20
+sub_8079F20:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r10, r3
+ movs r0, 0
+ mov r8, r0
+ mov r9, r0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08079F50
+ b _0807A0B8
+_08079F50:
+ ldr r7, [r4, 0x70]
+ adds r0, r4, 0
+ bl HasNegativeStatus
+ lsls r0, 24
+ cmp r0, 0
+ beq _08079FF2
+ movs r2, 0x1
+ mov r8, r2
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0
+ bl sub_807A124
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _08079F7C
+ b _0807A0B8
+_08079F7C:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A290
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl SendImmobilizeEndMessage
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A400
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0
+ bl sub_807A5D0
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A6C8
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A734
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A888
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_807A924
+ adds r1, r7, 0
+ adds r1, 0xFD
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08079FD8
+ mov r0, r9
+ strb r0, [r1]
+ ldr r0, _0807A08C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079FD8:
+ adds r1, r7, 0
+ adds r1, 0xF5
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08079FF2
+ mov r2, r9
+ strb r2, [r1]
+ ldr r0, _0807A090
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_08079FF2:
+ adds r0, r4, 0
+ bl GetMovementSpeed
+ adds r6, r0, 0
+ movs r1, 0
+ movs r3, 0x4
+ ldr r2, _0807A094
+ adds r0, r7, r2
+_0807A002:
+ strb r1, [r0]
+ subs r0, 0x1
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0807A002
+ adds r0, r4, 0
+ bl GetMovementSpeed
+ cmp r6, r0
+ beq _0807A032
+ movs r0, 0x1
+ mov r8, r0
+ ldr r1, _0807A098
+ movs r2, 0x82
+ lsls r2, 1
+ adds r0, r7, r2
+ ldr r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807A032:
+ movs r6, 0x1
+ movs r0, 0x8C
+ lsls r0, 1
+ adds r2, r7, r0
+ movs r7, 0xFE
+ movs r3, 0x3
+_0807A03E:
+ ldrb r1, [r2]
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0807A05E
+ ldrb r1, [r2, 0x1]
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0807A05E
+ movs r0, 0x1
+ mov r8, r0
+ mov r9, r0
+ adds r0, r7, 0
+ ands r0, r1
+ strb r0, [r2, 0x1]
+_0807A05E:
+ adds r2, 0x8
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0807A03E
+ mov r2, r8
+ cmp r2, 0
+ beq _0807A0A0
+ ldr r0, [sp]
+ cmp r0, 0
+ beq _0807A078
+ adds r0, r4, 0
+ bl sub_80420C8
+_0807A078:
+ mov r2, r9
+ cmp r2, 0
+ beq _0807A0B2
+ ldr r0, _0807A09C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _0807A0B2
+ .align 2, 0
+_0807A08C: .4byte gUnknown_8100594
+_0807A090: .4byte gPtrExposedWoreOffMessage
+_0807A094: .4byte 0x00000111
+_0807A098: .4byte gUnknown_80FA124
+_0807A09C: .4byte gPtrSealedMoveReleasedMessage
+_0807A0A0:
+ mov r0, r10
+ cmp r0, 0
+ bne _0807A0B2
+ ldr r0, _0807A0C8
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807A0B2:
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A0B8:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A0C8: .4byte gUnknown_81004E8
+ thumb_func_end sub_8079F20
+
+ thumb_func_start sub_807A0CC
+sub_807A0CC:
+ push {r4-r7,lr}
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A11E
+ ldr r4, [r5, 0x70]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806BFC0
+ adds r1, r4, 0
+ adds r1, 0xFD
+ movs r0, 0
+ strb r0, [r1]
+ subs r1, 0x8
+ strb r0, [r1]
+ movs r7, 0x1
+ movs r6, 0xFE
+ movs r0, 0x8C
+ lsls r0, 1
+ adds r2, r4, r0
+ movs r3, 0x3
+_0807A0FE:
+ ldrb r1, [r2]
+ adds r0, r7, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0807A110
+ ldrb r1, [r2, 0x1]
+ adds r0, r6, 0
+ ands r0, r1
+ strb r0, [r2, 0x1]
+_0807A110:
+ adds r2, 0x8
+ subs r3, 0x1
+ cmp r3, 0
+ bge _0807A0FE
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A11E:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807A0CC
+
+ thumb_func_start sub_807A124
+sub_807A124:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r4, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r8, r3
+ movs r0, 0
+ mov r9, r0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807A14E
+ b _0807A27C
+_0807A14E:
+ ldr r7, [r5, 0x70]
+ ldr r0, _0807A170
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r7, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bls _0807A166
+ b _0807A260
+_0807A166:
+ lsls r0, 2
+ ldr r1, _0807A174
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A170: .4byte gAvailablePokemonNames
+_0807A174: .4byte _0807A178
+ .align 2, 0
+_0807A178:
+ .4byte _0807A260
+ .4byte _0807A194
+ .4byte _0807A1A0
+ .4byte _0807A1B4
+ .4byte _0807A228
+ .4byte _0807A1E8
+ .4byte _0807A260
+_0807A194:
+ movs r1, 0x1
+ mov r9, r1
+ ldr r0, _0807A19C
+ b _0807A1A2
+ .align 2, 0
+_0807A19C: .4byte gUnknown_80FA6E8
+_0807A1A0:
+ ldr r0, _0807A1B0
+_0807A1A2:
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _0807A260
+ .align 2, 0
+_0807A1B0: .4byte gUnknown_80FA708
+_0807A1B4:
+ movs r2, 0x1
+ mov r9, r2
+ ldr r0, _0807A1DC
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ mov r0, r8
+ cmp r0, 0
+ beq _0807A260
+ ldr r0, _0807A1E0
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ ldr r3, _0807A1E4
+ adds r0, r5, 0
+ movs r2, 0x8
+ bl sub_806F324
+ b _0807A260
+ .align 2, 0
+_0807A1DC: .4byte gUnknown_80FA70C
+_0807A1E0: .4byte gUnknown_80F4F78
+_0807A1E4: .4byte 0x0000020f
+_0807A1E8:
+ movs r0, 0x1
+ mov r9, r0
+ ldr r0, _0807A220
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ ldr r0, _0807A224
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ movs r4, 0
+ str r4, [sp]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ movs r3, 0
+ bl HealTargetHP
+ adds r0, r7, 0
+ adds r0, 0xA8
+ strb r4, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8079F20
+ b _0807A260
+ .align 2, 0
+_0807A220: .4byte gUnknown_80FA710
+_0807A224: .4byte gUnknown_80F4F7A
+_0807A228:
+ cmp r4, 0
+ beq _0807A254
+ adds r1, r7, 0
+ adds r1, 0xA8
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _0807A250
+ adds r0, r5, 0
+ movs r2, 0x1
+ bl sub_808417C
+ adds r2, r0, 0
+ adds r2, 0x1
+ adds r0, r6, 0
+ adds r1, r5, 0
+ movs r3, 0x1
+ bl sub_8075C58
+ b _0807A27C
+ .align 2, 0
+_0807A250: .4byte gUnknown_80F4F2C
+_0807A254:
+ ldr r0, _0807A28C
+ ldr r2, [r0]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_0807A260:
+ adds r1, r7, 0
+ adds r1, 0xA8
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+ mov r2, r9
+ cmp r2, 0
+ beq _0807A27C
+ adds r0, r5, 0
+ movs r1, 0x8
+ bl sub_806CE68
+_0807A27C:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A28C: .4byte gUnknown_80FA734
+ thumb_func_end sub_807A124
+
+ thumb_func_start sub_807A290
+sub_807A290:
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A31A
+ ldr r6, [r4, 0x70]
+ ldr r0, _0807A2C4
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r6, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bhi _0807A30C
+ lsls r0, 2
+ ldr r1, _0807A2C8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A2C4: .4byte gAvailablePokemonNames
+_0807A2C8: .4byte _0807A2CC
+ .align 2, 0
+_0807A2CC:
+ .4byte _0807A30C
+ .4byte _0807A300
+ .4byte _0807A2E4
+ .4byte _0807A2E4
+ .4byte _0807A2EC
+ .4byte _0807A30C
+_0807A2E4:
+ ldr r0, _0807A2E8
+ b _0807A2EE
+ .align 2, 0
+_0807A2E8: .4byte gUnknown_80FA8A8
+_0807A2EC:
+ ldr r0, _0807A2FC
+_0807A2EE:
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _0807A30C
+ .align 2, 0
+_0807A2FC: .4byte gUnknown_80FA868
+_0807A300:
+ ldr r0, _0807A320
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807A30C:
+ adds r1, r6, 0
+ adds r1, 0xAC
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A31A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A320: .4byte gUnknown_80FA888
+ thumb_func_end sub_807A290
+
+ thumb_func_start SendImmobilizeEndMessage
+SendImmobilizeEndMessage:
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ movs r7, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A3F4
+ ldr r6, [r4, 0x70]
+ ldr r0, _0807A358
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r6, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bhi _0807A3DC
+ lsls r0, 2
+ ldr r1, _0807A35C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A358: .4byte gAvailablePokemonNames
+_0807A35C: .4byte _0807A360
+ .align 2, 0
+_0807A360:
+ .4byte _0807A3DC
+ .4byte _0807A384
+ .4byte _0807A3A0
+ .4byte _0807A3B4
+ .4byte _0807A3B4
+ .4byte _0807A3A0
+ .4byte _0807A3D0
+ .4byte _0807A398
+ .4byte _0807A3DC
+_0807A384:
+ ldr r0, _0807A394
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ movs r7, 0x1
+ b _0807A3DC
+ .align 2, 0
+_0807A394: .4byte gUnknown_80FA8BC
+_0807A398:
+ ldr r0, _0807A39C
+ b _0807A3A2
+ .align 2, 0
+_0807A39C: .4byte gUnknown_80FA820
+_0807A3A0:
+ ldr r0, _0807A3B0
+_0807A3A2:
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ b _0807A3DC
+ .align 2, 0
+_0807A3B0: .4byte gUnknown_80FA824
+_0807A3B4:
+ ldr r0, _0807A3CC
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ adds r0, r6, 0
+ adds r0, 0x9C
+ ldr r0, [r0]
+ bl sub_8076CB4
+ b _0807A3DC
+ .align 2, 0
+_0807A3CC: .4byte gUnknown_80FA81C
+_0807A3D0:
+ ldr r0, _0807A3FC
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+_0807A3DC:
+ adds r1, r6, 0
+ adds r1, 0xB0
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+ cmp r7, 0
+ beq _0807A3F4
+ adds r0, r4, 0
+ bl sub_8042A74
+_0807A3F4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A3FC: .4byte gUnknown_80FABF8
+ thumb_func_end SendImmobilizeEndMessage
+
+ thumb_func_start sub_807A400
+sub_807A400:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A4BC
+ ldr r6, [r5, 0x70]
+ ldr r0, _0807A434
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r6, 0
+ adds r0, 0xBC
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bhi _0807A4A8
+ lsls r0, 2
+ ldr r1, _0807A438
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A434: .4byte gAvailablePokemonNames
+_0807A438: .4byte _0807A43C
+ .align 2, 0
+_0807A43C:
+ .4byte _0807A4A8
+ .4byte _0807A49C
+ .4byte _0807A460
+ .4byte _0807A478
+ .4byte _0807A468
+ .4byte _0807A470
+ .4byte _0807A488
+ .4byte _0807A480
+ .4byte _0807A4A8
+_0807A460:
+ ldr r0, _0807A464
+ b _0807A48A
+ .align 2, 0
+_0807A464: .4byte gUnknown_80FA800
+_0807A468:
+ ldr r0, _0807A46C
+ b _0807A48A
+ .align 2, 0
+_0807A46C: .4byte gUnknown_80FA97C
+_0807A470:
+ ldr r0, _0807A474
+ b _0807A48A
+ .align 2, 0
+_0807A474: .4byte gUnknown_80FA9DC
+_0807A478:
+ ldr r0, _0807A47C
+ b _0807A48A
+ .align 2, 0
+_0807A47C: .4byte gUnknown_80FAC38
+_0807A480:
+ ldr r0, _0807A484
+ b _0807A48A
+ .align 2, 0
+_0807A484: .4byte gUnknown_80FAB90
+_0807A488:
+ ldr r0, _0807A498
+_0807A48A:
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+ b _0807A4A8
+ .align 2, 0
+_0807A498: .4byte gUnknown_80FAAAC
+_0807A49C:
+ ldr r0, _0807A4C4
+ ldr r2, [r0]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80522F4
+_0807A4A8:
+ adds r1, r6, 0
+ adds r1, 0xBC
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+ adds r0, r5, 0
+ bl GetMovementSpeed
+_0807A4BC:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A4C4: .4byte gUnknown_80FAC18
+ thumb_func_end sub_807A400
+
+ thumb_func_start sub_807A4C8
+sub_807A4C8:
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807A4DA
+ b _0807A5C4
+_0807A4DA:
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807A4FC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ cmp r0, 0xF
+ bhi _0807A5B6
+ lsls r0, 2
+ ldr r1, _0807A500
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A4FC: .4byte gAvailablePokemonNames
+_0807A500: .4byte _0807A504
+ .align 2, 0
+_0807A504:
+ .4byte _0807A5B6
+ .4byte _0807A544
+ .4byte _0807A54C
+ .4byte _0807A554
+ .4byte _0807A55C
+ .4byte _0807A564
+ .4byte _0807A56C
+ .4byte _0807A574
+ .4byte _0807A57C
+ .4byte _0807A584
+ .4byte _0807A55C
+ .4byte _0807A58C
+ .4byte _0807A594
+ .4byte _0807A59C
+ .4byte _0807A5AC
+ .4byte _0807A5B6
+_0807A544:
+ ldr r0, _0807A548
+ b _0807A59E
+ .align 2, 0
+_0807A548: .4byte gUnknown_80FA638
+_0807A54C:
+ ldr r0, _0807A550
+ b _0807A59E
+ .align 2, 0
+_0807A550: .4byte gUnknown_80FA69C
+_0807A554:
+ ldr r0, _0807A558
+ b _0807A59E
+ .align 2, 0
+_0807A558: .4byte gUnknown_80FA658
+_0807A55C:
+ ldr r0, _0807A560
+ b _0807A59E
+ .align 2, 0
+_0807A560: .4byte gUnknown_80FA67C
+_0807A564:
+ ldr r0, _0807A568
+ b _0807A59E
+ .align 2, 0
+_0807A568: .4byte gUnknown_80FA6BC
+_0807A56C:
+ ldr r0, _0807A570
+ b _0807A59E
+ .align 2, 0
+_0807A570: .4byte gUnknown_80FA6D4
+_0807A574:
+ ldr r0, _0807A578
+ b _0807A59E
+ .align 2, 0
+_0807A578: .4byte gUnknown_80FA9C0
+_0807A57C:
+ ldr r0, _0807A580
+ b _0807A59E
+ .align 2, 0
+_0807A580: .4byte gUnknown_80FAA68
+_0807A584:
+ ldr r0, _0807A588
+ b _0807A59E
+ .align 2, 0
+_0807A588: .4byte gUnknown_80FAAC8
+_0807A58C:
+ ldr r0, _0807A590
+ b _0807A59E
+ .align 2, 0
+_0807A590: .4byte gUnknown_80FAAE8
+_0807A594:
+ ldr r0, _0807A598
+ b _0807A59E
+ .align 2, 0
+_0807A598: .4byte gUnknown_80FAB08
+_0807A59C:
+ ldr r0, _0807A5A8
+_0807A59E:
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0807A5B6
+ .align 2, 0
+_0807A5A8: .4byte gUnknown_80FAB28
+_0807A5AC:
+ ldr r0, _0807A5CC
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0807A5B6:
+ adds r1, r5, 0
+ adds r1, 0xC4
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A5C4:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A5CC: .4byte gUnknown_80FAB40
+ thumb_func_end sub_807A4C8
+
+ thumb_func_start sub_807A5D0
+sub_807A5D0:
+ push {r4-r7,lr}
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r6, r2, 24
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A6B2
+ ldr r7, [r5, 0x70]
+ ldr r0, _0807A604
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r7, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bhi _0807A6A4
+ lsls r0, 2
+ ldr r1, _0807A608
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A604: .4byte gAvailablePokemonNames
+_0807A608: .4byte _0807A60C
+ .align 2, 0
+_0807A60C:
+ .4byte _0807A6A4
+ .4byte _0807A620
+ .4byte _0807A668
+ .4byte _0807A634
+ .4byte _0807A6A4
+_0807A620:
+ cmp r6, 0x1
+ beq _0807A6A4
+ ldr r0, _0807A630
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl SendMessage
+ b _0807A6A4
+ .align 2, 0
+_0807A630: .4byte gUnknown_80FA7BC
+_0807A634:
+ cmp r6, 0x3
+ beq _0807A642
+ ldr r0, _0807A658
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl SendMessage
+_0807A642:
+ ldr r0, _0807A65C
+ ldr r0, [r0]
+ ldr r2, _0807A660
+ adds r1, r0, r2
+ movs r2, 0
+ str r2, [r1]
+ ldr r1, _0807A664
+ adds r0, r1
+ str r2, [r0]
+ b _0807A6A4
+ .align 2, 0
+_0807A658: .4byte gUnknown_80FA7DC
+_0807A65C: .4byte gDungeonGlobalData
+_0807A660: .4byte 0x00017b30
+_0807A664: .4byte 0x00017b3c
+_0807A668:
+ adds r0, r7, 0
+ adds r0, 0xC8
+ movs r4, 0
+ strb r4, [r0]
+ adds r0, r5, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl sub_806CCB4
+ ldr r0, _0807A6B8
+ ldr r0, [r0]
+ ldr r2, _0807A6BC
+ adds r0, r2
+ strb r4, [r0]
+ cmp r6, 0x2
+ beq _0807A6A4
+ ldr r0, _0807A6C0
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0807A6C4
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl SendMessage
+_0807A6A4:
+ adds r1, r7, 0
+ adds r1, 0xC8
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A6B2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A6B8: .4byte gDungeonGlobalData
+_0807A6BC: .4byte 0x000037fc
+_0807A6C0: .4byte gAvailablePokemonNames
+_0807A6C4: .4byte gUnknown_80FA9A0
+ thumb_func_end sub_807A5D0
+
+ thumb_func_start sub_807A6C8
+sub_807A6C8:
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A72A
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807A6F8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xD0
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0807A6FC
+ cmp r0, 0x1
+ ble _0807A716
+ cmp r0, 0x2
+ beq _0807A70C
+ b _0807A716
+ .align 2, 0
+_0807A6F8: .4byte gAvailablePokemonNames
+_0807A6FC:
+ ldr r0, _0807A708
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0807A716
+ .align 2, 0
+_0807A708: .4byte gUnknown_80FA79C
+_0807A70C:
+ ldr r0, _0807A730
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0807A716:
+ adds r1, r5, 0
+ adds r1, 0xD0
+ movs r0, 0
+ strb r0, [r1]
+ adds r1, 0x8
+ movs r0, 0xFF
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A72A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A730: .4byte gUnknown_80FAA8C
+ thumb_func_end sub_807A6C8
+
+ thumb_func_start sub_807A734
+sub_807A734:
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A7BC
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807A764
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xDC
+ ldrb r0, [r0]
+ cmp r0, 0x5
+ bhi _0807A7AE
+ lsls r0, 2
+ ldr r1, _0807A768
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A764: .4byte gAvailablePokemonNames
+_0807A768: .4byte _0807A76C
+ .align 2, 0
+_0807A76C:
+ .4byte _0807A7AE
+ .4byte _0807A784
+ .4byte _0807A78C
+ .4byte _0807A794
+ .4byte _0807A7A4
+ .4byte _0807A7AE
+_0807A784:
+ ldr r0, _0807A788
+ b _0807A796
+ .align 2, 0
+_0807A788: .4byte gUnknown_80FA8E0
+_0807A78C:
+ ldr r0, _0807A790
+ b _0807A796
+ .align 2, 0
+_0807A790: .4byte gUnknown_80FA90C
+_0807A794:
+ ldr r0, _0807A7A0
+_0807A796:
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0807A7AE
+ .align 2, 0
+_0807A7A0: .4byte gUnknown_80FA934
+_0807A7A4:
+ ldr r0, _0807A7C4
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0807A7AE:
+ adds r1, r5, 0
+ adds r1, 0xDC
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A7BC:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A7C4: .4byte gUnknown_80FA95C
+ thumb_func_end sub_807A734
+
+ thumb_func_start sub_807A7C8
+sub_807A7C8:
+ push {r4-r6,lr}
+ adds r4, r1, 0
+ movs r6, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A87E
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807A7FC
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xE4
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bhi _0807A866
+ lsls r0, 2
+ ldr r1, _0807A800
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A7FC: .4byte gAvailablePokemonNames
+_0807A800: .4byte _0807A804
+ .align 2, 0
+_0807A804:
+ .4byte _0807A866
+ .4byte _0807A818
+ .4byte _0807A834
+ .4byte _0807A824
+ .4byte _0807A866
+_0807A818:
+ movs r6, 0x1
+ ldr r0, _0807A820
+ b _0807A826
+ .align 2, 0
+_0807A820: .4byte gUnknown_80FA9F4
+_0807A824:
+ ldr r0, _0807A830
+_0807A826:
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0807A866
+ .align 2, 0
+_0807A830: .4byte gUnknown_80FABBC
+_0807A834:
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8069F54
+ strh r0, [r5, 0x4]
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ bl sub_80687D0
+ str r0, [r4, 0x64]
+ adds r0, r4, 0
+ bl sub_806CEBC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl sub_806CCB4
+ ldr r0, _0807A884
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0807A866:
+ adds r1, r5, 0
+ adds r1, 0xE4
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+ cmp r6, 0
+ beq _0807A87E
+ movs r0, 0x1
+ bl sub_807EC28
+_0807A87E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A884: .4byte gUnknown_80FAB6C
+ thumb_func_end sub_807A7C8
+
+ thumb_func_start sub_807A888
+sub_807A888:
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A918
+ ldr r5, [r4, 0x70]
+ ldr r0, _0807A8B8
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r0, r5, 0
+ adds r0, 0xE8
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ bhi _0807A8F6
+ lsls r0, 2
+ ldr r1, _0807A8BC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807A8B8: .4byte gAvailablePokemonNames
+_0807A8BC: .4byte _0807A8C0
+ .align 2, 0
+_0807A8C0:
+ .4byte _0807A8F6
+ .4byte _0807A8D4
+ .4byte _0807A8DC
+ .4byte _0807A8EC
+ .4byte _0807A8F6
+_0807A8D4:
+ ldr r0, _0807A8D8
+ b _0807A8DE
+ .align 2, 0
+_0807A8D8: .4byte gUnknown_80FAA0C
+_0807A8DC:
+ ldr r0, _0807A8E8
+_0807A8DE:
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+ b _0807A8F6
+ .align 2, 0
+_0807A8E8: .4byte gUnknown_80FAA2C
+_0807A8EC:
+ ldr r0, _0807A920
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl SendMessage
+_0807A8F6:
+ adds r0, r5, 0
+ adds r0, 0xE8
+ movs r1, 0
+ strb r1, [r0]
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0
+ beq _0807A918
+ movs r0, 0x31
+ bl sub_803E46C
+ bl sub_8049ED4
+ bl sub_8040A84
+_0807A918:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A920: .4byte gUnknown_80FAA48
+ thumb_func_end sub_807A888
+
+ thumb_func_start sub_807A924
+sub_807A924:
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807A95C
+ ldr r4, [r5, 0x70]
+ ldr r0, _0807A964
+ adds r1, r5, 0
+ movs r2, 0
+ bl SetMessageArgument
+ adds r4, 0xEC
+ ldrb r0, [r4]
+ cmp r0, 0x1
+ bne _0807A952
+ ldr r0, _0807A968
+ ldr r1, [r0]
+ adds r0, r5, 0
+ bl SendMessage
+_0807A952:
+ movs r0, 0
+ strb r0, [r4]
+ adds r0, r5, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807A95C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807A964: .4byte gAvailablePokemonNames
+_0807A968: .4byte gUnknown_80FABC0
+ thumb_func_end sub_807A924
+
+ thumb_func_start sub_807A96C
+sub_807A96C:
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ ldr r0, [r4, 0x70]
+ adds r5, r0, 0
+ movs r2, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bne _0807A988
+ adds r0, r6, 0
+ bl SendImmobilizeEndMessage
+ movs r2, 0x1
+_0807A988:
+ adds r0, r5, 0
+ adds r0, 0xA8
+ ldrh r1, [r0]
+ ldr r0, _0807A9AC
+ cmp r1, r0
+ bne _0807A9A2
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_807A124
+ movs r2, 0x1
+_0807A9A2:
+ adds r0, r2, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807A9AC: .4byte 0x00007f01
+ thumb_func_end sub_807A96C
+
+ thumb_func_start sub_807A9B0
+sub_807A9B0:
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ adds r1, 0xA8
+ movs r2, 0
+ strb r2, [r1]
+ adds r0, 0xA9
+ strb r2, [r0]
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0x1
+ bl sub_806A898
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807A9B0
+
+ thumb_func_start sub_807A9D8
+sub_807A9D8:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AA20
+ ldr r2, [r4, 0x70]
+ adds r3, r2, 0
+ adds r3, 0xB0
+ ldrb r0, [r3]
+ cmp r0, 0x1
+ bne _0807AA20
+ movs r1, 0
+ strb r1, [r3]
+ adds r0, r2, 0
+ adds r0, 0xB8
+ strb r1, [r0]
+ adds r0, 0x1
+ strb r1, [r0]
+ ldr r0, _0807AA28
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetMessageArgument
+ ldr r0, _0807AA2C
+ ldr r2, [r0]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80522F4
+ adds r0, r4, 0
+ bl DungeonEntityUpdateStatusSprites
+_0807AA20:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807AA28: .4byte gAvailablePokemonNames
+_0807AA2C: .4byte gUnknown_80FA8BC
+ thumb_func_end sub_807A9D8
+
+ thumb_func_start sub_807AA30
+sub_807AA30:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r4, 0
+_0807AA3C:
+ ldr r0, _0807AAD8
+ ldr r0, [r0]
+ lsls r1, r4, 2
+ ldr r2, _0807AADC
+ adds r0, r2
+ adds r0, r1
+ ldr r5, [r0]
+ adds r0, r5, 0
+ bl EntityExists
+ lsls r0, 24
+ adds r4, 0x1
+ mov r10, r4
+ cmp r0, 0
+ beq _0807AB22
+ ldr r1, [r5, 0x70]
+ adds r0, r1, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0807AB22
+ adds r0, r1, 0
+ adds r0, 0xA9
+ ldrb r0, [r0]
+ cmp r0, 0x7F
+ bne _0807AB22
+ movs r0, 0
+ mov r9, r0
+ mov r8, r0
+ adds r0, r5, 0
+ bl GetEntityRoomIndex
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r6, 0
+_0807AA82:
+ ldr r0, _0807AAD8
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r2, _0807AAE0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AB00
+ adds r0, r4, 0
+ movs r1, 0x18
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807AB00
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ movs r2, 0x4
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807AABA
+ negs r1, r1
+_0807AABA:
+ cmp r1, 0x1
+ bgt _0807AAE4
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807AACE
+ negs r1, r1
+_0807AACE:
+ cmp r1, 0x1
+ bgt _0807AAE4
+ movs r0, 0x1
+ mov r9, r0
+ b _0807AB06
+ .align 2, 0
+_0807AAD8: .4byte gDungeonGlobalData
+_0807AADC: .4byte 0x0001358c
+_0807AAE0: .4byte 0x0001357c
+_0807AAE4:
+ adds r0, r4, 0
+ movs r1, 0x1D
+ bl HasItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AB00
+ adds r0, r4, 0
+ bl GetEntityRoomIndex
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r7, r0
+ beq _0807AB1C
+_0807AB00:
+ adds r6, 0x1
+ cmp r6, 0x3
+ ble _0807AA82
+_0807AB06:
+ mov r2, r8
+ cmp r2, 0
+ bne _0807AB1C
+ mov r0, r9
+ cmp r0, 0
+ beq _0807AB16
+ movs r2, 0x1
+ mov r8, r2
+_0807AB16:
+ mov r0, r8
+ cmp r0, 0
+ beq _0807AB22
+_0807AB1C:
+ adds r0, r5, 0
+ bl sub_807A9B0
+_0807AB22:
+ mov r4, r10
+ cmp r4, 0xF
+ ble _0807AA3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807AA30
+
+ thumb_func_start sub_807AB38
+sub_807AB38:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1A8
+ adds r2, r0, 0
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldr r0, [r2, 0x70]
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ beq _0807AB54
+ b _0807ADA6
+_0807AB54:
+ adds r0, r2, 0
+ str r2, [sp, 0x1A4]
+ bl GetMapTileForDungeonEntity_2
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ ldr r2, [sp, 0x1A4]
+ cmp r0, 0
+ bne _0807AB6A
+ b _0807ADA6
+_0807AB6A:
+ ldr r3, _0807AC10
+ ldr r0, [r3]
+ ldr r5, _0807AC14
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0807AB7A
+ b _0807ADA6
+_0807AB7A:
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r3, [r3]
+ ldr r1, _0807AC18
+ adds r0, r3, r1
+ ldrb r1, [r0]
+ cmp r1, 0xFF
+ bne _0807AB8C
+ b _0807ADA6
+_0807AB8C:
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ ldr r5, _0807AC1C
+ adds r0, r5
+ adds r3, r0
+ movs r0, 0
+ mov r8, r0
+ cmp r4, 0
+ beq _0807AC20
+ movs r1, 0x6
+ ldrsh r0, [r2, r1]
+ subs r6, r0, 0x4
+ adds r0, 0x4
+ cmp r6, r0
+ ble _0807ABAE
+ b _0807ACB4
+_0807ABAE:
+ movs r4, 0x4
+ ldrsh r0, [r2, r4]
+ subs r4, r0, 0x4
+ adds r0, 0x4
+ adds r5, r6, 0x1
+ mov r9, r5
+ cmp r4, r0
+ bgt _0807AC00
+ mov r1, r8
+ lsls r0, r1, 2
+ mov r1, sp
+ adds r5, r0, r1
+_0807ABC6:
+ adds r0, r4, 0
+ adds r1, r6, 0
+ str r2, [sp, 0x1A4]
+ bl GetMapTile_2
+ adds r1, r0, 0
+ ldr r0, [r1, 0x10]
+ ldr r2, [sp, 0x1A4]
+ cmp r0, 0
+ bne _0807ABF4
+ ldrh r1, [r1]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0807ABF4
+ mov r0, r8
+ cmp r0, 0x63
+ bgt _0807ABF4
+ strh r4, [r5]
+ strh r6, [r5, 0x2]
+ adds r5, 0x4
+ movs r1, 0x1
+ add r8, r1
+_0807ABF4:
+ adds r4, 0x1
+ movs r1, 0x4
+ ldrsh r0, [r2, r1]
+ adds r0, 0x4
+ cmp r4, r0
+ ble _0807ABC6
+_0807AC00:
+ mov r6, r9
+ movs r4, 0x6
+ ldrsh r0, [r2, r4]
+ adds r0, 0x4
+ cmp r6, r0
+ ble _0807ABAE
+ b _0807ACB4
+ .align 2, 0
+_0807AC10: .4byte gDungeonGlobalData
+_0807AC14: .4byte 0x00000671
+_0807AC18: .4byte 0x00003a0c
+_0807AC1C: .4byte 0x000104c4
+_0807AC20:
+ movs r5, 0x4
+ ldrsh r0, [r2, r5]
+ subs r1, r0, 0x4
+ movs r5, 0x2
+ ldrsh r4, [r3, r5]
+ mov r10, r4
+ cmp r10, r1
+ bge _0807AC32
+ mov r10, r1
+_0807AC32:
+ adds r1, r0, 0x5
+ movs r0, 0x6
+ ldrsh r7, [r3, r0]
+ cmp r7, r1
+ ble _0807AC3E
+ adds r7, r1, 0
+_0807AC3E:
+ movs r1, 0x6
+ ldrsh r0, [r2, r1]
+ subs r2, r0, 0x4
+ movs r4, 0x4
+ ldrsh r1, [r3, r4]
+ cmp r1, r2
+ bge _0807AC4E
+ adds r1, r2, 0
+_0807AC4E:
+ adds r0, 0x5
+ movs r5, 0x8
+ ldrsh r2, [r3, r5]
+ cmp r2, r0
+ ble _0807AC5A
+ adds r2, r0, 0
+_0807AC5A:
+ adds r6, r1, 0
+ cmp r6, r2
+ bge _0807ACB4
+_0807AC60:
+ mov r4, r10
+ adds r0, r6, 0x1
+ mov r9, r0
+ cmp r4, r7
+ bge _0807ACAE
+ mov r1, r8
+ lsls r0, r1, 2
+ mov r1, sp
+ adds r5, r0, r1
+_0807AC72:
+ adds r0, r4, 0
+ adds r1, r6, 0
+ str r2, [sp, 0x1A4]
+ bl GetMapTile_2
+ adds r1, r0, 0
+ ldr r0, [r1, 0x10]
+ ldr r2, [sp, 0x1A4]
+ cmp r0, 0
+ bne _0807ACA8
+ ldrh r1, [r1]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0807ACA8
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0807ACA8
+ mov r0, r8
+ cmp r0, 0x63
+ bgt _0807ACA8
+ strh r4, [r5]
+ strh r6, [r5, 0x2]
+ adds r5, 0x4
+ movs r1, 0x1
+ add r8, r1
+_0807ACA8:
+ adds r4, 0x1
+ cmp r4, r7
+ blt _0807AC72
+_0807ACAE:
+ mov r6, r9
+ cmp r6, r2
+ blt _0807AC60
+_0807ACB4:
+ ldr r0, _0807AD74
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ ldr r1, _0807AD78
+ movs r4, 0
+ ldrsh r1, [r1, r4]
+ bl sub_808411C
+ adds r7, r0, 0
+ cmp r7, r8
+ blt _0807ACCC
+ mov r7, r8
+_0807ACCC:
+ movs r6, 0
+ cmp r6, r7
+ bge _0807ADA0
+ mov r10, r6
+_0807ACD4:
+ mov r0, r8
+ bl DungeonRandomCapped
+ adds r2, r0, 0
+ movs r3, 0
+ cmp r3, r8
+ bge _0807AD0C
+ lsls r0, r2, 2
+ mov r5, sp
+ adds r1, r5, r0
+ movs r4, 0
+ ldrsh r1, [r1, r4]
+ adds r5, r0, 0
+ cmp r1, 0
+ bne _0807AD1C
+_0807ACF2:
+ adds r2, 0x1
+ cmp r2, r8
+ blt _0807ACFA
+ movs r2, 0
+_0807ACFA:
+ adds r3, 0x1
+ cmp r3, r8
+ bge _0807AD0C
+ lsls r0, r2, 2
+ add r0, sp
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ cmp r0, 0
+ beq _0807ACF2
+_0807AD0C:
+ lsls r0, r2, 2
+ mov r2, sp
+ adds r1, r2, r0
+ movs r4, 0
+ ldrsh r1, [r1, r4]
+ adds r5, r0, 0
+ cmp r1, 0
+ beq _0807ADA0
+_0807AD1C:
+ movs r0, 0x1
+ bl sub_803D970
+ add r4, sp, 0x190
+ movs r1, 0
+ strh r0, [r4]
+ mov r0, r10
+ strh r0, [r4, 0x8]
+ strb r1, [r4, 0x2]
+ mov r1, r10
+ str r1, [r4, 0x4]
+ movs r0, 0x1
+ strb r0, [r4, 0x10]
+ mov r2, sp
+ adds r1, r2, r5
+ ldrh r0, [r1]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xE]
+ movs r5, 0
+ ldrsh r0, [r4, r5]
+ movs r1, 0x1
+ bl sub_806AA0C
+ lsls r0, 24
+ adds r6, 0x1
+ mov r9, r6
+ cmp r0, 0
+ beq _0807AD9A
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806B7F8
+ adds r4, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AD9A
+ movs r0, 0xC8
+ lsls r0, 8
+ str r0, [r4, 0x1C]
+ movs r5, 0
+ b _0807AD84
+ .align 2, 0
+_0807AD74: .4byte gUnknown_80F4DA2
+_0807AD78: .4byte gUnknown_80F4DA4
+_0807AD7C:
+ movs r0, 0x57
+ bl sub_803E46C
+ adds r5, 0x1
+_0807AD84:
+ cmp r5, 0x63
+ bgt _0807AD96
+ ldr r0, [r4, 0x1C]
+ movs r1, 0xAA
+ bl sub_8009DA4
+ str r0, [r4, 0x1C]
+ cmp r0, 0xFF
+ bgt _0807AD7C
+_0807AD96:
+ mov r0, r10
+ str r0, [r4, 0x1C]
+_0807AD9A:
+ mov r6, r9
+ cmp r6, r7
+ blt _0807ACD4
+_0807ADA0:
+ movs r0, 0x1
+ bl sub_804178C
+_0807ADA6:
+ add sp, 0x1A8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_807AB38
+
+ thumb_func_start MoveIfPossible
+MoveIfPossible:
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldr r4, [r5, 0x70]
+ adds r0, r4, 0
+ adds r0, 0x79
+ movs r6, 0
+ strb r6, [r0]
+ adds r0, 0x1
+ strb r6, [r0]
+ adds r0, 0x1
+ strb r6, [r0]
+ adds r0, r5, 0
+ movs r1, 0x7
+ bl HasTactic
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807ADFA
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ asrs r0, 1
+ cmp r1, r0
+ bgt _0807ADFA
+ adds r0, r4, 0
+ adds r0, 0x44
+ strh r6, [r0]
+ b _0807AEB4
+_0807ADFA:
+ adds r0, r5, 0
+ movs r1, 0x9
+ bl HasTactic
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AE12
+ adds r1, r4, 0
+ adds r1, 0x44
+ movs r0, 0
+ strh r0, [r1]
+ b _0807AEB4
+_0807AE12:
+ ldrb r0, [r4, 0x7]
+ cmp r0, 0
+ bne _0807AE32
+ movs r1, 0x9E
+ lsls r1, 1
+ adds r0, r4, r1
+ ldr r0, [r0]
+ bl RoundUpFixedPoint
+ adds r1, r0, 0
+ cmp r1, 0
+ bne _0807AE32
+ adds r0, r4, 0
+ adds r0, 0x44
+ strh r1, [r0]
+ b _0807AEB4
+_0807AE32:
+ adds r0, r4, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0807AE6A
+ adds r0, r4, 0
+ adds r0, 0x44
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ bl SetWalkAction
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ adds r1, r4, 0
+ adds r1, 0x46
+ strb r0, [r1]
+ ldrh r1, [r5, 0x4]
+ movs r2, 0xB6
+ lsls r2, 1
+ adds r0, r4, r2
+ strh r1, [r0]
+ ldrh r0, [r5, 0x6]
+ subs r0, 0x1
+ adds r2, 0x2
+ adds r1, r4, r2
+ strh r0, [r1]
+ b _0807AEB4
+_0807AE6A:
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl ShouldAvoidEnemiesAndShowEffect
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AE80
+ adds r0, r5, 0
+ bl AvoidEnemies
+ b _0807AE9C
+_0807AE80:
+ adds r0, r5, 0
+ bl CanTakeItem
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AE96
+ adds r1, r4, 0
+ adds r1, 0x44
+ movs r0, 0x3F
+ strh r0, [r1]
+ b _0807AEB4
+_0807AE96:
+ adds r0, r5, 0
+ bl ChooseTargetPosition
+_0807AE9C:
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _0807AEAC
+ adds r0, r4, 0
+ adds r0, 0x44
+ strh r2, [r0]
+ b _0807AEB4
+_0807AEAC:
+ adds r0, r5, 0
+ adds r1, r7, 0
+ bl DecideMovement
+_0807AEB4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end MoveIfPossible
+
+ thumb_func_start CanTakeItem
+CanTakeItem:
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, [r4, 0x70]
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AF50
+ adds r0, r4, 0
+ bl CannotUseItems
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807AF50
+ adds r0, r4, 0
+ bl GetMapTileForDungeonEntity_2
+ adds r6, r0, 0
+ ldr r4, [r6, 0x14]
+ cmp r4, 0
+ beq _0807AF50
+ adds r0, r4, 0
+ bl GetEntityType
+ cmp r0, 0x5
+ bhi _0807AF50
+ lsls r0, 2
+ ldr r1, _0807AEFC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807AEFC: .4byte _0807AF00
+ .align 2, 0
+_0807AF00:
+ .4byte _0807AF50
+ .4byte _0807AF50
+ .4byte _0807AF50
+ .4byte _0807AF18
+ .4byte _0807AF50
+ .4byte _0807AF50
+_0807AF18:
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0
+ bne _0807AF50
+ adds r0, r5, 0
+ adds r0, 0x60
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0807AF50
+ ldrh r1, [r6]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _0807AF3C
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0
+ bne _0807AF50
+_0807AF3C:
+ adds r0, r4, 0
+ bl GetItemData
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0807AF50
+ movs r0, 0x1
+ b _0807AF52
+_0807AF50:
+ movs r0, 0
+_0807AF52:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end CanTakeItem
+
+ thumb_func_start ChooseTargetPosition
+ChooseTargetPosition:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ mov r8, r0
+ ldr r7, [r0, 0x70]
+ bl TargetLeader
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AF74
+ b _0807B12C
+_0807AF74:
+ ldr r0, _0807AF8C
+ ldr r1, [r0]
+ ldr r2, _0807AF90
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807AF98
+ ldr r3, _0807AF94
+ adds r6, r1, r3
+ movs r4, 0x14
+ mov r10, r4
+ b _0807AFB4
+ .align 2, 0
+_0807AF8C: .4byte gDungeonGlobalData
+_0807AF90: .4byte 0x000037fc
+_0807AF94: .4byte 0x000135cc
+_0807AF98:
+ ldrb r0, [r7, 0x6]
+ cmp r0, 0
+ beq _0807AFAC
+ ldr r0, _0807AFA8
+ adds r6, r1, r0
+ movs r1, 0x4
+ mov r10, r1
+ b _0807AFB4
+ .align 2, 0
+_0807AFA8: .4byte 0x0001357c
+_0807AFAC:
+ ldr r2, _0807B01C
+ adds r6, r1, r2
+ movs r3, 0x10
+ mov r10, r3
+_0807AFB4:
+ mov r0, r8
+ bl CanCrossWalls
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ movs r4, 0x1
+ negs r4, r4
+ str r4, [sp]
+ ldr r0, _0807B020
+ mov r9, r0
+ movs r5, 0
+ adds r1, r7, 0
+ adds r1, 0x78
+ str r1, [sp, 0x8]
+ cmp r5, r10
+ bge _0807B09E
+_0807AFD6:
+ lsls r0, r5, 2
+ adds r0, r6
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B098
+ ldr r0, [r4, 0x70]
+ adds r1, r0, 0
+ adds r1, 0xA4
+ ldrb r1, [r1]
+ adds r2, r0, 0
+ cmp r1, 0
+ bne _0807B098
+ ldr r0, _0807B024
+ ldr r0, [r0]
+ ldr r3, _0807B028
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B02C
+ mov r0, r8
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl CanTarget
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807B098
+ ldr r2, [r4, 0x70]
+ b _0807B03C
+ .align 2, 0
+_0807B01C: .4byte 0x0001358c
+_0807B020: .4byte 0x000003e7
+_0807B024: .4byte gDungeonGlobalData
+_0807B028: .4byte 0x000037fc
+_0807B02C:
+ ldrb r0, [r7, 0x6]
+ cmp r0, 0
+ bne _0807B03C
+ adds r0, r2, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ beq _0807B098
+_0807B03C:
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0x1
+ beq _0807B098
+ ldr r0, [sp, 0x4]
+ cmp r0, 0
+ beq _0807B074
+ mov r2, r8
+ movs r3, 0x4
+ ldrsh r1, [r2, r3]
+ movs r2, 0x4
+ ldrsh r0, [r4, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807B05A
+ negs r1, r1
+_0807B05A:
+ cmp r1, 0x5
+ bgt _0807B074
+ mov r3, r8
+ movs r0, 0x6
+ ldrsh r1, [r3, r0]
+ movs r2, 0x6
+ ldrsh r0, [r4, r2]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807B070
+ negs r1, r1
+_0807B070:
+ cmp r1, 0x5
+ ble _0807B082
+_0807B074:
+ mov r0, r8
+ adds r1, r4, 0
+ bl CanSee_2
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B098
+_0807B082:
+ adds r1, r4, 0x4
+ mov r0, r8
+ adds r0, 0x4
+ bl GetMaxPositionDifference
+ cmp r9, r0
+ ble _0807B098
+ mov r9, r0
+ str r5, [sp]
+ cmp r0, 0x1
+ ble _0807B09E
+_0807B098:
+ adds r5, 0x1
+ cmp r5, r10
+ blt _0807AFD6
+_0807B09E:
+ ldr r3, [sp]
+ cmp r3, 0
+ blt _0807B12C
+ movs r2, 0
+ movs r5, 0x1
+ ldr r4, [sp, 0x8]
+ strb r5, [r4]
+ adds r1, r7, 0
+ adds r1, 0x88
+ lsls r0, r3, 2
+ adds r4, r0, r6
+ ldr r0, [r4]
+ ldr r0, [r0, 0x4]
+ str r0, [r1]
+ subs r1, 0x8
+ ldr r0, [r4]
+ str r0, [r1]
+ ldrh r1, [r0, 0x26]
+ adds r0, r7, 0
+ adds r0, 0x7C
+ strh r1, [r0]
+ subs r0, 0x2
+ strb r5, [r0]
+ movs r1, 0x8A
+ lsls r1, 1
+ adds r0, r7, r1
+ str r2, [r0]
+ mov r0, r8
+ movs r1, 0x8
+ bl HasTactic
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B0E4
+ b _0807B2C6
+_0807B0E4:
+ mov r0, r8
+ bl CanSeeTeammate
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B0F2
+ b _0807B2C6
+_0807B0F2:
+ mov r2, r8
+ movs r3, 0x4
+ ldrsh r1, [r2, r3]
+ ldr r2, [r4]
+ movs r4, 0x4
+ ldrsh r0, [r2, r4]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807B106
+ negs r1, r1
+_0807B106:
+ cmp r1, 0x1
+ ble _0807B10C
+ b _0807B2C6
+_0807B10C:
+ mov r0, r8
+ movs r3, 0x6
+ ldrsh r1, [r0, r3]
+ movs r4, 0x6
+ ldrsh r0, [r2, r4]
+ subs r0, r1, r0
+ cmp r0, 0
+ bge _0807B11E
+ negs r0, r0
+_0807B11E:
+ cmp r0, 0x1
+ ble _0807B124
+ b _0807B2C6
+_0807B124:
+ adds r0, r7, 0
+ adds r0, 0x7B
+ strb r5, [r0]
+ b _0807B2C6
+_0807B12C:
+ mov r0, r8
+ movs r1, 0x1
+ bl HasTactic
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B17C
+ ldrb r5, [r7, 0x6]
+ adds r0, r7, 0
+ adds r0, 0x78
+ str r0, [sp, 0x8]
+ cmp r5, 0
+ bne _0807B222
+ mov r0, r8
+ bl GetLeaderEntityIfVisible
+ adds r4, r0, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B222
+ movs r0, 0x1
+ ldr r1, [sp, 0x8]
+ strb r0, [r1]
+ adds r1, r7, 0
+ adds r1, 0x88
+ ldr r0, [r4, 0x4]
+ str r0, [r1]
+ adds r0, r7, 0
+ adds r0, 0x80
+ str r4, [r0]
+ ldrh r1, [r4, 0x26]
+ subs r0, 0x4
+ strh r1, [r0]
+ movs r2, 0x8A
+ lsls r2, 1
+ adds r0, r7, r2
+ str r5, [r0]
+ b _0807B2C6
+_0807B17C:
+ ldrb r0, [r7, 0x7]
+ adds r3, r7, 0
+ adds r3, 0x78
+ str r3, [sp, 0x8]
+ cmp r0, 0
+ beq _0807B222
+ ldr r4, _0807B1BC
+ ldr r0, [r4]
+ ldr r1, _0807B1C0
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r2, r8
+ movs r3, 0x4
+ ldrsh r0, [r2, r3]
+ movs r3, 0x6
+ ldrsh r1, [r2, r3]
+ bl GetMapTile_1
+ ldrb r1, [r0, 0x9]
+ cmp r1, 0xFF
+ bne _0807B1C4
+ mov r4, r8
+ movs r0, 0x4
+ ldrsh r1, [r4, r0]
+ subs r2, r1, 0x2
+ mov r10, r2
+ movs r3, 0x6
+ ldrsh r0, [r4, r3]
+ subs r2, r0, 0x2
+ adds r6, r1, 0x2
+ adds r0, 0x2
+ b _0807B1EC
+ .align 2, 0
+_0807B1BC: .4byte gDungeonGlobalData
+_0807B1C0: .4byte 0x00018209
+_0807B1C4:
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ ldr r1, _0807B26C
+ adds r0, r1
+ ldr r1, [r4]
+ adds r1, r0
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ subs r0, 0x1
+ mov r10, r0
+ movs r3, 0x4
+ ldrsh r0, [r1, r3]
+ subs r2, r0, 0x1
+ movs r4, 0x6
+ ldrsh r0, [r1, r4]
+ adds r6, r0, 0x1
+ movs r3, 0x8
+ ldrsh r0, [r1, r3]
+ adds r0, 0x1
+_0807B1EC:
+ mov r9, r0
+ adds r5, r2, 0
+ adds r4, r7, 0
+ adds r4, 0x78
+ str r4, [sp, 0x8]
+ cmp r5, r9
+ bgt _0807B222
+_0807B1FA:
+ mov r4, r10
+ cmp r4, r6
+ bgt _0807B21C
+_0807B200:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl GetMapTile_2
+ ldr r0, [r0, 0x14]
+ cmp r0, 0
+ beq _0807B216
+ bl GetEntityType
+ cmp r0, 0x3
+ beq _0807B270
+_0807B216:
+ adds r4, 0x1
+ cmp r4, r6
+ ble _0807B200
+_0807B21C:
+ adds r5, 0x1
+ cmp r5, r9
+ ble _0807B1FA
+_0807B222:
+ ldr r1, [sp, 0x8]
+ ldrb r0, [r1]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _0807B2C0
+ adds r3, r7, 0
+ adds r3, 0x80
+ ldr r1, [r3]
+ cmp r1, 0
+ beq _0807B2C0
+ adds r2, r7, 0
+ adds r2, 0x7C
+ ldrh r0, [r1, 0x26]
+ ldrh r4, [r2]
+ cmp r0, r4
+ bne _0807B2B4
+ ldr r1, [r1, 0x70]
+ mov r9, r1
+ movs r5, 0
+ mov r4, r9
+ adds r4, 0x68
+_0807B250:
+ lsls r6, r5, 2
+ mov r0, r8
+ adds r1, r4, 0
+ bl InSameRoom
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B294
+ adds r4, 0x4
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _0807B250
+ b _0807B2C0
+ .align 2, 0
+_0807B26C: .4byte 0x000104c4
+_0807B270:
+ movs r1, 0
+ movs r0, 0x7
+ ldr r2, [sp, 0x8]
+ strb r0, [r2]
+ adds r0, r7, 0
+ adds r0, 0x88
+ strh r4, [r0]
+ adds r0, 0x2
+ strh r5, [r0]
+ subs r0, 0xA
+ str r1, [r0]
+ subs r0, 0x4
+ strh r1, [r0]
+ movs r3, 0x8A
+ lsls r3, 1
+ adds r0, r7, r3
+ str r1, [r0]
+ b _0807B2C6
+_0807B294:
+ movs r2, 0
+ movs r0, 0x2
+ ldr r4, [sp, 0x8]
+ strb r0, [r4]
+ adds r1, r7, 0
+ adds r1, 0x88
+ mov r0, r9
+ adds r0, 0x68
+ adds r0, r6
+ ldr r0, [r0]
+ str r0, [r1]
+ movs r1, 0x8A
+ lsls r1, 1
+ adds r0, r7, r1
+ str r2, [r0]
+ b _0807B2C6
+_0807B2B4:
+ movs r1, 0
+ movs r0, 0x6
+ ldr r4, [sp, 0x8]
+ strb r0, [r4]
+ str r1, [r3]
+ strh r1, [r2]
+_0807B2C0:
+ mov r0, r8
+ bl Explore
+_0807B2C6:
+ movs r0, 0x1
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end ChooseTargetPosition
+
+ thumb_func_start DecideMovement
+DecideMovement:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ mov r9, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldr r5, [r0, 0x70]
+ movs r0, 0xB6
+ lsls r0, 1
+ adds r1, r5, r0
+ adds r4, r5, 0
+ adds r4, 0x88
+ ldr r0, [r4]
+ str r0, [r1]
+ mov r2, r9
+ ldr r1, [r2, 0x4]
+ ldr r0, [r4]
+ cmp r1, r0
+ beq _0807B348
+ mov r6, r9
+ adds r6, 0x4
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl CalculateFacingDir
+ mov r8, r0
+ adds r0, r5, 0
+ adds r0, 0x7A
+ ldrb r1, [r0]
+ mov r0, r9
+ bl ShouldAvoidFirstHit
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B366
+ adds r0, r5, 0
+ adds r0, 0x78
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0807B37C
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl IsTargetTwoTilesAway
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B37C
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl GetMaxPositionDifference
+ cmp r0, 0x2
+ bne _0807B354
+_0807B348:
+ adds r0, r5, 0
+ adds r0, 0x44
+ movs r1, 0x1
+ bl SetAction
+ b _0807B5CE
+_0807B354:
+ cmp r0, 0x1
+ bgt _0807B37C
+ movs r3, 0x4
+ add r8, r3
+ movs r0, 0x7
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ b _0807B37C
+_0807B366:
+ adds r0, r5, 0
+ adds r0, 0x7B
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B37C
+ movs r2, 0x4
+ add r8, r2
+ movs r0, 0x7
+ mov r3, r8
+ ands r3, r0
+ mov r8, r3
+_0807B37C:
+ add r4, sp, 0x30
+ mov r0, r9
+ mov r1, r8
+ adds r2, r4, 0
+ bl CanMoveForward
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B3A8
+ adds r0, r5, 0
+ adds r0, 0x44
+ movs r2, 0x2
+ ldrsh r1, [r5, r2]
+ bl SetWalkAction
+ movs r0, 0x7
+ mov r3, r8
+ ands r3, r0
+ adds r0, r5, 0
+ adds r0, 0x46
+ strb r3, [r0]
+ b _0807B5CE
+_0807B3A8:
+ ldrb r0, [r4]
+ cmp r0, 0
+ beq _0807B444
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0
+ bne _0807B3E8
+ ldr r1, _0807B3E0
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0807B3E8
+ adds r0, r5, 0
+ adds r0, 0x79
+ movs r4, 0x1
+ strb r4, [r0]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r5, r2
+ strb r4, [r0]
+ adds r0, r5, 0
+ adds r0, 0x44
+ movs r1, 0x1
+ bl SetAction
+ ldr r3, _0807B3E4
+ adds r0, r5, r3
+ strb r4, [r0]
+ b _0807B5CE
+ .align 2, 0
+_0807B3E0: .4byte 0x00000145
+_0807B3E4: .4byte 0x00000147
+_0807B3E8:
+ mov r0, r9
+ movs r2, 0x4
+ ldrsh r1, [r0, r2]
+ ldr r2, _0807B434
+ mov r3, r8
+ lsls r0, r3, 2
+ adds r2, r0, r2
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ adds r1, r0
+ adds r0, r5, 0
+ adds r0, 0x88
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ cmp r1, r0
+ bne _0807B43C
+ mov r1, r9
+ movs r3, 0x6
+ ldrsh r0, [r1, r3]
+ movs r3, 0x2
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ adds r1, r5, 0
+ adds r1, 0x8A
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ cmp r0, r1
+ bne _0807B43C
+ adds r0, r5, 0
+ adds r0, 0x44
+ movs r1, 0x1
+ bl SetAction
+ ldr r3, _0807B438
+ adds r1, r5, r3
+ movs r0, 0x1
+ strb r0, [r1]
+ b _0807B5CE
+ .align 2, 0
+_0807B434: .4byte gAdjacentTileOffsets
+_0807B438: .4byte 0x00000147
+_0807B43C:
+ adds r1, r5, 0
+ adds r1, 0x79
+ movs r0, 0x1
+ strb r0, [r1]
+_0807B444:
+ mov r3, sp
+ mov r2, sp
+ mov r1, sp
+ add r0, sp, 0x28
+ movs r4, 0x1
+ strb r4, [r0]
+ add r0, sp, 0x20
+ strb r4, [r0]
+ strb r4, [r1, 0x18]
+ strb r4, [r2, 0x10]
+ strb r4, [r3, 0x8]
+ ldrb r6, [r5, 0x6]
+ cmp r6, 0
+ bne _0807B4C8
+ mov r0, r8
+ ands r0, r4
+ cmp r0, 0
+ beq _0807B4C8
+ mov r1, r9
+ movs r2, 0x4
+ ldrsh r0, [r1, r2]
+ adds r1, r5, 0
+ adds r1, 0x88
+ movs r3, 0
+ ldrsh r1, [r1, r3]
+ subs r2, r0, r1
+ cmp r2, 0
+ bge _0807B47E
+ negs r2, r2
+_0807B47E:
+ mov r0, r9
+ movs r3, 0x6
+ ldrsh r1, [r0, r3]
+ adds r0, r5, 0
+ adds r0, 0x8A
+ movs r3, 0
+ ldrsh r0, [r0, r3]
+ subs r1, r0
+ cmp r1, 0
+ bge _0807B494
+ negs r1, r1
+_0807B494:
+ cmp r2, 0x2
+ bgt _0807B4C8
+ cmp r1, 0x2
+ bgt _0807B4C8
+ cmp r2, r1
+ beq _0807B4C8
+ movs r3, 0x2
+ mov r0, r8
+ ands r3, r0
+ cmp r3, 0
+ beq _0807B4BA
+ cmp r2, r1
+ bge _0807B4B4
+ mov r0, sp
+ strb r6, [r0, 0x10]
+ b _0807B4C8
+_0807B4B4:
+ mov r0, sp
+ strb r6, [r0, 0x8]
+ b _0807B4C8
+_0807B4BA:
+ cmp r2, r1
+ bge _0807B4C4
+ mov r0, sp
+ strb r3, [r0, 0x8]
+ b _0807B4C8
+_0807B4C4:
+ mov r0, sp
+ strb r3, [r0, 0x10]
+_0807B4C8:
+ movs r1, 0x3
+ mov r10, r1
+ mov r0, r9
+ adds r1, r7, 0
+ bl ShouldAvoidEnemiesAndShowEffect
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B4E4
+ adds r0, r5, 0
+ adds r0, 0x7B
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B4E8
+_0807B4E4:
+ movs r2, 0x5
+ mov r10, r2
+_0807B4E8:
+ movs r6, 0x1
+ adds r3, r5, 0
+ adds r3, 0x44
+ str r3, [sp, 0x34]
+ cmp r6, r10
+ bge _0807B53C
+ mov r3, sp
+ mov r4, sp
+ adds r4, 0xA
+ add r7, sp, 0x8
+_0807B4FC:
+ lsls r0, r6, 3
+ add r2, sp, 0x4
+ adds r2, r0
+ ldr r1, _0807B598
+ lsls r0, r6, 2
+ adds r0, r1
+ ldr r1, [r0]
+ add r1, r8
+ movs r0, 0x7
+ ands r1, r0
+ str r1, [r2]
+ mov r0, r9
+ adds r2, r4, 0
+ str r3, [sp, 0x38]
+ bl CanMoveForward
+ strb r0, [r7, 0x1]
+ lsls r0, 24
+ ldr r3, [sp, 0x38]
+ cmp r0, 0
+ bne _0807B532
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _0807B532
+ movs r0, 0x1
+ strb r0, [r3, 0x10]
+ strb r0, [r3, 0x8]
+_0807B532:
+ adds r4, 0x8
+ adds r7, 0x8
+ adds r6, 0x1
+ cmp r6, r10
+ blt _0807B4FC
+_0807B53C:
+ movs r6, 0x1
+ cmp r6, r10
+ bge _0807B56E
+ adds r3, r5, 0
+ adds r3, 0x79
+ add r1, sp, 0x8
+ movs r4, 0x8
+ movs r7, 0x1
+_0807B54C:
+ adds r2, r4, 0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0
+ beq _0807B55A
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0807B5A0
+_0807B55A:
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0
+ beq _0807B562
+ strb r7, [r3]
+_0807B562:
+ adds r1, 0x8
+ adds r4, r2, 0
+ adds r4, 0x8
+ adds r6, 0x1
+ cmp r6, r10
+ blt _0807B54C
+_0807B56E:
+ ldr r0, [sp, 0x34]
+ movs r1, 0x1
+ bl SetAction
+ ldr r1, _0807B59C
+ adds r0, r5, r1
+ movs r1, 0
+ movs r2, 0x1
+ strb r2, [r0]
+ ldrb r0, [r5, 0x7]
+ cmp r0, 0
+ beq _0807B5BC
+ adds r0, r5, 0
+ adds r0, 0x79
+ strb r1, [r0]
+ movs r2, 0xA2
+ lsls r2, 1
+ adds r0, r5, r2
+ strb r1, [r0]
+ b _0807B5CE
+ .align 2, 0
+_0807B598: .4byte gFaceDirectionIncrements
+_0807B59C: .4byte 0x00000147
+_0807B5A0:
+ movs r3, 0x2
+ ldrsh r1, [r5, r3]
+ ldr r0, [sp, 0x34]
+ bl SetWalkAction
+ add r0, sp, 0x4
+ adds r0, r4
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ adds r1, r5, 0
+ adds r1, 0x46
+ strb r0, [r1]
+ b _0807B5CE
+_0807B5BC:
+ adds r0, r5, 0
+ adds r0, 0x79
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B5CE
+ movs r1, 0xA2
+ lsls r1, 1
+ adds r0, r5, r1
+ strb r2, [r0]
+_0807B5CE:
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end DecideMovement
+
+ thumb_func_start AvoidEnemies
+AvoidEnemies:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x30
+ adds r7, r0, 0
+ ldr r0, _0807B61C
+ str r0, [sp, 0x8]
+ ldr r1, [r7, 0x70]
+ str r1, [sp, 0x10]
+ adds r0, r7, 0
+ bl GetEntityRoomIndex
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _0807B620
+ ldr r1, [r0]
+ ldr r2, _0807B624
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B62C
+ ldr r3, _0807B628
+ adds r0, r1, r3
+ movs r4, 0x14
+ mov r9, r4
+ b _0807B64C
+ .align 2, 0
+_0807B61C: .4byte 0x000f423f
+_0807B620: .4byte gDungeonGlobalData
+_0807B624: .4byte 0x000037fc
+_0807B628: .4byte 0x000135cc
+_0807B62C:
+ ldr r2, [sp, 0x10]
+ ldrb r0, [r2, 0x6]
+ cmp r0, 0
+ beq _0807B644
+ ldr r3, _0807B640
+ adds r0, r1, r3
+ movs r4, 0x4
+ mov r9, r4
+ b _0807B64C
+ .align 2, 0
+_0807B640: .4byte 0x0001357c
+_0807B644:
+ ldr r2, _0807B790
+ adds r0, r1, r2
+ movs r3, 0x10
+ mov r9, r3
+_0807B64C:
+ movs r4, 0
+ str r4, [sp, 0xC]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ mov r8, r4
+ cmp r4, r9
+ bge _0807B6D8
+ adds r6, r0, 0
+_0807B65C:
+ ldr r4, [r6]
+ adds r0, r4, 0
+ bl EntityExists
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B6CE
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl CanSee
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B6CE
+ ldr r0, _0807B794
+ ldr r0, [r0]
+ ldr r2, _0807B798
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0807B69A
+ adds r0, r7, 0
+ adds r1, r4, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl CanTarget
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0807B6CE
+_0807B69A:
+ adds r1, r4, 0x4
+ adds r0, r7, 0x4
+ bl GetMaxPositionDifference
+ ldr r3, [sp, 0x8]
+ cmp r3, r0
+ ble _0807B6CE
+ str r0, [sp, 0x8]
+ str r4, [sp, 0xC]
+ adds r0, r4, 0
+ bl GetEntityRoomIndex
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ ldr r1, [sp, 0x10]
+ adds r1, 0x88
+ ldr r4, [sp, 0xC]
+ ldr r0, [r4, 0x4]
+ str r0, [r1]
+ ldr r0, [sp, 0x10]
+ movs r2, 0xB6
+ lsls r2, 1
+ adds r1, r0, r2
+ ldr r0, [r4, 0x4]
+ str r0, [r1]
+_0807B6CE:
+ adds r6, 0x4
+ movs r3, 0x1
+ add r8, r3
+ cmp r8, r9
+ blt _0807B65C
+_0807B6D8:
+ ldr r0, _0807B79C
+ ldr r4, [sp, 0x8]
+ cmp r4, r0
+ bne _0807B6E2
+ b _0807B906
+_0807B6E2:
+ ldr r0, [sp, 0x10]
+ adds r0, 0x88
+ str r0, [sp, 0x28]
+ ldr r1, [sp, 0x10]
+ adds r1, 0x78
+ str r1, [sp, 0x24]
+ ldr r2, [sp, 0x4]
+ cmp r10, r2
+ beq _0807B6F6
+ b _0807B8E0
+_0807B6F6:
+ mov r3, r10
+ cmp r3, 0xFF
+ bne _0807B6FE
+ b _0807B8E0
+_0807B6FE:
+ movs r4, 0x4
+ ldrsh r0, [r7, r4]
+ movs r2, 0x6
+ ldrsh r1, [r7, r2]
+ bl GetMapTile_1
+ ldrh r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B7B2
+ ldrh r0, [r7, 0x6]
+ lsls r0, 16
+ ldrh r5, [r7, 0x4]
+ orrs r5, r0
+ movs r4, 0
+_0807B71E:
+ ldr r1, _0807B7A0
+ lsls r0, r4, 2
+ adds r0, r1
+ ldrh r1, [r0]
+ ldrh r3, [r7, 0x4]
+ adds r1, r3
+ lsls r1, 16
+ ldrh r0, [r0, 0x2]
+ ldrh r2, [r7, 0x6]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r5, r1, 16
+ orrs r5, r0
+ lsls r0, r5, 16
+ asrs r0, 16
+ asrs r1, r5, 16
+ bl GetMapTile_1
+ ldrb r0, [r0, 0x9]
+ cmp r0, r10
+ beq _0807B758
+ adds r0, r7, 0
+ adds r1, r4, 0
+ mov r2, sp
+ bl CanMoveForward
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B75E
+_0807B758:
+ adds r4, 0x1
+ cmp r4, 0x7
+ ble _0807B71E
+_0807B75E:
+ cmp r4, 0x8
+ bne _0807B7A4
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ adds r4, r0, 0
+ movs r0, 0x6
+ ldr r3, [sp, 0x24]
+ strb r0, [r3]
+ ldr r0, _0807B7A0
+ lsls r1, r4, 2
+ adds r1, r0
+ ldrh r0, [r1]
+ ldrh r4, [r7, 0x4]
+ adds r0, r4
+ ldr r2, [sp, 0x28]
+ strh r0, [r2]
+ ldrh r0, [r1, 0x2]
+ ldrh r7, [r7, 0x6]
+ adds r0, r7
+ ldr r1, [sp, 0x10]
+ adds r1, 0x8A
+ strh r0, [r1]
+ movs r0, 0x1
+ b _0807B910
+ .align 2, 0
+_0807B790: .4byte 0x0001358c
+_0807B794: .4byte gDungeonGlobalData
+_0807B798: .4byte 0x000037fc
+_0807B79C: .4byte 0x000f423f
+_0807B7A0: .4byte gAdjacentTileOffsets
+_0807B7A4:
+ movs r0, 0x5
+ ldr r3, [sp, 0x24]
+ strb r0, [r3]
+ ldr r4, [sp, 0x28]
+ str r5, [r4]
+ movs r0, 0x1
+ b _0807B910
+_0807B7B2:
+ ldr r0, _0807B8D0
+ mov r2, r10
+ lsls r1, r2, 7
+ ldr r3, _0807B8D4
+ adds r1, r3
+ ldr r0, [r0]
+ adds r1, r0, r1
+ str r1, [sp, 0x18]
+ lsls r1, r2, 1
+ ldr r4, _0807B8D8
+ adds r0, r4
+ adds r0, r1
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ str r1, [sp, 0x14]
+ ldr r3, _0807B8DC
+ str r3, [sp, 0x20]
+ movs r4, 0
+ str r4, [sp, 0x1C]
+ ldr r0, [sp, 0xC]
+ movs r1, 0x4
+ ldrsh r3, [r0, r1]
+ movs r2, 0x4
+ ldrsh r0, [r7, r2]
+ subs r2, r3, r0
+ cmp r2, 0
+ bge _0807B7EA
+ negs r2, r2
+_0807B7EA:
+ ldr r4, [sp, 0xC]
+ movs r0, 0x6
+ ldrsh r1, [r4, r0]
+ movs r4, 0x6
+ ldrsh r0, [r7, r4]
+ subs r1, r0
+ mov r8, r1
+ cmp r1, 0
+ bge _0807B802
+ mov r0, r8
+ negs r0, r0
+ mov r8, r0
+_0807B802:
+ cmp r8, r2
+ bge _0807B808
+ mov r8, r2
+_0807B808:
+ movs r1, 0
+ mov r9, r1
+ ldr r2, [sp, 0x10]
+ adds r2, 0x8A
+ str r2, [sp, 0x2C]
+ ldr r4, [sp, 0x1C]
+ ldr r0, [sp, 0x14]
+ cmp r4, r0
+ bge _0807B8AA
+ mov r10, r3
+ ldr r6, [sp, 0x18]
+_0807B81E:
+ movs r1, 0
+ ldrsh r3, [r6, r1]
+ mov r2, r10
+ subs r0, r2, r3
+ cmp r0, 0
+ bge _0807B82C
+ negs r0, r0
+_0807B82C:
+ ldr r4, [sp, 0xC]
+ movs r1, 0x6
+ ldrsh r4, [r4, r1]
+ mov r12, r4
+ movs r4, 0x2
+ ldrsh r2, [r6, r4]
+ mov r4, r12
+ subs r1, r4, r2
+ cmp r1, 0
+ bge _0807B842
+ negs r1, r1
+_0807B842:
+ cmp r1, r0
+ bge _0807B848
+ adds r1, r0, 0
+_0807B848:
+ movs r0, 0x4
+ ldrsh r4, [r7, r0]
+ subs r0, r3, r4
+ movs r3, 0x6
+ ldrsh r5, [r7, r3]
+ subs r3, r2, r5
+ movs r2, 0x1
+ negs r2, r2
+ cmp r0, r2
+ bge _0807B85E
+ adds r0, r2, 0
+_0807B85E:
+ cmp r3, r2
+ bge _0807B864
+ adds r3, r2, 0
+_0807B864:
+ cmp r0, 0x1
+ ble _0807B86A
+ movs r0, 0x1
+_0807B86A:
+ cmp r3, 0x1
+ ble _0807B870
+ movs r3, 0x1
+_0807B870:
+ adds r0, r4, r0
+ mov r4, r10
+ subs r2, r4, r0
+ cmp r2, 0
+ bge _0807B87C
+ negs r2, r2
+_0807B87C:
+ adds r0, r5, r3
+ mov r3, r12
+ subs r0, r3, r0
+ cmp r0, 0
+ bge _0807B888
+ negs r0, r0
+_0807B888:
+ cmp r0, r2
+ bge _0807B88E
+ adds r0, r2, 0
+_0807B88E:
+ cmp r0, r8
+ blt _0807B89E
+ ldr r4, [sp, 0x20]
+ cmp r4, r1
+ bge _0807B89E
+ mov r0, r9
+ str r0, [sp, 0x1C]
+ str r1, [sp, 0x20]
+_0807B89E:
+ adds r6, 0x4
+ movs r1, 0x1
+ add r9, r1
+ ldr r2, [sp, 0x14]
+ cmp r9, r2
+ blt _0807B81E
+_0807B8AA:
+ ldr r3, [sp, 0x20]
+ cmp r3, 0
+ blt _0807B8E0
+ movs r0, 0x5
+ ldr r4, [sp, 0x24]
+ strb r0, [r4]
+ ldr r1, [sp, 0x1C]
+ lsls r0, r1, 2
+ ldr r2, [sp, 0x18]
+ adds r0, r2
+ ldrh r1, [r0]
+ ldr r3, [sp, 0x28]
+ strh r1, [r3]
+ ldrh r0, [r0, 0x2]
+ ldr r4, [sp, 0x2C]
+ strh r0, [r4]
+ movs r0, 0x1
+ b _0807B910
+ .align 2, 0
+_0807B8D0: .4byte gDungeonGlobalData
+_0807B8D4: .4byte 0x00010884
+_0807B8D8: .4byte 0x00010844
+_0807B8DC: .4byte 0xfff0bdc1
+_0807B8E0:
+ movs r0, 0x5
+ ldr r1, [sp, 0x24]
+ strb r0, [r1]
+ ldr r2, [sp, 0xC]
+ ldrh r1, [r2, 0x4]
+ ldrh r0, [r7, 0x4]
+ subs r1, r0
+ subs r0, r1
+ ldr r3, [sp, 0x28]
+ strh r0, [r3]
+ ldrh r0, [r2, 0x6]
+ ldrh r1, [r7, 0x6]
+ subs r0, r1
+ subs r1, r0
+ ldr r0, [sp, 0x10]
+ adds r0, 0x8A
+ strh r1, [r0]
+ movs r0, 0x1
+ b _0807B910
+_0807B906:
+ adds r0, r7, 0
+ bl Explore
+ lsls r0, 24
+ lsrs r0, 24
+_0807B910:
+ add sp, 0x30
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end AvoidEnemies
+
+ thumb_func_start Explore
+Explore:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ adds r6, r0, 0
+ ldr r7, [r6, 0x70]
+ bl GetEntityRoomIndex
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xFF
+ bne _0807B9DC
+ movs r0, 0
+ str r0, [sp, 0x4]
+ adds r4, r7, 0
+ adds r4, 0x46
+ ldrb r0, [r4]
+ adds r0, 0x4
+ mov r8, r0
+ movs r0, 0x7
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ adds r0, r6, 0
+ bl IsAtJunction
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ beq _0807B96C
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ strb r0, [r4]
+ movs r2, 0x1
+ str r2, [sp, 0x4]
+_0807B96C:
+ movs r3, 0
+ movs r4, 0x78
+ adds r4, r7
+ mov r10, r4
+ adds r0, r7, 0
+ adds r0, 0x88
+ str r0, [sp, 0x8]
+ adds r7, 0x8A
+ ldr r5, _0807B9D4
+_0807B97E:
+ mov r1, r9
+ ldrb r0, [r1]
+ ldr r1, [r5]
+ adds r4, r0, r1
+ movs r0, 0x7
+ ands r4, r0
+ ldr r2, [sp, 0x4]
+ cmp r2, 0
+ beq _0807B994
+ cmp r4, r8
+ beq _0807B9AA
+_0807B994:
+ adds r0, r6, 0
+ adds r1, r4, 0
+ mov r2, sp
+ str r3, [sp, 0xC]
+ bl CanMoveForward
+ lsls r0, 24
+ ldr r3, [sp, 0xC]
+ cmp r0, 0
+ beq _0807B9AA
+ b _0807BB42
+_0807B9AA:
+ adds r5, 0x4
+ adds r3, 0x1
+ cmp r3, 0x7
+ ble _0807B97E
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ movs r1, 0x6
+ mov r3, r10
+ strb r1, [r3]
+ ldr r1, _0807B9D8
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0]
+ ldrh r4, [r6, 0x4]
+ adds r1, r4
+ ldr r2, [sp, 0x8]
+ strh r1, [r2]
+ ldrh r0, [r0, 0x2]
+ b _0807BB5A
+ .align 2, 0
+_0807B9D4: .4byte gFaceDirectionIncrements
+_0807B9D8: .4byte gAdjacentTileOffsets
+_0807B9DC:
+ ldr r0, _0807BA30
+ ldr r2, [r0]
+ lsls r1, r3, 1
+ ldr r4, _0807BA34
+ adds r0, r2, r4
+ adds r0, r1
+ movs r4, 0
+ ldrsh r1, [r0, r4]
+ mov r8, r1
+ lsls r0, r3, 7
+ ldr r1, _0807BA38
+ adds r0, r1
+ adds r2, r0
+ mov r9, r2
+ movs r2, 0x8A
+ lsls r2, 1
+ adds r0, r7, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0807BA40
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ adds r2, r7, 0
+ adds r2, 0x78
+ movs r1, 0x6
+ strb r1, [r2]
+ ldr r1, _0807BA3C
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r0]
+ ldrh r3, [r6, 0x4]
+ adds r1, r3
+ adds r2, 0x10
+ strh r1, [r2]
+ ldrh r0, [r0, 0x2]
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ adds r1, r7, 0
+ adds r1, 0x8A
+ strh r0, [r1]
+ b _0807BB60
+ .align 2, 0
+_0807BA30: .4byte gDungeonGlobalData
+_0807BA34: .4byte 0x00010844
+_0807BA38: .4byte 0x00010884
+_0807BA3C: .4byte gAdjacentTileOffsets
+_0807BA40:
+ adds r0, r7, 0
+ adds r0, 0x78
+ ldrb r1, [r0]
+ mov r10, r0
+ cmp r1, 0x4
+ beq _0807BAA2
+ mov r4, r8
+ cmp r4, 0
+ bne _0807BA84
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ adds r4, r0, 0
+ movs r0, 0x6
+ mov r1, r10
+ strb r0, [r1]
+ ldr r0, _0807BA80
+ lsls r2, r4, 2
+ adds r2, r0
+ ldrh r0, [r2]
+ ldrh r3, [r6, 0x4]
+ adds r0, r3
+ adds r1, r7, 0
+ adds r1, 0x88
+ strh r0, [r1]
+ ldrh r0, [r2, 0x2]
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ adds r1, 0x2
+ strh r0, [r1]
+ b _0807BB60
+ .align 2, 0
+_0807BA80: .4byte gAdjacentTileOffsets
+_0807BA84:
+ movs r5, 0
+_0807BA86:
+ mov r0, r8
+ bl DungeonRandomCapped
+ adds r4, r0, 0
+ ldr r0, [r6, 0x4]
+ lsls r1, r4, 2
+ mov r4, r9
+ adds r2, r1, r4
+ ldr r1, [r2]
+ cmp r0, r1
+ bne _0807BB18
+ adds r5, 0x1
+ cmp r5, 0x9
+ ble _0807BA86
+_0807BAA2:
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ movs r2, 0x6
+ ldrsh r1, [r6, r2]
+ bl GetMapTile_1
+ ldrh r1, [r0]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0807BB60
+ movs r0, 0x8
+ bl DungeonRandomCapped
+ adds r4, r0, 0
+ movs r3, 0
+ mov r9, r3
+_0807BAC4:
+ movs r0, 0x7
+ ands r4, r0
+ movs r0, 0x4
+ ldrsh r2, [r6, r0]
+ ldr r0, _0807BB14
+ lsls r1, r4, 2
+ adds r1, r0
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ adds r2, r0
+ mov r8, r2
+ movs r0, 0x6
+ ldrsh r2, [r6, r0]
+ movs r3, 0x2
+ ldrsh r0, [r1, r3]
+ adds r5, r2, r0
+ mov r0, r8
+ adds r1, r5, 0
+ bl GetMapTile_1
+ ldrb r0, [r0, 0x9]
+ cmp r0, 0xFF
+ bne _0807BB04
+ adds r0, r6, 0
+ adds r1, r4, 0
+ mov r2, sp
+ adds r2, 0x1
+ bl CanMoveForward
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807BB2E
+_0807BB04:
+ movs r0, 0x1
+ add r9, r0
+ adds r4, 0x1
+ mov r1, r9
+ cmp r1, 0x7
+ ble _0807BAC4
+ b _0807BB60
+ .align 2, 0
+_0807BB14: .4byte gAdjacentTileOffsets
+_0807BB18:
+ movs r0, 0x4
+ mov r3, r10
+ strb r0, [r3]
+ ldrh r1, [r2]
+ adds r0, r7, 0
+ adds r0, 0x88
+ strh r1, [r0]
+ ldrh r1, [r2, 0x2]
+ adds r0, 0x2
+ strh r1, [r0]
+ b _0807BB60
+_0807BB2E:
+ movs r0, 0x3
+ mov r4, r10
+ strb r0, [r4]
+ adds r0, r7, 0
+ adds r0, 0x88
+ mov r1, r8
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r5, [r0]
+ b _0807BB60
+_0807BB42:
+ movs r0, 0x3
+ mov r2, r10
+ strb r0, [r2]
+ ldr r0, _0807BB74
+ lsls r1, r4, 2
+ adds r1, r0
+ ldrh r0, [r1]
+ ldrh r3, [r6, 0x4]
+ adds r0, r3
+ ldr r4, [sp, 0x8]
+ strh r0, [r4]
+ ldrh r0, [r1, 0x2]
+_0807BB5A:
+ ldrh r6, [r6, 0x6]
+ adds r0, r6
+ strh r0, [r7]
+_0807BB60:
+ movs r0, 0x1
+ 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
+_0807BB74: .4byte gAdjacentTileOffsets
+ thumb_func_end Explore
+
+ thumb_func_start sub_807BB78
+sub_807BB78:
+ ldr r3, [r0, 0x70]
+ adds r1, r3, 0
+ adds r1, 0x78
+ movs r2, 0
+ strb r2, [r1]
+ adds r1, 0x10
+ ldr r0, [r0, 0x4]
+ str r0, [r1]
+ adds r0, r3, 0
+ adds r0, 0x80
+ str r2, [r0]
+ subs r0, 0x4
+ strh r2, [r0]
+ bx lr
+ thumb_func_end sub_807BB78
+
+ .align 2, 0 \ No newline at end of file
diff --git a/asm/code_807C4A0.s b/asm/code_807C4A0.s
deleted file mode 100644
index 9cbdbb5..0000000
--- a/asm/code_807C4A0.s
+++ /dev/null
@@ -1,136 +0,0 @@
- #include "asm/constants/gba_constants.inc"
- #include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start IsTargetInLineRange
-IsTargetInLineRange:
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r3, 0x4
- ldrsh r0, [r5, r3]
- subs r3, r1, r0
- cmp r3, 0
- bge _0807C4B6
- negs r3, r3
-_0807C4B6:
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- subs r1, r0
- cmp r1, 0
- bge _0807C4C6
- negs r1, r1
-_0807C4C6:
- adds r0, r1, 0
- cmp r1, r3
- bge _0807C4CE
- adds r0, r3, 0
-_0807C4CE:
- cmp r0, 0xA
- bgt _0807C578
- cmp r0, r2
- bgt _0807C578
- movs r6, 0x1
- negs r6, r6
- cmp r3, r1
- bne _0807C516
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bge _0807C4FE
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
- cmp r1, r0
- bgt _0807C574
-_0807C4FE:
- lsls r1, r2, 16
- lsls r0, r3, 16
- movs r6, 0x7
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- ble _0807C570
- b _0807C574
-_0807C516:
- movs r3, 0x4
- ldrsh r1, [r4, r3]
- movs r7, 0x4
- ldrsh r0, [r5, r7]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bne _0807C532
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
-_0807C532:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bge _0807C546
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- beq _0807C574
-_0807C546:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bne _0807C55A
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- bgt _0807C574
-_0807C55A:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _0807C570
- movs r6, 0x6
-_0807C570:
- cmp r6, 0
- blt _0807C578
-_0807C574:
- movs r0, 0x1
- b _0807C57A
-_0807C578:
- movs r0, 0
-_0807C57A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsTargetInLineRange
-
- .align 2, 0 \ No newline at end of file
diff --git a/asm/code_807C7AC.s b/asm/code_807C7AC.s
deleted file mode 100644
index b43caa8..0000000
--- a/asm/code_807C7AC.s
+++ /dev/null
@@ -1,322 +0,0 @@
- #include "asm/constants/gba_constants.inc"
- #include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start WeightMove
-WeightMove:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- mov r8, r2
- lsls r1, 16
- asrs r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- movs r6, 0x1
- ldr r4, [r2, 0x70]
- adds r7, r4, 0
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- beq _0807C7D6
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _0807C7DA
-_0807C7D6:
- movs r0, 0x1
- b _0807C848
-_0807C7DA:
- adds r0, r5, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C804
- ldr r0, _0807C7FC
- ldr r0, [r0]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- ldr r2, _0807C800
- adds r0, r2
- adds r0, r1
- ldrb r6, [r0]
- b _0807C846
- .align 2, 0
-_0807C7FC: .4byte gDungeonGlobalData
-_0807C800: .4byte 0x0000363c
-_0807C804:
- adds r0, r5, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C828
- ldrb r1, [r7, 0xE]
- movs r2, 0xC
- negs r2, r2
- adds r0, r2, 0
- subs r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0807C846
- movs r6, 0x1
- b _0807C846
-_0807C828:
- adds r0, r5, 0
- movs r1, 0xB
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C846
- adds r0, r5, 0
- mov r1, r8
- mov r2, r9
- bl WeightWeakTypePicker
- adds r0, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0807C846:
- adds r0, r6, 0
-_0807C848:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end WeightMove
-
- thumb_func_start TargetRegularAttack
-TargetRegularAttack:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x50
- adds r7, r0, 0
- str r1, [sp, 0x40]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x44]
- ldr r0, [r7, 0x70]
- movs r1, 0
- mov r8, r1
- adds r1, r0, 0
- adds r1, 0x46
- ldrb r6, [r1]
- adds r0, 0xE8
- ldrb r0, [r0]
- movs r3, 0x8
- mov r10, r3
- cmp r0, 0x1
- bne _0807C886
- movs r0, 0x1
- mov r10, r0
-_0807C886:
- movs r4, 0
- adds r0, r7, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807C8A4
- adds r0, r7, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C8A6
-_0807C8A4:
- movs r4, 0x1
-_0807C8A6:
- str r4, [sp, 0x48]
- adds r0, r7, 0
- movs r1, 0x8
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4C]
- movs r1, 0
- mov r9, r1
- cmp r9, r10
- bge _0807C952
-_0807C8BE:
- movs r0, 0x7
- ands r6, r0
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- ldr r1, _0807C95C
- lsls r2, r6, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r3, 0x6
- ldrsh r1, [r7, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTile_1
- ldr r5, [r0, 0x10]
- cmp r5, 0
- beq _0807C948
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C948
- adds r0, r7, 0
- adds r1, r6, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C948
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0
- ldr r3, [sp, 0x44]
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807C948
- ldr r0, [sp, 0x4C]
- cmp r0, 0
- beq _0807C922
- ldr r0, [r5, 0x70]
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0807C948
-_0807C922:
- mov r1, r8
- lsls r4, r1, 2
- mov r3, sp
- adds r0, r3, r4
- str r6, [r0]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl WeightMove
- add r1, sp, 0x20
- adds r1, r4
- str r0, [r1]
- ldr r0, [sp, 0x48]
- cmp r0, 0
- beq _0807C960
- movs r1, 0x1
- add r8, r1
-_0807C948:
- movs r3, 0x1
- add r9, r3
- adds r6, 0x1
- cmp r9, r10
- blt _0807C8BE
-_0807C952:
- mov r0, r8
- cmp r0, 0
- bne _0807C966
- movs r0, 0
- b _0807C9E8
- .align 2, 0
-_0807C95C: .4byte gAdjacentTileOffsets
-_0807C960:
- ldr r1, [sp, 0x40]
- str r6, [r1]
- b _0807C9E6
-_0807C966:
- movs r4, 0
- movs r3, 0
- mov r0, r8
- cmp r0, 0
- ble _0807C984
- add r1, sp, 0x20
- mov r2, r8
-_0807C974:
- ldr r0, [r1]
- cmp r3, r0
- bge _0807C97C
- adds r3, r0, 0
-_0807C97C:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C974
-_0807C984:
- mov r1, r8
- cmp r1, 0
- ble _0807C9A0
- movs r5, 0
- add r1, sp, 0x20
- mov r2, r8
-_0807C990:
- ldr r0, [r1]
- cmp r3, r0
- beq _0807C998
- str r5, [r1]
-_0807C998:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C990
-_0807C9A0:
- mov r3, r8
- cmp r3, 0
- ble _0807C9B4
- add r1, sp, 0x20
- mov r2, r8
-_0807C9AA:
- ldm r1!, {r0}
- adds r4, r0
- subs r2, 0x1
- cmp r2, 0
- bne _0807C9AA
-_0807C9B4:
- adds r0, r4, 0
- bl DungeonRandomCapped
- adds r1, r0, 0
- movs r2, 0
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [sp, 0x20]
- subs r1, r0
- cmp r1, 0
- blt _0807C9DC
- add r3, sp, 0x20
-_0807C9CC:
- adds r3, 0x4
- adds r2, 0x1
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [r3]
- subs r1, r0
- cmp r1, 0
- bge _0807C9CC
-_0807C9DC:
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [sp, 0x40]
- str r0, [r1]
-_0807C9E6:
- movs r0, 0x1
-_0807C9E8:
- add sp, 0x50
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end TargetRegularAttack
-
- .align 2, 0 \ No newline at end of file
diff --git a/asm/code_8090208.s b/asm/code_8090208.s
index 81ff2ec..5b097fe 100644
--- a/asm/code_8090208.s
+++ b/asm/code_8090208.s
@@ -676,7 +676,7 @@ _080907DA:
bne _0809080C
ldr r1, _08090808
adds r0, r7, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
movs r0, 0
b _0809080E
.align 2, 0
diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s
index 32f6f5d..e354b7d 100644
--- a/asm/code_8098BDC.s
+++ b/asm/code_8098BDC.s
@@ -3,7 +3,7 @@
.syntax unified
- .text
+ .text
thumb_func_start sub_8098FCC
sub_8098FCC:
@@ -4305,7 +4305,7 @@ _0809B0E4:
lsls r2, 4
ldr r3, _0809B13C
adds r2, r3
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_0809B0F6:
adds r0, r4, 0
bl sub_809AE3C
@@ -4602,7 +4602,7 @@ _0809B318:
lsls r2, 4
ldr r3, _0809B3D8
adds r2, r3
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
_0809B32A:
ldr r0, _0809B3DC
mov r8, r0
@@ -4614,7 +4614,7 @@ _0809B32A:
ldr r1, _0809B3E0
adds r0, r4, 0
adds r2, r7, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
adds r7, r4, 0
_0809B344:
adds r0, r6, 0
@@ -7670,7 +7670,7 @@ sub_809CBBC:
adds r0, r3
ldr r3, [r0]
mov r0, sp
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, _0809CC14
ldr r0, [r0]
movs r1, 0x98
diff --git a/asm/friend_rescue.s b/asm/friend_rescue.s
index 241bbf6..44b8b08 100644
--- a/asm/friend_rescue.s
+++ b/asm/friend_rescue.s
@@ -1542,7 +1542,7 @@ _080335C0:
adds r0, r4
ldr r1, _080335F0
add r2, sp, 0x14
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r5]
adds r0, r4
b _0803388E
diff --git a/asm/kecleon_items_1.s b/asm/kecleon_items_1.s
index e892e48..97b2812 100644
--- a/asm/kecleon_items_1.s
+++ b/asm/kecleon_items_1.s
@@ -241,7 +241,7 @@ _0801AB90:
ldr r1, _0801AC08
adds r0, r5, 0
add r2, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r4, _0801AC0C
ldr r0, [r4]
adds r0, 0x54
diff --git a/asm/makuhita_dojo.s b/asm/makuhita_dojo.s
index f43f21f..7d7680e 100644
--- a/asm/makuhita_dojo.s
+++ b/asm/makuhita_dojo.s
@@ -829,7 +829,7 @@ _08030608:
add r0, sp, 0x8
ldr r1, _08030664
adds r2, r5, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
mov r5, r8
ldr r0, [r5]
ldr r3, [r0, 0x64]
diff --git a/asm/wonder_mail_2.s b/asm/wonder_mail_2.s
index 383a1c6..19e314f 100644
--- a/asm/wonder_mail_2.s
+++ b/asm/wonder_mail_2.s
@@ -139,7 +139,7 @@ _0802BFE8:
adds r1, r0, 0
mov r0, r8
mov r2, r9
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x38]
movs r0, 0
diff --git a/asm/wonder_mail_4.s b/asm/wonder_mail_4.s
index 8103af1..c4c2ccd 100644
--- a/asm/wonder_mail_4.s
+++ b/asm/wonder_mail_4.s
@@ -865,7 +865,7 @@ _08030EE8:
ldr r1, _08030F54
adds r0, r6, 0
adds r2, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r5]
ldr r3, [r0, 0x10]
mov r0, r8
diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s
index e461b13..aa081ae 100644
--- a/asm/wonder_mail_5.s
+++ b/asm/wonder_mail_5.s
@@ -56,7 +56,7 @@ _08031B2C:
ldr r1, _08031B8C
ldrb r2, [r5, 0x5]
add r0, sp, 0x4
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
str r6, [sp]
@@ -71,7 +71,7 @@ _08031B2C:
adds r2, r0, 0
add r0, sp, 0x4
adds r1, r4, 0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
str r6, [sp]
@@ -136,7 +136,7 @@ _08031BC2:
ldrb r2, [r4, 0x5]
ldr r0, [sp, 0xD8]
ldr r1, _08031C2C
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
mov r0, r8
@@ -167,7 +167,7 @@ _08031C30:
adds r0, r5, 0
ldr r1, _08031C54
mov r2, r9
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
mov r1, r8
@@ -194,7 +194,7 @@ _08031C70:
adds r0, r5, 0
ldr r1, _08031C98
_08031C7E:
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
mov r2, r8
@@ -214,7 +214,7 @@ _08031C9C:
adds r2, r0, 0
adds r0, r5, 0
ldr r1, _08031CD0
- bl ExpandPlaceholdersBuffer
+ bl sprintf_2
ldr r0, [r7]
ldr r3, [r0, 0x10]
mov r2, r8
diff --git a/data/data_80F4E2C.s b/data/data_80F4E2C.s
index 367ed2e..1d81050 100644
--- a/data/data_80F4E2C.s
+++ b/data/data_80F4E2C.s
@@ -805,28 +805,3 @@ gUnknown_80F51EC: @ 80F51EC
.global gUnknown_80F520C
gUnknown_80F520C: @ 80F520C
.incbin "baserom.gba", 0xF520C, 0x20
-
- .global gTypeEffectivenessChart
-gTypeEffectivenessChart: @ 80F522C
- .incbin "baserom.gba", 0xF522C, 0x288
-
- .global gUnknown_80F54B4
-gUnknown_80F54B4: @ 80F54B4
- .incbin "baserom.gba", 0xF54B4, 0x40
-
- .global gUnknown_80F54F4
-gUnknown_80F54F4: @ 80F54F4
- .incbin "baserom.gba", 0xF54F4, 0xA0
-
- .global gWarpScarfActivationChances
-gWarpScarfActivationChances: @ 80F5594
-@ replacing .incbin "baserom.gba", 0xF5594, 0x28
- .2byte 0, 6, 12, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290, 310, 999, 0
-
- .global gUnknown_80F55BC
-gUnknown_80F55BC: @ 80F55BC
- .incbin "baserom.gba", 0xF55BC, 0x30
-
- .global gUnknown_80F55EC
-gUnknown_80F55EC: @ 80F55EC
- .incbin "baserom.gba", 0xF55EC, 0x30
diff --git a/data/data_80F54B4.s b/data/data_80F54B4.s
new file mode 100644
index 0000000..3b2262a
--- /dev/null
+++ b/data/data_80F54B4.s
@@ -0,0 +1,22 @@
+ .section .rodata
+
+ .global gUnknown_80F54B4
+gUnknown_80F54B4: @ 80F54B4
+ .incbin "baserom.gba", 0xF54B4, 0x40
+
+ .global gUnknown_80F54F4
+gUnknown_80F54F4: @ 80F54F4
+ .incbin "baserom.gba", 0xF54F4, 0xA0
+
+ .global gWarpScarfActivationChances
+gWarpScarfActivationChances: @ 80F5594
+@ replacing .incbin "baserom.gba", 0xF5594, 0x28
+ .2byte 0, 6, 12, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290, 310, 999, 0
+
+ .global gUnknown_80F55BC
+gUnknown_80F55BC: @ 80F55BC
+ .incbin "baserom.gba", 0xF55BC, 0x30
+
+ .global gUnknown_80F55EC
+gUnknown_80F55EC: @ 80F55EC
+ .incbin "baserom.gba", 0xF55EC, 0x30
diff --git a/data/data_8106A4C.s b/data/data_8106A4C.s
index d8e604b..5cb7a3b 100644
--- a/data/data_8106A4C.s
+++ b/data/data_8106A4C.s
@@ -347,18 +347,3 @@ gUnknown_8106F54: @ 8106F54
gUnknown_8106F64: @ 8106F64
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0xC0, 0x00, 0x00
-
- .global gTypeEffectivenessMultipliers
-gTypeEffectivenessMultipliers: @ 8106F6C
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00
-
- .global gUnknown_8106F7C
-gUnknown_8106F7C: @ 8106F7C
- .incbin "baserom.gba", 0x106F7C, 0x28
-
- .global gUnknown_8106FA4
-gUnknown_8106FA4: @ 8106FA4
- .string "{COLOR_2}%c%s{END_COLOR_TEXT_2}\0"
diff --git a/data/data_8106F7C.s b/data/data_8106F7C.s
new file mode 100644
index 0000000..07165d7
--- /dev/null
+++ b/data/data_8106F7C.s
@@ -0,0 +1,9 @@
+ .section .rodata
+
+ .global gUnknown_8106F7C
+gUnknown_8106F7C: @ 8106F7C
+ .incbin "baserom.gba", 0x106F7C, 0x28
+
+ .global gUnknown_8106FA4
+gUnknown_8106FA4: @ 8106FA4
+ .string "{COLOR_2}%c%s{END_COLOR_TEXT_2}\0"
diff --git a/include/charge_move.h b/include/charge_move.h
index fd88a62..e1ef306 100644
--- a/include/charge_move.h
+++ b/include/charge_move.h
@@ -3,9 +3,7 @@
#include "dungeon_entity.h"
-// 0x570AC
bool8 MoveMatchesChargingStatus(struct DungeonEntity *pokemon, struct PokemonMove *move);
-// 0x570F4
// checkCharge = Check for the move named Charge.
bool8 IsCharging(struct DungeonEntity *pokemon, bool8 checkCharge);
diff --git a/include/code_800D090.h b/include/code_800D090.h
new file mode 100644
index 0000000..6f85dd4
--- /dev/null
+++ b/include/code_800D090.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CODE_800D090_H
+#define GUARD_CODE_800D090_H
+
+void sprintf_2(char *buffer, const char *text, ...);
+
+#endif \ No newline at end of file
diff --git a/include/constants/move.h b/include/constants/move.h
index 0601969..e5de485 100644
--- a/include/constants/move.h
+++ b/include/constants/move.h
@@ -1,7 +1,9 @@
#ifndef GUARD_CONSTANTS_MOVE_H
#define GUARD_CONSTANTS_MOVE_H
-enum MoveFlags
+#define STRUGGLE_MOVE_INDEX 4
+
+enum MoveFlag
{
MOVE_FLAG_EXISTS = 1 << 0,
MOVE_FLAG_LINKED = 1 << 1, // This move is linked with the previous move in the Pokémon's moveset.
@@ -11,6 +13,13 @@ enum MoveFlags
MOVE_FLAG_DISABLED = 1 << 5 // Disabled by an effect like Taunt.
};
+enum MoveFlag2
+{
+ MOVE_FLAG_SEALED = 1 << 0,
+ MOVE_FLAG_TEMPORARY = 1 << 3, // Used for moves copied by Mimic.
+ MOVE_FLAG_REPLACE = 1 << 5 // Used for moves copied by Sketch.
+};
+
enum AccuracyType
{
// Accuracy used for all moves.
@@ -28,7 +37,6 @@ struct MoveData
u8 *namePointer;
/* 0x4 */ s16 power;
u8 type;
- u8 fill7;
// Determines the range of moves.
/* 0x8 */ u16 targetingFlags[2]; // 0 for player and 1 for AI
// The AI consider certain moves to have different range than they actually do.
@@ -52,7 +60,7 @@ struct MoveData
struct PokemonMove
{
u8 moveFlags;
- bool8 sealed;
+ u8 moveFlags2;
u16 moveID;
u8 PP;
u8 powerBoost; // How much the move is boosted by Ginsengs.
diff --git a/include/constants/type.h b/include/constants/type.h
index 6ca9177..c6fab07 100644
--- a/include/constants/type.h
+++ b/include/constants/type.h
@@ -1,6 +1,8 @@
#ifndef GUARD_CONSTANTS_TYPE_H
#define GUARD_CONSTANTS_TYPE_H
+#define NUM_TYPES 18
+
#define TYPE_NONE 0x0
#define TYPE_NORMAL 0x1
#define TYPE_FIRE 0x2
diff --git a/include/dungeon_action.h b/include/dungeon_action.h
index 48f81d5..d625ba5 100644
--- a/include/dungeon_action.h
+++ b/include/dungeon_action.h
@@ -3,9 +3,8 @@
#include "dungeon_entity.h"
-// 0x44C94
+void ResetAction(struct DungeonActionContainer *actionPointer);
void SetAction(struct DungeonActionContainer *actionPointer, u16 action);
-// 0x44CA0
void SetWalkAction(struct DungeonActionContainer *actionPointer, s16 species);
#endif
diff --git a/include/dungeon_ai_attack.h b/include/dungeon_ai_attack.h
index 1878889..cd8d9d8 100644
--- a/include/dungeon_ai_attack.h
+++ b/include/dungeon_ai_attack.h
@@ -3,6 +3,8 @@
#include "dungeon_entity.h"
+#define RANGED_ATTACK_RANGE 10
+
struct MoveTargetResults
{
bool8 moveUsable;
@@ -10,9 +12,13 @@ struct MoveTargetResults
s32 moveWeight;
};
-// 0x7BB94
void DecideAttack(struct DungeonEntity *pokemon);
-// 0x7C04C
s32 FindMoveTarget(struct MoveTargetResults *moveTargetResults, struct DungeonEntity *pokemon, struct PokemonMove *move);
+bool8 IsTargetInLineRange(struct DungeonEntity *user, struct DungeonEntity *target, s32 range);
+s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, u32 hasStatusChecker);
+bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker);
+s32 WeightMove(struct DungeonEntity *user, s32 targetingFlags, struct DungeonEntity *target, u32 moveType);
+bool8 TargetRegularAttack(struct DungeonEntity *pokemon, u32 *targetDir, bool8 checkPetrified);
+bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange);
#endif
diff --git a/include/dungeon_ai_attack_1.h b/include/dungeon_ai_attack_1.h
deleted file mode 100644
index 7272256..0000000
--- a/include/dungeon_ai_attack_1.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_DUNGEON_AI_ATTACK_1_H
-#define GUARD_DUNGEON_AI_ATTACK_1_H
-
-#include "dungeon_entity.h"
-
-// 0x7C580
-s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, u32 hasStatusChecker);
-// 0x7C648
-bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker);
-
-#endif
diff --git a/include/dungeon_ai_attack_2.h b/include/dungeon_ai_attack_2.h
deleted file mode 100644
index 00711b6..0000000
--- a/include/dungeon_ai_attack_2.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef GUARD_DUNGEON_AI_ATTACK_2_H
-#define GUARD_DUNGEON_AI_ATTACK_2_H
-
-#include "dungeon_entity.h"
-
-// 0x7C9F8
-bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange);
-
-#endif
diff --git a/include/dungeon_ai_item_weight.h b/include/dungeon_ai_item_weight.h
index a498744..871e68b 100644
--- a/include/dungeon_ai_item_weight.h
+++ b/include/dungeon_ai_item_weight.h
@@ -3,9 +3,7 @@
#include "dungeon_entity.h"
-// 0x48F28
u32 EvaluateItem(struct DungeonEntity *targetPokemon, struct ItemSlot *item, u32 itemTargetFlags);
-// 0x494EC
bool8 CanTargetAdjacentPokemon(struct DungeonEntity *pokemon);
#endif
diff --git a/include/dungeon_ai_items.h b/include/dungeon_ai_items.h
index 5daf7b0..91e0a22 100644
--- a/include/dungeon_ai_items.h
+++ b/include/dungeon_ai_items.h
@@ -4,13 +4,9 @@
#include "dungeon_entity.h"
#include "position.h"
-// 0x73658
void DecideUseItem(struct DungeonEntity *pokemon);
-// 0x739DC
void FindStraightThrowableTargets(struct DungeonEntity *pokemon, s32 thrownAIFlag, struct ItemSlot *item, bool8 ignoreRollChance);
-// 0x73AA0
void FindRockItemTargets(struct DungeonEntity *pokemon, struct ItemSlot *item, struct Position potentialTargets[], bool8 ignoreRollChance);
-// 0x73B78
void TargetThrownItem(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, struct ItemSlot *item, s32 targetingFlags, bool8 ignoreRollChance);
#endif
diff --git a/include/dungeon_ai_movement.h b/include/dungeon_ai_movement.h
index 27bb00f..d53ab06 100644
--- a/include/dungeon_ai_movement.h
+++ b/include/dungeon_ai_movement.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x75990
void DecideAction(struct DungeonEntity *pokemon);
#endif
diff --git a/include/dungeon_ai_targeting.h b/include/dungeon_ai_targeting.h
index 945c490..ae5b952 100644
--- a/include/dungeon_ai_targeting.h
+++ b/include/dungeon_ai_targeting.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x71138
bool8 CanAttackInFront(struct DungeonEntity *pokemon, s32 direction);
#endif
diff --git a/include/dungeon_ai_targeting_1.h b/include/dungeon_ai_targeting_1.h
index 49b700f..d59a0ee 100644
--- a/include/dungeon_ai_targeting_1.h
+++ b/include/dungeon_ai_targeting_1.h
@@ -3,9 +3,7 @@
#include "dungeon_entity.h"
-// 0x71494
bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon);
-// 0x71518
bool8 ShouldAvoidEnemiesAndShowEffect(struct DungeonEntity *pokemon, bool8 showRunAwayEffect);
#endif
diff --git a/include/dungeon_ai_targeting_2.h b/include/dungeon_ai_targeting_2.h
index c314646..5fe43a3 100644
--- a/include/dungeon_ai_targeting_2.h
+++ b/include/dungeon_ai_targeting_2.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x71598
u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified);
#endif
diff --git a/include/dungeon_capabilities.h b/include/dungeon_capabilities.h
index 6574b32..f4a0306 100644
--- a/include/dungeon_capabilities.h
+++ b/include/dungeon_capabilities.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x70B6C
bool8 CannotMove(struct DungeonEntity *pokemon, bool8 checkBlinker);
#endif
diff --git a/include/dungeon_capabilities_1.h b/include/dungeon_capabilities_1.h
index 1319230..5c8e3d0 100644
--- a/include/dungeon_capabilities_1.h
+++ b/include/dungeon_capabilities_1.h
@@ -3,13 +3,9 @@
#include "dungeon_entity.h"
-// 0x70C60
bool8 CannotUseItems(struct DungeonEntity *pokemon);
-// 0x70CD0
bool8 CannotAct(struct DungeonEntity *pokemon);
-// 0x70d04
bool8 CannotAttack(struct DungeonEntity *pokemon, bool8 skipSleep);
-// 0x70D6C
bool8 CanMoveInDirection(struct DungeonEntity *pokemon, u32 facingDir);
#endif
diff --git a/include/dungeon_engine.h b/include/dungeon_engine.h
index d2be40b..e4fa7f4 100644
--- a/include/dungeon_engine.h
+++ b/include/dungeon_engine.h
@@ -1,9 +1,7 @@
#ifndef GUARD_DUNGEON_ENGINE_H
#define GUARD_DUNGEON_ENGINE_H
-// 0x441BC
bool8 IsBossBattle();
-// 0x441E8
bool8 IsFixedDungeon();
#endif
diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h
index 2567f79..1e4b884 100644
--- a/include/dungeon_entity.h
+++ b/include/dungeon_entity.h
@@ -7,10 +7,20 @@
#include "position.h"
#define MAX_STAT_STAGE 20
+#define STAT_MULTIPLIER_THRESHOLD 63
+#define DEFAULT_STAT_STAGE 10
+#define DEFAULT_STAT_MULTIPLIER 256
#define MAX_MOVEMENT_SPEED 4
#define MAX_STOCKPILE_COUNT 3
#define NUM_SPEED_TURN_COUNTERS 5
+#define STAT_STAGE_ATTACK 0
+#define STAT_STAGE_SPECIAL_ATTACK 1
+#define STAT_STAGE_DEFENSE 0
+#define STAT_STAGE_SPECIAL_DEFENSE 1
+#define STAT_STAGE_ACCURACY 0
+#define STAT_STAGE_EVASION 1
+
struct DungeonActionContainer
{
/* 0x0 */ u16 action;
@@ -18,7 +28,6 @@ struct DungeonActionContainer
u8 fill3;
// Additional parameter alongside actionIndex. Used for things like indicating which move a Pokémon should use from its moveset.
/* 0x4 */ u8 actionUseIndex;
- u8 fill5[0x8 - 0x5];
// Position of the Pokémon the last time it threw an item.
/* 0x8 */ struct Position lastItemThrowPosition;
u8 unkC;
@@ -39,7 +48,6 @@ struct DungeonEntityData
/* 0x8 */ u8 shopkeeperMode;
/* 0x9 */ u8 level;
/* 0xA */ u8 partyIndex; // Leader is 0, partner is 1, etc.
- u8 fillB;
/* 0xC */ s16 IQ;
/* 0xE */ s16 HP;
/* 0x10 */ s16 maxHP;
@@ -52,33 +60,29 @@ struct DungeonEntityData
/* 0x18 */ u32 expPoints;
// Temporary stat boosts/drops from effects like Growl or Swords Dance.
// These start at 10 and are in the range [1, 19].
- /* 0x1C */ s16 attackStage;
- /* 0x1E */ s16 specialAttackStage;
- /* 0x20 */ s16 defenseStage;
- /* 0x22 */ s16 specialDefenseStage;
- /* 0x24 */ s16 accuracyStage;
- /* 0x26 */ s16 evasionStage;
+ // Index 0 is Attack. Index 1 is Special Attack.
+ /* 0x1C */ s16 attackStages[2];
+ // Index 0 is Defense. Index 1 is Special Defense.
+ /* 0x20 */ s16 defenseStages[2];
+ // Index 0 is accuracy. Index 1 is evasion.
+ /* 0x24 */ s16 accuracyStages[2];
// // When a Fire-type move is used on a Pokémon with Flash Fire, this value increases the power of the Pokémon's Fire-type moves.
/* 0x28 */ s16 flashFireBoost;
- u8 fill2A[0x2C - 0x2A];
// These start at 0x1000, and are halved by certain moves like Screech to lower the corresponding stat.
- /* 0x2C */ s32 attackMultiplier;
- /* 0x30 */ s32 specialAttackMultiplier;
- /* 0x34 */ s32 defenseMultiplier;
- /* 0x38 */ s32 specialDefenseMultiplier;
+ // Index 0 is Attack. Index 1 is Special Attack.
+ /* 0x2C */ s32 attackMultipliers[2];
+ // Index 0 is Defense. Index 1 is Special Defense.
+ /* 0x34 */ s32 defenseMultipliers[2];
/* 0x3C */ s16 hiddenPowerPower;
/* 0x3E */ u8 hiddenPowerType;
u8 fill3F;
/* 0x40 */ u8 joinLocation; // Uses the dungeon index in dungeon.h.
- u8 fill41[0x44 - 0x41];
/* 0x44 */ struct DungeonActionContainer action;
u8 fill55[0x58 - 0x55];
// Position of the target that the Pokémon wants throw an item at.
/* 0x58 */ struct Position itemTargetPosition;
- /* 0x5C */ u8 type1;
- /* 0x5D */ u8 type2;
- /* 0x5E */ u8 ability1;
- /* 0x5F */ u8 ability2;
+ /* 0x5C */ u8 types[2];
+ /* 0x5E */ u8 abilities[2];
/* 0x60 */ struct ItemSlot heldItem;
u8 fill64[0x68 - 0x64];
/* 0x68 */ struct Position previousPosition1;
@@ -90,7 +94,6 @@ struct DungeonEntityData
/* 0x7A */ bool8 hasTarget;
/* 0x7B */ bool8 turnAround;
/* 0x7C */ u16 targetPokemonSpawnIndex;
- u8 fill7E[0x80 - 0x7E];
/* 0x80 */ u32 targetPokemon;
u8 fill84[0x88 - 0x84];
/* 0x88 */ struct Position targetMovePosition;
@@ -168,7 +171,6 @@ struct DungeonEntityData
/* 0xFD */ u8 perishSongTimer; // When this reaches 0, the Pokémon faints from Perish Song. Doubles as a bool for whether the Pokémon is afflicted by Perish Song.
u8 fillFE[0x100 - 0xFE];
/* 0x100 */ u8 targetingDecoy; // If the Pokémon is targeting a decoy, this indicates whether the decoy target is a team or wild Pokémon.
- u8 fill101[0x104 - 0x101];
/* 0x104 */ s32 movementSpeed;
// The turn counter for movement speed up/down is split into five timers each. Multiple timers are used if the Pokémon is affected by multiple
// speed-up/slow effects at once, like using Agility twice.
@@ -179,10 +181,8 @@ struct DungeonEntityData
// When true, an AI Pokémon will move in a random direction every turn.
// Unclear where this is set in-game; it is not set by statuses (e.g., confusion) or mission clients.
/* 0x114 */ bool8 moveRandomly;
- u8 fill115[0x118 - 0x115];
/* 0x118 */ struct PokemonMove moves[MAX_MON_MOVES];
/* 0x138 */ u8 struggleMoveFlags;
- u8 fill139[0x13C - 0x139];
/* 0x13C */ u32 belly;
/* 0x140 */ u32 maxBelly;
/* 0x144 */ bool8 movingIntoTarget; // True if an AI Pokémon is following another Pokémon and is already adjacent to them.
@@ -201,7 +201,6 @@ struct DungeonEntityData
u8 unk15F;
u8 fill160[0x169 - 0x160];
u8 turnsSinceWarpScarfActivation;
- u8 fill16A[0x16C - 0x16A];
/* 0x16C */ struct Position targetPosition;
/* 0x170 */ struct Position posPixel;
u32 unk174;
@@ -210,7 +209,6 @@ struct DungeonEntityData
/* 0x184 */ struct Position previousTargetMovePosition1;
/* 0x188 */ struct Position32 previousTargetMovePosition2;
/* 0x190 */ u8 lastMoveDirection; // The last direction that the Pokémon moved in.
- u8 fill191[0x194 - 0x191];
// Number of tiles that the Pokémon moved last, multiplied by 0x100.
/* 0x194 */ struct Position32 lastMoveIncrement;
/* 0x19C */ u8 walkAnimationCounter; // Set when the Pokémon starts moving, and counts down until the Pokémon's walk animation stops.
@@ -220,9 +218,7 @@ struct DungeonEntityData
/* 0x1F6 */ bool8 notMoving;
u8 fill1F7[0x1FA - 0x1F7];
/* 0x1FA */ u8 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
- u8 fill1FB;
/* 0x1FC */ u16 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn.
- u8 fill1FE[0x200 - 0x1FE];
/* 0x200 */ u32 statusSprites;
u32 unk204;
};
@@ -273,7 +269,6 @@ struct DungeonEntity
/* 0x6A */ u8 unk6B;
/* 0x6C */ u8 facingDir;
/* 0x6D */ u8 facingDir2; // Duplicate of 0x6C?
- u8 fill6D[0x70 - 0x6E];
/* 0x70 */ struct DungeonEntityData *entityData;
};
diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h
index 74e052e..924fa9e 100644
--- a/include/dungeon_global_data.h
+++ b/include/dungeon_global_data.h
@@ -53,7 +53,6 @@ struct DungeonGlobalData
/* 0x3A0E */ s16 tileset;
u8 fill3A10[0x3A14 - 0x3A10];
/* 0x3A14 */ s16 bossBattleIndex;
- u8 fill3A16[0x3A18 - 0x3A16];
/* 0x3A18 */ struct MapTile mapTiles[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X];
u8 fillE218[0xE23C - 0xE218];
s16 unkE23C;
diff --git a/include/dungeon_items.h b/include/dungeon_items.h
index 8eb1718..0c227c2 100644
--- a/include/dungeon_items.h
+++ b/include/dungeon_items.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x46CB0
bool8 HasItem(struct DungeonEntity *pokemon, u8 itemIndex);
#endif
diff --git a/include/dungeon_map_access.h b/include/dungeon_map_access.h
index c715483..dc5790c 100644
--- a/include/dungeon_map_access.h
+++ b/include/dungeon_map_access.h
@@ -8,9 +8,7 @@ struct unkStruct_202F190
struct MapTile* unk0[6];
};
-// 0x4954C
struct MapTile* GetMapTile_1(s32 x, s32 y);
-// 0x49590
struct MapTile* GetMapTile_2(s32 x, s32 y);
#endif
diff --git a/include/dungeon_movement.h b/include/dungeon_movement.h
index d15ef1b..111d98b 100644
--- a/include/dungeon_movement.h
+++ b/include/dungeon_movement.h
@@ -1,7 +1,6 @@
#ifndef GUARD_DUNGEON_MOVEMENT_H
#define GUARD_DUNGEON_MOVEMENT_H
-// 0x70328
u8 GetCrossableTerrain(s16 species);
#endif
diff --git a/include/dungeon_pokemon_attributes.h b/include/dungeon_pokemon_attributes.h
index 40b13ee..c09a657 100644
--- a/include/dungeon_pokemon_attributes.h
+++ b/include/dungeon_pokemon_attributes.h
@@ -3,22 +3,14 @@
#include "dungeon_entity.h"
-// 0x71824
bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability);
-// 0x71858
bool8 HasType(struct DungeonEntity *pokemon, u8 type);
-// 0x71884
bool8 CanSeeInvisible(struct DungeonEntity *pokemon);
-// 0x718AC
bool8 HasTactic(struct DungeonEntity *pokemon, u8 tactic);
-// 0x718D8
bool8 HasIQSkill(struct DungeonEntity *pokemon, u8 IQSkill);
-
void LoadIQSkills(struct DungeonEntity *pokemon);
bool8 CanSeeTeammate(struct DungeonEntity * pokemon);
u8 GetMoveTypeForPokemon(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove);
-
-// 0x71A44
s32 CalculateMovePower(struct DungeonEntity *pokemon, struct PokemonMove *pokeMove);
bool8 ToolboxEnabled(struct DungeonEntityData *pokemon);
diff --git a/include/dungeon_random.h b/include/dungeon_random.h
index 5679720..b53b4bb 100644
--- a/include/dungeon_random.h
+++ b/include/dungeon_random.h
@@ -1,9 +1,7 @@
#ifndef GUARD_DUNGEON_RANDOM_H
#define GUARD_DUNGEON_RANDOM_H
-// 0x840E8
s32 DungeonRandom(void);
-// 0x84100
s32 DungeonRandomCapped(s32 cap);
#endif
diff --git a/include/dungeon_random_1.h b/include/dungeon_random_1.h
index bfc2ecd..c863a7e 100644
--- a/include/dungeon_random_1.h
+++ b/include/dungeon_random_1.h
@@ -1,7 +1,6 @@
#ifndef GUARD_DUNGEON_RANDOM_1_H
#define GUARD_DUNGEON_RANDOM_1_H
-// 0x84144
bool8 RollPercentChance(s32 percentChance);
#endif
diff --git a/include/dungeon_range.h b/include/dungeon_range.h
index 3d76011..80cb7e3 100644
--- a/include/dungeon_range.h
+++ b/include/dungeon_range.h
@@ -3,7 +3,6 @@
#include "position.h"
-// 0x83294
bool8 InSameRoom_2(struct Position *pos1, struct Position *pos2);
#endif
diff --git a/include/dungeon_util.h b/include/dungeon_util.h
index b32b85d..77db878 100644
--- a/include/dungeon_util.h
+++ b/include/dungeon_util.h
@@ -7,13 +7,9 @@
extern const struct Position gAdjacentTileOffsets[NUM_DIRECTIONS];
-// 0x450E0
bool8 EntityExists(struct DungeonEntity *pokemon);
-// 0x450F8
u32 GetEntityType(struct DungeonEntity *entity);
-// 0x45104
struct DungeonEntityData *GetTrapData(struct DungeonEntity *entity);
-// 0x45108
struct ItemSlot *GetItemData(struct DungeonEntity *entity);
struct MapTile *GetMapTileForDungeonEntity_2(struct DungeonEntity *entity);
diff --git a/include/dungeon_util_1.h b/include/dungeon_util_1.h
index cfda253..070e6d8 100644
--- a/include/dungeon_util_1.h
+++ b/include/dungeon_util_1.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x85A50
bool8 IsMovingClient(struct DungeonEntity *entity);
#endif
diff --git a/include/dungeon_visibility.h b/include/dungeon_visibility.h
index f94926e..62e7163 100644
--- a/include/dungeon_visibility.h
+++ b/include/dungeon_visibility.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x45990
bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity);
#endif
diff --git a/include/move_util.h b/include/move_util.h
new file mode 100644
index 0000000..2bfc1c6
--- /dev/null
+++ b/include/move_util.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_MOVE_UTIL_H
+#define GUARD_MOVE_UTIL_H
+
+#include "dungeon_entity.h"
+
+bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker);
+bool8 IsMoveUsable(struct DungeonEntity *pokemon, struct PokemonMove *move, bool8 hasPPChecker);
+
+#endif
diff --git a/include/moves.h b/include/moves.h
index 44b324b..24b5249 100644
--- a/include/moves.h
+++ b/include/moves.h
@@ -18,14 +18,14 @@ s32 GetMoveAccuracy(struct PokemonMove *move, u32 accuracyType);
u32 GetMoveMaxPP(struct PokemonMove *move);
u8 GetMoveUnk12(struct PokemonMove *move);
u8 GetMoveCriticalHitChance(struct PokemonMove *move);
-u8 GetMoveCannotHitFrozen(struct PokemonMove *move);
-u8 MoveDealsDirectDamage(struct PokemonMove *move);
+bool8 MoveCannotHitFrozen(struct PokemonMove *move);
+bool8 MoveDealsDirectDamage(struct PokemonMove *move);
u32 GetMoveRangeType(struct PokemonMove *move);
void sub_8092C84(u8 *buffer, u16 moveID);
u8 *GetMoveUseText(u16 moveID);
-u8 GetMoveAffectedByMagicCoat(u16 moveID);
-u8 GetMoveTargetsUser(u16 moveID);
-u8 GetMoveAffectedByMuzzled(u16 moveID);
+bool8 MoveAffectedByMagicCoat(u16 moveID);
+bool8 MoveTargetsUser(u16 moveID);
+bool8 MoveAffectedByMuzzled(u16 moveID);
bool8 IsBlockedBySoundproof(struct PokemonMove *move);
bool8 DoesMoveCharge(u16 move);
diff --git a/include/number_util.h b/include/number_util.h
index c42ef1c..692fba0 100644
--- a/include/number_util.h
+++ b/include/number_util.h
@@ -1,7 +1,6 @@
#ifndef GUARD_NUMBER_UTIL_H
#define GUARD_NUMBER_UTIL_H
-// 0x94450
s32 RoundUpFixedPoint(s32 fixedPointNumber);
#endif
diff --git a/include/position_util.h b/include/position_util.h
index 74019b7..9004d10 100644
--- a/include/position_util.h
+++ b/include/position_util.h
@@ -3,7 +3,6 @@
#include "position.h"
-// 0x983D8
s32 CalculateFacingDir(struct Position *originPos, struct Position *targetPos);
#endif
diff --git a/include/status.h b/include/status.h
new file mode 100644
index 0000000..d12170a
--- /dev/null
+++ b/include/status.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_STATUS_H
+#define GUARD_STATUS_H
+
+#include "dungeon_entity.h"
+
+#define FLASH_FIRE_STATUS_NONE 0
+#define FLASH_FIRE_STATUS_MAXED 1
+#define FLASH_FIRE_STATUS_NOT_MAXED 2
+
+u8 GetFlashFireStatus(struct DungeonEntity *pokemon);
+
+#endif
diff --git a/include/status_checker.h b/include/status_checker.h
index 1b65030..416b265 100644
--- a/include/status_checker.h
+++ b/include/status_checker.h
@@ -4,7 +4,10 @@
#include "constants/move.h"
#include "dungeon_entity.h"
-// 0x5C498
bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct PokemonMove *move);
+bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move);
+bool8 HasDisabledMove(struct PokemonMove *moves);
+bool8 LastUsedMoveOutOfPP(struct PokemonMove *moves);
+bool8 HasLastUsedMove(struct PokemonMove *moves);
#endif
diff --git a/include/status_checks.h b/include/status_checks.h
index 5bc80eb..5253d9d 100644
--- a/include/status_checks.h
+++ b/include/status_checks.h
@@ -5,7 +5,6 @@
extern const s16 gConfusedAttackChance;
-// 0x7001C
bool8 HasStatusAffectingActions(struct DungeonEntity *pokemon);
#endif
diff --git a/include/status_checks_1.h b/include/status_checks_1.h
index a90bdb0..306937b 100644
--- a/include/status_checks_1.h
+++ b/include/status_checks_1.h
@@ -3,11 +3,8 @@
#include "dungeon_entity.h"
-// 0x70A58
bool8 HasNegativeStatus(struct DungeonEntity *pokemon);
-// 0x70B28
bool8 IsSleeping(struct DungeonEntity *pokemon);
-// 0x70B48
bool8 HasQuarterHPOrLess(struct DungeonEntity* pokemon);
#endif
diff --git a/include/targeting.h b/include/targeting.h
index 7330398..89c4d49 100644
--- a/include/targeting.h
+++ b/include/targeting.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x69DCC
void TargetTileInFront(struct DungeonEntity *pokemon);
#endif
diff --git a/include/targeting_flags.h b/include/targeting_flags.h
index d7d4737..3e1abdd 100644
--- a/include/targeting_flags.h
+++ b/include/targeting_flags.h
@@ -4,7 +4,6 @@
#include "constants/move.h"
#include "dungeon_entity.h"
-// 0x7CD64
s16 GetMoveTargetingFlagsForPokemon(struct DungeonEntity *pokemon, struct PokemonMove *move, bool32 isAI);
#endif
diff --git a/include/tile_types.h b/include/tile_types.h
index f1bc412..d1577d4 100644
--- a/include/tile_types.h
+++ b/include/tile_types.h
@@ -7,9 +7,7 @@
#define DUNGEON_WATER_TYPE_LAVA 1
#define DUNGEON_WATER_TYPE_WATER 2
-// 0x4AF20
bool8 IsTileGround(struct MapTile* tile);
-// 0x4AF74
bool8 IsWaterTileset();
#endif
diff --git a/include/trap.h b/include/trap.h
index 49a5216..fb6855e 100644
--- a/include/trap.h
+++ b/include/trap.h
@@ -3,7 +3,6 @@
#include "position.h"
-// 0x4AF74
bool8 CanLayTrap(struct Position *pos);
#endif
diff --git a/include/type_chart.h b/include/type_chart.h
new file mode 100644
index 0000000..4be0b33
--- /dev/null
+++ b/include/type_chart.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_TYPE_CHART_H
+#define GUARD_TYPE_CHART_H
+
+#include "global.h"
+#include "constants/type.h"
+
+#define NUM_EFFECTIVENESS 4
+
+#define EFFECTIVENESS_IMMUNE 0
+#define EFFECTIVENESS_RESIST 1
+#define EFFECTIVENESS_NEUTRAL 2
+#define EFFECTIVENESS_SUPER 3
+
+// [Attacking type][Defending type]
+extern const s16 gTypeEffectivenessChart[NUM_TYPES][NUM_TYPES];
+
+#endif \ No newline at end of file
diff --git a/include/type_effectiveness.h b/include/type_effectiveness.h
new file mode 100644
index 0000000..3502f0e
--- /dev/null
+++ b/include/type_effectiveness.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_TYPE_EFFECTIVENESS_H
+#define GUARD_TYPE_EFFECTIVENESS_H
+
+#include "dungeon_entity.h"
+
+s32 WeightWeakTypePicker(struct DungeonEntity *user, struct DungeonEntity *target, u8 moveType);
+
+#endif
diff --git a/include/weather.h b/include/weather.h
index b7fa725..711007d 100644
--- a/include/weather.h
+++ b/include/weather.h
@@ -3,7 +3,6 @@
#include "dungeon_entity.h"
-// 0x7E580
u8 GetWeather(struct DungeonEntity* pokemon);
#endif
diff --git a/ld_script.txt b/ld_script.txt
index 3af08e6..ea6c581 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -208,14 +208,18 @@ SECTIONS {
asm/code_80521D0.o(.text);
src/charge_move.o(.text);
asm/code_8057144.o(.text);
+ src/move_util.o(.text);
+ asm/code_805744C.o(.text);
src/code_8057824.o(.text);
asm/code_8057824.o(.text);
src/status_checker.o(.text);
- asm/code_805CEB8.o(.text);
+ asm/code_805D8C8.o(.text);
src/targeting.o(.text);
asm/code_8069E0C.o(.text);
src/code_806CD90.o(.text);
asm/code_806CD90.o(.text);
+ src/type_effectiveness.o(.text);
+ asm/code_806E8B0.o(.text);
src/status_checks.o(.text);
asm/code_80701A4.o(.text);
src/dungeon_movement.o(.text);
@@ -238,11 +242,9 @@ SECTIONS {
asm/code_8073CF0.o(.text);
src/dungeon_ai_movement.o(.text);
asm/code_8075BA4.o(.text);
+ src/status.o(.text);
+ asm/code_8077274.o(.text);
src/dungeon_ai_attack.o(.text);
- asm/code_807C4A0.o(.text);
- src/dungeon_ai_attack_1.o(.text);
- asm/code_807C7AC.o(.text);
- src/dungeon_ai_attack_2.o(.text);
asm/code_807CABC.o(.text);
src/targeting_flags.o(.text);
asm/code_807CD9C.o(.text);
@@ -423,12 +425,16 @@ SECTIONS {
data/data_80F4DB4.o(.rodata);
src/dungeon_ai_attack.o(.rodata);
data/data_80F4E2C.o(.rodata);
+ src/type_chart.o(.rodata);
+ data/data_80F54B4.o(.rodata);
src/status_checker.o(.rodata);
data/data_80F5668.o(.rodata);
src/dungeon_pokemon_attributes.o(.rodata);
data/data_80F59C8.o(.rodata);
src/charge_move.o(.rodata);
data/data_8106A4C.o(.rodata);
+ src/type_effectiveness.o(.data);
+ data/data_8106F7C.o(.rodata);
src/dungeon_capabilities_1.o(.rodata);
data/data_8106FB5.o(.rodata);
src/dungeon_ai_targeting.o(.rodata);
diff --git a/src/code_800D090.c b/src/code_800D090.c
index fd1c948..1744087 100644
--- a/src/code_800D090.c
+++ b/src/code_800D090.c
@@ -4,7 +4,6 @@
#include "config.h"
#include "global.h"
-
extern void SoundBiasReset(void);
extern void SoundBiasSet(void);
@@ -70,7 +69,7 @@ void sub_800D098(void)
while(REG_KEYINPUT != KEYS_MASK){} // All buttons
}
-void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...)
+void sprintf_2(char *buffer, const char *text, ...)
{
va_list vArgv;
va_start(vArgv, text);
diff --git a/src/code_801D760.c b/src/code_801D760.c
index bdab0f2..a84aba5 100644
--- a/src/code_801D760.c
+++ b/src/code_801D760.c
@@ -8,6 +8,7 @@
#include "input.h"
#include "text.h"
#include "rescue_team_info.h"
+#include "code_800D090.h"
struct unkStruct_203B258
{
@@ -64,15 +65,14 @@ extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
void LoadTeamRankBadge(u32, u32, u32);
-extern void ExpandPlaceholdersBuffer(u8 *, u32 *, ...);
extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
extern void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32);
extern struct FileArchive gTitleMenuFileArchive;
extern const char gTeamRankBadgeFileName;
-extern u32 gUnknown_80DBF3C;
-extern u32 gUnknown_80DBF4C;
+extern char gUnknown_80DBF3C[];
+extern char gUnknown_80DBF4C[];
struct TeamBadgeData
{
@@ -305,8 +305,8 @@ void sub_801D894(void)
// Stored on stack
u32 *preload_string;
- u32 *r5; // R5
- u8 buffer [96]; // sp +4
+ char *r5; // R5
+ char buffer [96]; // sp +4
if (gUnknown_203B250->currFriendAreaLocation == NONE) {
location = sub_8098FB4();
@@ -327,11 +327,11 @@ void sub_801D894(void)
LoadTeamRankBadge(2, 8, 6);
// Have to load before TeamRank funcs
- r5 = &gUnknown_80DBF3C; // %s {COLOR_1 CYAN}%d{END_COLOR_TEXT_1} Pts.
+ r5 = gUnknown_80DBF3C; // %s {COLOR_1 CYAN}%d{END_COLOR_TEXT_1} Pts.
rank = GetRescueTeamRank();
- ExpandPlaceholdersBuffer(buffer, r5, GetTeamRankString(rank), GetTeamRankPts());
+ sprintf_2(buffer, r5, GetTeamRankString(rank), GetTeamRankPts());
xxx_call_draw_string(32, 4, buffer, 2, 0);
- ExpandPlaceholdersBuffer(buffer, &gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney);
+ sprintf_2(buffer, gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney);
xxx_call_draw_string(32, 18, buffer, 2, 0);
sub_80073E0(2);
}
diff --git a/src/code_8090208.c b/src/code_8090208.c
index 970154c..8322ffc 100644
--- a/src/code_8090208.c
+++ b/src/code_8090208.c
@@ -1,13 +1,11 @@
#include "global.h"
#include "dungeon.h"
+#include "code_800D090.h"
extern const char gUnknown_8108F10[];
extern const char gUnknown_8108F18[];
extern const char gUnknown_8108F2C[];
-void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
-
-
struct unkDungeonStruct
{
u8 index;
@@ -16,17 +14,17 @@ struct unkDungeonStruct
void sub_8090208(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
{
- ExpandPlaceholdersBuffer(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
+ sprintf_2(buffer, gUnknown_8108F10, gDungeonNames[dungeonLocation->index].name1); // {COLOR_2 YELLOW_4}%s{END_COLOR_TEXT_2} (normal floor print (no B)
}
void PrintDungeonLocationtoBuffer(u8 *buffer, struct unkDungeonStruct *dungeonLocation)
{
if(gDungeons[dungeonLocation->index].stairDirection != 0){
- ExpandPlaceholdersBuffer(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F
+ sprintf_2(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); //_F
}
else
{
- ExpandPlaceholdersBuffer(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F
+ sprintf_2(buffer, gUnknown_8108F2C, gDungeonNames[dungeonLocation->index].name1, dungeonLocation->floor); // B _F
}
}
diff --git a/src/dungeon_action.c b/src/dungeon_action.c
index 9034e4c..912e8b4 100644
--- a/src/dungeon_action.c
+++ b/src/dungeon_action.c
@@ -5,6 +5,13 @@
#include "dungeon_entity.h"
#include "pokemon.h"
+void ResetAction(struct DungeonActionContainer *actionPointer)
+{
+ actionPointer->action = DUNGEON_ACTION_NONE;
+ actionPointer->actionUseIndex = 0;
+ actionPointer->unkC = 0;
+}
+
void SetAction(struct DungeonActionContainer *actionPointer, u16 action)
{
actionPointer->action = action;
diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c
index 835d207..c84aca1 100644
--- a/src/dungeon_ai_attack.c
+++ b/src/dungeon_ai_attack.c
@@ -7,13 +7,13 @@
#include "constants/move_id.h"
#include "constants/status.h"
#include "constants/tactic.h"
+#include "constants/targeting.h"
#include "constants/type.h"
#include "charge_move.h"
#include "dungeon_action.h"
#include "dungeon_ai_targeting.h"
#include "dungeon_ai_targeting_1.h"
-#include "dungeon_ai_attack_1.h"
-#include "dungeon_ai_attack_2.h"
+#include "dungeon_ai_targeting_2.h"
#include "dungeon_capabilities_1.h"
#include "dungeon_global_data.h"
#include "dungeon_map_access.h"
@@ -22,12 +22,15 @@
#include "dungeon_random_1.h"
#include "dungeon_util.h"
#include "dungeon_visibility.h"
+#include "move_util.h"
#include "moves.h"
#include "position_util.h"
#include "status_checker.h"
#include "status_checks.h"
+#include "status_checks_1.h"
#include "targeting.h"
#include "targeting_flags.h"
+#include "type_effectiveness.h"
#define REGULAR_ATTACK_INDEX 4
@@ -39,11 +42,6 @@ extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS];
extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS];
extern struct DungeonEntity *gPotentialTargets[NUM_DIRECTIONS];
-extern bool8 IsMoveUsable_1(struct DungeonEntity*, s32, bool8);
-extern bool8 TargetRegularAttack(struct DungeonEntity*, u32*, bool8);
-extern bool8 IsTargetInLineRange(struct DungeonEntity*, struct DungeonEntity*, s32);
-extern s32 WeightMove(struct DungeonEntity*, s32, struct DungeonEntity*, u8);
-
void DecideAttack(struct DungeonEntity *pokemon)
{
struct DungeonEntityData *pokemonData = pokemon->entityData;
@@ -181,7 +179,7 @@ void DecideAttack(struct DungeonEntity *pokemon)
move = &pokemonData->moves[i];
if (move->moveFlags & MOVE_FLAG_EXISTS &&
willNotUnlinkMove[i] &&
- IsMoveUsable_1(pokemon, i, hasPPChecker) &&
+ IsMoveIndexUsable(pokemon, i, hasPPChecker) &&
move->moveFlags & MOVE_FLAG_ENABLED)
{
moveTargetResults[i].moveUsable = TRUE;
@@ -522,4 +520,405 @@ s32 FindMoveTarget(struct MoveTargetResults *moveTargetResults, struct DungeonEn
moveTargetResults->moveWeight = 8;
}
return moveWeight;
-} \ No newline at end of file
+}
+
+bool8 IsTargetInLineRange(struct DungeonEntity *user, struct DungeonEntity *target, s32 range)
+{
+ s32 posDiffX = user->posWorld.x - target->posWorld.x;
+ s32 posDiffY, maxPosDiff;
+ s32 direction;
+ if (posDiffX < 0)
+ {
+ posDiffX = -posDiffX;
+ }
+ posDiffY = user->posWorld.y - target->posWorld.y;
+ if (posDiffY < 0)
+ {
+ posDiffY = -posDiffY;
+ }
+ maxPosDiff = posDiffY;
+ if (posDiffY < posDiffX)
+ {
+ maxPosDiff = posDiffX;
+ }
+ if (maxPosDiff > RANGED_ATTACK_RANGE || maxPosDiff > range)
+ {
+ return FALSE;
+ }
+ direction = -1;
+ if (posDiffX == posDiffY)
+ {
+ if (user->posWorld.x < target->posWorld.x &&
+ (user->posWorld.y < target->posWorld.y || user->posWorld.y > target->posWorld.y))
+ {
+ returnTrue:
+ return TRUE;
+ }
+ if (user->posWorld.x > target->posWorld.x); // Fixes register loading order.
+ direction = DIRECTION_SOUTHWEST;
+ if (user->posWorld.x <= target->posWorld.x || user->posWorld.y <= target->posWorld.y)
+ {
+ goto checkDirectionSet;
+ }
+ goto returnTrue;
+ }
+ else if (user->posWorld.x == target->posWorld.x && user->posWorld.y < target->posWorld.y)
+ {
+ return TRUE;
+ }
+ else if (user->posWorld.x < target->posWorld.x && user->posWorld.y == target->posWorld.y)
+ {
+ return TRUE;
+ }
+ else if (user->posWorld.x == target->posWorld.x && user->posWorld.y > target->posWorld.y)
+ {
+ return TRUE;
+ }
+ else if (user->posWorld.x > target->posWorld.x && user->posWorld.y == target->posWorld.y)
+ {
+ direction = DIRECTION_WEST;
+ }
+ checkDirectionSet:
+ if (direction < 0)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker)
+{
+ s32 facingDir;
+ s32 targetingFlags2 = (s16) targetingFlags;
+ bool8 hasStatusChecker2 = hasStatusChecker;
+ struct DungeonEntityData *userData = user->entityData;
+ if ((user->posWorld.x == target->posWorld.x && user->posWorld.y == target->posWorld.y) ||
+ (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_ROOM ||
+ (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_FLOOR ||
+ (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_SELF)
+ {
+ facingDir = userData->action.facingDir;
+ }
+ else
+ {
+ facingDir = CalculateFacingDir(&user->posWorld, &target->posWorld);
+ }
+ if (!gCanAttackInDirection[facingDir] &&
+ CanUseStatusMove(targetingFlags2, user, target, move, hasStatusChecker2))
+ {
+ gCanAttackInDirection[facingDir] = TRUE;
+ do { gPotentialAttackTargetDirections[numPotentialTargets] = facingDir; } while (0);
+ gPotentialAttackTargetWeights[numPotentialTargets] = WeightMove(user, targetingFlags2, target, GetMoveTypeForPokemon(user, move));
+ gPotentialTargets[numPotentialTargets] = target;
+ numPotentialTargets++;
+ }
+ return numPotentialTargets;
+}
+
+bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker)
+{
+ struct DungeonEntityData *targetData;
+ s32 targetingFlags2 = (s16) targetingFlags;
+ bool8 hasStatusChecker2 = hasStatusChecker;
+ bool8 hasTarget = FALSE;
+ u32 categoryTargetingFlags = targetingFlags2 & 0xF;
+ u32 *categoryTargetingFlags2 = &categoryTargetingFlags; // Fixes a regswap.
+ if (*categoryTargetingFlags2 == TARGETING_FLAG_TARGET_OTHER)
+ {
+ if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CAN_TARGET)
+ {
+ hasTarget = TRUE;
+ }
+ }
+ else if (categoryTargetingFlags == TARGETING_FLAG_HEAL_TEAM)
+ {
+ goto checkCanTarget;
+ }
+ else if (categoryTargetingFlags == TARGETING_FLAG_LONG_RANGE)
+ {
+ targetData = target->entityData;
+ goto checkThirdParty;
+ }
+ else if (categoryTargetingFlags == TARGETING_FLAG_ATTACK_ALL)
+ {
+ targetData = target->entityData;
+ if (user == target)
+ {
+ goto returnFalse;
+ }
+ checkThirdParty:
+ hasTarget = TRUE;
+ if (targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
+ targetData->clientType == CLIENT_TYPE_DONT_MOVE ||
+ targetData->clientType == CLIENT_TYPE_CLIENT)
+ {
+ returnFalse:
+ return FALSE;
+ }
+ }
+ else if (categoryTargetingFlags == TARGETING_FLAG_BOOST_TEAM)
+ {
+ if (user == target)
+ {
+ goto returnFalse;
+ }
+ checkCanTarget:
+ if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CANNOT_ATTACK)
+ {
+ hasTarget = TRUE;
+ }
+ }
+ else if ((u16) (categoryTargetingFlags - 3) <= 1) // categoryTargetingFlags == TARGETING_FLAG_ITEM
+ {
+ hasTarget = TRUE;
+ }
+
+ if (hasTarget)
+ {
+ if (hasStatusChecker2)
+ {
+ if (!CanUseOnTargetWithStatusChecker(user, target, move))
+ {
+ goto returnFalse;
+ }
+ if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP)
+ {
+ goto rollMoveUseChance;
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_HP)
+ {
+ if (!HasQuarterHPOrLess(target))
+ {
+ if (*categoryTargetingFlags2);
+ goto returnFalse;
+ }
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_STATUS)
+ {
+ if (!HasNegativeStatus(target))
+ {
+ if (*categoryTargetingFlags2); // Flips the conditional.
+ goto returnFalse;
+ }
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_DREAM_EATER)
+ {
+ if (!IsSleeping(target))
+ {
+ if (*categoryTargetingFlags2); // Flips the conditional.
+ goto returnFalse;
+ }
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_EXPOSE)
+ {
+ targetData = target->entityData;
+ if ((targetData->types[0] != TYPE_GHOST && targetData->types[1] != TYPE_GHOST) || targetData->exposedStatus)
+ {
+ if (*categoryTargetingFlags2); // Flips the conditional.
+ goto returnFalse;
+ }
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_ALL)
+ {
+ if (!HasNegativeStatus(target) && !HasQuarterHPOrLess(target))
+ {
+ if (*categoryTargetingFlags2); // Flips the conditional.
+ goto returnFalse;
+ }
+ }
+ }
+ else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP)
+ {
+ s32 useChance;
+ rollMoveUseChance:
+ useChance = GetMoveAccuracy(move, ACCURACY_TYPE_USE_CHANCE);
+ if (DungeonRandomCapped(100) >= useChance)
+ {
+ goto returnFalse;
+ }
+ }
+ }
+ return hasTarget;
+}
+
+s32 WeightMove(struct DungeonEntity *user, s32 targetingFlags, struct DungeonEntity *target, u32 moveType)
+{
+#ifndef NONMATCHING
+ register struct DungeonEntityData *targetData asm("r4");
+#else
+ struct DungeonEntityData *targetData;
+#endif
+ s32 targetingFlags2 = (s16) targetingFlags;
+ u8 moveType2 = moveType;
+ u8 weight = 1;
+ struct DungeonEntityData *targetData2;
+ targetData2 = targetData = target->entityData;
+ if (!targetData->isEnemy || (targetingFlags2 & 0xF) != TARGETING_FLAG_TARGET_OTHER)
+ {
+ return 1;
+ }
+ else if (HasIQSkill(user, IQ_SKILL_EXP_GO_GETTER))
+ {
+ // BUG: expYieldRankings has lower values as the Pokémon's experience yield increases.
+ // This causes Exp. Go-Getter to prioritize Pokémon worth less experience
+ // instead of Pokémon worth more experience.
+ weight = gDungeonGlobalData->expYieldRankings[targetData->entityID];
+ }
+ else if (HasIQSkill(user, IQ_SKILL_EFFICIENCY_EXPERT))
+ {
+ weight = -12 - targetData2->HP;
+ if (weight == 0)
+ {
+ weight = 1;
+ }
+ }
+ else if (HasIQSkill(user, IQ_SKILL_WEAK_TYPE_PICKER))
+ {
+ weight = WeightWeakTypePicker(user, target, moveType2) + 1;
+ }
+ return weight;
+}
+
+bool8 TargetRegularAttack(struct DungeonEntity *pokemon, u32 *targetDir, bool8 checkPetrified)
+{
+ struct DungeonEntityData *pokemonData = pokemon->entityData;
+ s32 numPotentialTargets = 0;
+ s32 facingDir = pokemonData->action.facingDir;
+ s32 faceTurnLimit = pokemonData->eyesightStatus == EYESIGHT_STATUS_BLINKER ? 1 : 8;
+ s32 i;
+ s32 potentialAttackTargetDirections[NUM_DIRECTIONS];
+ s32 potentialAttackTargetWeights[NUM_DIRECTIONS];
+ bool8 hasTargetingIQ = HasIQSkill(pokemon, IQ_SKILL_EXP_GO_GETTER) || HasIQSkill(pokemon, IQ_SKILL_EFFICIENCY_EXPERT);
+ bool8 hasStatusChecker = HasIQSkill(pokemon, IQ_SKILL_STATUS_CHECKER);
+ for (i = 0; i < faceTurnLimit; i++, facingDir++)
+ {
+ struct DungeonEntity *target;
+ facingDir &= DIRECTION_MASK;
+ target = GetMapTile_1(pokemon->posWorld.x + gAdjacentTileOffsets[facingDir].x,
+ pokemon->posWorld.y + gAdjacentTileOffsets[facingDir].y)->pokemon;
+ if (target != NULL &&
+ GetEntityType(target) == ENTITY_POKEMON &&
+ CanAttackInFront(pokemon, facingDir) &&
+ CanTarget(pokemon, target, FALSE, checkPetrified) == TARGET_CAPABILITY_CAN_TARGET &&
+ (!hasStatusChecker || target->entityData->immobilizeStatus != IMMOBILIZE_STATUS_FROZEN))
+ {
+ potentialAttackTargetDirections[numPotentialTargets] = facingDir;
+ potentialAttackTargetWeights[numPotentialTargets] = WeightMove(pokemon, TARGETING_FLAG_TARGET_OTHER, target, TYPE_NONE);
+ if (!hasTargetingIQ)
+ {
+ *targetDir = facingDir;
+ return TRUE;
+ }
+ numPotentialTargets++;
+ }
+ }
+ if (numPotentialTargets == 0)
+ {
+ return FALSE;
+ }
+ else
+ {
+ s32 totalWeight = 0;
+ s32 maxWeight = 0;
+ s32 weightCounter;
+ s32 i;
+ for (i = 0; i < numPotentialTargets; i++)
+ {
+ if (maxWeight < potentialAttackTargetWeights[i])
+ {
+ maxWeight = potentialAttackTargetWeights[i];
+ }
+ }
+ for (i = 0; i < numPotentialTargets; i++)
+ {
+ if (maxWeight != potentialAttackTargetWeights[i])
+ {
+ potentialAttackTargetWeights[i] = 0;
+ }
+ }
+ for (i = 0; i < numPotentialTargets; i++)
+ {
+ totalWeight += potentialAttackTargetWeights[i];
+ }
+ weightCounter = DungeonRandomCapped(totalWeight);
+ for (i = 0; i < numPotentialTargets; i++)
+ {
+ weightCounter -= potentialAttackTargetWeights[i];
+ if (weightCounter < 0)
+ {
+ break;
+ }
+ }
+ *targetDir = potentialAttackTargetDirections[i];
+ return TRUE;
+ }
+
+}
+
+bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange)
+{
+ s32 posDiffX = pokemon->posWorld.x - targetPokemon->posWorld.x;
+ s32 effectiveMaxRange;
+ if (posDiffX < 0)
+ {
+ posDiffX = -posDiffX;
+ }
+ effectiveMaxRange = pokemon->posWorld.y - targetPokemon->posWorld.y;
+ if (effectiveMaxRange < 0)
+ {
+ effectiveMaxRange = -effectiveMaxRange;
+ }
+ if (effectiveMaxRange < posDiffX)
+ {
+ effectiveMaxRange = posDiffX;
+ }
+ if (effectiveMaxRange > maxRange)
+ {
+ effectiveMaxRange = maxRange;
+ }
+ if (!HasIQSkill(pokemon, IQ_SKILL_COURSE_CHECKER))
+ {
+ // BUG: effectiveMaxRange is already capped at maxRange, so this condition always evaluates to TRUE.
+ // The AI also has range checks elsewhere, so this doesn't become an issue in most cases.
+ // If the AI has the Long Toss or Pierce statuses and Course Checker is disabled,
+ // this incorrect check causes the AI to throw items at targets further than 10 tiles away.
+ if (effectiveMaxRange <= maxRange)
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ s32 currentPosX = pokemon->posWorld.x;
+ s32 currentPosY = pokemon->posWorld.y;
+ s32 adjacentTileOffsetX = gAdjacentTileOffsets[facingDir].x;
+ s32 adjacentTileOffsetY = gAdjacentTileOffsets[facingDir].y;
+ s32 i;
+ for (i = 0; i <= effectiveMaxRange; i++)
+ {
+ struct MapTile *mapTile;
+ currentPosX += adjacentTileOffsetX;
+ currentPosY += adjacentTileOffsetY;
+ if (currentPosX <= 0 || currentPosY <= 0 ||
+ currentPosX >= DUNGEON_MAX_SIZE_X - 1 || currentPosY >= DUNGEON_MAX_SIZE_Y - 1)
+ {
+ break;
+ }
+ while (0); // Extra label needed to swap branch locations in ASM.
+ mapTile = GetMapTile_1(currentPosX, currentPosY);
+ if (!(mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)))
+ {
+ break;
+ }
+ if (mapTile->pokemon == targetPokemon)
+ {
+ return TRUE;
+ }
+ if (mapTile->pokemon != NULL)
+ {
+ break;
+ }
+ }
+ }
+ return FALSE;
+}
diff --git a/src/dungeon_ai_attack_1.c b/src/dungeon_ai_attack_1.c
deleted file mode 100644
index 023df14..0000000
--- a/src/dungeon_ai_attack_1.c
+++ /dev/null
@@ -1,175 +0,0 @@
-#include "global.h"
-#include "dungeon_ai_attack_1.h"
-
-#include "constants/direction.h"
-#include "constants/targeting.h"
-#include "constants/type.h"
-#include "dungeon_ai_targeting_2.h"
-#include "dungeon_pokemon_attributes.h"
-#include "dungeon_random.h"
-#include "moves.h"
-#include "position_util.h"
-#include "status_checks_1.h"
-
-extern bool8 gCanAttackInDirection[NUM_DIRECTIONS];
-extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS];
-extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS];
-extern struct DungeonEntity *gPotentialTargets[NUM_DIRECTIONS];
-
-extern s32 WeightMove(struct DungeonEntity*, s32, struct DungeonEntity*, u8);
-extern bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity*, struct DungeonEntity*, struct PokemonMove*);
-
-s32 WeightMoveIfUsable(s32 numPotentialTargets, s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker)
-{
- s32 facingDir;
- s32 targetingFlags2 = (s16) targetingFlags;
- bool8 hasStatusChecker2 = hasStatusChecker;
- struct DungeonEntityData *userData = user->entityData;
- if ((user->posWorld.x == target->posWorld.x && user->posWorld.y == target->posWorld.y) ||
- (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_ROOM ||
- (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_FLOOR ||
- (targetingFlags2 & 0xF0) == TARGETING_FLAG_TARGET_SELF)
- {
- facingDir = userData->action.facingDir;
- }
- else
- {
- facingDir = CalculateFacingDir(&user->posWorld, &target->posWorld);
- }
- if (!gCanAttackInDirection[facingDir] &&
- CanUseStatusMove(targetingFlags2, user, target, move, hasStatusChecker2))
- {
- gCanAttackInDirection[facingDir] = TRUE;
- do { gPotentialAttackTargetDirections[numPotentialTargets] = facingDir; } while (0);
- gPotentialAttackTargetWeights[numPotentialTargets] = WeightMove(user, targetingFlags2, target, GetMoveTypeForPokemon(user, move));
- gPotentialTargets[numPotentialTargets] = target;
- numPotentialTargets++;
- }
- return numPotentialTargets;
-}
-
-bool8 CanUseStatusMove(s32 targetingFlags, struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move, bool32 hasStatusChecker)
-{
- struct DungeonEntityData *targetData;
- s32 targetingFlags2 = (s16) targetingFlags;
- bool8 hasStatusChecker2 = hasStatusChecker;
- bool8 hasTarget = FALSE;
- u32 categoryTargetingFlags = targetingFlags2 & 0xF;
- u32 *categoryTargetingFlags2 = &categoryTargetingFlags; // Fixes a regswap.
- if (*categoryTargetingFlags2 == TARGETING_FLAG_TARGET_OTHER)
- {
- if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CAN_TARGET)
- {
- hasTarget = TRUE;
- }
- }
- else if (categoryTargetingFlags == TARGETING_FLAG_HEAL_TEAM)
- {
- goto checkCanTarget;
- }
- else if (categoryTargetingFlags == TARGETING_FLAG_LONG_RANGE)
- {
- targetData = target->entityData;
- goto checkThirdParty;
- }
- else if (categoryTargetingFlags == TARGETING_FLAG_ATTACK_ALL)
- {
- targetData = target->entityData;
- if (user == target)
- {
- goto returnFalse;
- }
- checkThirdParty:
- hasTarget = TRUE;
- if (targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
- targetData->clientType == CLIENT_TYPE_DONT_MOVE ||
- targetData->clientType == CLIENT_TYPE_CLIENT)
- {
- returnFalse:
- return FALSE;
- }
- }
- else if (categoryTargetingFlags == TARGETING_FLAG_BOOST_TEAM)
- {
- if (user == target)
- {
- goto returnFalse;
- }
- checkCanTarget:
- if (CanTarget(user, target, FALSE, TRUE) == TARGET_CAPABILITY_CANNOT_ATTACK)
- {
- hasTarget = TRUE;
- }
- }
- else if ((u16) (categoryTargetingFlags - 3) <= 1) // categoryTargetingFlags == TARGETING_FLAG_ITEM
- {
- hasTarget = TRUE;
- }
-
- if (hasTarget)
- {
- if (hasStatusChecker2)
- {
- if (!CanUseOnTargetWithStatusChecker(user, target, move))
- {
- goto returnFalse;
- }
- if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP)
- {
- goto rollMoveUseChance;
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_HP)
- {
- if (!HasQuarterHPOrLess(target))
- {
- if (*categoryTargetingFlags2);
- goto returnFalse;
- }
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_STATUS)
- {
- if (!HasNegativeStatus(target))
- {
- if (*categoryTargetingFlags2); // Flips the conditional.
- goto returnFalse;
- }
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_DREAM_EATER)
- {
- if (!IsSleeping(target))
- {
- if (*categoryTargetingFlags2); // Flips the conditional.
- goto returnFalse;
- }
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_EXPOSE)
- {
- targetData = target->entityData;
- if ((targetData->type1 != TYPE_GHOST && targetData->type2 != TYPE_GHOST) || targetData->exposedStatus)
- {
- if (*categoryTargetingFlags2); // Flips the conditional.
- goto returnFalse;
- }
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_HEAL_ALL)
- {
- if (!HasNegativeStatus(target) && !HasQuarterHPOrLess(target))
- {
- if (*categoryTargetingFlags2); // Flips the conditional.
- goto returnFalse;
- }
- }
- }
- else if ((targetingFlags2 & 0xF00) == TARGETING_FLAG_SET_TRAP)
- {
- s32 useChance;
- rollMoveUseChance:
- useChance = GetMoveAccuracy(move, ACCURACY_TYPE_USE_CHANCE);
- if (DungeonRandomCapped(100) >= useChance)
- {
- goto returnFalse;
- }
- }
- }
- return hasTarget;
-}
diff --git a/src/dungeon_ai_attack_2.c b/src/dungeon_ai_attack_2.c
deleted file mode 100644
index 41e924a..0000000
--- a/src/dungeon_ai_attack_2.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "global.h"
-#include "dungeon_ai_attack_2.h"
-
-#include "constants/iq_skill.h"
-#include "dungeon_global_data.h"
-#include "dungeon_map_access.h"
-#include "dungeon_pokemon_attributes.h"
-#include "dungeon_util.h"
-
-bool8 IsTargetStraightAhead(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, s32 facingDir, s32 maxRange)
-{
- s32 posDiffX = pokemon->posWorld.x - targetPokemon->posWorld.x;
- s32 effectiveMaxRange;
- if (posDiffX < 0)
- {
- posDiffX = -posDiffX;
- }
- effectiveMaxRange = pokemon->posWorld.y - targetPokemon->posWorld.y;
- if (effectiveMaxRange < 0)
- {
- effectiveMaxRange = -effectiveMaxRange;
- }
- if (effectiveMaxRange < posDiffX)
- {
- effectiveMaxRange = posDiffX;
- }
- if (effectiveMaxRange > maxRange)
- {
- effectiveMaxRange = maxRange;
- }
- if (!HasIQSkill(pokemon, IQ_SKILL_COURSE_CHECKER))
- {
- // BUG: effectiveMaxRange is already capped at maxRange, so this condition always evaluates to TRUE.
- // The AI also has range checks elsewhere, so this doesn't become an issue in most cases.
- // If the AI has the Long Toss or Pierce statuses and Course Checker is disabled,
- // this incorrect check causes the AI to throw items at targets further than 10 tiles away.
- if (effectiveMaxRange <= maxRange)
- {
- return TRUE;
- }
- }
- else
- {
- s32 currentPosX = pokemon->posWorld.x;
- s32 currentPosY = pokemon->posWorld.y;
- s32 adjacentTileOffsetX = gAdjacentTileOffsets[facingDir].x;
- s32 adjacentTileOffsetY = gAdjacentTileOffsets[facingDir].y;
- s32 i;
- for (i = 0; i <= effectiveMaxRange; i++)
- {
- struct MapTile *mapTile;
- currentPosX += adjacentTileOffsetX;
- currentPosY += adjacentTileOffsetY;
- if (currentPosX <= 0 || currentPosY <= 0 ||
- currentPosX >= DUNGEON_MAX_SIZE_X - 1 || currentPosY >= DUNGEON_MAX_SIZE_Y - 1)
- {
- break;
- }
- while (0); // Extra label needed to swap branch locations in ASM.
- mapTile = GetMapTile_1(currentPosX, currentPosY);
- if (!(mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)))
- {
- break;
- }
- if (mapTile->pokemon == targetPokemon)
- {
- return TRUE;
- }
- if (mapTile->pokemon != NULL)
- {
- break;
- }
- }
- }
- return FALSE;
-}
diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c
index 31d57ff..090e24a 100644
--- a/src/dungeon_ai_items.c
+++ b/src/dungeon_ai_items.c
@@ -6,7 +6,7 @@
#include "constants/status.h"
#include "constants/targeting.h"
#include "dungeon_action.h"
-#include "dungeon_ai_attack_2.h"
+#include "dungeon_ai_attack.h"
#include "dungeon_ai_item_weight.h"
#include "dungeon_ai_items.h"
#include "dungeon_ai_targeting_2.h"
@@ -28,7 +28,6 @@
#define NUM_POTENTIAL_ROCK_TARGETS 20
#define GROUND_ITEM_TOOLBOX_INDEX 0x80
#define HELD_ITEM_TOOLBOX_INDEX 0x81
-#define RANGED_ATTACK_RANGE 10
enum ItemTargetFlag
{
diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c
index 49609d7..326913a 100644
--- a/src/dungeon_ai_movement.c
+++ b/src/dungeon_ai_movement.c
@@ -28,7 +28,6 @@ extern char *gPtrItsaMonsterHouseMessage;
extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*);
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
-extern void ResetAction(u16*);
extern void MoveIfPossible(struct DungeonEntity*, bool8);
extern u8 sub_8044B28(void);
extern void sub_807AB38(struct DungeonEntity *, u32);
@@ -206,7 +205,7 @@ void DecideAction(struct DungeonEntity *pokemon)
}
}
}
- ResetAction(&pokemonData->action.action);
+ ResetAction(&pokemonData->action);
if (pokemonData->clientType == CLIENT_TYPE_CLIENT)
{
SetWalkAction(&pokemonData->action, pokemonData->entityID);
diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c
index bd3a1f6..0550d7d 100644
--- a/src/dungeon_pokemon_attributes.c
+++ b/src/dungeon_pokemon_attributes.c
@@ -95,7 +95,7 @@ bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability)
else
{
struct DungeonEntityData *pokemonData = pokemon->entityData;
- if (pokemonData->ability1 == ability || pokemonData->ability2 == ability)
+ if (pokemonData->abilities[0] == ability || pokemonData->abilities[1] == ability)
{
return TRUE;
}
@@ -110,11 +110,11 @@ bool8 HasType(struct DungeonEntity *pokemon, u8 type)
{
return FALSE;
}
- if (pokemonData->type1 == type)
+ if (pokemonData->types[0] == type)
{
return TRUE;
}
- if (pokemonData->type2 == type)
+ if (pokemonData->types[1] == type)
{
return TRUE;
}
diff --git a/src/friend_area.c b/src/friend_area.c
index 15a527e..06cf101 100644
--- a/src/friend_area.c
+++ b/src/friend_area.c
@@ -2,6 +2,7 @@
#include "constants/friend_area.h"
#include "friend_area.h"
#include "pokemon.h"
+#include "code_800D090.h"
bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
EWRAM_DATA bool8 *gFriendAreas;
@@ -14,7 +15,6 @@ extern const char *gFriendAreaNames[];
extern const char gUnknown_81098A4;
extern const char gUnknown_81098AC;
-extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
extern void sub_8090FEC(u32, u8 *r1, u32);
const struct FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] =
@@ -599,7 +599,7 @@ u32 GetFriendAreaPrice(u8 index)
void sub_8092558(u8 *buffer, u8 index)
{
// colors the friend area name green and prints to buffer?
- ExpandPlaceholdersBuffer(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
+ sprintf_2(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
}
void sub_8092578(u8 *buffer, u8 index, u8 r2)
@@ -609,7 +609,7 @@ void sub_8092578(u8 *buffer, u8 index, u8 r2)
if(r2)
{
sub_8090FEC(gFriendAreaSettings[index].price, priceBuffer, 1);
- ExpandPlaceholdersBuffer(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer);
+ sprintf_2(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer);
}
else
{
diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c
index 50b8c02..9310665 100644
--- a/src/friend_list_menu.c
+++ b/src/friend_list_menu.c
@@ -4,6 +4,7 @@
#include "text.h"
#include "team_inventory.h"
#include "constants/move.h"
+#include "code_800D090.h"
struct unkStruct_203B2B8
{
@@ -52,7 +53,6 @@ extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void sub_80922B4(u8 *, const u8 *, u32);
-extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
extern void sub_808D930(u8 *, s16);
extern s32 sub_8008ED0(u8 *);
extern void xxx_call_draw_string(s32 x, s32 y, u8 *, u32, u32);
@@ -333,7 +333,7 @@ void sub_8026E08(u32 r0)
sub_80073B8(r0);
sub_80922B4(gAvailablePokemonNames, gUnknown_203B2B8->unk18->name, POKEMON_NAME_LENGTH);
sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum);
- ExpandPlaceholdersBuffer(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames);
+ sprintf_2(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames);
x = sub_8008ED0(buffer1);
xxx_call_draw_string(((gUnknown_80DD370.unk0c << 3) - x) / 2, 3, buffer1, r0, 0);
sub_80073E0(r0);
diff --git a/src/items.c b/src/items.c
index d1cd07b..e4bdc6a 100644
--- a/src/items.c
+++ b/src/items.c
@@ -8,6 +8,7 @@
#include "random.h"
#include "subStruct_203B240.h"
#include "team_inventory.h"
+#include "code_800D090.h"
#include <stddef.h>
@@ -37,7 +38,6 @@ EWRAM_DATA struct Item *gItemParametersData;
extern u8 GetItemType(u8);
extern u32 GetItemUnkThrow(u8, u32);
-extern void ExpandPlaceholdersBuffer(u8 *, const u8 *, ...);
extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3);
extern void sub_80073B8(u32);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
@@ -326,35 +326,35 @@ void sub_8090E14(u8* ext_buffer, struct ItemSlot* slot, struct unkStruct_8090F58
if (GetItemType(slot->itemIndex) == ITEM_TYPE_THROWABLE) {
// I feel like these labels might actually be there...
if (unk8) {
- ExpandPlaceholdersBuffer(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems);
+ sprintf_2(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems);
}
else {
- ExpandPlaceholdersBuffer(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer);
+ sprintf_2(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer);
}
}
else if (GetItemType(slot->itemIndex) == ITEM_TYPE_ROCK) {
if (unk8) {
- ExpandPlaceholdersBuffer(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems);
+ sprintf_2(buffer, gUnknown_8109770, gItemParametersData[slot->itemIndex].namePointer, slot->numItems);
}
else {
- ExpandPlaceholdersBuffer(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer);
+ sprintf_2(buffer, gUnknown_8109778, gItemParametersData[slot->itemIndex].namePointer);
}
}
else if (slot->itemIndex == ITEM_ID_POKE) {
- ExpandPlaceholdersBuffer(buffer, gUnknown_810977C, GetMoneyValue(slot));
+ sprintf_2(buffer, gUnknown_810977C, GetMoneyValue(slot));
}
else {
strncpy(buffer, gItemParametersData[slot->itemIndex].namePointer, 80);
}
if (slot->itemFlags & ITEM_FLAG_STICKY) {
- ExpandPlaceholdersBuffer(ext_buffer, gUnknown_8109784, buffer);
+ sprintf_2(ext_buffer, gUnknown_8109784, buffer);
strncpy(buffer, ext_buffer, 80);
}
if (a3) {
if (a3->unk4 && (slot->itemFlags & ITEM_FLAG_SET)) {
- ExpandPlaceholdersBuffer(ext_buffer, gUnknown_810978C, buffer);
+ sprintf_2(ext_buffer, gUnknown_810978C, buffer);
strncpy(buffer, ext_buffer, 80);
}
if ((*(u32*)a3 == 1) || (*(u32*)a3 == 3)) {
@@ -408,11 +408,11 @@ void sub_8090F58(void* a1, u8 *a2, struct ItemSlot *slot, struct unkStruct_8090F
if (a4->unk6) {
sub_8090FEC(value, buffer, 1);
- ExpandPlaceholdersBuffer(a1, gUnknown_8109794, a2, a4->unk6, buffer);
+ sprintf_2(a1, gUnknown_8109794, a2, a4->unk6, buffer);
}
else {
sub_8090FEC(value, buffer, 0);
- ExpandPlaceholdersBuffer(a1, gUnknown_81097A4, a2, buffer);
+ sprintf_2(a1, gUnknown_81097A4, a2, buffer);
}
}
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c
index 0dea887..cd5df5b 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -6,6 +6,7 @@
#include "item.h"
#include "kecleon_items.h"
#include "team_inventory.h"
+#include "code_800D090.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
extern u8 gUnknown_80DB8E4[];
@@ -31,7 +32,6 @@ extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern s32 sub_8013800(void *, u32);
-extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...);
extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32);
extern void sub_801AE84(void);
extern void sub_8012D08(void *, u32);
@@ -475,7 +475,7 @@ void sub_801A0D8(void)
// Needed for the shifts..
u32 index_shift;
u32 numItems_shift;
-
+
sub_8008C54(gUnknown_203B214->unk34);
sub_80073B8(gUnknown_203B214->unk34);
xxx_call_draw_string(gUnknown_203B214->unk1E * 8 + 10,0,gUnknown_80DB8E4,
@@ -505,7 +505,7 @@ void sub_801A0D8(void)
xxx_call_draw_string(8,y,auStack204,gUnknown_203B214->unk34,0);
}
else {
- ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB8EC,auStack204);
+ sprintf_2(auStack112,gUnknown_80DB8EC,auStack204);
y = sub_8013800(gUnknown_203B214,iVar4);
xxx_call_draw_string(8,y,auStack112,gUnknown_203B214->unk34,0);
}
@@ -701,7 +701,7 @@ void sub_801A4A4(void)
// Needed for the shifts..
u32 index_shift;
u32 numItems_shift;
-
+
sub_8008C54(gUnknown_203B21C->unk34);
sub_80073B8(gUnknown_203B21C->unk34);
xxx_call_draw_string(gUnknown_203B21C->unk1E * 8 + 10,0,gUnknown_80DB92C,
@@ -731,7 +731,7 @@ void sub_801A4A4(void)
xxx_call_draw_string(8,y,auStack204,gUnknown_203B21C->unk34,0);
}
else {
- ExpandPlaceholdersBuffer(auStack112,gUnknown_80DB934,auStack204);
+ sprintf_2(auStack112,gUnknown_80DB934,auStack204);
y = sub_8013800(gUnknown_203B21C,iVar4);
xxx_call_draw_string(8,y,auStack112,gUnknown_203B21C->unk34,0);
}
@@ -741,7 +741,7 @@ void sub_801A4A4(void)
u32 sub_801A5D8(u32 param_1,int param_2,struct UnkTextStruct2_sub *param_3,u32 param_4)
{
-
+
if (GetNumberOfFilledInventorySlots() == 0) {
return 0;
}
@@ -781,7 +781,7 @@ u32 sub_801A6E8(u8 param_1)
{
s32 iVar5;
struct ItemSlot local_10;
-
+
if (param_1 == '\0') {
sub_8013660(&gUnknown_203B224->unk54);
return 0;
diff --git a/src/load_screen.c b/src/load_screen.c
index 1721bf5..1c224f5 100644
--- a/src/load_screen.c
+++ b/src/load_screen.c
@@ -8,6 +8,7 @@
#include "text.h"
#include "pokemon.h"
#include "save.h"
+#include "code_800D090.h"
extern const struct FileArchive gTitleMenuFileArchive;
@@ -59,7 +60,6 @@ extern void sub_80920D8(u8 *);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern u8 sub_80023E4(u32);
extern u8 *sub_8098FB4();
-extern void ExpandPlaceholdersBuffer(u8 *buffer, const u8 *text, ...);
extern u8 *GetDungeonLocationInfo(void);
extern u32 GetNumAdventures(void);
extern void xxx_call_draw_string(u32 x, u32 y, const u8 *, u32, u32);
@@ -179,7 +179,7 @@ ALIGNED(4) const char load_screen_fill[] = "pksdir0";
void CreateLoadScreen(u32 currMenu)
{
int iVar8;
-
+
if (gLoadScreen == NULL) {
gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8);
MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen));
@@ -230,7 +230,7 @@ u32 UpdateLoadScreenMenu(void)
{
u32 nextMenu;
u32 menuAction;
-
+
nextMenu = MENU_NO_SCREEN_CHANGE;
menuAction = 4;
sub_8012FD8(&gLoadScreen->unk54);
@@ -311,7 +311,7 @@ void DrawLoadScreenText(void)
r2 = DrawLoadScreenTextSub(teamNameBuffer);
}
- ExpandPlaceholdersBuffer(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2);
+ sprintf_2(gLoadScreen->formattedTeamName,gUnknown_80E7804,r2);
xxx_call_draw_string(64,0,gLoadScreen->formattedTeamName,0,0);
// Draw Player Name
@@ -320,7 +320,7 @@ void DrawLoadScreenText(void)
sub_80922B4(playerName, gNoNamePlaceholder, POKEMON_NAME_LENGTH);
else
sub_80922B4(playerName, playerInfo->name, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName);
+ sprintf_2(gLoadScreen->formattedPlayerName,gUnknown_80E7804,playerName);
xxx_call_draw_string(64,12,gLoadScreen->formattedPlayerName,0,0);
// Draw Location Info
@@ -328,7 +328,7 @@ void DrawLoadScreenText(void)
if (iVar2 == 0xf1207)
PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
else
- ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
+ sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
}
else {
switch(sub_8011C1C())
@@ -337,12 +337,12 @@ void DrawLoadScreenText(void)
switch(sub_8001658(0,24))
{
default:
- ExpandPlaceholdersBuffer(auStack356,gUnknown_80E7804,sub_8098FB4());
+ sprintf_2(auStack356,gUnknown_80E7804,sub_8098FB4());
xxx_format_string(auStack356,gLoadScreen->formattedLocation,gLoadScreen->formattedPlayTime,0);
break;
case 0x7:
case 0xB:
- ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
+ sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
break;
}
break;
@@ -350,10 +350,10 @@ void DrawLoadScreenText(void)
if (iVar2 == 0xf1207)
PrintDungeonLocationtoBuffer(gLoadScreen->formattedLocation,GetDungeonLocationInfo());
else
- ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
+ sprintf_2(gLoadScreen->formattedLocation,gQuicksaveDataDeletedText); // Quicksave data deleted
break;
default:
- ExpandPlaceholdersBuffer(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown
+ sprintf_2(gLoadScreen->formattedLocation,gLocationUnknownText); // Location unknown
break;
}
}
@@ -361,12 +361,12 @@ void DrawLoadScreenText(void)
// Draw Play Time
DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds);
- ExpandPlaceholdersBuffer(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds);
+ sprintf_2(gLoadScreen->formattedPlayTime,gPlayTimePlaceholder,hours,minutes,seconds);
xxx_call_draw_string(64,36,gLoadScreen->formattedPlayTime,0,0);
- // Draw Adventures Info
+ // Draw Adventures Info
numAdventures = GetNumAdventures();
- ExpandPlaceholdersBuffer(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d
+ sprintf_2(gLoadScreen->formattedAdventures,gNumAdventurePlaceholder,numAdventures); // %d
xxx_call_draw_string(64,48,gLoadScreen->formattedAdventures,0,0);
// Draw Helper Info
@@ -376,14 +376,14 @@ void DrawLoadScreenText(void)
if(temp2->speciesIndex != SPECIES_NONE) {
sub_808D930(speciesHelper,temp2->speciesIndex);
sub_80922B4(nameHelper,temp2->helperName,POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
+ sprintf_2(gLoadScreen->formattedHelperInfo,gHelperInfoPlaceholder,nameHelper,speciesHelper); // %s (%s)
}
else
goto print_helper_placeholder;
}
else {
print_helper_placeholder:
- ExpandPlaceholdersBuffer(gLoadScreen->formattedHelperInfo,gNoHelperText); // -----
+ sprintf_2(gLoadScreen->formattedHelperInfo,gNoHelperText); // -----
}
xxx_call_draw_string(64,60,gLoadScreen->formattedHelperInfo,0,0);
@@ -399,7 +399,7 @@ void sub_80397B4(void)
int iVar3;
int iVar4;
s32 other_arg;
-
+
clmkFile = OpenFileAndGetFileDataPtr(gClmkpatFileName,&gTitleMenuFileArchive); // clmkpat
for(iVar3 = 0; iVar3 < 64; iVar3++)
@@ -426,7 +426,7 @@ bool8 IsQuickSave(void)
{
int iVar1;
bool8 isQuicksave;
-
+
iVar1 = sub_8011FA8();
isQuicksave = FALSE;
if (sub_8095324(1) != 0 || sub_8095324(7) != 0)
diff --git a/src/move_util.c b/src/move_util.c
new file mode 100644
index 0000000..4487862
--- /dev/null
+++ b/src/move_util.c
@@ -0,0 +1,88 @@
+#include "global.h"
+#include "move_util.h"
+
+#include "constants/move_id.h"
+#include "constants/status.h"
+#include "moves.h"
+
+bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker)
+{
+ struct DungeonEntityData *pokemonData = pokemon->entityData;
+ struct PokemonMove *move = &pokemonData->moves[moveIndex];
+ s32 i;
+ if (!(move->moveFlags & MOVE_FLAG_EXISTS))
+ {
+ return FALSE;
+ }
+ if (move->moveFlags & MOVE_FLAG_LINKED)
+ {
+ return FALSE;
+ }
+ if (move->moveFlags & MOVE_FLAG_DISABLED ||
+ move->moveFlags2 & MOVE_FLAG_SEALED)
+ {
+ return FALSE;
+ }
+ goto initMoveIndex;
+ returnTrue:
+ return TRUE;
+ initMoveIndex:
+ i = 0;
+ goto checkMoveUsable;
+ incMoveIndex:
+ i++;
+ checkMoveUsable:
+ if (i >= MAX_MON_MOVES)
+ {
+ return FALSE;
+ }
+ if (IsMoveUsable(pokemon, move, hasPPChecker))
+ {
+ goto returnTrue;
+ }
+ move++;
+ if ((u32) move >= (u32) &pokemonData->struggleMoveFlags || !(move->moveFlags & MOVE_FLAG_LINKED))
+ {
+ return FALSE;
+ }
+ goto incMoveIndex;
+}
+
+bool8 IsMoveUsable(struct DungeonEntity *pokemon, struct PokemonMove *move, bool8 hasPPChecker)
+{
+ struct DungeonEntityData *pokemonData = pokemon->entityData;
+ if (move->moveID == MOVE_REGULAR_ATTACK)
+ {
+ return TRUE;
+ }
+ if (move->moveFlags & MOVE_FLAG_DISABLED || move->moveFlags2 & MOVE_FLAG_SEALED)
+ {
+ return FALSE;
+ }
+ if (hasPPChecker)
+ {
+ if (move->PP == 0)
+ {
+ return FALSE;
+ }
+ if (pokemonData->volatileStatus == VOLATILE_STATUS_TAUNTED && !MoveDealsDirectDamage(move))
+ {
+ return FALSE;
+ }
+ if (pokemonData->volatileStatus == VOLATILE_STATUS_ENCORE)
+ {
+ if (move->moveID == MOVE_STRUGGLE)
+ {
+ if (!(pokemonData->struggleMoveFlags & MOVE_FLAG_LAST_USED))
+ {
+ return FALSE;
+ }
+ }
+ else if (!(move->moveFlags & MOVE_FLAG_LAST_USED))
+ {
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}
diff --git a/src/moves.c b/src/moves.c
index 2fcbfd0..3c3e8a9 100644
--- a/src/moves.c
+++ b/src/moves.c
@@ -3,6 +3,7 @@
#include "file_system.h"
#include "moves.h"
+#include "code_800D090.h"
struct MoveDataFile
{
@@ -37,7 +38,6 @@ extern u8 gUnknown_810992C[];
extern void sub_8093F10(struct PokemonMove *, struct PokemonMove *);
extern void sub_80928C0(u8 *, struct PokemonMove *, struct unkStruct_80928C0 *);
-extern void ExpandPlaceholdersBuffer(u8 *, u8 *, ...);
void LoadWazaParameters(void)
{
@@ -51,7 +51,7 @@ u8 sub_809287C(struct PokemonMove *move)
{
if((move->moveFlags & MOVE_FLAG_DISABLED) != 0)
return 0x32;
- else if((move->sealed & 1) == 0)
+ else if((move->moveFlags2 & MOVE_FLAG_SEALED) == 0)
return 0x34;
else
return 0x32;
@@ -76,7 +76,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
}
if (move->powerBoost != 0)
- ExpandPlaceholdersBuffer(localBuffer,gUnknown_81098DC,move->powerBoost); // %+d
+ sprintf_2(localBuffer,gUnknown_81098DC,move->powerBoost); // %+d
else
localBuffer[0] = '\0';
@@ -88,14 +88,14 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
}
switch(param_3->unk0) {
case 0:
- ExpandPlaceholdersBuffer
+ sprintf_2
(buffer,gUnknown_81098E0,uVar2,
gMovesData[move->moveID].namePointer,localBuffer);
break;
case 1:
maxPP = GetMoveMaxPP(move);
- ExpandPlaceholdersBuffer
+ sprintf_2
(buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->PP,maxPP);
@@ -103,7 +103,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
case 2:
maxPP = GetMoveMaxPP(move);
- ExpandPlaceholdersBuffer
+ sprintf_2
(buffer,gUnknown_8109910,uVar2,move->moveFlags & MOVE_FLAG_SET ? gUnknown_8109908 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->PP,maxPP);
@@ -111,7 +111,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
case 3:
maxPP = GetMoveMaxPP(move);
- ExpandPlaceholdersBuffer
+ sprintf_2
(buffer,gUnknown_81098EC,uVar2,move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->PP,maxPP);
@@ -119,7 +119,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
case 4:
maxPP = GetMoveMaxPP(move);
- ExpandPlaceholdersBuffer
+ sprintf_2
(buffer,gUnknown_8109910,uVar2, move->moveFlags & MOVE_FLAG_ENABLED ? gUnknown_8109928 : gUnknown_810990C,
gMovesData[move->moveID].namePointer,localBuffer,param_3->unk4,
move->PP,maxPP);
@@ -130,7 +130,7 @@ void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0
void InitPokemonMove(struct PokemonMove *move, u16 moveID)
{
move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS;
- move->sealed = FALSE;
+ move->moveFlags2 = 0;
move->moveID = moveID;
move->PP = GetMoveMaxPP(move);
move->powerBoost = 0;
@@ -143,7 +143,7 @@ void sub_8092AA8(struct PokemonMove *move, u16 moveID)
else
{
move->moveFlags = MOVE_FLAG_ENABLED | MOVE_FLAG_EXISTS;
- move->sealed = FALSE;
+ move->moveFlags2 = 0;
move->moveID = moveID;
move->PP = GetMoveMaxPP(move);
move->powerBoost = 0;
@@ -297,17 +297,17 @@ u8 *GetMoveUseText(u16 moveID)
return gMovesData[moveID].useText;
}
-u8 GetMoveAffectedByMagicCoat(u16 moveID)
+bool8 MoveAffectedByMagicCoat(u16 moveID)
{
return gMovesData[moveID].affectedByMagicCoat;
}
-u8 GetMoveTargetsUser(u16 moveID)
+bool8 MoveTargetsUser(u16 moveID)
{
return gMovesData[moveID].targetsUser;
}
-u8 GetMoveAffectedByMuzzled(u16 moveID)
+bool8 MoveAffectedByMuzzled(u16 moveID)
{
return gMovesData[moveID].affectedByMuzzled;
}
@@ -331,5 +331,5 @@ bool8 IsBlockedBySoundproof(struct PokemonMove *move)
void sub_8092D54(u8 *buffer, struct PokemonMove *move)
{
- ExpandPlaceholdersBuffer(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]);
+ sprintf_2(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]);
}
diff --git a/src/moves_1.c b/src/moves_1.c
index 80f28af..b312747 100644
--- a/src/moves_1.c
+++ b/src/moves_1.c
@@ -38,7 +38,7 @@ void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveS
void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
SaveIntegerBits(r0, &move->moveFlags, 4);
- SaveIntegerBits(r0, &move->sealed, 1);
+ SaveIntegerBits(r0, &move->moveFlags2, 1);
SaveIntegerBits(r0, &move->moveID, 9);
SaveIntegerBits(r0, &move->PP, 7);
SaveIntegerBits(r0, &move->powerBoost, 7);
@@ -59,7 +59,7 @@ void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move)
{
memset(move, 0, sizeof(struct PokemonMove));
RestoreIntegerBits(r0, &move->moveFlags, 4);
- RestoreIntegerBits(r0, &move->sealed, 1);
+ RestoreIntegerBits(r0, &move->moveFlags2, 1);
RestoreIntegerBits(r0, &move->moveID, 9);
RestoreIntegerBits(r0, &move->PP, 7);
RestoreIntegerBits(r0, &move->powerBoost, 7);
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index ceb1371..d57e8a2 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -6,6 +6,7 @@
#include "subStruct_203B240.h"
#include "constants/colors.h"
#include "constants/move_id.h"
+#include "code_800D090.h"
extern struct gPokemon *gMonsterParameters;
extern const char gUnknown_8107600[];
@@ -27,7 +28,6 @@ extern u16 gLevelCurrentPokeId;
extern struct LevelData gLevelCurrentData[];
-extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
extern s16 GetBaseSpecies(s16);
extern void sub_80922B4(u8 *, u8 *, s32);
extern int sprintf(char *, const char *, ...);
@@ -239,13 +239,13 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index)
void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index)
{
s32 new_index = index;
- ExpandPlaceholdersBuffer(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // {COLOR_2 YELLOW}%s{END_COLOR_TEXT_2}
+ sprintf_2(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // {COLOR_2 YELLOW}%s{END_COLOR_TEXT_2}
}
void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index)
{
s32 new_index = index;
- ExpandPlaceholdersBuffer(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {COLOR_2 CYAN}%s{END_COLOR_TEXT_2}
+ sprintf_2(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {COLOR_2 CYAN}%s{END_COLOR_TEXT_2}
}
void sub_808D930(u8 *buffer, s16 index)
@@ -258,10 +258,10 @@ void sub_808D930(u8 *buffer, s16 index)
preload = gUnknown_8107630; // %s%c
unownString = GetMonSpecies(SPECIES_UNOWN);
unownIndex = GetUnownIndex(index);
- ExpandPlaceholdersBuffer(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!?
+ sprintf_2(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!?
}
else {
- ExpandPlaceholdersBuffer(buffer,gUnknown_8107638, gMonsterParameters[index].species); // %s
+ sprintf_2(buffer,gUnknown_8107638, gMonsterParameters[index].species); // %s
}
}
@@ -278,7 +278,7 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32
if (colorNum == COLOR_WHITE) {
colorNum = COLOR_CYAN;
}
- ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
+ sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
}
void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
@@ -289,7 +289,7 @@ void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
if (colorNum == COLOR_WHITE) {
colorNum = COLOR_YELLOW;
}
- ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
+ sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
}
void sub_808DA0C(u8 *buffer, u8 *param_2)
@@ -297,7 +297,7 @@ void sub_808DA0C(u8 *buffer, u8 *param_2)
u8 nameBuffer [20];
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(buffer,gUnknown_8107638,nameBuffer); // %s
+ sprintf_2(buffer,gUnknown_8107638,nameBuffer); // %s
}
void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon)
diff --git a/src/status.c b/src/status.c
new file mode 100644
index 0000000..dc8a812
--- /dev/null
+++ b/src/status.c
@@ -0,0 +1,19 @@
+#include "global.h"
+#include "status.h"
+
+#include "constants/ability.h"
+#include "dungeon_pokemon_attributes.h"
+#include "dungeon_util.h"
+
+u8 GetFlashFireStatus(struct DungeonEntity *pokemon)
+{
+ if (!EntityExists(pokemon) || !HasAbility(pokemon, ABILITY_FLASH_FIRE))
+ {
+ return FLASH_FIRE_STATUS_NONE;
+ }
+ if (pokemon->entityData->flashFireBoost > 1)
+ {
+ return FLASH_FIRE_STATUS_MAXED;
+ }
+ return FLASH_FIRE_STATUS_NOT_MAXED;
+}
diff --git a/src/status_checker.c b/src/status_checker.c
index 07d6c7f..0aaeddf 100644
--- a/src/status_checker.c
+++ b/src/status_checker.c
@@ -11,6 +11,7 @@
#include "dungeon_util.h"
#include "dungeon_visibility.h"
#include "map.h"
+#include "moves.h"
#include "number_util.h"
#include "status_checks_1.h"
#include "tile_types.h"
@@ -130,13 +131,13 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
case MOVE_HOWL:
case MOVE_MEDITATE:
case MOVE_SHARPEN:
- if (pokemonData->attackStage >= MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE)
{
return FALSE;
}
break;
case MOVE_BELLY_DRUM:
- if (pokemonData->attackStage >= MAX_STAT_STAGE || RoundUpFixedPoint(pokemonData->belly) <= 0)
+ if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE || RoundUpFixedPoint(pokemonData->belly) <= 0)
{
return FALSE;
}
@@ -147,7 +148,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
case MOVE_HARDEN:
case MOVE_IRON_DEFENSE:
case MOVE_WITHDRAW:
- if (pokemonData->defenseStage >= MAX_STAT_STAGE)
+ if (pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -182,7 +183,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_COSMIC_POWER:
- if (pokemonData->defenseStage >= MAX_STAT_STAGE && pokemonData->specialDefenseStage >= MAX_STAT_STAGE)
+ if (pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE && pokemonData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -212,7 +213,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_MINIMIZE:
- if (pokemonData->evasionStage >= MAX_STAT_STAGE)
+ if (pokemonData->accuracyStages[STAT_STAGE_EVASION] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -243,7 +244,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_BULK_UP:
- if (pokemonData->attackStage >= MAX_STAT_STAGE && pokemonData->defenseStage >= MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE && pokemonData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -255,7 +256,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_TAIL_GLOW:
- if (pokemonData->specialAttackStage >= MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -279,7 +280,7 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_DRAGON_DANCE:
- if (pokemonData->attackStage >= MAX_STAT_STAGE && pokemon->entityData->movementSpeed >= MAX_MOVEMENT_SPEED)
+ if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE && pokemon->entityData->movementSpeed >= MAX_MOVEMENT_SPEED)
{
return FALSE;
}
@@ -409,19 +410,19 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_DOUBLE_TEAM:
- if (pokemonData->evasionStage >= MAX_STAT_STAGE)
+ if (pokemonData->accuracyStages[STAT_STAGE_EVASION] >= MAX_STAT_STAGE)
{
return FALSE;
}
break;
case MOVE_GROWTH:
- if (pokemonData->specialAttackStage >= MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] >= MAX_STAT_STAGE)
{
return FALSE;
}
break;
case MOVE_SWORDS_DANCE:
- if (pokemonData->attackStage >= MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -445,12 +446,12 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
break;
case MOVE_CALM_MIND:
- if (pokemonData->specialAttackStage < MAX_STAT_STAGE)
+ if (pokemonData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE)
{
break;
}
case MOVE_AMNESIA:
- if (pokemonData->specialDefenseStage >= MAX_STAT_STAGE)
+ if (pokemonData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] >= MAX_STAT_STAGE)
{
return FALSE;
}
@@ -492,11 +493,11 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
struct DungeonEntity *target = gDungeonGlobalData->wildPokemon[i];
if (EntityExists(target) && target != pokemon && CanSee(pokemon, target))
{
- if (target->entityData->attackStage >= MAX_STAT_STAGE)
+ if (target->entityData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE)
{
continue;
}
- if (target->entityData->specialAttackStage < MAX_STAT_STAGE)
+ if (target->entityData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE)
{
break;
}
@@ -516,11 +517,11 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
struct DungeonEntity *target = gDungeonGlobalData->teamPokemon[i];
if (EntityExists(target) && target != pokemon && CanSee(pokemon, target))
{
- if (target->entityData->attackStage >= MAX_STAT_STAGE)
+ if (target->entityData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE)
{
continue;
}
- if (target->entityData->specialAttackStage < MAX_STAT_STAGE)
+ if (target->entityData->attackStages[STAT_STAGE_SPECIAL_ATTACK] < MAX_STAT_STAGE)
{
break;
}
@@ -535,3 +536,415 @@ bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct Pokemo
}
return TRUE;
}
+
+bool8 CanUseOnTargetWithStatusChecker(struct DungeonEntity *user, struct DungeonEntity *target, struct PokemonMove *move)
+{
+ struct DungeonEntityData *userData = user->entityData;
+ struct DungeonEntityData *targetData = target->entityData;
+ s32 i;
+ if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_FROZEN && MoveCannotHitFrozen(move))
+ {
+ return FALSE;
+ }
+ switch (move->moveID)
+ {
+ case MOVE_GRASSWHISTLE:
+ case MOVE_HYPNOSIS:
+ case MOVE_LOVELY_KISS:
+ case MOVE_SING:
+ case MOVE_SLEEP_POWDER:
+ case MOVE_SPORE:
+ if (IsSleeping(target))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_YAWN:
+ if (targetData->sleepStatus == SLEEP_STATUS_YAWNING)
+ {
+ return FALSE;
+ }
+ if (IsSleeping(target))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_NIGHTMARE:
+ if (targetData->sleepStatus == SLEEP_STATUS_NIGHTMARE)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_SWEET_SCENT:
+ if (targetData->accuracyStages[STAT_STAGE_EVASION] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_CHARM:
+ if (targetData->attackMultipliers[STAT_STAGE_ATTACK] < STAT_MULTIPLIER_THRESHOLD)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_ENCORE:
+ if (targetData->volatileStatus == VOLATILE_STATUS_ENCORE)
+ {
+ return FALSE;
+ }
+ if (!HasLastUsedMove(targetData->moves))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_SUPER_FANG:
+ if (targetData->HP <= 1)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_PAIN_SPLIT:
+ if (targetData->HP <= userData->HP)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_TORMENT:
+ if (HasDisabledMove(targetData->moves) || !HasLastUsedMove(targetData->moves))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_COTTON_SPORE:
+ case MOVE_SCARY_FACE:
+ case MOVE_STRING_SHOT:
+ if (target->entityData->movementSpeed <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_SCREECH:
+ if (targetData->defenseMultipliers[STAT_STAGE_DEFENSE] < STAT_MULTIPLIER_THRESHOLD)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_FAKE_TEARS:
+ if (targetData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_SPITE:
+ if (LastUsedMoveOutOfPP(targetData->moves))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_SMOKESCREEN:
+ if (targetData->moveStatus == MOVE_STATUS_WHIFFER)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_MEMENTO:
+ if (targetData->attackMultipliers[STAT_STAGE_ATTACK] < STAT_MULTIPLIER_THRESHOLD &&
+ targetData->attackMultipliers[STAT_STAGE_SPECIAL_ATTACK] < STAT_MULTIPLIER_THRESHOLD)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_WILL_O_WISP:
+ if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BURNED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_FORESIGHT:
+ case MOVE_ODOR_SLEUTH:
+ if (targetData->types[0] == TYPE_GHOST || targetData->types[1] == TYPE_GHOST)
+ {
+ if (!targetData->exposedStatus)
+ {
+ break;
+ }
+ }
+ if (targetData->accuracyStages[STAT_STAGE_EVASION] <= DEFAULT_STAT_STAGE)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_DISABLE:
+ case MOVE_GLARE:
+ case MOVE_STUN_SPORE:
+ case MOVE_THUNDER_WAVE:
+ if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_PARALYZED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_ENDEAVOR:
+ if (targetData->HP - userData->HP <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_LEER:
+ case MOVE_TAIL_WHIP:
+ if (targetData->defenseStages[STAT_STAGE_DEFENSE] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_METAL_SOUND:
+ if (targetData->defenseStages[STAT_STAGE_SPECIAL_DEFENSE] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_TICKLE:
+ if (targetData->attackStages[STAT_STAGE_ATTACK] <= 0 &&
+ targetData->defenseStages[STAT_STAGE_DEFENSE] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_BLOCK:
+ case MOVE_MEAN_LOOK:
+ case MOVE_SPIDER_WEB:
+ if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_IMMOBILIZED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_HAZE:
+ {
+ for (i = 0; i < 2; i++)
+ {
+ if (targetData->attackStages[i] < DEFAULT_STAT_STAGE) break;
+ if (targetData->defenseStages[i] < DEFAULT_STAT_STAGE) break;
+ if (targetData->accuracyStages[i] < DEFAULT_STAT_STAGE ||
+ targetData->attackMultipliers[i] < DEFAULT_STAT_MULTIPLIER ||
+ targetData->defenseMultipliers[i] < DEFAULT_STAT_MULTIPLIER)
+ {
+ break;
+ }
+ }
+ if (i == 2)
+ {
+ return FALSE;
+ }
+ break;
+ }
+ case MOVE_UPROAR:
+ if (targetData->sleepStatus == SLEEP_STATUS_SLEEPLESS)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_PSYCH_UP:
+ {
+ for (i = 0; i < 2; i++)
+ {
+ if (userData->attackStages[i] < targetData->attackStages[i]) break;
+ if (userData->defenseStages[i] < targetData->defenseStages[i] ||
+ userData->accuracyStages[i] < targetData->accuracyStages[i] ||
+ userData->attackMultipliers[i] < targetData->attackMultipliers[i] ||
+ userData->defenseMultipliers[i] < targetData->defenseMultipliers[i])
+ {
+ break;
+ }
+ }
+ if (i == 2)
+ {
+ return FALSE;
+ }
+ break;
+ }
+ case MOVE_FLASH:
+ case MOVE_KINESIS:
+ case MOVE_SAND_ATTACK:
+ if (targetData->accuracyStages[STAT_STAGE_ACCURACY] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_TAUNT:
+ if (targetData->volatileStatus == VOLATILE_STATUS_TAUNTED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_TRICK:
+ if (!(userData->heldItem.itemFlags & ITEM_FLAG_EXISTS) ||
+ !(targetData->heldItem.itemFlags & ITEM_FLAG_EXISTS))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_KNOCK_OFF:
+ if (!(targetData->heldItem.itemFlags & ITEM_FLAG_EXISTS))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_FEATHERDANCE:
+ case MOVE_GROWL:
+ if (targetData->attackStages[STAT_STAGE_ATTACK] <= 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_ROLE_PLAY:
+ if (userData->abilities[0] == targetData->abilities[0] &&
+ userData->abilities[1] == targetData->abilities[1])
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_CURSE:
+ if (HasType(user, TYPE_GHOST))
+ {
+ if (targetData->waitingStatus == WAITING_STATUS_CURSED)
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (userData->attackStages[STAT_STAGE_ATTACK] >= MAX_STAT_STAGE &&
+ userData->defenseStages[STAT_STAGE_DEFENSE] >= MAX_STAT_STAGE)
+ {
+ return FALSE;
+ }
+ }
+ break;
+ case MOVE_IMPRISON:
+ case MOVE_OBSERVER:
+ if (targetData->volatileStatus == VOLATILE_STATUS_PAUSED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_FALSE_SWIPE:
+ if (targetData->HP <= 1)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_LEECH_SEED:
+ if (targetData->linkedStatus == LINKED_STATUS_LEECH_SEED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_PERISH_SONG:
+ if (targetData->perishSongTimer != 0)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_MIMIC:
+ case MOVE_SKETCH:
+ if (!HasLastUsedMove(targetData->moves))
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_ATTRACT:
+ if (targetData->volatileStatus == VOLATILE_STATUS_INFATUATED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_WRAP:
+ if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE)
+ {
+ return FALSE;
+ }
+ if (targetData->immobilizeStatus == IMMOBILIZE_STATUS_WRAPPED_BY_FOE)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_TOXIC:
+ if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BADLY_POISONED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_POISON_GAS:
+ case MOVE_POISONPOWDER:
+ if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_POISONED)
+ {
+ return FALSE;
+ }
+ if (targetData->nonVolatileStatus == NON_VOLATILE_STATUS_BADLY_POISONED)
+ {
+ return FALSE;
+ }
+ break;
+ case MOVE_CONFUSE_RAY:
+ case MOVE_FLATTER:
+ case MOVE_SUPERSONIC:
+ case MOVE_SWAGGER:
+ case MOVE_SWEET_KISS:
+ case MOVE_TEETER_DANCE:
+ case MOVE_TOTTER:
+ if (targetData->volatileStatus == VOLATILE_STATUS_CONFUSED)
+ {
+ return FALSE;
+ }
+ break;
+ }
+ return TRUE;
+}
+
+bool8 HasDisabledMove(struct PokemonMove *moves)
+{
+ s32 i;
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags & MOVE_FLAG_DISABLED)
+ {
+ return TRUE;
+ }
+ }
+ if (moves[STRUGGLE_MOVE_INDEX].moveFlags & MOVE_FLAG_DISABLED)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 LastUsedMoveOutOfPP(struct PokemonMove *moves)
+{
+ s32 i;
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (moves[i].moveFlags & MOVE_FLAG_EXISTS &&
+ moves[i].moveFlags & MOVE_FLAG_LAST_USED &&
+ moves[i].PP == 0)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 HasLastUsedMove(struct PokemonMove *moves)
+{
+ s32 i;
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags & MOVE_FLAG_LAST_USED)
+ {
+ return TRUE;
+ }
+ }
+ if (moves[STRUGGLE_MOVE_INDEX].moveFlags & MOVE_FLAG_LAST_USED)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/src/status_checks_1.c b/src/status_checks_1.c
index c49e127..7070acd 100644
--- a/src/status_checks_1.c
+++ b/src/status_checks_1.c
@@ -28,7 +28,7 @@ bool8 HasNegativeStatus(struct DungeonEntity *pokemon)
for (i = 0; i < MAX_MON_MOVES; i++)
{
struct PokemonMove *moves = pokemonData->moves;
- if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].sealed & TRUE)
+ if (moves[i].moveFlags & MOVE_FLAG_EXISTS && moves[i].moveFlags2 & MOVE_FLAG_SEALED)
{
return TRUE;
}
diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c
index 7e419b2..cdfb97a 100644
--- a/src/thank_you_wonder_mail.c
+++ b/src/thank_you_wonder_mail.c
@@ -10,6 +10,7 @@
#include "input.h"
#include "text.h"
#include "team_inventory.h"
+#include "code_800D090.h"
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
@@ -217,7 +218,6 @@ extern void sub_802F2C0();
extern u32 sub_80144A4(s32 *r0);
extern void SetThankYouMailMenuState(u32);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
-extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_80922B4(u8 *, u8 *, u32);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
@@ -1286,7 +1286,7 @@ void UpdateThankYouMailText(void)
case 5:
pokeStruct = GetPlayerPokemonStruct();
sub_80922B4(auStack180,pokeStruct->name, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
+ sprintf_2(gUnknown_203B2C4->formattedString,gUnknown_80DF250,auStack180);
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
break;
case 0xe:
@@ -1445,7 +1445,7 @@ void UpdateThankYouMailText(void)
case THANK_YOU_MAIL_COMMS_CLEANUP:
pokeStruct2 = GetPlayerPokemonStruct();
sub_80922B4(auStack100, pokeStruct2->name, POKEMON_NAME_LENGTH);
- ExpandPlaceholdersBuffer(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
+ sprintf_2(gUnknown_203B2C4->formattedString,gUnknown_80DF63C,auStack100);
sub_80141B4(gUnknown_203B2C4->formattedString,0,&gUnknown_203B2C4->faceFile,0x10d);
break;
case CONFIRM_ITEM_TO_SEND:
diff --git a/src/type_chart.c b/src/type_chart.c
new file mode 100644
index 0000000..ac2071c
--- /dev/null
+++ b/src/type_chart.c
@@ -0,0 +1,27 @@
+#include "type_chart.h"
+
+#define IMMUNE EFFECTIVENESS_IMMUNE
+#define RESIST EFFECTIVENESS_RESIST
+#define NEUTRAL EFFECTIVENESS_NEUTRAL
+#define SUPER EFFECTIVENESS_SUPER
+
+const s16 gTypeEffectivenessChart[NUM_TYPES][NUM_TYPES] = {
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST},
+ {NEUTRAL, NEUTRAL, RESIST, RESIST, SUPER, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, RESIST, NEUTRAL, SUPER},
+ {NEUTRAL, NEUTRAL, SUPER, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, NEUTRAL, NEUTRAL},
+ {NEUTRAL, NEUTRAL, RESIST, SUPER, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, SUPER, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, RESIST, NEUTRAL, RESIST},
+ {NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, IMMUNE, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL},
+ {NEUTRAL, NEUTRAL, RESIST, RESIST, SUPER, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, SUPER, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST},
+ {NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, NEUTRAL, RESIST, RESIST, RESIST, SUPER, NEUTRAL, NEUTRAL, SUPER, SUPER},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, NEUTRAL, IMMUNE},
+ {NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, IMMUNE, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, RESIST},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, SUPER, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, IMMUNE, RESIST},
+ {NEUTRAL, NEUTRAL, RESIST, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, SUPER, RESIST},
+ {NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST},
+ {NEUTRAL, IMMUNE, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, RESIST},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST},
+ {NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, RESIST, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, RESIST, RESIST},
+ {NEUTRAL, NEUTRAL, RESIST, RESIST, NEUTRAL, RESIST, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, NEUTRAL, SUPER, NEUTRAL, NEUTRAL, NEUTRAL, RESIST}
+};
diff --git a/src/type_effectiveness.c b/src/type_effectiveness.c
new file mode 100644
index 0000000..8a9ee04
--- /dev/null
+++ b/src/type_effectiveness.c
@@ -0,0 +1,174 @@
+#include "global.h"
+#include "type_effectiveness.h"
+
+#include "constants/ability.h"
+#include "constants/status.h"
+#include "constants/weather.h"
+#include "dungeon_global_data.h"
+#include "dungeon_pokemon_attributes.h"
+#include "dungeon_util.h"
+#include "status.h"
+#include "type_chart.h"
+#include "weather.h"
+
+u32 gTypeEffectivenessMultipliers[] = {0, 1, 2, 4};
+
+s32 WeightWeakTypePicker(struct DungeonEntity *user, struct DungeonEntity *target, u8 moveType)
+{
+ s32 weight = 1;
+ bool8 checkExposed = FALSE;
+ struct DungeonEntityData *userData;
+ struct DungeonEntityData *targetData;
+ u8 *targetTypes;
+ u8 *targetType;
+ u32 moveTypeOffset;
+ if (!EntityExists(target))
+ {
+ return 1;
+ }
+ if (moveType == TYPE_NORMAL || moveType == TYPE_FIGHTING)
+ {
+ checkExposed = TRUE;
+ }
+ userData = user->entityData;
+ targetData = target->entityData;
+ if (moveType == TYPE_FIRE && GetFlashFireStatus(target) != FLASH_FIRE_STATUS_NONE)
+ {
+ return 0;
+ }
+ if (moveType == TYPE_ELECTRIC && HasAbility(target, ABILITY_VOLT_ABSORB))
+ {
+ return 0;
+ }
+ if (moveType == TYPE_WATER && HasAbility(target, ABILITY_WATER_ABSORB))
+ {
+ return 0;
+ }
+ if (moveType == TYPE_GROUND && HasAbility(target, ABILITY_LEVITATE))
+ {
+ return 1;
+ }
+ targetTypes = targetData->types;
+ moveTypeOffset = moveType * NUM_TYPES * sizeof(s16);
+ targetType = targetData->types;
+ do
+ {
+ s32 effectiveness;
+ u32 typeEffectivenessMultipliers[NUM_EFFECTIVENESS];
+ memcpy(typeEffectivenessMultipliers, gTypeEffectivenessMultipliers, NUM_EFFECTIVENESS * sizeof(u32));
+ if (checkExposed && *targetType == TYPE_GHOST && !targetData->exposedStatus)
+ {
+ effectiveness = 0;
+ gDungeonGlobalData->pokemonExposed = TRUE;
+ }
+ else
+ {
+ effectiveness = gTypeEffectivenessChart[moveType][*targetType];
+ // Used to swap variable initialization order at the loop start.
+ effectiveness = *(s16*)(((s8*) gTypeEffectivenessChart) + moveTypeOffset + *targetType * 2);
+ }
+ if (weight == 0)
+ {
+ goto breakLoop;
+ }
+ weight *= typeEffectivenessMultipliers[effectiveness];
+ weight /= 2;
+ if (weight == 0)
+ {
+ // BUG: If the Pokémon's first type resists the move, the second type is ignored.
+ // This calculates type effectiveness incorrectly if the first type resists the move and the second type is weak to the move.
+ // For example, a Fire-type move is considered not very effective against a Rock/Bug-type like Anorith.
+ return 2;
+ }
+ } while ((s32)(++targetType) <= (s32)(targetTypes + 1));
+ breakLoop:
+ if ((moveType == TYPE_FIRE || moveType == TYPE_ICE) && HasAbility(target, ABILITY_THICK_FAT))
+ {
+ return 2;
+ }
+ if (moveType == TYPE_WATER && HasAbility(user, ABILITY_TORRENT))
+ {
+ s32 maxHP = userData->maxHP;
+ if (maxHP < 0)
+ {
+ maxHP += 3;
+ }
+ if (maxHP >> 2 >= userData->HP)
+ {
+ weight *= 2;
+ }
+ }
+ if (moveType == TYPE_GRASS && HasAbility(user, ABILITY_OVERGROW))
+ {
+ s32 maxHP = userData->maxHP;
+ if (maxHP < 0)
+ {
+ maxHP += 3;
+ }
+ if (maxHP >> 2 >= userData->HP)
+ {
+ weight *= 2;
+ }
+ }
+ if (moveType == TYPE_BUG && HasAbility(user, ABILITY_SWARM))
+ {
+ s32 maxHP = userData->maxHP;
+ if (maxHP < 0)
+ {
+ maxHP += 3;
+ }
+ if (maxHP >> 2 >= userData->HP)
+ {
+ weight *= 2;
+ }
+ }
+ if (moveType == TYPE_FIRE && HasAbility(user, ABILITY_BLAZE))
+ {
+ s32 maxHP = userData->maxHP;
+ if (maxHP < 0)
+ {
+ maxHP += 3;
+ }
+ if (maxHP >> 2 >= userData->HP)
+ {
+ weight *= 2;
+ }
+ }
+ if (weight == 0)
+ {
+ return 2;
+ }
+ if (HasType(user, moveType))
+ {
+ weight *= 2;
+ }
+ targetTypes = targetData->types;
+ if (GetWeather(user) == WEATHER_SUNNY)
+ {
+ if (moveType == TYPE_FIRE)
+ {
+ weight *= 2;
+ }
+ else if (moveType == TYPE_WATER)
+ {
+ return 2;
+ }
+ }
+ if (gDungeonGlobalData->mudSportTurnsLeft != 0 && moveType == TYPE_ELECTRIC)
+ {
+ return 2;
+ }
+ if (gDungeonGlobalData->waterSportTurnsLeft != 0 && moveType == TYPE_FIRE)
+ {
+ return 2;
+ }
+ if (moveType == TYPE_ELECTRIC && userData->chargingStatus == CHARGING_STATUS_CHARGE)
+ {
+ weight *= 2;
+ }
+ if (weight > 2)
+ {
+ weight = 3;
+ }
+ return weight + 2;
+}
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 816dba2..6c90992 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -10,6 +10,7 @@
#include "sub_8095228.h"
#include "gUnknown_203B46C.h"
#include "wonder_mail.h"
+#include "code_800D090.h"
struct unkStruct_203B2C8
{
@@ -139,7 +140,6 @@ extern void sub_802B5B8(void);
extern void sub_802B5FC(void);
extern void sub_802B624(void);
-void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
extern void sub_803C37C(u8 *, u32, u8 *);
extern u32 sub_803C200(u8 *, u32);
@@ -374,7 +374,7 @@ void sub_802B3E0(void)
strcpy(teamNameBuffer,gRescueTeamNamePlaceholder);
}
// Print and expand placeholders?
- ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);
+ sprintf_2(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);
// Display to screen with Pelipper face
sub_80141B4(gUnknown_203B2C8->teamName, 0, &gUnknown_203B2C8->faceFile, 0x10d);
break;