summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--asm/battle_anim_812C144.s4783
-rw-r--r--asm/pokenav.s10179
-rw-r--r--data-de/event_scripts.s1
-rw-r--r--data/battle_anim_813F0F4.s88
-rw-r--r--data/event_scripts.s1
-rw-r--r--data/graphics.s4
-rw-r--r--data/maps/DewfordTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/EverGrandeCity_HallOfFame/scripts.inc4
-rw-r--r--data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/EverGrandeCity_PokemonLeague/scripts.inc2
-rw-r--r--data/maps/FallarborTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/FortreeCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/InsideOfTruck/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/OldaleTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/RustboroCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/SSTidalCorridor/scripts.inc4
-rw-r--r--data/maps/SlateportCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc2
-rw-r--r--data/pokenav.s2
-rw-r--r--graphics/interface/bag_screen_labels.bin (renamed from graphics/unknown/unknown_E96EC8.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/bag_spinner.png (renamed from graphics/unknown_sprites/83C172C.png)bin108 -> 108 bytes
-rw-r--r--include/battle_anim_813F0F4.h2
-rw-r--r--include/constants/heal_locations.h27
-rw-r--r--include/global.h9
-rw-r--r--include/graphics.h2
-rw-r--r--include/heal_location.h2
-rw-r--r--include/pokeball.h4
-rw-r--r--include/pokedex.h3
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokenav.h176
-rw-r--r--include/region_map.h1
-rw-r--r--include/use_pokeblock.h1
-rw-r--r--src/battle/battle_anim_812C144.c1589
-rwxr-xr-xsrc/battle/battle_anim_813F0F4.c140
-rw-r--r--src/battle/battle_controller_linkopponent.c4
-rw-r--r--src/battle/battle_controller_linkpartner.c4
-rw-r--r--src/battle/battle_controller_opponent.c4
-rw-r--r--src/battle/battle_controller_player.c4
-rw-r--r--src/battle/battle_controller_wally.c4
-rw-r--r--src/battle/pokeball.c181
-rw-r--r--src/battle/post_battle_event_funcs.c5
-rw-r--r--src/birch_pc.c10
-rw-r--r--src/contest_effect.c180
-rw-r--r--src/data/heal_locations.h25
-rw-r--r--src/data/pokedex_orders.h3188
-rw-r--r--src/heal_location.c27
-rw-r--r--src/item_menu.c14
-rw-r--r--src/load_save.c32
-rw-r--r--src/pokedex.c9
-rw-r--r--src/pokemon_3.c15
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/pokenav_after.c5
-rw-r--r--src/pokenav_before.c4522
-rw-r--r--src/record_mixing.c22
-rw-r--r--src/region_map.c120
-rw-r--r--src/tv.c48
-rw-r--r--src/use_pokeblock.c10
65 files changed, 7873 insertions, 17622 deletions
diff --git a/.gitignore b/.gitignore
index cfb969f5c..67a81bb9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@ types_*.taghl
*.s.old2
*.dump
*.sa*
+*.sgm
Thumbs.db
build/
.idea/
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index 4fea7049b..8a062e352 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -5,4789 +5,6 @@
.text
- thumb_func_start sub_812F474
-sub_812F474: @ 812F474
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0812F4A8 @ =gTasks
- adds r6, r0, r1
- ldrb r0, [r6, 0x12]
- bl GetBattlerPosition_permutated
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812F4B4
- ldr r0, _0812F4AC @ =gBattle_BG1_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, _0812F4B0 @ =gBattle_BG1_Y
- b _0812F4BC
- .align 2, 0
-_0812F4A8: .4byte gTasks
-_0812F4AC: .4byte gBattle_BG1_X
-_0812F4B0: .4byte gBattle_BG1_Y
-_0812F4B4:
- ldr r0, _0812F4D4 @ =gBattle_BG2_X
- ldrh r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, _0812F4D8 @ =gBattle_BG2_Y
-_0812F4BC:
- ldrh r0, [r0]
- str r0, [sp, 0x8]
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _0812F4CA
- b _0812F6A6
-_0812F4CA:
- cmp r0, 0x1
- bgt _0812F4DC
- cmp r0, 0
- beq _0812F4EA
- b _0812F712
- .align 2, 0
-_0812F4D4: .4byte gBattle_BG2_X
-_0812F4D8: .4byte gBattle_BG2_Y
-_0812F4DC:
- cmp r0, 0x2
- bne _0812F4E2
- b _0812F6C4
-_0812F4E2:
- cmp r0, 0x3
- bne _0812F4E8
- b _0812F70C
-_0812F4E8:
- b _0812F712
-_0812F4EA:
- movs r2, 0x24
- ldrsh r0, [r6, r2]
- lsls r0, 17
- lsrs r5, r0, 16
- movs r3, 0
- str r3, [sp]
- mov r9, r3
- movs r4, 0
- ldrh r0, [r6, 0xA]
- adds r0, 0x2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6, 0xA]
- ldrh r7, [r6, 0xA]
- mov r8, r7
- movs r0, 0x14
- ldrsh r1, [r6, r0]
- movs r0, 0xFC
- lsls r0, 3
- bl __divsi3
- strh r0, [r6, 0x1A]
- movs r1, 0x16
- ldrsh r0, [r6, r1]
- lsls r0, 1
- movs r2, 0x1A
- ldrsh r1, [r6, r2]
- bl __divsi3
- negs r0, r0
- strh r0, [r6, 0x1C]
- ldrh r0, [r6, 0x16]
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- ldrh r2, [r6, 0x24]
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- ble _0812F60A
- ldr r0, _0812F660 @ =gScanlineEffect
- mov r10, r0
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- asrs r0, 16
- str r0, [sp, 0x10]
- ldr r2, [sp, 0x8]
- lsls r0, r2, 16
- asrs r0, 16
- str r0, [sp, 0xC]
-_0812F55A:
- lsls r5, 16
- asrs r5, 16
- adds r2, r5, 0x1
- lsls r2, 1
- mov r3, r10
- ldrb r1, [r3, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- ldr r0, _0812F664 @ =gScanlineEffectRegBuffers
- adds r2, r0
- lsls r4, 16
- asrs r4, 16
- mov r1, r9
- lsls r0, r1, 16
- asrs r0, 16
- subs r0, r4, r0
- ldr r3, [sp, 0xC]
- adds r0, r3, r0
- strh r0, [r2]
- lsls r3, r5, 1
- mov r0, r10
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r3, r0
- ldr r1, _0812F664 @ =gScanlineEffectRegBuffers
- adds r3, r1
- lsls r1, r7, 16
- asrs r1, 16
- ldr r2, [sp, 0x10]
- adds r1, r2, r1
- mov r7, r8
- lsls r2, r7, 16
- asrs r2, 16
- lsls r0, r2, 1
- ldr r7, _0812F668 @ =gSineTable
- adds r0, r7
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- adds r1, r0
- strh r1, [r3]
- adds r2, 0xA
- mov r8, r2
- movs r0, 0xFF
- mov r1, r8
- ands r1, r0
- mov r8, r1
- ldrh r0, [r6, 0x1C]
- ldrh r2, [r6, 0x1E]
- adds r0, r2
- strh r0, [r6, 0x1E]
- lsls r0, 16
- asrs r0, 21
- lsls r0, 16
- lsrs r7, r0, 16
- strh r7, [r6, 0x20]
- adds r4, 0x1
- lsls r4, 16
- lsrs r4, 16
- subs r5, 0x2
- lsls r5, 16
- lsrs r5, 16
- ldr r3, [sp]
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r1, [r6, 0x14]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- str r2, [sp]
- asrs r0, 21
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r0, _0812F66C @ =0xffff0000
- add r0, r12
- lsrs r2, r0, 16
- lsls r3, r2, 16
- mov r12, r3
- asrs r1, r3, 16
- movs r3, 0x22
- ldrsh r0, [r6, r3]
- cmp r1, r0
- bgt _0812F55A
-_0812F60A:
- lsls r1, r2, 17
- cmp r1, 0
- blt _0812F636
- ldr r4, _0812F664 @ =gScanlineEffectRegBuffers
- ldr r7, [sp, 0x4]
- lsls r0, r7, 16
- asrs r0, 16
- adds r3, r0, 0
- adds r3, 0xF0
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_0812F622:
- asrs r2, r1, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- strh r3, [r0]
- adds r1, r5
- strh r3, [r1]
- subs r2, 0x2
- lsls r1, r2, 16
- cmp r1, 0
- bge _0812F622
-_0812F636:
- ldrh r0, [r6, 0x14]
- adds r0, 0x1
- strh r0, [r6, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- ble _0812F69C
- movs r0, 0x40
- strh r0, [r6, 0x14]
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812F670
- ldrh r0, [r6, 0xE]
- subs r0, 0x1
- strh r0, [r6, 0xE]
- b _0812F676
- .align 2, 0
-_0812F660: .4byte gScanlineEffect
-_0812F664: .4byte gScanlineEffectRegBuffers
-_0812F668: .4byte gSineTable
-_0812F66C: .4byte 0xffff0000
-_0812F670:
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
-_0812F676:
- ldr r0, _0812F698 @ =REG_BLDALPHA
- ldrh r1, [r6, 0x10]
- lsls r1, 8
- ldrh r2, [r6, 0xE]
- orrs r1, r2
- strh r1, [r0]
- movs r2, 0xE
- ldrsh r1, [r6, r2]
- cmp r1, 0
- bne _0812F712
- movs r3, 0x10
- ldrsh r0, [r6, r3]
- cmp r0, 0x10
- bne _0812F712
- strh r1, [r6, 0xC]
- strh r1, [r6, 0xE]
- b _0812F700
- .align 2, 0
-_0812F698: .4byte REG_BLDALPHA
-_0812F69C:
- ldrh r0, [r6, 0x18]
- ldrh r7, [r6, 0x16]
- adds r0, r7
- strh r0, [r6, 0x16]
- b _0812F712
-_0812F6A6:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- ble _0812F712
- ldr r1, _0812F6C0 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- movs r0, 0
- strh r0, [r6, 0xC]
- b _0812F700
- .align 2, 0
-_0812F6C0: .4byte gScanlineEffect
-_0812F6C4:
- ldrh r0, [r6, 0xC]
- adds r0, 0x1
- strh r0, [r6, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812F6DA
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- b _0812F6E0
-_0812F6DA:
- ldrh r0, [r6, 0x10]
- subs r0, 0x1
- strh r0, [r6, 0x10]
-_0812F6E0:
- ldr r2, _0812F708 @ =REG_BLDALPHA
- ldrh r0, [r6, 0x10]
- lsls r0, 8
- ldrh r1, [r6, 0xE]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- cmp r0, 0x10
- bne _0812F712
- movs r2, 0x10
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _0812F712
- strh r0, [r6, 0xC]
- strh r0, [r6, 0xE]
-_0812F700:
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _0812F712
- .align 2, 0
-_0812F708: .4byte REG_BLDALPHA
-_0812F70C:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0812F712:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812F474
-
- thumb_func_start sub_812F724
-sub_812F724: @ 812F724
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0812F75C @ =gTasks
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, _0812F760 @ =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _0812F764 @ =gUnknown_08402750
- adds r0, r4, 0
- bl sub_80798F4
- ldr r0, _0812F768 @ =sub_812F76C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F75C: .4byte gTasks
-_0812F760: .4byte gBattleAnimArgs
-_0812F764: .4byte gUnknown_08402750
-_0812F768: .4byte sub_812F76C
- thumb_func_end sub_812F724
-
- thumb_func_start sub_812F76C
-sub_812F76C: @ 812F76C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r2, _0812F7C4 @ =gTasks
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- adds r1, r0, 0x1
- movs r5, 0
- strh r1, [r3, 0x8]
- subs r0, 0x14
- lsls r0, 16
- lsrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x16
- bhi _0812F7D0
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0812F7E0
- strh r5, [r3, 0xA]
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r5, 0x1
- ands r0, r5
- cmp r0, 0
- bne _0812F7D0
- ldr r2, _0812F7C8 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0812F7CC @ =0x0000ffff
- strh r1, [r0, 0x24]
- b _0812F7E0
- .align 2, 0
-_0812F7C4: .4byte gTasks
-_0812F7C8: .4byte gSprites
-_0812F7CC: .4byte 0x0000ffff
-_0812F7D0:
- ldr r2, _0812F800 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
-_0812F7E0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- bl sub_807992C
- lsls r0, 24
- cmp r0, 0
- bne _0812F7F8
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_0812F7F8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F800: .4byte gSprites
- thumb_func_end sub_812F76C
-
- thumb_func_start sub_812F804
-sub_812F804: @ 812F804
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r5, r2, 0
- adds r0, r3, 0
- ldr r4, [sp, 0x14]
- ldr r6, [sp, 0x18]
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r2, r8
- strh r1, [r2, 0x20]
- strh r5, [r2, 0x22]
- lsls r1, 16
- asrs r1, 16
- lsls r2, r1, 4
- mov r3, r8
- strh r2, [r3, 0x36]
- lsls r5, 16
- asrs r5, 16
- lsls r2, r5, 4
- strh r2, [r3, 0x38]
- lsls r0, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- strh r0, [r1, 0x3A]
- lsls r4, 16
- asrs r4, 16
- subs r4, r5
- lsls r4, 4
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- mov r2, r8
- strh r0, [r2, 0x3C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_812F804
-
- thumb_func_start sub_812F86C
-sub_812F86C: @ 812F86C
- ldrh r1, [r0, 0x3A]
- ldrh r2, [r0, 0x36]
- adds r1, r2
- strh r1, [r0, 0x36]
- ldrh r2, [r0, 0x3C]
- ldrh r3, [r0, 0x38]
- adds r2, r3
- strh r2, [r0, 0x38]
- lsls r1, 16
- asrs r1, 20
- strh r1, [r0, 0x20]
- lsls r2, 16
- asrs r2, 20
- strh r2, [r0, 0x22]
- bx lr
- thumb_func_end sub_812F86C
-
- thumb_func_start sub_812F88C
-sub_812F88C: @ 812F88C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrh r6, [r4, 0x20]
- ldrh r5, [r4, 0x22]
- bl sub_8078650
- ldr r0, _0812F8D4 @ =gBattleAnimArgs
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x22
- ldrsh r2, [r4, r0]
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- str r5, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r3, r6, 0
- bl sub_812F804
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _0812F8D8 @ =sub_812F8DC
- str r0, [r4, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F8D4: .4byte gBattleAnimArgs
-_0812F8D8: .4byte sub_812F8DC
- thumb_func_end sub_812F88C
-
- thumb_func_start sub_812F8DC
-sub_812F8DC: @ 812F8DC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- lsls r4, 3
- movs r0, 0xFF
- ands r4, r0
- adds r0, r5, 0
- bl sub_812F86C
- adds r0, r4, 0
- movs r1, 0x8
- bl Sin
- strh r0, [r5, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x3A
- ble _0812F942
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0812F942
- movs r0, 0
- strh r0, [r5, 0x30]
- ldrh r1, [r5, 0x32]
- adds r1, 0x1
- strh r1, [r5, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r5, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x3
- ble _0812F942
- adds r0, r5, 0
- bl move_anim_8074EE0
-_0812F942:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_812F8DC
-
- thumb_func_start sub_812F948
-sub_812F948: @ 812F948
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _0812F9A0 @ =gBattleAnimArgs
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x2E]
- ldrb r1, [r6]
- adds r0, r5, 0
- bl StartSpriteAffineAnim
- ldr r0, _0812F9A4 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0812F96E
- ldrh r0, [r6, 0x2]
- negs r0, r0
- strh r0, [r6, 0x2]
-_0812F96E:
- ldr r4, _0812F9A8 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x4]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldr r0, _0812F9AC @ =sub_80DA48C
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F9A0: .4byte gBattleAnimArgs
-_0812F9A4: .4byte gAnimBankTarget
-_0812F9A8: .4byte gAnimBankAttacker
-_0812F9AC: .4byte sub_80DA48C
- thumb_func_end sub_812F948
-
- thumb_func_start sub_812F9B0
-sub_812F9B0: @ 812F9B0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r2, _0812FA00 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _0812FA32
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0812FA32
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0812FA04
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _0812FA06
- .align 2, 0
-_0812FA00: .4byte gTasks
-_0812FA04:
- strh r7, [r3, 0x1A]
-_0812FA06:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0812FA22
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _0812FA26
-_0812FA22:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_0812FA26:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_0812FA32:
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r6, [r4, 0x16]
- ldrh r7, [r4, 0x18]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- beq _0812FA70
- ldr r3, _0812FA6C @ =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r6, 8
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _0812FA86
- .align 2, 0
-_0812FA6C: .4byte gSprites
-_0812FA70:
- ldr r2, _0812FAB4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r6, 8
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_0812FA86:
- mov r1, r12
- adds r0, r1, r5
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0812FAB8
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _0812FACA
- .align 2, 0
-_0812FAB4: .4byte gSprites
-_0812FAB8:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_0812FACA:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- add r0, r8
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bgt _0812FAEA
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, _0812FAF4 @ =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_0812FAEA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FAF4: .4byte gAnimVisualTaskCount
- thumb_func_end sub_812F9B0
-
- thumb_func_start sub_812FAF8
-sub_812FAF8: @ 812FAF8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r2, _0812FB4C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _0812FB7E
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0812FB7E
- movs r2, 0x1A
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _0812FB50
- ldrh r0, [r3, 0x10]
- strh r0, [r3, 0x1A]
- negs r0, r0
- strh r0, [r3, 0x10]
- b _0812FB52
- .align 2, 0
-_0812FB4C: .4byte gTasks
-_0812FB50:
- strh r7, [r3, 0x1A]
-_0812FB52:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0x1C
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0812FB6E
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x1C]
- negs r0, r0
- strh r0, [r1, 0x12]
- b _0812FB72
-_0812FB6E:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_0812FB72:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- add r0, r8
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0xA]
-_0812FB7E:
- lsls r3, r6, 2
- adds r0, r3, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldrh r2, [r4, 0xC]
- ldr r1, _0812FBD0 @ =0x00007fff
- adds r0, r1, 0
- ands r0, r2
- ldrh r2, [r4, 0x16]
- adds r0, r2
- lsls r5, r0, 16
- lsrs r0, r5, 16
- mov r9, r0
- ldrh r0, [r4, 0xE]
- ands r1, r0
- ldrh r2, [r4, 0x18]
- adds r1, r2
- lsls r1, 16
- lsrs r7, r1, 16
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- mov r12, r3
- cmp r0, 0
- beq _0812FBD8
- ldr r3, _0812FBD4 @ =gSprites
- movs r2, 0x26
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- lsrs r2, r5, 24
- ldrh r0, [r4, 0x1A]
- subs r0, r2
- strh r0, [r1, 0x24]
- adds r2, r3, 0
- b _0812FBEE
- .align 2, 0
-_0812FBD0: .4byte 0x00007fff
-_0812FBD4: .4byte gSprites
-_0812FBD8:
- ldr r2, _0812FC1C @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsrs r1, r5, 24
- ldrh r4, [r4, 0x1A]
- adds r1, r4
- strh r1, [r0, 0x24]
-_0812FBEE:
- mov r1, r12
- adds r0, r1, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0812FC20
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r2, r7, 8
- ldrh r0, [r4, 0x1C]
- subs r0, r2
- b _0812FC32
- .align 2, 0
-_0812FC1C: .4byte gSprites
-_0812FC20:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- lsrs r0, r7, 8
- ldrh r4, [r4, 0x1C]
- adds r0, r4
-_0812FC32:
- strh r0, [r1, 0x26]
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 3
- mov r1, r8
- adds r2, r0, r1
- mov r0, r9
- strh r0, [r2, 0x16]
- strh r7, [r2, 0x18]
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bgt _0812FC58
- movs r0, 0x1E
- strh r0, [r2, 0x8]
- movs r0, 0
- strh r0, [r2, 0x22]
- ldr r0, _0812FC64 @ =sub_812F9B0
- str r0, [r2]
-_0812FC58:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FC64: .4byte sub_812F9B0
- thumb_func_end sub_812FAF8
-
- thumb_func_start sub_812FC68
-sub_812FC68: @ 812FC68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0812FCC8 @ =gTasks
- mov r8, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r1, r8
- adds r4, r0, r1
- ldr r1, _0812FCCC @ =gBankSpriteIds
- ldr r2, _0812FCD0 @ =gAnimBankAttacker
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r4, 0x26]
- ldr r5, _0812FCD4 @ =gBattleAnimArgs
- ldrh r0, [r5]
- strh r0, [r4, 0x24]
- ldrh r0, [r5]
- strh r0, [r4, 0x8]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x22]
- movs r3, 0x6
- ldrsh r0, [r5, r3]
- cmp r0, 0
- beq _0812FCAC
- ldrh r0, [r4, 0x14]
- ldr r3, _0812FCD8 @ =0xffff8000
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r4, 0x14]
-_0812FCAC:
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0812FCDC
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0xC]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0xE]
- mov r3, r8
- adds r4, r7, 0
- b _0812FD4C
- .align 2, 0
-_0812FCC8: .4byte gTasks
-_0812FCCC: .4byte gBankSpriteIds
-_0812FCD0: .4byte gAnimBankAttacker
-_0812FCD4: .4byte gBattleAnimArgs
-_0812FCD8: .4byte 0xffff8000
-_0812FCDC:
- movs r7, 0x2
- ldrsh r0, [r5, r7]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0812FCF8
- ldrh r1, [r5, 0x2]
- ldr r0, _0812FCF4 @ =0x00007fff
- ands r0, r1
- b _0812FD00
- .align 2, 0
-_0812FCF4: .4byte 0x00007fff
-_0812FCF8:
- ldrh r0, [r5, 0x2]
- ldr r2, _0812FD28 @ =0xffff8000
- adds r1, r2, 0
- orrs r0, r1
-_0812FD00:
- strh r0, [r4, 0xC]
- ldr r0, _0812FD2C @ =gBattleAnimArgs
- movs r3, 0x4
- ldrsh r1, [r0, r3]
- movs r2, 0x80
- lsls r2, 8
- ands r1, r2
- adds r5, r0, 0
- cmp r1, 0
- beq _0812FD38
- ldr r3, _0812FD30 @ =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r0, _0812FD34 @ =0x00007fff
- ands r0, r2
- b _0812FD4A
- .align 2, 0
-_0812FD28: .4byte 0xffff8000
-_0812FD2C: .4byte gBattleAnimArgs
-_0812FD30: .4byte gTasks
-_0812FD34: .4byte 0x00007fff
-_0812FD38:
- ldr r3, _0812FD70 @ =gTasks
- lsls r4, r6, 2
- adds r1, r4, r6
- lsls r1, 3
- adds r1, r3
- ldrh r2, [r5, 0x4]
- ldr r7, _0812FD74 @ =0xffff8000
- adds r0, r7, 0
- orrs r0, r2
-_0812FD4A:
- strh r0, [r1, 0xE]
-_0812FD4C:
- adds r0, r4, r6
- lsls r0, 3
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x18]
- strh r1, [r0, 0x16]
- ldrh r1, [r5, 0x8]
- strh r1, [r0, 0x10]
- ldrh r1, [r5, 0xA]
- strh r1, [r0, 0x12]
- ldr r1, _0812FD78 @ =sub_812FAF8
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FD70: .4byte gTasks
-_0812FD74: .4byte 0xffff8000
-_0812FD78: .4byte sub_812FAF8
- thumb_func_end sub_812FC68
-
- thumb_func_start sub_812FD7C
-sub_812FD7C: @ 812FD7C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _0812FDB4 @ =gTasks
- adds r5, r0, r1
- ldr r4, _0812FDB8 @ =gBattleAnimArgs
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0812FD9C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0812FD9C:
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0xE]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0812FDC0
- ldr r0, _0812FDBC @ =gAnimBankAttacker
- b _0812FDC2
- .align 2, 0
-_0812FDB4: .4byte gTasks
-_0812FDB8: .4byte gBattleAnimArgs
-_0812FDBC: .4byte gAnimBankAttacker
-_0812FDC0:
- ldr r0, _0812FE10 @ =gAnimBankTarget
-_0812FDC2:
- ldrb r4, [r0]
- adds r0, r4, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x12]
- adds r0, r4, 0
- bl sub_8079E90
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x14]
- ldr r0, _0812FE14 @ =gBattleAnimArgs
- ldrb r0, [r0]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r5, 0x26]
- ldr r2, _0812FE18 @ =gUnknown_084028AC
- adds r0, r5, 0
- bl sub_80798F4
- ldr r0, _0812FE1C @ =sub_812FE20
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FE10: .4byte gAnimBankTarget
-_0812FE14: .4byte gBattleAnimArgs
-_0812FE18: .4byte gUnknown_084028AC
-_0812FE1C: .4byte sub_812FE20
- thumb_func_end sub_812FD7C
-
- thumb_func_start sub_812FE20
-sub_812FE20: @ 812FE20
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0812FE40 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0812FE44
- cmp r0, 0x1
- beq _0812FEA4
- b _0812FEB2
- .align 2, 0
-_0812FE40: .4byte gTasks
-_0812FE44:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _0812FE5A
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_812FEB8
-_0812FE5A:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _0812FE6A
- adds r0, r5, 0
- movs r1, 0
- bl sub_812FEB8
-_0812FE6A:
- adds r0, r4, 0
- bl sub_807992C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0812FEB2
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0812FE8C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0812FEB2
-_0812FE8C:
- strh r1, [r4, 0xA]
- ldrh r1, [r4, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _0812FEA0 @ =gUnknown_084028AC
- adds r0, r4, 0
- bl sub_80798F4
- b _0812FEB2
- .align 2, 0
-_0812FEA0: .4byte gUnknown_084028AC
-_0812FEA4:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0812FEB2
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0812FEB2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_812FE20
-
- thumb_func_start sub_812FEB8
-sub_812FEB8: @ 812FEB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r2, _0812FEDC @ =gTasks
- adds r4, r0, r2
- cmp r1, 0
- bne _0812FEE0
- movs r1, 0x12
- movs r3, 0xEC
- b _0812FEE4
- .align 2, 0
-_0812FEDC: .4byte gTasks
-_0812FEE0:
- movs r1, 0x1E
- movs r3, 0x14
-_0812FEE4:
- mov r2, sp
- ldrh r0, [r4, 0x10]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x10]
- subs r0, r1
- subs r0, 0x4
- strh r0, [r2, 0x2]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- strh r0, [r2, 0x4]
- ldrh r0, [r4, 0x10]
- adds r0, r1
- adds r0, 0x4
- strh r0, [r2, 0x6]
- add r2, sp, 0x8
- lsls r1, r3, 24
- asrs r1, 24
- ldrh r0, [r4, 0x12]
- adds r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x12]
- adds r0, r1
- adds r0, 0x6
- strh r0, [r2, 0x2]
- movs r5, 0
- mov r8, r2
- ldr r7, _0812FF88 @ =gSprites
-_0812FF1C:
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- ands r0, r5
- lsls r0, 1
- add r0, r8
- movs r3, 0
- ldrsh r2, [r0, r3]
- ldrb r3, [r4, 0x14]
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _0812FF8C @ =gSpriteTemplate_84028CC
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0812FF70
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r7
- movs r0, 0
- strh r0, [r1, 0x2E]
- movs r0, 0x2
- cmp r5, 0x1
- bhi _0812FF5E
- movs r2, 0x2
- negs r2, r2
- adds r0, r2, 0
-_0812FF5E:
- strh r0, [r1, 0x30]
- ldr r0, _0812FF90 @ =0x0000ffff
- strh r0, [r1, 0x32]
- strh r6, [r1, 0x34]
- movs r0, 0x2
- strh r0, [r1, 0x36]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_0812FF70:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _0812FF1C
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FF88: .4byte gSprites
-_0812FF8C: .4byte gSpriteTemplate_84028CC
-_0812FF90: .4byte 0x0000ffff
- thumb_func_end sub_812FEB8
-
- thumb_func_start sub_812FF94
-sub_812FF94: @ 812FF94
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _0812FFDA
- ldr r3, _0812FFE0 @ =gTasks
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x34
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0812FFDA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FFE0: .4byte gTasks
- thumb_func_end sub_812FF94
-
- thumb_func_start sub_812FFE4
-sub_812FFE4: @ 812FFE4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813002C @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r1, _08130030 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0xA]
- ldrb r0, [r1]
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08130034 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- adds r0, r1
- strh r0, [r4, 0xC]
- ldr r0, _08130038 @ =sub_813003C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813002C: .4byte gTasks
-_08130030: .4byte gBattleAnimArgs
-_08130034: .4byte gSprites
-_08130038: .4byte sub_813003C
- thumb_func_end sub_812FFE4
-
- thumb_func_start sub_813003C
-sub_813003C: @ 813003C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08130084 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0813008C
- ldrh r0, [r4, 0xC]
- ldr r2, _08130088 @ =gUnknown_084028E4
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r1, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x8
- bl BlendPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _0813007C
- movs r0, 0
- strh r0, [r4, 0x8]
-_0813007C:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _0813009E
- .align 2, 0
-_08130084: .4byte gTasks
-_08130088: .4byte gUnknown_084028E4
-_0813008C:
- ldrh r0, [r4, 0xC]
- movs r1, 0x10
- movs r2, 0
- movs r3, 0
- bl BlendPalette
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0813009E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813003C
-
- thumb_func_start sub_81300A4
-sub_81300A4: @ 81300A4
- push {lr}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xD0
- lsls r2, 1
- ldr r1, _081300E0 @ =gAnimBankAttacker
- ldrb r3, [r1]
- ldr r1, _081300E4 @ =gBattleAnimArgs
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0xA
- str r1, [sp, 0x4]
- movs r1, 0x2
- str r1, [sp, 0x8]
- movs r1, 0x1E
- str r1, [sp, 0xC]
- ldr r1, _081300E8 @ =gUnknown_08D2E014
- str r1, [sp, 0x10]
- ldr r1, _081300EC @ =gUnknown_08D2E170
- str r1, [sp, 0x14]
- ldr r1, _081300F0 @ =gUnknown_08D2E150
- str r1, [sp, 0x18]
- movs r1, 0
- bl sub_80E3C4C
- add sp, 0x1C
- pop {r0}
- bx r0
- .align 2, 0
-_081300E0: .4byte gAnimBankAttacker
-_081300E4: .4byte gBattleAnimArgs
-_081300E8: .4byte gUnknown_08D2E014
-_081300EC: .4byte gUnknown_08D2E170
-_081300F0: .4byte gUnknown_08D2E150
- thumb_func_end sub_81300A4
-
- thumb_func_start sub_81300F4
-sub_81300F4: @ 81300F4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _0813014C @ =gAnimBankAttacker
- ldrb r0, [r6]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08130110
- ldr r1, _08130150 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_08130110:
- ldrb r0, [r6]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, _08130150 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08130158
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- ldr r0, _08130154 @ =0x0000fd80
- strh r0, [r5, 0x30]
- b _08130180
- .align 2, 0
-_0813014C: .4byte gAnimBankAttacker
-_08130150: .4byte gBattleAnimArgs
-_08130154: .4byte 0x0000fd80
-_08130158:
- cmp r0, 0x1
- bne _08130172
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
- strh r0, [r5, 0x30]
- b _08130180
-_08130172:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0xA0
- lsls r0, 2
- strh r0, [r5, 0x2E]
-_08130180:
- ldr r0, _081301AC @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _081301A0
- ldrh r0, [r5, 0x2E]
- negs r0, r0
- strh r0, [r5, 0x2E]
- adds r2, r5, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_081301A0:
- ldr r0, _081301B0 @ =sub_81301B4
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081301AC: .4byte gAnimBankAttacker
-_081301B0: .4byte sub_81301B4
- thumb_func_end sub_81300F4
-
- thumb_func_start sub_81301B4
-sub_81301B4: @ 81301B4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x3A]
- adds r0, r1
- strh r0, [r2, 0x3A]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x3C]
- adds r1, r3
- strh r1, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- ldrh r0, [r2, 0x38]
- adds r0, 0x1
- strh r0, [r2, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xE
- bne _081301E8
- adds r0, r2, 0
- bl DestroyAnimSprite
-_081301E8:
- pop {r0}
- bx r0
- thumb_func_end sub_81301B4
-
- thumb_func_start sub_81301EC
-sub_81301EC: @ 81301EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08130218 @ =gTasks
- adds r6, r1, r0
- bl IsContest
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0813021C
- movs r0, 0x8
- strh r0, [r6, 0x12]
- movs r0, 0x3
- strh r0, [r6, 0x14]
- movs r0, 0x1
- strh r0, [r6, 0x16]
- b _08130226
- .align 2, 0
-_08130218: .4byte gTasks
-_0813021C:
- movs r0, 0xC
- strh r0, [r6, 0x12]
- movs r0, 0x3
- strh r0, [r6, 0x14]
- strh r1, [r6, 0x16]
-_08130226:
- ldr r5, _0813025C @ =gAnimBankAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08130260
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_807A100
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08130254
- adds r0, 0x3
-_08130254:
- asrs r0, 2
- adds r0, r4, r0
- b _08130284
- .align 2, 0
-_0813025C: .4byte gAnimBankAttacker
-_08130260:
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_807A100
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08130280
- adds r0, 0x3
-_08130280:
- asrs r0, 2
- subs r0, r4, r0
-_08130284:
- strh r0, [r6, 0x1E]
- ldr r5, _081302D8 @ =gAnimBankAttacker
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- ldrb r0, [r5]
- movs r1, 0
- bl sub_807A100
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081302A8
- adds r0, 0x3
-_081302A8:
- asrs r0, 2
- subs r0, r4, r0
- strh r0, [r6, 0x20]
- ldr r4, _081302DC @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x24]
- ldr r0, _081302E0 @ =sub_81302E4
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081302D8: .4byte gAnimBankAttacker
-_081302DC: .4byte gAnimBankTarget
-_081302E0: .4byte sub_81302E4
- thumb_func_end sub_81301EC
-
- thumb_func_start sub_81302E4
-sub_81302E4: @ 81302E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _0813030C @ =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _08130310
- cmp r1, 0x1
- bne _08130308
- b _08130408
-_08130308:
- b _08130416
- .align 2, 0
-_0813030C: .4byte gTasks
-_08130310:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08130416
- strh r1, [r5, 0xA]
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- movs r4, 0x24
- ldrsh r3, [r5, r4]
- ldrb r4, [r5, 0x12]
- str r4, [sp]
- ldrb r4, [r5, 0xC]
- str r4, [sp, 0x4]
- add r4, sp, 0x10
- str r4, [sp, 0x8]
- adds r4, 0x2
- str r4, [sp, 0xC]
- bl sub_8130424
- movs r6, 0
- mov r8, r4
- ldr r4, _08130384 @ =gSprites
-_0813034A:
- add r0, sp, 0x10
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r3, r8
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, _08130388 @ =gSpriteTemplate_840294C
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _081303DE
- movs r1, 0x16
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0813039E
- cmp r6, 0
- bne _0813038C
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x26]
- strh r0, [r1, 0x24]
- b _081303C6
- .align 2, 0
-_08130384: .4byte gSprites
-_08130388: .4byte gSpriteTemplate_840294C
-_0813038C:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x26]
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- b _081303C6
-_0813039E:
- cmp r6, 0
- bne _081303B4
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- b _081303C4
-_081303B4:
- lsls r2, r3, 4
- adds r1, r2, r3
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r5, 0x14]
- strh r0, [r1, 0x24]
- ldrh r0, [r5, 0x14]
- negs r0, r0
-_081303C4:
- strh r0, [r1, 0x26]
-_081303C6:
- ldr r1, _08130404 @ =gSprites
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x2E]
- strh r7, [r0, 0x30]
- movs r1, 0xA
- strh r1, [r0, 0x32]
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
-_081303DE:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _0813034A
- ldrh r2, [r5, 0xC]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- cmp r1, r0
- bne _081303FC
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
-_081303FC:
- adds r0, r2, 0x1
- strh r0, [r5, 0xC]
- b _08130416
- .align 2, 0
-_08130404: .4byte gSprites
-_08130408:
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08130416
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08130416:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81302E4
-
- thumb_func_start sub_8130424
-sub_8130424: @ 8130424
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- ldr r6, [sp, 0x34]
- mov r10, r6
- lsls r0, 16
- lsrs r0, 16
- mov r12, r0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- lsls r2, 16
- lsrs r2, 16
- adds r7, r2, 0
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x4]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- cmp r5, 0
- bne _0813046C
- mov r2, r9
- strh r0, [r2]
- mov r6, r10
- strh r1, [r6]
- b _081304CA
-_0813046C:
- cmp r5, r6
- bcc _0813047A
- mov r0, r9
- strh r2, [r0]
- mov r1, r10
- strh r3, [r1]
- b _081304CA
-_0813047A:
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- mov r2, r12
- lsls r1, r2, 16
- asrs r1, 16
- lsls r5, r1, 8
- lsls r0, r7, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r5, r0
- ldr r2, [sp]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r4, r1, 8
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 8
- adds r1, r6, 0
- bl __divsi3
- mov r6, r8
- muls r6, r0
- adds r0, r6, 0
- adds r4, r0
- asrs r5, 8
- mov r0, r9
- strh r5, [r0]
- asrs r4, 8
- mov r1, r10
- strh r4, [r1]
-_081304CA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8130424
-
- thumb_func_start sub_81304DC
-sub_81304DC: @ 81304DC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x24
- ble _08130512
- ldr r3, _08130518 @ =gTasks
- movs r0, 0x32
- ldrsh r1, [r4, r0]
- lsls r1, 1
- movs r0, 0x30
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_08130512:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130518: .4byte gTasks
- thumb_func_end sub_81304DC
-
- thumb_func_start sub_813051C
-sub_813051C: @ 813051C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _08130548 @ =gBattleAnimArgs
- ldrh r0, [r1]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x36]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x2E]
- ldr r1, _0813054C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _08130550 @ =sub_8078CC0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130548: .4byte gBattleAnimArgs
-_0813054C: .4byte DestroyAnimSprite
-_08130550: .4byte sub_8078CC0
- thumb_func_end sub_813051C
-
- thumb_func_start sub_8130554
-sub_8130554: @ 8130554
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- ldr r1, _08130674 @ =gTasks
- adds r7, r0, r1
- ldr r0, _08130678 @ =gAnimBankAttacker
- mov r10, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x1E]
- mov r1, r10
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x20]
- ldr r0, _0813067C @ =gAnimBankTarget
- mov r8, r0
- ldrb r0, [r0]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x22]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0
- bl sub_807A100
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081305C6
- adds r0, 0x3
-_081305C6:
- asrs r0, 2
- adds r0, r4, r0
- strh r0, [r7, 0x24]
- ldr r4, _08130680 @ =gSpriteTemplate_84029AC
- movs r0, 0x1E
- ldrsh r5, [r7, r0]
- movs r1, 0x20
- ldrsh r6, [r7, r1]
- mov r1, r8
- ldrb r0, [r1]
- bl sub_8079E90
- adds r3, r0, 0
- subs r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x26]
- cmp r0, 0x40
- beq _08130690
- ldr r4, _08130684 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x22]
- strh r1, [r0, 0x32]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r7, 0x24]
- strh r1, [r0, 0x36]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08130688 @ =0x0000ffe0
- strh r1, [r0, 0x38]
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl InitAnimArcTranslation
- mov r1, r10
- ldrb r0, [r1]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0813066E
- movs r0, 0x26
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0813066E:
- ldr r0, _0813068C @ =sub_81306A4
- str r0, [r7]
- b _08130696
- .align 2, 0
-_08130674: .4byte gTasks
-_08130678: .4byte gAnimBankAttacker
-_0813067C: .4byte gAnimBankTarget
-_08130680: .4byte gSpriteTemplate_84029AC
-_08130684: .4byte gSprites
-_08130688: .4byte 0x0000ffe0
-_0813068C: .4byte sub_81306A4
-_08130690:
- mov r0, r9
- bl DestroyAnimVisualTask
-_08130696:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8130554
-
- thumb_func_start sub_81306A4
-sub_81306A4: @ 81306A4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _081306C8 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _0813070C
- cmp r1, 0x1
- bgt _081306CC
- cmp r1, 0
- beq _081306D6
- b _081307AA
- .align 2, 0
-_081306C8: .4byte gTasks
-_081306CC:
- cmp r1, 0x2
- beq _08130730
- cmp r1, 0x3
- beq _081307A4
- b _081307AA
-_081306D6:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081307AA
- strh r1, [r4, 0xA]
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08130708 @ =gSprites
- adds r0, r1
- bl TranslateAnimArc
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _081307AA
- b _08130796
- .align 2, 0
-_08130708: .4byte gSprites
-_0813070C:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0813072C @ =gSprites
- adds r0, r1
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081307AA
- movs r0, 0
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _08130796
- .align 2, 0
-_0813072C: .4byte gSprites
-_08130730:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081307AA
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0xC]
- adds r2, 0x1
- strh r2, [r4, 0xC]
- ldr r5, _081307A0 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x1
- ands r2, r0
- adds r1, 0x3E
- lsls r2, 2
- ldrb r3, [r1]
- subs r0, 0x6
- ands r0, r3
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081307AA
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_08130796:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _081307AA
- .align 2, 0
-_081307A0: .4byte gSprites
-_081307A4:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_081307AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81306A4
-
- thumb_func_start sub_81307B0
-sub_81307B0: @ 81307B0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r0, _081307C4 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r6, r0, 0
- cmp r1, 0
- bne _081307CC
- ldr r0, _081307C8 @ =gAnimBankAttacker
- b _081307CE
- .align 2, 0
-_081307C4: .4byte gBattleAnimArgs
-_081307C8: .4byte gAnimBankAttacker
-_081307CC:
- ldr r0, _08130834 @ =gAnimBankTarget
-_081307CE:
- ldrb r5, [r0]
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, _08130838 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _0813083C @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r1, r6, 0
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x3A]
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- movs r1, 0x1
- cmp r0, 0
- bne _081307FC
- movs r3, 0x1
- negs r3, r3
- adds r1, r3, 0
-_081307FC:
- strh r1, [r4, 0x3C]
- adds r0, r5, 0
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08130840
- ldrb r2, [r4, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_807A100
- subs r0, 0x8
- b _0813084A
- .align 2, 0
-_08130834: .4byte gAnimBankTarget
-_08130838: .4byte 0x000003ff
-_0813083C: .4byte 0xfffffc00
-_08130840:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_807A100
- adds r0, 0x8
-_0813084A:
- strh r0, [r4, 0x20]
- ldr r0, _08130858 @ =sub_813085C
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130858: .4byte sub_813085C
- thumb_func_end sub_81307B0
-
- thumb_func_start sub_813085C
-sub_813085C: @ 813085C
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- cmp r1, 0x1
- beq _081308A4
- cmp r1, 0x1
- bgt _08130872
- cmp r1, 0
- beq _0813087C
- b _08130914
-_08130872:
- cmp r1, 0x2
- beq _081308B4
- cmp r1, 0x3
- beq _081308DA
- b _08130914
-_0813087C:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08130914
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x3C]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _08130914
- b _081308D2
-_081308A4:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _08130914
- b _081308CE
-_081308B4:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r1, 2
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _08130914
-_081308CE:
- movs r0, 0
- strh r0, [r2, 0x30]
-_081308D2:
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _08130914
-_081308DA:
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _08130914
- ldrh r0, [r2, 0x3A]
- subs r0, 0x1
- strh r0, [r2, 0x3A]
- lsls r0, 16
- cmp r0, 0
- beq _0813090E
- movs r0, 0
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- b _08130914
-_0813090E:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_08130914:
- pop {r0}
- bx r0
- thumb_func_end sub_813085C
-
- thumb_func_start sub_8130918
-sub_8130918: @ 8130918
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _08130930 @ =gBattleAnimArgs
- movs r3, 0
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _08130934
- adds r0, r1, 0
- bl DestroyAnimVisualTask
- b _0813095C
- .align 2, 0
-_08130930: .4byte gBattleAnimArgs
-_08130934:
- ldr r0, _08130964 @ =gTasks
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r2, 0x2]
- strh r0, [r4, 0x8]
- ldrb r0, [r2]
- bl GetAnimBattlerSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x26]
- ldr r2, _08130968 @ =gUnknown_084029DC
- adds r0, r4, 0
- bl sub_80798F4
- ldr r0, _0813096C @ =sub_8130970
- str r0, [r4]
-_0813095C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130964: .4byte gTasks
-_08130968: .4byte gUnknown_084029DC
-_0813096C: .4byte sub_8130970
- thumb_func_end sub_8130918
-
- thumb_func_start sub_8130970
-sub_8130970: @ 8130970
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _081309B0 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _081309CA
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081309B8
- ldr r2, _081309B4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2
- b _081309C8
- .align 2, 0
-_081309B0: .4byte gTasks
-_081309B4: .4byte gSprites
-_081309B8:
- ldr r2, _08130A10 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08130A14 @ =0x0000fffe
-_081309C8:
- strh r1, [r0, 0x24]
-_081309CA:
- adds r0, r4, 0
- bl sub_807992C
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08130A26
- ldr r2, _08130A10 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x24]
- ldrh r0, [r4, 0x8]
- subs r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- cmp r0, 0
- beq _08130A20
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08130A18 @ =gTasks
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08130A1C @ =gUnknown_084029DC
- bl sub_80798F4
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- b _08130A26
- .align 2, 0
-_08130A10: .4byte gSprites
-_08130A14: .4byte 0x0000fffe
-_08130A18: .4byte gTasks
-_08130A1C: .4byte gUnknown_084029DC
-_08130A20:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08130A26:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8130970
-
- thumb_func_start sub_8130A2C
-sub_8130A2C: @ 8130A2C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _08130A40 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08130A48
- ldr r4, _08130A44 @ =gAnimBankAttacker
- b _08130A4A
- .align 2, 0
-_08130A40: .4byte gBattleAnimArgs
-_08130A44: .4byte gAnimBankAttacker
-_08130A48:
- ldr r4, _08130A88 @ =gAnimBankTarget
-_08130A4A:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- strh r0, [r5, 0x22]
- movs r1, 0x22
- ldrsh r0, [r5, r1]
- cmp r0, 0x7
- bgt _08130A6E
- movs r0, 0x8
- strh r0, [r5, 0x22]
-_08130A6E:
- movs r2, 0
- strh r2, [r5, 0x2E]
- ldr r1, _08130A8C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x30]
- strh r2, [r5, 0x32]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x34]
- ldr r0, _08130A90 @ =sub_8130A94
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08130A88: .4byte gAnimBankTarget
-_08130A8C: .4byte gBattleAnimArgs
-_08130A90: .4byte sub_8130A94
- thumb_func_end sub_8130A2C
-
- thumb_func_start sub_8130A94
-sub_8130A94: @ 8130A94
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x30
- ldrsh r1, [r3, r2]
- cmp r0, r1
- blt _08130AE8
- movs r0, 0
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x32]
- adds r1, 0x1
- movs r0, 0x1
- ands r1, r0
- strh r1, [r3, 0x32]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- lsls r1, 2
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _08130AE8
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _08130AE8
- adds r0, r3, 0
- bl DestroyAnimSprite
-_08130AE8:
- pop {r0}
- bx r0
- thumb_func_end sub_8130A94
-
- thumb_func_start sub_8130AEC
-sub_8130AEC: @ 8130AEC
- push {lr}
- adds r3, r0, 0
- ldr r0, _08130B18 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08130B1C
- ldrb r2, [r3, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- movs r0, 0x64
- strh r0, [r3, 0x20]
- movs r0, 0x1
- b _08130B22
- .align 2, 0
-_08130B18: .4byte gBattleAnimArgs
-_08130B1C:
- movs r0, 0x8C
- strh r0, [r3, 0x20]
- ldr r0, _08130B30 @ =0x0000ffff
-_08130B22:
- strh r0, [r3, 0x3C]
- movs r0, 0x38
- strh r0, [r3, 0x22]
- ldr r0, _08130B34 @ =sub_8130B38
- str r0, [r3, 0x1C]
- pop {r0}
- bx r0
- .align 2, 0
-_08130B30: .4byte 0x0000ffff
-_08130B34: .4byte sub_8130B38
- thumb_func_end sub_8130AEC
-
- thumb_func_start sub_8130B38
-sub_8130B38: @ 8130B38
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bls _08130B46
- b _08130D18
-_08130B46:
- lsls r0, 2
- ldr r1, _08130B50 @ =_08130B54
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08130B50: .4byte _08130B54
- .align 2, 0
-_08130B54:
- .4byte _08130B78
- .4byte _08130BAA
- .4byte _08130BBC
- .4byte _08130BFC
- .4byte _08130C0E
- .4byte _08130C4C
- .4byte _08130CB0
- .4byte _08130CD0
- .4byte _08130CF6
-_08130B78:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r0, 1
- ldrh r1, [r4, 0x22]
- subs r1, r0
- strh r1, [r4, 0x22]
- ldrh r2, [r4, 0x30]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08130B9A
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
-_08130B9A:
- adds r0, r2, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- beq _08130BA8
- b _08130D18
-_08130BA8:
- b _08130CEA
-_08130BAA:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _08130BBA
- b _08130D18
-_08130BBA:
- b _08130CEA
-_08130BBC:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _08130BF8 @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- beq _08130BF4
- b _08130D18
-_08130BF4:
- b _08130CEA
- .align 2, 0
-_08130BF8: .4byte gSineTable
-_08130BFC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- beq _08130C0C
- b _08130D18
-_08130C0C:
- b _08130CEA
-_08130C0E:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x22]
- subs r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _08130C48 @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xC
- bne _08130D18
- b _08130CEE
- .align 2, 0
-_08130C48: .4byte gSineTable
-_08130C4C:
- ldrh r2, [r4, 0x30]
- adds r2, 0x1
- strh r2, [r4, 0x30]
- movs r3, 0x3C
- ldrsh r1, [r4, r3]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r3, _08130CA4 @ =gSineTable
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- ldrh r1, [r4, 0x3C]
- muls r0, r1
- strh r0, [r4, 0x24]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0xF
- bne _08130C98
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x10
- ldr r3, _08130CA8 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _08130CAC @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
-_08130C98:
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x12
- bne _08130D18
- b _08130CEA
- .align 2, 0
-_08130CA4: .4byte gSineTable
-_08130CA8: .4byte 0x000003ff
-_08130CAC: .4byte 0xfffffc00
-_08130CB0:
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- ldrh r0, [r4, 0x20]
- adds r1, r0
- strh r1, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _08130D18
- b _08130CEA
-_08130CD0:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r0, 1
- ldrh r3, [r4, 0x20]
- adds r0, r3
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08130D18
-_08130CEA:
- movs r0, 0
- strh r0, [r4, 0x30]
-_08130CEE:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08130D18
-_08130CF6:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r1, r0, 1
- adds r1, r0
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08130D18
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08130D18:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8130B38
-
- thumb_func_start sub_8130D20
-sub_8130D20: @ 8130D20
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08130D7C @ =gTasks
- adds r6, r1, r0
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x26]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _08130DA8
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x1
- bne _08130D8C
- ldr r5, _08130D80 @ =gAnimBankAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- ble _08130D84
- strh r7, [r6, 0x24]
- b _08130DAC
- .align 2, 0
-_08130D7C: .4byte gTasks
-_08130D80: .4byte gAnimBankAttacker
-_08130D84:
- ldr r0, _08130D88 @ =0x0000ffff
- b _08130DAA
- .align 2, 0
-_08130D88: .4byte 0x0000ffff
-_08130D8C:
- ldr r0, _08130DA0 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08130DA8
- ldr r0, _08130DA4 @ =0x0000ffff
- b _08130DAA
- .align 2, 0
-_08130DA0: .4byte gAnimBankAttacker
-_08130DA4: .4byte 0x0000ffff
-_08130DA8:
- movs r0, 0x1
-_08130DAA:
- strh r0, [r6, 0x24]
-_08130DAC:
- ldr r0, _08130DB8 @ =sub_8130DBC
- str r0, [r6]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08130DB8: .4byte sub_8130DBC
- thumb_func_end sub_8130D20
-
- thumb_func_start sub_8130DBC
-sub_8130DBC: @ 8130DBC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08130DE0 @ =gTasks
- adds r3, r0, r1
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- cmp r0, 0x8
- bls _08130DD6
- b _08130F50
-_08130DD6:
- lsls r0, 2
- ldr r1, _08130DE4 @ =_08130DE8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08130DE0: .4byte gTasks
-_08130DE4: .4byte _08130DE8
- .align 2, 0
-_08130DE8:
- .4byte _08130E0C
- .4byte _08130E1E
- .4byte _08130E50
- .4byte _08130E80
- .4byte _08130EA6
- .4byte _08130ED0
- .4byte _08130EE0
- .4byte _08130F00
- .4byte _08130F38
-_08130E0C:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- beq _08130E1C
- b _08130F50
-_08130E1C:
- b _08130F28
-_08130E1E:
- ldr r2, _08130E4C @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r2, r0, 1
- adds r2, r0
- ldrh r0, [r1, 0x24]
- subs r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- beq _08130E4A
- b _08130F50
-_08130E4A:
- b _08130F28
- .align 2, 0
-_08130E4C: .4byte gSprites
-_08130E50:
- ldr r2, _08130E7C @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r0, r2, 1
- adds r0, r2
- ldrh r2, [r1, 0x24]
- adds r0, r2
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _08130F50
- b _08130F28
- .align 2, 0
-_08130E7C: .4byte gSprites
-_08130E80:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _08130F50
- movs r0, 0
- strh r0, [r3, 0xA]
- ldrh r1, [r3, 0xC]
- movs r2, 0xC
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _08130F2C
- adds r0, r1, 0x1
- strh r0, [r3, 0xC]
- movs r0, 0x1
- strh r0, [r3, 0x8]
- b _08130F50
-_08130EA6:
- ldr r2, _08130ECC @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r3, 0x24]
- ldrh r2, [r0, 0x24]
- adds r1, r2
- strh r1, [r0, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _08130F50
- b _08130F28
- .align 2, 0
-_08130ECC: .4byte gSprites
-_08130ED0:
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bne _08130F50
- b _08130F28
-_08130EE0:
- ldr r2, _08130EFC @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x24
- ldrsh r2, [r3, r0]
- lsls r2, 2
- ldrh r0, [r1, 0x24]
- subs r0, r2
- b _08130F18
- .align 2, 0
-_08130EFC: .4byte gSprites
-_08130F00:
- ldr r2, _08130F34 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- lsls r0, 2
- ldrh r2, [r1, 0x24]
- adds r0, r2
-_08130F18:
- strh r0, [r1, 0x24]
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08130F50
-_08130F28:
- movs r0, 0
- strh r0, [r3, 0xA]
-_08130F2C:
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _08130F50
- .align 2, 0
-_08130F34: .4byte gSprites
-_08130F38:
- ldr r2, _08130F58 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_08130F50:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130F58: .4byte gSprites
- thumb_func_end sub_8130DBC
-
- thumb_func_start sub_8130F5C
-sub_8130F5C: @ 8130F5C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08130F78 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08130F80
- adds r0, r4, 0
- movs r1, 0x1
- bl InitAnimSpritePos
- ldr r0, _08130F7C @ =gAnimBankAttacker
- b _08130F82
- .align 2, 0
-_08130F78: .4byte gBattleAnimArgs
-_08130F7C: .4byte gAnimBankAttacker
-_08130F80:
- ldr r0, _08130FD8 @ =gAnimBankTarget
-_08130F82:
- ldrb r0, [r0]
- strh r0, [r4, 0x3C]
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08130FA6
- ldrb r0, [r4, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- strb r1, [r4, 0x3]
-_08130FA6:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8079ED4
- movs r2, 0x3
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0x1]
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4, 0x1]
- ldr r0, _08130FDC @ =sub_8130FE0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130FD8: .4byte gAnimBankTarget
-_08130FDC: .4byte sub_8130FE0
- thumb_func_end sub_8130F5C
-
- thumb_func_start sub_8130FE0
-sub_8130FE0: @ 8130FE0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _08130FEE
- b _081311DE
-_08130FEE:
- lsls r0, 2
- ldr r1, _08130FF8 @ =_08130FFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08130FF8: .4byte _08130FFC
- .align 2, 0
-_08130FFC:
- .4byte _08131010
- .4byte _08131110
- .4byte _08131178
- .4byte _0813118C
- .4byte _081311D8
-_08131010:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bhi _08131040
- lsls r0, 2
- ldr r1, _08131024 @ =_08131028
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08131024: .4byte _08131028
- .align 2, 0
-_08131028:
- .4byte _08131044
- .4byte _08131060
- .4byte _08131082
- .4byte _0813109E
- .4byte _08131044
- .4byte _081310C4
-_08131040:
- movs r0, 0
- strh r0, [r4, 0x3A]
-_08131044:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _081310B8
-_08131060:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x4
- b _081310BE
-_08131082:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- b _081310B8
-_0813109E:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
-_081310B8:
- bl sub_807A100
- subs r0, 0x4
-_081310BE:
- lsls r0, 16
- lsrs r1, r0, 16
- b _081310E4
-_081310C4:
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r1, r0, 24
-_081310E4:
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x4
- bne _081310F0
- movs r0, 0x18
- b _081310FA
-_081310F0:
- cmp r0, 0x5
- bne _081310F8
- movs r0, 0x6
- b _081310FA
-_081310F8:
- movs r0, 0xC
-_081310FA:
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r1, [r4, 0x36]
- adds r0, r4, 0
- bl InitAnimLinearTranslation
- b _081311CA
-_08131110:
- adds r0, r4, 0
- bl TranslateAnimLinear
- lsls r0, 24
- cmp r0, 0
- beq _081311DE
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- beq _08131148
- cmp r0, 0x5
- beq _08131168
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _08131160
-_08131148:
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- strh r1, [r4, 0x26]
- strh r1, [r4, 0x24]
- strh r1, [r4, 0x38]
-_08131160:
- ldrh r0, [r4, 0x3A]
- adds r0, 0x1
- strh r0, [r4, 0x3A]
- b _081311DE
-_08131168:
- movs r0, 0
- strh r0, [r4, 0x2E]
- movs r1, 0x10
- strh r1, [r4, 0x30]
- strh r0, [r4, 0x32]
- movs r0, 0x3
- strh r0, [r4, 0x38]
- b _081311DE
-_08131178:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _081311DE
- movs r0, 0
- strh r0, [r4, 0x38]
- b _081311DE
-_0813118C:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0813119E
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- b _081311A4
-_0813119E:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
-_081311A4:
- ldr r2, _081311D4 @ =REG_BLDALPHA
- ldrh r0, [r4, 0x32]
- lsls r0, 8
- ldrh r1, [r4, 0x30]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _081311DE
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_081311CA:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _081311DE
- .align 2, 0
-_081311D4: .4byte REG_BLDALPHA
-_081311D8:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081311DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8130FE0
-
- thumb_func_start sub_81311E4
-sub_81311E4: @ 81311E4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r5, r0, 0
- strh r5, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- subs r0, r1
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- muls r0, r1
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl __divsi3
- adds r3, r0, 0
- strh r3, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08131242
- ldr r0, _08131260 @ =gSpriteTemplate_8402500
- ldrh r1, [r4, 0x20]
- adds r1, r5
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r4, 0x22]
- adds r2, r3
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x5
- bl CreateSprite
-_08131242:
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08131254
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08131254:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08131260: .4byte gSpriteTemplate_8402500
- thumb_func_end sub_81311E4
-
- thumb_func_start sub_8131264
-sub_8131264: @ 8131264
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _081312A0 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08131290
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081312A8
-_08131290:
- ldr r2, _081312A4 @ =gBattleAnimArgs
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- subs r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- subs r1, r0
- b _081312B6
- .align 2, 0
-_081312A0: .4byte gAnimBankTarget
-_081312A4: .4byte gBattleAnimArgs
-_081312A8:
- ldr r2, _081312DC @ =gBattleAnimArgs
- ldrh r1, [r5, 0x20]
- ldrh r0, [r2]
- adds r0, r1, r0
- strh r0, [r5, 0x2E]
- ldrh r0, [r2, 0x4]
- adds r1, r0
-_081312B6:
- strh r1, [r5, 0x32]
- adds r3, r2, 0
- ldrh r1, [r5, 0x22]
- ldrh r2, [r3, 0x2]
- adds r2, r1, r2
- strh r2, [r5, 0x30]
- ldrh r0, [r3, 0x6]
- adds r1, r0
- strh r1, [r5, 0x34]
- ldrh r0, [r3, 0x8]
- strh r0, [r5, 0x36]
- ldrh r0, [r5, 0x2E]
- strh r0, [r5, 0x20]
- strh r2, [r5, 0x22]
- ldr r0, _081312E0 @ =sub_81311E4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081312DC: .4byte gBattleAnimArgs
-_081312E0: .4byte sub_81311E4
- thumb_func_end sub_8131264
-
- thumb_func_start sub_81312E4
-sub_81312E4: @ 81312E4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, r5, 0
- ldr r0, _08131328 @ =gTasks
- mov r9, r0
- lsls r7, r6, 2
- adds r0, r7, r6
- lsls r0, 3
- mov r8, r0
- mov r4, r8
- add r4, r9
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0813132C
- adds r0, r5, 0
- movs r1, 0
- bl sub_8078E70
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- b _08131378
- .align 2, 0
-_08131328: .4byte gTasks
-_0813132C:
- cmp r0, 0x1
- bne _08131384
- ldrh r0, [r4, 0xA]
- adds r0, 0x60
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- subs r0, 0xD
- strh r0, [r4, 0xC]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r0, 0xC
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bne _081313E8
- movs r0, 0
- strh r0, [r4, 0xE]
- adds r0, r5, 0
- bl sub_8078F40
- ldr r1, _08131380 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08131378:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _081313E8
- .align 2, 0
-_08131380: .4byte gSprites
-_08131384:
- ldr r4, _081313F4 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl refresh_graphics_maybe
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _081313C6
- ldr r3, _081313F8 @ =gSprites
- ldr r2, _081313FC @ =gBankSpriteIds
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, _08131400 @ =gSpriteAffineAnimTable_81E7C18
- str r1, [r0]
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- bl StartSpriteAffineAnim
-_081313C6:
- mov r4, r9
- adds r3, r7, 0
- ldr r5, _08131404 @ =sub_8131408
- movs r1, 0xF
- mov r2, r8
- adds r0, r4, r2
- adds r0, 0x26
- movs r2, 0
-_081313D6:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _081313D6
- adds r0, r3, r6
- lsls r0, 3
- adds r0, r4
- str r5, [r0]
-_081313E8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081313F4: .4byte gAnimBankAttacker
-_081313F8: .4byte gSprites
-_081313FC: .4byte gBankSpriteIds
-_08131400: .4byte gSpriteAffineAnimTable_81E7C18
-_08131404: .4byte sub_8131408
- thumb_func_end sub_81312E4
-
- thumb_func_start sub_8131408
-sub_8131408: @ 8131408
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl GetAnimBattlerSpriteId
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08131434 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _0813146C
- cmp r5, 0x1
- bgt _08131438
- cmp r5, 0
- beq _08131442
- b _0813155A
- .align 2, 0
-_08131434: .4byte gTasks
-_08131438:
- cmp r5, 0x2
- beq _081314D8
- cmp r5, 0x3
- beq _08131514
- b _0813155A
-_08131442:
- ldr r0, _08131464 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldr r0, _08131468 @ =0x0000ff38
- strh r0, [r1, 0x26]
- movs r0, 0xC8
- strh r0, [r1, 0x24]
- adds r1, 0x3E
- ldrb r2, [r1]
- subs r0, 0xCD
- ands r0, r2
- strb r0, [r1]
- strh r5, [r4, 0x1C]
- b _08131506
- .align 2, 0
-_08131464: .4byte gSprites
-_08131468: .4byte 0x0000ff38
-_0813146C:
- ldrh r1, [r4, 0x1C]
- adds r1, 0x70
- movs r5, 0
- strh r1, [r4, 0x1C]
- ldr r2, _081314D0 @ =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r2
- lsls r1, 16
- asrs r1, 24
- ldrh r3, [r2, 0x26]
- adds r1, r3
- strh r1, [r2, 0x26]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- blt _0813149C
- strh r5, [r2, 0x24]
-_0813149C:
- movs r1, 0x26
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _081314A6
- strh r5, [r2, 0x26]
-_081314A6:
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0813155A
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
- ldr r1, _081314D4 @ =0xfffff800
- adds r0, r1, 0
- ldrh r2, [r4, 0x1C]
- adds r0, r2
- strh r0, [r4, 0x1C]
- b _08131506
- .align 2, 0
-_081314D0: .4byte gSprites
-_081314D4: .4byte 0xfffff800
-_081314D8:
- ldrh r0, [r4, 0x1C]
- subs r0, 0x70
- strh r0, [r4, 0x1C]
- lsls r0, 16
- cmp r0, 0
- bge _081314E8
- movs r0, 0
- strh r0, [r4, 0x1C]
-_081314E8:
- ldr r0, _08131510 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r4, 0x1C]
- lsls r2, 16
- asrs r2, 24
- ldrh r0, [r1, 0x26]
- subs r0, r2
- strh r0, [r1, 0x26]
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _0813155A
-_08131506:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0813155A
- .align 2, 0
-_08131510: .4byte gSprites
-_08131514:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x70
- strh r0, [r4, 0x1C]
- ldr r2, _08131560 @ =gSprites
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r2
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r1, 0x26]
- adds r0, r2
- strh r0, [r1, 0x26]
- lsls r0, 16
- cmp r0, 0
- ble _08131538
- movs r0, 0
- strh r0, [r1, 0x26]
-_08131538:
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _0813155A
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x7D
- bl PlaySE12WithPanning
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_0813155A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08131560: .4byte gSprites
- thumb_func_end sub_8131408
-
- thumb_func_start sub_8131564
-sub_8131564: @ 8131564
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08131588 @ =gAnimBankTarget
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08131590
- ldrb r0, [r4]
- bl sub_8079E90
- subs r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, _0813158C @ =0x0000ff70
- b _081315A0
- .align 2, 0
-_08131588: .4byte gAnimBankTarget
-_0813158C: .4byte 0x0000ff70
-_08131590:
- ldrb r0, [r4]
- bl sub_8079E90
- adds r0, 0x2
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldr r4, _081315BC @ =0x0000ffa0
-_081315A0:
- ldr r0, _081315C0 @ =gAnimBankTarget
- ldrb r0, [r0]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- strh r4, [r5, 0x26]
- ldr r0, _081315C4 @ =sub_81315C8
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081315BC: .4byte 0x0000ffa0
-_081315C0: .4byte gAnimBankTarget
-_081315C4: .4byte sub_81315C8
- thumb_func_end sub_8131564
-
- thumb_func_start sub_81315C8
-sub_81315C8: @ 81315C8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _081315D6
- b _081316F2
-_081315D6:
- lsls r0, 2
- ldr r1, _081315E0 @ =_081315E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081315E0: .4byte _081315E4
- .align 2, 0
-_081315E4:
- .4byte _081315F8
- .4byte _0813161C
- .4byte _0813165C
- .4byte _0813168C
- .4byte _081316B8
-_081315F8:
- ldrh r0, [r4, 0x26]
- adds r0, 0xA
- strh r0, [r4, 0x26]
- lsls r0, 16
- cmp r0, 0
- blt _081316F2
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCD
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x26]
- b _081316B0
-_0813161C:
- ldrh r1, [r4, 0x30]
- adds r1, 0x4
- movs r5, 0
- strh r1, [r4, 0x30]
- ldr r2, _08131658 @ =gSineTable
- movs r3, 0x30
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _081316F2
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCD
- bl PlaySE12WithPanning
- strh r5, [r4, 0x30]
- strh r5, [r4, 0x26]
- b _081316B0
- .align 2, 0
-_08131658: .4byte gSineTable
-_0813165C:
- ldrh r1, [r4, 0x30]
- adds r1, 0x6
- movs r3, 0
- strh r1, [r4, 0x30]
- ldr r2, _08131688 @ =gSineTable
- movs r5, 0x30
- ldrsh r0, [r4, r5]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- negs r0, r0
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- ble _081316F2
- strh r3, [r4, 0x30]
- strh r3, [r4, 0x26]
- b _081316B0
- .align 2, 0
-_08131688: .4byte gSineTable
-_0813168C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _081316F2
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xC0
- bl PlaySE12WithPanning
- movs r0, 0
- strh r0, [r4, 0x30]
-_081316B0:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081316F2
-_081316B8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _081316F2
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- movs r0, 0x1
- ands r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- subs r0, 0x6
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x7
- bne _081316F2
- adds r0, r4, 0
- bl DestroyAnimSprite
-_081316F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81315C8
-
- thumb_func_start sub_81316F8
-sub_81316F8: @ 81316F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r10, r4
- bl IsContest
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0813173E
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- asrs r7, r0, 16
- cmp r7, 0
- blt _0813173E
- movs r0, 0x1
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0813174C
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _08131748 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_0813173E:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _081317EE
- .align 2, 0
-_08131748: .4byte gSprites
-_0813174C:
- ldr r1, _081317FC @ =gSprites
- mov r9, r1
- lsls r1, r0, 4
- mov r8, r1
- add r8, r0
- mov r0, r8
- lsls r0, 2
- mov r8, r0
- mov r4, r8
- add r4, r9
- ldrh r0, [r4, 0x24]
- adds r0, 0x18
- strh r0, [r4, 0x24]
- lsls r6, r7, 4
- adds r6, r7
- lsls r6, 2
- mov r1, r9
- adds r2, r6, r1
- ldrh r0, [r2, 0x24]
- subs r0, 0x18
- strh r0, [r2, 0x24]
- strh r5, [r4, 0x2E]
- strh r5, [r2, 0x2E]
- strh r5, [r4, 0x30]
- strh r5, [r2, 0x30]
- strh r5, [r4, 0x32]
- strh r5, [r2, 0x32]
- movs r0, 0x10
- strh r0, [r4, 0x34]
- ldr r0, _08131800 @ =0x0000fff0
- strh r0, [r2, 0x34]
- strh r5, [r4, 0x36]
- movs r0, 0x80
- strh r0, [r2, 0x36]
- movs r0, 0x18
- strh r0, [r4, 0x38]
- strh r0, [r2, 0x38]
- mov r0, r10
- strh r0, [r4, 0x3A]
- strh r0, [r2, 0x3A]
- strh r5, [r4, 0x3C]
- strh r5, [r2, 0x3C]
- ldr r0, _08131804 @ =gTasks
- mov r1, r10
- lsls r3, r1, 2
- add r3, r10
- lsls r3, 3
- adds r3, r0
- movs r0, 0x2
- strh r0, [r3, 0x8]
- adds r5, r4, 0
- adds r5, 0x3E
- ldrb r1, [r5]
- subs r0, 0x7
- ands r0, r1
- strb r0, [r5]
- adds r5, r2, 0
- adds r5, 0x3E
- ldrb r0, [r5]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5]
- ldrb r5, [r4, 0x1]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r5
- strb r0, [r4, 0x1]
- ldrb r0, [r2, 0x1]
- ands r1, r0
- strb r1, [r2, 0x1]
- movs r0, 0x1C
- add r9, r0
- add r8, r9
- ldr r0, _08131808 @ =sub_8131838
- mov r1, r8
- str r0, [r1]
- add r6, r9
- str r0, [r6]
- ldr r0, _0813180C @ =sub_8131810
- str r0, [r3]
-_081317EE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081317FC: .4byte gSprites
-_08131800: .4byte 0x0000fff0
-_08131804: .4byte gTasks
-_08131808: .4byte sub_8131838
-_0813180C: .4byte sub_8131810
- thumb_func_end sub_81316F8
-
- thumb_func_start sub_8131810
-sub_8131810: @ 8131810
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08131834 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0813182E
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0813182E:
- pop {r0}
- bx r0
- .align 2, 0
-_08131834: .4byte gTasks
- thumb_func_end sub_8131810
-
- thumb_func_start sub_8131838
-sub_8131838: @ 8131838
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08131868
- strh r5, [r4, 0x30]
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_08131868:
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x36]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08131890
- cmp r0, 0x1
- beq _081318A8
- b _081318E6
-_08131890:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- bne _081318E6
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081318E6
-_081318A8:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- cmp r0, 0
- ble _081318E6
- strh r5, [r4, 0x32]
- ldrh r0, [r4, 0x38]
- subs r0, 0x2
- strh r0, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _081318E6
- ldr r3, _081318EC @ =gTasks
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- lsls r1, 1
- movs r0, 0x3A
- ldrsh r2, [r4, r0]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- adds r3, 0x8
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- adds r0, r4, 0
- bl obj_delete_but_dont_free_vram
-_081318E6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081318EC: .4byte gTasks
- thumb_func_end sub_8131838
-
thumb_func_start sub_81318F0
sub_81318F0: @ 81318F0
push {r4,lr}
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 7fc2348f5..562211a00 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -5,10181 +5,6 @@
.text
- thumb_func_start sub_80F063C
-sub_80F063C: @ 80F063C
- push {r4-r7,lr}
- lsls r0, 16
- ldr r3, _080F0664 @ =gUnknown_083DFEC4
- ldr r2, [r3]
- lsrs r5, r0, 16
- asrs r4, r0, 16
- lsls r1, r4, 4
- ldr r6, _080F0668 @ =0x0000877c
- adds r0, r2, r6
- strh r1, [r0]
- adds r7, r3, 0
- cmp r4, 0x1
- beq _080F065E
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _080F066C
-_080F065E:
- movs r1, 0x4
- b _080F066E
- .align 2, 0
-_080F0664: .4byte gUnknown_083DFEC4
-_080F0668: .4byte 0x0000877c
-_080F066C:
- movs r1, 0x8
-_080F066E:
- ldr r3, _080F06C0 @ =0x0000877a
- adds r0, r2, r3
- strh r1, [r0]
- lsls r0, r5, 16
- asrs r3, r0, 16
- cmp r3, 0
- bge _080F06CC
- ldr r4, [r7]
- ldr r6, _080F06C0 @ =0x0000877a
- adds r1, r4, r6
- movs r2, 0
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1]
- subs r6, 0x2
- adds r1, r4, r6
- lsls r0, r3, 1
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r1, _080F06C4 @ =0x00008770
- adds r0, r4, r1
- ldrh r0, [r0]
- adds r0, r3, r0
- lsls r0, 16
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080F06B8
- ldr r2, _080F06C8 @ =0x00008774
- adds r1, r4, r2
- adds r0, 0x1
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
-_080F06B8:
- negs r0, r3
- lsls r0, 16
- lsrs r5, r0, 16
- b _080F06E6
- .align 2, 0
-_080F06C0: .4byte 0x0000877a
-_080F06C4: .4byte 0x00008770
-_080F06C8: .4byte 0x00008774
-_080F06CC:
- ldr r1, [r7]
- ldr r3, _080F070C @ =0x00008778
- adds r0, r1, r3
- ldrh r0, [r0]
- adds r0, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _080F0710 @ =0x00008772
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_080F06E6:
- ldr r0, [r7]
- ldr r1, _080F0714 @ =0x00008774
- adds r0, r1
- lsls r1, r2, 16
- asrs r1, 16
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r1, r0
- ble _080F06FA
- movs r2, 0
-_080F06FA:
- movs r1, 0x1F
- adds r0, r2, 0
- ands r1, r6
- adds r2, r5, 0
- bl sub_80F0954
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F070C: .4byte 0x00008778
-_080F0710: .4byte 0x00008772
-_080F0714: .4byte 0x00008774
- thumb_func_end sub_80F063C
-
- thumb_func_start sub_80F0718
-sub_80F0718: @ 80F0718
- push {r4,r5,lr}
- bl sub_80F098C
- lsls r0, 24
- cmp r0, 0
- bne _080F0790
- ldr r0, _080F073C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F0740 @ =0x0000877c
- adds r3, r4, r0
- ldrh r2, [r3]
- movs r1, 0
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080F0744
- movs r0, 0
- b _080F0792
- .align 2, 0
-_080F073C: .4byte gUnknown_083DFEC4
-_080F0740: .4byte 0x0000877c
-_080F0744:
- ldr r0, _080F0780 @ =0x0000877a
- adds r1, r4, r0
- ldrh r0, [r1]
- subs r0, r2, r0
- strh r0, [r3]
- ldr r0, _080F0784 @ =0x00008776
- adds r2, r4, r0
- ldrh r0, [r1]
- ldrh r1, [r2]
- adds r0, r1
- movs r5, 0xFF
- ands r0, r5
- strh r0, [r2]
- ldr r1, _080F0788 @ =REG_BG3VOFS
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080F0790
- movs r1, 0
- ldrsh r0, [r2, r1]
- adds r0, 0x8
- ands r0, r5
- asrs r1, r0, 3
- ldr r2, _080F078C @ =0x00008778
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0
- b _080F0792
- .align 2, 0
-_080F0780: .4byte 0x0000877a
-_080F0784: .4byte 0x00008776
-_080F0788: .4byte REG_BG3VOFS
-_080F078C: .4byte 0x00008778
-_080F0790:
- movs r0, 0x1
-_080F0792:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0718
-
- thumb_func_start ShowMapNamePopUpWindow
-ShowMapNamePopUpWindow: @ 80F0798
- push {lr}
- ldr r0, _080F07B0 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F07B4 @ =0x000087ca
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F07B8
- cmp r0, 0x1
- beq _080F07E0
- b _080F080A
- .align 2, 0
-_080F07B0: .4byte gUnknown_083DFEC4
-_080F07B4: .4byte 0x000087ca
-_080F07B8:
- ldr r3, _080F07D8 @ =0x00008788
- adds r0, r2, r3
- subs r3, 0x1A
- adds r1, r2, r3
- movs r3, 0
- ldrsh r1, [r1, r3]
- lsls r1, 2
- adds r1, r2, r1
- ldr r2, _080F07DC @ =0x0000893e
- adds r1, r2
- ldrh r1, [r1]
- lsls r1, 18
- lsrs r1, 23
- bl sub_80F443C
- b _080F07F4
- .align 2, 0
-_080F07D8: .4byte 0x00008788
-_080F07DC: .4byte 0x0000893e
-_080F07E0:
- ldr r3, _080F0810 @ =0x00008788
- adds r0, r2, r3
- subs r3, 0x1A
- adds r1, r2, r3
- ldrh r1, [r1]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- bl sub_80F445C
-_080F07F4:
- ldr r0, _080F0814 @ =gWindowTemplate_81E710C
- bl BasicInitMenuWindow
- ldr r0, _080F0818 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0810 @ =0x00008788
- adds r0, r1
- movs r1, 0x1
- movs r2, 0x6
- bl Menu_PrintText
-_080F080A:
- pop {r0}
- bx r0
- .align 2, 0
-_080F0810: .4byte 0x00008788
-_080F0814: .4byte gWindowTemplate_81E710C
-_080F0818: .4byte gUnknown_083DFEC4
- thumb_func_end ShowMapNamePopUpWindow
-
- thumb_func_start sub_80F081C
-sub_80F081C: @ 80F081C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080F0838 @ =gWindowTemplate_81E710C
- bl BasicInitMenuWindow
- cmp r5, 0x4
- bhi _080F08C6
- lsls r0, r5, 2
- ldr r1, _080F083C @ =_080F0840
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F0838: .4byte gWindowTemplate_81E710C
-_080F083C: .4byte _080F0840
- .align 2, 0
-_080F0840:
- .4byte _080F0854
- .4byte _080F0854
- .4byte _080F0862
- .4byte _080F088C
- .4byte _080F089A
-_080F0854:
- ldr r0, _080F08CC @ =gOtherText_NumberRegistered
- movs r1, 0xA
- movs r2, 0x9
- bl MenuPrint_RightAligned
- cmp r5, 0
- bne _080F08C6
-_080F0862:
- ldr r0, _080F08D0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F08D4 @ =0x00008788
- adds r4, r0, r1
- ldr r2, _080F08D8 @ =0x00008774
- adds r0, r2
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r1, 0x1
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0xB
- bl MenuPrint_RightAligned
- cmp r5, 0
- bne _080F08C6
-_080F088C:
- ldr r0, _080F08DC @ =gOtherText_NumberBattles
- movs r1, 0xA
- movs r2, 0xD
- bl MenuPrint_RightAligned
- cmp r5, 0
- bne _080F08C6
-_080F089A:
- movs r0, 0x9
- bl GetGameStat
- adds r1, r0, 0
- ldr r0, _080F08E0 @ =0x0001869f
- cmp r1, r0
- bls _080F08AA
- adds r1, r0, 0
-_080F08AA:
- ldr r0, _080F08D0 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F08D4 @ =0x00008788
- adds r4, r0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0xF
- bl MenuPrint_RightAligned
-_080F08C6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F08CC: .4byte gOtherText_NumberRegistered
-_080F08D0: .4byte gUnknown_083DFEC4
-_080F08D4: .4byte 0x00008788
-_080F08D8: .4byte 0x00008774
-_080F08DC: .4byte gOtherText_NumberBattles
-_080F08E0: .4byte 0x0001869f
- thumb_func_end sub_80F081C
-
- thumb_func_start sub_80F08E4
-sub_80F08E4: @ 80F08E4
- push {lr}
- ldr r0, _080F08FC @ =gWindowTemplate_81E710C
- bl BasicInitMenuWindow
- movs r0, 0
- movs r1, 0x9
- movs r2, 0xB
- movs r3, 0x10
- bl Menu_EraseWindowRect
- pop {r0}
- bx r0
- .align 2, 0
-_080F08FC: .4byte gWindowTemplate_81E710C
- thumb_func_end sub_80F08E4
-
- thumb_func_start sub_80F0900
-sub_80F0900: @ 80F0900
- push {r4,r5,lr}
- ldr r0, _080F093C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F0940 @ =0x00008772
- adds r1, r0, r2
- subs r2, 0x2
- adds r5, r0, r2
- ldrh r0, [r1]
- ldrh r1, [r5]
- subs r0, r1
- adds r0, 0x1
- lsls r4, r0, 16
- asrs r0, r4, 16
- cmp r0, 0x7
- bgt _080F092A
- movs r0, 0xC
- movs r1, 0x1
- movs r2, 0x1F
- movs r3, 0xF
- bl Menu_EraseWindowRect
-_080F092A:
- ldrh r0, [r5]
- lsrs r2, r4, 16
- movs r1, 0
- bl sub_80F0954
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F093C: .4byte gUnknown_083DFEC4
-_080F0940: .4byte 0x00008772
- thumb_func_end sub_80F0900
-
- thumb_func_start sub_80F0944
-sub_80F0944: @ 80F0944
- push {lr}
- bl sub_80F098C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F0944
-
- thumb_func_start sub_80F0954
-sub_80F0954: @ 80F0954
- push {r4,r5,lr}
- ldr r3, _080F097C @ =gUnknown_083DFEC4
- ldr r3, [r3]
- ldr r5, _080F0980 @ =0x0000877e
- adds r4, r3, r5
- movs r5, 0
- strh r0, [r4]
- ldr r4, _080F0984 @ =0x00008780
- adds r0, r3, r4
- strh r1, [r0]
- ldr r1, _080F0988 @ =0x00008784
- adds r0, r3, r1
- strh r2, [r0]
- adds r4, 0x6
- adds r3, r4
- strh r5, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F097C: .4byte gUnknown_083DFEC4
-_080F0980: .4byte 0x0000877e
-_080F0984: .4byte 0x00008780
-_080F0988: .4byte 0x00008784
- thumb_func_end sub_80F0954
-
- thumb_func_start sub_80F098C
-sub_80F098C: @ 80F098C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _080F09A4 @ =gUnknown_083DFEC4
- ldr r6, [r0]
- ldr r0, _080F09A8 @ =0x00008784
- adds r7, r6, r0
- ldrh r0, [r7]
- cmp r0, 0
- bne _080F09AC
-_080F09A0:
- movs r0, 0
- b _080F0A02
- .align 2, 0
-_080F09A4: .4byte gUnknown_083DFEC4
-_080F09A8: .4byte 0x00008784
-_080F09AC:
- movs r1, 0
- mov r8, r1
- ldr r1, _080F0A0C @ =gUnknown_083E3270
- ldr r2, _080F0A10 @ =0x000087ca
- adds r0, r6, r2
- ldrb r2, [r0]
- lsls r2, 2
- adds r2, r1
- ldr r0, _080F0A14 @ =0x0000877e
- adds r4, r6, r0
- ldrh r0, [r4]
- ldr r1, _080F0A18 @ =0x00008780
- adds r5, r6, r1
- ldrh r1, [r5]
- ldr r2, [r2]
- bl _call_via_r2
- ldrh r0, [r7]
- subs r0, 0x1
- strh r0, [r7]
- ldr r2, _080F0A1C @ =0x0000ffff
- adds r1, r2, 0
- lsls r0, 16
- cmp r0, 0
- beq _080F09A0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ands r0, r1
- ldr r2, _080F0A20 @ =0x00008774
- adds r1, r6, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- cmp r0, r1
- ble _080F09F6
- mov r0, r8
- strh r0, [r4]
-_080F09F6:
- ldrh r0, [r5]
- adds r0, 0x2
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r5]
- movs r0, 0x1
-_080F0A02:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F0A0C: .4byte gUnknown_083E3270
-_080F0A10: .4byte 0x000087ca
-_080F0A14: .4byte 0x0000877e
-_080F0A18: .4byte 0x00008780
-_080F0A1C: .4byte 0x0000ffff
-_080F0A20: .4byte 0x00008774
- thumb_func_end sub_80F098C
-
- thumb_func_start sub_80F0A24
-sub_80F0A24: @ 80F0A24
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _080F0A64 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F0A68 @ =0x000087c8
- adds r0, r4, r1
- ldrb r0, [r0]
- movs r2, 0x1
- cmp r0, 0
- bne _080F0A40
- movs r2, 0x2
-_080F0A40:
- ldr r0, _080F0A6C @ =0x00008788
- adds r4, r0
- adds r0, r4, 0
- adds r1, r3, 0
- bl sub_80F4428
- ldr r0, _080F0A70 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- lsls r2, r5, 24
- lsrs r2, 24
- adds r0, r4, 0
- movs r1, 0xD
- bl Menu_PrintText
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0A64: .4byte gUnknown_083DFEC4
-_080F0A68: .4byte 0x000087c8
-_080F0A6C: .4byte 0x00008788
-_080F0A70: .4byte gWindowTemplate_81E70D4
- thumb_func_end sub_80F0A24
-
- thumb_func_start sub_80F0A74
-sub_80F0A74: @ 80F0A74
- push {r4-r7,lr}
- sub sp, 0x14
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r7, r1, 16
- ldr r0, _080F0ADC @ =gUnknown_083DFEC4
- ldr r5, [r0]
- ldr r0, _080F0AE0 @ =0x00008788
- adds r4, r5, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_80F700C
- movs r0, 0x1F
- ands r7, r0
- ldr r0, _080F0AE4 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- lsls r2, r7, 3
- adds r0, r4, 0
- movs r1, 0x61
- movs r3, 0
- bl Menu_PrintTextPixelCoords
- ldr r1, _080F0AE8 @ =0x0000d158
- adds r0, r5, r1
- ldrh r0, [r0]
- cmp r6, r0
- bcs _080F0AF8
- lsls r0, r6, 3
- adds r0, r5, r0
- ldr r1, _080F0AEC @ =0x0000ceed
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F0AF8
- ldr r0, _080F0AF0 @ =0x0600f000
- ldr r3, _080F0AF4 @ =gUnknown_083E039C
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x1D
- adds r2, r7, 0
- bl sub_8095C8C
- b _080F0B14
- .align 2, 0
-_080F0ADC: .4byte gUnknown_083DFEC4
-_080F0AE0: .4byte 0x00008788
-_080F0AE4: .4byte gWindowTemplate_81E70D4
-_080F0AE8: .4byte 0x0000d158
-_080F0AEC: .4byte 0x0000ceed
-_080F0AF0: .4byte 0x0600f000
-_080F0AF4: .4byte gUnknown_083E039C
-_080F0AF8:
- ldr r0, _080F0B1C @ =0x0600f000
- ldr r3, _080F0B20 @ =gUnknown_083E03A0
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r2, 0x1
- str r2, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0x1D
- adds r2, r7, 0
- bl sub_8095C8C
-_080F0B14:
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0B1C: .4byte 0x0600f000
-_080F0B20: .4byte gUnknown_083E03A0
- thumb_func_end sub_80F0A74
-
- thumb_func_start sub_80F0B24
-sub_80F0B24: @ 80F0B24
- ldr r0, _080F0B38 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F0B3C @ =0x0000d15c
- adds r1, r0, r2
- movs r2, 0
- strh r2, [r1]
- ldr r1, _080F0B40 @ =0x00000306
- adds r0, r1
- strh r2, [r0]
- bx lr
- .align 2, 0
-_080F0B38: .4byte gUnknown_083DFEC4
-_080F0B3C: .4byte 0x0000d15c
-_080F0B40: .4byte 0x00000306
- thumb_func_end sub_80F0B24
-
- thumb_func_start sub_80F0B44
-sub_80F0B44: @ 80F0B44
- push {r4-r6,lr}
- ldr r0, _080F0B58 @ =gUnknown_083DFEC4
- ldr r5, [r0]
- ldr r0, _080F0B5C @ =0x0000d15c
- adds r6, r5, r0
- ldrh r0, [r6]
- cmp r0, 0x8
- bls _080F0B60
- movs r0, 0
- b _080F0C22
- .align 2, 0
-_080F0B58: .4byte gUnknown_083DFEC4
-_080F0B5C: .4byte 0x0000d15c
-_080F0B60:
- ldr r0, _080F0BBC @ =0x00000306
- adds r1, r5, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080F0C20
- movs r0, 0
- strh r0, [r1]
- ldrh r0, [r6]
- cmp r0, 0x7
- bhi _080F0BCC
- ldr r0, _080F0BC0 @ =0x00008778
- adds r1, r5, r0
- ldrh r2, [r6]
- lsls r0, r2, 1
- ldrh r1, [r1]
- adds r4, r0, r1
- movs r0, 0x1F
- ands r4, r0
- ldr r1, _080F0BC4 @ =0x0000876c
- adds r0, r5, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r2, r0
- beq _080F0BAA
- ldr r0, _080F0BC8 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- adds r1, r4, 0
- adds r3, r1, 0x1
- movs r0, 0xC
- movs r2, 0x1F
- bl Menu_EraseWindowRect
-_080F0BAA:
- ldrh r0, [r6]
- cmp r0, 0
- bne _080F0BB4
- bl sub_80F08E4
-_080F0BB4:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- b _080F0C20
- .align 2, 0
-_080F0BBC: .4byte 0x00000306
-_080F0BC0: .4byte 0x00008778
-_080F0BC4: .4byte 0x0000876c
-_080F0BC8: .4byte gWindowTemplate_81E70D4
-_080F0BCC:
- ldr r0, _080F0C10 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- ldr r1, _080F0C14 @ =0x00008778
- adds r0, r5, r1
- ldrh r0, [r0]
- adds r4, r0, 0
- adds r4, 0x10
- movs r0, 0x1F
- ands r4, r0
- movs r5, 0
-_080F0BE2:
- adds r3, r4, 0x1
- movs r0, 0xC
- adds r1, r4, 0
- movs r2, 0x1F
- bl Menu_EraseWindowRect
- adds r4, 0x2
- movs r0, 0x1F
- ands r4, r0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _080F0BE2
- ldr r0, _080F0C18 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F0C1C @ =0x0000d15c
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
- b _080F0C22
- .align 2, 0
-_080F0C10: .4byte gWindowTemplate_81E70D4
-_080F0C14: .4byte 0x00008778
-_080F0C18: .4byte gUnknown_083DFEC4
-_080F0C1C: .4byte 0x0000d15c
-_080F0C20:
- movs r0, 0x1
-_080F0C22:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0B44
-
- thumb_func_start sub_80F0C28
-sub_80F0C28: @ 80F0C28
- ldr r0, _080F0C3C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F0C40 @ =0x0000d15c
- adds r1, r0, r2
- movs r2, 0
- strh r2, [r1]
- ldr r1, _080F0C44 @ =0x00000306
- adds r0, r1
- strh r2, [r0]
- bx lr
- .align 2, 0
-_080F0C3C: .4byte gUnknown_083DFEC4
-_080F0C40: .4byte 0x0000d15c
-_080F0C44: .4byte 0x00000306
- thumb_func_end sub_80F0C28
-
- thumb_func_start sub_80F0C48
-sub_80F0C48: @ 80F0C48
- push {r4-r6,lr}
- ldr r0, _080F0C5C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F0C60 @ =0x0000d15c
- adds r5, r4, r0
- ldrh r0, [r5]
- cmp r0, 0x7
- bls _080F0C64
- movs r0, 0
- b _080F0CD2
- .align 2, 0
-_080F0C5C: .4byte gUnknown_083DFEC4
-_080F0C60: .4byte 0x0000d15c
-_080F0C64:
- ldr r2, _080F0CBC @ =0x00000306
- adds r1, r4, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r2, _080F0CC0 @ =0x0000ffff
- adds r6, r2, 0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080F0CD0
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080F0CC4 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- ldr r0, _080F0CC8 @ =0x00008770
- adds r1, r4, r0
- ldrh r0, [r5]
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _080F0CCC @ =0x00008778
- adds r2, r4, r1
- ldrh r1, [r5]
- lsls r1, 1
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_80F0A74
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- ands r0, r6
- cmp r0, 0x7
- bls _080F0CD0
- movs r0, 0
- bl sub_80F081C
- movs r0, 0
- b _080F0CD2
- .align 2, 0
-_080F0CBC: .4byte 0x00000306
-_080F0CC0: .4byte 0x0000ffff
-_080F0CC4: .4byte gWindowTemplate_81E70D4
-_080F0CC8: .4byte 0x00008770
-_080F0CCC: .4byte 0x00008778
-_080F0CD0:
- movs r0, 0x1
-_080F0CD2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0C48
-
- thumb_func_start sub_80F0CD8
-sub_80F0CD8: @ 80F0CD8
- push {r4,r5,lr}
- ldr r4, _080F0D40 @ =gUnknown_083DFEC4
- ldr r1, [r4]
- ldr r2, _080F0D44 @ =0x00000306
- adds r0, r1, r2
- movs r2, 0
- strh r2, [r0]
- ldr r3, _080F0D48 @ =0x0000d15c
- adds r0, r1, r3
- strh r2, [r0]
- ldr r2, _080F0D4C @ =0x0000876e
- adds r0, r1, r2
- movs r3, 0
- ldrsh r0, [r0, r3]
- lsls r0, 3
- adds r0, r1, r0
- ldr r2, _080F0D50 @ =0x0000ceec
- adds r0, r2
- ldrb r0, [r0]
- ldr r3, _080F0D54 @ =0x0000d110
- adds r1, r3
- ldr r2, _080F0D58 @ =gTrainerEyeDescriptions
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- adds r2, r0, 0
- movs r1, 0
- adds r5, r4, 0
- adds r4, r3, 0
-_080F0D14:
- ldrb r0, [r2]
- adds r3, r1, 0x1
- cmp r0, 0xFF
- beq _080F0D24
-_080F0D1C:
- adds r2, 0x1
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080F0D1C
-_080F0D24:
- ldr r0, [r5]
- lsls r1, r3, 2
- adds r0, r4
- adds r0, r1
- adds r2, 0x1
- str r2, [r0]
- lsls r0, r3, 16
- lsrs r1, r0, 16
- cmp r1, 0x2
- bls _080F0D14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0D40: .4byte gUnknown_083DFEC4
-_080F0D44: .4byte 0x00000306
-_080F0D48: .4byte 0x0000d15c
-_080F0D4C: .4byte 0x0000876e
-_080F0D50: .4byte 0x0000ceec
-_080F0D54: .4byte 0x0000d110
-_080F0D58: .4byte gTrainerEyeDescriptions
- thumb_func_end sub_80F0CD8
-
- thumb_func_start sub_80F0D5C
-sub_80F0D5C: @ 80F0D5C
- push {r4,r5,lr}
- ldr r0, _080F0D70 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F0D74 @ =0x0000d15c
- adds r5, r4, r0
- ldrh r0, [r5]
- cmp r0, 0x7
- bne _080F0D78
-_080F0D6C:
- movs r0, 0
- b _080F0EB0
- .align 2, 0
-_080F0D70: .4byte gUnknown_083DFEC4
-_080F0D74: .4byte 0x0000d15c
-_080F0D78:
- ldr r0, _080F0DB8 @ =0x00000306
- adds r1, r4, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080F0D8C
- b _080F0EAE
-_080F0D8C:
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- ldr r0, _080F0DC0 @ =0x00008778
- adds r1, r4, r0
- ldrh r3, [r5]
- lsls r0, r3, 1
- adds r0, 0x2
- ldrh r1, [r1]
- adds r5, r0, r1
- movs r0, 0x1F
- ands r5, r0
- cmp r3, 0x6
- bhi _080F0D6C
- lsls r0, r3, 2
- ldr r1, _080F0DC4 @ =_080F0DC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F0DB8: .4byte 0x00000306
-_080F0DBC: .4byte gWindowTemplate_81E70D4
-_080F0DC0: .4byte 0x00008778
-_080F0DC4: .4byte _080F0DC8
- .align 2, 0
-_080F0DC8:
- .4byte _080F0DE4
- .4byte _080F0DF0
- .4byte _080F0E08
- .4byte _080F0E14
- .4byte _080F0E2C
- .4byte _080F0E38
- .4byte _080F0E6C
-_080F0DE4:
- ldr r0, _080F0DEC @ =gOtherText_Strategy
- lsls r2, r5, 3
- b _080F0E54
- .align 2, 0
-_080F0DEC: .4byte gOtherText_Strategy
-_080F0DF0:
- ldr r0, _080F0DFC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0E00 @ =0x00008788
- adds r4, r0, r1
- ldr r1, _080F0E04 @ =0x0000d110
- b _080F0E42
- .align 2, 0
-_080F0DFC: .4byte gUnknown_083DFEC4
-_080F0E00: .4byte 0x00008788
-_080F0E04: .4byte 0x0000d110
-_080F0E08:
- ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon
- lsls r2, r5, 3
- b _080F0E54
- .align 2, 0
-_080F0E10: .4byte gOtherText_TrainersPokemon
-_080F0E14:
- ldr r0, _080F0E20 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0E24 @ =0x00008788
- adds r4, r0, r1
- ldr r1, _080F0E28 @ =0x0000d114
- b _080F0E42
- .align 2, 0
-_080F0E20: .4byte gUnknown_083DFEC4
-_080F0E24: .4byte 0x00008788
-_080F0E28: .4byte 0x0000d114
-_080F0E2C:
- ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction
- lsls r2, r5, 3
- b _080F0E54
- .align 2, 0
-_080F0E34: .4byte gOtherText_SelfIntroduction
-_080F0E38:
- ldr r0, _080F0E60 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0E64 @ =0x00008788
- adds r4, r0, r1
- ldr r1, _080F0E68 @ =0x0000d118
-_080F0E42:
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- movs r2, 0x88
- movs r3, 0
- bl AlignStringInMenuWindow
- lsls r2, r5, 3
- adds r0, r4, 0
-_080F0E54:
- movs r1, 0x61
- movs r3, 0
- bl Menu_PrintTextPixelCoords
- b _080F0EA0
- .align 2, 0
-_080F0E60: .4byte gUnknown_083DFEC4
-_080F0E64: .4byte 0x00008788
-_080F0E68: .4byte 0x0000d118
-_080F0E6C:
- ldr r0, _080F0E94 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F0E98 @ =0x00008788
- adds r4, r0, r1
- ldr r1, _080F0E9C @ =0x0000d11c
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- movs r2, 0x88
- movs r3, 0
- bl AlignStringInMenuWindow
- lsls r2, r5, 3
- adds r0, r4, 0
- movs r1, 0x61
- movs r3, 0
- bl Menu_PrintTextPixelCoords
- b _080F0D6C
- .align 2, 0
-_080F0E94: .4byte gUnknown_083DFEC4
-_080F0E98: .4byte 0x00008788
-_080F0E9C: .4byte 0x0000d11c
-_080F0EA0:
- ldr r0, _080F0EB8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F0EBC @ =0x0000d15c
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F0EAE:
- movs r0, 0x1
-_080F0EB0:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080F0EB8: .4byte gUnknown_083DFEC4
-_080F0EBC: .4byte 0x0000d15c
- thumb_func_end sub_80F0D5C
-
- thumb_func_start sub_80F0EC0
-sub_80F0EC0: @ 80F0EC0
- push {lr}
- ldr r0, _080F0EE4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F0EE8 @ =0x00000306
- adds r1, r0, r2
- movs r2, 0
- strh r2, [r1]
- ldr r3, _080F0EEC @ =0x0000d15c
- adds r1, r0, r3
- strh r2, [r1]
- ldr r1, _080F0EF0 @ =0x00008788
- adds r0, r1
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- pop {r0}
- bx r0
- .align 2, 0
-_080F0EE4: .4byte gUnknown_083DFEC4
-_080F0EE8: .4byte 0x00000306
-_080F0EEC: .4byte 0x0000d15c
-_080F0EF0: .4byte 0x00008788
- thumb_func_end sub_80F0EC0
-
- thumb_func_start sub_80F0EF4
-sub_80F0EF4: @ 80F0EF4
- push {r4,r5,lr}
- ldr r0, _080F0F08 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080F0F0C @ =0x0000d15c
- adds r5, r2, r0
- ldrh r0, [r5]
- cmp r0, 0x6
- bls _080F0F10
- movs r0, 0
- b _080F0F52
- .align 2, 0
-_080F0F08: .4byte gUnknown_083DFEC4
-_080F0F0C: .4byte 0x0000d15c
-_080F0F10:
- ldr r0, _080F0F58 @ =0x00000306
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080F0F50
- movs r0, 0
- strh r0, [r1]
- ldr r1, _080F0F5C @ =0x00008778
- adds r0, r2, r1
- ldrh r4, [r5]
- lsls r4, 1
- adds r4, 0x2
- ldrh r0, [r0]
- adds r4, r0
- movs r0, 0x1F
- ands r4, r0
- ldr r0, _080F0F60 @ =gWindowTemplate_81E70D4
- bl BasicInitMenuWindow
- adds r3, r4, 0x1
- movs r0, 0xC
- adds r1, r4, 0
- movs r2, 0x1F
- bl Menu_EraseWindowRect
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080F0F50:
- movs r0, 0x1
-_080F0F52:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080F0F58: .4byte 0x00000306
-_080F0F5C: .4byte 0x00008778
-_080F0F60: .4byte gWindowTemplate_81E70D4
- thumb_func_end sub_80F0EF4
-
- thumb_func_start sub_80F0F64
-sub_80F0F64: @ 80F0F64
- push {r4,lr}
- ldr r0, _080F0F90 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r1, _080F0F94 @ =0x0000876c
- adds r0, r3, r1
- movs r4, 0
- ldrsh r2, [r0, r4]
- lsls r1, r2, 4
- ldr r4, _080F0F98 @ =0x0000877c
- adds r0, r3, r4
- strh r1, [r0]
- movs r1, 0x8
- cmp r2, 0x1
- bne _080F0F82
- movs r1, 0x4
-_080F0F82:
- ldr r2, _080F0F9C @ =0x0000877a
- adds r0, r3, r2
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0F90: .4byte gUnknown_083DFEC4
-_080F0F94: .4byte 0x0000876c
-_080F0F98: .4byte 0x0000877c
-_080F0F9C: .4byte 0x0000877a
- thumb_func_end sub_80F0F64
-
- thumb_func_start sub_80F0FA0
-sub_80F0FA0: @ 80F0FA0
- push {r4,lr}
- ldr r0, _080F0FDC @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r1, _080F0FE0 @ =0x0000876c
- adds r0, r3, r1
- movs r4, 0
- ldrsh r0, [r0, r4]
- negs r0, r0
- lsls r0, 16
- asrs r0, 16
- lsls r2, r0, 4
- ldr r4, _080F0FE4 @ =0x0000877c
- adds r1, r3, r4
- strh r2, [r1]
- movs r1, 0x1
- negs r1, r1
- movs r4, 0x8
- negs r4, r4
- adds r2, r4, 0
- cmp r0, r1
- bne _080F0FD0
- movs r0, 0x4
- negs r0, r0
- adds r2, r0, 0
-_080F0FD0:
- ldr r1, _080F0FE8 @ =0x0000877a
- adds r0, r3, r1
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F0FDC: .4byte gUnknown_083DFEC4
-_080F0FE0: .4byte 0x0000876c
-_080F0FE4: .4byte 0x0000877c
-_080F0FE8: .4byte 0x0000877a
- thumb_func_end sub_80F0FA0
-
- thumb_func_start sub_80F0FEC
-sub_80F0FEC: @ 80F0FEC
- push {lr}
- bl sub_80F0718
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F0FEC
-
- thumb_func_start sub_80F0FFC
-sub_80F0FFC: @ 80F0FFC
- push {r4,r5,lr}
- lsls r0, 24
- ldr r1, _080F1048 @ =gUnknown_083DFEC4
- ldr r4, [r1]
- ldr r1, _080F104C @ =0x00008788
- adds r5, r4, r1
- lsrs r0, 21
- adds r0, r4, r0
- ldr r1, _080F1050 @ =0x0000ceea
- adds r0, r1
- ldrh r1, [r0]
- adds r0, r5, 0
- movs r2, 0
- bl GetMapSectionName
- ldr r0, _080F1054 @ =gWindowTemplate_81E710C
- bl BasicInitMenuWindow
- adds r0, r5, 0
- bl sub_80F19DC
- ldr r0, _080F1058 @ =0x0000d138
- adds r4, r0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x58
- movs r3, 0x2
- bl AlignStringInMenuWindow
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x5
- bl Menu_PrintText
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1048: .4byte gUnknown_083DFEC4
-_080F104C: .4byte 0x00008788
-_080F1050: .4byte 0x0000ceea
-_080F1054: .4byte gWindowTemplate_81E710C
-_080F1058: .4byte 0x0000d138
- thumb_func_end sub_80F0FFC
-
- thumb_func_start sub_80F105C
-sub_80F105C: @ 80F105C
- push {lr}
- ldr r0, _080F1078 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F107C @ =0x0000876e
- adds r0, r1, r2
- ldrh r0, [r0]
- adds r2, 0xA
- adds r1, r2
- ldrh r1, [r1]
- bl sub_80F0A74
- pop {r0}
- bx r0
- .align 2, 0
-_080F1078: .4byte gUnknown_083DFEC4
-_080F107C: .4byte 0x0000876e
- thumb_func_end sub_80F105C
-
- thumb_func_start sub_80F1080
-sub_80F1080: @ 80F1080
- push {r4,lr}
- ldr r1, _080F10A0 @ =gUnknown_083DFEC4
- ldr r0, [r1]
- ldr r2, _080F10A4 @ =0x0000d160
- adds r0, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xE
- bls _080F1094
- b _080F1204
-_080F1094:
- lsls r0, 2
- ldr r1, _080F10A8 @ =_080F10AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F10A0: .4byte gUnknown_083DFEC4
-_080F10A4: .4byte 0x0000d160
-_080F10A8: .4byte _080F10AC
- .align 2, 0
-_080F10AC:
- .4byte _080F10E8
- .4byte _080F1104
- .4byte _080F1110
- .4byte _080F111C
- .4byte _080F1128
- .4byte _080F112E
- .4byte _080F1134
- .4byte _080F1142
- .4byte _080F1160
- .4byte _080F1166
- .4byte _080F116C
- .4byte _080F1180
- .4byte _080F1194
- .4byte _080F11DC
- .4byte _080F11E2
-_080F10E8:
- bl sub_80EEDE8
- ldr r0, _080F10FC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080F1100 @ =0x0000d162
- adds r0, r3
- movs r1, 0xB
- strb r1, [r0]
- b _080F1218
- .align 2, 0
-_080F10FC: .4byte gUnknown_083DFEC4
-_080F1100: .4byte 0x0000d162
-_080F1104:
- ldr r0, _080F110C @ =gWindowTemplate_81E70B8
- bl Text_LoadWindowTemplate
- b _080F1218
- .align 2, 0
-_080F110C: .4byte gWindowTemplate_81E70B8
-_080F1110:
- ldr r0, _080F1118 @ =gWindowTemplate_81E70B8
- bl MultistepInitMenuWindowBegin
- b _080F1218
- .align 2, 0
-_080F1118: .4byte gWindowTemplate_81E70B8
-_080F111C:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- beq _080F1126
- b _080F1218
-_080F1126:
- b _080F1226
-_080F1128:
- bl Menu_EraseScreen
- b _080F1218
-_080F112E:
- bl sub_80F1614
- b _080F1218
-_080F1134:
- movs r0, 0x1
- bl sub_80F162C
- lsls r0, 24
- cmp r0, 0
- beq _080F1218
- b _080F1226
-_080F1142:
- ldr r0, _080F1154 @ =gUnknown_08E9FBA0
- ldr r1, _080F1158 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F115C @ =0x0000934c
- adds r1, r2
- bl LZ77UnCompWram
- b _080F1218
- .align 2, 0
-_080F1154: .4byte gUnknown_08E9FBA0
-_080F1158: .4byte gUnknown_083DFEC4
-_080F115C: .4byte 0x0000934c
-_080F1160:
- bl sub_80F1238
- b _080F1218
-_080F1166:
- bl sub_80F13FC
- b _080F1218
-_080F116C:
- ldr r0, _080F1178 @ =gPokenavRibbonView_Gfx
- ldr r1, _080F117C @ =0x06008000
- bl LZ77UnCompVram
- b _080F1218
- .align 2, 0
-_080F1178: .4byte gPokenavRibbonView_Gfx
-_080F117C: .4byte 0x06008000
-_080F1180:
- ldr r0, _080F118C @ =gUnknown_083E040C
- ldr r1, _080F1190 @ =0x06008200
- bl LZ77UnCompVram
- b _080F1218
- .align 2, 0
-_080F118C: .4byte gUnknown_083E040C
-_080F1190: .4byte 0x06008200
-_080F1194:
- ldr r0, _080F11CC @ =gPokenavRibbonView_Pal
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _080F11D0 @ =gUnknown_083E03A8
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F11D4 @ =gUnknown_083E3C60
- movs r1, 0x30
- movs r2, 0xA0
- bl LoadPalette
- ldr r0, _080F11D8 @ =gUnknownPalette_81E6692
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x1E
- adds r0, r4, 0
- movs r1, 0xBF
- movs r2, 0x2
- bl LoadPalette
- b _080F1218
- .align 2, 0
-_080F11CC: .4byte gPokenavRibbonView_Pal
-_080F11D0: .4byte gUnknown_083E03A8
-_080F11D4: .4byte gUnknown_083E3C60
-_080F11D8: .4byte gUnknownPalette_81E6692
-_080F11DC:
- bl sub_80F1438
- b _080F1218
-_080F11E2:
- ldr r1, _080F1208 @ =REG_BG2CNT
- ldr r3, _080F120C @ =0x00001e02
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080F1210 @ =0x0000170b
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x42
- movs r0, 0
- strh r0, [r1]
- ldr r1, [r2]
- ldr r0, _080F1214 @ =0x0000d160
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F1204:
- movs r0, 0
- b _080F1228
- .align 2, 0
-_080F1208: .4byte REG_BG2CNT
-_080F120C: .4byte 0x00001e02
-_080F1210: .4byte 0x0000170b
-_080F1214: .4byte 0x0000d160
-_080F1218:
- ldr r0, _080F1230 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F1234 @ =0x0000d160
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F1226:
- movs r0, 0x1
-_080F1228:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F1230: .4byte gUnknown_083DFEC4
-_080F1234: .4byte 0x0000d160
- thumb_func_end sub_80F1080
-
- thumb_func_start sub_80F1238
-sub_80F1238: @ 80F1238
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r6, 0x8B
- ldr r0, _080F1318 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F131C @ =0x0000bc8e
- adds r0, r2, r1
- ldr r3, _080F1320 @ =0x0000bc8f
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- subs r0, r1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r7, 0
- mov r5, sp
- adds r4, r2, 0
-_080F1264:
- movs r1, 0x80
- lsls r1, 6
- adds r0, r1, 0
- strh r0, [r5]
- lsls r1, r7, 5
- adds r1, r6, r1
- lsls r1, 1
- ldr r2, _080F1324 @ =0x0000934c
- adds r1, r2
- adds r1, r4, r1
- mov r0, sp
- ldr r2, _080F1328 @ =0x01000012
- bl CpuSet
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x7
- bls _080F1264
- ldr r3, [sp, 0x4]
- lsls r0, r3, 16
- movs r7, 0
- mov r9, r0
- cmp r0, 0
- beq _080F1342
- ldr r0, _080F1318 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- mov r8, r0
- ldr r1, _080F132C @ =gUnknown_083E4698
- mov r10, r1
- ldr r5, _080F1324 @ =0x0000934c
- add r5, r8
-_080F12A4:
- ldr r0, _080F1330 @ =0x0000bc4c
- add r0, r8
- adds r0, r7
- ldrb r1, [r0]
- lsls r1, 2
- mov r0, r10
- adds r0, 0x2
- adds r0, r1, r0
- ldrb r2, [r0]
- adds r2, 0x3
- lsls r2, 24
- add r1, r10
- ldrh r0, [r1]
- lsls r0, 25
- movs r3, 0x80
- lsls r3, 21
- adds r0, r3
- lsrs r4, r0, 24
- lsls r1, r6, 1
- adds r1, r5, r1
- lsrs r2, 12
- adds r0, r2, 0
- orrs r0, r4
- strh r0, [r1]
- adds r1, r6, 0x1
- lsls r1, 1
- adds r1, r5, r1
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- adds r3, r2, 0
- orrs r3, r0
- adds r0, r3, 0
- orrs r0, r4
- strh r0, [r1]
- adds r0, r6, 0
- adds r0, 0x20
- lsls r0, 1
- adds r0, r5, r0
- adds r1, r4, 0x1
- orrs r2, r1
- strh r2, [r0]
- adds r0, r6, 0
- adds r0, 0x21
- lsls r0, 1
- adds r0, r5, r0
- orrs r3, r1
- strh r3, [r0]
- adds r4, r7, 0x1
- adds r0, r4, 0
- movs r1, 0x9
- bl __modsi3
- cmp r0, 0
- bne _080F1334
- adds r0, r6, 0
- adds r0, 0x30
- b _080F1336
- .align 2, 0
-_080F1318: .4byte gUnknown_083DFEC4
-_080F131C: .4byte 0x0000bc8e
-_080F1320: .4byte 0x0000bc8f
-_080F1324: .4byte 0x0000934c
-_080F1328: .4byte 0x01000012
-_080F132C: .4byte gUnknown_083E4698
-_080F1330: .4byte 0x0000bc4c
-_080F1334:
- adds r0, r6, 0x2
-_080F1336:
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r4, 16
- lsrs r7, r0, 16
- cmp r0, r9
- bcc _080F12A4
-_080F1342:
- ldr r6, _080F13E8 @ =0x0000014b
- movs r7, 0
- ldr r1, _080F13EC @ =gUnknown_083DFEC4
- ldr r0, [r1]
- ldr r2, _080F13F0 @ =0x0000bc8f
- adds r1, r0, r2
- ldrb r3, [r1]
- cmp r7, r3
- bcs _080F13D8
- subs r2, 0x43
- adds r2, r0
- mov r10, r2
- ldr r3, _080F13F4 @ =gUnknown_083E4698
- mov r8, r3
- ldr r2, _080F13F8 @ =0x0000934c
- adds r5, r0, r2
- mov r9, r1
-_080F1364:
- ldr r3, [sp, 0x4]
- adds r0, r3, r7
- add r0, r10
- ldrb r1, [r0]
- lsls r1, 2
- mov r0, r8
- adds r0, 0x2
- adds r0, r1, r0
- ldrb r2, [r0]
- adds r2, 0x3
- lsls r2, 24
- add r1, r8
- ldrh r0, [r1]
- lsls r0, 25
- movs r1, 0x80
- lsls r1, 21
- adds r0, r1
- lsrs r4, r0, 24
- lsls r1, r6, 1
- adds r1, r5, r1
- lsrs r2, 12
- adds r0, r2, 0
- orrs r0, r4
- strh r0, [r1]
- adds r1, r6, 0x1
- lsls r1, 1
- adds r1, r5, r1
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- adds r3, r2, 0
- orrs r3, r0
- adds r0, r3, 0
- orrs r0, r4
- strh r0, [r1]
- adds r0, r6, 0
- adds r0, 0x20
- lsls r0, 1
- adds r0, r5, r0
- adds r1, r4, 0x1
- orrs r2, r1
- strh r2, [r0]
- adds r0, r6, 0
- adds r0, 0x21
- lsls r0, 1
- adds r0, r5, r0
- orrs r3, r1
- strh r3, [r0]
- adds r0, r6, 0x2
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- mov r0, r9
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080F1364
-_080F13D8:
- 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
-_080F13E8: .4byte 0x0000014b
-_080F13EC: .4byte gUnknown_083DFEC4
-_080F13F0: .4byte 0x0000bc8f
-_080F13F4: .4byte gUnknown_083E4698
-_080F13F8: .4byte 0x0000934c
- thumb_func_end sub_80F1238
-
- thumb_func_start sub_80F13FC
-sub_80F13FC: @ 80F13FC
- ldr r0, _080F141C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F1420 @ =0x0000934c
- adds r0, r1
- ldr r2, _080F1424 @ =0x0600b800
- ldr r1, _080F1428 @ =0x040000d4
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _080F142C @ =0x84000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _080F1430 @ =gPlttBufferUnfaded
- ldr r0, _080F1434 @ =gPokenavRibbonView_Pal + 0x1C
- ldrh r0, [r0]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080F141C: .4byte gUnknown_083DFEC4
-_080F1420: .4byte 0x0000934c
-_080F1424: .4byte 0x0600b800
-_080F1428: .4byte 0x040000d4
-_080F142C: .4byte 0x84000140
-_080F1430: .4byte gPlttBufferUnfaded
-_080F1434: .4byte gPokenavRibbonView_Pal + 0x1C
- thumb_func_end sub_80F13FC
-
- thumb_func_start sub_80F1438
-sub_80F1438: @ 80F1438
- push {r4,r5,lr}
- ldr r0, _080F1470 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F1474 @ =0x00008829
- adds r0, r4, r1
- movs r1, 0xD
- movs r2, 0x1
- bl Menu_PrintText
- ldr r0, _080F1478 @ =0x00008788
- adds r5, r4, r0
- ldr r1, _080F147C @ =0x0000876e
- adds r4, r1
- ldrh r1, [r4]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl sub_80F445C
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x5
- bl Menu_PrintText
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1470: .4byte gUnknown_083DFEC4
-_080F1474: .4byte 0x00008829
-_080F1478: .4byte 0x00008788
-_080F147C: .4byte 0x0000876e
- thumb_func_end sub_80F1438
-
- thumb_func_start sub_80F1480
-sub_80F1480: @ 80F1480
- push {lr}
- movs r0, 0xC
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x10
- bl Menu_EraseWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_80F1480
-
- thumb_func_start sub_80F1494
-sub_80F1494: @ 80F1494
- push {r4-r7,lr}
- ldr r0, _080F14D4 @ =gUnknown_083DFEC8
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 4
- adds r6, r0, r1
- ldr r2, _080F14D8 @ =0x00000a98
- adds r7, r0, r2
- ldr r0, _080F14DC @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r4, _080F14E0 @ =0x0000bc91
- adds r1, r3, r4
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _080F14F0
- ldr r5, _080F14E4 @ =gUnknown_020388B4
- adds r1, r0, 0
- lsls r0, r1, 3
- subs r4, 0x1
- adds r2, r3, r4
- adds r0, r1
- ldrb r2, [r2]
- adds r0, r2
- strh r0, [r5]
- ldr r1, _080F14E8 @ =0x0000bc4c
- adds r0, r3, r1
- ldrh r2, [r5]
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r5]
- ldr r4, _080F14EC @ =gRibbonDescriptions
- b _080F152E
- .align 2, 0
-_080F14D4: .4byte gUnknown_083DFEC8
-_080F14D8: .4byte 0x00000a98
-_080F14DC: .4byte gUnknown_083DFEC4
-_080F14E0: .4byte 0x0000bc91
-_080F14E4: .4byte gUnknown_020388B4
-_080F14E8: .4byte 0x0000bc4c
-_080F14EC: .4byte gRibbonDescriptions
-_080F14F0:
- ldr r5, _080F1558 @ =gUnknown_020388B4
- ldr r4, _080F155C @ =0x0000bc8e
- adds r0, r3, r4
- ldrb r0, [r0]
- ldr r2, _080F1560 @ =0x0000bc8f
- adds r1, r3, r2
- ldrb r1, [r1]
- subs r0, r1
- strh r0, [r5]
- ldrh r1, [r5]
- adds r4, 0x2
- adds r0, r3, r4
- ldrb r0, [r0]
- adds r1, r0
- subs r2, 0x43
- adds r0, r3, r2
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5]
- ldr r0, _080F1564 @ =gSaveBlock1
- ldrh r1, [r5]
- adds r0, r1
- ldr r4, _080F1568 @ =0x000030f7
- adds r0, r4
- ldrb r0, [r0]
- strh r0, [r5]
- cmp r0, 0
- beq _080F1570
- subs r0, 0x1
- strh r0, [r5]
- ldr r4, _080F156C @ =gGiftRibbonDescriptions
-_080F152E:
- ldrh r0, [r5]
- lsls r0, 3
- adds r0, r4
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x80
- movs r3, 0
- bl AlignStringInMenuWindow
- ldrh r0, [r5]
- lsls r0, 3
- adds r4, 0x4
- adds r0, r4
- ldr r1, [r0]
- adds r0, r7, 0
- movs r2, 0x80
- movs r3, 0
- bl AlignStringInMenuWindow
- b _080F158A
- .align 2, 0
-_080F1558: .4byte gUnknown_020388B4
-_080F155C: .4byte 0x0000bc8e
-_080F1560: .4byte 0x0000bc8f
-_080F1564: .4byte gSaveBlock1
-_080F1568: .4byte 0x000030f7
-_080F156C: .4byte gGiftRibbonDescriptions
-_080F1570:
- ldr r4, _080F15A4 @ =gEmptyString_81E72B0
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x80
- movs r3, 0
- bl AlignStringInMenuWindow
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x80
- movs r3, 0
- bl AlignStringInMenuWindow
-_080F158A:
- adds r0, r6, 0
- movs r1, 0xC
- movs r2, 0xD
- bl Menu_PrintText
- adds r0, r7, 0
- movs r1, 0xC
- movs r2, 0xF
- bl Menu_PrintText
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F15A4: .4byte gEmptyString_81E72B0
- thumb_func_end sub_80F1494
-
- thumb_func_start sub_80F15A8
-sub_80F15A8: @ 80F15A8
- push {r4,r5,lr}
- movs r0, 0xC
- movs r1, 0xD
- movs r2, 0x1B
- movs r3, 0x10
- bl Menu_EraseWindowRect
- ldr r0, _080F1600 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F1604 @ =0x00008788
- adds r5, r4, r0
- ldr r1, _080F1608 @ =gOtherText_Ribbons
- adds r0, r5, 0
- bl StringCopy
- adds r2, r0, 0
- movs r0, 0
- strb r0, [r2]
- adds r2, 0x1
- ldr r1, _080F160C @ =0x000087dc
- adds r0, r4, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 2
- adds r4, r0
- ldr r0, _080F1610 @ =0x0000893c
- adds r4, r0
- ldrb r1, [r4]
- adds r0, r2, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- movs r0, 0xFF
- strb r0, [r2]
- adds r0, r5, 0
- movs r1, 0xC
- movs r2, 0xD
- bl Menu_PrintText
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1600: .4byte gUnknown_083DFEC4
-_080F1604: .4byte 0x00008788
-_080F1608: .4byte gOtherText_Ribbons
-_080F160C: .4byte 0x000087dc
-_080F1610: .4byte 0x0000893c
- thumb_func_end sub_80F15A8
-
- thumb_func_start sub_80F1614
-sub_80F1614: @ 80F1614
- ldr r0, _080F1624 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F1628 @ =0x00008764
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F1624: .4byte gUnknown_083DFEC4
-_080F1628: .4byte 0x00008764
- thumb_func_end sub_80F1614
-
- thumb_func_start sub_80F162C
-sub_80F162C: @ 80F162C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F164C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F1650 @ =0x00008764
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080F165E
- cmp r0, 0x1
- bgt _080F1654
- cmp r0, 0
- beq _080F16F0
- b _080F16D0
- .align 2, 0
-_080F164C: .4byte gUnknown_083DFEC4
-_080F1650: .4byte 0x00008764
-_080F1654:
- cmp r0, 0x2
- beq _080F1670
- cmp r0, 0x3
- beq _080F1694
- b _080F16D0
-_080F165E:
- ldr r0, _080F1668 @ =gUnknown_08E9FF58
- ldr r1, _080F166C @ =0x0600e800
- bl LZ77UnCompVram
- b _080F16F0
- .align 2, 0
-_080F1668: .4byte gUnknown_08E9FF58
-_080F166C: .4byte 0x0600e800
-_080F1670:
- ldr r1, _080F1684 @ =gPokenavRibbonPokeView_Gfx
- ldr r2, _080F1688 @ =0x0600e000
- ldr r0, _080F168C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080F1690 @ =0x80000070
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080F16F0
- .align 2, 0
-_080F1684: .4byte gPokenavRibbonPokeView_Gfx
-_080F1688: .4byte 0x0600e000
-_080F168C: .4byte 0x040000d4
-_080F1690: .4byte 0x80000070
-_080F1694:
- cmp r1, 0
- bne _080F16A8
- ldr r0, _080F16A4 @ =gUnknown_083E0124
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- b _080F16B2
- .align 2, 0
-_080F16A4: .4byte gUnknown_083E0124
-_080F16A8:
- ldr r0, _080F16D4 @ =gUnknown_083E0144
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
-_080F16B2:
- ldr r0, _080F16D8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r3, _080F16DC @ =0x00008766
- adds r2, r1, r3
- ldr r0, _080F16E0 @ =0x0000ffb0
- strh r0, [r2]
- ldr r2, _080F16E4 @ =REG_BG0CNT
- ldr r3, _080F16E8 @ =0x00001d0d
- adds r0, r3, 0
- strh r0, [r2]
- ldr r0, _080F16EC @ =0x00008764
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F16D0:
- movs r0, 0
- b _080F1700
- .align 2, 0
-_080F16D4: .4byte gUnknown_083E0144
-_080F16D8: .4byte gUnknown_083DFEC4
-_080F16DC: .4byte 0x00008766
-_080F16E0: .4byte 0x0000ffb0
-_080F16E4: .4byte REG_BG0CNT
-_080F16E8: .4byte 0x00001d0d
-_080F16EC: .4byte 0x00008764
-_080F16F0:
- ldr r0, _080F1704 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F1708 @ =0x00008764
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_080F1700:
- pop {r1}
- bx r1
- .align 2, 0
-_080F1704: .4byte gUnknown_083DFEC4
-_080F1708: .4byte 0x00008764
- thumb_func_end sub_80F162C
-
- thumb_func_start sub_80F170C
-sub_80F170C: @ 80F170C
- push {lr}
- ldr r0, _080F1734 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F1738 @ =0x00008766
- adds r1, r0, r2
- ldrh r0, [r1]
- adds r0, 0x10
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- ble _080F1726
- movs r0, 0
- strh r0, [r1]
-_080F1726:
- movs r0, 0
- ldrsh r1, [r1, r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r1}
- bx r1
- .align 2, 0
-_080F1734: .4byte gUnknown_083DFEC4
-_080F1738: .4byte 0x00008766
- thumb_func_end sub_80F170C
-
- thumb_func_start sub_80F173C
-sub_80F173C: @ 80F173C
- push {lr}
- ldr r0, _080F176C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F1770 @ =0x00008766
- adds r1, r0, r2
- ldrh r0, [r1]
- subs r0, 0x10
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x50
- negs r2, r2
- cmp r0, r2
- bge _080F175C
- ldr r0, _080F1774 @ =0x0000ffb0
- strh r0, [r1]
-_080F175C:
- movs r0, 0
- ldrsh r1, [r1, r0]
- eors r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r1}
- bx r1
- .align 2, 0
-_080F176C: .4byte gUnknown_083DFEC4
-_080F1770: .4byte 0x00008766
-_080F1774: .4byte 0x0000ffb0
- thumb_func_end sub_80F173C
-
- thumb_func_start sub_80F1778
-sub_80F1778: @ 80F1778
- push {r4,lr}
- sub sp, 0x14
- ldr r0, _080F1798 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F179C @ =0x0000d160
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x9
- bls _080F178C
- b _080F1910
-_080F178C:
- lsls r0, 2
- ldr r1, _080F17A0 @ =_080F17A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F1798: .4byte gUnknown_083DFEC4
-_080F179C: .4byte 0x0000d160
-_080F17A0: .4byte _080F17A4
- .align 2, 0
-_080F17A4:
- .4byte _080F17CC
- .4byte _080F17E8
- .4byte _080F17EE
- .4byte _080F17FE
- .4byte _080F1810
- .4byte _080F1830
- .4byte _080F1858
- .4byte _080F186C
- .4byte _080F18B8
- .4byte _080F18D8
-_080F17CC:
- bl sub_80EEDE8
- ldr r0, _080F17E0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F17E4 @ =0x0000d162
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0]
- b _080F1914
- .align 2, 0
-_080F17E0: .4byte gUnknown_083DFEC4
-_080F17E4: .4byte 0x0000d162
-_080F17E8:
- bl sub_80F1614
- b _080F1914
-_080F17EE:
- movs r0, 0
- bl sub_80F162C
- lsls r0, 24
- cmp r0, 0
- bne _080F17FC
- b _080F1914
-_080F17FC:
- b _080F1922
-_080F17FE:
- ldr r0, _080F1808 @ =gPokenavConditionView_Gfx
- ldr r1, _080F180C @ =0x06005000
- bl LZ77UnCompVram
- b _080F1914
- .align 2, 0
-_080F1808: .4byte gPokenavConditionView_Gfx
-_080F180C: .4byte 0x06005000
-_080F1810:
- ldr r0, _080F1824 @ =gUnknown_08E9AC4C
- ldr r1, _080F1828 @ =0x0600f000
- bl LZ77UnCompVram
- ldr r0, _080F182C @ =gPokenavConditionMenu2_Pal
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- b _080F1914
- .align 2, 0
-_080F1824: .4byte gUnknown_08E9AC4C
-_080F1828: .4byte 0x0600f000
-_080F182C: .4byte gPokenavConditionMenu2_Pal
-_080F1830:
- ldr r0, _080F1850 @ =0x0600f000
- ldr r3, _080F1854 @ =gUnknown_083E01F4
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r2, 0xC
- str r2, [sp, 0x8]
- movs r1, 0x4
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- movs r1, 0
- movs r2, 0xD
- bl sub_8095C8C
- b _080F1914
- .align 2, 0
-_080F1850: .4byte 0x0600f000
-_080F1854: .4byte gUnknown_083E01F4
-_080F1858:
- ldr r0, _080F1864 @ =gUnknown_08E9FEB4
- ldr r1, _080F1868 @ =0x0600b800
- bl LZ77UnCompVram
- b _080F1914
- .align 2, 0
-_080F1864: .4byte gUnknown_08E9FEB4
-_080F1868: .4byte 0x0600b800
-_080F186C:
- ldr r0, _080F18AC @ =gUnknown_083E0254
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080F18B0 @ =gUnknownPalette_81E6692
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _080F18B4 @ =gPokenavConditionMenu2_Pal + 0x2
- adds r0, r4, 0
- movs r1, 0xB1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- adds r0, 0xE
- movs r1, 0xB5
- movs r2, 0x2
- bl LoadPalette
- adds r4, 0x1C
- adds r0, r4, 0
- movs r1, 0xBF
- movs r2, 0x2
- bl LoadPalette
- bl sub_80F01A4
- b _080F1914
- .align 2, 0
-_080F18AC: .4byte gUnknown_083E0254
-_080F18B0: .4byte gUnknownPalette_81E6692
-_080F18B4: .4byte gPokenavConditionMenu2_Pal + 0x2
-_080F18B8:
- ldr r0, _080F18D0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F18D4 @ =0x00008fe9
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- b _080F1914
- .align 2, 0
-_080F18D0: .4byte gUnknown_083DFEC4
-_080F18D4: .4byte 0x00008fe9
-_080F18D8:
- ldr r1, _080F18FC @ =REG_BG3CNT
- ldr r2, _080F1900 @ =0x00001e03
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _080F1904 @ =0x00001702
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x44
- ldr r2, _080F1908 @ =0x00000844
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _080F190C @ =0x0000040b
- adds r0, r2, 0
- strh r0, [r1]
- b _080F1914
- .align 2, 0
-_080F18FC: .4byte REG_BG3CNT
-_080F1900: .4byte 0x00001e03
-_080F1904: .4byte 0x00001702
-_080F1908: .4byte 0x00000844
-_080F190C: .4byte 0x0000040b
-_080F1910:
- movs r0, 0
- b _080F1924
-_080F1914:
- ldr r0, _080F192C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F1930 @ =0x0000d160
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F1922:
- movs r0, 0x1
-_080F1924:
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F192C: .4byte gUnknown_083DFEC4
-_080F1930: .4byte 0x0000d160
- thumb_func_end sub_80F1778
-
- thumb_func_start sub_80F1934
-sub_80F1934: @ 80F1934
- push {r4,r5,lr}
- ldr r0, _080F1990 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F1994 @ =0x00008788
- adds r5, r1, r0
- ldr r3, _080F1998 @ =0x000087dc
- adds r2, r1, r3
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r1, r0
- ldr r0, _080F199C @ =0x0000893f
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- bge _080F19AC
- ldrb r0, [r2]
- bl sub_8137124
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _080F19A0 @ =gPlayerParty
- adds r0, r1
- bl GetNature
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F19A4 @ =gOtherText_Nature2
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
- ldr r0, _080F19A8 @ =gNatureNames
- lsls r4, 2
- adds r4, r0
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x57
- movs r3, 0
- bl AlignStringInMenuWindow
- b _080F19B8
- .align 2, 0
-_080F1990: .4byte gUnknown_083DFEC4
-_080F1994: .4byte 0x00008788
-_080F1998: .4byte 0x000087dc
-_080F199C: .4byte 0x0000893f
-_080F19A0: .4byte gPlayerParty
-_080F19A4: .4byte gOtherText_Nature2
-_080F19A8: .4byte gNatureNames
-_080F19AC:
- ldr r1, _080F19D0 @ =gEmptyString_81E72B0
- adds r0, r5, 0
- movs r2, 0x57
- movs r3, 0
- bl AlignStringInMenuWindow
-_080F19B8:
- ldr r0, _080F19D4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F19D8 @ =0x00008788
- adds r0, r1
- movs r1, 0x1
- movs r2, 0x70
- movs r3, 0x1
- bl Menu_PrintTextPixelCoords
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F19D0: .4byte gEmptyString_81E72B0
-_080F19D4: .4byte gUnknown_083DFEC4
-_080F19D8: .4byte 0x00008788
- thumb_func_end sub_80F1934
-
- thumb_func_start sub_80F19DC
-sub_80F19DC: @ 80F19DC
- push {lr}
- adds r1, r0, 0
- b _080F19E4
-_080F19E2:
- adds r1, 0x1
-_080F19E4:
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080F19F8
- cmp r0, 0xFC
- bne _080F19E2
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080F19E2
- movs r0, 0xFF
- strb r0, [r1]
-_080F19F8:
- pop {r0}
- bx r0
- thumb_func_end sub_80F19DC
-
- thumb_func_start sub_80F19FC
-sub_80F19FC: @ 80F19FC
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _080F1A68 @ =gUnknown_020388B0
- ldrb r4, [r5]
- cmp r4, 0x1
- bne _080F1A60
- ldr r0, _080F1A6C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F1A70 @ =0x00006e2c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x3
- adds r1, r2
- ldrb r1, [r1]
- ldrb r2, [r5, 0x1]
- bl GetLandmarkName
- cmp r0, 0
- beq _080F1A46
- ldrb r2, [r5, 0x1]
- lsls r2, 20
- movs r1, 0xC0
- lsls r1, 14
- adds r2, r1
- lsrs r2, 16
- str r4, [sp]
- movs r1, 0x70
- movs r3, 0x78
- bl sub_8072A18
- ldrb r0, [r5, 0x1]
- adds r0, 0x1
- strb r0, [r5, 0x1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080F1A60
-_080F1A46:
- ldrb r1, [r5, 0x1]
- lsls r1, 25
- movs r2, 0xC0
- lsls r2, 19
- adds r1, r2
- lsrs r1, 24
- movs r0, 0xE
- movs r2, 0x1C
- movs r3, 0xF
- bl Menu_BlankWindowRect
- movs r0, 0
- strb r0, [r5]
-_080F1A60:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1A68: .4byte gUnknown_020388B0
-_080F1A6C: .4byte gUnknown_083DFEC4
-_080F1A70: .4byte 0x00006e2c
- thumb_func_end sub_80F19FC
-
- thumb_func_start sub_80F1A74
-sub_80F1A74: @ 80F1A74
- ldr r1, _080F1A7C @ =gUnknown_020388B0
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080F1A7C: .4byte gUnknown_020388B0
- thumb_func_end sub_80F1A74
-
- thumb_func_start sub_80F1A80
-sub_80F1A80: @ 80F1A80
- ldr r0, _080F1A8C @ =gUnknown_020388B0
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bx lr
- .align 2, 0
-_080F1A8C: .4byte gUnknown_020388B0
- thumb_func_end sub_80F1A80
-
- thumb_func_start sub_80F1A90
-sub_80F1A90: @ 80F1A90
- push {lr}
- ldr r0, _080F1AB8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F1ABC @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F1AC0 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F1AB2
-_080F1AA8:
- bl sub_80F1AC4
- lsls r0, 24
- cmp r0, 0
- bne _080F1AA8
-_080F1AB2:
- pop {r0}
- bx r0
- .align 2, 0
-_080F1AB8: .4byte gUnknown_083DFEC4
-_080F1ABC: .4byte 0x00000306
-_080F1AC0: .4byte 0x00006dac
- thumb_func_end sub_80F1A90
-
- thumb_func_start sub_80F1AC4
-sub_80F1AC4: @ 80F1AC4
- push {r4,r5,lr}
- ldr r0, _080F1AE0 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F1AE4 @ =0x00000306
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080F1B34
- cmp r0, 0x1
- bgt _080F1AE8
- cmp r0, 0
- beq _080F1AF2
- b _080F1B6C
- .align 2, 0
-_080F1AE0: .4byte gUnknown_083DFEC4
-_080F1AE4: .4byte 0x00000306
-_080F1AE8:
- cmp r0, 0x2
- beq _080F1B40
- cmp r0, 0x3
- beq _080F1B54
- b _080F1B6C
-_080F1AF2:
- movs r0, 0
- movs r2, 0xC8
- lsls r2, 2
- adds r4, r1, r2
- movs r5, 0
-_080F1AFC:
- movs r2, 0
- adds r1, r0, 0x1
- lsls r3, r0, 4
-_080F1B02:
- lsls r0, r2, 2
- adds r0, r3
- adds r0, r4, r0
- str r5, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x3
- bls _080F1B02
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, 0x5
- bls _080F1AFC
- ldr r0, _080F1B2C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F1B30 @ =0x00000311
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- b _080F1B6C
- .align 2, 0
-_080F1B2C: .4byte gUnknown_083DFEC4
-_080F1B30: .4byte 0x00000311
-_080F1B34:
- ldr r0, _080F1B3C @ =gPokenavMenuOptions_Gfx
- movs r2, 0xE2
- lsls r2, 2
- b _080F1B44
- .align 2, 0
-_080F1B3C: .4byte gPokenavMenuOptions_Gfx
-_080F1B40:
- ldr r0, _080F1B4C @ =gPokenavConditionMenu_Gfx
- ldr r2, _080F1B50 @ =0x00001788
-_080F1B44:
- adds r1, r2
- bl LZ77UnCompWram
- b _080F1B6C
- .align 2, 0
-_080F1B4C: .4byte gPokenavConditionMenu_Gfx
-_080F1B50: .4byte 0x00001788
-_080F1B54:
- ldr r0, _080F1B64 @ =gPokenavConditionSearch_Gfx
- ldr r2, _080F1B68 @ =0x00002388
- adds r1, r2
- bl LZ77UnCompWram
- movs r0, 0
- b _080F1B7C
- .align 2, 0
-_080F1B64: .4byte gPokenavConditionSearch_Gfx
-_080F1B68: .4byte 0x00002388
-_080F1B6C:
- ldr r0, _080F1B84 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F1B88 @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_080F1B7C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080F1B84: .4byte gUnknown_083DFEC4
-_080F1B88: .4byte 0x00000306
- thumb_func_end sub_80F1AC4
-
- thumb_func_start sub_80F1B8C
-sub_80F1B8C: @ 80F1B8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F1BBC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F1BC0 @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F1BC4 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F1BB4
-_080F1BA8:
- adds r0, r4, 0
- bl sub_80F1BC8
- lsls r0, 24
- cmp r0, 0
- bne _080F1BA8
-_080F1BB4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1BBC: .4byte gUnknown_083DFEC4
-_080F1BC0: .4byte 0x00000306
-_080F1BC4: .4byte 0x00006dac
- thumb_func_end sub_80F1B8C
-
- thumb_func_start sub_80F1BC8
-sub_80F1BC8: @ 80F1BC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _080F1BF4 @ =gUnknown_083DFEC4
- ldr r2, [r1]
- ldr r3, _080F1BF8 @ =0x00000306
- adds r0, r2, r3
- ldrh r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x1
- beq _080F1C0A
- cmp r0, 0x1
- bgt _080F1BFC
- cmp r0, 0
- beq _080F1C02
- b _080F1DC4
- .align 2, 0
-_080F1BF4: .4byte gUnknown_083DFEC4
-_080F1BF8: .4byte 0x00000306
-_080F1BFC:
- cmp r0, 0x2
- beq _080F1C12
- b _080F1DC4
-_080F1C02:
- mov r0, r9
- bl sub_80F2458
- b _080F1DC8
-_080F1C0A:
- mov r0, r9
- bl sub_80F2514
- b _080F1DC8
-_080F1C12:
- mov r4, r9
- cmp r4, 0x1
- beq _080F1C40
- cmp r4, 0x1
- bgt _080F1C22
- cmp r4, 0
- beq _080F1C2A
- b _080F1DC4
-_080F1C22:
- mov r5, r9
- cmp r5, 0x2
- beq _080F1C54
- b _080F1DC4
-_080F1C2A:
- movs r0, 0x2A
- str r0, [sp, 0x4]
- movs r1, 0x14
- str r1, [sp, 0x8]
- ldr r4, _080F1C3C @ =0x0000030e
- adds r1, r2, r4
- movs r0, 0x5
- b _080F1C62
- .align 2, 0
-_080F1C3C: .4byte 0x0000030e
-_080F1C40:
- movs r5, 0x38
- str r5, [sp, 0x4]
- movs r0, 0x14
- str r0, [sp, 0x8]
- ldr r4, _080F1C50 @ =0x0000030e
- adds r1, r2, r4
- movs r0, 0x3
- b _080F1C62
- .align 2, 0
-_080F1C50: .4byte 0x0000030e
-_080F1C54:
- movs r5, 0x28
- str r5, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- ldr r4, _080F1CDC @ =0x0000030e
- adds r1, r2, r4
- movs r0, 0x6
-_080F1C62:
- strb r0, [r1]
- movs r5, 0
- str r5, [sp]
- mov r8, r5
- adds r1, r3, 0
- ldr r0, [r1]
- ldr r2, _080F1CDC @ =0x0000030e
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r8, r0
- blt _080F1C7E
- b _080F1DC8
-_080F1C7E:
- ldr r4, [sp, 0x8]
- mov r3, r8
- muls r3, r4
- ldr r5, [sp, 0x4]
- adds r0, r5, r3
- subs r0, 0x8
- lsls r0, 16
- lsrs r0, 16
- ldr r4, [r1]
- mov r2, r8
- lsls r1, r2, 1
- movs r5, 0xC5
- lsls r5, 2
- adds r2, r4, r5
- adds r2, r1
- lsls r1, r0, 8
- adds r0, 0x11
- orrs r1, r0
- strh r1, [r2]
- mov r0, r9
- cmp r0, 0
- bne _080F1CF2
- ldr r1, _080F1CE0 @ =0x00006db2
- adds r0, r4, r1
- mov r2, r8
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _080F1CE8
- movs r5, 0
- ldr r0, _080F1CE4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- lsls r2, 4
- movs r3, 0xC8
- lsls r3, 2
- adds r1, r0, r3
- movs r3, 0
-_080F1CC8:
- lsls r0, r5, 2
- adds r0, r2
- adds r0, r1, r0
- str r3, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080F1CC8
- b _080F1D92
- .align 2, 0
-_080F1CDC: .4byte 0x0000030e
-_080F1CE0: .4byte 0x00006db2
-_080F1CE4: .4byte gUnknown_083DFEC4
-_080F1CE8:
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 18
- lsrs r0, 16
- str r0, [sp]
-_080F1CF2:
- movs r5, 0
- ldr r4, [sp, 0x4]
- adds r0, r4, r3
- lsls r0, 16
- mov r10, r0
-_080F1CFC:
- lsls r6, r5, 5
- movs r0, 0x80
- lsls r0, 1
- adds r7, r6, r0
- lsls r1, r7, 16
- asrs r1, 16
- ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454
- mov r3, r10
- asrs r2, r3, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F1DC4
- ldr r0, _080F1DB8 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- lsls r1, r5, 2
- mov r4, r8
- lsls r0, r4, 4
- adds r1, r0
- movs r0, 0xC8
- lsls r0, 2
- adds r2, r0
- adds r4, r2, r1
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r1, _080F1DBC @ =gSprites
- adds r0, r1
- str r0, [r4]
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldr r0, [r4]
- strh r5, [r0, 0x30]
- ldr r1, [r4]
- adds r0, r6, 0
- adds r0, 0x98
- strh r0, [r1, 0x32]
- ldr r0, [r4]
- strh r7, [r0, 0x34]
- ldr r0, [r4]
- ldr r1, [sp]
- adds r2, r1, 0x1
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp]
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- mov r2, r9
- cmp r2, 0x2
- beq _080F1D6E
- cmp r2, 0
- bne _080F1D88
-_080F1D6E:
- mov r3, r8
- cmp r3, 0x2
- bls _080F1D88
- movs r0, 0x1
- bl IndexOfSpritePaletteTag
- ldr r3, [r4]
- lsls r0, 4
- ldrb r2, [r3, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
-_080F1D88:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080F1CFC
-_080F1D92:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r1, _080F1DB8 @ =gUnknown_083DFEC4
- ldr r0, [r1]
- ldr r4, _080F1DC0 @ =0x0000030e
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r8, r0
- bge _080F1DB0
- b _080F1C7E
-_080F1DB0:
- b _080F1DC8
- .align 2, 0
-_080F1DB4: .4byte gSpriteTemplate_83E4454
-_080F1DB8: .4byte gUnknown_083DFEC4
-_080F1DBC: .4byte gSprites
-_080F1DC0: .4byte 0x0000030e
-_080F1DC4:
- movs r0, 0
- b _080F1DD8
-_080F1DC8:
- ldr r0, _080F1DE8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r5, _080F1DEC @ =0x00000306
- adds r1, r5
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_080F1DD8:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F1DE8: .4byte gUnknown_083DFEC4
-_080F1DEC: .4byte 0x00000306
- thumb_func_end sub_80F1BC8
-
- thumb_func_start sub_80F1DF0
-sub_80F1DF0: @ 80F1DF0
- push {r4-r6,lr}
- movs r2, 0
- ldr r0, _080F1E44 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r0, _080F1E48 @ =0x0000030e
- adds r1, r3, r0
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r2, r0
- bge _080F1E38
- movs r0, 0xC8
- lsls r0, 2
- adds r4, r3, r0
- adds r6, r1, 0
- ldr r5, _080F1E4C @ =sub_80F2218
-_080F1E0E:
- movs r1, 0
- adds r3, r2, 0x1
- lsls r2, 4
-_080F1E14:
- lsls r0, r1, 2
- adds r0, r2
- adds r0, r4, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F1E22
- str r5, [r0, 0x1C]
-_080F1E22:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080F1E14
- lsls r0, r3, 16
- lsrs r2, r0, 16
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r2, r0
- blt _080F1E0E
-_080F1E38:
- movs r0, 0x6
- bl PlaySE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1E44: .4byte gUnknown_083DFEC4
-_080F1E48: .4byte 0x0000030e
-_080F1E4C: .4byte sub_80F2218
- thumb_func_end sub_80F1DF0
-
- thumb_func_start sub_80F1E50
-sub_80F1E50: @ 80F1E50
- push {lr}
- bl sub_80F22F8
- lsls r0, 24
- cmp r0, 0
- bne _080F1E60
- movs r0, 0x1
- b _080F1E66
-_080F1E60:
- bl sub_80F2108
- movs r0, 0
-_080F1E66:
- pop {r1}
- bx r1
- thumb_func_end sub_80F1E50
-
- thumb_func_start sub_80F1E6C
-sub_80F1E6C: @ 80F1E6C
- push {lr}
- bl sub_80F22F8
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080F1E7C
- movs r1, 0x1
-_080F1E7C:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80F1E6C
-
- thumb_func_start sub_80F1E84
-sub_80F1E84: @ 80F1E84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, _080F1EFC @ =gUnknown_083DFEC4
- ldr r4, [r5]
- ldr r1, _080F1F00 @ =0x0000030f
- adds r0, r4, r1
- movs r1, 0
- strb r1, [r0]
- bl sub_80F2148
- movs r2, 0
- ldr r3, _080F1F04 @ =0x0000030e
- adds r1, r4, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r2, r0
- bge _080F1EF2
- ldr r0, _080F1F08 @ =0x00006dad
- adds r7, r4, r0
- adds r6, r1, 0
- mov r8, r5
- ldr r1, _080F1F0C @ =sub_80F2240
- mov r12, r1
-_080F1EB4:
- movs r0, 0
- ldrsb r0, [r7, r0]
- adds r5, r2, 0x1
- cmp r2, r0
- beq _080F1EE6
- movs r1, 0
- mov r3, r8
- ldr r0, [r3]
- lsls r3, r2, 4
- movs r4, 0xC8
- lsls r4, 2
- adds r2, r0, r4
- mov r4, r12
-_080F1ECE:
- lsls r0, r1, 2
- adds r0, r3
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F1EDC
- str r4, [r0, 0x1C]
-_080F1EDC:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080F1ECE
-_080F1EE6:
- lsls r0, r5, 16
- lsrs r2, r0, 16
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r2, r0
- blt _080F1EB4
-_080F1EF2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1EFC: .4byte gUnknown_083DFEC4
-_080F1F00: .4byte 0x0000030f
-_080F1F04: .4byte 0x0000030e
-_080F1F08: .4byte 0x00006dad
-_080F1F0C: .4byte sub_80F2240
- thumb_func_end sub_80F1E84
-
- thumb_func_start sub_80F1F10
-sub_80F1F10: @ 80F1F10
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _080F1F2C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F1F30 @ =0x0000030f
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F1F34
- cmp r0, 0x1
- beq _080F1FC0
- b _080F1FE4
- .align 2, 0
-_080F1F2C: .4byte gUnknown_083DFEC4
-_080F1F30: .4byte 0x0000030f
-_080F1F34:
- bl sub_80F2360
- lsls r0, 24
- cmp r0, 0
- beq _080F1FE4
- movs r6, 0
- adds r7, r4, 0
- movs r0, 0xC8
- lsls r0, 2
- adds r0, r7
- mov r8, r0
-_080F1F4A:
- lsls r5, r6, 2
- ldr r1, _080F1FAC @ =0x00006dad
- adds r0, r7, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 4
- adds r0, r5, r0
- add r0, r8
- ldr r4, [r0]
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r0, _080F1FB0 @ =gSpriteAffineAnimTable_83E4450
- str r0, [r4, 0x10]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- subs r5, 0x6
- strh r5, [r4, 0x36]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x36]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- lsls r0, 3
- strh r0, [r4, 0x38]
- ldr r0, _080F1FB4 @ =sub_80F2240
- str r0, [r4, 0x1C]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080F1F4A
- bl sub_80F2170
- ldr r0, _080F1FB8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F1FBC @ =0x0000030f
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F1FE4
- .align 2, 0
-_080F1FAC: .4byte 0x00006dad
-_080F1FB0: .4byte gSpriteAffineAnimTable_83E4450
-_080F1FB4: .4byte sub_80F2240
-_080F1FB8: .4byte gUnknown_083DFEC4
-_080F1FBC: .4byte 0x0000030f
-_080F1FC0:
- bl sub_80F23C8
- lsls r0, 24
- cmp r0, 0
- beq _080F1FE4
- bl sub_80F21F8
- movs r0, 0
- bl FreeSpriteTilesByTag
- movs r0, 0
- bl FreeSpritePaletteByTag
- movs r0, 0x1
- bl FreeSpritePaletteByTag
- movs r0, 0
- b _080F1FE6
-_080F1FE4:
- movs r0, 0x1
-_080F1FE6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F1F10
-
- thumb_func_start sub_80F1FF0
-sub_80F1FF0: @ 80F1FF0
- push {r4,lr}
- ldr r0, _080F203C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F2040 @ =0x00000311
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F2058
- ldr r2, _080F2044 @ =REG_WIN0V
- ldr r3, _080F2048 @ =0x00006dad
- adds r0, r4, r3
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r1, 1
- movs r3, 0xC5
- lsls r3, 2
- adds r0, r4, r3
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldr r3, _080F204C @ =REG_BLDY
- ldr r1, _080F2050 @ =gSineTable
- ldr r0, _080F2054 @ =0x00000312
- adds r2, r4, r0
- ldrh r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 21
- strh r0, [r3]
- ldrh r0, [r2]
- adds r0, 0x3
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r2]
- b _080F2078
- .align 2, 0
-_080F203C: .4byte gUnknown_083DFEC4
-_080F2040: .4byte 0x00000311
-_080F2044: .4byte REG_WIN0V
-_080F2048: .4byte 0x00006dad
-_080F204C: .4byte REG_BLDY
-_080F2050: .4byte gSineTable
-_080F2054: .4byte 0x00000312
-_080F2058:
- cmp r0, 0x2
- bne _080F2078
- ldr r2, _080F2080 @ =REG_BLDALPHA
- ldr r1, _080F2084 @ =gUnknown_083E42F8
- ldr r0, _080F2088 @ =0x00000312
- adds r3, r4, r0
- ldrh r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldrh r0, [r3]
- cmp r0, 0xE
- bhi _080F2078
- adds r0, 0x1
- strh r0, [r3]
-_080F2078:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2080: .4byte REG_BLDALPHA
-_080F2084: .4byte gUnknown_083E42F8
-_080F2088: .4byte 0x00000312
- thumb_func_end sub_80F1FF0
-
- thumb_func_start sub_80F208C
-sub_80F208C: @ 80F208C
- push {lr}
- bl sub_80F2148
- pop {r0}
- bx r0
- thumb_func_end sub_80F208C
-
- thumb_func_start sub_80F2098
-sub_80F2098: @ 80F2098
- ldr r1, _080F20DC @ =REG_WIN0H
- ldr r2, _080F20E0 @ =0x000077f0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _080F20E4 @ =REG_WIN0V
- ldr r0, _080F20E8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r3, _080F20EC @ =0x00006dad
- adds r0, r1, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- movs r3, 0xC5
- lsls r3, 2
- adds r1, r3
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r2]
- ldr r1, _080F20F0 @ =REG_WININ
- movs r0, 0x3F
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x1F
- strh r0, [r1]
- subs r2, 0x44
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 6
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- bx lr
- .align 2, 0
-_080F20DC: .4byte REG_WIN0H
-_080F20E0: .4byte 0x000077f0
-_080F20E4: .4byte REG_WIN0V
-_080F20E8: .4byte gUnknown_083DFEC4
-_080F20EC: .4byte 0x00006dad
-_080F20F0: .4byte REG_WININ
- thumb_func_end sub_80F2098
-
- thumb_func_start sub_80F20F4
-sub_80F20F4: @ 80F20F4
- movs r2, 0x80
- lsls r2, 19
- ldrh r1, [r2]
- ldr r0, _080F2104 @ =0x0000dfff
- ands r0, r1
- strh r0, [r2]
- bx lr
- .align 2, 0
-_080F2104: .4byte 0x0000dfff
- thumb_func_end sub_80F20F4
-
- thumb_func_start sub_80F2108
-sub_80F2108: @ 80F2108
- push {lr}
- ldr r0, _080F2134 @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r0, _080F2138 @ =0x00000311
- adds r1, r3, r0
- ldrb r2, [r1]
- cmp r2, 0
- bne _080F2130
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080F213C @ =0x00000312
- adds r0, r3, r1
- strh r2, [r0]
- ldr r1, _080F2140 @ =REG_BLDCNT
- movs r0, 0x90
- strh r0, [r1]
- ldr r0, _080F2144 @ =REG_BLDY
- strh r2, [r0]
- bl sub_80F2098
-_080F2130:
- pop {r0}
- bx r0
- .align 2, 0
-_080F2134: .4byte gUnknown_083DFEC4
-_080F2138: .4byte 0x00000311
-_080F213C: .4byte 0x00000312
-_080F2140: .4byte REG_BLDCNT
-_080F2144: .4byte REG_BLDY
- thumb_func_end sub_80F2108
-
- thumb_func_start sub_80F2148
-sub_80F2148: @ 80F2148
- push {lr}
- ldr r0, _080F2164 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2168 @ =0x00000311
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080F216C @ =REG_BLDCNT
- strh r1, [r0]
- bl sub_80F20F4
- pop {r0}
- bx r0
- .align 2, 0
-_080F2164: .4byte gUnknown_083DFEC4
-_080F2168: .4byte 0x00000311
-_080F216C: .4byte REG_BLDCNT
- thumb_func_end sub_80F2148
-
- thumb_func_start sub_80F2170
-sub_80F2170: @ 80F2170
- push {r4-r7,lr}
- ldr r7, _080F21E4 @ =gUnknown_083DFEC4
- ldr r4, [r7]
- ldr r1, _080F21E8 @ =0x00000311
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F21DC
- bl sub_80F20F4
- movs r3, 0
- ldr r2, _080F21EC @ =0x00006dad
- adds r5, r4, r2
- movs r0, 0xC8
- lsls r0, 2
- adds r4, r0
- movs r1, 0xD
- negs r1, r1
- mov r12, r1
- movs r6, 0x4
-_080F2198:
- lsls r1, r3, 2
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 4
- adds r1, r0
- adds r1, r4, r1
- ldr r2, [r1]
- ldrb r1, [r2, 0x1]
- mov r0, r12
- ands r0, r1
- orrs r0, r6
- strb r0, [r2, 0x1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080F2198
- ldr r1, [r7]
- ldr r0, _080F21E8 @ =0x00000311
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0x2
- strb r0, [r2]
- ldr r2, _080F21F0 @ =0x00000312
- adds r1, r2
- strh r3, [r1]
- ldr r1, _080F21F4 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x10
- strh r0, [r1]
-_080F21DC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F21E4: .4byte gUnknown_083DFEC4
-_080F21E8: .4byte 0x00000311
-_080F21EC: .4byte 0x00006dad
-_080F21F0: .4byte 0x00000312
-_080F21F4: .4byte REG_BLDCNT
- thumb_func_end sub_80F2170
-
- thumb_func_start sub_80F21F8
-sub_80F21F8: @ 80F21F8
- ldr r0, _080F220C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2210 @ =0x00000311
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080F2214 @ =REG_BLDCNT
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F220C: .4byte gUnknown_083DFEC4
-_080F2210: .4byte 0x00000311
-_080F2214: .4byte REG_BLDCNT
- thumb_func_end sub_80F21F8
-
- thumb_func_start sub_80F2218
-sub_80F2218: @ 80F2218
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x20]
- subs r0, 0x8
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- ldrh r3, [r2, 0x32]
- movs r4, 0x32
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bgt _080F2236
- strh r3, [r2, 0x20]
- ldr r0, _080F223C @ =sub_80F22B0
- str r0, [r2, 0x1C]
-_080F2236:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F223C: .4byte sub_80F22B0
- thumb_func_end sub_80F2218
-
- thumb_func_start sub_80F2240
-sub_80F2240: @ 80F2240
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _080F2288 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F228C @ =0x00006dad
- adds r0, r1
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r1, r0
- bne _080F2290
- ldrh r3, [r2, 0x38]
- movs r4, 0x38
- ldrsh r0, [r2, r4]
- cmp r0, 0
- beq _080F2270
- ldrh r0, [r2, 0x36]
- ldrh r4, [r2, 0x20]
- adds r1, r0, r4
- strh r1, [r2, 0x20]
- subs r0, r3, r0
- strh r0, [r2, 0x38]
-_080F2270:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080F22A8
- adds r0, r2, 0
- bl sub_80F240C
- b _080F22A8
- .align 2, 0
-_080F2288: .4byte gUnknown_083DFEC4
-_080F228C: .4byte 0x00006dad
-_080F2290:
- ldrh r0, [r2, 0x20]
- adds r0, 0x8
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _080F22A8
- adds r0, r2, 0
- bl sub_80F240C
-_080F22A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F2240
-
- thumb_func_start sub_80F22B0
-sub_80F22B0: @ 80F22B0
- push {lr}
- adds r2, r0, 0
- ldr r0, _080F22DC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F22E0 @ =0x00006dad
- adds r0, r1
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r1, r0
- bne _080F22E4
- ldrh r3, [r2, 0x24]
- movs r0, 0x24
- ldrsh r1, [r2, r0]
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- ble _080F22F2
- subs r0, r3, 0x4
- b _080F22F0
- .align 2, 0
-_080F22DC: .4byte gUnknown_083DFEC4
-_080F22E0: .4byte 0x00006dad
-_080F22E4:
- ldrh r1, [r2, 0x24]
- movs r3, 0x24
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _080F22F2
- adds r0, r1, 0x4
-_080F22F0:
- strh r0, [r2, 0x24]
-_080F22F2:
- pop {r0}
- bx r0
- thumb_func_end sub_80F22B0
-
- thumb_func_start sub_80F22F8
-sub_80F22F8: @ 80F22F8
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, _080F233C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F2340 @ =0x00006dae
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r3, r0
- bge _080F2358
- movs r7, 0xC8
- lsls r7, 2
- adds r4, r1, r7
- movs r5, 0x10
- negs r5, r5
- adds r6, r0, 0
-_080F231A:
- movs r1, 0
- lsls r2, r3, 4
-_080F231E:
- lsls r0, r1, 2
- adds r0, r2
- adds r0, r4, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F2358
- movs r7, 0x24
- ldrsh r0, [r0, r7]
- cmp r0, 0
- beq _080F2344
- cmp r0, r5
- beq _080F2344
- movs r0, 0
- b _080F235A
- .align 2, 0
-_080F233C: .4byte gUnknown_083DFEC4
-_080F2340: .4byte 0x00006dae
-_080F2344:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080F231E
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r6
- blt _080F231A
-_080F2358:
- movs r0, 0x1
-_080F235A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F22F8
-
- thumb_func_start sub_80F2360
-sub_80F2360: @ 80F2360
- push {r4-r7,lr}
- movs r4, 0
- ldr r0, _080F23A0 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F23A4 @ =0x0000030e
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- cmp r4, r1
- bge _080F23C0
- ldr r3, _080F23A8 @ =0x00006dad
- adds r0, r2, r3
- movs r6, 0
- ldrsb r6, [r0, r6]
- adds r5, r1, 0
-_080F237E:
- cmp r4, r6
- beq _080F23B6
- movs r1, 0
- ldr r0, _080F23A0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- lsls r3, r4, 4
- movs r7, 0xC8
- lsls r7, 2
- adds r2, r0, r7
-_080F2390:
- lsls r0, r1, 2
- adds r0, r3
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F23AC
- movs r0, 0
- b _080F23C2
- .align 2, 0
-_080F23A0: .4byte gUnknown_083DFEC4
-_080F23A4: .4byte 0x0000030e
-_080F23A8: .4byte 0x00006dad
-_080F23AC:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080F2390
-_080F23B6:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r5
- blt _080F237E
-_080F23C0:
- movs r0, 0x1
-_080F23C2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F2360
-
- thumb_func_start sub_80F23C8
-sub_80F23C8: @ 80F23C8
- push {lr}
- movs r2, 0
- ldr r0, _080F23F4 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r3, _080F23F8 @ =0x00006dad
- adds r0, r1, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r3, r0, 4
- movs r0, 0xC8
- lsls r0, 2
- adds r1, r0
-_080F23E2:
- lsls r0, r2, 2
- adds r0, r3
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F23FC
- movs r0, 0
- b _080F2408
- .align 2, 0
-_080F23F4: .4byte gUnknown_083DFEC4
-_080F23F8: .4byte 0x00006dad
-_080F23FC:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x3
- bls _080F23E2
- movs r0, 0x1
-_080F2408:
- pop {r1}
- bx r1
- thumb_func_end sub_80F23C8
-
- thumb_func_start sub_80F240C
-sub_80F240C: @ 80F240C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080F2454 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- lsls r1, 2
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- lsls r0, 4
- adds r1, r0
- movs r0, 0xC8
- lsls r0, 2
- adds r2, r0
- adds r2, r1
- movs r0, 0
- str r0, [r2]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080F2446
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
-_080F2446:
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2454: .4byte gUnknown_083DFEC4
- thumb_func_end sub_80F240C
-
- thumb_func_start sub_80F2458
-sub_80F2458: @ 80F2458
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- beq _080F24A0
- cmp r4, 0x1
- bgt _080F246C
- cmp r4, 0
- beq _080F2472
- b _080F2502
-_080F246C:
- cmp r4, 0x2
- beq _080F24D0
- b _080F2502
-_080F2472:
- ldr r2, _080F2498 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- movs r0, 0xE0
- lsls r0, 2
- adds r1, r3, r0
- movs r5, 0xE2
- lsls r5, 2
- adds r0, r3, r5
- str r0, [r1]
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r3, r0
- movs r0, 0xA0
- lsls r0, 5
- strh r0, [r1]
- ldr r1, _080F249C @ =0x00000386
- adds r0, r3, r1
- strh r4, [r0]
- b _080F24F6
- .align 2, 0
-_080F2498: .4byte gUnknown_083DFEC4
-_080F249C: .4byte 0x00000386
-_080F24A0:
- ldr r4, _080F24C4 @ =gUnknown_083DFEC4
- ldr r1, [r4]
- movs r3, 0xE0
- lsls r3, 2
- adds r2, r1, r3
- ldr r5, _080F24C8 @ =0x00001788
- adds r0, r1, r5
- str r0, [r2]
- movs r0, 0xE1
- lsls r0, 2
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0xC0
- lsls r0, 4
- strh r0, [r2]
- ldr r5, _080F24CC @ =0x00000386
- adds r1, r5
- b _080F24F2
- .align 2, 0
-_080F24C4: .4byte gUnknown_083DFEC4
-_080F24C8: .4byte 0x00001788
-_080F24CC: .4byte 0x00000386
-_080F24D0:
- ldr r4, _080F2508 @ =gUnknown_083DFEC4
- ldr r1, [r4]
- movs r0, 0xE0
- lsls r0, 2
- adds r2, r1, r0
- ldr r3, _080F250C @ =0x00002388
- adds r0, r1, r3
- str r0, [r2]
- movs r5, 0xE1
- lsls r5, 2
- adds r2, r1, r5
- movs r3, 0
- movs r0, 0xC0
- lsls r0, 5
- strh r0, [r2]
- ldr r0, _080F2510 @ =0x00000386
- adds r1, r0
-_080F24F2:
- strh r3, [r1]
- adds r2, r4, 0
-_080F24F6:
- ldr r0, [r2]
- movs r1, 0xE0
- lsls r1, 2
- adds r0, r1
- bl LoadSpriteSheet
-_080F2502:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2508: .4byte gUnknown_083DFEC4
-_080F250C: .4byte 0x00002388
-_080F2510: .4byte 0x00000386
- thumb_func_end sub_80F2458
-
- thumb_func_start sub_80F2514
-sub_80F2514: @ 80F2514
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _080F2558
- cmp r0, 0x1
- bgt _080F252C
- cmp r0, 0
- beq _080F2532
- b _080F2586
-_080F252C:
- cmp r1, 0x2
- beq _080F2568
- b _080F2586
-_080F2532:
- ldr r0, _080F254C @ =gPokenavMenuOptions1_Pal
- str r0, [sp]
- ldr r1, _080F2550 @ =0xffff0000
- mov r4, sp
- ldr r0, [sp, 0x4]
- ands r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- ldr r0, _080F2554 @ =gPokenavMenuOptions2_Pal
- b _080F257A
- .align 2, 0
-_080F254C: .4byte gPokenavMenuOptions1_Pal
-_080F2550: .4byte 0xffff0000
-_080F2554: .4byte gPokenavMenuOptions2_Pal
-_080F2558:
- ldr r0, _080F2564 @ =gPokenavConditionMenu_Pal
- str r0, [sp]
- mov r1, sp
- movs r0, 0
- strh r0, [r1, 0x4]
- b _080F2580
- .align 2, 0
-_080F2564: .4byte gPokenavConditionMenu_Pal
-_080F2568:
- ldr r0, _080F2590 @ =gPokenavCondition6_Pal
- str r0, [sp]
- mov r4, sp
- movs r0, 0
- strh r0, [r4, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- ldr r0, _080F2594 @ =gPokenavCondition7_Pal
-_080F257A:
- str r0, [sp]
- movs r0, 0x1
- strh r0, [r4, 0x4]
-_080F2580:
- mov r0, sp
- bl LoadSpritePalette
-_080F2586:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2590: .4byte gPokenavCondition6_Pal
-_080F2594: .4byte gPokenavCondition7_Pal
- thumb_func_end sub_80F2514
-
- thumb_func_start sub_80F2598
-sub_80F2598: @ 80F2598
- push {r4,lr}
- ldr r0, _080F25F0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F25F4 @ =0x00006d9c
- adds r4, r0, r1
- movs r0, 0
- str r0, [r4]
- ldr r1, _080F25F8 @ =gSaveBlock1
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl DoesSomeoneWantRematchIn
- cmp r0, 0x1
- bne _080F2618
- ldr r0, _080F25FC @ =gSpriteSheet_PokenavBlueLight
- bl LoadSpriteSheet
- ldr r0, _080F2600 @ =gSpritePalette_PokenavBlueLight
- bl LoadSpritePalette
- ldr r0, _080F2604 @ =gSpriteTemplate_83E4484
- movs r1, 0xC
- movs r2, 0x60
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080F260C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F2608 @ =gSprites
- adds r0, r1
- str r0, [r4]
- b _080F2618
- .align 2, 0
-_080F25F0: .4byte gUnknown_083DFEC4
-_080F25F4: .4byte 0x00006d9c
-_080F25F8: .4byte gSaveBlock1
-_080F25FC: .4byte gSpriteSheet_PokenavBlueLight
-_080F2600: .4byte gSpritePalette_PokenavBlueLight
-_080F2604: .4byte gSpriteTemplate_83E4484
-_080F2608: .4byte gSprites
-_080F260C:
- movs r0, 0x19
- bl FreeSpriteTilesByTag
- movs r0, 0x11
- bl FreeSpritePaletteByTag
-_080F2618:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F2598
-
- thumb_func_start sub_80F2620
-sub_80F2620: @ 80F2620
- push {r4,lr}
- ldr r0, _080F264C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2650 @ =0x00006d9c
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _080F2644
- bl DestroySprite
- movs r0, 0x19
- bl FreeSpriteTilesByTag
- movs r0, 0x11
- bl FreeSpritePaletteByTag
- movs r0, 0
- str r0, [r4]
-_080F2644:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F264C: .4byte gUnknown_083DFEC4
-_080F2650: .4byte 0x00006d9c
- thumb_func_end sub_80F2620
-
- thumb_func_start sub_80F2654
-sub_80F2654: @ 80F2654
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080F2682
- movs r0, 0
- strh r0, [r3, 0x2E]
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080F2682:
- pop {r0}
- bx r0
- thumb_func_end sub_80F2654
-
- thumb_func_start sub_80F2688
-sub_80F2688: @ 80F2688
- push {lr}
- ldr r0, _080F26B0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F26B4 @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F26B8 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F26AA
-_080F26A0:
- bl sub_80F26BC
- lsls r0, 24
- cmp r0, 0
- bne _080F26A0
-_080F26AA:
- pop {r0}
- bx r0
- .align 2, 0
-_080F26B0: .4byte gUnknown_083DFEC4
-_080F26B4: .4byte 0x00000306
-_080F26B8: .4byte 0x00006dac
- thumb_func_end sub_80F2688
-
- thumb_func_start sub_80F26BC
-sub_80F26BC: @ 80F26BC
- push {lr}
- ldr r0, _080F26D8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F26DC @ =0x00000306
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x7
- bls _080F26CE
- b _080F27BC
-_080F26CE:
- lsls r0, 2
- ldr r1, _080F26E0 @ =_080F26E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F26D8: .4byte gUnknown_083DFEC4
-_080F26DC: .4byte 0x00000306
-_080F26E0: .4byte _080F26E4
- .align 2, 0
-_080F26E4:
- .4byte _080F2704
- .4byte _080F271C
- .4byte _080F2734
- .4byte _080F274C
- .4byte _080F2764
- .4byte _080F277C
- .4byte _080F2794
- .4byte _080F27B0
-_080F2704:
- ldr r0, _080F2710 @ =gPokenavMainMenu_Gfx
- ldr r1, _080F2714 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2718 @ =0x00003b98
- b _080F279C
- .align 2, 0
-_080F2710: .4byte gPokenavMainMenu_Gfx
-_080F2714: .4byte gUnknown_083DFEC4
-_080F2718: .4byte 0x00003b98
-_080F271C:
- ldr r0, _080F2728 @ =gPokenavConditionMenuHeader_Gfx
- ldr r1, _080F272C @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2730 @ =0x00004198
- b _080F279C
- .align 2, 0
-_080F2728: .4byte gPokenavConditionMenuHeader_Gfx
-_080F272C: .4byte gUnknown_083DFEC4
-_080F2730: .4byte 0x00004198
-_080F2734:
- ldr r0, _080F2740 @ =gPokenavRibbonsHeader_Gfx
- ldr r1, _080F2744 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2748 @ =0x00004d98
- b _080F279C
- .align 2, 0
-_080F2740: .4byte gPokenavRibbonsHeader_Gfx
-_080F2744: .4byte gUnknown_083DFEC4
-_080F2748: .4byte 0x00004d98
-_080F274C:
- ldr r0, _080F2758 @ =gPokenavHoennMapHeader_Gfx
- ldr r1, _080F275C @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2760 @ =0x00005398
- b _080F279C
- .align 2, 0
-_080F2758: .4byte gPokenavHoennMapHeader_Gfx
-_080F275C: .4byte gUnknown_083DFEC4
-_080F2760: .4byte 0x00005398
-_080F2764:
- ldr r0, _080F2770 @ =gPokenavConditionMenuOptions_Gfx
- ldr r1, _080F2774 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2778 @ =0x00005f98
- b _080F279C
- .align 2, 0
-_080F2770: .4byte gPokenavConditionMenuOptions_Gfx
-_080F2774: .4byte gUnknown_083DFEC4
-_080F2778: .4byte 0x00005f98
-_080F277C:
- ldr r0, _080F2788 @ =gPokenavConditionMenuOptions2_Gfx
- ldr r1, _080F278C @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2790 @ =0x00006798
- b _080F279C
- .align 2, 0
-_080F2788: .4byte gPokenavConditionMenuOptions2_Gfx
-_080F278C: .4byte gUnknown_083DFEC4
-_080F2790: .4byte 0x00006798
-_080F2794:
- ldr r0, _080F27A4 @ =gPokenavTrainersEyesHeader_Gfx
- ldr r1, _080F27A8 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F27AC @ =0x00004798
-_080F279C:
- adds r1, r2
- bl LZ77UnCompWram
- b _080F27C0
- .align 2, 0
-_080F27A4: .4byte gPokenavTrainersEyesHeader_Gfx
-_080F27A8: .4byte gUnknown_083DFEC4
-_080F27AC: .4byte 0x00004798
-_080F27B0:
- ldr r0, _080F27B8 @ =gUnknown_083E449C
- bl LoadSpritePalettes
- b _080F27C0
- .align 2, 0
-_080F27B8: .4byte gUnknown_083E449C
-_080F27BC:
- movs r0, 0
- b _080F27D0
-_080F27C0:
- ldr r0, _080F27D4 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F27D8 @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_080F27D0:
- pop {r1}
- bx r1
- .align 2, 0
-_080F27D4: .4byte gUnknown_083DFEC4
-_080F27D8: .4byte 0x00000306
- thumb_func_end sub_80F26BC
-
- thumb_func_start sub_80F27DC
-sub_80F27DC: @ 80F27DC
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- bls _080F27EA
- b _080F29A0
-_080F27EA:
- lsls r0, 2
- ldr r1, _080F27F4 @ =_080F27F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F27F4: .4byte _080F27F8
- .align 2, 0
-_080F27F8:
- .4byte _080F2828
- .4byte _080F2858
- .4byte _080F28B8
- .4byte _080F2888
- .4byte _080F28E8
- .4byte _080F2918
- .4byte _080F2928
- .4byte _080F2978
- .4byte _080F2938
- .4byte _080F2948
- .4byte _080F2968
- .4byte _080F2958
-_080F2828:
- ldr r0, _080F2848 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F284C @ =0x00003b98
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F2850 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- ldr r1, _080F2854 @ =0x0000ffff
- ands r0, r1
- adds r1, 0x1
- b _080F2996
- .align 2, 0
-_080F2848: .4byte gUnknown_083DFEC4
-_080F284C: .4byte 0x00003b98
-_080F2850: .4byte 0xffff0000
-_080F2854: .4byte 0x0000ffff
-_080F2858:
- ldr r0, _080F2878 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F287C @ =0x00004198
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F2880 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- ldr r1, _080F2884 @ =0x0000ffff
- ands r0, r1
- adds r1, 0x1
- b _080F2996
- .align 2, 0
-_080F2878: .4byte gUnknown_083DFEC4
-_080F287C: .4byte 0x00004198
-_080F2880: .4byte 0xffff0000
-_080F2884: .4byte 0x0000ffff
-_080F2888:
- ldr r0, _080F28A8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F28AC @ =0x00004798
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F28B0 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- ldr r1, _080F28B4 @ =0x0000ffff
- ands r0, r1
- adds r1, 0x1
- b _080F2996
- .align 2, 0
-_080F28A8: .4byte gUnknown_083DFEC4
-_080F28AC: .4byte 0x00004798
-_080F28B0: .4byte 0xffff0000
-_080F28B4: .4byte 0x0000ffff
-_080F28B8:
- ldr r0, _080F28D8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F28DC @ =0x00004d98
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F28E0 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- ldr r1, _080F28E4 @ =0x0000ffff
- ands r0, r1
- adds r1, 0x1
- b _080F2996
- .align 2, 0
-_080F28D8: .4byte gUnknown_083DFEC4
-_080F28DC: .4byte 0x00004d98
-_080F28E0: .4byte 0xffff0000
-_080F28E4: .4byte 0x0000ffff
-_080F28E8:
- ldr r0, _080F2908 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F290C @ =0x00005398
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F2910 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 4
- orrs r0, r1
- ldr r1, _080F2914 @ =0x0000ffff
- ands r0, r1
- adds r1, 0x1
- b _080F2996
- .align 2, 0
-_080F2908: .4byte gUnknown_083DFEC4
-_080F290C: .4byte 0x00005398
-_080F2910: .4byte 0xffff0000
-_080F2914: .4byte 0x0000ffff
-_080F2918:
- ldr r0, _080F2920 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2924 @ =0x00005f98
- b _080F297E
- .align 2, 0
-_080F2920: .4byte gUnknown_083DFEC4
-_080F2924: .4byte 0x00005f98
-_080F2928:
- ldr r0, _080F2930 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2934 @ =0x00006198
- b _080F297E
- .align 2, 0
-_080F2930: .4byte gUnknown_083DFEC4
-_080F2934: .4byte 0x00006198
-_080F2938:
- ldr r0, _080F2940 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2944 @ =0x00006398
- b _080F297E
- .align 2, 0
-_080F2940: .4byte gUnknown_083DFEC4
-_080F2944: .4byte 0x00006398
-_080F2948:
- ldr r0, _080F2950 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2954 @ =0x00006598
- b _080F297E
- .align 2, 0
-_080F2950: .4byte gUnknown_083DFEC4
-_080F2954: .4byte 0x00006598
-_080F2958:
- ldr r0, _080F2960 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2964 @ =0x00006998
- b _080F297E
- .align 2, 0
-_080F2960: .4byte gUnknown_083DFEC4
-_080F2964: .4byte 0x00006998
-_080F2968:
- ldr r0, _080F2970 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2974 @ =0x00006798
- b _080F297E
- .align 2, 0
-_080F2970: .4byte gUnknown_083DFEC4
-_080F2974: .4byte 0x00006798
-_080F2978:
- ldr r0, _080F29A8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F29AC @ =0x00006b98
-_080F297E:
- adds r0, r1
- str r0, [sp]
- ldr r1, _080F29B0 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- ldr r1, _080F29B4 @ =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 10
-_080F2996:
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
-_080F29A0:
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080F29A8: .4byte gUnknown_083DFEC4
-_080F29AC: .4byte 0x00006b98
-_080F29B0: .4byte 0xffff0000
-_080F29B4: .4byte 0x0000ffff
- thumb_func_end sub_80F27DC
-
- thumb_func_start sub_80F29B8
-sub_80F29B8: @ 80F29B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- cmp r7, 0xB
- bls _080F29D2
- b _080F2BA6
-_080F29D2:
- lsls r0, r7, 2
- ldr r1, _080F29DC @ =_080F29E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F29DC: .4byte _080F29E0
- .align 2, 0
-_080F29E0:
- .4byte _080F2A10
- .4byte _080F2A10
- .4byte _080F2A10
- .4byte _080F2A10
- .4byte _080F2A58
- .4byte _080F2A94
- .4byte _080F2A94
- .4byte _080F2A98
- .4byte _080F2A94
- .4byte _080F2A94
- .4byte _080F2A98
- .4byte _080F2A98
-_080F2A10:
- ldr r3, _080F2A44 @ =0x0000ffa0
- ldr r0, _080F2A48 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- movs r1, 0xC3
- lsls r1, 2
- adds r0, r2, r1
- ldrh r1, [r0]
- movs r0, 0x31
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x8
- str r4, [sp]
- movs r1, 0x20
- str r1, [sp, 0x4]
- movs r1, 0x40
- ldr r4, _080F2A4C @ =0x00003b88
- adds r4, r2
- mov r9, r4
- ldr r2, _080F2A50 @ =gSpriteTemplate_83E44F8
- mov r8, r2
- cmp r7, 0x3
- beq _080F2AC8
- ldr r4, _080F2A54 @ =gSpriteTemplate_83E44E0
- mov r8, r4
- b _080F2AC8
- .align 2, 0
-_080F2A44: .4byte 0x0000ffa0
-_080F2A48: .4byte gUnknown_083DFEC4
-_080F2A4C: .4byte 0x00003b88
-_080F2A50: .4byte gSpriteTemplate_83E44F8
-_080F2A54: .4byte gSpriteTemplate_83E44E0
-_080F2A58:
- movs r3, 0x88
- lsls r3, 1
- ldr r0, _080F2A84 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- movs r1, 0xC3
- lsls r1, 2
- adds r0, r2, r1
- ldrh r1, [r0]
- movs r0, 0x31
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _080F2A88 @ =0x0000fff8
- str r4, [sp]
- movs r1, 0x98
- str r1, [sp, 0x4]
- movs r1, 0x40
- ldr r4, _080F2A8C @ =gSpriteTemplate_83E44E0
- mov r8, r4
- ldr r4, _080F2A90 @ =0x00003b88
- b _080F2AC4
- .align 2, 0
-_080F2A84: .4byte gUnknown_083DFEC4
-_080F2A88: .4byte 0x0000fff8
-_080F2A8C: .4byte gSpriteTemplate_83E44E0
-_080F2A90: .4byte 0x00003b88
-_080F2A94:
- ldr r0, _080F2B40 @ =gSpriteTemplate_83E4530
- mov r8, r0
-_080F2A98:
- mov r1, r8
- cmp r1, 0
- bne _080F2AA2
- ldr r2, _080F2B44 @ =gSpriteTemplate_83E4548
- mov r8, r2
-_080F2AA2:
- ldr r3, _080F2B48 @ =0x0000ffa0
- ldr r0, _080F2B4C @ =gUnknown_083DFEC4
- ldr r2, [r0]
- movs r4, 0xC3
- lsls r4, 2
- adds r0, r2, r4
- ldrh r1, [r0]
- movs r0, 0x44
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x8
- str r1, [sp]
- movs r4, 0x10
- str r4, [sp, 0x4]
- movs r1, 0x20
- ldr r4, _080F2B50 @ =0x00003b90
-_080F2AC4:
- adds r4, r2
- mov r9, r4
-_080F2AC8:
- movs r6, 0
- lsls r1, 16
- str r1, [sp, 0x10]
- lsls r3, 16
- str r3, [sp, 0x8]
- lsls r0, 16
- str r0, [sp, 0xC]
- ldr r0, _080F2B54 @ =gSprites
- mov r10, r0
-_080F2ADA:
- ldr r1, [sp, 0x10]
- asrs r0, r1, 16
- adds r5, r6, 0
- muls r5, r0
- ldr r2, [sp, 0x8]
- asrs r1, r2, 16
- adds r1, r5
- lsls r1, 16
- asrs r1, 16
- mov r0, r8
- ldr r3, [sp, 0xC]
- asrs r2, r3, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _080F2B9C
- lsls r0, r4, 4
- adds r1, r0, r4
- lsls r1, 2
- mov r2, r10
- adds r3, r1, r2
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r3, 0x2E]
- ldr r2, [sp, 0x4]
- adds r1, r2, r5
- strh r1, [r3, 0x30]
- strh r6, [r3, 0x32]
- strh r7, [r3, 0x34]
- adds r5, r0, 0
- cmp r7, 0x4
- bne _080F2B5C
- cmp r6, 0x1
- bne _080F2B5C
- ldr r0, _080F2B4C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2B58 @ =0x00006e90
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- cmp r0, 0
- bne _080F2B36
- movs r1, 0x1
-_080F2B36:
- adds r0, r3, 0
- bl StartSpriteAnim
- b _080F2B6A
- .align 2, 0
-_080F2B40: .4byte gSpriteTemplate_83E4530
-_080F2B44: .4byte gSpriteTemplate_83E4548
-_080F2B48: .4byte 0x0000ffa0
-_080F2B4C: .4byte gUnknown_083DFEC4
-_080F2B50: .4byte 0x00003b90
-_080F2B54: .4byte gSprites
-_080F2B58: .4byte 0x00006e90
-_080F2B5C:
- adds r0, r5, r4
- lsls r0, 2
- add r0, r10
- lsls r1, r6, 24
- lsrs r1, 24
- bl StartSpriteAnim
-_080F2B6A:
- ldr r2, _080F2BB8 @ =gSprites
- mov r12, r2
- cmp r7, 0x3
- bhi _080F2B90
- cmp r6, 0x1
- bne _080F2B90
- adds r2, r5, r4
- lsls r2, 2
- add r2, r10
- ldrb r3, [r2, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r3
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r2, 0x3]
-_080F2B90:
- lsls r1, r6, 2
- add r1, r9
- adds r0, r5, r4
- lsls r0, 2
- add r0, r12
- str r0, [r1]
-_080F2B9C:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x1
- bls _080F2ADA
-_080F2BA6:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2BB8: .4byte gSprites
- thumb_func_end sub_80F29B8
-
- thumb_func_start sub_80F2BBC
-sub_80F2BBC: @ 80F2BBC
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x20]
- ldrh r1, [r2, 0x2E]
- adds r3, r0, r1
- strh r3, [r2, 0x20]
- lsls r0, 16
- asrs r4, r0, 16
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- cmp r4, r1
- bgt _080F2BE0
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r1
- bge _080F2BE8
- cmp r4, r1
- blt _080F2C08
-_080F2BE0:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r1
- bgt _080F2C08
-_080F2BE8:
- ldrh r0, [r2, 0x30]
- strh r0, [r2, 0x20]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bne _080F2C04
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080F2C04
- ldr r0, _080F2C00 @ =sub_80F2C58
- b _080F2C06
- .align 2, 0
-_080F2C00: .4byte sub_80F2C58
-_080F2C04:
- ldr r0, _080F2C10 @ =SpriteCallbackDummy
-_080F2C06:
- str r0, [r2, 0x1C]
-_080F2C08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2C10: .4byte SpriteCallbackDummy
- thumb_func_end sub_80F2BBC
-
- thumb_func_start sub_80F2C14
-sub_80F2C14: @ 80F2C14
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- ldrh r1, [r4, 0x2E]
- subs r0, r1
- strh r0, [r4, 0x20]
- adds r0, 0x20
- lsls r0, 16
- movs r1, 0x98
- lsls r1, 17
- cmp r0, r1
- bls _080F2C50
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080F2C4A
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bgt _080F2C44
- movs r0, 0x1
- bl FreeSpriteTilesByTag
- b _080F2C4A
-_080F2C44:
- movs r0, 0x2
- bl FreeSpriteTilesByTag
-_080F2C4A:
- adds r0, r4, 0
- bl DestroySprite
-_080F2C50:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F2C14
-
- thumb_func_start sub_80F2C58
-sub_80F2C58: @ 80F2C58
- push {lr}
- adds r2, r0, 0
- ldr r0, _080F2C78 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2C7C @ =0x00006e90
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x2
- cmp r0, 0
- bne _080F2C6E
- movs r1, 0x1
-_080F2C6E:
- adds r0, r2, 0
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_080F2C78: .4byte gUnknown_083DFEC4
-_080F2C7C: .4byte 0x00006e90
- thumb_func_end sub_80F2C58
-
- thumb_func_start sub_80F2C80
-sub_80F2C80: @ 80F2C80
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F2CB0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2CB4 @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F2CB8 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F2CA8
-_080F2C9C:
- adds r0, r4, 0
- bl sub_80F2CBC
- lsls r0, 24
- cmp r0, 0
- bne _080F2C9C
-_080F2CA8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2CB0: .4byte gUnknown_083DFEC4
-_080F2CB4: .4byte 0x00000306
-_080F2CB8: .4byte 0x00006dac
- thumb_func_end sub_80F2C80
-
- thumb_func_start sub_80F2CBC
-sub_80F2CBC: @ 80F2CBC
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F2CD8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F2CDC @ =0x00000306
- adds r4, r0, r2
- ldrh r0, [r4]
- cmp r0, 0
- beq _080F2CE0
- cmp r0, 0x1
- beq _080F2CF0
- b _080F2CFC
- .align 2, 0
-_080F2CD8: .4byte gUnknown_083DFEC4
-_080F2CDC: .4byte 0x00000306
-_080F2CE0:
- adds r0, r1, 0
- bl sub_80F27DC
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- movs r0, 0x1
- b _080F2CFE
-_080F2CF0:
- adds r0, r1, 0
- bl sub_80F29B8
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080F2CFC:
- movs r0, 0
-_080F2CFE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F2CBC
-
- thumb_func_start sub_80F2D04
-sub_80F2D04: @ 80F2D04
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F2D3C
- movs r1, 0
- ldr r0, _080F2D30 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080F2D34 @ =0x00003b88
- adds r2, r0, r3
- ldr r3, _080F2D38 @ =sub_80F2C14
-_080F2D1A:
- lsls r0, r1, 2
- adds r0, r2, r0
- ldr r0, [r0]
- str r3, [r0, 0x1C]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x1
- bls _080F2D1A
- b _080F2D5A
- .align 2, 0
-_080F2D30: .4byte gUnknown_083DFEC4
-_080F2D34: .4byte 0x00003b88
-_080F2D38: .4byte sub_80F2C14
-_080F2D3C:
- movs r1, 0
- ldr r0, _080F2D60 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080F2D64 @ =0x00003b90
- adds r2, r0, r3
- ldr r3, _080F2D68 @ =sub_80F2C14
-_080F2D48:
- lsls r0, r1, 2
- adds r0, r2, r0
- ldr r0, [r0]
- str r3, [r0, 0x1C]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x1
- bls _080F2D48
-_080F2D5A:
- pop {r0}
- bx r0
- .align 2, 0
-_080F2D60: .4byte gUnknown_083DFEC4
-_080F2D64: .4byte 0x00003b90
-_080F2D68: .4byte sub_80F2C14
- thumb_func_end sub_80F2D04
-
- thumb_func_start sub_80F2D6C
-sub_80F2D6C: @ 80F2D6C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F2DA4
- movs r0, 0x1
- bl FreeSpriteTilesByTag
- movs r4, 0
- ldr r0, _080F2D9C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2DA0 @ =0x00003b88
- adds r5, r0, r1
-_080F2D86:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080F2D86
- b _080F2DC8
- .align 2, 0
-_080F2D9C: .4byte gUnknown_083DFEC4
-_080F2DA0: .4byte 0x00003b88
-_080F2DA4:
- movs r0, 0x2
- bl FreeSpriteTilesByTag
- movs r4, 0
- ldr r0, _080F2DD0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2DD4 @ =0x00003b90
- adds r5, r0, r1
-_080F2DB4:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080F2DB4
-_080F2DC8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2DD0: .4byte gUnknown_083DFEC4
-_080F2DD4: .4byte 0x00003b90
- thumb_func_end sub_80F2D6C
-
- thumb_func_start sub_80F2DD8
-sub_80F2DD8: @ 80F2DD8
- push {lr}
- movs r0, 0x7
- movs r1, 0x7
- bl CreateRegionMapCursor
- movs r0, 0x8
- movs r1, 0x8
- bl CreateRegionMapPlayerIcon
- bl sub_80FBF94
- pop {r0}
- bx r0
- thumb_func_end sub_80F2DD8
-
- thumb_func_start sub_80F2DF4
-sub_80F2DF4: @ 80F2DF4
- push {lr}
- bl FreeRegionMapIconResources
- pop {r0}
- bx r0
- thumb_func_end sub_80F2DF4
-
- thumb_func_start sub_80F2E00
-sub_80F2E00: @ 80F2E00
- ldr r1, _080F2E10 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F2E14 @ =0x00008766
- adds r1, r2
- ldrh r1, [r1]
- adds r1, 0x26
- strh r1, [r0, 0x20]
- bx lr
- .align 2, 0
-_080F2E10: .4byte gUnknown_083DFEC4
-_080F2E14: .4byte 0x00008766
- thumb_func_end sub_80F2E00
-
- thumb_func_start sub_80F2E18
-sub_80F2E18: @ 80F2E18
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _080F2EA8 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F2EAC @ =0x00008768
- adds r7, r4, r0
- ldr r1, [r7]
- mov r8, r1
- cmp r1, 0
- bne _080F2EFC
- ldr r0, _080F2EB0 @ =gUnknown_083E4568
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- mov r1, sp
- ldr r0, _080F2EB4 @ =gSpriteTemplate_83E4570
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldr r0, _080F2EB8 @ =gUnknown_083E4588
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- lsls r0, r3, 13
- ldr r1, _080F2EBC @ =0x0000d1e4
- adds r0, r1
- adds r0, r4, r0
- str r0, [sp, 0x20]
- lsls r0, r3, 7
- adds r0, r4, r0
- str r0, [sp, 0x18]
- add r0, sp, 0x18
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F2EC0 @ =0x0000d1dc
- adds r5, r4, r2
- strh r0, [r5]
- add r0, sp, 0x20
- bl LoadSpriteSheet
- ldr r1, _080F2EC4 @ =0x0000d1de
- adds r6, r4, r1
- strh r0, [r6]
- mov r0, sp
- movs r1, 0x26
- movs r2, 0x68
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _080F2EC8
- movs r0, 0x6
- bl FreeSpriteTilesByTag
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- mov r2, r8
- str r2, [r7]
- b _080F2F26
- .align 2, 0
-_080F2EA8: .4byte gUnknown_083DFEC4
-_080F2EAC: .4byte 0x00008768
-_080F2EB0: .4byte gUnknown_083E4568
-_080F2EB4: .4byte gSpriteTemplate_83E4570
-_080F2EB8: .4byte gUnknown_083E4588
-_080F2EBC: .4byte 0x0000d1e4
-_080F2EC0: .4byte 0x0000d1dc
-_080F2EC4: .4byte 0x0000d1de
-_080F2EC8:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F2EF0 @ =gSprites
- adds r0, r1
- str r0, [r7]
- ldr r0, _080F2EF4 @ =0x0000d1e0
- adds r1, r4, r0
- ldrh r0, [r6]
- lsls r0, 5
- ldr r2, _080F2EF8 @ =0x06010000
- adds r0, r2
- str r0, [r1]
- ldrh r0, [r5]
- lsls r0, 4
- movs r6, 0x80
- lsls r6, 1
- adds r0, r6
- strh r0, [r5]
- b _080F2F26
- .align 2, 0
-_080F2EF0: .4byte gSprites
-_080F2EF4: .4byte 0x0000d1e0
-_080F2EF8: .4byte 0x06010000
-_080F2EFC:
- lsls r0, r3, 13
- ldr r1, _080F2F34 @ =0x0000d1e4
- adds r0, r1
- adds r0, r4, r0
- ldr r2, _080F2F38 @ =0x0000d1e0
- adds r1, r4, r2
- ldr r2, [r1]
- ldr r1, _080F2F3C @ =0x040000d4
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _080F2F40 @ =0x80000400
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- lsls r0, r3, 7
- adds r0, r4, r0
- ldr r5, _080F2F44 @ =0x0000d1dc
- adds r1, r4, r5
- ldrh r1, [r1]
- movs r2, 0x20
- bl LoadPalette
-_080F2F26:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2F34: .4byte 0x0000d1e4
-_080F2F38: .4byte 0x0000d1e0
-_080F2F3C: .4byte 0x040000d4
-_080F2F40: .4byte 0x80000400
-_080F2F44: .4byte 0x0000d1dc
- thumb_func_end sub_80F2E18
-
- thumb_func_start sub_80F2F48
-sub_80F2F48: @ 80F2F48
- push {r4,lr}
- ldr r0, _080F2F74 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2F78 @ =0x00008768
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _080F2F6C
- bl DestroySprite
- movs r0, 0x6
- bl FreeSpriteTilesByTag
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- movs r0, 0
- str r0, [r4]
-_080F2F6C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2F74: .4byte gUnknown_083DFEC4
-_080F2F78: .4byte 0x00008768
- thumb_func_end sub_80F2F48
-
- thumb_func_start sub_80F2F7C
-sub_80F2F7C: @ 80F2F7C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80F2E18
- ldr r0, _080F2FA0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F2FA4 @ =0x0000ced0
- adds r2, r0, r1
- ldr r1, _080F2FA8 @ =0x00008768
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- ldr r0, _080F2FAC @ =sub_80F2FEC
- str r0, [r1, 0x1C]
- pop {r0}
- bx r0
- .align 2, 0
-_080F2FA0: .4byte gUnknown_083DFEC4
-_080F2FA4: .4byte 0x0000ced0
-_080F2FA8: .4byte 0x00008768
-_080F2FAC: .4byte sub_80F2FEC
- thumb_func_end sub_80F2F7C
-
- thumb_func_start sub_80F2FB0
-sub_80F2FB0: @ 80F2FB0
- push {r4,r5,lr}
- ldr r0, _080F2FE0 @ =gUnknown_083DFEC4
- ldr r5, [r0]
- ldr r0, _080F2FE4 @ =0x0000ced0
- adds r4, r5, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F2FDA
- bl DestroySprite
- movs r0, 0x6
- bl FreeSpriteTilesByTag
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- movs r1, 0
- str r1, [r4]
- ldr r2, _080F2FE8 @ =0x00008768
- adds r0, r5, r2
- str r1, [r0]
-_080F2FDA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2FE0: .4byte gUnknown_083DFEC4
-_080F2FE4: .4byte 0x0000ced0
-_080F2FE8: .4byte 0x00008768
- thumb_func_end sub_80F2FB0
-
- thumb_func_start sub_80F2FEC
-sub_80F2FEC: @ 80F2FEC
- ldr r1, _080F3000 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F3004 @ =0x0000d15a
- adds r1, r2
- ldrh r1, [r1]
- adds r1, 0x28
- strh r1, [r0, 0x20]
- movs r1, 0x68
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080F3000: .4byte gUnknown_083DFEC4
-_080F3004: .4byte 0x0000d15a
- thumb_func_end sub_80F2FEC
-
- thumb_func_start sub_80F3008
-sub_80F3008: @ 80F3008
- push {r4,r5,lr}
- sub sp, 0x20
- lsls r0, 24
- lsrs r2, r0, 24
- mov r1, sp
- ldr r0, _080F3060 @ =gUnknown_083E4590
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r0, _080F3064 @ =gUnknown_083E45A8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- cmp r2, 0x2
- bgt _080F3032
- cmp r2, 0x1
- blt _080F3032
- ldr r0, _080F3068 @ =gUnknown_08E9F988
- str r0, [sp, 0x18]
-_080F3032:
- mov r0, sp
- bl LoadSpriteSheets
- add r0, sp, 0x18
- bl LoadSpritePalette
- ldr r0, _080F306C @ =gSpriteTemplate_83E45B8
- movs r1, 0x5F
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _080F3078
- ldr r0, _080F3070 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3074 @ =0x000087cc
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _080F3120
- .align 2, 0
-_080F3060: .4byte gUnknown_083E4590
-_080F3064: .4byte gUnknown_083E45A8
-_080F3068: .4byte gUnknown_08E9F988
-_080F306C: .4byte gSpriteTemplate_83E45B8
-_080F3070: .4byte gUnknown_083DFEC4
-_080F3074: .4byte 0x000087cc
-_080F3078:
- ldr r0, _080F30F4 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r3, _080F30F8 @ =0x000087cc
- adds r2, r3
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F30FC @ =gSprites
- adds r0, r1
- str r0, [r2]
- movs r4, 0
- movs r5, 0
-_080F3090:
- lsls r2, r4, 7
- adds r2, 0x8
- lsls r2, 16
- asrs r2, 16
- ldr r0, _080F3100 @ =gSpriteTemplate_83E45F0
- movs r1, 0xA8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080F3108
- ldr r0, _080F30F4 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- lsls r0, r4, 2
- ldr r3, _080F3104 @ =0x000087d0
- adds r2, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F30FC @ =gSprites
- adds r3, r0, r1
- str r3, [r2]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- strh r5, [r3, 0x2E]
- strh r5, [r3, 0x30]
- movs r0, 0x1
- cmp r4, 0
- bne _080F30DE
- movs r1, 0x1
- negs r1, r1
- adds r0, r1, 0
-_080F30DE:
- strh r0, [r3, 0x32]
- strh r4, [r3, 0x34]
- movs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r1, r4, 24
- lsrs r1, 24
- adds r0, r3, 0
- bl StartSpriteAnim
- b _080F3116
- .align 2, 0
-_080F30F4: .4byte gUnknown_083DFEC4
-_080F30F8: .4byte 0x000087cc
-_080F30FC: .4byte gSprites
-_080F3100: .4byte gSpriteTemplate_83E45F0
-_080F3104: .4byte 0x000087d0
-_080F3108:
- ldr r0, _080F3128 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _080F312C @ =0x000087d0
- adds r0, r2
- adds r0, r1
- str r5, [r0]
-_080F3116:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080F3090
-_080F3120:
- add sp, 0x20
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3128: .4byte gUnknown_083DFEC4
-_080F312C: .4byte 0x000087d0
- thumb_func_end sub_80F3008
-
- thumb_func_start sub_80F3130
-sub_80F3130: @ 80F3130
- push {r4-r6,lr}
- ldr r0, _080F3184 @ =gUnknown_083DFEC4
- ldr r6, [r0]
- ldr r0, _080F3188 @ =0x000087cc
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3154
- bl DestroySprite
- movs r0, 0x9
- bl FreeSpriteTilesByTag
- movs r0, 0x9
- bl FreeSpritePaletteByTag
- movs r0, 0
- str r0, [r4]
-_080F3154:
- movs r5, 0
- ldr r0, _080F318C @ =0x000087d0
- adds r6, r0
-_080F315A:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F316C
- bl DestroySprite
- movs r0, 0
- str r0, [r4]
-_080F316C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _080F315A
- movs r0, 0xA
- bl FreeSpriteTilesByTag
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3184: .4byte gUnknown_083DFEC4
-_080F3188: .4byte 0x000087cc
-_080F318C: .4byte 0x000087d0
- thumb_func_end sub_80F3130
-
- thumb_func_start sub_80F3190
-sub_80F3190: @ 80F3190
- ldr r1, _080F31A4 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r2, _080F31A8 @ =0x0000876c
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r1, 4
- adds r1, 0x10
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080F31A4: .4byte gUnknown_083DFEC4
-_080F31A8: .4byte 0x0000876c
- thumb_func_end sub_80F3190
-
- thumb_func_start sub_80F31AC
-sub_80F31AC: @ 80F31AC
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _080F31E8 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F31EC @ =0x000087c9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F325C
- movs r4, 0x36
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _080F3226
- movs r5, 0x34
- ldrsh r0, [r3, r5]
- cmp r0, 0
- bne _080F31F4
- movs r2, 0
- ldr r4, _080F31F0 @ =0x00008770
- adds r0, r1, r4
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0
- bne _080F31DE
- movs r2, 0x1
-_080F31DE:
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- lsls r2, 2
- b _080F3214
- .align 2, 0
-_080F31E8: .4byte gUnknown_083DFEC4
-_080F31EC: .4byte 0x000087c9
-_080F31F0: .4byte 0x00008770
-_080F31F4:
- movs r4, 0
- ldr r2, _080F3250 @ =0x00008772
- adds r0, r1, r2
- ldr r5, _080F3254 @ =0x00008774
- adds r1, r5
- movs r5, 0
- ldrsh r2, [r0, r5]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r2, r0
- bne _080F320C
- movs r4, 0x1
-_080F320C:
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- lsls r2, r4, 2
-_080F3214:
- ldrb r1, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- mov r1, r12
- strb r0, [r1]
- movs r0, 0
- strh r0, [r3, 0x36]
-_080F3226:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080F325C
- strh r1, [r3, 0x2E]
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bgt _080F3258
- ldrh r0, [r3, 0x32]
- ldrh r2, [r3, 0x26]
- adds r0, r2
- strh r0, [r3, 0x26]
- b _080F325C
- .align 2, 0
-_080F3250: .4byte 0x00008772
-_080F3254: .4byte 0x00008774
-_080F3258:
- strh r1, [r3, 0x30]
- strh r1, [r3, 0x26]
-_080F325C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F31AC
-
- thumb_func_start sub_80F3264
-sub_80F3264: @ 80F3264
- push {lr}
- movs r1, 0
- ldr r0, _080F328C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r3, _080F3290 @ =0x000087d0
- adds r2, r0, r3
- movs r3, 0x1
-_080F3272:
- lsls r0, r1, 2
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F327E
- strh r3, [r0, 0x36]
-_080F327E:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x1
- bls _080F3272
- pop {r0}
- bx r0
- .align 2, 0
-_080F328C: .4byte gUnknown_083DFEC4
-_080F3290: .4byte 0x000087d0
- thumb_func_end sub_80F3264
-
- thumb_func_start sub_80F3294
-sub_80F3294: @ 80F3294
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080F32F4 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F32F8 @ =0x000087cc
- adds r0, r4, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r6, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r5, 0x5
- negs r5, r5
- adds r0, r5, 0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080F32FC @ =0x000087c9
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F331A
- cmp r6, 0x1
- bne _080F3308
- ldr r1, _080F3300 @ =0x000087d0
- adds r0, r4, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- ldr r2, _080F3304 @ =0x000087d4
- adds r0, r4, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r3
- strb r0, [r1]
- b _080F331A
- .align 2, 0
-_080F32F4: .4byte gUnknown_083DFEC4
-_080F32F8: .4byte 0x000087cc
-_080F32FC: .4byte 0x000087c9
-_080F3300: .4byte 0x000087d0
-_080F3304: .4byte 0x000087d4
-_080F3308:
- ldr r1, _080F3320 @ =0x000087d0
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x1
- strh r1, [r0, 0x36]
- ldr r2, _080F3324 @ =0x000087d4
- adds r0, r4, r2
- ldr r0, [r0]
- strh r1, [r0, 0x36]
-_080F331A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3320: .4byte 0x000087d0
-_080F3324: .4byte 0x000087d4
- thumb_func_end sub_80F3294
-
- thumb_func_start sub_80F3328
-sub_80F3328: @ 80F3328
- push {lr}
- adds r2, r0, 0
- ldr r0, _080F334C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3350 @ =0x000087dc
- adds r0, r1
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bne _080F3354
- adds r0, r2, 0
- movs r1, 0
- bl StartSpriteAnim
- b _080F335C
- .align 2, 0
-_080F334C: .4byte gUnknown_083DFEC4
-_080F3350: .4byte 0x000087dc
-_080F3354:
- adds r0, r2, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080F335C:
- pop {r0}
- bx r0
- thumb_func_end sub_80F3328
-
- thumb_func_start sub_80F3360
-sub_80F3360: @ 80F3360
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080F3384 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F3388 @ =0x000087dc
- adds r1, r0, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, _080F338C @ =0x000087da
- adds r0, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- subs r0, 0x1
- cmp r1, r0
- bne _080F3390
- movs r0, 0x4
- b _080F3392
- .align 2, 0
-_080F3384: .4byte gUnknown_083DFEC4
-_080F3388: .4byte 0x000087dc
-_080F338C: .4byte 0x000087da
-_080F3390:
- movs r0, 0x5
-_080F3392:
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- ldrb r2, [r4, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F3360
-
- thumb_func_start sub_80F33A8
-sub_80F33A8: @ 80F33A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x50
- mov r1, sp
- ldr r0, _080F3440 @ =gUnknown_083E4628
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldm r0!, {r3,r4}
- stm r1!, {r3,r4}
- add r4, sp, 0x20
- adds r1, r4, 0
- ldr r0, _080F3444 @ =gUnknown_083E4648
- ldm r0!, {r2,r5,r6}
- stm r1!, {r2,r5,r6}
- ldm r0!, {r3,r5,r6}
- stm r1!, {r3,r5,r6}
- add r5, sp, 0x38
- adds r1, r5, 0
- ldr r0, _080F3448 @ =gSpriteTemplate_83E4660
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- mov r0, sp
- bl LoadSpriteSheets
- adds r0, r4, 0
- bl LoadSpritePalettes
- movs r6, 0
- ldr r2, _080F344C @ =gUnknown_083DFEC4
- ldr r1, [r2]
- ldr r3, _080F3450 @ =0x000087da
- adds r0, r1, r3
- movs r4, 0
- ldrsh r0, [r0, r4]
- subs r0, 0x1
- adds r7, r5, 0
- cmp r6, r0
- bge _080F347A
- adds r5, r2, 0
- adds r0, r3, 0
- adds r0, r1
- mov r8, r0
-_080F3406:
- lsls r4, r6, 2
- adds r2, r4, r6
- lsls r2, 18
- movs r1, 0x80
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xE2
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F345C
- ldr r0, [r5]
- ldr r2, _080F3454 @ =0x000087e4
- adds r0, r2
- adds r0, r4
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- ldr r2, _080F3458 @ =gSprites
- adds r1, r2
- str r1, [r0]
- strh r6, [r1, 0x2E]
- b _080F3468
- .align 2, 0
-_080F3440: .4byte gUnknown_083E4628
-_080F3444: .4byte gUnknown_083E4648
-_080F3448: .4byte gSpriteTemplate_83E4660
-_080F344C: .4byte gUnknown_083DFEC4
-_080F3450: .4byte 0x000087da
-_080F3454: .4byte 0x000087e4
-_080F3458: .4byte gSprites
-_080F345C:
- ldr r0, [r5]
- ldr r3, _080F34C8 @ =0x000087e4
- adds r0, r3
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_080F3468:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- mov r4, r8
- movs r1, 0
- ldrsh r0, [r4, r1]
- subs r0, 0x1
- cmp r6, r0
- blt _080F3406
-_080F347A:
- movs r0, 0x4
- strh r0, [r7]
- ldr r0, _080F34CC @ =SpriteCallbackDummy
- str r0, [r7, 0x14]
- cmp r6, 0x5
- bhi _080F34EE
- ldr r5, _080F34D0 @ =gUnknown_083DFEC4
-_080F3488:
- lsls r4, r6, 2
- adds r2, r4, r6
- lsls r2, 18
- movs r3, 0x80
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xE6
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F34D8
- ldr r2, [r5]
- ldr r0, _080F34C8 @ =0x000087e4
- adds r2, r0
- adds r2, r4
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- ldr r0, _080F34D4 @ =gSprites
- adds r1, r0
- str r1, [r2]
- ldrb r2, [r1, 0x3]
- movs r0, 0x3F
- ands r0, r2
- strb r0, [r1, 0x3]
- b _080F34E4
- .align 2, 0
-_080F34C8: .4byte 0x000087e4
-_080F34CC: .4byte SpriteCallbackDummy
-_080F34D0: .4byte gUnknown_083DFEC4
-_080F34D4: .4byte gSprites
-_080F34D8:
- ldr r0, [r5]
- ldr r1, _080F3548 @ =0x000087e4
- adds r0, r1
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_080F34E4:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080F3488
-_080F34EE:
- movs r0, 0x5
- strh r0, [r7]
- ldr r0, _080F354C @ =sub_80F3360
- str r0, [r7, 0x14]
- lsls r5, r6, 2
- adds r2, r5, r6
- lsls r2, 18
- movs r3, 0x80
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xDE
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F3558
- ldr r0, _080F3550 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r6, _080F3548 @ =0x000087e4
- adds r4, r6
- adds r4, r5
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- ldr r0, _080F3554 @ =gSprites
- adds r1, r0
- str r1, [r4]
- ldrb r3, [r1, 0x1]
- movs r2, 0x3F
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x40
- orrs r0, r3
- strb r0, [r1, 0x1]
- ldr r1, [r4]
- ldrb r0, [r1, 0x3]
- ands r2, r0
- movs r0, 0x80
- orrs r2, r0
- strb r2, [r1, 0x3]
- b _080F3566
- .align 2, 0
-_080F3548: .4byte 0x000087e4
-_080F354C: .4byte sub_80F3360
-_080F3550: .4byte gUnknown_083DFEC4
-_080F3554: .4byte gSprites
-_080F3558:
- ldr r0, _080F3574 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3578 @ =0x000087e4
- adds r0, r1
- adds r0, r5
- movs r1, 0
- str r1, [r0]
-_080F3566:
- add sp, 0x50
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3574: .4byte gUnknown_083DFEC4
-_080F3578: .4byte 0x000087e4
- thumb_func_end sub_80F33A8
-
- thumb_func_start sub_80F357C
-sub_80F357C: @ 80F357C
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _080F35AC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F35B0 @ =0x000087e4
- adds r6, r0, r1
-_080F3588:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F359A
- bl DestroySprite
- movs r0, 0
- str r0, [r4]
-_080F359A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x6
- bls _080F3588
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F35AC: .4byte gUnknown_083DFEC4
-_080F35B0: .4byte 0x000087e4
- thumb_func_end sub_80F357C
-
- thumb_func_start sub_80F35B4
-sub_80F35B4: @ 80F35B4
- push {r4,lr}
- ldr r0, _080F35FC @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F3600 @ =0x000076b0
- adds r0, r4, r1
- movs r1, 0x1C
- strh r1, [r0]
- ldr r1, _080F3604 @ =0x000076b2
- adds r2, r4, r1
- movs r1, 0x13
- strh r1, [r2]
- bl sub_80F727C
- bl sub_80F7404
- ldr r2, _080F3608 @ =gUnknown_083E4678
- movs r0, 0x1B
- movs r1, 0x15
- bl sub_80F7920
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0xC0
- strh r1, [r0, 0x20]
- movs r1, 0x20
- strh r1, [r0, 0x22]
- ldr r1, _080F360C @ =sub_80F363C
- str r1, [r0, 0x1C]
- ldr r1, _080F3610 @ =0x000076ac
- adds r4, r1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F35FC: .4byte gUnknown_083DFEC4
-_080F3600: .4byte 0x000076b0
-_080F3604: .4byte 0x000076b2
-_080F3608: .4byte gUnknown_083E4678
-_080F360C: .4byte sub_80F363C
-_080F3610: .4byte 0x000076ac
- thumb_func_end sub_80F35B4
-
- thumb_func_start sub_80F3614
-sub_80F3614: @ 80F3614
- push {lr}
- ldr r0, _080F3634 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3638 @ =0x000076ac
- adds r0, r1
- ldr r0, [r0]
- bl DestroySprite
- movs r0, 0x1B
- bl FreeSpriteTilesByTag
- movs r0, 0x15
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- .align 2, 0
-_080F3634: .4byte gUnknown_083DFEC4
-_080F3638: .4byte 0x000076ac
- thumb_func_end sub_80F3614
-
- thumb_func_start sub_80F363C
-sub_80F363C: @ 80F363C
- push {lr}
- ldr r1, _080F365C @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r3, _080F3660 @ =0x00008fe9
- adds r2, r1, r3
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- ldr r3, _080F3664 @ =0x00008934
- adds r1, r3
- adds r1, r2
- ldrb r1, [r1]
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .align 2, 0
-_080F365C: .4byte gUnknown_083DFEC4
-_080F3660: .4byte 0x00008fe9
-_080F3664: .4byte 0x00008934
- thumb_func_end sub_80F363C
-
- thumb_func_start sub_80F3668
-sub_80F3668: @ 80F3668
- push {lr}
- ldr r0, _080F368C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F3690 @ =0x00008fe9
- adds r1, r0, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- ldr r2, _080F3694 @ =0x00008934
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0xB0
- movs r2, 0x20
- bl sub_80F7418
- pop {r0}
- bx r0
- .align 2, 0
-_080F368C: .4byte gUnknown_083DFEC4
-_080F3690: .4byte 0x00008fe9
-_080F3694: .4byte 0x00008934
- thumb_func_end sub_80F3668
-
- thumb_func_start sub_80F3698
-sub_80F3698: @ 80F3698
- push {r4,lr}
- ldr r0, _080F36DC @ =gUnknown_083DFEC4
- ldr r3, [r0]
- ldr r1, _080F36E0 @ =0x000087dc
- adds r0, r3, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r1, 2
- ldr r4, _080F36E4 @ =0x0000893c
- adds r1, r4
- adds r1, r3, r1
- ldr r2, _080F36E8 @ =0x00008fe9
- adds r0, r3, r2
- movs r2, 0
- ldrsb r2, [r0, r2]
- subs r4, 0x8
- adds r0, r3, r4
- adds r0, r2
- ldr r2, _080F36EC @ =0x000076b4
- adds r3, r2
- ldrb r2, [r3]
- strb r2, [r0]
- ldrb r0, [r1, 0x1]
- ldr r1, [r1]
- lsls r1, 11
- lsrs r1, 27
- ldrb r2, [r3]
- bl sub_80F4548
- bl sub_80F7470
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F36DC: .4byte gUnknown_083DFEC4
-_080F36E0: .4byte 0x000087dc
-_080F36E4: .4byte 0x0000893c
-_080F36E8: .4byte 0x00008fe9
-_080F36EC: .4byte 0x000076b4
- thumb_func_end sub_80F3698
-
- thumb_func_start sub_80F36F0
-sub_80F36F0: @ 80F36F0
- push {lr}
- ldr r0, _080F3718 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F371C @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F3720 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F3712
-_080F3708:
- bl sub_80F3724
- lsls r0, 24
- cmp r0, 0
- bne _080F3708
-_080F3712:
- pop {r0}
- bx r0
- .align 2, 0
-_080F3718: .4byte gUnknown_083DFEC4
-_080F371C: .4byte 0x00000306
-_080F3720: .4byte 0x00006dac
- thumb_func_end sub_80F36F0
-
- thumb_func_start sub_80F3724
-sub_80F3724: @ 80F3724
- push {r4,lr}
- ldr r0, _080F3740 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F3744 @ =0x00000306
- adds r4, r1, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _080F3764
- cmp r0, 0x1
- bgt _080F3748
- cmp r0, 0
- beq _080F374E
- b _080F377A
- .align 2, 0
-_080F3740: .4byte gUnknown_083DFEC4
-_080F3744: .4byte 0x00000306
-_080F3748:
- cmp r0, 0x2
- beq _080F376E
- b _080F377A
-_080F374E:
- ldr r0, _080F375C @ =gUnknown_083E3D00
- ldr r2, _080F3760 @ =0x0000984c
- adds r1, r2
- bl LZ77UnCompWram
- b _080F377E
- .align 2, 0
-_080F375C: .4byte gUnknown_083E3D00
-_080F3760: .4byte 0x0000984c
-_080F3764:
- bl sub_80F379C
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080F376E:
- bl sub_80F37D0
- lsls r0, 24
- cmp r0, 0
- beq _080F377E
- b _080F378C
-_080F377A:
- movs r0, 0
- b _080F378E
-_080F377E:
- ldr r0, _080F3794 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F3798 @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F378C:
- movs r0, 0x1
-_080F378E:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F3794: .4byte gUnknown_083DFEC4
-_080F3798: .4byte 0x00000306
- thumb_func_end sub_80F3724
-
- thumb_func_start sub_80F379C
-sub_80F379C: @ 80F379C
- push {lr}
- ldr r0, _080F37C4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F37C8 @ =0x0000bc93
- adds r2, r0, r1
- movs r1, 0
- strb r1, [r2]
- ldr r1, _080F37CC @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F37BE
-_080F37B4:
- bl sub_80F37D0
- lsls r0, 24
- cmp r0, 0
- bne _080F37B4
-_080F37BE:
- pop {r0}
- bx r0
- .align 2, 0
-_080F37C4: .4byte gUnknown_083DFEC4
-_080F37C8: .4byte 0x0000bc93
-_080F37CC: .4byte 0x00006dac
- thumb_func_end sub_80F379C
-
- thumb_func_start sub_80F37D0
-sub_80F37D0: @ 80F37D0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _080F3898 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F389C @ =0x0000bc93
- adds r1, r2
- ldrb r1, [r1]
- adds r2, r0, 0
- cmp r1, 0xB
- bhi _080F38A8
- movs r3, 0
- mov r8, r3
- movs r7, 0xF
- mov r9, r7
-_080F37F0:
- ldr r2, [r2]
- ldr r1, _080F389C @ =0x0000bc93
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r0, r1, 8
- ldr r3, _080F38A0 @ =0x0000984c
- adds r0, r3
- adds r4, r2, r0
- lsls r1, 9
- ldr r7, _080F38A4 @ =0x0000a44c
- adds r1, r7
- adds r5, r2, r1
- movs r6, 0
-_080F380A:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x10
- bl CpuFastSet
- adds r5, 0x40
- adds r4, 0x20
- movs r1, 0
- adds r6, 0x1
- mov r12, r6
-_080F381E:
- movs r0, 0
- adds r6, r1, 0x1
-_080F3822:
- adds r4, 0x4
- movs r2, 0
- adds r3, r0, 0x1
-_080F3828:
- subs r4, 0x1
- ldrb r0, [r4]
- lsls r1, r0, 4
- lsrs r0, 4
- mov r7, r9
- ands r0, r7
- orrs r1, r0
- strb r1, [r5]
- adds r5, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080F3828
- adds r4, 0x4
- lsls r0, r3, 24
- lsrs r0, 24
- cmp r0, 0x7
- bls _080F3822
- subs r4, 0x40
- lsls r0, r6, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bls _080F381E
- adds r4, 0x60
- mov r1, r12
- lsls r0, r1, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _080F380A
- ldr r2, _080F3898 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- ldr r7, _080F389C @ =0x0000bc93
- adds r1, r3, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- bhi _080F38A8
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0x1
- bls _080F37F0
- adds r1, r7, 0
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0xB
- bhi _080F38A8
- movs r0, 0x1
- b _080F38AA
- .align 2, 0
-_080F3898: .4byte gUnknown_083DFEC4
-_080F389C: .4byte 0x0000bc93
-_080F38A0: .4byte 0x0000984c
-_080F38A4: .4byte 0x0000a44c
-_080F38A8:
- movs r0, 0
-_080F38AA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F37D0
-
- thumb_func_start sub_80F38B8
-sub_80F38B8: @ 80F38B8
- push {lr}
- ldr r0, _080F38E0 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F38E4 @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F38E8 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F38DA
-_080F38D0:
- bl sub_80F38EC
- lsls r0, 24
- cmp r0, 0
- bne _080F38D0
-_080F38DA:
- pop {r0}
- bx r0
- .align 2, 0
-_080F38E0: .4byte gUnknown_083DFEC4
-_080F38E4: .4byte 0x00000306
-_080F38E8: .4byte 0x00006dac
- thumb_func_end sub_80F38B8
-
- thumb_func_start sub_80F38EC
-sub_80F38EC: @ 80F38EC
- push {r4,lr}
- ldr r0, _080F3908 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080F390C @ =0x00000306
- adds r4, r2, r0
- ldrh r1, [r4]
- cmp r1, 0x1
- beq _080F3930
- cmp r1, 0x1
- bgt _080F3910
- cmp r1, 0
- beq _080F391A
- b _080F394E
- .align 2, 0
-_080F3908: .4byte gUnknown_083DFEC4
-_080F390C: .4byte 0x00000306
-_080F3910:
- cmp r1, 0x2
- beq _080F3938
- cmp r1, 0x3
- beq _080F3942
- b _080F394E
-_080F391A:
- ldr r3, _080F3928 @ =0x00009348
- adds r0, r2, r3
- str r1, [r0]
- ldr r3, _080F392C @ =0x0000bc92
- adds r0, r2, r3
- strb r1, [r0]
- b _080F3952
- .align 2, 0
-_080F3928: .4byte 0x00009348
-_080F392C: .4byte 0x0000bc92
-_080F3930:
- movs r0, 0
- bl sub_80F2E18
- b _080F3952
-_080F3938:
- bl sub_80F3970
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_080F3942:
- bl sub_80F39A4
- lsls r0, 24
- cmp r0, 0
- beq _080F3952
- b _080F3960
-_080F394E:
- movs r0, 0
- b _080F3962
-_080F3952:
- ldr r0, _080F3968 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F396C @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F3960:
- movs r0, 0x1
-_080F3962:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F3968: .4byte gUnknown_083DFEC4
-_080F396C: .4byte 0x00000306
- thumb_func_end sub_80F38EC
-
- thumb_func_start sub_80F3970
-sub_80F3970: @ 80F3970
- push {lr}
- ldr r0, _080F3998 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F399C @ =0x0000bc93
- adds r2, r0, r1
- movs r1, 0
- strb r1, [r2]
- ldr r1, _080F39A0 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F3992
-_080F3988:
- bl sub_80F39A4
- lsls r0, 24
- cmp r0, 0
- bne _080F3988
-_080F3992:
- pop {r0}
- bx r0
- .align 2, 0
-_080F3998: .4byte gUnknown_083DFEC4
-_080F399C: .4byte 0x0000bc93
-_080F39A0: .4byte 0x00006dac
- thumb_func_end sub_80F3970
-
- thumb_func_start sub_80F39A4
-sub_80F39A4: @ 80F39A4
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r0, _080F3A18 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F3A1C @ =0x0000bc93
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xB
- bhi _080F3A30
- ldrb r0, [r4]
- lsls r0, 9
- ldr r2, _080F3A20 @ =0x0000a44c
- adds r0, r2
- adds r0, r1, r0
- str r0, [sp]
- ldr r5, _080F3A24 @ =0xffff0000
- ldr r2, [sp, 0x4]
- ands r2, r5
- movs r0, 0x80
- lsls r0, 2
- orrs r2, r0
- str r2, [sp, 0x4]
- ldrb r1, [r4]
- adds r1, 0xB
- lsls r1, 16
- ldr r0, _080F3A28 @ =0x0000ffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldrb r0, [r4]
- cmp r0, 0x4
- bhi _080F3A04
- lsls r0, 5
- ldr r1, _080F3A2C @ =gUnknown_083E3C60
- adds r0, r1
- str r0, [sp, 0x8]
- ldrb r2, [r4]
- adds r2, 0xA
- add r0, sp, 0x8
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_080F3A04:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- bhi _080F3A30
- movs r0, 0x1
- b _080F3A32
- .align 2, 0
-_080F3A18: .4byte gUnknown_083DFEC4
-_080F3A1C: .4byte 0x0000bc93
-_080F3A20: .4byte 0x0000a44c
-_080F3A24: .4byte 0xffff0000
-_080F3A28: .4byte 0x0000ffff
-_080F3A2C: .4byte gUnknown_083E3C60
-_080F3A30:
- movs r0, 0
-_080F3A32:
- add sp, 0x10
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F39A4
-
- thumb_func_start sub_80F3A3C
-sub_80F3A3C: @ 80F3A3C
- push {r4-r7,lr}
- sub sp, 0x18
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- cmp r4, 0x2
- bhi _080F3A60
- lsls r0, r4, 3
- adds r0, r4
- adds r0, r5, r0
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r2, _080F3A5C @ =gUnknown_083DFEC4
- b _080F3A78
- .align 2, 0
-_080F3A5C: .4byte gUnknown_083DFEC4
-_080F3A60:
- ldr r2, _080F3AD0 @ =gUnknown_083DFEC4
- ldr r1, [r2]
- ldr r3, _080F3AD4 @ =0x0000bc8e
- adds r0, r1, r3
- ldrb r0, [r0]
- ldr r6, _080F3AD8 @ =0x0000bc8f
- adds r1, r6
- ldrb r1, [r1]
- subs r0, r1
- adds r0, r5, r0
- lsls r0, 16
- lsrs r1, r0, 16
-_080F3A78:
- ldr r0, [r2]
- ldr r7, _080F3ADC @ =0x0000bc4c
- adds r0, r7
- adds r0, r1
- ldrb r2, [r0]
- mov r1, sp
- ldr r0, _080F3AE0 @ =gSpriteTemplate_83E476C
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- mov r3, sp
- ldr r1, _080F3AE4 @ =gUnknown_083E4698
- lsls r2, 2
- adds r0, r2, r1
- ldrh r0, [r0]
- adds r0, 0xB
- strh r0, [r3]
- adds r1, 0x2
- adds r2, r1
- ldrh r0, [r2]
- adds r0, 0xA
- strh r0, [r3, 0x2]
- lsls r1, r5, 20
- movs r0, 0xC0
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- lsls r2, r4, 20
- movs r3, 0xA0
- lsls r3, 14
- adds r2, r3
- asrs r2, 16
- mov r0, sp
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _080F3AE8
- movs r0, 0
- b _080F3AF2
- .align 2, 0
-_080F3AD0: .4byte gUnknown_083DFEC4
-_080F3AD4: .4byte 0x0000bc8e
-_080F3AD8: .4byte 0x0000bc8f
-_080F3ADC: .4byte 0x0000bc4c
-_080F3AE0: .4byte gSpriteTemplate_83E476C
-_080F3AE4: .4byte gUnknown_083E4698
-_080F3AE8:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F3AFC @ =gSprites
- adds r0, r1
-_080F3AF2:
- add sp, 0x18
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080F3AFC: .4byte gSprites
- thumb_func_end sub_80F3A3C
-
- thumb_func_start sub_80F3B00
-sub_80F3B00: @ 80F3B00
- push {r4,lr}
- ldr r0, _080F3B34 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F3B38 @ =0x0000bc90
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _080F3B3C @ =0x0000bc91
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F3A3C
- adds r2, r0, 0
- ldr r1, _080F3B40 @ =0x00009348
- adds r0, r4, r1
- str r2, [r0]
- cmp r2, 0
- beq _080F3B48
- adds r0, r2, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r2, _080F3B44 @ =0x0000bc92
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- b _080F3B4E
- .align 2, 0
-_080F3B34: .4byte gUnknown_083DFEC4
-_080F3B38: .4byte 0x0000bc90
-_080F3B3C: .4byte 0x0000bc91
-_080F3B40: .4byte 0x00009348
-_080F3B44: .4byte 0x0000bc92
-_080F3B48:
- ldr r1, _080F3B54 @ =0x0000bc92
- adds r0, r4, r1
- strb r2, [r0]
-_080F3B4E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3B54: .4byte 0x0000bc92
- thumb_func_end sub_80F3B00
-
- thumb_func_start sub_80F3B58
-sub_80F3B58: @ 80F3B58
- push {lr}
- ldr r0, _080F3B6C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F3B70 @ =0x0000bc92
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0
- bne _080F3B74
- movs r0, 0
- b _080F3B8A
- .align 2, 0
-_080F3B6C: .4byte gUnknown_083DFEC4
-_080F3B70: .4byte 0x0000bc92
-_080F3B74:
- ldr r3, _080F3B90 @ =0x00009348
- adds r0, r1, r3
- ldr r0, [r0]
- adds r0, 0x3F
- ldrb r0, [r0]
- lsrs r0, 5
- movs r1, 0x1
- eors r0, r1
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r2]
-_080F3B8A:
- pop {r1}
- bx r1
- .align 2, 0
-_080F3B90: .4byte 0x00009348
- thumb_func_end sub_80F3B58
-
- thumb_func_start sub_80F3B94
-sub_80F3B94: @ 80F3B94
- push {r4,lr}
- ldr r0, _080F3BB8 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F3BBC @ =0x00009348
- adds r0, r4, r1
- ldr r2, [r0]
- cmp r2, 0
- beq _080F3BC4
- adds r0, r2, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080F3BC0 @ =0x0000bc92
- adds r1, r4, r0
- movs r0, 0x1
- strb r0, [r1]
- b _080F3BCA
- .align 2, 0
-_080F3BB8: .4byte gUnknown_083DFEC4
-_080F3BBC: .4byte 0x00009348
-_080F3BC0: .4byte 0x0000bc92
-_080F3BC4:
- ldr r1, _080F3BD0 @ =0x0000bc92
- adds r0, r4, r1
- strb r2, [r0]
-_080F3BCA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3BD0: .4byte 0x0000bc92
- thumb_func_end sub_80F3B94
-
- thumb_func_start sub_80F3BD4
-sub_80F3BD4: @ 80F3BD4
- push {r4-r6,lr}
- ldr r0, _080F3C18 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F3C1C @ =0x0000bc92
- adds r5, r1, r0
- ldrb r0, [r5]
- cmp r0, 0
- beq _080F3C24
- ldr r0, _080F3C20 @ =0x00009348
- adds r4, r1, r0
- ldr r0, [r4]
- adds r0, 0x3F
- ldrb r0, [r0]
- lsrs r0, 5
- movs r1, 0x1
- eors r0, r1
- ands r0, r1
- strb r0, [r5]
- adds r6, r0, 0
- cmp r6, 0
- bne _080F3C12
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r0, [r4]
- bl DestroySprite
- str r6, [r4]
-_080F3C12:
- ldrb r0, [r5]
- b _080F3C26
- .align 2, 0
-_080F3C18: .4byte gUnknown_083DFEC4
-_080F3C1C: .4byte 0x0000bc92
-_080F3C20: .4byte 0x00009348
-_080F3C24:
- movs r0, 0
-_080F3C26:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F3BD4
-
- thumb_func_start sub_80F3C2C
-sub_80F3C2C: @ 80F3C2C
- push {r4,lr}
- ldr r0, _080F3C8C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3C90 @ =0x00009348
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3C50
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r0, [r4]
- bl DestroySprite
- movs r0, 0
- str r0, [r4]
-_080F3C50:
- movs r4, 0
-_080F3C52:
- adds r0, r4, 0
- adds r0, 0xB
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xB
- bls _080F3C52
- movs r4, 0
-_080F3C6A:
- adds r0, r4, 0
- adds r0, 0xA
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _080F3C6A
- bl sub_80F2F48
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3C8C: .4byte gUnknown_083DFEC4
-_080F3C90: .4byte 0x00009348
- thumb_func_end sub_80F3C2C
-
- thumb_func_start sub_80F3C94
-sub_80F3C94: @ 80F3C94
- push {lr}
- sub sp, 0x10
- ldr r0, _080F3CDC @ =gUnknown_083E4784
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, _080F3CE0 @ =gUnknown_083E478C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- mov r0, sp
- bl LoadSpriteSheet
- add r0, sp, 0x8
- bl LoadSpritePalette
- movs r1, 0
- ldr r0, _080F3CE4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- movs r3, 0x88
- lsls r3, 8
- adds r2, r0, r3
- movs r3, 0
-_080F3CC6:
- lsls r0, r1, 2
- adds r0, r2, r0
- str r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9
- bls _080F3CC6
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_080F3CDC: .4byte gUnknown_083E4784
-_080F3CE0: .4byte gUnknown_083E478C
-_080F3CE4: .4byte gUnknown_083DFEC4
- thumb_func_end sub_80F3C94
-
- thumb_func_start sub_80F3CE8
-sub_80F3CE8: @ 80F3CE8
- push {lr}
- bl move_anim_execute
- movs r0, 0x17
- bl FreeSpriteTilesByTag
- movs r0, 0xF
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- thumb_func_end sub_80F3CE8
-
- thumb_func_start sub_80F3D00
-sub_80F3D00: @ 80F3D00
- push {r4,r5,lr}
- ldr r0, _080F3D34 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F3D38 @ =0x000087dc
- adds r0, r2, r1
- movs r3, 0
- ldrsh r0, [r0, r3]
- lsls r0, 2
- ldr r1, _080F3D3C @ =0x0000893c
- adds r0, r1
- adds r0, r2, r0
- ldrb r1, [r0, 0x3]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080F3D94
- ldr r3, _080F3D40 @ =0x00008fe9
- adds r0, r2, r3
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldr r3, _080F3D44 @ =0x00008931
- adds r0, r2, r3
- adds r0, r1
- ldrb r5, [r0]
- movs r4, 0
- b _080F3D86
- .align 2, 0
-_080F3D34: .4byte gUnknown_083DFEC4
-_080F3D38: .4byte 0x000087dc
-_080F3D3C: .4byte 0x0000893c
-_080F3D40: .4byte 0x00008fe9
-_080F3D44: .4byte 0x00008931
-_080F3D48:
- ldr r0, _080F3D9C @ =gSpriteTemplate_83E4800
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080F3D8C
- ldr r0, _080F3DA0 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- lsls r0, r4, 2
- movs r3, 0x88
- lsls r3, 8
- adds r2, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F3DA4 @ =gSprites
- adds r0, r1
- str r0, [r2]
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080F3D86:
- adds r0, r5, 0x1
- cmp r4, r0
- blt _080F3D48
-_080F3D8C:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80F3F20
-_080F3D94:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3D9C: .4byte gSpriteTemplate_83E4800
-_080F3DA0: .4byte gUnknown_083DFEC4
-_080F3DA4: .4byte gSprites
- thumb_func_end sub_80F3D00
-
- thumb_func_start move_anim_execute
-move_anim_execute: @ 80F3DA8
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _080F3DD8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- movs r1, 0x88
- lsls r1, 8
- adds r6, r0, r1
-_080F3DB6:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3DD2
- bl DestroySprite
- movs r0, 0
- str r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9
- bls _080F3DB6
-_080F3DD2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3DD8: .4byte gUnknown_083DFEC4
- thumb_func_end move_anim_execute
-
- thumb_func_start sub_80F3DDC
-sub_80F3DDC: @ 80F3DDC
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080F3DFE
- movs r0, 0
- strh r0, [r1, 0x30]
- ldrh r0, [r1, 0x32]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80F3F20
-_080F3DFE:
- pop {r0}
- bx r0
- thumb_func_end sub_80F3DDC
-
- thumb_func_start sub_80F3E04
-sub_80F3E04: @ 80F3E04
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080F3E1C
- movs r0, 0
- strh r0, [r2, 0x30]
- ldr r0, _080F3E20 @ =sub_80F3DDC
- str r0, [r2, 0x1C]
-_080F3E1C:
- pop {r0}
- bx r0
- .align 2, 0
-_080F3E20: .4byte sub_80F3DDC
- thumb_func_end sub_80F3E04
-
- thumb_func_start sub_80F3E24
-sub_80F3E24: @ 80F3E24
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _080F3E64 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F3E68 @ =0x00008768
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3E70
- ldrh r1, [r0, 0x24]
- ldrh r0, [r0, 0x20]
- adds r1, r0
- ldr r2, _080F3E6C @ =gUnknown_083E4794
- movs r5, 0x2E
- ldrsh r0, [r3, r5]
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0]
- adds r0, r1
- strh r0, [r3, 0x20]
- ldr r0, [r4]
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- movs r4, 0x2E
- ldrsh r0, [r3, r4]
- lsls r0, 2
- adds r2, 0x2
- adds r0, r2
- ldrh r0, [r0]
- adds r0, r1
- b _080F3E8E
- .align 2, 0
-_080F3E64: .4byte gUnknown_083DFEC4
-_080F3E68: .4byte 0x00008768
-_080F3E6C: .4byte gUnknown_083E4794
-_080F3E70:
- ldr r1, _080F3E98 @ =gUnknown_083E4794
- movs r5, 0x2E
- ldrsh r0, [r3, r5]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0]
- adds r0, 0x28
- strh r0, [r3, 0x20]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- lsls r0, 2
- adds r1, 0x2
- adds r0, r1
- ldrh r0, [r0]
- adds r0, 0x68
-_080F3E8E:
- strh r0, [r3, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3E98: .4byte gUnknown_083E4794
- thumb_func_end sub_80F3E24
-
- thumb_func_start sub_80F3E9C
-sub_80F3E9C: @ 80F3E9C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080F3ECA
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080F3F14
- adds r0, r4, 0
- movs r1, 0
- bl SeekSpriteAnim
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080F3ECA:
- adds r0, r4, 0
- bl sub_80F3E24
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080F3F14
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080F3F10
- cmp r1, 0x9
- bne _080F3F08
- bl sub_80F3FAC
- ldr r0, _080F3F04 @ =sub_80F3E04
- b _080F3F12
- .align 2, 0
-_080F3F04: .4byte sub_80F3E04
-_080F3F08:
- ldr r0, _080F3F0C @ =sub_80F3DDC
- b _080F3F12
- .align 2, 0
-_080F3F0C: .4byte sub_80F3DDC
-_080F3F10:
- ldr r0, _080F3F1C @ =SpriteCallbackDummy
-_080F3F12:
- str r0, [r4, 0x1C]
-_080F3F14:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3F1C: .4byte SpriteCallbackDummy
- thumb_func_end sub_80F3E9C
-
- thumb_func_start sub_80F3F20
-sub_80F3F20: @ 80F3F20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r5, 0
- ldr r0, _080F3F6C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- movs r1, 0x88
- lsls r1, 8
- adds r7, r0, r1
-_080F3F3C:
- lsls r0, r5, 2
- adds r4, r7, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3F92
- strh r5, [r0, 0x2E]
- ldr r1, [r4]
- lsls r0, r5, 4
- adds r0, 0x1
- strh r0, [r1, 0x30]
- ldr r0, [r4]
- strh r6, [r0, 0x32]
- ldr r0, [r4]
- strh r5, [r0, 0x34]
- mov r3, r8
- cmp r3, 0
- beq _080F3F62
- cmp r6, 0x9
- beq _080F3F74
-_080F3F62:
- ldr r1, [r4]
- ldr r0, _080F3F70 @ =sub_80F3E9C
- str r0, [r1, 0x1C]
- b _080F3F92
- .align 2, 0
-_080F3F6C: .4byte gUnknown_083DFEC4
-_080F3F70: .4byte sub_80F3E9C
-_080F3F74:
- ldr r0, [r4]
- bl sub_80F3E24
- bl sub_80F3FAC
- ldr r2, [r4]
- ldr r0, _080F3FA8 @ =sub_80F3E04
- str r0, [r2, 0x1C]
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r3, 0x5
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- strb r0, [r2]
-_080F3F92:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9
- bls _080F3F3C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3FA8: .4byte sub_80F3E04
- thumb_func_end sub_80F3F20
-
- thumb_func_start sub_80F3FAC
-sub_80F3FAC: @ 80F3FAC
- push {r4-r7,lr}
- movs r5, 0
- ldr r0, _080F3FEC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- movs r1, 0x88
- lsls r1, 8
- adds r6, r0, r1
- movs r0, 0x5
- negs r0, r0
- adds r7, r0, 0
-_080F3FC0:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _080F3FDA
- movs r1, 0
- bl SeekSpriteAnim
- ldr r1, [r4]
- adds r1, 0x3E
- ldrb r0, [r1]
- ands r0, r7
- strb r0, [r1]
-_080F3FDA:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9
- bls _080F3FC0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3FEC: .4byte gUnknown_083DFEC4
- thumb_func_end sub_80F3FAC
-
- thumb_func_start sub_80F3FF0
-sub_80F3FF0: @ 80F3FF0
- push {lr}
- ldr r0, _080F4018 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F401C @ =0x00000306
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r1, _080F4020 @ =0x00006dac
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F4012
-_080F4008:
- bl sub_80F4024
- lsls r0, 24
- cmp r0, 0
- bne _080F4008
-_080F4012:
- pop {r0}
- bx r0
- .align 2, 0
-_080F4018: .4byte gUnknown_083DFEC4
-_080F401C: .4byte 0x00000306
-_080F4020: .4byte 0x00006dac
- thumb_func_end sub_80F3FF0
-
- thumb_func_start sub_80F4024
-sub_80F4024: @ 80F4024
- push {r4,lr}
- sub sp, 0x10
- ldr r0, _080F4040 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F4044 @ =0x00000306
- adds r0, r4, r1
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080F4068
- cmp r0, 0x1
- bgt _080F4048
- cmp r0, 0
- beq _080F4052
- b _080F4106
- .align 2, 0
-_080F4040: .4byte gUnknown_083DFEC4
-_080F4044: .4byte 0x00000306
-_080F4048:
- cmp r0, 0x2
- beq _080F4084
- cmp r0, 0x3
- beq _080F40B8
- b _080F4106
-_080F4052:
- ldr r0, _080F4060 @ =gUnknown_083E329C
- ldr r2, _080F4064 @ =0x000131e4
- adds r1, r4, r2
- bl LZ77UnCompWram
- b _080F4118
- .align 2, 0
-_080F4060: .4byte gUnknown_083E329C
-_080F4064: .4byte 0x000131e4
-_080F4068:
- ldr r1, _080F407C @ =0x000131e4
- adds r0, r4, r1
- str r0, [sp]
- ldr r0, _080F4080 @ =0x00181000
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- b _080F4118
- .align 2, 0
-_080F407C: .4byte 0x000131e4
-_080F4080: .4byte 0x00181000
-_080F4084:
- ldr r0, _080F40B4 @ =gUnknown_083E4818
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- add r0, sp, 0x8
- bl LoadSpritePalette
- movs r0, 0x10
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC2
- lsls r1, 2
- adds r2, r4, r1
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- movs r0, 0x3
- negs r0, r0
- bics r0, r1
- str r0, [r2]
- b _080F4118
- .align 2, 0
-_080F40B4: .4byte gUnknown_083E4818
-_080F40B8:
- ldr r0, _080F40E4 @ =gSpriteTemplate_83E4850
- movs r1, 0xDA
- movs r2, 0xE
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080F40F0
- ldr r0, _080F40E8 @ =0x00006d98
- adds r2, r4, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F40EC @ =gSprites
- adds r0, r1
- str r0, [r2]
- movs r1, 0
- strh r1, [r0, 0x2E]
- b _080F40F8
- .align 2, 0
-_080F40E4: .4byte gSpriteTemplate_83E4850
-_080F40E8: .4byte 0x00006d98
-_080F40EC: .4byte gSprites
-_080F40F0:
- ldr r2, _080F410C @ =0x00006d98
- adds r1, r4, r2
- movs r0, 0
- str r0, [r1]
-_080F40F8:
- ldr r0, _080F4110 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r0, _080F4114 @ =0x00000306
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F4106:
- movs r0, 0
- b _080F4128
- .align 2, 0
-_080F410C: .4byte 0x00006d98
-_080F4110: .4byte gUnknown_083DFEC4
-_080F4114: .4byte 0x00000306
-_080F4118:
- ldr r0, _080F4130 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F4134 @ =0x00000306
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
-_080F4128:
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F4130: .4byte gUnknown_083DFEC4
-_080F4134: .4byte 0x00000306
- thumb_func_end sub_80F4024
-
- thumb_func_start sub_80F4138
-sub_80F4138: @ 80F4138
- push {lr}
- adds r2, r0, 0
- ldr r0, _080F4170 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- movs r1, 0xC3
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- negs r0, r0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bgt _080F4174
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080F418E
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x1
- b _080F418C
- .align 2, 0
-_080F4170: .4byte gUnknown_083DFEC4
-_080F4174:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080F418E
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- movs r0, 0
-_080F418C:
- strh r0, [r2, 0x2E]
-_080F418E:
- pop {r0}
- bx r0
- thumb_func_end sub_80F4138
-
- thumb_func_start sub_80F4194
-sub_80F4194: @ 80F4194
- push {r4-r7,lr}
- sub sp, 0x4
- adds r7, r0, 0
- adds r2, r1, 0
- ldr r0, _080F42A4 @ =gUnknown_083DFEC8
- ldr r6, [r0]
- mov r0, sp
- ldr r1, _080F42A8 @ =0x00001111
- adds r5, r1, 0
- strh r5, [r0]
- ldr r4, _080F42AC @ =0x040000d4
- str r0, [r4]
- str r6, [r4, 0x4]
- ldr r3, _080F42B0 @ =0x81000140
- str r3, [r4, 0x8]
- ldr r0, [r4, 0x8]
- movs r0, 0x80
- lsls r0, 3
- adds r1, r6, r0
- mov r0, sp
- strh r5, [r0]
- str r0, [r4]
- str r1, [r4, 0x4]
- str r3, [r4, 0x8]
- ldr r0, [r4, 0x8]
- ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0
- adds r1, r6, 0
- bl Text_InitWindow8004E3C
- movs r3, 0x88
- lsls r3, 2
- adds r1, r6, r3
- mov r0, sp
- movs r3, 0
- strh r3, [r0]
- str r0, [r4]
- str r1, [r4, 0x4]
- ldr r2, _080F42B8 @ =0x81000030
- str r2, [r4, 0x8]
- ldr r0, [r4, 0x8]
- movs r0, 0xC4
- lsls r0, 3
- adds r1, r6, r0
- mov r0, sp
- strh r3, [r0]
- str r0, [r4]
- str r1, [r4, 0x4]
- str r2, [r4, 0x8]
- ldr r0, [r4, 0x8]
- movs r1, 0x80
- lsls r1, 2
- adds r2, r6, r1
- ldr r0, [r2]
- ldr r1, _080F42BC @ =0x0fffffff
- ands r0, r1
- str r0, [r2]
- ldr r0, [r2, 0x4]
- ands r0, r1
- str r0, [r2, 0x4]
- ldr r0, [r2, 0x8]
- ands r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0xC]
- ands r0, r1
- str r0, [r2, 0xC]
- ldr r0, [r2, 0x10]
- ands r0, r1
- str r0, [r2, 0x10]
- ldr r0, [r2, 0x14]
- ands r0, r1
- str r0, [r2, 0x14]
- ldr r0, [r2, 0x18]
- ands r0, r1
- str r0, [r2, 0x18]
- ldr r0, [r2, 0x1C]
- ands r0, r1
- str r0, [r2, 0x1C]
- movs r3, 0xC0
- lsls r3, 3
- adds r2, r6, r3
- ldr r0, [r2]
- ands r0, r1
- str r0, [r2]
- ldr r0, [r2, 0x4]
- ands r0, r1
- str r0, [r2, 0x4]
- ldr r0, [r2, 0x8]
- ands r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0xC]
- ands r0, r1
- str r0, [r2, 0xC]
- ldr r0, [r2, 0x10]
- ands r0, r1
- str r0, [r2, 0x10]
- ldr r0, [r2, 0x14]
- ands r0, r1
- str r0, [r2, 0x14]
- ldr r0, [r2, 0x18]
- ands r0, r1
- str r0, [r2, 0x18]
- ldr r0, [r2, 0x1C]
- ands r0, r1
- str r0, [r2, 0x1C]
- movs r1, 0
- ldr r2, _080F42C0 @ =0x80000040
-_080F4268:
- lsls r0, r1, 7
- adds r0, r6, r0
- str r0, [r4]
- lsls r0, r1, 8
- adds r0, r7, r0
- str r0, [r4, 0x4]
- str r2, [r4, 0x8]
- ldr r0, [r4, 0x8]
- lsls r0, r1, 7
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3
- adds r0, r6, r0
- str r0, [r4]
- lsls r0, r1, 3
- adds r0, 0x4
- lsls r0, 5
- adds r0, r7, r0
- str r0, [r4, 0x4]
- str r2, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080F4268
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F42A4: .4byte gUnknown_083DFEC8
-_080F42A8: .4byte 0x00001111
-_080F42AC: .4byte 0x040000d4
-_080F42B0: .4byte 0x81000140
-_080F42B4: .4byte gWindowTemplate_81E70F0
-_080F42B8: .4byte 0x81000030
-_080F42BC: .4byte 0x0fffffff
-_080F42C0: .4byte 0x80000040
- thumb_func_end sub_80F4194
-
- thumb_func_start sub_80F42C4
-sub_80F42C4: @ 80F42C4
- push {r4-r7,lr}
- sub sp, 0x8
- adds r1, r0, 0
- ldr r0, _080F433C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F4340 @ =0x0000d1e4
- adds r0, r2
- str r0, [sp]
- ldr r2, _080F4344 @ =0x001a0500
- str r2, [sp, 0x4]
- bl sub_80F4194
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, _080F4348 @ =gUnknown_083E4868
- bl LoadSpritePalette
- movs r5, 0
- movs r4, 0
- ldr r6, _080F434C @ =gSprites
-_080F42EE:
- lsls r1, r4, 21
- movs r7, 0xE2
- lsls r7, 15
- adds r1, r7
- asrs r1, 16
- ldr r0, _080F4350 @ =gSpriteTemplate_83E4878
- movs r2, 0x10
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080F4360
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r6
- ldrh r2, [r3, 0x4]
- lsls r0, r2, 22
- lsrs r0, 22
- adds r0, r5, r0
- ldr r7, _080F4354 @ =0x000003ff
- adds r1, r7, 0
- ands r0, r1
- ldr r7, _080F4358 @ =0xfffffc00
- adds r1, r7, 0
- ands r2, r1
- orrs r2, r0
- strh r2, [r3, 0x4]
- ldr r0, _080F433C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- lsls r1, r4, 2
- ldr r2, _080F435C @ =0x0000ced4
- adds r0, r2
- adds r0, r1
- str r3, [r0]
- b _080F4370
- .align 2, 0
-_080F433C: .4byte gUnknown_083DFEC4
-_080F4340: .4byte 0x0000d1e4
-_080F4344: .4byte 0x001a0500
-_080F4348: .4byte gUnknown_083E4868
-_080F434C: .4byte gSprites
-_080F4350: .4byte gSpriteTemplate_83E4878
-_080F4354: .4byte 0x000003ff
-_080F4358: .4byte 0xfffffc00
-_080F435C: .4byte 0x0000ced4
-_080F4360:
- ldr r0, _080F438C @ =gUnknown_083DFEC4
- ldr r1, [r0]
- lsls r0, r4, 2
- ldr r7, _080F4390 @ =0x0000ced4
- adds r1, r7
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080F4370:
- adds r0, r5, 0
- adds r0, 0x8
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _080F42EE
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F438C: .4byte gUnknown_083DFEC4
-_080F4390: .4byte 0x0000ced4
- thumb_func_end sub_80F42C4
-
- thumb_func_start sub_80F4394
-sub_80F4394: @ 80F4394
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, _080F43CC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F43D0 @ =0x0000ced4
- adds r5, r0, r1
-_080F43A0:
- lsls r0, r4, 2
- adds r0, r5, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080F43AE
- bl DestroySprite
-_080F43AE:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _080F43A0
- movs r0, 0x1A
- bl FreeSpriteTilesByTag
- movs r0, 0x12
- bl FreeSpritePaletteByTag
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F43CC: .4byte gUnknown_083DFEC4
-_080F43D0: .4byte 0x0000ced4
- thumb_func_end sub_80F4394
-
- thumb_func_start sub_80F43D4
-sub_80F43D4: @ 80F43D4
- push {r4,lr}
- adds r1, r0, 0
- ldr r0, _080F4410 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F4414 @ =0x0000d1e4
- adds r4, r0, r2
- adds r0, r4, 0
- bl sub_80F4194
- movs r0, 0x1A
- bl GetSpriteTileStartByTag
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080F4418 @ =0x0000ffff
- cmp r1, r0
- beq _080F4408
- lsls r0, r1, 5
- ldr r1, _080F441C @ =0x06010000
- adds r0, r1
- ldr r1, _080F4420 @ =0x040000d4
- str r4, [r1]
- str r0, [r1, 0x4]
- ldr r0, _080F4424 @ =0x84000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_080F4408:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4410: .4byte gUnknown_083DFEC4
-_080F4414: .4byte 0x0000d1e4
-_080F4418: .4byte 0x0000ffff
-_080F441C: .4byte 0x06010000
-_080F4420: .4byte 0x040000d4
-_080F4424: .4byte 0x84000140
- thumb_func_end sub_80F43D4
-
- thumb_func_start sub_80F4428
-sub_80F4428: @ 80F4428
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- bl sub_80F6514
- pop {r1}
- bx r1
- thumb_func_end sub_80F4428
-
- thumb_func_start sub_80F443C
-sub_80F443C: @ 80F443C
- push {r4,lr}
- lsls r4, r1, 16
- lsrs r4, 16
- ldr r1, _080F4458 @ =gOtherText_Number
- bl StringCopy
- adds r1, r4, 0
- movs r2, 0x38
- movs r3, 0x1
- bl AlignInt1InMenuWindow
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F4458: .4byte gOtherText_Number
- thumb_func_end sub_80F443C
-
- thumb_func_start sub_80F445C
-sub_80F445C: @ 80F445C
- push {r4,lr}
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x17
- movs r3, 0x1
- bl AlignInt1InMenuWindow
- adds r4, r0, 0
- movs r3, 0xFC
- strb r3, [r4]
- movs r2, 0x11
- strb r2, [r4, 0x1]
- movs r1, 0x1
- strb r1, [r4, 0x2]
- adds r4, 0x3
- movs r0, 0xBA
- strb r0, [r4]
- adds r4, 0x1
- strb r3, [r4]
- strb r2, [r4, 0x1]
- strb r1, [r4, 0x2]
- adds r4, 0x3
- ldr r0, _080F44A8 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F44AC @ =0x00008774
- adds r0, r1
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r1, 0x1
- adds r0, r4, 0
- movs r2, 0x32
- movs r3, 0x1
- bl AlignInt1InMenuWindow
- adds r4, r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F44A8: .4byte gUnknown_083DFEC4
-_080F44AC: .4byte 0x00008774
- thumb_func_end sub_80F445C
-
- thumb_func_start sub_80F44B0
-sub_80F44B0: @ 80F44B0
- push {r4,lr}
- adds r4, r2, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r0, 0xE
- bne _080F44F4
- cmp r4, 0x2
- beq _080F44C8
- cmp r4, 0x7
- bne _080F44E0
-_080F44C8:
- movs r0, 0x64
- muls r0, r2
- ldr r1, _080F44DC @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- adds r2, r3, 0
- bl GetMonData
- b _080F453C
- .align 2, 0
-_080F44DC: .4byte gPlayerParty
-_080F44E0:
- movs r0, 0x64
- muls r0, r2
- ldr r1, _080F44F0 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl GetMonData
- b _080F453C
- .align 2, 0
-_080F44F0: .4byte gPlayerParty
-_080F44F4:
- cmp r4, 0x2
- beq _080F44FC
- cmp r4, 0x7
- bne _080F4520
-_080F44FC:
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _080F451C @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- adds r1, r4, 0
- adds r2, r3, 0
- bl GetBoxMonData
- b _080F453C
- .align 2, 0
-_080F451C: .4byte gPokemonStorage + 0x4
-_080F4520:
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _080F4544 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- adds r1, r4, 0
- bl GetBoxMonData
-_080F453C:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F4544: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_80F44B0
-
- thumb_func_start sub_80F4548
-sub_80F4548: @ 80F4548
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- mov r0, sp
- strb r2, [r0]
- cmp r3, 0xE
- bne _080F4574
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080F4570 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- b _080F4592
- .align 2, 0
-_080F4570: .4byte gPlayerParty
-_080F4574:
- lsls r1, r3, 2
- adds r1, r3
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 4
- ldr r2, _080F459C @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetBoxMonData
-_080F4592:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F459C: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_80F4548
-
- thumb_func_start sub_80F45A0
-sub_80F45A0: @ 80F45A0
- push {r4-r7,lr}
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _080F45F0 @ =gUnknown_083DFEC4
- ldr r5, [r1]
- lsls r1, r0, 16
- asrs r0, r1, 14
- adds r4, r5, r0
- ldr r2, _080F45F4 @ =0x0000893f
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r7, r0, 31
- cmp r7, 0
- beq _080F4644
- lsls r0, r6, 6
- ldr r2, _080F45F8 @ =0x00008829
- adds r0, r2
- adds r0, r5, r0
- lsrs r1, 16
- movs r2, 0
- bl sub_80F4428
- ldr r1, _080F45FC @ =0x0000893d
- adds r0, r4, r1
- ldrb r2, [r0]
- cmp r2, 0xE
- bne _080F4608
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 3
- ldr r2, _080F4600 @ =0x000088e9
- adds r0, r2
- adds r0, r5, r0
- ldr r1, _080F4604 @ =gOtherText_InParty
- movs r2, 0x40
- movs r3, 0
- bl AlignStringInMenuWindow
- b _080F4624
- .align 2, 0
-_080F45F0: .4byte gUnknown_083DFEC4
-_080F45F4: .4byte 0x0000893f
-_080F45F8: .4byte 0x00008829
-_080F45FC: .4byte 0x0000893d
-_080F4600: .4byte 0x000088e9
-_080F4604: .4byte gOtherText_InParty
-_080F4608:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 3
- ldr r1, _080F4634 @ =0x000088e9
- adds r0, r1
- adds r0, r5, r0
- lsls r1, r2, 3
- adds r1, r2
- ldr r2, _080F4638 @ =gPokemonStorage + 0x8344
- adds r1, r2
- movs r2, 0x40
- movs r3, 0
- bl AlignStringInMenuWindow
-_080F4624:
- ldr r0, _080F463C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F4640 @ =0x00008937
- adds r0, r2
- adds r0, r6
- movs r1, 0x1
- strb r1, [r0]
- b _080F4676
- .align 2, 0
-_080F4634: .4byte 0x000088e9
-_080F4638: .4byte gPokemonStorage + 0x8344
-_080F463C: .4byte gUnknown_083DFEC4
-_080F4640: .4byte 0x00008937
-_080F4644:
- lsls r0, r6, 6
- ldr r1, _080F467C @ =0x00008829
- adds r0, r1
- adds r0, r5, r0
- ldr r4, _080F4680 @ =gEmptyString_81E72B0
- adds r1, r4, 0
- movs r2, 0x68
- movs r3, 0
- bl AlignStringInMenuWindow
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 3
- ldr r2, _080F4684 @ =0x000088e9
- adds r0, r2
- adds r0, r5, r0
- adds r1, r4, 0
- movs r2, 0x40
- movs r3, 0
- bl AlignStringInMenuWindow
- ldr r1, _080F4688 @ =0x00008937
- adds r0, r5, r1
- adds r0, r6
- strb r7, [r0]
-_080F4676:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F467C: .4byte 0x00008829
-_080F4680: .4byte gEmptyString_81E72B0
-_080F4684: .4byte 0x000088e9
-_080F4688: .4byte 0x00008937
- thumb_func_end sub_80F45A0
-
- thumb_func_start sub_80F468C
-sub_80F468C: @ 80F468C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _080F475C @ =gUnknown_083DFEC4
- ldr r7, [r1]
- lsls r0, 16
- asrs r0, 14
- adds r1, r7, r0
- ldr r2, _080F4760 @ =0x0000893f
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _080F46B2
- b _080F47C4
-_080F46B2:
- ldr r3, _080F4764 @ =0x0000893d
- adds r0, r1, r3
- ldrb r5, [r0]
- subs r2, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r6, r0, 27
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x16
- movs r3, 0
- bl sub_80F44B0
- mov r3, r9
- lsls r3, 2
- mov r8, r3
- mov r4, r8
- add r4, r9
- ldr r2, _080F4768 @ =0x00008ff0
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x2F
- movs r3, 0
- bl sub_80F44B0
- ldr r3, _080F476C @ =0x00008ff1
- adds r1, r7, r3
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x21
- movs r3, 0
- bl sub_80F44B0
- ldr r2, _080F4770 @ =0x00008ff2
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x18
- movs r3, 0
- bl sub_80F44B0
- ldr r3, _080F4774 @ =0x00008ff3
- adds r1, r7, r3
- adds r1, r4
- strb r0, [r1]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x17
- movs r3, 0
- bl sub_80F44B0
- ldr r2, _080F4778 @ =0x00008ff4
- adds r1, r7, r2
- adds r1, r4
- strb r0, [r1]
- ldr r3, _080F477C @ =0x00008931
- adds r0, r7, r3
- mov r7, r9
- adds r4, r0, r7
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x30
- movs r3, 0
- bl sub_80F44B0
- cmp r0, 0xFF
- beq _080F4780
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x30
- movs r3, 0
- bl sub_80F44B0
- movs r1, 0x1D
- bl __udivsi3
- b _080F4782
- .align 2, 0
-_080F475C: .4byte gUnknown_083DFEC4
-_080F4760: .4byte 0x0000893f
-_080F4764: .4byte 0x0000893d
-_080F4768: .4byte 0x00008ff0
-_080F476C: .4byte 0x00008ff1
-_080F4770: .4byte 0x00008ff2
-_080F4774: .4byte 0x00008ff3
-_080F4778: .4byte 0x00008ff4
-_080F477C: .4byte 0x00008931
-_080F4780:
- movs r0, 0x9
-_080F4782:
- strb r0, [r4]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x8
- movs r3, 0
- bl sub_80F44B0
- ldr r1, _080F47B4 @ =gUnknown_083DFEC4
- ldr r1, [r1]
- ldr r3, _080F47B8 @ =0x00008934
- adds r2, r1, r3
- add r2, r9
- strb r0, [r2]
- mov r2, r8
- add r2, r9
- ldr r7, _080F47BC @ =0x00008ff0
- adds r0, r2, r7
- adds r0, r1, r0
- lsls r2, 2
- ldr r3, _080F47C0 @ =0x00009004
- adds r2, r3
- adds r1, r2
- bl sub_80F55AC
- b _080F480A
- .align 2, 0
-_080F47B4: .4byte gUnknown_083DFEC4
-_080F47B8: .4byte 0x00008934
-_080F47BC: .4byte 0x00008ff0
-_080F47C0: .4byte 0x00009004
-_080F47C4:
- movs r3, 0
- mov r0, r9
- lsls r0, 2
- mov r8, r0
- adds r4, r7, 0
- mov r2, r8
- add r2, r9
- ldr r1, _080F4818 @ =0x00008ff0
- adds r6, r4, r1
- lsls r5, r2, 2
- mov r9, r3
- ldr r7, _080F481C @ =0x00009004
- mov r8, r7
- movs r0, 0x9B
- mov r12, r0
-_080F47E2:
- adds r0, r3, r2
- adds r0, r6, r0
- mov r1, r9
- strb r1, [r0]
- lsls r0, r3, 2
- adds r0, r5
- adds r0, r4, r0
- mov r7, r8
- adds r1, r0, r7
- mov r7, r12
- strh r7, [r1]
- ldr r1, _080F4820 @ =0x00009006
- adds r0, r1
- movs r1, 0x5B
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _080F47E2
-_080F480A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4818: .4byte 0x00008ff0
-_080F481C: .4byte 0x00009004
-_080F4820: .4byte 0x00009006
- thumb_func_end sub_80F468C
-
- thumb_func_start sub_80F4824
-sub_80F4824: @ 80F4824
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _080F48E0 @ =gUnknown_083DFEC4
- ldr r7, [r1]
- lsls r0, 16
- asrs r0, 14
- adds r1, r7, r0
- ldr r2, _080F48E4 @ =0x0000893f
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _080F48D0
- ldr r6, _080F48E8 @ =0x0000893d
- adds r0, r1, r6
- ldrb r6, [r0]
- subs r2, 0x1
- adds r0, r1, r2
- ldrb r4, [r0]
- lsls r4, 27
- lsrs r4, 27
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x41
- movs r3, 0
- bl sub_80F44B0
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0
- bl sub_80F44B0
- mov r8, r0
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_80F44B0
- adds r4, r0, 0
- lsls r0, r5, 3
- ldr r1, _080F48EC @ =gMonFrontPicTable
- adds r0, r1
- ldr r2, _080F48F0 @ =gMonFrontPicCoords
- lsls r1, r5, 2
- adds r1, r2
- ldrb r1, [r1]
- ldr r6, _080F48F4 @ =0x000131e4
- adds r3, r7, r6
- mov r6, r9
- lsls r2, r6, 13
- ldr r6, _080F48F8 @ =0x0000d1e4
- adds r2, r6
- adds r2, r7, r2
- str r2, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r2, 0x1
- bl HandleLoadSpecialPokePic
- adds r0, r5, 0
- mov r1, r8
- adds r2, r4, 0
- bl GetMonSpritePalFromOtIdPersonality
- mov r2, r9
- lsls r1, r2, 7
- adds r1, r7, r1
- bl LZ77UnCompWram
- mov r6, r9
- lsls r1, r6, 1
- ldr r2, _080F48FC @ =0x0000d1d6
- adds r0, r7, r2
- adds r0, r1
- strh r5, [r0]
-_080F48D0:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F48E0: .4byte gUnknown_083DFEC4
-_080F48E4: .4byte 0x0000893f
-_080F48E8: .4byte 0x0000893d
-_080F48EC: .4byte gMonFrontPicTable
-_080F48F0: .4byte gMonFrontPicCoords
-_080F48F4: .4byte 0x000131e4
-_080F48F8: .4byte 0x0000d1e4
-_080F48FC: .4byte 0x0000d1d6
- thumb_func_end sub_80F4824
-
- thumb_func_start sub_80F4900
-sub_80F4900: @ 80F4900
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F45A0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F468C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80F4824
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F4900
-
- thumb_func_start sub_80F492C
-sub_80F492C: @ 80F492C
- ldr r0, _080F493C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F4940 @ =0x00008fe4
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- bx lr
- .align 2, 0
-_080F493C: .4byte gUnknown_083DFEC4
-_080F4940: .4byte 0x00008fe4
- thumb_func_end sub_80F492C
-
- thumb_func_start sub_80F4944
-sub_80F4944: @ 80F4944
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r12, r0
- movs r2, 0
- ldr r1, _080F4978 @ =gUnknown_083DFEC4
- ldr r5, [r1]
- ldr r3, _080F497C @ =0x00008fe4
- adds r0, r5, r3
- ldrh r4, [r0]
- lsrs r3, r4, 1
- mov r8, r1
- cmp r4, r3
- beq _080F499C
- adds r6, r5, 0
- mov r0, r12
- ldrb r5, [r0]
- ldr r7, _080F4980 @ =0x0000893c
-_080F4968:
- lsls r0, r3, 2
- adds r0, r6, r0
- adds r0, r7
- ldrb r0, [r0]
- cmp r5, r0
- bls _080F4984
- adds r4, r3, 0
- b _080F498A
- .align 2, 0
-_080F4978: .4byte gUnknown_083DFEC4
-_080F497C: .4byte 0x00008fe4
-_080F4980: .4byte 0x0000893c
-_080F4984:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_080F498A:
- subs r0, r4, r2
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, r2, r0
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r4, r3
- bne _080F4968
-_080F499C:
- mov r1, r8
- ldr r2, [r1]
- ldr r1, _080F49EC @ =0x00008fe4
- adds r0, r2, r1
- ldrh r4, [r0]
- lsls r6, r3, 2
- cmp r4, r3
- bls _080F49C6
- ldr r0, _080F49F0 @ =0x0000893c
- adds r5, r2, r0
-_080F49B0:
- lsls r2, r4, 2
- adds r2, r5, r2
- subs r1, r4, 0x1
- lsls r0, r1, 2
- adds r0, r5, r0
- ldr r0, [r0]
- str r0, [r2]
- lsls r1, 16
- lsrs r4, r1, 16
- cmp r4, r3
- bhi _080F49B0
-_080F49C6:
- mov r1, r8
- ldr r2, [r1]
- ldr r3, _080F49F0 @ =0x0000893c
- adds r0, r2, r3
- adds r0, r6
- mov r3, r12
- ldr r1, [r3]
- str r1, [r0]
- ldr r0, _080F49EC @ =0x00008fe4
- adds r2, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F49EC: .4byte 0x00008fe4
-_080F49F0: .4byte 0x0000893c
- thumb_func_end sub_80F4944
-
- thumb_func_start sub_80F49F4
-sub_80F49F4: @ 80F49F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r3, _080F4A64 @ =gUnknown_083DFEC4
- ldr r4, [r3]
- ldr r7, _080F4A68 @ =0x0000893e
- adds r2, r4, r7
- ldrh r1, [r2]
- ldr r0, _080F4A6C @ =0xffffc01f
- mov r12, r0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strh r0, [r2]
- movs r5, 0x1
- ldr r1, _080F4A70 @ =0x00008fe4
- adds r0, r4, r1
- ldrh r3, [r0]
- cmp r5, r3
- bcs _080F4A9E
- adds r6, r4, 0
- ldr r1, _080F4A74 @ =0x0000893c
- mov r8, r1
- ldr r3, _080F4A78 @ =0x000001ff
- mov r10, r3
- mov r9, r0
-_080F4A2C:
- lsls r0, r5, 2
- adds r3, r6, r0
- mov r0, r8
- adds r2, r3, r0
- subs r0, r5, 0x1
- lsls r0, 2
- adds r4, r6, r0
- mov r0, r8
- adds r1, r4, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F4A7C
- adds r0, r4, r7
- ldrh r0, [r0]
- lsls r0, 18
- lsrs r0, 23
- adds r3, r7
- ldr r1, _080F4A78 @ =0x000001ff
- ands r1, r0
- lsls r1, 5
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- orrs r0, r1
- strh r0, [r3]
- adds r4, r5, 0x1
- b _080F4A92
- .align 2, 0
-_080F4A64: .4byte gUnknown_083DFEC4
-_080F4A68: .4byte 0x0000893e
-_080F4A6C: .4byte 0xffffc01f
-_080F4A70: .4byte 0x00008fe4
-_080F4A74: .4byte 0x0000893c
-_080F4A78: .4byte 0x000001ff
-_080F4A7C:
- adds r4, r5, 0x1
- adds r3, r7
- adds r1, r4, 0
- mov r0, r10
- ands r1, r0
- lsls r1, 5
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- orrs r0, r1
- strh r0, [r3]
-_080F4A92:
- lsls r0, r4, 16
- lsrs r5, r0, 16
- mov r1, r9
- ldrh r1, [r1]
- cmp r5, r1
- bcc _080F4A2C
-_080F4A9E:
- ldr r3, _080F4AC4 @ =gUnknown_083DFEC4
- ldr r2, [r3]
- ldr r1, _080F4AC8 @ =0x0000876c
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- ldr r3, _080F4ACC @ =0x00008770
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _080F4AD0 @ =0x00008fe4
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, 0x8
- bhi _080F4AD4
- subs r1, r0, 0x1
- b _080F4AD6
- .align 2, 0
-_080F4AC4: .4byte gUnknown_083DFEC4
-_080F4AC8: .4byte 0x0000876c
-_080F4ACC: .4byte 0x00008770
-_080F4AD0: .4byte 0x00008fe4
-_080F4AD4:
- movs r1, 0x7
-_080F4AD6:
- ldr r3, _080F4B10 @ =0x00008772
- adds r0, r2, r3
- strh r1, [r0]
- ldr r0, _080F4B14 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F4B18 @ =0x00008fe4
- adds r0, r2, r1
- ldrh r0, [r0]
- subs r0, 0x1
- adds r3, 0x2
- adds r1, r2, r3
- strh r0, [r1]
- movs r1, 0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _080F4AFA
- movs r1, 0x1
-_080F4AFA:
- ldr r3, _080F4B1C @ =0x000087c9
- adds r0, r2, r3
- strb r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4B10: .4byte 0x00008772
-_080F4B14: .4byte gUnknown_083DFEC4
-_080F4B18: .4byte 0x00008fe4
-_080F4B1C: .4byte 0x000087c9
- thumb_func_end sub_80F49F4
-
- thumb_func_start sub_80F4B20
-sub_80F4B20: @ 80F4B20
- push {r4-r6,lr}
- ldr r0, _080F4B5C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F4B60 @ =0x000087dc
- adds r5, r4, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0
- bl sub_80F4900
- movs r0, 0
- bl sub_80F2E18
- ldr r0, _080F4B64 @ =0x000087da
- adds r2, r4, r0
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080F4B6C
- ldr r2, _080F4B68 @ =0x00008fe9
- adds r0, r4, r2
- movs r1, 0
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- b _080F4BBE
- .align 2, 0
-_080F4B5C: .4byte gUnknown_083DFEC4
-_080F4B60: .4byte 0x000087dc
-_080F4B64: .4byte 0x000087da
-_080F4B68: .4byte 0x00008fe9
-_080F4B6C:
- ldr r0, _080F4BC4 @ =0x00008fe9
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080F4BC8 @ =0x00008fea
- adds r1, r4, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080F4BCC @ =0x00008feb
- adds r1, r4, r0
- movs r0, 0x2
- strb r0, [r1]
- ldrh r3, [r5]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- ldrh r6, [r2]
- movs r4, 0
- ldrsh r1, [r2, r4]
- cmp r0, r1
- blt _080F4B9A
- movs r5, 0
-_080F4B9A:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r0, 0
- bge _080F4BAA
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080F4BAA:
- lsls r0, r5, 16
- asrs r0, 16
- movs r1, 0x1
- bl sub_80F4900
- lsls r0, r4, 16
- asrs r0, 16
- movs r1, 0x2
- bl sub_80F4900
-_080F4BBE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4BC4: .4byte 0x00008fe9
-_080F4BC8: .4byte 0x00008fea
-_080F4BCC: .4byte 0x00008feb
- thumb_func_end sub_80F4B20
-
- thumb_func_start sub_80F4BD0
-sub_80F4BD0: @ 80F4BD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r7, 0
- ldr r0, _080F4CC4 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r3, _080F4CC8 @ =0x00008828
- adds r1, r2, r3
- mov r9, r0
- ldrb r1, [r1]
- cmp r7, r1
- bcs _080F4C66
- mov r10, r9
- adds r4, r3, 0
- adds r4, r2
- mov r8, r4
-_080F4BF6:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080F4CCC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080F4C58
- mov r0, r10
- ldr r3, [r0]
- lsls r0, r7, 2
- adds r3, r0
- ldr r2, _080F4CD0 @ =0x0000893d
- adds r1, r3, r2
- movs r0, 0xE
- strb r0, [r1]
- ldr r4, _080F4CD4 @ =0x0000893e
- adds r5, r3, r4
- movs r0, 0x1F
- adds r2, r6, 0
- ands r2, r0
- ldrb r0, [r5]
- movs r4, 0x20
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5]
- adds r4, r7, 0x1
- ldr r7, _080F4CD8 @ =0x000001ff
- adds r0, r7, 0
- adds r2, r4, 0
- ands r2, r0
- lsls r2, 5
- ldrh r0, [r5]
- ldr r7, _080F4CDC @ =0xffffc01f
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strh r0, [r5]
- ldr r0, _080F4CE0 @ =0x0000893f
- adds r3, r0
- ldrb r0, [r3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3]
- lsls r4, 16
- lsrs r7, r4, 16
-_080F4C58:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- mov r1, r8
- ldrb r1, [r1]
- cmp r6, r1
- bcc _080F4BF6
-_080F4C66:
- mov r2, r9
- ldr r4, [r2]
- lsls r1, r7, 2
- adds r1, r4, r1
- ldr r3, _080F4CD0 @ =0x0000893d
- adds r0, r1, r3
- movs r5, 0
- strb r5, [r0]
- ldr r0, _080F4CD4 @ =0x0000893e
- adds r2, r1, r0
- ldrb r3, [r2]
- movs r0, 0x20
- negs r0, r0
- ands r0, r3
- strb r0, [r2]
- ldrh r3, [r2]
- ldr r0, _080F4CDC @ =0xffffc01f
- ands r0, r3
- strh r0, [r2]
- ldr r2, _080F4CE0 @ =0x0000893f
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r3, _080F4CE4 @ =0x000087dc
- adds r0, r4, r3
- strh r5, [r0]
- adds r1, r7, 0x1
- ldr r7, _080F4CE8 @ =0x000087da
- adds r0, r4, r7
- strh r1, [r0]
- bl sub_80F4B20
- ldr r0, _080F4CEC @ =0x000087cb
- adds r4, r0
- movs r0, 0x1
- strb r0, [r4]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4CC4: .4byte gUnknown_083DFEC4
-_080F4CC8: .4byte 0x00008828
-_080F4CCC: .4byte gPlayerParty
-_080F4CD0: .4byte 0x0000893d
-_080F4CD4: .4byte 0x0000893e
-_080F4CD8: .4byte 0x000001ff
-_080F4CDC: .4byte 0xffffc01f
-_080F4CE0: .4byte 0x0000893f
-_080F4CE4: .4byte 0x000087dc
-_080F4CE8: .4byte 0x000087da
-_080F4CEC: .4byte 0x000087cb
- thumb_func_end sub_80F4BD0
-
- thumb_func_start sub_80F4CF0
-sub_80F4CF0: @ 80F4CF0
- push {r4,lr}
- ldr r0, _080F4D1C @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F4D20 @ =0x0000876e
- adds r0, r4, r1
- ldrh r1, [r0]
- ldr r2, _080F4D24 @ =0x000087dc
- adds r0, r4, r2
- strh r1, [r0]
- bl sub_80F4B20
- ldr r1, _080F4D28 @ =0x00008774
- adds r0, r4, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _080F4D30
- ldr r0, _080F4D2C @ =0x000087cb
- adds r1, r4, r0
- movs r0, 0
- b _080F4D36
- .align 2, 0
-_080F4D1C: .4byte gUnknown_083DFEC4
-_080F4D20: .4byte 0x0000876e
-_080F4D24: .4byte 0x000087dc
-_080F4D28: .4byte 0x00008774
-_080F4D2C: .4byte 0x000087cb
-_080F4D30:
- ldr r2, _080F4D40 @ =0x000087cb
- adds r1, r4, r2
- movs r0, 0x1
-_080F4D36:
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D40: .4byte 0x000087cb
- thumb_func_end sub_80F4CF0
-
- thumb_func_start sub_80F4D44
-sub_80F4D44: @ 80F4D44
- push {r4,lr}
- ldr r0, _080F4D78 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F4D7C @ =0x00008fe6
- adds r0, r4, r1
- movs r1, 0
- strb r1, [r0]
- ldr r2, _080F4D80 @ =0x00008fe7
- adds r0, r4, r2
- strb r1, [r0]
- bl sub_80F492C
- ldr r0, _080F4D84 @ =0x00006dac
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0
- bne _080F4D70
-_080F4D66:
- bl sub_80F4D88
- lsls r0, 24
- cmp r0, 0
- bne _080F4D66
-_080F4D70:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D78: .4byte gUnknown_083DFEC4
-_080F4D7C: .4byte 0x00008fe6
-_080F4D80: .4byte 0x00008fe7
-_080F4D84: .4byte 0x00006dac
- thumb_func_end sub_80F4D44
-
- thumb_func_start sub_80F4D88
-sub_80F4D88: @ 80F4D88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r6, _080F4E98 @ =gUnknown_083DFEC4
- ldr r4, [r6]
- ldr r1, _080F4E9C @ =0x00008fe6
- adds r0, r4, r1
- ldrb r3, [r0]
- cmp r3, 0xE
- bne _080F4DA4
- b _080F4EB8
-_080F4DA4:
- cmp r3, 0xF
- bne _080F4DAA
- b _080F4F60
-_080F4DAA:
- movs r1, 0x80
- lsls r1, 23
- ldr r0, [sp]
- orrs r0, r1
- str r0, [sp]
- movs r7, 0
- mov r10, r6
- ldr r2, _080F4E9C @ =0x00008fe6
- adds r6, r4, r2
- ldr r3, _080F4EA0 @ =0x00008fe7
- adds r5, r4, r3
- ldr r0, _080F4EA4 @ =0x000087d8
- adds r0, r4
- mov r9, r0
- ldr r1, _080F4EA8 @ =gPokemonStorage + 0x4
- mov r8, r1
-_080F4DCA:
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _080F4E60
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- movs r1, 0x2D
- bl GetBoxMonData
- cmp r0, 0
- bne _080F4E60
- ldrb r1, [r6]
- lsls r1, 8
- ldr r2, _080F4EAC @ =0xffff00ff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldrb r2, [r5]
- movs r1, 0x1F
- ands r2, r1
- lsls r2, 16
- ldr r1, _080F4EB0 @ =0xffe0ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldrb r2, [r5]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- add r1, r8
- adds r0, r1
- mov r2, r9
- ldrb r1, [r2]
- bl GetBoxMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F4EB4 @ =0xffffff00
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- mov r0, sp
- bl sub_80F4944
-_080F4E60:
- mov r3, r10
- ldr r1, [r3]
- ldr r0, _080F4EA0 @ =0x00008fe7
- adds r2, r1, r0
- ldrb r0, [r2]
- adds r0, 0x1
- movs r4, 0
- strb r0, [r2]
- movs r3, 0xFF
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bne _080F4E8C
- strb r4, [r2]
- ldr r2, _080F4E9C @ =0x00008fe6
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ands r0, r3
- cmp r0, 0xE
- beq _080F4F64
-_080F4E8C:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0xE
- bls _080F4DCA
- b _080F4F64
- .align 2, 0
-_080F4E98: .4byte gUnknown_083DFEC4
-_080F4E9C: .4byte 0x00008fe6
-_080F4EA0: .4byte 0x00008fe7
-_080F4EA4: .4byte 0x000087d8
-_080F4EA8: .4byte gPokemonStorage + 0x4
-_080F4EAC: .4byte 0xffff00ff
-_080F4EB0: .4byte 0xffe0ffff
-_080F4EB4: .4byte 0xffffff00
-_080F4EB8:
- mov r2, sp
- ldrb r0, [r2, 0x3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x3]
- strb r3, [r2, 0x1]
- movs r7, 0
- ldr r3, _080F4F44 @ =0x00008828
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r7, r0
- bcs _080F4F24
- mov r5, sp
- mov r8, r6
- adds r6, r4, r3
-_080F4ED6:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080F4F48 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080F4F18
- movs r0, 0x1F
- adds r2, r7, 0
- ands r2, r0
- ldrb r0, [r5, 0x2]
- movs r3, 0x20
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x2]
- mov r1, r8
- ldr r0, [r1]
- ldr r2, _080F4F4C @ =0x000087d8
- adds r0, r2
- ldrb r1, [r0]
- adds r0, r4, 0
- bl GetMonData
- strb r0, [r5]
- mov r0, sp
- bl sub_80F4944
-_080F4F18:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldrb r3, [r6]
- cmp r7, r3
- bcc _080F4ED6
-_080F4F24:
- bl sub_80F49F4
- ldr r0, _080F4F50 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F4F54 @ =0x00008fe4
- adds r0, r1, r2
- ldrh r2, [r0]
- ldr r3, _080F4F58 @ =0x000087da
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, _080F4F5C @ =0x00008fe6
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F4F64
- .align 2, 0
-_080F4F44: .4byte 0x00008828
-_080F4F48: .4byte gPlayerParty
-_080F4F4C: .4byte 0x000087d8
-_080F4F50: .4byte gUnknown_083DFEC4
-_080F4F54: .4byte 0x00008fe4
-_080F4F58: .4byte 0x000087da
-_080F4F5C: .4byte 0x00008fe6
-_080F4F60:
- movs r0, 0
- b _080F4F66
-_080F4F64:
- movs r0, 0x1
-_080F4F66:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4D88
-
- thumb_func_start sub_80F4F78
-sub_80F4F78: @ 80F4F78
- push {lr}
- ldr r0, _080F4FA4 @ =gUnknown_083DFEC4
- ldr r1, [r0]
- ldr r2, _080F4FA8 @ =0x00009040
- adds r0, r1, r2
- ldr r3, _080F4FAC @ =0x00008fe9
- adds r2, r1, r3
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 2
- ldr r3, _080F4FB0 @ =0x00009004
- adds r2, r3
- adds r1, r2
- bl sub_80F53EC
- bl sub_80F5504
- pop {r0}
- bx r0
- .align 2, 0
-_080F4FA4: .4byte gUnknown_083DFEC4
-_080F4FA8: .4byte 0x00009040
-_080F4FAC: .4byte 0x00008fe9
-_080F4FB0: .4byte 0x00009004
- thumb_func_end sub_80F4F78
-
- thumb_func_start sub_80F4FB4
-sub_80F4FB4: @ 80F4FB4
- push {r4,lr}
- bl sub_80F5504
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F170C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r4, 0
- bne _080F4FD2
- cmp r0, 0
- beq _080F4FD4
-_080F4FD2:
- movs r1, 0x1
-_080F4FD4:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F4FB4
-
- thumb_func_start sub_80F4FDC
-sub_80F4FDC: @ 80F4FDC
- push {lr}
- ldr r0, _080F5020 @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r1, _080F5024 @ =0x000076aa
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F4FFE
- ldr r3, _080F5028 @ =0x000087dc
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r3, _080F502C @ =0x00008828
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r1, r0
- beq _080F501A
-_080F4FFE:
- ldr r1, _080F5030 @ =0x00008fe9
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r3, _080F5034 @ =0x00009004
- adds r0, r3
- adds r0, r2, r0
- adds r3, 0x3C
- adds r1, r2, r3
- bl sub_80F53EC
-_080F501A:
- pop {r0}
- bx r0
- .align 2, 0
-_080F5020: .4byte gUnknown_083DFEC4
-_080F5024: .4byte 0x000076aa
-_080F5028: .4byte 0x000087dc
-_080F502C: .4byte 0x00008828
-_080F5030: .4byte 0x00008fe9
-_080F5034: .4byte 0x00009004
- thumb_func_end sub_80F4FDC
-
- thumb_func_start sub_80F5038
-sub_80F5038: @ 80F5038
- push {r4,lr}
- bl sub_80F5504
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F173C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r4, 0
- bne _080F5056
- cmp r0, 0
- beq _080F5058
-_080F5056:
- movs r1, 0x1
-_080F5058:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5038
-
- thumb_func_start sub_80F5060
-sub_80F5060: @ 80F5060
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- beq _080F507C
- ldr r0, _080F5074 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5078 @ =0x00008feb
- adds r0, r1
- b _080F5084
- .align 2, 0
-_080F5074: .4byte gUnknown_083DFEC4
-_080F5078: .4byte 0x00008feb
-_080F507C:
- ldr r0, _080F50FC @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r2, _080F5100 @ =0x00008fea
- adds r0, r2
-_080F5084:
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _080F50FC @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r3, _080F5104 @ =0x00008fe9
- adds r5, r4, r3
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r2, _080F5108 @ =0x00009004
- adds r0, r2
- adds r0, r4, r0
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 2
- adds r1, r2
- adds r1, r4, r1
- bl sub_80F53EC
- ldr r0, _080F510C @ =0x000087dc
- adds r3, r4, r0
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 2
- adds r0, r4, r0
- ldr r2, _080F5110 @ =0x0000893f
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 31
- mov r12, r0
- cmp r7, 0
- beq _080F5158
- ldr r7, _080F5100 @ =0x00008fea
- adds r1, r4, r7
- ldrb r0, [r1]
- adds r7, 0x1
- adds r2, r4, r7
- strb r0, [r2]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r6, [r5]
- ldrb r1, [r2]
- ldr r2, _080F5114 @ =0x00008fec
- adds r0, r4, r2
- strb r1, [r0]
- adds r5, r4, 0
- ldrh r1, [r3]
- movs r7, 0
- ldrsh r0, [r3, r7]
- cmp r0, 0
- beq _080F5118
- subs r2, r1, 0x1
- b _080F5120
- .align 2, 0
-_080F50FC: .4byte gUnknown_083DFEC4
-_080F5100: .4byte 0x00008fea
-_080F5104: .4byte 0x00008fe9
-_080F5108: .4byte 0x00009004
-_080F510C: .4byte 0x000087dc
-_080F5110: .4byte 0x0000893f
-_080F5114: .4byte 0x00008fec
-_080F5118:
- ldr r1, _080F513C @ =0x000087da
- adds r0, r4, r1
- ldrh r0, [r0]
- subs r2, r0, 0x1
-_080F5120:
- ldr r1, _080F5140 @ =0x000087dc
- adds r0, r5, r1
- strh r2, [r0]
- ldr r2, _080F5144 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- adds r1, r3, r1
- ldrh r4, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- beq _080F5148
- subs r1, r4, 0x1
- b _080F51CE
- .align 2, 0
-_080F513C: .4byte 0x000087da
-_080F5140: .4byte 0x000087dc
-_080F5144: .4byte gUnknown_083DFEC4
-_080F5148:
- ldr r7, _080F5154 @ =0x000087da
- adds r0, r3, r7
- ldrh r0, [r0]
- subs r1, r0, 0x1
- b _080F51CE
- .align 2, 0
-_080F5154: .4byte 0x000087da
-_080F5158:
- ldr r7, _080F518C @ =0x00008feb
- adds r1, r4, r7
- ldrb r0, [r1]
- subs r7, 0x1
- adds r2, r4, r7
- strb r0, [r2]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r6, [r5]
- ldrb r1, [r2]
- ldr r2, _080F5190 @ =0x00008fec
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, r4, 0
- movs r4, 0
- ldrsh r1, [r3, r4]
- ldr r5, _080F5194 @ =0x000087da
- adds r0, r2, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- subs r0, 0x1
- cmp r1, r0
- bge _080F5198
- ldrh r0, [r3]
- adds r3, r0, 0x1
- b _080F519A
- .align 2, 0
-_080F518C: .4byte 0x00008feb
-_080F5190: .4byte 0x00008fec
-_080F5194: .4byte 0x000087da
-_080F5198:
- movs r3, 0
-_080F519A:
- ldr r1, _080F51C0 @ =0x000087dc
- adds r0, r2, r1
- strh r3, [r0]
- ldr r2, _080F51C4 @ =gUnknown_083DFEC4
- ldr r3, [r2]
- adds r4, r3, r1
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r5, _080F51C8 @ =0x000087da
- adds r0, r3, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- subs r0, 0x1
- cmp r1, r0
- bge _080F51CC
- ldrh r0, [r4]
- adds r1, r0, 0x1
- b _080F51CE
- .align 2, 0
-_080F51C0: .4byte 0x000087dc
-_080F51C4: .4byte gUnknown_083DFEC4
-_080F51C8: .4byte 0x000087da
-_080F51CC:
- movs r1, 0
-_080F51CE:
- ldr r4, _080F51FC @ =0x00008fee
- adds r0, r3, r4
- strh r1, [r0]
- ldr r1, [r2]
- ldr r5, _080F5200 @ =0x000087dc
- adds r0, r1, r5
- movs r7, 0
- ldrsh r0, [r0, r7]
- lsls r0, 2
- adds r0, r1, r0
- ldr r3, _080F5204 @ =0x0000893f
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 31
- mov r4, r12
- cmp r4, 0
- bne _080F520C
- adds r5, 0x4
- adds r1, r5
- ldr r0, _080F5208 @ =sub_80F5264
- b _080F5226
- .align 2, 0
-_080F51FC: .4byte 0x00008fee
-_080F5200: .4byte 0x000087dc
-_080F5204: .4byte 0x0000893f
-_080F5208: .4byte sub_80F5264
-_080F520C:
- cmp r0, 0
- bne _080F5220
- ldr r7, _080F5218 @ =0x000087e0
- adds r1, r7
- ldr r0, _080F521C @ =sub_80F52F8
- b _080F5226
- .align 2, 0
-_080F5218: .4byte 0x000087e0
-_080F521C: .4byte sub_80F52F8
-_080F5220:
- ldr r0, _080F5238 @ =0x000087e0
- adds r1, r0
- ldr r0, _080F523C @ =sub_80F5364
-_080F5226:
- str r0, [r1]
- ldr r0, [r2]
- ldr r1, _080F5240 @ =0x000087de
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F5238: .4byte 0x000087e0
-_080F523C: .4byte sub_80F5364
-_080F5240: .4byte 0x000087de
- thumb_func_end sub_80F5060
-
- thumb_func_start gpu_sync_bg_show
-gpu_sync_bg_show: @ 80F5244
- push {lr}
- ldr r0, _080F525C @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5260 @ =0x000087e0
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080F525C: .4byte gUnknown_083DFEC4
-_080F5260: .4byte 0x000087e0
- thumb_func_end gpu_sync_bg_show
-
- thumb_func_start sub_80F5264
-sub_80F5264: @ 80F5264
- push {r4,r5,lr}
- ldr r0, _080F5280 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- ldr r1, _080F5284 @ =0x000087de
- adds r5, r0, r1
- ldrb r1, [r5]
- cmp r1, 0x1
- beq _080F52AA
- cmp r1, 0x1
- bgt _080F5288
- cmp r1, 0
- beq _080F528E
- b _080F52F0
- .align 2, 0
-_080F5280: .4byte gUnknown_083DFEC4
-_080F5284: .4byte 0x000087de
-_080F5288:
- cmp r1, 0x2
- beq _080F52EC
- b _080F52F0
-_080F528E:
- ldr r2, _080F52D8 @ =0x00008fe9
- adds r4, r0, r2
- ldrb r0, [r4]
- bl sub_80F2E18
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_080F52AA:
- bl sub_80F4FB4
- lsls r0, 24
- cmp r0, 0
- bne _080F52F0
- ldr r0, _080F52DC @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r1, _080F52E0 @ =0x00008fee
- adds r0, r4, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r2, _080F52E4 @ =0x00008fec
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- ldr r0, _080F52E8 @ =0x000087de
- adds r4, r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080F52F0
- .align 2, 0
-_080F52D8: .4byte 0x00008fe9
-_080F52DC: .4byte gUnknown_083DFEC4
-_080F52E0: .4byte 0x00008fee
-_080F52E4: .4byte 0x00008fec
-_080F52E8: .4byte 0x000087de
-_080F52EC:
- movs r0, 0
- b _080F52F2
-_080F52F0:
- movs r0, 0x1
-_080F52F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5264
-
- thumb_func_start sub_80F52F8
-sub_80F52F8: @ 80F52F8
- push {r4,r5,lr}
- ldr r0, _080F5310 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F5314 @ =0x000087de
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0
- beq _080F5318
- cmp r0, 0x1
- beq _080F5358
- b _080F535C
- .align 2, 0
-_080F5310: .4byte gUnknown_083DFEC4
-_080F5314: .4byte 0x000087de
-_080F5318:
- bl sub_80F5038
- lsls r0, 24
- cmp r0, 0
- bne _080F535C
- ldr r1, _080F5350 @ =0x00008fe9
- adds r0, r4, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- ldr r2, _080F5354 @ =0x00008fee
- adds r0, r4, r2
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r2, 0x2
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _080F535C
- .align 2, 0
-_080F5350: .4byte 0x00008fe9
-_080F5354: .4byte 0x00008fee
-_080F5358:
- movs r0, 0
- b _080F535E
-_080F535C:
- movs r0, 0x1
-_080F535E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F52F8
-
- thumb_func_start sub_80F5364
-sub_80F5364: @ 80F5364
- push {r4,r5,lr}
- ldr r0, _080F5380 @ =gUnknown_083DFEC4
- ldr r4, [r0]
- ldr r0, _080F5384 @ =0x000087de
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _080F53B8
- cmp r0, 0x1
- bgt _080F5388
- cmp r0, 0
- beq _080F538E
- b _080F53E4
- .align 2, 0
-_080F5380: .4byte gUnknown_083DFEC4
-_080F5384: .4byte 0x000087de
-_080F5388:
- cmp r0, 0x2
- beq _080F53CA
- b _080F53E4
-_080F538E:
- bl sub_80F5504
- bl sub_80F173C
- lsls r0, 24
- cmp r0, 0
- bne _080F53E4
- ldr r1, _080F53B4 @ =0x00008fe9
- adds r4, r1
- ldrb r0, [r4]
- bl sub_80F2E18
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- bl sub_80F01E0
- b _080F53C2
- .align 2, 0
-_080F53B4: .4byte 0x00008fe9
-_080F53B8:
- bl sub_80F4FB4
- lsls r0, 24
- cmp r0, 0
- bne _080F53E4
-_080F53C2:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _080F53E4
-_080F53CA:
- ldr r2, _080F53E0 @ =0x00008fee
- adds r0, r4, r2
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r2, 0x2
- adds r1, r4, r2
- ldrb r1, [r1]
- bl sub_80F4900
- movs r0, 0
- b _080F53E6
- .align 2, 0
-_080F53E0: .4byte 0x00008fee
-_080F53E4:
- movs r0, 0x1
-_080F53E6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5364
-
- thumb_func_start sub_80F53EC
-sub_80F53EC: @ 80F53EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r0, [sp]
- mov r9, r1
- movs r7, 0
- ldr r0, _080F54F4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- str r0, [sp, 0x4]
-_080F5404:
- lsls r4, r7, 2
- ldr r1, [sp]
- adds r0, r4, r1
- ldrh r1, [r0]
- lsls r5, r1, 8
- mov r2, r9
- adds r0, r4, r2
- ldrh r0, [r0]
- subs r0, r1
- lsls r0, 8
- movs r1, 0xA
- bl __divsi3
- adds r6, r0, 0
- movs r3, 0
- adds r7, 0x1
- mov r10, r7
- mov r8, r4
-_080F5428:
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- add r0, r8
- ldr r7, [sp, 0x4]
- adds r0, r7, r0
- asrs r2, r5, 8
- asrs r1, r5, 7
- movs r7, 0x1
- ands r1, r7
- adds r2, r1
- ldr r1, _080F54F8 @ =0x00009054
- adds r0, r1
- strh r2, [r0]
- adds r5, r6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x8
- bls _080F5428
- ldr r2, _080F54F4 @ =gUnknown_083DFEC4
- ldr r1, [r2]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4, r0
- adds r1, r0
- mov r3, r9
- adds r2, r4, r3
- ldrh r0, [r2]
- ldr r7, _080F54F8 @ =0x00009054
- adds r1, r7
- strh r0, [r1]
- ldr r1, [sp]
- adds r0, r4, r1
- ldrh r1, [r0, 0x2]
- lsls r5, r1, 8
- ldrh r0, [r2, 0x2]
- subs r0, r1
- lsls r0, 8
- movs r1, 0xA
- bl __divsi3
- adds r6, r0, 0
- movs r3, 0
- ldr r0, _080F54F4 @ =gUnknown_083DFEC4
- ldr r0, [r0]
- mov r12, r0
- str r4, [sp, 0x8]
- movs r2, 0x1
- mov r8, r2
-_080F548E:
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- ldr r7, [sp, 0x8]
- adds r0, r7, r0
- add r0, r12
- asrs r2, r5, 8
- asrs r1, r5, 7
- mov r7, r8
- ands r1, r7
- adds r2, r1
- ldr r1, _080F54FC @ =0x00009056
- adds r0, r1
- strh r2, [r0]
- adds r5, r6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x8
- bls _080F548E
- ldr r7, _080F54F4 @ =gUnknown_083DFEC4
- ldr r2, [r7]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r2, r0
- mov r3, r9
- adds r1, r4, r3
- ldrh r1, [r1, 0x2]
- ldr r7, _080F54FC @ =0x00009056
- adds r0, r7
- strh r1, [r0]
- mov r1, r10
- lsls r0, r1, 16
- lsrs r7, r0, 16
- cmp r7, 0x4
- bls _080F5404
- ldr r3, _080F5500 @ =0x00009342
- adds r1, r2, r3
- movs r0, 0
- strh r0, [r1]
- 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
-_080F54F4: .4byte gUnknown_083DFEC4
-_080F54F8: .4byte 0x00009054
-_080F54FC: .4byte 0x00009056
-_080F5500: .4byte 0x00009342
- thumb_func_end sub_80F53EC
-
- thumb_func_start sub_80F5504
-sub_80F5504: @ 80F5504
- push {r4,lr}
- ldr r0, _080F551C @ =gUnknown_083DFEC4
- ldr r2, [r0]
- ldr r0, _080F5520 @ =0x00009342
- adds r4, r2, r0
- ldrh r0, [r4]
- adds r1, r0, 0
- cmp r1, 0x9
- bls _080F5524
- movs r0, 0
- b _080F5544
- .align 2, 0
-_080F551C: .4byte gUnknown_083DFEC4
-_080F5520: .4byte 0x00009342
-_080F5524:
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F554C @ =0x00009054
- adds r0, r1
- adds r0, r2, r0
- bl sub_80F556C
- ldrh r1, [r4]
- movs r0, 0xA
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_080F5544:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F554C: .4byte 0x00009054
- thumb_func_end sub_80F5504
-
- thumb_func_start sub_80F5550
-sub_80F5550: @ 80F5550
- push {lr}
- bl sub_80F53EC
- pop {r0}
- bx r0
- thumb_func_end sub_80F5550
-
- thumb_func_start sub_80F555C
-sub_80F555C: @ 80F555C
- push {lr}
- bl sub_80F5504
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F555C
-
- thumb_func_start sub_80F556C
-sub_80F556C: @ 80F556C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _080F55A0 @ =gUnknown_083DFEC4
- ldr r0, [r5]
- ldr r1, _080F55A4 @ =0x0000911c
- adds r3, r0, r1
-_080F557A:
- lsls r0, r2, 2
- adds r1, r3, r0
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x4
- bls _080F557A
- ldr r0, [r5]
- ldr r1, _080F55A8 @ =0x00009344
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F55A0: .4byte gUnknown_083DFEC4
-_080F55A4: .4byte 0x0000911c
-_080F55A8: .4byte 0x00009344
- thumb_func_end sub_80F556C
-
thumb_func_start sub_80F55AC
sub_80F55AC: @ 80F55AC
push {r4-r7,lr}
@@ -12998,7 +2823,7 @@ _080F6B54:
bl sub_80F66E0
b _080F6BC6
_080F6B6E:
- bl sub_80F1238
+ bl DrawMonRibbonIcons
ldr r0, _080F6B7C @ =gUnknown_083DFEC4
ldr r1, [r0]
ldr r2, _080F6B80 @ =0x000087de
@@ -13715,7 +3540,7 @@ _080F7194: .4byte 0x00008788
_080F7198: .4byte 0x0000876e
_080F719C: .4byte 0x000087de
_080F71A0:
- bl sub_80F0CD8
+ bl LoadTrainerEyesDescriptionLines
ldr r0, _080F71D4 @ =gUnknown_083DFEC4
ldr r1, [r0]
ldr r0, _080F71D8 @ =0x0000bc95
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 9b27d25a1..2e79200cb 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -10,6 +10,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/weather.h"
+#include "constants/heal_locations.h"
#include "constants/vars.h"
.include "include/macros.inc"
.include "include/macros/event.inc"
diff --git a/data/battle_anim_813F0F4.s b/data/battle_anim_813F0F4.s
index fd24d95b6..b043929c3 100644
--- a/data/battle_anim_813F0F4.s
+++ b/data/battle_anim_813F0F4.s
@@ -4,7 +4,7 @@
.section .rodata
.align 2
-gUnknown_0840B258:: @ 840B258
+gBallOpenParticleSpritesheets:: @ 840B258
obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55020
obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55021
obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55022
@@ -19,7 +19,7 @@ gUnknown_0840B258:: @ 840B258
obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55031
.align 2
-gUnknown_0840B2B8:: @ 840B2B8
+gBallOpenParticlePalettes:: @ 840B2B8
obj_pal gBattleAnimSpritePalette_136, 55020
obj_pal gBattleAnimSpritePalette_136, 55021
obj_pal gBattleAnimSpritePalette_136, 55022
@@ -78,70 +78,48 @@ gSpriteAnimTable_840B360:: @ 840B360
.4byte gSpriteAnim_840B34C
.4byte gSpriteAnim_840B358
-gUnknown_0840B378:: @ 840B378
- .byte 0, 0, 0, 5, 1, 2, 2, 3, 5, 5, 4, 4
-
- .align 2
-gUnknown_0840B384:: @ 840B384
- .4byte sub_8140930
- .4byte sub_8140DC4
- .4byte sub_8140C14
- .4byte sub_8140CE8
- .4byte sub_8141058
- .4byte sub_8140C14
- .4byte sub_8140B3C
- .4byte sub_8140CE8
- .4byte sub_8140F24
- .4byte sub_8140A64
- .4byte sub_8140DC4
- .4byte sub_8141164
-
- .align 2
-gSpriteTemplate_840B3B4:: @ 840B3B4
+gBallOpenParticleAnimNums:: @ 840B378
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 5
+ .byte 1
+ .byte 2
+ .byte 2
+ .byte 3
+ .byte 5
+ .byte 5
+ .byte 4
+ .byte 4
+
+ .align 2
+gBallOpenParticleAnimationFuncs:: @ 840B384
+ .4byte PokeBallOpenParticleAnimation
+ .4byte GreatBallOpenParticleAnimation
+ .4byte SafariBallOpenParticleAnimation
+ .4byte UltraBallOpenParticleAnimation
+ .4byte MasterBallOpenParticleAnimation
+ .4byte SafariBallOpenParticleAnimation
+ .4byte DiveBallOpenParticleAnimation
+ .4byte UltraBallOpenParticleAnimation
+ .4byte RepeatBallOpenParticleAnimation
+ .4byte TimerBallOpenParticleAnimation
+ .4byte GreatBallOpenParticleAnimation
+ .4byte PremierBallOpenParticleAnimation
+
+ .align 2
+gSpriteTemplates_840B3B4:: @ 840B3B4
spr_template 55020, 55020, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B3CC:: @ 840B3CC
spr_template 55021, 55021, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B3E4:: @ 840B3E4
spr_template 55022, 55022, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B3FC:: @ 840B3FC
spr_template 55023, 55023, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B414:: @ 840B414
spr_template 55024, 55024, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B42C:: @ 840B42C
spr_template 55025, 55025, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B444:: @ 840B444
spr_template 55026, 55026, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B45C:: @ 840B45C
spr_template 55027, 55027, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B474:: @ 840B474
spr_template 55028, 55028, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B48C:: @ 840B48C
spr_template 55029, 55029, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B4A4:: @ 840B4A4
spr_template 55030, 55030, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_840B4BC:: @ 840B4BC
spr_template 55031, 55031, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 1
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 3ce319397..eef08bb79 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -10,6 +10,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/weather.h"
+#include "constants/heal_locations.h"
#include "constants/vars.h"
.include "include/macros.inc"
.include "include/macros/event.inc"
diff --git a/data/graphics.s b/data/graphics.s
index f48723501..587be6df0 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -4039,8 +4039,8 @@ gUnknown_08E96D2C:: @ 8E96D2C
.incbin "graphics/unknown/unknown_E96D2C.bin.lz"
.align 2
-gUnknown_08E96EC8:: @ 8E96EC8
- .incbin "graphics/unknown/unknown_E96EC8.bin"
+gBagScreenLabels_Tilemap:: @ 8E96EC8
+ .incbin "graphics/interface/bag_screen_labels.bin"
.align 2
gSlotMachineSpritePalette0:: @ 8E976C8
diff --git a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
index 33d14e770..38f242eab 100644
--- a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ DewfordTown_PokemonCenter_1F_MapScripts:: @ 8153014
.byte 0
DewfordTown_PokemonCenter_1F_MapScript1_15301A:: @ 815301A
- setrespawn 15
+ setrespawn HEAL_LOCATION_DEWFORD_TOWN
call DewfordTown_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/EverGrandeCity_HallOfFame/scripts.inc b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
index 6cfc5ae27..4b54204d3 100644
--- a/data/maps/EverGrandeCity_HallOfFame/scripts.inc
+++ b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
@@ -51,7 +51,7 @@ EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8
end
EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41
- setrespawn 1
+ setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F
fadescreenspeed 1, 24
special GameClear
waitstate
@@ -59,7 +59,7 @@ EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41
end
EverGrandeCity_HallOfFame_EventScript_15BC4D:: @ 815BC4D
- setrespawn 2
+ setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F
fadescreenspeed 1, 24
special GameClear
waitstate
diff --git a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
index 374ef9472..3c0ad3732 100644
--- a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ EverGrandeCity_PokemonCenter_1F_MapScripts:: @ 815BC66
.byte 0
EverGrandeCity_PokemonCenter_1F_MapScript1_15BC6C:: @ 815BC6C
- setrespawn 11
+ setrespawn HEAL_LOCATION_EVER_GRANDE_CITY_1
end
EverGrandeCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70
diff --git a/data/maps/EverGrandeCity_PokemonLeague/scripts.inc b/data/maps/EverGrandeCity_PokemonLeague/scripts.inc
index a48cf278e..6da717d06 100644
--- a/data/maps/EverGrandeCity_PokemonLeague/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonLeague/scripts.inc
@@ -3,7 +3,7 @@ EverGrandeCity_PokemonLeague_MapScripts:: @ 815BA75
.byte 0
EverGrandeCity_PokemonLeague_MapScript1_15BA7B:: @ 815BA7B
- setrespawn 20
+ setrespawn HEAL_LOCATION_EVER_GRANDE_CITY_2
setflag FLAG_SYS_POKEMON_LEAGUE_FLY
call_if_unset FLAG_ENTERED_ELITE_FOUR, EverGrandeCity_PokemonLeague_EventScript_15BA8B
end
diff --git a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
index 6ae897ec8..801f704e3 100644
--- a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ FallarborTown_PokemonCenter_1F_MapScripts:: @ 8153AF3
.byte 0
FallarborTown_PokemonCenter_1F_MapScript1_153AF9:: @ 8153AF9
- setrespawn 17
+ setrespawn HEAL_LOCATION_FALLARBOR_TOWN
call FallarborTown_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
index 6d847d7cc..999541b31 100644
--- a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ FortreeCity_PokemonCenter_1F_MapScripts:: @ 8158011
.byte 0
FortreeCity_PokemonCenter_1F_MapScript1_158017:: @ 8158017
- setrespawn 7
+ setrespawn HEAL_LOCATION_FORTREE_CITY
end
FortreeCity_PokemonCenter_1F_EventScript_15801B:: @ 815801B
diff --git a/data/maps/InsideOfTruck/scripts.inc b/data/maps/InsideOfTruck/scripts.inc
index 37fa85041..b2617c8f7 100644
--- a/data/maps/InsideOfTruck/scripts.inc
+++ b/data/maps/InsideOfTruck/scripts.inc
@@ -24,7 +24,7 @@ InsideOfTruck_EventScript_15FC29:: @ 815FC29
end
InsideOfTruck_EventScript_15FC45:: @ 815FC45
- setrespawn 1
+ setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F
setvar VAR_LITTLEROOT_INTRO_STATE, 1
setflag FLAG_HIDE_MAY_MOM_DOWNSTAIRS
setflag FLAG_HIDE_MOVING_TRUCK_MAY
@@ -36,7 +36,7 @@ InsideOfTruck_EventScript_15FC45:: @ 815FC45
end
InsideOfTruck_EventScript_15FC68:: @ 815FC68
- setrespawn 2
+ setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F
setvar VAR_LITTLEROOT_INTRO_STATE, 2
setflag FLAG_HIDE_BRENDAN_MOM_DOWNSTAIRS
setflag FLAG_HIDE_MOVING_TRUCK_BRENDAN
diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
index 4e9c51380..611ced28f 100644
--- a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ LavaridgeTown_PokemonCenter_1F_MapScripts:: @ 815390C
.byte 0
LavaridgeTown_PokemonCenter_1F_MapScript1_153912:: @ 8153912
- setrespawn 16
+ setrespawn HEAL_LOCATION_LAVARIDGE_TOWN
call LavaridgeTown_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
index cff88caf0..508f5fab8 100644
--- a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ LilycoveCity_PokemonCenter_1F_MapScripts:: @ 8159327
.byte 0
LilycoveCity_PokemonCenter_1F_MapScript1_15932D:: @ 815932D
- setrespawn 8
+ setrespawn HEAL_LOCATION_LILYCOVE_CITY
end
LilycoveCity_PokemonCenter_1F_EventScript_159331:: @ 8159331
diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
index 85590f9c2..817679cec 100644
--- a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8157351
.byte 0
MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357
- setrespawn 5
+ setrespawn HEAL_LOCATION_MAUVILLE_CITY
call MauvilleCity_PokemonCenter_1F_EventScript_19FD1B
goto MauvilleCity_PokemonCenter_1F_EventScript_157365
end
diff --git a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
index a722e666b..906cf8e83 100644
--- a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ MossdeepCity_PokemonCenter_1F_MapScripts:: @ 815A8D0
.byte 0
MossdeepCity_PokemonCenter_1F_MapScript1_15A8D6:: @ 815A8D6
- setrespawn 9
+ setrespawn HEAL_LOCATION_MOSSDEEP_CITY
end
MossdeepCity_PokemonCenter_1F_EventScript_15A8DA:: @ 815A8DA
diff --git a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
index c993807c6..16e11d6a2 100644
--- a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ OldaleTown_PokemonCenter_1F_MapScripts:: @ 8152F08
.byte 0
OldaleTown_PokemonCenter_1F_MapScript1_152F0E:: @ 8152F0E
- setrespawn 14
+ setrespawn HEAL_LOCATION_OLDALE_TOWN
call OldaleTown_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
index 557b6497e..ea7a8e056 100644
--- a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ PacifidlogTown_PokemonCenter_1F_MapScripts:: @ 81540FF
.byte 0
PacifidlogTown_PokemonCenter_1F_MapScript1_154105:: @ 8154105
- setrespawn 19
+ setrespawn HEAL_LOCATION_PACIFIDLOG_TOWN
end
@ 8154109
diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
index 136cc11c5..6753865e0 100644
--- a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ PetalburgCity_PokemonCenter_1F_MapScripts:: @ 8155204
.byte 0
PetalburgCity_PokemonCenter_1F_MapScript1_15520A:: @ 815520A
- setrespawn 3
+ setrespawn HEAL_LOCATION_PETALBURG_CITY
call PetalburgCity_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
index 653cceb25..c0bb5c2dd 100644
--- a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ RustboroCity_PokemonCenter_1F_MapScripts:: @ 8157B79
.byte 0
RustboroCity_PokemonCenter_1F_MapScript1_157B7F:: @ 8157B7F
- setrespawn 6
+ setrespawn HEAL_LOCATION_RUSTBORO_CITY
call RustboroCity_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc
index 57872a66a..0f2028476 100644
--- a/data/maps/SSTidalCorridor/scripts.inc
+++ b/data/maps/SSTidalCorridor/scripts.inc
@@ -122,7 +122,7 @@ SSTidalCorridor_EventScript_15FDD6:: @ 815FDD6
end
SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8
- setrespawn 8
+ setrespawn HEAL_LOCATION_LILYCOVE_CITY
msgbox SSTidalCorridor_Text_1991F4, 4
call_if_set FLAG_RECEIVED_TM49, SSTidalCorridor_EventScript_15FE36
warp MAP_LILYCOVE_CITY_HARBOR, 255, 8, 11
@@ -131,7 +131,7 @@ SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8
end
SSTidalCorridor_EventScript_15FE17:: @ 815FE17
- setrespawn 4
+ setrespawn HEAL_LOCATION_SLATEPORT_CITY
msgbox SSTidalCorridor_Text_1991F4, 4
call_if_set FLAG_RECEIVED_TM49, SSTidalCorridor_EventScript_15FE36
warp MAP_SLATEPORT_CITY_HARBOR, 255, 8, 11
diff --git a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
index 37b2b95ab..1164e96d6 100644
--- a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ SlateportCity_PokemonCenter_1F_MapScripts:: @ 81563BF
.byte 0
SlateportCity_PokemonCenter_1F_MapScript1_1563C5:: @ 81563C5
- setrespawn 4
+ setrespawn HEAL_LOCATION_SLATEPORT_CITY
call SlateportCity_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
index 820dd4858..ebfaf4e23 100644
--- a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ SootopolisCity_PokemonCenter_1F_MapScripts:: @ 815B190
.byte 0
SootopolisCity_PokemonCenter_1F_MapScript1_15B196:: @ 815B196
- setrespawn 10
+ setrespawn HEAL_LOCATION_SOOTOPOLIS_CITY
end
@ 815B19A
diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
index 956a28ac5..de2f770d6 100644
--- a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
@@ -3,7 +3,7 @@ VerdanturfTown_PokemonCenter_1F_MapScripts:: @ 8153F09
.byte 0
VerdanturfTown_PokemonCenter_1F_MapScript1_153F0F:: @ 8153F0F
- setrespawn 18
+ setrespawn HEAL_LOCATION_VERDANTURF_TOWN
call VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B
end
diff --git a/data/pokenav.s b/data/pokenav.s
index cb0e98472..485568157 100644
--- a/data/pokenav.s
+++ b/data/pokenav.s
@@ -700,7 +700,7 @@ gUnknown_083E4678:: @ 83E4678
.incbin "graphics/pokenav/83E4678.gbapal"
.align 2
-gUnknown_083E4698:: @ 83E4698
+gPokenavRibbonsIconGfx:: @ 83E4698
.2byte 0, 0
.2byte 1, 0
.2byte 2, 0
diff --git a/graphics/unknown/unknown_E96EC8.bin b/graphics/interface/bag_screen_labels.bin
index eaaed586e..eaaed586e 100644
--- a/graphics/unknown/unknown_E96EC8.bin
+++ b/graphics/interface/bag_screen_labels.bin
Binary files differ
diff --git a/graphics/unknown_sprites/83C172C.png b/graphics/interface/bag_spinner.png
index a05d86c79..a05d86c79 100644
--- a/graphics/unknown_sprites/83C172C.png
+++ b/graphics/interface/bag_spinner.png
Binary files differ
diff --git a/include/battle_anim_813F0F4.h b/include/battle_anim_813F0F4.h
index 9916f2fe6..fea5d186d 100644
--- a/include/battle_anim_813F0F4.h
+++ b/include/battle_anim_813F0F4.h
@@ -3,7 +3,7 @@
void sub_8141828(u8, struct Pokemon *);
u8 ball_number_to_ball_processing_index(u16);
-u8 sub_814086C(u8, u8, u8, u8, u8);
+u8 AnimateBallOpenParticles(u8, u8, u8, u8, u8);
u8 sub_8141314(u8, u8, u32, u8);
#endif // GUARD_BATTLE_ANIM_813F0F4_H
diff --git a/include/constants/heal_locations.h b/include/constants/heal_locations.h
new file mode 100644
index 000000000..721bc5a3c
--- /dev/null
+++ b/include/constants/heal_locations.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_CONSTANTS_HEAL_LOCATIONS_H
+#define GUARD_CONSTANTS_HEAL_LOCATIONS_H
+
+#define HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F 2
+#define HEAL_LOCATION_PETALBURG_CITY 3
+#define HEAL_LOCATION_SLATEPORT_CITY 4
+#define HEAL_LOCATION_MAUVILLE_CITY 5
+#define HEAL_LOCATION_RUSTBORO_CITY 6
+#define HEAL_LOCATION_FORTREE_CITY 7
+#define HEAL_LOCATION_LILYCOVE_CITY 8
+#define HEAL_LOCATION_MOSSDEEP_CITY 9
+#define HEAL_LOCATION_SOOTOPOLIS_CITY 10
+#define HEAL_LOCATION_EVER_GRANDE_CITY_1 11
+#define HEAL_LOCATION_LITTLEROOT_TOWN_1 12
+#define HEAL_LOCATION_LITTLEROOT_TOWN_2 13
+#define HEAL_LOCATION_OLDALE_TOWN 14
+#define HEAL_LOCATION_DEWFORD_TOWN 15
+#define HEAL_LOCATION_LAVARIDGE_TOWN 16
+#define HEAL_LOCATION_FALLARBOR_TOWN 17
+#define HEAL_LOCATION_VERDANTURF_TOWN 18
+#define HEAL_LOCATION_PACIFIDLOG_TOWN 19
+#define HEAL_LOCATION_EVER_GRANDE_CITY_2 20
+#define HEAL_LOCATION_BATTLE_TOWER_OUTSIDE 21
+#define HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR 22
+
+#endif // GUARD_CONSTANTS_HEAL_LOCATIONS_H
diff --git a/include/global.h b/include/global.h
index 36e1db978..374701930 100644
--- a/include/global.h
+++ b/include/global.h
@@ -96,12 +96,15 @@ enum LanguageId
// capacities of various saveblock objects
#define DAYCARE_MON_COUNT 2
#define POKEBLOCKS_COUNT 40
-#define EVENT_OBJECTS_COUNT 16
+#define PARTY_SIZE 6
+#define EVENT_OBJECTS_COUNT 16
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 288
#define VARS_COUNT 256
#define MAIL_COUNT 16
#define SECRET_BASES_COUNT 20
+#define TV_SHOWS_COUNT 25
+#define POKE_NEWS_COUNT 16
#define PC_ITEMS_COUNT 50
#define BAG_ITEMS_COUNT 20
#define BAG_KEYITEMS_COUNT 20
@@ -686,8 +689,8 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2704*/ u8 decorDoll[40];
/*0x272C*/ u8 decorCushion[10];
/*0x2736*/ u8 padding_2736[2];
- /*0x2738*/ TVShow tvShows[25];
- /*0x2ABC*/ struct PokeNews pokeNews[16];
+ /*0x2738*/ TVShow tvShows[TV_SHOWS_COUNT];
+ /*0x2ABC*/ struct PokeNews pokeNews[POKE_NEWS_COUNT];
/*0x2AFC*/ u16 outbreakPokemonSpecies;
/*0x2AFE*/ u8 outbreakLocationMapNum;
/*0x2AFF*/ u8 outbreakLocationMapGroup;
diff --git a/include/graphics.h b/include/graphics.h
index d9390e1b6..f242e3752 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2615,7 +2615,7 @@ extern const u8 gMailTilemap_Dream[];
extern const u8 gMailTilemap_Fab[];
extern const u8 gMailTilemap_Retro[];
-extern const u8 gUnknown_08E96EC8[];
+extern const u8 gBagScreenLabels_Tilemap[];
extern const u8 gMenuTrainerCard_Gfx[];
extern const u16 gMenuTrainerCard0Star_Pal[];
diff --git a/include/heal_location.h b/include/heal_location.h
index 94dac2417..46f0d785a 100644
--- a/include/heal_location.h
+++ b/include/heal_location.h
@@ -1,8 +1,6 @@
#ifndef GUARD_HEAL_LOCATION_H
#define GUARD_HEAL_LOCATION_H
-#include "sprite.h"
-
struct HealLocation
{
s8 group;
diff --git a/include/pokeball.h b/include/pokeball.h
index 0a709c869..e814718c0 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -5,8 +5,8 @@ extern const struct SpriteTemplate gBallSpriteTemplates[];
void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s4);
void sub_804777C(u8);
-void sub_80478DC(u8);
-void sub_804794C(u8);
+void LoadBallGraphics(u8);
+void FreeBallGraphics(u8);
u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32);
#endif // GUARD_POKEBALL_H
diff --git a/include/pokedex.h b/include/pokedex.h
index f051b4afe..1d3d9b388 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -3,6 +3,9 @@
#include "sprite.h"
+#define HOENN_DEX_COUNT 202
+#define NATIONAL_DEX_COUNT 386
+
void ResetPokedex(void);
void sub_808C0A0(void);
void CB2_InitPokedex(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 783263aad..67ce267ab 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -137,7 +137,6 @@
#define STATUS_PRIMARY_POKERUS 0x6
#define STATUS_PRIMARY_FAINTED 0x7
-#define PARTY_SIZE 6
#define MAX_TOTAL_EVS 510
#define NUM_STATS 6
#define UNOWN_FORM_COUNT 28
diff --git a/include/pokenav.h b/include/pokenav.h
index f77f93e2d..a72cea9c4 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -2,10 +2,13 @@
#define GUARD_POKENAV_H
#include "region_map.h"
+#include "mon_markings.h"
struct UnkPokenavStruct_Sub {
/*0x0*/ u16 unk0;
- /*0x2*/ u8 filler2[6];
+ /*0x2*/ u16 unk2;
+ /*0x4*/ u8 unk4;
+ /*0x5*/ u8 unk5;
};
struct UnkPokenavStruct_Sub1 {
@@ -27,36 +30,65 @@ struct UnkPokenavStruct_Sub1 {
/*0x66*/ s16 unk66[5];
};
-struct UnkPokenavStruct_Sub2 {
- /*0x00*/ u8 filler_00[0x26];
- /*0x26*/ u16 unk26;
-};
-
struct UnkPokenavStruct_Sub3 {
/*0x00*/s16 unk0;
};
struct UnkUsePokeblockSub {
- /*0*/ u8 fil0[2];
- /*2*/ u8 partyIdx:5;
- /*2*/ u16 unk2:9;
+ /*0x0*/ u8 unk0;
+ /*0x1*/ u8 unk1;
+ /*0x2*/ u8 partyIdx:5;
+ /*0x2*/ u16 unk2:9;
+ /*0x3*/ u8 unk4:1;
+};
+
+struct UnkPokenav11 {
+ u16 unk0;
+ u16 unk2;
};
struct UnkPokenavStruct {
- /*0x0000*/ u8 filler0000[0x306];
+ /*0x0000*/ u16 unk0[6][0x40];
+ /*0x0300*/ u8 filler0300[0x6];
/*0x0306*/ u16 unk306;
- /*0x0306*/ u8 filler0308[0x4];
- /*0x030C*/ union { // TODO: what?
- u16 val;
- struct UnkPokenavStruct_Sub3 unk030C;
- } unk030C;
- /*0x0310*/ u8 filler030E[0x6a90];
+ /*0x0306*/ int unk308;
+ /*0x030C*/ s16 unk030C;
+ /*0x030E*/ s8 unk30E;
+ /*0x030F*/ u8 unk30F;
+ /*0x0310*/ u8 filler0310[0x1];
+ /*0x0311*/ u8 unk311;
+ /*0x0312*/ u16 unk312;
+ /*0x0314*/ u16 unk314[6];
+ /*0x0320*/ struct Sprite *unk320[6][4];
+ /*0x0380*/ struct SpriteSheet unk380;
+ /*0x0388*/ u8 unk388[0x1400];
+ /*0x1788*/ u8 unk1788[0xC00];
+ /*0x2388*/ u8 unk2388[0x1800];
+ /*0x3B88*/ struct Sprite *unk3B88[2];
+ /*0x3B90*/ struct Sprite *unk3B90[2];
+ /*0x3B98*/ u8 unk3B98[0x600];
+ /*0x4198*/ u8 unk4198[0x600];
+ /*0x4798*/ u8 unk4798[0x600];
+ /*0x4D98*/ u8 unk4D98[0x600];
+ /*0x5398*/ u8 unk5398[0xC00];
+ /*0x5F98*/ u8 unk5F98[0x200];
+ /*0x6198*/ u8 unk6198[0x200];
+ /*0x6398*/ u8 unk6398[0x200];
+ /*0x6598*/ u8 unk6598[0x200];
+ /*0x6798*/ u8 unk6798[0x200];
+ /*0x6998*/ u8 unk6998[0x200];
+ /*0x6B98*/ u8 unk6B98[0x200];
+ /*0x6D98*/ struct Sprite *unk6D98;
+ /*0x6D9C*/ struct Sprite *unk6D9C;
/*0x6DA0*/ u16 unk6DA0;
/*0x6DA2*/ u16 unk6DA2;
/*0x6DA4*/ u16 taskId6DA4;
/*0x6DA6*/ u8 filler6DA6[0x6];
/*0x6DAC*/ u8 unk6DAC;
- /*0x6DAD*/ u8 filler6DAD[0x6B];
+ /*0x6DAD*/ s8 unk6DAD;
+ /*0x6DAE*/ s8 unk6DAE;
+ /*0x6DAF*/ u8 filler6DAF[0x3];
+ /*0x6DB2*/ u8 unk6DB2[0x66];
/*0x6E18*/ struct RegionMap regionMap;
/*0x7698*/ u16 unk7698;
/*0x769A*/ u16 unk769A;
@@ -65,38 +97,80 @@ struct UnkPokenavStruct {
/*0x769E*/ u8 unk769E;
/*0x769F*/ u8 filler769F[0xB];
/*0x76AA*/ u8 unk76AA;
- /*0x76AB*/ u8 filler76AB[0x10bd];
- /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768;
- /*0x876C*/ u8 filler876C[0x2];
- /*0x876E*/ u8 unk876E;
- /*0x876F*/ u8 filler876F[0x7];
- /*0x8776*/ u16 unk8776;
+ /*0x76AC*/ struct Sprite *unk76AC;
+ /*0x76B0*/ struct PokemonMarkMenu unk76B0;
+ /*0x8764*/ u16 unk8764;
+ /*0x8766*/ s16 unk8766;
+ /*0x8768*/ struct Sprite *unk8768;
+ /*0x876C*/ s16 unk876C;
+ /*0x876E*/ s16 unk876E;
+ /*0x8770*/ s16 unk8770;
+ /*0x8772*/ s16 unk8772;
+ /*0x8774*/ s16 unk8774;
+ /*0x8776*/ s16 unk8776;
/*0x8778*/ u16 unk8778;
- /*0x877A*/ u8 filler877A[0xE];
+ /*0x877A*/ s16 unk877A;
+ /*0x877C*/ s16 unk877C;
+ /*0x877E*/ u16 unk877E;
+ /*0x8780*/ u16 unk8780;
+ /*0x8782*/ u8 filler8782[0x2];
+ /*0x8784*/ u16 unk8784;
+ /*0x8786*/ u16 unk8786;
/*0x8788*/ u8 unk8788[0x40];
/*0x87C8*/ u8 unk87C8;
- /*0x87C9*/ u8 filler87C9;
+ /*0x87C9*/ u8 unk87C9;
/*0x87CA*/ u8 unk87CA;
- /*0x87CB*/ u8 filler87CB[0xF];
+ /*0x87CB*/ u8 unk87CB;
+ /*0x87CC*/ struct Sprite *unk87CC;
+ /*0x87D0*/ struct Sprite *unk87D0[2];
+ /*0x87D8*/ u8 unk87D8;
+ /*0x87D9*/ u8 filler87D9[0x1];
/*0x87DA*/ s16 unk87DA;
/*0x87DC*/ s16 unk87DC;
- /*0x87DE*/ s16 unk87DE;
- /*0x87E0*/ void *unk87E0;
- /*0x87E4*/ u8 filler87E4[0x44];
+ /*0x87DE*/ u8 unk87DE;
+ /*0x87DF*/ u8 filler87DF[0x1];
+ /*0x87E0*/ bool8 (*unk87E0)(void);
+ /*0x87E4*/ struct Sprite *unk87E4[7];
+ /*0x8800*/ struct Sprite *unk8800[10];
/*0x8828*/ u8 unk8828;
/*0x8829*/ u8 unk8829[3][64];
/*0x88E9*/ u8 unk88E9[3][24];
- /*0x8931*/ u8 unk8931[11];
- /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab];
- /*0x8fe8*/ u8 fil8fe8[1];
+ /*0x8931*/ u8 unk8931[3];
+ /*0x8934*/ u8 unk8934[3];
+ /*0x8937*/ u8 unk8937[5];
+ /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1AA];
+ /*0x8FE4*/ u16 unk8FE4;
+ /*0x8FE6*/ u8 unk8FE6;
+ /*0x8FE7*/ u8 unk8FE7;
+ /*0x8FE8*/ u8 filler8FE8[0x1];
/*0x8fe9*/ s8 unk8fe9;
- /*0x8fea*/ u8 fil8fea[6];
- /*0x8ff0*/ u8 unk8ff0;
- /*0x8ff1*/ u8 filler8ff1[0x13];
- /*0x9004*/ u8 unk9004[3][20];
- /*0x9040*/ u8 unk9040[0x304];
+ /*0x8fea*/ s8 unk8FEA;
+ /*0x8feb*/ s8 unk8FEB;
+ /*0x8fec*/ s8 unk8FEC;
+ /*0x8FED*/ u8 filler8FED[0x1];
+ /*0x8fee*/ u16 unk8FEE;
+ /*0x8ff0*/ u8 unk8ff0[4][5];
+ /*0x9004*/ struct UnkPokenav11 unk9004[3][5];
+ /*0x9040*/ struct UnkPokenav11 unk9040[5];
+ /*0x9054*/ struct UnkPokenav11 unk9054[9][5];
+ /*0x9108*/ u8 unk9108[0x14];
+ /*0x911C*/ struct UnkPokenav11 unk911C[5];
+ /*0x9130*/ u8 filler9130[0x212];
+ /*0x9342*/ u16 unk9342;
/*0x9344*/ u8 unk9344;
- /*0x9345*/ u8 filler9345[0x2955];
+ /*0x9345*/ u8 filler9345[3];
+ /*0x9348*/ struct Sprite *unk9348;
+ /*0x934C*/ u16 unk934C[0x280];
+ /*0x984C*/ u8 unk984C[0xC][0x100];
+ /*0xA44C*/ u8 unkA44C[0xC][0x200];
+ /*0xBC4C*/ u8 unkBC4C[0x42];
+ /*0xBC8E*/ u8 unkBC8E;
+ /*0xBC8F*/ u8 unkBC8F;
+ /*0xBC90*/ u8 unkBC90;
+ /*0xBC91*/ u8 unkBC91;
+ /*0xBC92*/ u8 unkBC92;
+ /*0xBC93*/ u8 unkBC93;
+ /*0xBC94*/ u8 fillerBC94[0x6];
/*0xBC9A*/ u8 unkBC9A;
/*0xBC9B*/ u8 unkBC9B;
/*0xBC9C*/ u8 unkBC9C[22][200];
@@ -105,13 +179,27 @@ struct UnkPokenavStruct {
/*0xCE4E*/ u16 unkCE4E;
/*0xCE50*/ u16 unkCE50;
/*0xCE52*/ u16 palettesCE52[30];
- /*0xCE8E*/ u16 palettesCE8E[0x2D];
- /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
+ /*0xCE8E*/ u16 palettesCE8E[0x21];
+ /*0xCED0*/ struct Sprite *unkCED0;
+ /*0xCED4*/ struct Sprite *unkCED4[5];
+ /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[69];
+ /*0xD110*/ const u8 *trainerEyeDescriptionLines[4];
+ /*0xD120*/ u8 fillerD114[0x18];
+ /*0xD138*/ u8 unkD138[0x20];
/*0xD158*/ u16 unkD158;
- /*0xD15A*/ u8 fillerD15A[6];
+ /*0xD15A*/ u16 unkD15A;
+ /*0xD15C*/ u16 unkD15C;
+ /*0xD15E*/ u8 fillerD15E[2];
/*0xD160*/ u16 unkD160;
- /*0xD162*/ u8 unkD162[2];
+ /*0xD162*/ u8 unkD162;
/*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
+ /*0xD1D4*/ u8 fillerD1D6[0x2];
+ /*0xD1D6*/ u16 unkD1D6[3];
+ /*0xD1DC*/ u16 unkD1DC;
+ /*0xD1DE*/ u16 unkD1DE;
+ /*0xD1E0*/ u8 *unkD1E0;
+ /*0xD1E4*/ u8 unkD1E4[3][0x2000];
+ /*0x131E4*/ u8 unk131E4[0x1000];
};
extern struct UnkPokenavStruct *const gUnknown_083DFEC4;
@@ -128,7 +216,7 @@ void sub_80F33A8(void);
void sub_80F3C94(void);
void sub_80F3D00(void);
void sub_80F4BD0(void);
-void sub_80F556C(void *);
+void sub_80F556C(struct UnkPokenav11*);
void sub_80F567C(void *, void *);
void sub_80F5B38(void);
bool8 sub_80F5B50(void);
@@ -137,7 +225,7 @@ void sub_80EBA5C(void);
void sub_80F5060(bool8);
void move_anim_execute(void);
bool8 gpu_sync_bg_show(void);
-void sub_80F5550(void *, void *);
+void sub_80F5550(struct UnkPokenav11*, struct UnkPokenav11*);
bool8 sub_80F555C(void);
void sub_80F7224(u8);
void sub_80F5BDC(void);
diff --git a/include/region_map.h b/include/region_map.h
index 4c10d84cb..7ded72e49 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -78,6 +78,7 @@ const u8 *CopyLocationName(u8 *dest, u16 b);
void CB2_InitFlyRegionMap(void);
void debug_sub_8110F28(void);
u16 GetRegionMapSectionAt_(u16 x, u16 y);
+void sub_80FBF94(void);
extern const struct RegionMapLocation gRegionMapLocations[];
diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h
index 978476d89..025a135a4 100644
--- a/include/use_pokeblock.h
+++ b/include/use_pokeblock.h
@@ -9,5 +9,6 @@ extern void *gUnknown_02030400;
extern s16 gUnknown_02039312;
void sub_8136130(struct Pokeblock *, MainCallback);
+u8 sub_8137124(u8);
#endif //POKERUBY_USE_POKEBLOCK_H
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index 0e9c45023..6edc56549 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "blend_palette.h"
#include "contest.h"
#include "data2.h"
#include "decompress.h"
@@ -18,6 +19,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
extern u8 gAnimVisualTaskCount;
+extern u8 gAnimFriendship;
extern s32 gAnimMoveDmg;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
@@ -30,6 +32,9 @@ extern u16 gBattle_BG2_Y;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
extern const struct SpriteTemplate gSpriteTemplate_8402500;
+extern const struct SpriteTemplate gSpriteTemplate_84028CC;
+extern const struct SpriteTemplate gSpriteTemplate_840294C;
+extern const struct SpriteTemplate gSpriteTemplate_84029AC;
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
extern const union AffineAnimCmd gUnknown_08402400[];
@@ -38,6 +43,9 @@ extern const union AffineAnimCmd gUnknown_08402518[];
extern const union AffineAnimCmd gUnknown_08402540[];
extern const union AffineAnimCmd gUnknown_08402590[];
extern const union AffineAnimCmd gUnknown_08402610[];
+extern const union AffineAnimCmd gUnknown_08402750[];
+extern const union AffineAnimCmd gUnknown_084028AC[];
+extern const union AffineAnimCmd gUnknown_084029DC[];
extern const u32 gUnknown_08D2AA98[];
extern const u32 gUnknown_08D2A9E0[];
extern const u16 gUnknown_08D2AA80[];
@@ -45,11 +53,17 @@ extern const s8 gUnknown_084025C0[];
extern const s8 gUnknown_08402604[];
extern const u8 gUnknown_08402608[];
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84025EC;
+extern const u8 gUnknown_08D2E014[];
+extern const u8 gUnknown_08D2E170[];
+extern const u16 gUnknown_08D2E150[];
extern u8 gBattleMonForms[];
extern u8 gBankSpriteIds[];
extern u16 gBattlerPartyIndexes[];
+extern s16 gUnknown_084028E4[];
extern u8 sub_8046234(s16 x, s16 y, u8 a3);
+extern void sub_80DA48C(struct Sprite *);
+extern void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette);
static void sub_812C184(struct Sprite *sprite);
static void sub_812C268(struct Sprite *sprite);
@@ -82,7 +96,26 @@ static void sub_812EE00(struct Sprite *sprite);
static void sub_812EEEC(struct Sprite *sprite);
/*static*/ void sub_812F238(u8 taskId);
static void sub_812F290(u8 taskId);
-void sub_812F474(u8 taskId);
+static void sub_812F474(u8 taskId);
+static void sub_812F76C(u8 taskId);
+static void sub_812F8DC(struct Sprite *sprite);
+static void sub_812FE20(u8 taskId);
+static void sub_812FEB8(u8, bool8);
+static void sub_813003C(u8 taskId);
+static void sub_81301B4(struct Sprite *sprite);
+static void sub_81302E4(u8 taskId);
+static void sub_8130424(s16, s16, s16, s16, u8, u8, s16*, s16*);
+static void sub_81306A4(u8 taskId);
+static void sub_813085C(struct Sprite *sprite);
+static void sub_8130970(u8 taskId);
+static void sub_8130A94(struct Sprite *sprite);
+static void sub_8130B38(struct Sprite *sprite);
+static void sub_8130DBC(u8 taskId);
+static void sub_8130FE0(struct Sprite *sprite);
+static void sub_8131408(u8 taskId);
+static void sub_81315C8(struct Sprite *sprite);
+static void sub_8131810(u8 taskId);
+static void sub_8131838(struct Sprite *sprite);
void sub_812C144(struct Sprite *sprite)
@@ -2553,3 +2586,1557 @@ void sub_812F314(u8 taskId)
ScanlineEffect_SetParams(scanlineParams);
task->func = sub_812F474;
}
+
+static void sub_812F474(u8 taskId)
+{
+ struct Task *task;
+ s16 var1;
+ s16 var2;
+ s16 bgX, bgY;
+ s16 offset;
+ s16 var0;
+ s16 i;
+ s16 sineIndex;
+ s16 var3;
+
+ task = &gTasks[taskId];
+ if (GetBattlerPosition_permutated(task->data[5]) == 1)
+ {
+ bgX = gBattle_BG1_X;
+ bgY = gBattle_BG1_Y;
+ }
+ else
+ {
+ bgX = gBattle_BG2_X;
+ bgY = gBattle_BG2_Y;
+ }
+
+ switch (task->data[0])
+ {
+ case 0:
+ offset = task->data[14] * 2;
+ var1 = 0;
+ var2 = 0;
+ i = 0;
+ task->data[1] = (task->data[1] + 2) & 0xFF;
+ sineIndex = task->data[1];
+ task->data[9] = 0x7E0 / task->data[6];
+ task->data[10] = -((task->data[7] * 2) / task->data[9]);
+ task->data[11] = task->data[7];
+ var3 = task->data[11] >> 5;
+ task->data[12] = var3;
+ var0 = task->data[14];
+ while (var0 > task->data[13])
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset + 1] = (i - var2) + bgY;
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset] = bgX + var3 + (gSineTable[sineIndex] >> 5);
+ sineIndex = (sineIndex + 10) & 0xFF;
+ task->data[11] += task->data[10];
+ var3 = task->data[11] >> 5;
+ task->data[12] = var3;
+
+ i++;
+ offset -= 2;
+ var1 += task->data[6];
+ var2 = var1 >> 5;
+ var0--;
+ }
+
+ var0 *= 2;
+ while (var0 >= 0)
+ {
+ gScanlineEffectRegBuffers[0][var0] = bgX + 240;
+ gScanlineEffectRegBuffers[1][var0] = bgX + 240;
+ var0 -= 2;
+ }
+
+ if (++task->data[6] > 63)
+ {
+ task->data[6] = 64;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[3]--;
+ else
+ task->data[4]++;
+
+ REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
+ if (task->data[3] == 0 && task->data[4] == 16)
+ {
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ }
+ else
+ {
+ task->data[7] += task->data[8];
+ }
+ break;
+ case 1:
+ if (++task->data[2] > 12)
+ {
+ gScanlineEffect.state = 3;
+ task->data[2] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[3]++;
+ else
+ task->data[4]--;
+
+ REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
+ if (task->data[3] == 16 && task->data[4] == 0)
+ {
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_812F724(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[0] = 0;
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sub_80798F4(&gTasks[taskId], task->data[15], &gUnknown_08402750);
+ task->func = sub_812F76C;
+}
+
+static void sub_812F76C(u8 taskId)
+{
+ u16 var0;
+
+ struct Task *task = &gTasks[taskId];
+ var0 = task->data[0];
+ task->data[0]++;
+ var0 -= 20;
+ if (var0 < 23)
+ {
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ gSprites[task->data[15]].pos2.x = 1;
+ else
+ gSprites[task->data[15]].pos2.x = -1;
+ }
+ }
+ else
+ {
+ gSprites[task->data[15]].pos2.x = 0;
+ }
+
+ if (!sub_807992C(&gTasks[taskId]))
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_812F804(struct Sprite *sprite, s16 b, s16 c, s16 d, s16 e, u16 f)
+{
+ sprite->pos1.x = b;
+ sprite->pos1.y = c;
+ sprite->data[4] = b << 4;
+ sprite->data[5] = c << 4;
+ sprite->data[6] = ((d - b) << 4) / f;
+ sprite->data[7] = ((e - c) << 4) / f;
+}
+
+void sub_812F86C(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+}
+
+void sub_812F88C(struct Sprite *sprite)
+{
+ s16 x = sprite->pos1.x;
+ s16 y = sprite->pos1.y;
+
+ sub_8078650(sprite);
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
+ sub_812F804(sprite, sprite->pos1.x, sprite->pos1.y, x, y, 64);
+ sprite->data[0] = 0;
+ sprite->callback = sub_812F8DC;
+}
+
+static void sub_812F8DC(struct Sprite *sprite)
+{
+ int index;
+
+ sprite->data[0]++;
+ index = (sprite->data[0] * 8) & 0xFF;
+ sub_812F86C(sprite);
+ sprite->pos2.y = Sin(index, 8);
+ if (sprite->data[0] > 58)
+ {
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ sprite->invisible = sprite->data[2] & 1;
+ if (sprite->data[2] > 3)
+ move_anim_8074EE0(sprite);
+ }
+ }
+}
+
+void sub_812F948(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[3];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
+ if (GetBattlerSide(gAnimBankTarget) != B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
+ sprite->callback = sub_80DA48C;
+}
+
+static void sub_812F9B0(u8 taskId)
+{
+ u16 var0 = 0;
+ u16 var1 = 0;
+
+ gTasks[taskId].data[0]--;
+ if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
+ {
+ if (gTasks[taskId].data[9] == 0)
+ {
+ gTasks[taskId].data[9] = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ }
+ else
+ {
+ gTasks[taskId].data[9] = 0;
+ }
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[10] = gTasks[taskId].data[5];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+ else
+ {
+ gTasks[taskId].data[10] = 0;
+ }
+
+ gTasks[taskId].data[1] = gTasks[taskId].data[13];
+ }
+
+ var0 = gTasks[taskId].data[7];
+ var1 = gTasks[taskId].data[8];
+ if (gTasks[taskId].data[2] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+
+ if (gTasks[taskId].data[3] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+
+ if (gTasks[taskId].data[0] < 1)
+ {
+ DestroyTask(taskId);
+ gAnimVisualTaskCount--;
+ }
+}
+
+static void sub_812FAF8(u8 taskId)
+{
+ u16 var0 = 0;
+ u16 var1 = 0;
+
+ gTasks[taskId].data[0]--;
+ if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1))
+ {
+ if (gTasks[taskId].data[9] == 0)
+ {
+ gTasks[taskId].data[9] = gTasks[taskId].data[4];
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ }
+ else
+ {
+ gTasks[taskId].data[9] = var0;
+ }
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[10] = gTasks[taskId].data[5];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+ else
+ {
+ gTasks[taskId].data[10] = 0;
+ }
+
+ gTasks[taskId].data[1] = gTasks[taskId].data[13];
+ }
+
+ var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7];
+ var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8];
+ if (gTasks[taskId].data[2] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+
+ if (gTasks[taskId].data[3] & 0x8000)
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ else
+ gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+
+ gTasks[taskId].data[7] = var0;
+ gTasks[taskId].data[8] = var1;
+ if (gTasks[taskId].data[0] < 1)
+ {
+ gTasks[taskId].data[0] = 30;
+ gTasks[taskId].data[13] = 0;
+ gTasks[taskId].func = sub_812F9B0;
+ }
+}
+
+void sub_812FC68(u8 taskId)
+{
+ gTasks[taskId].data[15] = gBankSpriteIds[gAnimBankAttacker];
+ gTasks[taskId].data[14] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[13] = gBattleAnimArgs[6];
+ if (gBattleAnimArgs[3])
+ gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000;
+
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ }
+ else
+ {
+ if (gBattleAnimArgs[1] & 0x8000)
+ gTasks[taskId].data[2] = gBattleAnimArgs[1] & 0x7FFF;
+ else
+ gTasks[taskId].data[2] = gBattleAnimArgs[1] | -0x8000;
+
+ if (gBattleAnimArgs[2] & 0x8000)
+ gTasks[taskId].data[3] = gBattleAnimArgs[2] & 0x7FFF;
+ else
+ gTasks[taskId].data[3] = gBattleAnimArgs[2] | -0x8000;
+ }
+
+ gTasks[taskId].data[8] = 0;
+ gTasks[taskId].data[7] = 0;
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].func = sub_812FAF8;
+}
+
+void sub_812FD7C(u8 taskId)
+{
+ u8 battler;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[1] == 0)
+ DestroyAnimVisualTask(taskId);
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = gBattleAnimArgs[1];
+ if (gBattleAnimArgs[0] == 0)
+ battler = gAnimBankAttacker;
+ else
+ battler = gAnimBankTarget;
+
+ task->data[4] = GetBattlerSpriteCoord(battler, 0);
+ task->data[5] = GetBattlerSpriteCoord(battler, 1);
+ task->data[6] = sub_8079E90(battler);
+ task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sub_80798F4(task, task->data[15], &gUnknown_084028AC);
+ task->func = sub_812FE20;
+}
+
+static void sub_812FE20(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] == 6)
+ sub_812FEB8(taskId, TRUE);
+
+ if (task->data[1] == 18)
+ sub_812FEB8(taskId, FALSE);
+
+ if (!sub_807992C(task))
+ {
+ if (--task->data[3] == 0)
+ {
+ task->data[0]++;
+ }
+ else
+ {
+ task->data[1] = 0;
+ sub_80798F4(task, task->data[15], &gUnknown_084028AC);
+ }
+ }
+ break;
+ case 1:
+ if (task->data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_812FEB8(u8 taskId, bool8 arg1)
+{
+ u8 i;
+ s8 xOffset, yOffset;
+ struct Task *task;
+ s16 xCoords[4];
+ s16 yCoords[2];
+
+ task = &gTasks[taskId];
+ if (!arg1)
+ {
+ xOffset = 18;
+ yOffset = -20;
+ }
+ else
+ {
+ xOffset = 30;
+ yOffset = 20;
+ }
+
+ xCoords[0] = task->data[4] - xOffset;
+ xCoords[1] = task->data[4] - xOffset - 4;
+ xCoords[2] = task->data[4] + xOffset;
+ xCoords[3] = task->data[4] + xOffset + 4;
+ yCoords[0] = task->data[5] + yOffset;
+ yCoords[1] = task->data[5] + yOffset + 6;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_84028CC, xCoords[i], yCoords[i & 1], task->data[6] - 5);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = i < 2 ? -2 : 2;
+ gSprites[spriteId].data[2] = -1;
+ gSprites[spriteId].data[3] = taskId;
+ gSprites[spriteId].data[4] = 2;
+ task->data[2]++;
+ }
+ }
+}
+
+void sub_812FF94(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[1];
+ sprite->pos1.y += sprite->data[2];
+ if (++sprite->data[0] > 6)
+ {
+ gTasks[sprite->data[3]].data[sprite->data[4]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_812FFE4(u8 taskId)
+{
+ u8 spriteId;
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16;
+ gTasks[taskId].func = sub_813003C;
+}
+
+static void sub_813003C(u8 taskId)
+{
+ if (gTasks[taskId].data[1])
+ {
+ BlendPalette(gTasks[taskId].data[2], 16, 8, gUnknown_084028E4[gTasks[taskId].data[0]]);
+ if (++gTasks[taskId].data[0] > 23)
+ gTasks[taskId].data[0] = 0;
+
+ gTasks[taskId].data[1]--;
+ }
+ else
+ {
+ BlendPalette(gTasks[taskId].data[2], 16, 0, RGB(0, 0, 0));
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_81300A4(u8 taskId)
+{
+ sub_80E3C4C(
+ taskId,
+ 0,
+ 0x1A0,
+ gAnimBankAttacker,
+ gBattleAnimArgs[0],
+ 10,
+ 2,
+ 30,
+ gUnknown_08D2E014,
+ gUnknown_08D2E170,
+ gUnknown_08D2E150);
+}
+
+void sub_81300F4(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->data[0] = 640;
+ sprite->data[1] = -640;
+ }
+ else if (gBattleAnimArgs[2] == 1)
+ {
+ sprite->vFlip = 1;
+ sprite->data[0] = 640;
+ sprite->data[1] = 640;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->data[0] = 640;
+ }
+
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[0] = -sprite->data[0];
+ sprite->hFlip = 1;
+ }
+
+ sprite->callback = sub_81301B4;
+}
+
+static void sub_81301B4(struct Sprite *sprite)
+{
+ sprite->data[6] += sprite->data[0];
+ sprite->data[7] += sprite->data[1];
+ sprite->pos2.x = sprite->data[6] >> 8;
+ sprite->pos2.y = sprite->data[7] >> 8;
+ if (++sprite->data[5] == 14)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81301EC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (IsContest())
+ {
+ task->data[5] = 8;
+ task->data[6] = 3;
+ task->data[7] = 1;
+ }
+ else
+ {
+ task->data[5] = 12;
+ task->data[6] = 3;
+ task->data[7] = 0;
+ }
+
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + sub_807A100(gAnimBankAttacker, 0) / 4;
+ else
+ task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - sub_807A100(gAnimBankAttacker, 0) / 4;
+
+ task->data[12] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) - sub_807A100(gAnimBankAttacker, 0) / 4;
+ task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ task->func = sub_81302E4;
+}
+
+static void sub_81302E4(u8 taskId)
+{
+ u8 i;
+ s16 x, y;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 3)
+ {
+ task->data[1] = 0;
+ sub_8130424(
+ task->data[11],
+ task->data[12],
+ task->data[13],
+ task->data[14],
+ task->data[5],
+ task->data[2],
+ &x,
+ &y);
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_840294C, x, y, 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ if (task->data[7] == 0)
+ {
+ if (i == 0)
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6];
+ else
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6];
+ }
+ else
+ {
+ if (i == 0)
+ {
+ gSprites[spriteId].pos2.x = -task->data[6];
+ gSprites[spriteId].pos2.y = task->data[6];
+ }
+ else
+ {
+ gSprites[spriteId].pos2.x = task->data[6];
+ gSprites[spriteId].pos2.y = -task->data[6];
+ }
+ }
+
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = taskId;
+ gSprites[spriteId].data[2] = 10;
+ task->data[10]++;
+ }
+ }
+
+ if (task->data[2] == task->data[5])
+ task->data[0]++;
+
+ task->data[2]++;
+ }
+ break;
+ case 1:
+ if (task->data[10] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_8130424(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y)
+{
+ int x2;
+ int y2;
+
+ if (arg5 == 0)
+ {
+ *x = arg0;
+ *y = arg1;
+ return;
+ }
+
+ if (arg5 >= arg4)
+ {
+ *x = arg2;
+ *y = arg3;
+ return;
+ }
+
+ arg4--;
+ x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4);
+ y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4);
+ *x = x2 >> 8;
+ *y = y2 >> 8;
+}
+
+void sub_81304DC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 36)
+ {
+ gTasks[sprite->data[1]].data[sprite->data[2]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_813051C(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[0] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->callback = sub_8078CC0;
+}
+
+void sub_8130554(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ task->data[12] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ task->data[14] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + sub_807A100(gAnimBankTarget, 0) / 4;
+ task->data[15] = CreateSprite(&gSpriteTemplate_84029AC, task->data[11], task->data[12], sub_8079E90(gAnimBankTarget) - 5);
+ if (task->data[15] != MAX_SPRITES)
+ {
+ gSprites[task->data[15]].data[0] = 16;
+ gSprites[task->data[15]].data[2] = task->data[13];
+ gSprites[task->data[15]].data[4] = task->data[14];
+ gSprites[task->data[15]].data[5] = -32;
+ InitAnimArcTranslation(&gSprites[task->data[15]]);
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
+ StartSpriteAffineAnim(&gSprites[task->data[15]], 1);
+
+ task->func = sub_81306A4;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_81306A4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ TranslateAnimArc(&gSprites[task->data[15]]);
+ if (++task->data[2] > 7)
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (TranslateAnimArc(&gSprites[task->data[15]]))
+ {
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ gSprites[task->data[15]].invisible = task->data[2] & 1;
+ if (task->data[2] == 16)
+ {
+ FreeOamMatrix(gSprites[task->data[15]].oam.matrixNum);
+ DestroySprite(&gSprites[task->data[15]]);
+ task->data[0]++;
+ }
+ }
+ break;
+ case 3:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_81307B0(struct Sprite *sprite)
+{
+ u8 battler;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gAnimBankAttacker;
+ else
+ battler = gAnimBankTarget;
+
+ sprite->oam.tileNum += 16;
+ sprite->data[6] = gBattleAnimArgs[2];
+ sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1;
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->oam.matrixNum |= 0x8;
+ sprite->pos1.x = sub_807A100(battler, 4) - 8;
+ }
+ else
+ {
+ sprite->pos1.x = sub_807A100(battler, 5) + 8;
+ }
+
+ sprite->callback = sub_813085C;
+}
+
+static void sub_813085C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[7];
+ if (++sprite->data[2] == 12)
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] == 8)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos2.x -= sprite->data[7] * 4;
+ if (++sprite->data[1] == 6)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->pos2.x += sprite->data[7] * 3;
+ if (++sprite->data[1] == 8)
+ {
+ if (--sprite->data[6])
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]--;
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+ }
+ break;
+ }
+}
+
+void sub_8130918(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
+ gTasks[taskId].func = sub_8130970;
+ }
+}
+
+static void sub_8130970(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (!(task->data[2] & 1))
+ gSprites[task->data[15]].pos2.x = 2;
+ else
+ gSprites[task->data[15]].pos2.x = -2;
+ }
+
+ if (!sub_807992C(task))
+ {
+ gSprites[task->data[15]].pos2.x = 0;
+ if (--task->data[0])
+ {
+ sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8130A2C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->pos1.y = sub_807A100(gAnimBankAttacker, 2);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ sprite->pos1.y = sub_807A100(gAnimBankTarget, 2);
+ }
+
+ if (sprite->pos1.y < 8)
+ sprite->pos1.y = 8;
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = 0;
+ sprite->data[3] = gBattleAnimArgs[2];
+ sprite->callback = sub_8130A94;
+}
+
+static void sub_8130A94(struct Sprite *sprite)
+{
+ if (++sprite->data[0] >= sprite->data[1])
+ {
+ sprite->data[0] = 0;
+ sprite->data[2] = (sprite->data[2] + 1) & 1;
+ sprite->invisible = sprite->data[2];
+ if (sprite->data[2] && --sprite->data[3] == 0)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_8130AEC(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->oam.matrixNum |= 0x8;
+ sprite->pos1.x = 100;
+ sprite->data[7] = 1;
+ }
+ else
+ {
+ sprite->pos1.x = 140;
+ sprite->data[7] = -1;
+ }
+
+ sprite->pos1.y = 56;
+ sprite->callback = sub_8130B38;
+}
+
+static void sub_8130B38(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.y -= sprite->data[7] * 2;
+ if (sprite->data[1] & 1)
+ sprite->pos1.x -= sprite->data[7] * 2;
+
+ if (++sprite->data[1] == 9)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] == 4)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1]++;
+ sprite->pos1.y += sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 12)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] == 2)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ sprite->data[1]++;
+ sprite->pos1.y -= sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 12)
+ sprite->data[0]++;
+ break;
+ case 5:
+ sprite->data[1]++;
+ sprite->pos1.y += sprite->data[7] * 3;
+ sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ if (sprite->data[1] == 15)
+ sprite->oam.tileNum += 16;
+
+ if (sprite->data[1] == 18)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 6:
+ sprite->pos1.x += sprite->data[7] * 6;
+ if (++sprite->data[1] == 9)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 7:
+ sprite->pos1.x += sprite->data[7] * 2;
+ if (++sprite->data[1] == 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 8:
+ sprite->pos1.x -= sprite->data[7] * 3;
+ if (++sprite->data[1] == 5)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_8130D20(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ if (!IsContest())
+ {
+ if (IsDoubleBattle() == TRUE)
+ {
+ int x = GetBattlerSpriteCoord(gAnimBankAttacker, 0);
+ int y = GetBattlerSpriteCoord(gAnimBankAttacker ^ 2, 0);
+ if (x > y)
+ task->data[14] = 1;
+ else
+ task->data[14] = -1;
+ }
+ else
+ {
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER)
+ task->data[14] = -1;
+ else
+ task->data[14] = 1;
+ }
+ }
+ else
+ {
+ task->data[14] = 1;
+ }
+
+ task->func = sub_8130DBC;
+}
+
+static void sub_8130DBC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] == 13)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ gSprites[task->data[15]].pos2.x -= task->data[14] * 3;
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ gSprites[task->data[15]].pos2.x += task->data[14] * 3;
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (++task->data[1] == 2)
+ {
+ task->data[1] = 0;
+ if (task->data[2] == 0)
+ {
+ task->data[2]++;
+ task->data[0] = 1;
+ }
+ else
+ {
+ task->data[0]++;
+ }
+ }
+ break;
+ case 4:
+ gSprites[task->data[15]].pos2.x += task->data[14];
+ if (++task->data[1] == 3)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ if (++task->data[1] == 6)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 6:
+ gSprites[task->data[15]].pos2.x -= task->data[14] * 4;
+ if (++task->data[1] == 5)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 7:
+ gSprites[task->data[15]].pos2.x += task->data[14] * 4;
+ if (++task->data[1] == 5)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 8:
+ gSprites[task->data[15]].pos2.x = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8130F5C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ InitAnimSpritePos(sprite, 1);
+ sprite->data[7] = gAnimBankAttacker;
+ }
+ else
+ {
+ sprite->data[7] = gAnimBankTarget;
+ }
+
+ if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
+ sprite->oam.matrixNum = 8;
+
+ sprite->oam.priority = sub_8079ED4(sprite->data[7]);
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ sprite->callback = sub_8130FE0;
+}
+
+static void sub_8130FE0(struct Sprite *sprite)
+{
+ u16 x, y;
+
+ switch (sprite->data[5])
+ {
+ case 0:
+ switch (sprite->data[6])
+ {
+ default:
+ sprite->data[6] = 0;
+ case 0:
+ case 4:
+ x = sub_807A100(sprite->data[7], 5) - 4;
+ y = sub_807A100(sprite->data[7], 3) - 4;
+ break;
+ case 1:
+ x = sub_807A100(sprite->data[7], 5) - 4;
+ y = sub_807A100(sprite->data[7], 2) + 4;
+ break;
+ case 2:
+ x = sub_807A100(sprite->data[7], 4) + 4;
+ y = sub_807A100(sprite->data[7], 3) - 4;
+ break;
+ case 3:
+ x = sub_807A100(sprite->data[7], 4) + 4;
+ y = sub_807A100(sprite->data[7], 2) - 4;
+ break;
+ case 5:
+ x = GetBattlerSpriteCoord(sprite->data[7], 2);
+ y = GetBattlerSpriteCoord(sprite->data[7], 3);
+ break;
+ }
+
+ if (sprite->data[6] == 4)
+ sprite->data[0] = 24;
+ else if (sprite->data[6] == 5)
+ sprite->data[0] = 6;
+ else
+ sprite->data[0] = 12;
+
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = x;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = y;
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5]++;
+ break;
+ case 1:
+ if (TranslateAnimLinear(sprite))
+ {
+ switch (sprite->data[6])
+ {
+ default:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 0;
+ sprite->data[5]++;
+ sprite->data[6]++;
+ break;
+ case 4:
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[5] = 0;
+ sprite->data[6]++;
+ break;
+ case 5:
+ sprite->data[0] = 0;
+ sprite->data[1] = 16;
+ sprite->data[2] = 0;
+ sprite->data[5] = 3;
+ break;
+ }
+ }
+ break;
+ case 2:
+ if (++sprite->data[0] == 4)
+ sprite->data[5] = 0;
+ break;
+ case 3:
+ if (!(sprite->data[0] & 1))
+ sprite->data[1]--;
+ else
+ sprite->data[2]++;
+
+ REG_BLDALPHA = (sprite->data[2] << 8) | sprite->data[1];
+ if (++sprite->data[0] == 32)
+ {
+ sprite->invisible = 1;
+ sprite->data[5]++;
+ }
+ break;
+ case 4:
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+static void sub_81311E4(struct Sprite *sprite)
+{
+ sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
+ sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
+ if (!(sprite->data[5] & 1))
+ {
+ CreateSprite(
+ &gSpriteTemplate_8402500,
+ sprite->pos1.x + sprite->pos2.x,
+ sprite->pos1.y + sprite->pos2.y, 5);
+ }
+
+ if (sprite->data[5] == sprite->data[4])
+ DestroyAnimSprite(sprite);
+
+ sprite->data[5]++;
+}
+
+void sub_8131264(struct Sprite *sprite)
+{
+ GetBattlerSpriteCoord(gAnimBankTarget, 2); // unused local variable
+ GetBattlerSpriteCoord(gAnimBankTarget, 3); // unused local variable
+
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER || IsContest())
+ {
+ sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
+ sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
+ }
+ else
+ {
+ sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ }
+
+ sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1];
+ sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->pos1.x = sprite->data[0];
+ sprite->pos1.y = sprite->data[1];
+ sprite->callback = sub_81311E4;
+}
+
+void sub_81312E4(u8 taskId)
+{
+ int i;
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_8078E70(spriteId, 0);
+ gTasks[taskId].data[1] = 0x100;
+ gTasks[taskId].data[2] = 0x100;
+ gTasks[taskId].data[0]++;
+ }
+ else if (gTasks[taskId].data[0] == 1)
+ {
+ gTasks[taskId].data[1] += 0x60;
+ gTasks[taskId].data[2] -= 0xD;
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[1], gTasks[taskId].data[2], 0);
+ if (++gTasks[taskId].data[3] == 9)
+ {
+ gTasks[taskId].data[3] = 0;
+ sub_8078F40(spriteId);
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[0]++;
+ }
+ }
+ else
+ {
+ refresh_graphics_maybe(gAnimBankAttacker, 0, spriteId);
+ if (IsContest())
+ {
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 0);
+ }
+
+ for (i = 0; i < 16; i++)
+ gTasks[taskId].data[i] = 0;
+
+ gTasks[taskId].func = sub_8131408;
+ }
+}
+
+static void sub_8131408(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gSprites[spriteId].pos2.y = -200;
+ gSprites[spriteId].pos2.x = 200;
+ gSprites[spriteId].invisible = 0;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 112;
+ gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32)
+ gSprites[spriteId].pos2.x = 0;
+
+ if (gSprites[spriteId].pos2.y > 0)
+ gSprites[spriteId].pos2.y = 0;
+
+ if (gSprites[spriteId].pos2.y == 0)
+ {
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64));
+ gTasks[taskId].data[10] -= 0x800;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ gTasks[taskId].data[10] -= 112;
+ if (gTasks[taskId].data[10] < 0)
+ gTasks[taskId].data[10] = 0;
+
+ gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8;
+ if (gTasks[taskId].data[10] == 0)
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ gTasks[taskId].data[10] += 112;
+ gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].pos2.y > 0)
+ gSprites[spriteId].pos2.y = 0;
+
+ if (gSprites[spriteId].pos2.y == 0)
+ {
+ PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64));
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8131564(struct Sprite *sprite)
+{
+ s16 y2;
+
+ if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER)
+ {
+ sprite->subpriority = sub_8079E90(gAnimBankTarget) - 2;
+ y2 = -144;
+ }
+ else
+ {
+ sprite->subpriority = sub_8079E90(gAnimBankTarget) + 2;
+ y2 = -96;
+ }
+
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3);
+ sprite->pos2.y = y2;
+ sprite->callback = sub_81315C8;
+}
+
+static void sub_81315C8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.y += 10;
+ if (sprite->pos2.y >= 0)
+ {
+ PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63));
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[1] += 4;
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ if (sprite->data[1] > 127)
+ {
+ PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63));
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[1] += 6;
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4);
+ if (sprite->data[1] > 127)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 8)
+ {
+ PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63));
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ sprite->invisible = sprite->data[2] & 1;
+ if (sprite->data[2] == 7)
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_81316F8(u8 taskId)
+{
+ s16 spriteId1, spriteId2;
+
+ if (IsContest())
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ spriteId1 = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
+ if (spriteId1 < 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ spriteId2 = duplicate_obj_of_side_rel2move_in_transparent_mode(1);
+ if (spriteId2 < 0)
+ {
+ obj_delete_but_dont_free_vram(&gSprites[spriteId1]);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ gSprites[spriteId2].pos2.x += 24;
+ gSprites[spriteId1].pos2.x -= 24;
+ gSprites[spriteId2].data[0] = 0;
+ gSprites[spriteId1].data[0] = 0;
+ gSprites[spriteId2].data[1] = 0;
+ gSprites[spriteId1].data[1] = 0;
+ gSprites[spriteId2].data[2] = 0;
+ gSprites[spriteId1].data[2] = 0;
+ gSprites[spriteId2].data[3] = 16;
+ gSprites[spriteId1].data[3] = -16;
+ gSprites[spriteId2].data[4] = 0;
+ gSprites[spriteId1].data[4] = 128;
+ gSprites[spriteId2].data[5] = 24;
+ gSprites[spriteId1].data[5] = 24;
+ gSprites[spriteId2].data[6] = taskId;
+ gSprites[spriteId1].data[6] = taskId;
+ gSprites[spriteId2].data[7] = 0;
+ gSprites[spriteId1].data[7] = 0;
+ gTasks[taskId].data[0] = 2;
+ gSprites[spriteId2].invisible = 0;
+ gSprites[spriteId1].invisible = 1;
+ gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[spriteId2].callback = sub_8131838;
+ gSprites[spriteId1].callback = sub_8131838;
+ gTasks[taskId].func = sub_8131810;
+}
+
+static void sub_8131810(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_8131838(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ sprite->data[4] = (sprite->data[4] + sprite->data[3]) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]);
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[2] == 60)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[2] > 0)
+ {
+ sprite->data[2] = 0;
+ sprite->data[5] -= 2;
+ if (sprite->data[5] < 0)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ obj_delete_but_dont_free_vram(sprite);
+ }
+ }
+ break;
+ }
+}
diff --git a/src/battle/battle_anim_813F0F4.c b/src/battle/battle_anim_813F0F4.c
index 219395baf..f112c59aa 100755
--- a/src/battle/battle_anim_813F0F4.c
+++ b/src/battle/battle_anim_813F0F4.c
@@ -36,13 +36,13 @@ extern u8 gEffectBank;
extern const u8 gUnknown_08D2EE48[];
extern const u8 gUnknown_08D2EDFC[];
extern const u16 gUnknown_08D2E150[];
-extern const struct CompressedSpritePalette gUnknown_0840B2B8[];
-extern const struct SpriteTemplate gSpriteTemplate_840B3B4[];
+extern const struct CompressedSpritePalette gBallOpenParticlePalettes[];
+extern const struct SpriteTemplate gSpriteTemplates_840B3B4[];
extern const struct SpriteTemplate gSpriteTemplate_8402500;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84024E8;
-extern const u8 gUnknown_0840B378[];
-extern const struct CompressedSpriteSheet gUnknown_0840B258[];
-extern const TaskFunc gUnknown_0840B384[];
+extern const u8 gBallOpenParticleAnimNums[];
+extern const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[];
+extern const TaskFunc gBallOpenParticleAnimationFuncs[];
extern const u16 gUnknown_0840B4D4[];
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
@@ -69,12 +69,12 @@ static void sub_81404E4(struct Sprite *sprite);
static void sub_81405C8(struct Sprite *sprite);
static void sub_81406BC(struct Sprite *sprite);
static void sub_81407F4(struct Sprite *sprite);
-static void sub_8140A08(struct Sprite *sprite);
-static void sub_8140A28(struct Sprite *sprite);
-static void sub_8141294(struct Sprite *sprite);
-static void sub_8140ECC(struct Sprite *sprite);
-static void sub_8140FF8(struct Sprite *sprite);
-static void sub_8141230(struct Sprite *sprite);
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite);
+static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite);
+static void DestroyBallOpenAnimationParticle(struct Sprite *sprite);
+static void FanOutBallOpenParticles_Step1(struct Sprite *sprite);
+static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite);
+static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite);
static void sub_81413DC(u8 taskId);
static void sub_814146C(u8 taskId);
static void sub_81414BC(u8 taskId);
@@ -338,7 +338,7 @@ void sub_813F844(u8 taskId)
y = GetBattlerSpriteCoord(gAnimBankAttacker, 1);
priority = gSprites[spriteId].oam.priority;
subpriority = gSprites[spriteId].subpriority;
- gTasks[taskId].data[10] = sub_814086C(x, y + 32, priority, subpriority, ballIndex);
+ gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballIndex);
selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0);
gTasks[taskId].data[11] = sub_8141314(0, gAnimBankAttacker, selectedPalettes, ballIndex);
gTasks[taskId].data[0]++;
@@ -353,14 +353,14 @@ void sub_813F844(u8 taskId)
void sub_813F990(u8 taskId)
{
u8 ballIndex = ball_number_to_ball_processing_index(gLastUsedItem);
- sub_80478DC(ballIndex);
+ LoadBallGraphics(ballIndex);
DestroyAnimVisualTask(taskId);
}
void sub_813F9B8(u8 taskId)
{
u8 ballIndex = ball_number_to_ball_processing_index(gLastUsedItem);
- sub_804794C(ballIndex);
+ FreeBallGraphics(ballIndex);
DestroyAnimVisualTask(taskId);
}
@@ -526,7 +526,7 @@ static void sub_813FDC0(struct Sprite *sprite)
if (ballIndex2 < 0)
return;
- sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
sub_8141314(0, gAnimBankTarget, 14, ballIndex);
}
}
@@ -946,7 +946,7 @@ static void sub_81405F4(struct Sprite *sprite)
if (ballIndex2 < 0)
goto LABEL;
- sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
sub_8141314(1, gAnimBankTarget, 14, ballIndex);
LABEL:
@@ -1090,17 +1090,17 @@ _08140868: .4byte gDoingBattleAnim\n\
}
#endif // NONMATCHING
-u8 sub_814086C(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex)
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex)
{
u8 taskId;
- if (GetSpriteTileStartByTag(gUnknown_0840B258[ballIndex].tag) == 0xFFFF)
+ if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballIndex].tag) == 0xFFFF)
{
- LoadCompressedObjectPic(&gUnknown_0840B258[ballIndex]);
- LoadCompressedObjectPalette(&gUnknown_0840B2B8[ballIndex]);
+ LoadCompressedObjectPic(&gBallOpenParticleSpritesheets[ballIndex]);
+ LoadCompressedObjectPalette(&gBallOpenParticlePalettes[ballIndex]);
}
- taskId = CreateTask(gUnknown_0840B384[ballIndex], 5);
+ taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballIndex], 5);
gTasks[taskId].data[1] = x;
gTasks[taskId].data[2] = y;
gTasks[taskId].data[3] = priority;
@@ -1113,7 +1113,7 @@ u8 sub_814086C(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex)
return taskId;
}
-void sub_8140930(u8 taskId)
+void PokeBallOpenParticleAnimation(u8 taskId)
{
u8 spriteId;
u8 x, y;
@@ -1129,9 +1129,9 @@ void sub_8140930(u8 taskId)
priority = gTasks[taskId].data[3];
subpriority = gTasks[taskId].data[4];
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140A08;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
var0 = (u8)gTasks[taskId].data[0];
@@ -1150,24 +1150,24 @@ void sub_8140930(u8 taskId)
gTasks[taskId].data[0]++;
}
-static void sub_8140A08(struct Sprite *sprite)
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
if (sprite->data[1] == 0)
- sprite->callback = sub_8140A28;
+ sprite->callback = PokeBallOpenParticleAnimation_Step2;
else
sprite->data[1]--;
}
-static void sub_8140A28(struct Sprite *sprite)
+static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
sprite->data[1] += 2;
if (sprite->data[1] == 50)
- sub_8141294(sprite);
+ DestroyBallOpenAnimationParticle(sprite);
}
-void sub_8140A64(u8 taskId)
+void TimerBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1181,9 +1181,9 @@ void sub_8140A64(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
gSprites[spriteId].data[4] = 10;
@@ -1195,7 +1195,7 @@ void sub_8140A64(u8 taskId)
DestroyTask(taskId);
}
-void sub_8140B3C(u8 taskId)
+void DiveBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1209,9 +1209,9 @@ void sub_8140B3C(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
gSprites[spriteId].data[4] = 10;
@@ -1223,7 +1223,7 @@ void sub_8140B3C(u8 taskId)
DestroyTask(taskId);
}
-void sub_8140C14(u8 taskId)
+void SafariBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1237,9 +1237,9 @@ void sub_8140C14(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
gSprites[spriteId].data[4] = 4;
@@ -1251,7 +1251,7 @@ void sub_8140C14(u8 taskId)
DestroyTask(taskId);
}
-void sub_8140CE8(u8 taskId)
+void UltraBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1265,9 +1265,9 @@ void sub_8140CE8(u8 taskId)
for (i = 0; i < 10; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 25;
gSprites[spriteId].data[4] = 5;
@@ -1279,7 +1279,7 @@ void sub_8140CE8(u8 taskId)
DestroyTask(taskId);
}
-void sub_8140DC4(u8 taskId)
+void GreatBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1299,9 +1299,9 @@ void sub_8140DC4(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
gSprites[spriteId].data[4] = 8;
@@ -1318,7 +1318,7 @@ void sub_8140DC4(u8 taskId)
}
}
-static void sub_8140ECC(struct Sprite *sprite)
+static void FanOutBallOpenParticles_Step1(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
@@ -1326,10 +1326,10 @@ static void sub_8140ECC(struct Sprite *sprite)
sprite->data[1] += sprite->data[5];
sprite->data[2] += sprite->data[6];
if (++sprite->data[3] == 51)
- sub_8141294(sprite);
+ DestroyBallOpenAnimationParticle(sprite);
}
-void sub_8140F24(u8 taskId)
+void RepeatBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1343,9 +1343,9 @@ void sub_8140F24(u8 taskId)
for (i = 0; i < 12; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140FF8;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 21;
}
@@ -1354,7 +1354,7 @@ void sub_8140F24(u8 taskId)
DestroyTask(taskId);
}
-static void sub_8140FF8(struct Sprite *sprite)
+static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
@@ -1362,10 +1362,10 @@ static void sub_8140FF8(struct Sprite *sprite)
sprite->data[1]++;
sprite->data[2]++;
if (++sprite->data[3] == 51)
- sub_8141294(sprite);
+ DestroyBallOpenAnimationParticle(sprite);
}
-void sub_8141058(u8 taskId)
+void MasterBallOpenParticleAnimation(u8 taskId)
{
u8 i, j;
u8 x, y, priority, subpriority, ballIndex;
@@ -1381,9 +1381,9 @@ void sub_8141058(u8 taskId)
{
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8140ECC;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
gSprites[spriteId].data[4] = 8;
@@ -1405,7 +1405,7 @@ void sub_8141058(u8 taskId)
DestroyTask(taskId);
}
-void sub_8141164(u8 taskId)
+void PremierBallOpenParticleAnimation(u8 taskId)
{
u8 i;
u8 x, y, priority, subpriority, ballIndex;
@@ -1419,9 +1419,9 @@ void sub_8141164(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
- StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
- gSprites[spriteId].callback = sub_8141230;
+ spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]);
+ gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
}
@@ -1430,7 +1430,7 @@ void sub_8141164(u8 taskId)
DestroyTask(taskId);
}
-static void sub_8141230(struct Sprite *sprite)
+static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
@@ -1438,10 +1438,10 @@ static void sub_8141230(struct Sprite *sprite)
sprite->data[1]++;
sprite->data[2]++;
if (++sprite->data[3] == 51)
- sub_8141294(sprite);
+ DestroyBallOpenAnimationParticle(sprite);
}
-static void sub_8141294(struct Sprite *sprite)
+static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
{
int i;
int temp;
@@ -1460,8 +1460,8 @@ static void sub_8141294(struct Sprite *sprite)
{
for (i = 0; i < 12; i++)
{
- FreeSpriteTilesByTag(gUnknown_0840B258[i].tag);
- FreeSpritePaletteByTag(gUnknown_0840B2B8[i].tag);
+ FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[i].tag);
+ FreeSpritePaletteByTag(gBallOpenParticlePalettes[i].tag);
}
DestroySprite(sprite);
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index 8ca3d160a..f9c8fe7d1 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -62,7 +62,7 @@ extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
extern void sub_8037E30(void);
extern void sub_80312F0(struct Sprite *);
-extern u8 sub_8046400();
+extern u8 StartSendOutMonAnimation();
extern void sub_8032A08();
extern void sub_8043DB0();
extern void sub_8037BBC(void);
@@ -1195,7 +1195,7 @@ void sub_8039430(u8 a, u8 b)
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
gSprites[gBankSpriteIds[a]].invisible = TRUE;
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
+ gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE);
}
void LinkOpponentHandleReturnPokeToBall(void)
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index dff4edfc1..38514bfb5 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -79,7 +79,7 @@ extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
-extern u8 sub_8046400();
+extern u8 StartSendOutMonAnimation();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
extern void BattleLoadPlayerMonSprite();
@@ -1143,7 +1143,7 @@ void sub_811F864(u8 a, u8 b)
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
gSprites[gBankSpriteIds[a]].invisible = TRUE;
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFF);
+ gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFF);
}
void LinkPartnerHandleReturnPokeToBall(void)
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index ee313c098..a7e99900b 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -74,7 +74,7 @@ extern u8 GetBattlerPosition(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
extern void sub_80312F0(struct Sprite *);
-extern u8 sub_8046400();
+extern u8 StartSendOutMonAnimation();
extern void sub_8032A08();
extern void sub_8043DB0();
extern void sub_8033160(void);
@@ -1168,7 +1168,7 @@ void sub_803495C(u8 a, u8 b)
StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
gSprites[gBankSpriteIds[a]].invisible = TRUE;
gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
+ gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE);
}
void OpponentHandleReturnPokeToBall(void)
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 654a2c195..de8b1579b 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -126,7 +126,7 @@ extern void sub_802DEAC(void);
extern void sub_80312F0(struct Sprite *);
extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
-extern u8 sub_8046400();
+extern u8 StartSendOutMonAnimation();
extern void sub_802D798(void);
extern void bx_0802E404(void);
extern u8 gActiveBattler;
@@ -2523,7 +2523,7 @@ void sub_802F934(u8 bank, u8 b)
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
+ gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF);
}
void PlayerHandleReturnPokeToBall(void)
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 312ef9d12..a7ce7d27d 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -88,7 +88,7 @@ extern void oamt_add_pos2_onto_pos1();
extern void StartAnimLinearTranslation(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
extern void StoreSpriteCallbackInData();
-extern u8 sub_8046400();
+extern u8 StartSendOutMonAnimation();
extern u8 GetBattlerSpriteCoord();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
@@ -1518,7 +1518,7 @@ void sub_81398BC(u8 bank)
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
+ gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF);
}
void sub_8139A2C(u8 taskId)
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index ac15246d6..abfdf2c3d 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -300,7 +300,7 @@ const struct SpriteTemplate gBallSpriteTemplates[] =
extern void InitAnimArcTranslation();
extern bool8 TranslateAnimArc(struct Sprite *);
-static void sub_8046464(u8);
+static void SendOutMonAnimation(u8);
static void sub_80466E8(struct Sprite *);
static void sub_80466F4(struct Sprite *);
static void sub_8046760(struct Sprite *);
@@ -312,10 +312,10 @@ static void sub_8046C78(struct Sprite *);
static void sub_8046E7C(struct Sprite *);
static void sub_8046E9C(struct Sprite *);
static void sub_8046FBC(struct Sprite *);
-static void sub_8047074(struct Sprite *);
-static void sub_80470C4(struct Sprite *);
-static void sub_8047230(struct Sprite *);
-static void sub_8047254(struct Sprite *);
+static void SendOutPlayerMonAnimation_Step0(struct Sprite *);
+static void SendOutPlayerMonAnimation_Step1(struct Sprite *);
+static void SendOutMonAnimation_Delay(struct Sprite *);
+static void SendOutOpponentMonAnimation_Step0(struct Sprite *);
static void sub_80473D0(struct Sprite *);
static void sub_804748C(struct Sprite *);
static void sub_8047638(struct Sprite *);
@@ -324,28 +324,28 @@ static void sub_8047754(struct Sprite *);
static void sub_804780C(struct Sprite *);
static void sub_8047830(struct Sprite *);
static void oamc_804BEB4(struct Sprite *);
-static u16 sub_8047978(u8);
+static u16 GetBattlerBall(u8);
-u8 sub_8046400(u16 a, u8 b)
+u8 StartSendOutMonAnimation(u16 a, u8 side)
{
u8 taskId;
gDoingBattleAnim = 1;
ewram17810[gActiveBattler].unk0_3 = 1;
- taskId = CreateTask(sub_8046464, 5);
+ taskId = CreateTask(SendOutMonAnimation, 5);
gTasks[taskId].data[1] = a;
- gTasks[taskId].data[2] = b;
+ gTasks[taskId].data[2] = side;
gTasks[taskId].data[3] = gActiveBattler;
return 0;
}
-static void sub_8046464(u8 taskId)
+static void SendOutMonAnimation(u8 taskId)
{
- bool8 sp0 = FALSE;
- u16 r8;
- u8 r5;
+ bool8 debug = FALSE;
+ u16 side;
+ u8 battler;
u16 ball;
- u8 r4;
+ u8 ballIndex;
u8 spriteId;
if (gTasks[taskId].data[0] == 0)
@@ -353,44 +353,49 @@ static void sub_8046464(u8 taskId)
gTasks[taskId].data[0]++;
return;
}
- r8 = gTasks[taskId].data[2];
- r5 = gTasks[taskId].data[3];
- if (GetBattlerSide(r5) != 0)
- ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL);
+
+ side = gTasks[taskId].data[2];
+ battler = gTasks[taskId].data[3];
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL);
else
- ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL);
- r4 = ball_number_to_ball_processing_index(ball);
- sub_80478DC(r4);
- spriteId = CreateSprite(&gBallSpriteTemplates[r4], 32, 80, 0x1D);
+ ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL);
+
+ ballIndex = ball_number_to_ball_processing_index(ball);
+ LoadBallGraphics(ballIndex);
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballIndex], 32, 80, 29);
gSprites[spriteId].data[0] = 0x80;
gSprites[spriteId].data[1] = 0;
- gSprites[spriteId].data[7] = r8;
- switch (r8)
+ gSprites[spriteId].data[7] = side;
+
+ switch (side)
{
- case 0xFF:
- gBankTarget = r5;
+ case 0xFF: // Player's side
+ gBankTarget = battler;
gSprites[spriteId].pos1.x = 24;
gSprites[spriteId].pos1.y = 68;
- gSprites[spriteId].callback = sub_8047074;
+ gSprites[spriteId].callback = SendOutPlayerMonAnimation_Step0;
break;
- case 0xFE:
- gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(r5, 0);
- gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(r5, 1) + 24;
- gBankTarget = r5;
+ case 0xFE: // Opponent's side
+ gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(battler, 0);
+ gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(battler, 1) + 24;
+ gBankTarget = battler;
gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].callback = sub_8047254;
+ gSprites[spriteId].callback = SendOutOpponentMonAnimation_Step0;
break;
default:
gBankTarget = GetBattlerAtPosition(1);
- sp0 = TRUE;
+ debug = TRUE;
break;
}
+
gSprites[spriteId].data[6] = gBankTarget;
- if (!sp0)
+ if (!debug)
{
DestroyTask(taskId);
return;
}
+
gSprites[spriteId].data[0] = 0x22;
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBankTarget, 0);
gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBankTarget, 1) - 16;
@@ -418,8 +423,8 @@ static void objc_0804ABD4(struct Sprite *sprite)
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->data[5] = 0;
- r4 = ball_number_to_ball_processing_index(sub_8047978(r5));
- sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4);
+ r4 = ball_number_to_ball_processing_index(GetBattlerBall(r5));
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4);
sprite->data[0] = sub_8141314(0, r5, 14, r4);
sprite->data[6] = r5;
sprite->data[7] = r8;
@@ -693,34 +698,35 @@ static void sub_8046AD0(u8 taskId)
static void sub_8046C78(struct Sprite *sprite)
{
- u8 r5 = sprite->data[6];
- u32 r4; // not sure of this type
+ int ballIndex;
+ u8 battler = sprite->data[6];
StartSpriteAnim(sprite, 1);
- r4 = ball_number_to_ball_processing_index(sub_8047978(r5));
- sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4);
- sprite->data[0] = sub_8141314(1, sprite->data[6], 14, r4);
+ ballIndex = ball_number_to_ball_processing_index(GetBattlerBall(battler));
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ sprite->data[0] = sub_8141314(1, sprite->data[6], 14, ballIndex);
sprite->callback = sub_8046E9C;
if (gMain.inBattle)
{
- struct Pokemon *pkmn;
+ struct Pokemon *mon;
u16 species;
- s8 r8;
- u16 r4_2;
+ s8 cryPanning;
+ u16 cryBehavior;
u8 taskId;
- if (GetBattlerSide(r5) != 0)
+ if (GetBattlerSide(battler) != 0)
{
- pkmn = &gEnemyParty[gBattlerPartyIndexes[r5]];
- r8 = 25;
+ mon = &gEnemyParty[gBattlerPartyIndexes[battler]];
+ cryPanning = 25;
}
else
{
- pkmn = &gPlayerParty[gBattlerPartyIndexes[r5]];
- r8 = -25;
+ mon = &gPlayerParty[gBattlerPartyIndexes[battler]];
+ cryPanning = -25;
}
- species = GetMonData(pkmn, MON_DATA_SPECIES);
- if ((r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1))
+
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ if ((battler == GetBattlerAtPosition(0) || battler == GetBattlerAtPosition(1))
&& IsDoubleBattle() && ewram17840.unk9_0)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
@@ -733,18 +739,21 @@ static void sub_8046C78(struct Sprite *sprite)
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
}
}
+
if (!IsDoubleBattle() || !ewram17840.unk9_0)
- r4_2 = 0;
- else if (r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1))
- r4_2 = 1;
+ cryBehavior = 0;
+ else if (battler == GetBattlerAtPosition(0) || battler == GetBattlerAtPosition(1))
+ cryBehavior = 1;
else
- r4_2 = 2;
+ cryBehavior = 2;
+
taskId = CreateTask(sub_8046AD0, 3);
gTasks[taskId].data[0] = species;
- gTasks[taskId].data[1] = r8;
- gTasks[taskId].data[2] = r4_2;
+ gTasks[taskId].data[1] = cryPanning;
+ gTasks[taskId].data[2] = cryBehavior;
gTasks[taskId].data[15] = 0;
}
+
StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1);
AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000;
@@ -795,7 +804,7 @@ static void sub_8046E9C(struct Sprite *sprite)
if (r3 == 4)
{
for (i = 0; i < 12; i++)
- sub_804794C(i);
+ FreeBallGraphics(i);
}
}
}
@@ -825,7 +834,7 @@ static void sub_8046FBC(struct Sprite *sprite)
}
}
-static void sub_8047074(struct Sprite *sprite)
+static void SendOutPlayerMonAnimation_Step0(struct Sprite *sprite)
{
sprite->data[0] = 25;
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[6], 2);
@@ -833,12 +842,12 @@ static void sub_8047074(struct Sprite *sprite)
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->data[6];
InitAnimArcTranslation(sprite);
- sprite->callback = sub_80470C4;
+ sprite->callback = SendOutPlayerMonAnimation_Step1;
}
#define HIBYTE(x) (((x) >> 8) & 0xFF)
-static void sub_80470C4(struct Sprite *sprite)
+static void SendOutPlayerMonAnimation_Step1(struct Sprite *sprite)
{
u32 r6;
u32 r7;
@@ -855,6 +864,7 @@ static void sub_80470C4(struct Sprite *sprite)
sprite->data[2] = ((sprite->data[2] / 3) & ~1) | r7;
StartSpriteAffineAnim(sprite, 4);
}
+
r4 = sprite->data[0];
TranslateAnimLinear(sprite);
sprite->data[7] += sprite->data[6] / 3;
@@ -864,6 +874,7 @@ static void sub_80470C4(struct Sprite *sprite)
sprite->data[0] = r4;
else
sprite->data[0] = r4 - 1;
+
if (HIBYTE(sprite->data[7]) >= 80)
{
r6 = sprite->data[1] & 1;
@@ -882,17 +893,17 @@ static void sub_80470C4(struct Sprite *sprite)
sprite->pos2.x = 0;
sprite->data[6] = sprite->oam.affineParam & 0xFF;
sprite->data[0] = 0;
- if (IsDoubleBattle() && ewram17840.unk9_0
- && sprite->data[6] == GetBattlerAtPosition(2))
- sprite->callback = sub_8047230;
+ if (IsDoubleBattle() && ewram17840.unk9_0 && sprite->data[6] == GetBattlerAtPosition(2))
+ sprite->callback = SendOutMonAnimation_Delay;
else
sprite->callback = sub_8046C78;
+
StartSpriteAffineAnim(sprite, 0);
}
}
}
-static void sub_8047230(struct Sprite *sprite)
+static void SendOutMonAnimation_Delay(struct Sprite *sprite)
{
if (sprite->data[0]++ > 24)
{
@@ -901,15 +912,14 @@ static void sub_8047230(struct Sprite *sprite)
}
}
-static void sub_8047254(struct Sprite *sprite)
+static void SendOutOpponentMonAnimation_Step0(struct Sprite *sprite)
{
sprite->data[0]++;
if (sprite->data[0] > 15)
{
sprite->data[0] = 0;
- if (IsDoubleBattle() && ewram17840.unk9_0
- && sprite->data[6] == GetBattlerAtPosition(3))
- sprite->callback = sub_8047230;
+ if (IsDoubleBattle() && ewram17840.unk9_0 && sprite->data[6] == GetBattlerAtPosition(3))
+ sprite->callback = SendOutMonAnimation_Delay;
else
sprite->callback = sub_8046C78;
}
@@ -917,7 +927,7 @@ static void sub_8047254(struct Sprite *sprite)
static u8 sub_80472B0(u8 a, u8 b, u8 c, u8 d)
{
- return sub_814086C(a, b, c, d, 0);
+ return AnimateBallOpenParticles(a, b, c, d, 0);
}
static u8 sub_80472D8(u8 a, u8 b, u32 c)
@@ -1155,38 +1165,39 @@ static void oamc_804BEB4(struct Sprite *sprite)
}
}
-void sub_80478DC(u8 a)
+void LoadBallGraphics(u8 ballIndex)
{
- u16 var;
+ u16 tileStart;
- if (GetSpriteTileStartByTag(sBallSpriteSheets[a].tag) == 0xFFFF)
+ if (GetSpriteTileStartByTag(sBallSpriteSheets[ballIndex].tag) == 0xFFFF)
{
- LoadCompressedObjectPic(&sBallSpriteSheets[a]);
- LoadCompressedObjectPalette(&sBallSpritePalettes[a]);
+ LoadCompressedObjectPic(&sBallSpriteSheets[ballIndex]);
+ LoadCompressedObjectPalette(&sBallSpritePalettes[ballIndex]);
}
- switch (a)
+
+ switch (ballIndex)
{
case 6:
case 10:
case 11:
break;
default:
- var = GetSpriteTileStartByTag(sBallSpriteSheets[a].tag);
- LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + var * 32));
+ tileStart = GetSpriteTileStartByTag(sBallSpriteSheets[ballIndex].tag);
+ LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + tileStart * 32));
break;
}
}
-void sub_804794C(u8 a)
+void FreeBallGraphics(u8 ballIndex)
{
- FreeSpriteTilesByTag(sBallSpriteSheets[a].tag);
- FreeSpritePaletteByTag(sBallSpritePalettes[a].tag);
+ FreeSpriteTilesByTag(sBallSpriteSheets[ballIndex].tag);
+ FreeSpritePaletteByTag(sBallSpritePalettes[ballIndex].tag);
}
-static u16 sub_8047978(u8 a)
+static u16 GetBattlerBall(u8 battler)
{
- if (GetBattlerSide(a) == 0)
- return GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL);
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL);
else
- return GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL);
+ return GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL);
}
diff --git a/src/battle/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c
index a44cf028b..d0fbbec85 100644
--- a/src/battle/post_battle_event_funcs.c
+++ b/src/battle/post_battle_event_funcs.c
@@ -6,6 +6,7 @@
#include "pokemon.h"
#include "overworld.h"
#include "script_pokemon_80C4.h"
+#include "constants/heal_locations.h"
extern u8 gUnknown_02039324;
@@ -32,9 +33,9 @@ int GameClear(void)
SetSecretBase2Field_9();
if (gSaveBlock2.playerGender == MALE)
- sub_80537CC(1);
+ sub_80537CC(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F);
else
- sub_80537CC(2);
+ sub_80537CC(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F);
ribbonGet = FALSE;
diff --git a/src/birch_pc.c b/src/birch_pc.c
index 4b0025504..2a76b3c8c 100644
--- a/src/birch_pc.c
+++ b/src/birch_pc.c
@@ -87,24 +87,24 @@ const u8 *GetPokedexRatingText(u16 count)
return gBirchDexRatingText_LessThan180;
if (count < 190)
return gBirchDexRatingText_LessThan190;
- if (count < 200)
+ if (count < HOENN_DEX_COUNT - 2)
return gBirchDexRatingText_LessThan200;
- if (count == 200)
+ if (count == HOENN_DEX_COUNT - 2)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1)
|| GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200.
return gBirchDexRatingText_LessThan200;
return gBirchDexRatingText_DexCompleted;
}
- if (count == 201)
+ if (count == HOENN_DEX_COUNT - 1)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1)
&& GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200.
return gBirchDexRatingText_LessThan200;
return gBirchDexRatingText_DexCompleted;
}
- if (count == 202)
- return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, even though the hoenn dex count is 210.
+ if (count == HOENN_DEX_COUNT)
+ return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, a count of 202 means Jirachi and Deoxys are obtained
return gBirchDexRatingText_LessThan10;
}
diff --git a/src/contest_effect.c b/src/contest_effect.c
index a5615851f..17779a0c6 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -158,10 +158,8 @@ static void ContestEffect_StartlePrevMons(void)
u8 a = shared192D0.contestant;
if (shared192D0.turnOrder[a] != 0) {
- int i;
- int j = 0;
-
- for (i = 0; i < 4; i++)
+ int i, j;
+ for (i = 0, j = 0; i < 4; i++)
if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i])
shared192D0.jamQueue[j++] = i;
shared192D0.jamQueue[j] = 0xFF;
@@ -617,150 +615,40 @@ static void ContestEffect_QualityDependsOnTiming(void)
sContestantStatus[shared192D0.contestant].appeal2 = appeal;
}
-#ifdef NONMATCHING
-// Not even close, send help
-// Works well if it’s the same type as the one before.
static void ContestEffect_BetterIfSameType(void)
{
- s8 r4;
- s8 r2;
+ s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant];
+ s8 i = turnOrder - 1, j;
+ u16 move;
- for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--)
+ if (turnOrder == 0)
+ return;
+
+ while (1)
{
- for (r2 = 0; r2 < 4; r2++)
+ for (j = 0; j < 4; j++)
{
- if (shared192D0.turnOrder[r2] == r4 - 1)
+ if (shared192D0.turnOrder[j] == i)
break;
}
- if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped))
+ if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped)
+ {
+ if (--i < 0)
+ return;
+ }
+ else
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
-
- if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory)
- {
- sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
- }
break;
}
}
+
+ move = sContestantStatus[shared192D0.contestant].currMove;
+ if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory)
+ {
+ sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
+ }
}
-#else
-NAKED void ContestEffect_BetterIfSameType(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n"
- "\tldrb r0, [r1, 0x11]\n"
- "\tadds r0, r1\n"
- "\tmovs r2, 0\n"
- "\tldrsb r2, [r0, r2]\n"
- "\tsubs r0, r2, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmov r12, r1\n"
- "\tcmp r2, 0\n"
- "\tbeq _080B8994\n"
- "\tldrb r5, [r1]\n"
- "\tmov r6, r12\n"
- "\tsubs r6, 0x70\n"
- "_080B88EA:\n"
- "\tmovs r2, 0\n"
- "\tlsls r0, r4, 24\n"
- "\tasrs r1, r0, 24\n"
- "\tadds r4, r0, 0\n"
- "\tcmp r5, r1\n"
- "\tbeq _080B8910\n"
- "\tldr r3, _080B8940 @ =gSharedMem + 0x192D0\n"
- "_080B88F8:\n"
- "\tlsls r0, r2, 24\n"
- "\tmovs r2, 0x80\n"
- "\tlsls r2, 17\n"
- "\tadds r0, r2\n"
- "\tlsrs r2, r0, 24\n"
- "\tasrs r0, 24\n"
- "\tcmp r0, 0x3\n"
- "\tbgt _080B8910\n"
- "\tadds r0, r3\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, r1\n"
- "\tbne _080B88F8\n"
- "_080B8910:\n"
- "\tlsls r2, 24\n"
- "\tasrs r1, r2, 24\n"
- "\tlsls r0, r1, 3\n"
- "\tsubs r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadds r3, r0, r6\n"
- "\tldrb r1, [r3, 0xB]\n"
- "\tmovs r0, 0x80\n"
- "\tands r0, r1\n"
- "\tadds r7, r2, 0\n"
- "\tcmp r0, 0\n"
- "\tbne _080B8932\n"
- "\tldrb r1, [r3, 0xC]\n"
- "\tmovs r0, 0x7\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _080B8944\n"
- "_080B8932:\n"
- "\tmovs r1, 0xFF\n"
- "\tlsls r1, 24\n"
- "\tadds r0, r4, r1\n"
- "\tlsrs r4, r0, 24\n"
- "\tcmp r0, 0\n"
- "\tblt _080B8994\n"
- "\tb _080B88EA\n"
- "\t.align 2, 0\n"
- "_080B8940: .4byte gSharedMem + 0x192D0\n"
- "_080B8944:\n"
- "\tmov r2, r12\n"
- "\tldrb r1, [r2, 0x11]\n"
- "\tlsls r0, r1, 3\n"
- "\tsubs r0, r1\n"
- "\tlsls r0, 2\n"
- "\tmov r3, r12\n"
- "\tsubs r3, 0x70\n"
- "\tadds r5, r0, r3\n"
- "\tldrh r0, [r5, 0x6]\n"
- "\tldr r4, _080B899C @ =gContestMoves\n"
- "\tlsls r0, 3\n"
- "\tadds r6, r0, r4\n"
- "\tldrb r2, [r6, 0x1]\n"
- "\tlsls r2, 29\n"
- "\tasrs r1, r7, 24\n"
- "\tlsls r0, r1, 3\n"
- "\tsubs r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r3\n"
- "\tldrh r0, [r0, 0x6]\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r4\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tlsls r0, 29\n"
- "\tcmp r2, r0\n"
- "\tbne _080B8994\n"
- "\tldr r1, _080B89A0 @ =gContestEffects\n"
- "\tldrb r0, [r6]\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tlsls r0, 1\n"
- "\tldrh r1, [r5, 0x2]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x2]\n"
- "\tmov r2, r12\n"
- "\tldrb r0, [r2, 0x11]\n"
- "\tmovs r1, 0x1F\n"
- "\tbl SetContestantEffectStringID\n"
- "_080B8994:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_080B899C: .4byte gContestMoves\n"
- "_080B89A0: .4byte gContestEffects");
-}
-#endif
// Works well if different in type than the one before.
static void ContestEffect_BetterIfDiffType(void)
@@ -1113,16 +1001,20 @@ static bool8 WasAtLeastOneOpponentJammed(void)
shared192D0.jam2 = 10;
SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED);
}
- else if ((shared192D0.jam2 -= sContestantStatus[contestant].jamReduction) <= 0)
- {
- shared192D0.jam2 = 0;
- SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED);
- }
else
{
- JamContestant(contestant, shared192D0.jam2);
- SetStartledString(contestant, shared192D0.jam2);
- jamBuffer[contestant] = shared192D0.jam2;
+ shared192D0.jam2 -= sContestantStatus[contestant].jamReduction;
+ if (shared192D0.jam2 <= 0)
+ {
+ shared192D0.jam2 = 0;
+ SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED);
+ }
+ else
+ {
+ JamContestant(contestant, shared192D0.jam2);
+ SetStartledString(contestant, shared192D0.jam2);
+ jamBuffer[contestant] = shared192D0.jam2;
+ }
}
}
}
diff --git a/src/data/heal_locations.h b/src/data/heal_locations.h
new file mode 100644
index 000000000..f764981bf
--- /dev/null
+++ b/src/data/heal_locations.h
@@ -0,0 +1,25 @@
+static const struct HealLocation sHealLocations[] =
+{
+ {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2},
+ {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2},
+ {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17},
+ {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20},
+ {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6},
+ {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39},
+ {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7},
+ {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15},
+ {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17},
+ {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32},
+ {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49},
+ {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9},
+ {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9},
+ {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17},
+ {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11},
+ {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7},
+ {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8},
+ {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4},
+ {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16},
+ {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6},
+ {MAP_GROUP(BATTLE_TOWER_OUTSIDE), MAP_NUM(BATTLE_TOWER_OUTSIDE), 14, 9},
+ {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20},
+};
diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h
index 736c0df6a..830f3d70a 100644
--- a/src/data/pokedex_orders.h
+++ b/src/data/pokedex_orders.h
@@ -1,1609 +1,1609 @@
#if ENGLISH
static const u16 gPokedexOrder_Alphabetical[] =
{
- 387,
- 388,
- 389,
- 390,
- 391,
- 392,
- 393,
- 394,
- 395,
- 396,
- 397,
- 398,
- 399,
- 400,
- 401,
- 402,
- 403,
- 404,
- 405,
- 406,
- 407,
- 408,
- 409,
- 410,
- 411,
- 63, // Abra
- 359, // Absol
- 142, // Aerodactyl
- 306, // Aggron
- 190, // Aipom
- 65, // Alakazam
- 334, // Altaria
- 181, // Ampharos
- 347, // Anorith
- 24, // Arbok
- 59, // Arcanine
- 168, // Ariados
- 348, // Armaldo
- 304, // Aron
- 144, // Articuno
- 184, // Azumarill
- 298, // Azurill
- 371, // Bagon
- 343, // Baltoy
- 354, // Banette
- 339, // Barboach
- 153, // Bayleef
- 267, // Beautifly
- 15, // Beedrill
- 374, // Beldum
- 182, // Bellossom
- 69, // Bellsprout
- 9, // Blastoise
- 257, // Blaziken
- 242, // Blissey
- 286, // Breloom
- 1, // Bulbasaur
- 12, // Butterfree
- 331, // Cacnea
- 332, // Cacturne
- 323, // Camerupt
- 318, // Carvanha
- 268, // Cascoon
- 351, // Castform
- 10, // Caterpie
- 251, // Celebi
- 113, // Chansey
- 6, // Charizard
- 4, // Charmander
- 5, // Charmeleon
- 152, // Chikorita
- 358, // Chimecho
- 170, // Chinchou
- 366, // Clamperl
- 344, // Claydol
- 36, // Clefable
- 35, // Clefairy
- 173, // Cleffa
- 91, // Cloyster
- 256, // Combusken
- 341, // Corphish
- 222, // Corsola
- 346, // Cradily
- 342, // Crawdaunt
- 169, // Crobat
- 159, // Croconaw
- 104, // Cubone
- 155, // Cyndaquil
- 301, // Delcatty
- 225, // Delibird
- 386, // Deoxys
- 87, // Dewgong
- 50, // Diglett
- 132, // Ditto
- 85, // Dodrio
- 84, // Doduo
- 232, // Donphan
- 148, // Dragonair
- 149, // Dragonite
- 147, // Dratini
- 96, // Drowzee
- 51, // Dugtrio
- 206, // Dunsparce
- 356, // Dusclops
- 355, // Duskull
- 269, // Dustox
- 133, // Eevee
- 23, // Ekans
- 125, // Electabuzz
- 309, // Electrike
- 101, // Electrode
- 239, // Elekid
- 244, // Entei
- 196, // Espeon
- 102, // Exeggcute
- 103, // Exeggutor
- 295, // Exploud
- 83, // Farfetch'd
- 22, // Fearow
- 349, // Feebas
- 160, // Feraligatr
- 180, // Flaaffy
- 136, // Flareon
- 330, // Flygon
- 205, // Forretress
- 162, // Furret
- 282, // Gardevoir
- 92, // Gastly
- 94, // Gengar
- 74, // Geodude
- 203, // Girafarig
- 362, // Glalie
- 207, // Gligar
- 44, // Gloom
- 42, // Golbat
- 118, // Goldeen
- 55, // Golduck
- 76, // Golem
- 368, // Gorebyss
- 210, // Granbull
- 75, // Graveler
- 88, // Grimer
- 383, // Groudon
- 253, // Grovyle
- 58, // Growlithe
- 326, // Grumpig
- 316, // Gulpin
- 130, // Gyarados
- 297, // Hariyama
- 93, // Haunter
- 214, // Heracross
- 107, // Hitmonchan
- 106, // Hitmonlee
- 237, // Hitmontop
- 250, // Ho-Oh
- 163, // Hoothoot
- 187, // Hoppip
- 116, // Horsea
- 229, // Houndoom
- 228, // Houndour
- 367, // Huntail
- 97, // Hypno
- 174, // Igglybuff
- 314, // Illumise
- 2, // Ivysaur
- 39, // Jigglypuff
- 385, // Jirachi
- 135, // Jolteon
- 189, // Jumpluff
- 124, // Jynx
- 140, // Kabuto
- 141, // Kabutops
- 64, // Kadabra
- 14, // Kakuna
- 115, // Kangaskhan
- 352, // Kecleon
- 230, // Kingdra
- 99, // Kingler
- 281, // Kirlia
- 109, // Koffing
- 98, // Krabby
- 382, // Kyogre
- 305, // Lairon
- 171, // Lanturn
- 131, // Lapras
- 246, // Larvitar
- 380, // Latias
- 381, // Latios
- 166, // Ledian
- 165, // Ledyba
- 108, // Lickitung
- 345, // Lileep
- 264, // Linoone
- 271, // Lombre
- 270, // Lotad
- 294, // Loudred
- 272, // Ludicolo
- 249, // Lugia
- 337, // Lunatone
- 370, // Luvdisc
- 68, // Machamp
- 67, // Machoke
- 66, // Machop
- 240, // Magby
- 219, // Magcargo
- 129, // Magikarp
- 126, // Magmar
- 81, // Magnemite
- 82, // Magneton
- 296, // Makuhita
- 310, // Manectric
- 56, // Mankey
- 226, // Mantine
- 179, // Mareep
- 183, // Marill
- 105, // Marowak
- 259, // Marshtomp
- 284, // Masquerain
- 303, // Mawile
- 308, // Medicham
- 307, // Meditite
- 154, // Meganium
- 52, // Meowth
- 376, // Metagross
- 375, // Metang
- 11, // Metapod
- 151, // Mew
- 150, // Mewtwo
- 262, // Mightyena
- 350, // Milotic
- 241, // Miltank
- 312, // Minun
- 200, // Misdreavus
- 146, // Moltres
- 122, // Mr. mime
- 258, // Mudkip
- 89, // Muk
- 198, // Murkrow
- 177, // Natu
- 34, // Nidoking
- 31, // Nidoqueen
- 29, // Nidoran?
- 32, // Nidoran?
- 30, // Nidorina
- 33, // Nidorino
- 290, // Nincada
- 38, // Ninetales
- 291, // Ninjask
- 164, // Noctowl
- 299, // Nosepass
- 322, // Numel
- 274, // Nuzleaf
- 224, // Octillery
- 43, // Oddish
- 138, // Omanyte
- 139, // Omastar
- 95, // Onix
- 46, // Paras
- 47, // Parasect
- 279, // Pelipper
- 53, // Persian
- 231, // Phanpy
- 172, // Pichu
- 18, // Pidgeot
- 17, // Pidgeotto
- 16, // Pidgey
- 25, // Pikachu
- 221, // Piloswine
- 204, // Pineco
- 127, // Pinsir
- 311, // Plusle
- 186, // Politoed
- 60, // Poliwag
- 61, // Poliwhirl
- 62, // Poliwrath
- 77, // Ponyta
- 261, // Poochyena
- 137, // Porygon
- 233, // Porygon2
- 57, // Primeape
- 54, // Psyduck
- 247, // Pupitar
- 195, // Quagsire
- 156, // Quilava
- 211, // Qwilfish
- 26, // Raichu
- 243, // Raikou
- 280, // Ralts
- 78, // Rapidash
- 20, // Raticate
- 19, // Rattata
- 384, // Rayquaza
- 378, // Regice
- 377, // Regirock
- 379, // Registeel
- 369, // Relicanth
- 223, // Remoraid
- 112, // Rhydon
- 111, // Rhyhorn
- 315, // Roselia
- 302, // Sableye
- 373, // Salamence
- 27, // Sandshrew
- 28, // Sandslash
- 254, // Sceptile
- 212, // Scizor
- 123, // Scyther
- 117, // Seadra
- 119, // Seaking
- 364, // Sealeo
- 273, // Seedot
- 86, // Seel
- 161, // Sentret
- 336, // Seviper
- 319, // Sharpedo
- 292, // Shedinja
- 372, // Shelgon
- 90, // Shellder
- 275, // Shiftry
- 285, // Shroomish
- 213, // Shuckle
- 353, // Shuppet
- 266, // Silcoon
- 227, // Skarmory
- 188, // Skiploom
- 300, // Skitty
- 289, // Slaking
- 287, // Slakoth
- 80, // Slowbro
- 199, // Slowking
- 79, // Slowpoke
- 218, // Slugma
- 235, // Smeargle
- 238, // Smoochum
- 215, // Sneasel
- 143, // Snorlax
- 361, // Snorunt
- 209, // Snubbull
- 338, // Solrock
- 21, // Spearow
- 363, // Spheal
- 167, // Spinarak
- 327, // Spinda
- 325, // Spoink
- 7, // Squirtle
- 234, // Stantler
- 121, // Starmie
- 120, // Staryu
- 208, // Steelix
- 185, // Sudowoodo
- 245, // Suicune
- 192, // Sunflora
- 191, // Sunkern
- 283, // Surskit
- 333, // Swablu
- 317, // Swalot
- 260, // Swampert
- 277, // Swellow
- 220, // Swinub
- 276, // Taillow
- 114, // Tangela
- 128, // Tauros
- 216, // Teddiursa
- 72, // Tentacool
- 73, // Tentacruel
- 175, // Togepi
- 176, // Togetic
- 255, // Torchic
- 324, // Torkoal
- 158, // Totodile
- 328, // Trapinch
- 252, // Treecko
- 357, // Tropius
- 157, // Typhlosion
- 248, // Tyranitar
- 236, // Tyrogue
- 197, // Umbreon
- 201, // Unown
- 217, // Ursaring
- 134, // Vaporeon
- 49, // Venomoth
- 48, // Venonat
- 3, // Venusaur
- 329, // Vibrava
- 71, // Victreebel
- 288, // Vigoroth
- 45, // Vileplume
- 313, // Volbeat
- 100, // Voltorb
- 37, // Vulpix
- 320, // Wailmer
- 321, // Wailord
- 365, // Walrein
- 8, // Wartortle
- 13, // Weedle
- 70, // Weepinbell
- 110, // Weezing
- 340, // Whiscash
- 293, // Whismur
- 40, // Wigglytuff
- 278, // Wingull
- 202, // Wobbuffet
- 194, // Wooper
- 265, // Wurmple
- 360, // Wynaut
- 178, // Xatu
- 193, // Yanma
- 335, // Zangoose
- 145, // Zapdos
- 263, // Zigzagoon
- 41, // Zubat
+ NATIONAL_DEX_OLD_UNOWN_B,
+ NATIONAL_DEX_OLD_UNOWN_C,
+ NATIONAL_DEX_OLD_UNOWN_D,
+ NATIONAL_DEX_OLD_UNOWN_E,
+ NATIONAL_DEX_OLD_UNOWN_F,
+ NATIONAL_DEX_OLD_UNOWN_G,
+ NATIONAL_DEX_OLD_UNOWN_H,
+ NATIONAL_DEX_OLD_UNOWN_I,
+ NATIONAL_DEX_OLD_UNOWN_J,
+ NATIONAL_DEX_OLD_UNOWN_K,
+ NATIONAL_DEX_OLD_UNOWN_L,
+ NATIONAL_DEX_OLD_UNOWN_M,
+ NATIONAL_DEX_OLD_UNOWN_N,
+ NATIONAL_DEX_OLD_UNOWN_O,
+ NATIONAL_DEX_OLD_UNOWN_P,
+ NATIONAL_DEX_OLD_UNOWN_Q,
+ NATIONAL_DEX_OLD_UNOWN_R,
+ NATIONAL_DEX_OLD_UNOWN_S,
+ NATIONAL_DEX_OLD_UNOWN_T,
+ NATIONAL_DEX_OLD_UNOWN_U,
+ NATIONAL_DEX_OLD_UNOWN_V,
+ NATIONAL_DEX_OLD_UNOWN_W,
+ NATIONAL_DEX_OLD_UNOWN_X,
+ NATIONAL_DEX_OLD_UNOWN_Y,
+ NATIONAL_DEX_OLD_UNOWN_Z,
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_GROUDON,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_WAILORD,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_ZUBAT,
};
#elif GERMAN
static const u16 gPokedexOrder_Alphabetical[] = {
- 387,
- 388,
- 389,
- 390,
- 391,
- 392,
- 393,
- 394,
- 395,
- 396,
- 397,
- 398,
- 399,
- 400,
- 401,
- 402,
- 403,
- 404,
- 405,
- 406,
- 407,
- 408,
- 409,
- 410,
- 411,
- 367, // Aalabyss
- 63, // Abra
- 359, // Absol
- 142, // Aerodactyl
- 93, // Alpollo
- 334, // Altaria
- 138, // Amonitas
- 139, // Amoroso
- 181, // Ampharos
- 347, // Anorith
- 134, // Aquana
- 24, // Arbok
- 168, // Ariados
- 59, // Arkani
- 144, // Arktos
- 348, // Armaldo
- 91, // Austos
- 184, // Azumarill
- 298, // Azurill
- 211, // Baldorfish
- 354, // Banette
- 349, // Barschwa
- 15, // Bibor
- 3, // Bisaflor
- 2, // Bisaknosp
- 1, // Bisasam
- 274, // Blanas
- 135, // Blitza
- 182, // Blubella
- 48, // Bluzuk
- 225, // Botogel
- 373, // Brutalanda
- 287, // Bummelz
- 322, // Camaub
- 323, // Camerupt
- 251, // Celebi
- 113, // Chaneira
- 222, // Corasonn
- 234, // Damhirplex
- 386, // Deoxys
- 248, // Despotar
- 50, // Digda
- 51, // Digdri
- 132, // Ditto
- 85, // Dodri
- 84, // Dodu
- 232, // Donphan
- 148, // Dragonir
- 149, // Dragoran
- 372, // Draschel
- 147, // Dratini
- 44, // Duflor
- 206, // Dummisel
- 239, // Elekid
- 125, // Elektek
- 152, // Endivie
- 300, // Eneco
- 301, // Enekoro
- 244, // Entei
- 54, // Enton
- 55, // Entoron
- 133, // Evoli
- 235, // Farbeagle
- 194, // Felino
- 155, // Feurigel
- 261, // Fiffyen
- 362, // Firnontor
- 136, // Flamara
- 79, // Flegmon
- 255, // Flemmli
- 174, // Fluffeluff
- 303, // Flunkifer
- 293, // Flurmel
- 351, // Formeo
- 205, // Forstellka
- 309, // Frizelbliz
- 58, // Fukano
- 78, // Gallopa
- 130, // Garados
- 252, // Geckarbor
- 283, // Gehweiher
- 94, // Gengar
- 75, // Georok
- 76, // Geowaz
- 264, // Geradaks
- 254, // Gewaldro
- 45, // Giflor
- 203, // Girafarig
- 4, // Glumanda
- 6, // Glurak
- 5, // Glutexo
- 42, // Golbat
- 118, // Goldini
- 119, // Golking
- 210, // Granbull
- 190, // Griffel
- 326, // Groink
- 383, // Groudon
- 282, // Guardevoir
- 21, // Habitak
- 297, // Hariyama
- 242, // Heiteira
- 250, // Ho-oh
- 163, // Hoothoot
- 187, // Hoppspross
- 13, // Hornliu
- 188, // Hubelupf
- 229, // Hundemon
- 228, // Hunduster
- 258, // Hydropi
- 97, // Hypno
- 22, // Ibitak
- 201, // Icognito
- 156, // Igelavar
- 169, // Iksbat
- 314, // Illumise
- 160, // Impergator
- 360, // Isso
- 385, // Jirachi
- 87, // Jugong
- 256, // Jungglut
- 86, // Jurob
- 140, // Kabuto
- 141, // Kabutops
- 64, // Kadabra
- 115, // Kangama
- 318, // Kanivanha
- 286, // Kapilz
- 237, // Kapoera
- 272, // Kappalores
- 158, // Karnimani
- 129, // Karpador
- 352, // Kecleon
- 221, // Keifel
- 106, // Kicklee
- 371, // Kindwurm
- 99, // Kingler
- 281, // Kirlia
- 74, // Kleinstein
- 328, // Knacklion
- 285, // Knilz
- 69, // Knofensa
- 105, // Knogga
- 40, // Knuddeluff
- 103, // Kokowei
- 14, // Kokuna
- 98, // Krabby
- 294, // Krakeelo
- 198, // Kramurx
- 295, // Krawumms
- 341, // Krebscorps
- 342, // Krebutack
- 238, // Kussilla
- 382, // Kyogre
- 80, // Lahmus
- 170, // Lampi
- 171, // Lanturn
- 131, // Lapras
- 246, // Larvitar
- 199, // Laschoking
- 380, // Latias
- 381, // Latios
- 146, // Lavados
- 166, // Ledian
- 165, // Ledyba
- 101, // Lektrobal
- 344, // Lepumentas
- 289, // Letarking
- 330, // Libelldra
- 370, // Liebiskus
- 345, // Liliep
- 257, // Lohgock
- 271, // Lombrero
- 153, // Lorblatt
- 270, // Loturzel
- 249, // Lugia
- 337, // Lunastein
- 66, // Machollo
- 68, // Machomei
- 240, // Magby
- 219, // Magcargo
- 126, // Magmar
- 262, // Magnayen
- 81, // Magnetilo
- 82, // Magneton
- 296, // Makuhita
- 226, // Mantax
- 183, // Marill
- 67, // Maschock
- 284, // Maskeregen
- 52, // Mauzi
- 308, // Meditalis
- 307, // Meditie
- 154, // Meganie
- 56, // Menki
- 376, // Metagross
- 375, // Metang
- 151, // Mew
- 150, // Mewtu
- 350, // Milotic
- 241, // Miltank
- 312, // Minun
- 185, // Mogelbaum
- 259, // Moorabbel
- 195, // Morlord
- 288, // Muntier
- 90, // Muschas
- 43, // Myrapla
- 197, // Nachtara
- 299, // Nasgnet
- 177, // Natu
- 92, // Nebulak
- 34, // Nidoking
- 31, // Nidoqueen
- 29, // Nidoran♀
- 32, // Nidoran♂
- 30, // Nidorina
- 33, // Nidorino
- 290, // Nincada
- 291, // Ninjask
- 292, // Ninjatom
- 107, // Nockchan
- 164, // Noctuh
- 332, // Noktuska
- 224, // Octillery
- 49, // Omot
- 95, // Onix
- 102, // Owei
- 358, // Palimpalim
- 327, // Pandir
- 268, // Panekon
- 122, // Pantimos
- 227, // Panzaeron
- 267, // Papinella
- 189, // Papungha
- 46, // Paras
- 47, // Parasek
- 279, // Pelipper
- 366, // Perlu
- 231, // Phanpy
- 172, // Pichu
- 35, // Piepi
- 173, // Pii
- 25, // Pikachu
- 127, // Pinsir
- 36, // Pixi
- 311, // Plusle
- 77, // Ponita
- 83, // Porenta
- 137, // Porygon
- 233, // Porygon2
- 213, // Pottrott
- 196, // Psiana
- 269, // Pudox
- 39, // Pummeluff
- 247, // Pupitar
- 343, // Puppance
- 62, // Quappo
- 60, // Quapsel
- 61, // Quaputzi
- 186, // Quaxo
- 220, // Quiekel
- 324, // Qurtel
- 236, // Rabauz
- 26, // Raichu
- 243, // Raikou
- 57, // Rasaff
- 19, // Rattfratz
- 20, // Rattikarl
- 10, // Raupy
- 384, // Rayquaza
- 378, // Regice
- 377, // Regirock
- 379, // Registeel
- 143, // Relaxo
- 369, // Relicanth
- 223, // Remoraid
- 253, // Reptain
- 23, // Rettan
- 111, // Rihorn
- 112, // Rizeros
- 315, // Roselia
- 124, // Rossana
- 11, // Safcon
- 368, // Saganabyss
- 273, // Samurzel
- 28, // Sandamer
- 27, // Sandan
- 71, // Sarzenia
- 266, // Schaloko
- 212, // Scherox
- 7, // Schiggy
- 8, // Schillok
- 317, // Schlukwech
- 316, // Schluppuck
- 108, // Schlurp
- 339, // Schmerbe
- 218, // Schneckmag
- 361, // Schneppke
- 276, // Schwalbini
- 277, // Schwalboss
- 230, // Seedraking
- 364, // Seejong
- 117, // Seemon
- 363, // Seemops
- 116, // Seeper
- 335, // Sengo
- 353, // Shuppet
- 123, // Sichlor
- 65, // Simsala
- 214, // Skaraborn
- 207, // Skorgla
- 88, // Sleima
- 89, // Sleimok
- 12, // Smettbo
- 110, // Smogmog
- 109, // Smogon
- 215, // Sniebel
- 53, // Snobilikat
- 209, // Snubbull
- 338, // Sonnfel
- 192, // Sonnflora
- 191, // Sonnkern
- 325, // Spoink
- 208, // Stahlos
- 121, // Starmie
- 120, // Sterndu
- 306, // Stolloss
- 305, // Stollrak
- 304, // Stollunior
- 245, // Suicune
- 260, // Sumpex
- 114, // Tangela
- 374, // Tanhel
- 204, // Tannza
- 17, // Tauboga
- 18, // Tauboss
- 16, // Taubsi
- 128, // Tauros
- 216, // Teddiursa
- 275, // Tengulist
- 72, // Tentacha
- 73, // Tentoxa
- 175, // Togepi
- 176, // Togetic
- 319, // Tohaido
- 157, // Tornupto
- 104, // Tragosso
- 280, // Trasla
- 96, // Traumato
- 200, // Traunfugil
- 357, // Tropius
- 9, // Turtok
- 331, // Tuska
- 159, // Tyracroc
- 70, // Ultrigaria
- 217, // Ursaring
- 329, // Vibrava
- 336, // Vipitis
- 313, // Volbeat
- 310, // Voltenso
- 179, // Voltilamm
- 100, // Voltobal
- 38, // Vulnona
- 37, // Vulpix
- 180, // Waaty
- 333, // Wablu
- 320, // Wailmer
- 321, // Wailord
- 365, // Walraisa
- 265, // Waumpel
- 167, // Webarak
- 340, // Welsar
- 346, // Wielie
- 162, // Wiesenior
- 161, // Wiesor
- 278, // Wingull
- 202, // Woingenau
- 178, // Xatu
- 193, // Yanma
- 145, // Zapdos
- 263, // Zigzachs
- 302, // Zobiris
- 41, // Zubat
- 356, // Zwirrklop
- 355, // Zwirrlicht
+ NATIONAL_DEX_OLD_UNOWN_B,
+ NATIONAL_DEX_OLD_UNOWN_C,
+ NATIONAL_DEX_OLD_UNOWN_D,
+ NATIONAL_DEX_OLD_UNOWN_E,
+ NATIONAL_DEX_OLD_UNOWN_F,
+ NATIONAL_DEX_OLD_UNOWN_G,
+ NATIONAL_DEX_OLD_UNOWN_H,
+ NATIONAL_DEX_OLD_UNOWN_I,
+ NATIONAL_DEX_OLD_UNOWN_J,
+ NATIONAL_DEX_OLD_UNOWN_K,
+ NATIONAL_DEX_OLD_UNOWN_L,
+ NATIONAL_DEX_OLD_UNOWN_M,
+ NATIONAL_DEX_OLD_UNOWN_N,
+ NATIONAL_DEX_OLD_UNOWN_O,
+ NATIONAL_DEX_OLD_UNOWN_P,
+ NATIONAL_DEX_OLD_UNOWN_Q,
+ NATIONAL_DEX_OLD_UNOWN_R,
+ NATIONAL_DEX_OLD_UNOWN_S,
+ NATIONAL_DEX_OLD_UNOWN_T,
+ NATIONAL_DEX_OLD_UNOWN_U,
+ NATIONAL_DEX_OLD_UNOWN_V,
+ NATIONAL_DEX_OLD_UNOWN_W,
+ NATIONAL_DEX_OLD_UNOWN_X,
+ NATIONAL_DEX_OLD_UNOWN_Y,
+ NATIONAL_DEX_OLD_UNOWN_Z,
+ NATIONAL_DEX_HUNTAIL, // Aalabyss
+ NATIONAL_DEX_ABRA, // Abra
+ NATIONAL_DEX_ABSOL, // Absol
+ NATIONAL_DEX_AERODACTYL, // Aerodactyl
+ NATIONAL_DEX_HAUNTER, // Alpollo
+ NATIONAL_DEX_ALTARIA, // Altaria
+ NATIONAL_DEX_OMANYTE, // Amonitas
+ NATIONAL_DEX_OMASTAR, // Amoroso
+ NATIONAL_DEX_AMPHAROS, // Ampharos
+ NATIONAL_DEX_ANORITH, // Anorith
+ NATIONAL_DEX_VAPOREON, // Aquana
+ NATIONAL_DEX_ARBOK, // Arbok
+ NATIONAL_DEX_ARIADOS, // Ariados
+ NATIONAL_DEX_ARCANINE, // Arkani
+ NATIONAL_DEX_ARTICUNO, // Arktos
+ NATIONAL_DEX_ARMALDO, // Armaldo
+ NATIONAL_DEX_CLOYSTER, // Austos
+ NATIONAL_DEX_AZUMARILL, // Azumarill
+ NATIONAL_DEX_AZURILL, // Azurill
+ NATIONAL_DEX_QWILFISH, // Baldorfish
+ NATIONAL_DEX_BANETTE, // Banette
+ NATIONAL_DEX_FEEBAS, // Barschwa
+ NATIONAL_DEX_BEEDRILL, // Bibor
+ NATIONAL_DEX_VENUSAUR, // Bisaflor
+ NATIONAL_DEX_IVYSAUR, // Bisaknosp
+ NATIONAL_DEX_BULBASAUR, // Bisasam
+ NATIONAL_DEX_NUZLEAF, // Blanas
+ NATIONAL_DEX_JOLTEON, // Blitza
+ NATIONAL_DEX_BELLOSSOM, // Blubella
+ NATIONAL_DEX_VENONAT, // Bluzuk
+ NATIONAL_DEX_DELIBIRD, // Botogel
+ NATIONAL_DEX_SALAMENCE, // Brutalanda
+ NATIONAL_DEX_SLAKOTH, // Bummelz
+ NATIONAL_DEX_NUMEL, // Camaub
+ NATIONAL_DEX_CAMERUPT, // Camerupt
+ NATIONAL_DEX_CELEBI, // Celebi
+ NATIONAL_DEX_CHANSEY, // Chaneira
+ NATIONAL_DEX_CORSOLA, // Corasonn
+ NATIONAL_DEX_STANTLER, // Damhirplex
+ NATIONAL_DEX_DEOXYS, // Deoxys
+ NATIONAL_DEX_TYRANITAR, // Despotar
+ NATIONAL_DEX_DIGLETT, // Digda
+ NATIONAL_DEX_DUGTRIO, // Digdri
+ NATIONAL_DEX_DITTO, // Ditto
+ NATIONAL_DEX_DODRIO, // Dodri
+ NATIONAL_DEX_DODUO, // Dodu
+ NATIONAL_DEX_DONPHAN, // Donphan
+ NATIONAL_DEX_DRAGONAIR, // Dragonir
+ NATIONAL_DEX_DRAGONITE, // Dragoran
+ NATIONAL_DEX_SHELGON, // Draschel
+ NATIONAL_DEX_DRATINI, // Dratini
+ NATIONAL_DEX_GLOOM, // Duflor
+ NATIONAL_DEX_DUNSPARCE, // Dummisel
+ NATIONAL_DEX_ELEKID, // Elekid
+ NATIONAL_DEX_ELECTABUZZ, // Elektek
+ NATIONAL_DEX_CHIKORITA, // Endivie
+ NATIONAL_DEX_SKITTY, // Eneco
+ NATIONAL_DEX_DELCATTY, // Enekoro
+ NATIONAL_DEX_ENTEI, // Entei
+ NATIONAL_DEX_PSYDUCK, // Enton
+ NATIONAL_DEX_GOLDUCK, // Entoron
+ NATIONAL_DEX_EEVEE, // Evoli
+ NATIONAL_DEX_SMEARGLE, // Farbeagle
+ NATIONAL_DEX_WOOPER, // Felino
+ NATIONAL_DEX_CYNDAQUIL, // Feurigel
+ NATIONAL_DEX_POOCHYENA, // Fiffyen
+ NATIONAL_DEX_GLALIE, // Firnontor
+ NATIONAL_DEX_FLAREON, // Flamara
+ NATIONAL_DEX_SLOWPOKE, // Flegmon
+ NATIONAL_DEX_TORCHIC, // Flemmli
+ NATIONAL_DEX_IGGLYBUFF, // Fluffeluff
+ NATIONAL_DEX_MAWILE, // Flunkifer
+ NATIONAL_DEX_WHISMUR, // Flurmel
+ NATIONAL_DEX_CASTFORM, // Formeo
+ NATIONAL_DEX_FORRETRESS, // Forstellka
+ NATIONAL_DEX_ELECTRIKE, // Frizelbliz
+ NATIONAL_DEX_GROWLITHE, // Fukano
+ NATIONAL_DEX_RAPIDASH, // Gallopa
+ NATIONAL_DEX_GYARADOS, // Garados
+ NATIONAL_DEX_TREECKO, // Geckarbor
+ NATIONAL_DEX_SURSKIT, // Gehweiher
+ NATIONAL_DEX_GENGAR, // Gengar
+ NATIONAL_DEX_GRAVELER, // Georok
+ NATIONAL_DEX_GOLEM, // Geowaz
+ NATIONAL_DEX_LINOONE, // Geradaks
+ NATIONAL_DEX_SCEPTILE, // Gewaldro
+ NATIONAL_DEX_VILEPLUME, // Giflor
+ NATIONAL_DEX_GIRAFARIG, // Girafarig
+ NATIONAL_DEX_CHARMANDER, // Glumanda
+ NATIONAL_DEX_CHARIZARD, // Glurak
+ NATIONAL_DEX_CHARMELEON, // Glutexo
+ NATIONAL_DEX_GOLBAT, // Golbat
+ NATIONAL_DEX_GOLDEEN, // Goldini
+ NATIONAL_DEX_SEAKING, // Golking
+ NATIONAL_DEX_GRANBULL, // Granbull
+ NATIONAL_DEX_AIPOM, // Griffel
+ NATIONAL_DEX_GRUMPIG, // Groink
+ NATIONAL_DEX_GROUDON, // Groudon
+ NATIONAL_DEX_GARDEVOIR, // Guardevoir
+ NATIONAL_DEX_SPEAROW, // Habitak
+ NATIONAL_DEX_HARIYAMA, // Hariyama
+ NATIONAL_DEX_BLISSEY, // Heiteira
+ NATIONAL_DEX_HO_OH, // Ho-oh
+ NATIONAL_DEX_HOOTHOOT, // Hoothoot
+ NATIONAL_DEX_HOPPIP, // Hoppspross
+ NATIONAL_DEX_WEEDLE, // Hornliu
+ NATIONAL_DEX_SKIPLOOM, // Hubelupf
+ NATIONAL_DEX_HOUNDOOM, // Hundemon
+ NATIONAL_DEX_HOUNDOUR, // Hunduster
+ NATIONAL_DEX_MUDKIP, // Hydropi
+ NATIONAL_DEX_HYPNO, // Hypno
+ NATIONAL_DEX_FEAROW, // Ibitak
+ NATIONAL_DEX_UNOWN, // Icognito
+ NATIONAL_DEX_QUILAVA, // Igelavar
+ NATIONAL_DEX_CROBAT, // Iksbat
+ NATIONAL_DEX_ILLUMISE, // Illumise
+ NATIONAL_DEX_FERALIGATR, // Impergator
+ NATIONAL_DEX_WYNAUT, // Isso
+ NATIONAL_DEX_JIRACHI, // Jirachi
+ NATIONAL_DEX_DEWGONG, // Jugong
+ NATIONAL_DEX_COMBUSKEN, // Jungglut
+ NATIONAL_DEX_SEEL, // Jurob
+ NATIONAL_DEX_KABUTO, // Kabuto
+ NATIONAL_DEX_KABUTOPS, // Kabutops
+ NATIONAL_DEX_KADABRA, // Kadabra
+ NATIONAL_DEX_KANGASKHAN, // Kangama
+ NATIONAL_DEX_CARVANHA, // Kanivanha
+ NATIONAL_DEX_BRELOOM, // Kapilz
+ NATIONAL_DEX_HITMONTOP, // Kapoera
+ NATIONAL_DEX_LUDICOLO, // Kappalores
+ NATIONAL_DEX_TOTODILE, // Karnimani
+ NATIONAL_DEX_MAGIKARP, // Karpador
+ NATIONAL_DEX_KECLEON, // Kecleon
+ NATIONAL_DEX_PILOSWINE, // Keifel
+ NATIONAL_DEX_HITMONLEE, // Kicklee
+ NATIONAL_DEX_BAGON, // Kindwurm
+ NATIONAL_DEX_KINGLER, // Kingler
+ NATIONAL_DEX_KIRLIA, // Kirlia
+ NATIONAL_DEX_GEODUDE, // Kleinstein
+ NATIONAL_DEX_TRAPINCH, // Knacklion
+ NATIONAL_DEX_SHROOMISH, // Knilz
+ NATIONAL_DEX_BELLSPROUT, // Knofensa
+ NATIONAL_DEX_MAROWAK, // Knogga
+ NATIONAL_DEX_WIGGLYTUFF, // Knuddeluff
+ NATIONAL_DEX_EXEGGUTOR, // Kokowei
+ NATIONAL_DEX_KAKUNA, // Kokuna
+ NATIONAL_DEX_KRABBY, // Krabby
+ NATIONAL_DEX_LOUDRED, // Krakeelo
+ NATIONAL_DEX_MURKROW, // Kramurx
+ NATIONAL_DEX_EXPLOUD, // Krawumms
+ NATIONAL_DEX_CORPHISH, // Krebscorps
+ NATIONAL_DEX_CRAWDAUNT, // Krebutack
+ NATIONAL_DEX_SMOOCHUM, // Kussilla
+ NATIONAL_DEX_KYOGRE, // Kyogre
+ NATIONAL_DEX_SLOWBRO, // Lahmus
+ NATIONAL_DEX_CHINCHOU, // Lampi
+ NATIONAL_DEX_LANTURN, // Lanturn
+ NATIONAL_DEX_LAPRAS, // Lapras
+ NATIONAL_DEX_LARVITAR, // Larvitar
+ NATIONAL_DEX_SLOWKING, // Laschoking
+ NATIONAL_DEX_LATIAS, // Latias
+ NATIONAL_DEX_LATIOS, // Latios
+ NATIONAL_DEX_MOLTRES, // Lavados
+ NATIONAL_DEX_LEDIAN, // Ledian
+ NATIONAL_DEX_LEDYBA, // Ledyba
+ NATIONAL_DEX_ELECTRODE, // Lektrobal
+ NATIONAL_DEX_CLAYDOL, // Lepumentas
+ NATIONAL_DEX_SLAKING, // Letarking
+ NATIONAL_DEX_FLYGON, // Libelldra
+ NATIONAL_DEX_LUVDISC, // Liebiskus
+ NATIONAL_DEX_LILEEP, // Liliep
+ NATIONAL_DEX_BLAZIKEN, // Lohgock
+ NATIONAL_DEX_LOMBRE, // Lombrero
+ NATIONAL_DEX_BAYLEEF, // Lorblatt
+ NATIONAL_DEX_LOTAD, // Loturzel
+ NATIONAL_DEX_LUGIA, // Lugia
+ NATIONAL_DEX_LUNATONE, // Lunastein
+ NATIONAL_DEX_MACHOP, // Machollo
+ NATIONAL_DEX_MACHAMP, // Machomei
+ NATIONAL_DEX_MAGBY, // Magby
+ NATIONAL_DEX_MAGCARGO, // Magcargo
+ NATIONAL_DEX_MAGMAR, // Magmar
+ NATIONAL_DEX_MIGHTYENA, // Magnayen
+ NATIONAL_DEX_MAGNEMITE, // Magnetilo
+ NATIONAL_DEX_MAGNETON, // Magneton
+ NATIONAL_DEX_MAKUHITA, // Makuhita
+ NATIONAL_DEX_MANTINE, // Mantax
+ NATIONAL_DEX_MARILL, // Marill
+ NATIONAL_DEX_MACHOKE, // Maschock
+ NATIONAL_DEX_MASQUERAIN, // Maskeregen
+ NATIONAL_DEX_MEOWTH, // Mauzi
+ NATIONAL_DEX_MEDICHAM, // Meditalis
+ NATIONAL_DEX_MEDITITE, // Meditie
+ NATIONAL_DEX_MEGANIUM, // Meganie
+ NATIONAL_DEX_MANKEY, // Menki
+ NATIONAL_DEX_METAGROSS, // Metagross
+ NATIONAL_DEX_METANG, // Metang
+ NATIONAL_DEX_MEW, // Mew
+ NATIONAL_DEX_MEWTWO, // Mewtu
+ NATIONAL_DEX_MILOTIC, // Milotic
+ NATIONAL_DEX_MILTANK, // Miltank
+ NATIONAL_DEX_MINUN, // Minun
+ NATIONAL_DEX_SUDOWOODO, // Mogelbaum
+ NATIONAL_DEX_MARSHTOMP, // Moorabbel
+ NATIONAL_DEX_QUAGSIRE, // Morlord
+ NATIONAL_DEX_VIGOROTH, // Muntier
+ NATIONAL_DEX_SHELLDER, // Muschas
+ NATIONAL_DEX_ODDISH, // Myrapla
+ NATIONAL_DEX_UMBREON, // Nachtara
+ NATIONAL_DEX_NOSEPASS, // Nasgnet
+ NATIONAL_DEX_NATU, // Natu
+ NATIONAL_DEX_GASTLY, // Nebulak
+ NATIONAL_DEX_NIDOKING, // Nidoking
+ NATIONAL_DEX_NIDOQUEEN, // Nidoqueen
+ NATIONAL_DEX_NIDORAN_F, // Nidoran♀
+ NATIONAL_DEX_NIDORAN_M, // Nidoran♂
+ NATIONAL_DEX_NIDORINA, // Nidorina
+ NATIONAL_DEX_NIDORINO, // Nidorino
+ NATIONAL_DEX_NINCADA, // Nincada
+ NATIONAL_DEX_NINJASK, // Ninjask
+ NATIONAL_DEX_SHEDINJA, // Ninjatom
+ NATIONAL_DEX_HITMONCHAN, // Nockchan
+ NATIONAL_DEX_NOCTOWL, // Noctuh
+ NATIONAL_DEX_CACTURNE, // Noktuska
+ NATIONAL_DEX_OCTILLERY, // Octillery
+ NATIONAL_DEX_VENOMOTH, // Omot
+ NATIONAL_DEX_ONIX, // Onix
+ NATIONAL_DEX_EXEGGCUTE, // Owei
+ NATIONAL_DEX_CHIMECHO, // Palimpalim
+ NATIONAL_DEX_SPINDA, // Pandir
+ NATIONAL_DEX_CASCOON, // Panekon
+ NATIONAL_DEX_MR_MIME, // Pantimos
+ NATIONAL_DEX_SKARMORY, // Panzaeron
+ NATIONAL_DEX_BEAUTIFLY, // Papinella
+ NATIONAL_DEX_JUMPLUFF, // Papungha
+ NATIONAL_DEX_PARAS, // Paras
+ NATIONAL_DEX_PARASECT, // Parasek
+ NATIONAL_DEX_PELIPPER, // Pelipper
+ NATIONAL_DEX_CLAMPERL, // Perlu
+ NATIONAL_DEX_PHANPY, // Phanpy
+ NATIONAL_DEX_PICHU, // Pichu
+ NATIONAL_DEX_CLEFAIRY, // Piepi
+ NATIONAL_DEX_CLEFFA, // Pii
+ NATIONAL_DEX_PIKACHU, // Pikachu
+ NATIONAL_DEX_PINSIR, // Pinsir
+ NATIONAL_DEX_CLEFABLE, // Pixi
+ NATIONAL_DEX_PLUSLE, // Plusle
+ NATIONAL_DEX_PONYTA, // Ponita
+ NATIONAL_DEX_FARFETCHD, // Porenta
+ NATIONAL_DEX_PORYGON, // Porygon
+ NATIONAL_DEX_PORYGON2, // Porygon2
+ NATIONAL_DEX_SHUCKLE, // Pottrott
+ NATIONAL_DEX_ESPEON, // Psiana
+ NATIONAL_DEX_DUSTOX, // Pudox
+ NATIONAL_DEX_JIGGLYPUFF, // Pummeluff
+ NATIONAL_DEX_PUPITAR, // Pupitar
+ NATIONAL_DEX_BALTOY, // Puppance
+ NATIONAL_DEX_POLIWRATH, // Quappo
+ NATIONAL_DEX_POLIWAG, // Quapsel
+ NATIONAL_DEX_POLIWHIRL, // Quaputzi
+ NATIONAL_DEX_POLITOED, // Quaxo
+ NATIONAL_DEX_SWINUB, // Quiekel
+ NATIONAL_DEX_TORKOAL, // Qurtel
+ NATIONAL_DEX_TYROGUE, // Rabauz
+ NATIONAL_DEX_RAICHU, // Raichu
+ NATIONAL_DEX_RAIKOU, // Raikou
+ NATIONAL_DEX_PRIMEAPE, // Rasaff
+ NATIONAL_DEX_RATTATA, // Rattfratz
+ NATIONAL_DEX_RATICATE, // Rattikarl
+ NATIONAL_DEX_CATERPIE, // Raupy
+ NATIONAL_DEX_RAYQUAZA, // Rayquaza
+ NATIONAL_DEX_REGICE, // Regice
+ NATIONAL_DEX_REGIROCK, // Regirock
+ NATIONAL_DEX_REGISTEEL, // Registeel
+ NATIONAL_DEX_SNORLAX, // Relaxo
+ NATIONAL_DEX_RELICANTH, // Relicanth
+ NATIONAL_DEX_REMORAID, // Remoraid
+ NATIONAL_DEX_GROVYLE, // Reptain
+ NATIONAL_DEX_EKANS, // Rettan
+ NATIONAL_DEX_RHYHORN, // Rihorn
+ NATIONAL_DEX_RHYDON, // Rizeros
+ NATIONAL_DEX_ROSELIA, // Roselia
+ NATIONAL_DEX_JYNX, // Rossana
+ NATIONAL_DEX_METAPOD, // Safcon
+ NATIONAL_DEX_GOREBYSS, // Saganabyss
+ NATIONAL_DEX_SEEDOT, // Samurzel
+ NATIONAL_DEX_SANDSLASH, // Sandamer
+ NATIONAL_DEX_SANDSHREW, // Sandan
+ NATIONAL_DEX_VICTREEBEL, // Sarzenia
+ NATIONAL_DEX_SILCOON, // Schaloko
+ NATIONAL_DEX_SCIZOR, // Scherox
+ NATIONAL_DEX_SQUIRTLE, // Schiggy
+ NATIONAL_DEX_WARTORTLE, // Schillok
+ NATIONAL_DEX_SWALOT, // Schlukwech
+ NATIONAL_DEX_GULPIN, // Schluppuck
+ NATIONAL_DEX_LICKITUNG, // Schlurp
+ NATIONAL_DEX_BARBOACH, // Schmerbe
+ NATIONAL_DEX_SLUGMA, // Schneckmag
+ NATIONAL_DEX_SNORUNT, // Schneppke
+ NATIONAL_DEX_TAILLOW, // Schwalbini
+ NATIONAL_DEX_SWELLOW, // Schwalboss
+ NATIONAL_DEX_KINGDRA, // Seedraking
+ NATIONAL_DEX_SEALEO, // Seejong
+ NATIONAL_DEX_SEADRA, // Seemon
+ NATIONAL_DEX_SPHEAL, // Seemops
+ NATIONAL_DEX_HORSEA, // Seeper
+ NATIONAL_DEX_ZANGOOSE, // Sengo
+ NATIONAL_DEX_SHUPPET, // Shuppet
+ NATIONAL_DEX_SCYTHER, // Sichlor
+ NATIONAL_DEX_ALAKAZAM, // Simsala
+ NATIONAL_DEX_HERACROSS, // Skaraborn
+ NATIONAL_DEX_GLIGAR, // Skorgla
+ NATIONAL_DEX_GRIMER, // Sleima
+ NATIONAL_DEX_MUK, // Sleimok
+ NATIONAL_DEX_BUTTERFREE, // Smettbo
+ NATIONAL_DEX_WEEZING, // Smogmog
+ NATIONAL_DEX_KOFFING, // Smogon
+ NATIONAL_DEX_SNEASEL, // Sniebel
+ NATIONAL_DEX_PERSIAN, // Snobilikat
+ NATIONAL_DEX_SNUBBULL, // Snubbull
+ NATIONAL_DEX_SOLROCK, // Sonnfel
+ NATIONAL_DEX_SUNFLORA, // Sonnflora
+ NATIONAL_DEX_SUNKERN, // Sonnkern
+ NATIONAL_DEX_SPOINK, // Spoink
+ NATIONAL_DEX_STEELIX, // Stahlos
+ NATIONAL_DEX_STARMIE, // Starmie
+ NATIONAL_DEX_STARYU, // Sterndu
+ NATIONAL_DEX_AGGRON, // Stolloss
+ NATIONAL_DEX_LAIRON, // Stollrak
+ NATIONAL_DEX_ARON, // Stollunior
+ NATIONAL_DEX_SUICUNE, // Suicune
+ NATIONAL_DEX_SWAMPERT, // Sumpex
+ NATIONAL_DEX_TANGELA, // Tangela
+ NATIONAL_DEX_BELDUM, // Tanhel
+ NATIONAL_DEX_PINECO, // Tannza
+ NATIONAL_DEX_PIDGEOTTO, // Tauboga
+ NATIONAL_DEX_PIDGEOT, // Tauboss
+ NATIONAL_DEX_PIDGEY, // Taubsi
+ NATIONAL_DEX_TAUROS, // Tauros
+ NATIONAL_DEX_TEDDIURSA, // Teddiursa
+ NATIONAL_DEX_SHIFTRY, // Tengulist
+ NATIONAL_DEX_TENTACOOL, // Tentacha
+ NATIONAL_DEX_TENTACRUEL, // Tentoxa
+ NATIONAL_DEX_TOGEPI, // Togepi
+ NATIONAL_DEX_TOGETIC, // Togetic
+ NATIONAL_DEX_SHARPEDO, // Tohaido
+ NATIONAL_DEX_TYPHLOSION, // Tornupto
+ NATIONAL_DEX_CUBONE, // Tragosso
+ NATIONAL_DEX_RALTS, // Trasla
+ NATIONAL_DEX_DROWZEE, // Traumato
+ NATIONAL_DEX_MISDREAVUS, // Traunfugil
+ NATIONAL_DEX_TROPIUS, // Tropius
+ NATIONAL_DEX_BLASTOISE, // Turtok
+ NATIONAL_DEX_CACNEA, // Tuska
+ NATIONAL_DEX_CROCONAW, // Tyracroc
+ NATIONAL_DEX_WEEPINBELL, // Ultrigaria
+ NATIONAL_DEX_URSARING, // Ursaring
+ NATIONAL_DEX_VIBRAVA, // Vibrava
+ NATIONAL_DEX_SEVIPER, // Vipitis
+ NATIONAL_DEX_VOLBEAT, // Volbeat
+ NATIONAL_DEX_MANECTRIC, // Voltenso
+ NATIONAL_DEX_MAREEP, // Voltilamm
+ NATIONAL_DEX_VOLTORB, // Voltobal
+ NATIONAL_DEX_NINETALES, // Vulnona
+ NATIONAL_DEX_VULPIX, // Vulpix
+ NATIONAL_DEX_FLAAFFY, // Waaty
+ NATIONAL_DEX_SWABLU, // Wablu
+ NATIONAL_DEX_WAILMER, // Wailmer
+ NATIONAL_DEX_WAILORD, // Wailord
+ NATIONAL_DEX_WALREIN, // Walraisa
+ NATIONAL_DEX_WURMPLE, // Waumpel
+ NATIONAL_DEX_SPINARAK, // Webarak
+ NATIONAL_DEX_WHISCASH, // Welsar
+ NATIONAL_DEX_CRADILY, // Wielie
+ NATIONAL_DEX_FURRET, // Wiesenior
+ NATIONAL_DEX_SENTRET, // Wiesor
+ NATIONAL_DEX_WINGULL, // Wingull
+ NATIONAL_DEX_WOBBUFFET, // Woingenau
+ NATIONAL_DEX_XATU, // Xatu
+ NATIONAL_DEX_YANMA, // Yanma
+ NATIONAL_DEX_ZAPDOS, // Zapdos
+ NATIONAL_DEX_ZIGZAGOON, // Zigzachs
+ NATIONAL_DEX_SABLEYE, // Zobiris
+ NATIONAL_DEX_ZUBAT, // Zubat
+ NATIONAL_DEX_DUSCLOPS, // Zwirrklop
+ NATIONAL_DEX_DUSKULL, // Zwirrlicht
};
#endif
static const u16 gPokedexOrder_Weight[] =
{
- 92, // Gastly
- 93, // Haunter
- 187, // Hoppip
- 50, // Diglett
- 351, // Castform
- 109, // Koffing
- 174, // Igglybuff
- 200, // Misdreavus
- 358, // Chimecho
- 188, // Skiploom
- 385, // Jirachi
- 333, // Swablu
- 292, // Shedinja
- 175, // Togepi
- 283, // Surskit
- 16, // Pidgey
- 191, // Sunkern
- 339, // Barboach
- 172, // Pichu
- 298, // Azurill
- 315, // Roselia
- 177, // Natu
- 21, // Spearow
- 198, // Murkrow
- 353, // Shuppet
- 276, // Taillow
- 102, // Exeggcute
- 255, // Torchic
- 270, // Lotad
- 10, // Caterpie
- 189, // Jumpluff
- 173, // Cleffa
- 13, // Weedle
- 176, // Togetic
- 147, // Dratini
- 19, // Rattata
- 284, // Masquerain
- 265, // Wurmple
- 211, // Qwilfish
- 151, // Mew
- 90, // Shellder
- 273, // Seedot
- 132, // Ditto
- 69, // Bellsprout
- 311, // Plusle
- 52, // Meowth
- 312, // Minun
- 285, // Shroomish
- 251, // Celebi
- 222, // Corsola
- 252, // Treecko
- 327, // Spinda
- 201, // Unown
- 46, // Paras
- 43, // Oddish
- 39, // Jigglypuff
- 290, // Nincada
- 182, // Bellossom
- 81, // Magnemite
- 25, // Pikachu
- 238, // Smoochum
- 161, // Sentret
- 70, // Weepinbell
- 152, // Chikorita
- 220, // Swinub
- 133, // Eevee
- 98, // Krabby
- 104, // Cubone
- 280, // Ralts
- 1, // Bulbasaur
- 23, // Ekans
- 29, // Nidoran?
- 204, // Pineco
- 349, // Feebas
- 138, // Omanyte
- 41, // Zubat
- 35, // Clefairy
- 258, // Mudkip
- 209, // Snubbull
- 179, // Mareep
- 155, // Cyndaquil
- 116, // Horsea
- 4, // Charmander
- 192, // Sunflora
- 183, // Marill
- 194, // Wooper
- 167, // Spinarak
- 44, // Gloom
- 370, // Luvdisc
- 216, // Teddiursa
- 32, // Nidoran?
- 7, // Squirtle
- 278, // Wingull
- 158, // Totodile
- 110, // Weezing
- 37, // Vulpix
- 11, // Metapod
- 266, // Silcoon
- 129, // Magikarp
- 14, // Kakuna
- 316, // Gulpin
- 100, // Voltorb
- 165, // Ledyba
- 228, // Houndour
- 300, // Skitty
- 302, // Sableye
- 307, // Meditite
- 341, // Corphish
- 190, // Aipom
- 268, // Cascoon
- 303, // Mawile
- 140, // Kabuto
- 40, // Wigglytuff
- 27, // Sandshrew
- 223, // Remoraid
- 291, // Ninjask
- 170, // Chinchou
- 60, // Poliwag
- 347, // Anorith
- 49, // Venomoth
- 354, // Banette
- 2, // Ivysaur
- 180, // Flaaffy
- 261, // Poochyena
- 360, // Wynaut
- 206, // Dunsparce
- 178, // Xatu
- 355, // Duskull
- 83, // Farfetch'd
- 328, // Trapinch
- 118, // Goldeen
- 309, // Electrike
- 329, // Vibrava
- 71, // Victreebel
- 153, // Bayleef
- 225, // Delibird
- 293, // Whismur
- 148, // Dragonair
- 361, // Snorunt
- 263, // Zigzagoon
- 314, // Illumise
- 313, // Volbeat
- 20, // Raticate
- 45, // Vileplume
- 156, // Quilava
- 5, // Charmeleon
- 58, // Growlithe
- 256, // Combusken
- 66, // Machop
- 63, // Abra
- 33, // Nidorino
- 54, // Psyduck
- 277, // Swellow
- 38, // Ninetales
- 30, // Nidorina
- 61, // Poliwhirl
- 74, // Geodude
- 281, // Kirlia
- 213, // Shuckle
- 334, // Altaria
- 318, // Carvanha
- 236, // Tyrogue
- 163, // Hoothoot
- 240, // Magby
- 343, // Baltoy
- 253, // Grovyle
- 352, // Kecleon
- 171, // Lanturn
- 8, // Wartortle
- 368, // Gorebyss
- 369, // Relicanth
- 239, // Elekid
- 340, // Whiscash
- 345, // Lileep
- 322, // Numel
- 287, // Slakoth
- 135, // Jolteon
- 159, // Croconaw
- 136, // Flareon
- 117, // Seadra
- 196, // Espeon
- 367, // Huntail
- 197, // Umbreon
- 259, // Marshtomp
- 274, // Nuzleaf
- 215, // Sneasel
- 56, // Mankey
- 279, // Pelipper
- 267, // Beautifly
- 224, // Octillery
- 184, // Azumarill
- 202, // Wobbuffet
- 134, // Vaporeon
- 28, // Sandslash
- 47, // Parasect
- 15, // Beedrill
- 89, // Muk
- 17, // Pidgeotto
- 88, // Grimer
- 26, // Raichu
- 77, // Ponyta
- 125, // Electabuzz
- 48, // Venonat
- 325, // Spoink
- 356, // Dusclops
- 308, // Medicham
- 269, // Dustox
- 53, // Persian
- 12, // Butterfree
- 57, // Primeape
- 96, // Drowzee
- 162, // Furret
- 233, // Porygon2
- 271, // Lombre
- 264, // Linoone
- 301, // Delcatty
- 342, // Crawdaunt
- 51, // Dugtrio
- 168, // Ariados
- 231, // Phanpy
- 186, // Politoed
- 120, // Staryu
- 113, // Chansey
- 139, // Omastar
- 114, // Tangela
- 218, // Slugma
- 229, // Houndoom
- 166, // Ledian
- 79, // Slowpoke
- 137, // Porygon
- 262, // Mightyena
- 193, // Yanma
- 22, // Fearow
- 185, // Sudowoodo
- 119, // Seaking
- 286, // Breloom
- 84, // Doduo
- 18, // Pidgeot
- 363, // Spheal
- 36, // Clefable
- 380, // Latias
- 310, // Manectric
- 335, // Zangoose
- 141, // Kabutops
- 94, // Gengar
- 294, // Loudred
- 124, // Jynx
- 164, // Noctowl
- 203, // Girafarig
- 371, // Bagon
- 126, // Magmar
- 105, // Marowak
- 72, // Tentacool
- 288, // Vigoroth
- 242, // Blissey
- 359, // Absol
- 65, // Alakazam
- 237, // Hitmontop
- 282, // Gardevoir
- 210, // Granbull
- 106, // Hitmonlee
- 107, // Hitmonchan
- 227, // Skarmory
- 331, // Cacnea
- 257, // Blaziken
- 254, // Sceptile
- 336, // Seviper
- 366, // Clamperl
- 145, // Zapdos
- 214, // Heracross
- 62, // Poliwrath
- 122, // Mr. mime
- 127, // Pinsir
- 272, // Ludicolo
- 73, // Tentacruel
- 42, // Golbat
- 219, // Magcargo
- 144, // Articuno
- 221, // Piloswine
- 123, // Scyther
- 64, // Kadabra
- 235, // Smeargle
- 142, // Aerodactyl
- 275, // Shiftry
- 99, // Kingler
- 31, // Nidoqueen
- 82, // Magneton
- 304, // Aron
- 381, // Latios
- 146, // Moltres
- 346, // Cradily
- 386, // Deoxys
- 181, // Ampharos
- 34, // Nidoking
- 207, // Gligar
- 24, // Arbok
- 108, // Lickitung
- 101, // Electrode
- 348, // Armaldo
- 67, // Machoke
- 234, // Stantler
- 326, // Grumpig
- 246, // Larvitar
- 169, // Crobat
- 195, // Quagsire
- 241, // Miltank
- 97, // Hypno
- 55, // Golduck
- 332, // Cacturne
- 80, // Slowbro
- 157, // Typhlosion
- 199, // Slowking
- 115, // Kangaskhan
- 121, // Starmie
- 317, // Swalot
- 324, // Torkoal
- 260, // Swampert
- 330, // Flygon
- 295, // Exploud
- 85, // Dodrio
- 9, // Blastoise
- 296, // Makuhita
- 364, // Sealeo
- 128, // Tauros
- 319, // Sharpedo
- 160, // Feraligatr
- 86, // Seel
- 6, // Charizard
- 78, // Rapidash
- 374, // Beldum
- 299, // Nosepass
- 3, // Venusaur
- 357, // Tropius
- 154, // Meganium
- 373, // Salamence
- 75, // Graveler
- 344, // Claydol
- 372, // Shelgon
- 111, // Rhyhorn
- 212, // Scizor
- 87, // Dewgong
- 112, // Rhydon
- 232, // Donphan
- 103, // Exeggutor
- 305, // Lairon
- 150, // Mewtwo
- 217, // Ursaring
- 205, // Forretress
- 68, // Machamp
- 320, // Wailmer
- 289, // Slaking
- 91, // Cloyster
- 365, // Walrein
- 247, // Pupitar
- 230, // Kingdra
- 338, // Solrock
- 59, // Arcanine
- 350, // Milotic
- 337, // Lunatone
- 378, // Regice
- 243, // Raikou
- 245, // Suicune
- 244, // Entei
- 250, // Ho-Oh
- 248, // Tyranitar
- 375, // Metang
- 379, // Registeel
- 384, // Rayquaza
- 95, // Onix
- 149, // Dragonite
- 249, // Lugia
- 131, // Lapras
- 323, // Camerupt
- 226, // Mantine
- 377, // Regirock
- 130, // Gyarados
- 297, // Hariyama
- 362, // Glalie
- 76, // Golem
- 382, // Kyogre
- 306, // Aggron
- 321, // Wailord
- 208, // Steelix
- 143, // Snorlax
- 376, // Metagross
- 383, // Groudon
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_ZUBAT,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_WAILORD,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_GROUDON,
};
static const u16 gPokedexOrder_Height[] =
{
- 50, // Diglett
- 298, // Azurill
- 177, // Natu
- 13, // Weedle
- 172, // Pichu
- 173, // Cleffa
- 175, // Togepi
- 351, // Castform
- 174, // Igglybuff
- 10, // Caterpie
- 276, // Taillow
- 132, // Ditto
- 133, // Eevee
- 315, // Roselia
- 21, // Spearow
- 16, // Pidgey
- 191, // Sunkern
- 90, // Shellder
- 19, // Rattata
- 81, // Magnemite
- 46, // Paras
- 265, // Wurmple
- 385, // Jirachi
- 104, // Cubone
- 258, // Mudkip
- 194, // Wooper
- 116, // Horsea
- 52, // Meowth
- 29, // Nidoran?
- 220, // Swinub
- 151, // Mew
- 333, // Swablu
- 304, // Aron
- 311, // Plusle
- 312, // Minun
- 102, // Exeggcute
- 25, // Pikachu
- 182, // Bellossom
- 316, // Gulpin
- 263, // Zigzagoon
- 285, // Shroomish
- 138, // Omanyte
- 331, // Cacnea
- 98, // Krabby
- 280, // Ralts
- 187, // Hoppip
- 255, // Torchic
- 366, // Clamperl
- 74, // Geodude
- 183, // Marill
- 339, // Barboach
- 238, // Smoochum
- 100, // Voltorb
- 290, // Nincada
- 302, // Sableye
- 198, // Murkrow
- 211, // Qwilfish
- 7, // Squirtle
- 252, // Treecko
- 343, // Baltoy
- 43, // Oddish
- 270, // Lotad
- 39, // Jigglypuff
- 283, // Surskit
- 155, // Cyndaquil
- 140, // Kabuto
- 264, // Linoone
- 324, // Torkoal
- 32, // Nidoran?
- 167, // Spinarak
- 56, // Mankey
- 273, // Seedot
- 261, // Poochyena
- 231, // Phanpy
- 201, // Unown
- 170, // Chinchou
- 233, // Porygon2
- 60, // Poliwag
- 371, // Bagon
- 349, // Feebas
- 353, // Shuppet
- 158, // Totodile
- 251, // Celebi
- 360, // Wynaut
- 27, // Sandshrew
- 358, // Chimecho
- 370, // Luvdisc
- 228, // Houndour
- 266, // Silcoon
- 309, // Electrike
- 4, // Charmander
- 307, // Meditite
- 278, // Wingull
- 223, // Remoraid
- 341, // Corphish
- 222, // Corsola
- 314, // Illumise
- 209, // Snubbull
- 37, // Vulpix
- 246, // Larvitar
- 374, // Beldum
- 293, // Whismur
- 204, // Pineco
- 239, // Elekid
- 35, // Clefairy
- 213, // Shuckle
- 216, // Teddiursa
- 14, // Kakuna
- 300, // Skitty
- 176, // Togetic
- 118, // Goldeen
- 303, // Mawile
- 179, // Mareep
- 188, // Skiploom
- 109, // Koffing
- 51, // Dugtrio
- 268, // Cascoon
- 322, // Numel
- 347, // Anorith
- 313, // Volbeat
- 163, // Hoothoot
- 328, // Trapinch
- 325, // Spoink
- 11, // Metapod
- 69, // Bellsprout
- 361, // Snorunt
- 20, // Raticate
- 259, // Marshtomp
- 277, // Swellow
- 240, // Magby
- 58, // Growlithe
- 200, // Misdreavus
- 1, // Bulbasaur
- 236, // Tyrogue
- 218, // Slugma
- 287, // Slakoth
- 281, // Kirlia
- 190, // Aipom
- 135, // Jolteon
- 30, // Nidorina
- 184, // Azumarill
- 292, // Shedinja
- 66, // Machop
- 291, // Ninjask
- 284, // Masquerain
- 355, // Duskull
- 192, // Sunflora
- 189, // Jumpluff
- 120, // Staryu
- 180, // Flaaffy
- 363, // Spheal
- 54, // Psyduck
- 219, // Magcargo
- 83, // Farfetch'd
- 41, // Zubat
- 137, // Porygon
- 161, // Sentret
- 318, // Carvanha
- 44, // Gloom
- 26, // Raichu
- 129, // Magikarp
- 215, // Sneasel
- 305, // Lairon
- 256, // Combusken
- 224, // Octillery
- 33, // Nidorino
- 136, // Flareon
- 225, // Delibird
- 72, // Tentacool
- 63, // Abra
- 253, // Grovyle
- 340, // Whiscash
- 156, // Quilava
- 196, // Espeon
- 88, // Grimer
- 152, // Chikorita
- 326, // Grumpig
- 299, // Nosepass
- 53, // Persian
- 262, // Mightyena
- 48, // Venonat
- 82, // Magneton
- 77, // Ponyta
- 296, // Makuhita
- 337, // Lunatone
- 28, // Sandslash
- 96, // Drowzee
- 114, // Tangela
- 57, // Primeape
- 165, // Ledyba
- 40, // Wigglytuff
- 47, // Parasect
- 139, // Omastar
- 294, // Loudred
- 8, // Wartortle
- 75, // Graveler
- 197, // Umbreon
- 345, // Lileep
- 61, // Poliwhirl
- 134, // Vaporeon
- 15, // Beedrill
- 105, // Marowak
- 70, // Weepinbell
- 369, // Relicanth
- 111, // Rhyhorn
- 2, // Ivysaur
- 352, // Kecleon
- 274, // Nuzleaf
- 267, // Beautifly
- 17, // Pidgeotto
- 168, // Ariados
- 86, // Seel
- 186, // Politoed
- 159, // Croconaw
- 113, // Chansey
- 354, // Banette
- 232, // Donphan
- 121, // Starmie
- 5, // Charmeleon
- 221, // Piloswine
- 12, // Butterfree
- 329, // Vibrava
- 125, // Electabuzz
- 342, // Crawdaunt
- 301, // Delcatty
- 334, // Altaria
- 372, // Shelgon
- 38, // Ninetales
- 207, // Gligar
- 364, // Sealeo
- 327, // Spinda
- 247, // Pupitar
- 79, // Slowpoke
- 338, // Solrock
- 241, // Miltank
- 22, // Fearow
- 45, // Vileplume
- 89, // Muk
- 205, // Forretress
- 185, // Sudowoodo
- 359, // Absol
- 193, // Yanma
- 269, // Dustox
- 108, // Lickitung
- 235, // Smeargle
- 171, // Lanturn
- 101, // Electrode
- 271, // Lombre
- 286, // Breloom
- 153, // Bayleef
- 117, // Seadra
- 110, // Weezing
- 279, // Pelipper
- 375, // Metang
- 31, // Nidoqueen
- 332, // Cacturne
- 275, // Shiftry
- 308, // Medicham
- 335, // Zangoose
- 141, // Kabutops
- 99, // Kingler
- 64, // Kadabra
- 119, // Seaking
- 36, // Clefable
- 126, // Magmar
- 202, // Wobbuffet
- 92, // Gastly
- 122, // Mr. mime
- 62, // Poliwrath
- 128, // Tauros
- 380, // Latias
- 181, // Ampharos
- 288, // Vigoroth
- 166, // Ledian
- 76, // Golem
- 365, // Walrein
- 84, // Doduo
- 229, // Houndoom
- 34, // Nidoking
- 124, // Jynx
- 107, // Hitmonchan
- 234, // Stantler
- 210, // Granbull
- 237, // Hitmontop
- 195, // Quagsire
- 344, // Claydol
- 260, // Swampert
- 242, // Blissey
- 272, // Ludicolo
- 295, // Exploud
- 206, // Dunsparce
- 127, // Pinsir
- 91, // Cloyster
- 67, // Machoke
- 203, // Girafarig
- 18, // Pidgeot
- 178, // Xatu
- 346, // Cradily
- 106, // Hitmonlee
- 49, // Venomoth
- 94, // Gengar
- 214, // Heracross
- 362, // Glalie
- 123, // Scyther
- 373, // Salamence
- 310, // Manectric
- 348, // Armaldo
- 65, // Alakazam
- 97, // Hypno
- 164, // Noctowl
- 73, // Tentacruel
- 356, // Dusclops
- 145, // Zapdos
- 42, // Golbat
- 376, // Metagross
- 282, // Gardevoir
- 9, // Blastoise
- 80, // Slowbro
- 93, // Haunter
- 68, // Machamp
- 377, // Regirock
- 317, // Swalot
- 254, // Sceptile
- 227, // Skarmory
- 55, // Golduck
- 386, // Deoxys
- 71, // Victreebel
- 78, // Rapidash
- 6, // Charizard
- 367, // Huntail
- 87, // Dewgong
- 144, // Articuno
- 157, // Typhlosion
- 142, // Aerodactyl
- 368, // Gorebyss
- 217, // Ursaring
- 154, // Meganium
- 378, // Regice
- 212, // Scizor
- 230, // Kingdra
- 147, // Dratini
- 85, // Dodrio
- 319, // Sharpedo
- 169, // Crobat
- 162, // Furret
- 59, // Arcanine
- 243, // Raikou
- 257, // Blaziken
- 323, // Camerupt
- 112, // Rhydon
- 379, // Registeel
- 23, // Ekans
- 330, // Flygon
- 357, // Tropius
- 381, // Latios
- 245, // Suicune
- 146, // Moltres
- 3, // Venusaur
- 103, // Exeggutor
- 199, // Slowking
- 248, // Tyranitar
- 289, // Slaking
- 320, // Wailmer
- 150, // Mewtwo
- 306, // Aggron
- 143, // Snorlax
- 226, // Mantine
- 244, // Entei
- 149, // Dragonite
- 115, // Kangaskhan
- 297, // Hariyama
- 160, // Feraligatr
- 131, // Lapras
- 336, // Seviper
- 24, // Arbok
- 383, // Groudon
- 250, // Ho-Oh
- 148, // Dragonair
- 382, // Kyogre
- 249, // Lugia
- 350, // Milotic
- 130, // Gyarados
- 384, // Rayquaza
- 95, // Onix
- 208, // Steelix
- 321, // Wailord
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_ZUBAT,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_GROUDON,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_WAILORD,
};
diff --git a/src/heal_location.c b/src/heal_location.c
index 4c78f5921..3bb24e1a1 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,32 +1,7 @@
#include "global.h"
#include "heal_location.h"
#include "constants/maps.h"
-
-static const struct HealLocation sHealLocations[] =
-{
- {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2},
- {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2},
- {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17},
- {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20},
- {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6},
- {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39},
- {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7},
- {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15},
- {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17},
- {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32},
- {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49},
- {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9},
- {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9},
- {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17},
- {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11},
- {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7},
- {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8},
- {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4},
- {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16},
- {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6},
- {MAP_GROUP(BATTLE_TOWER_OUTSIDE), MAP_NUM(BATTLE_TOWER_OUTSIDE), 14, 9},
- {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20},
-};
+#include "data/heal_locations.h"
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
diff --git a/src/item_menu.c b/src/item_menu.c
index 915aa5183..12d02ebd8 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -762,7 +762,7 @@ static void sub_80A39B8(u16 *a, u8 b)
{
u8 var = b * 2;
- sub_809D104(a, 4, 10, gUnknown_08E96EC8, 0, var, 8, 2);
+ sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 0, var, 8, 2);
}
static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d)
@@ -776,8 +776,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d)
if (b == 5)
r7 = 2;
- sub_809D104(a, 4, 10, gUnknown_08E96EC8, 8 - c, r2, c, 2);
- sub_809D104(a, c + 4, 10, gUnknown_08E96EC8, 0, r7, 8 - c, 2);
+ sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 8 - c, r2, c, 2);
+ sub_809D104(a, c + 4, 10, gBagScreenLabels_Tilemap, 0, r7, 8 - c, 2);
}
else if (d == 1)
{
@@ -785,8 +785,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d)
if (b == 1)
r7 = 10;
- sub_809D104(a, 4, 10, gUnknown_08E96EC8, c, r7, 8 - c, 2);
- sub_809D104(a, 12 - c, 10, gUnknown_08E96EC8, 0, r2, c, 2);
+ sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, c, r7, 8 - c, 2);
+ sub_809D104(a, 12 - c, 10, gBagScreenLabels_Tilemap, 0, r2, c, 2);
}
}
@@ -4024,7 +4024,7 @@ static int sub_80A7988(void)
}
static const u16 gPalette_83C170C[] = INCBIN_U16("graphics/unknown/83C170C.gbapal");
-static const u8 gSpriteImage_83C172C[] = INCBIN_U8("graphics/unknown_sprites/83C172C.4bpp");
+static const u8 gSpriteImage_BagSpinner[] = INCBIN_U8("graphics/interface/bag_spinner.4bpp");
const u8 gSpriteImage_UnusedCherry[] = INCBIN_U8("graphics/unused/cherry.4bpp");
const u16 gSpritePalette_UnusedCherry[] = INCBIN_U16("graphics/unused/cherry.gbapal");
@@ -4258,7 +4258,7 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1D20[] =
static const struct SpriteFrameImage gSpriteImageTable_83C1D28[] =
{
- {gSpriteImage_83C172C, sizeof(gSpriteImage_83C172C)},
+ {gSpriteImage_BagSpinner, sizeof(gSpriteImage_BagSpinner)},
};
static const struct SpritePalette sPokeballSpritePalette = {gPalette_83C170C, 8};
diff --git a/src/load_save.c b/src/load_save.c
index 7960a42eb..a1ca7ce76 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -67,7 +67,7 @@ void SavePlayerParty(void)
gSaveBlock1.playerPartyCount = gPlayerPartyCount;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
gSaveBlock1.playerParty[i] = gPlayerParty[i];
}
@@ -77,7 +77,7 @@ void LoadPlayerParty(void)
gPlayerPartyCount = gSaveBlock1.playerPartyCount;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
gPlayerParty[i] = gSaveBlock1.playerParty[i];
}
@@ -85,7 +85,7 @@ static void SaveEventObjects(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
gSaveBlock1.eventObjects[i] = gEventObjects[i];
}
@@ -93,7 +93,7 @@ static void LoadEventObjects(void)
{
int i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
gEventObjects[i] = gSaveBlock1.eventObjects[i];
}
@@ -114,27 +114,27 @@ void LoadPlayerBag(void)
int i;
// load player items.
- for (i = 0; i < 20; i++)
+ for (i = 0; i < BAG_ITEMS_COUNT; i++)
gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i];
// load player key items.
- for (i = 0; i < 20; i++)
+ for (i = 0; i < BAG_KEYITEMS_COUNT; i++)
gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i];
// load player pokeballs.
- for (i = 0; i < 16; i++)
+ for (i = 0; i < BAG_POKEBALLS_COUNT; i++)
gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i];
// load player TMs and HMs.
- for (i = 0; i < 64; i++)
+ for (i = 0; i < BAG_TMHM_COUNT; i++)
gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i];
// load player berries.
- for (i = 0; i < 46; i++)
+ for (i = 0; i < BAG_BERRIES_COUNT; i++)
gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i];
// load mail.
- for (i = 0; i < 16; i++)
+ for (i = 0; i < MAIL_COUNT; i++)
gLoadedSaveData.mail[i] = gSaveBlock1.mail[i];
}
@@ -143,26 +143,26 @@ void SavePlayerBag(void)
int i;
// save player items.
- for (i = 0; i < 20; i++)
+ for (i = 0; i < BAG_ITEMS_COUNT; i++)
gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i];
// save player key items.
- for (i = 0; i < 20; i++)
+ for (i = 0; i < BAG_KEYITEMS_COUNT; i++)
gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i];
// save player pokeballs.
- for (i = 0; i < 16; i++)
+ for (i = 0; i < BAG_POKEBALLS_COUNT; i++)
gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i];
// save player TMs and HMs.
- for (i = 0; i < 64; i++)
+ for (i = 0; i < BAG_TMHM_COUNT; i++)
gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i];
// save player berries.
- for (i = 0; i < 46; i++)
+ for (i = 0; i < BAG_BERRIES_COUNT; i++)
gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i];
// save mail.
- for (i = 0; i < 16; i++)
+ for (i = 0; i < MAIL_COUNT; i++)
gSaveBlock1.mail[i] = gLoadedSaveData.mail[i];
}
diff --git a/src/pokedex.c b/src/pokedex.c
index eb4d1d918..caa6a1565 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -26,7 +26,6 @@
#include "scanline_effect.h"
#include "ewram.h"
-#define NATIONAL_DEX_COUNT 386
struct PokedexListItem
{
@@ -1971,7 +1970,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
{
default:
case DEX_MODE_HOENN:
- vars[0] = 202;
+ vars[0] = HOENN_DEX_COUNT;
vars[1] = 1;
break;
case DEX_MODE_NATIONAL:
@@ -1982,7 +1981,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
}
else
{
- vars[0] = 202;
+ vars[0] = HOENN_DEX_COUNT;
vars[1] = 1;
}
break;
@@ -2028,7 +2027,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
}
break;
case 1:
- for (i = 0; i < 411; i++)
+ for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++)
{
vars[2] = gPokedexOrder_Alphabetical[i];
@@ -4060,7 +4059,7 @@ u16 GetHoennPokedexCount(u8 caseID)
u16 count = 0;
u16 i;
- for (i = 0; i < 202; i++)
+ for (i = 0; i < HOENN_DEX_COUNT; i++)
{
switch (caseID)
{
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 30e9503cd..4814c900d 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -12,6 +12,7 @@
#include "main.h"
#include "move_tutor_menu.h"
#include "pokemon.h"
+#include "pokedex.h"
#include "random.h"
#include "overworld.h"
#include "rom_8077ABC.h"
@@ -390,10 +391,10 @@ u16 HoennPokedexNumToSpecies(u16 hoennNum)
species = 0;
- while (species < 411 && gSpeciesToHoennPokedexNum[species] != hoennNum)
+ while (species < POKEMON_SLOTS_NUMBER - 1 && gSpeciesToHoennPokedexNum[species] != hoennNum)
species++;
- if (species == 411)
+ if (species == POKEMON_SLOTS_NUMBER - 1)
return 0;
return species + 1;
@@ -408,10 +409,10 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum)
species = 0;
- while (species < 411 && gSpeciesToNationalPokedexNum[species] != nationalNum)
+ while (species < POKEMON_SLOTS_NUMBER - 1 && gSpeciesToNationalPokedexNum[species] != nationalNum)
species++;
- if (species == 411)
+ if (species == POKEMON_SLOTS_NUMBER - 1)
return 0;
return species + 1;
@@ -426,10 +427,10 @@ u16 NationalToHoennOrder(u16 nationalNum)
hoennNum = 0;
- while (hoennNum < 411 && gHoennToNationalOrder[hoennNum] != nationalNum)
+ while (hoennNum < POKEMON_SLOTS_NUMBER - 1 && gHoennToNationalOrder[hoennNum] != nationalNum)
hoennNum++;
- if (hoennNum == 411)
+ if (hoennNum == POKEMON_SLOTS_NUMBER - 1)
return 0;
return hoennNum + 1;
@@ -1095,7 +1096,7 @@ u16 SpeciesToPokedexNum(u16 species)
else
{
species = SpeciesToHoennPokedexNum(species);
- if (species <= 202)
+ if (species <= HOENN_DEX_COUNT)
return species;
return 0xFFFF;
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 2fd7cb1ca..fe908de03 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -4778,7 +4778,7 @@ static void sub_80A1DCC(struct Pokemon *mon)
static void sub_80A1DE8(struct Pokemon *mon)
{
u8 ball = ball_number_to_ball_processing_index(GetMonData(mon, MON_DATA_POKEBALL));
- sub_80478DC(ball);
+ LoadBallGraphics(ball);
pssData.ballSpriteId = CreateSprite(&gBallSpriteTemplates[ball], 6, 136, 0);
gSprites[pssData.ballSpriteId].callback = SpriteCallbackDummy;
diff --git a/src/pokenav_after.c b/src/pokenav_after.c
index 330305ea3..7619577cc 100644
--- a/src/pokenav_after.c
+++ b/src/pokenav_after.c
@@ -3,6 +3,7 @@
#include "pokenav.h"
#include "battle.h"
#include "data2.h"
+#include "text.h"
#include "de_rom_8040FE0.h"
#include "string_util.h"
@@ -20,14 +21,14 @@ void sub_80F700C(u8 *arg0, u16 arg1)
ptr = StringCopy(ptr, de_sub_8041024(0, gUnknown_083DFEC4->unkCEE8[arg1].unk0));
#endif
- ptr[0] = 0xFC;
+ ptr[0] = EXT_CTRL_CODE_BEGIN;
ptr[1] = 0x13;
ptr[2] = 0x4B;
ptr += 3;
ptr = StringCopy(ptr, trainer->trainerName);
}
- ptr[0] = 0xFC;
+ ptr[0] = EXT_CTRL_CODE_BEGIN;
ptr[1] = 0x13;
ptr[2] = 0x80;
ptr[3] = 0xFF;
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 21394f348..710756c11 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -5,6 +5,7 @@
#include "battle.h"
#include "data2.h"
#include "de_rom_8040FE0.h"
+#include "decompress.h"
#include "event_data.h"
#include "constants/flags.h"
#include "landmark.h"
@@ -15,11 +16,16 @@
#include "region_map.h"
#include "constants/songs.h"
#include "string_util.h"
+#include "strings.h"
#include "sound.h"
#include "task.h"
#include "text.h"
+#include "trig.h"
#include "scanline_effect.h"
#include "pokemon_storage_system.h"
+#include "pokemon_summary_screen.h"
+#include "use_pokeblock.h"
+#include "constants/game_stat.h"
struct UnknownPokenav0
{
@@ -87,6 +93,11 @@ struct UnknownPokenav0_1 {
s8 var6dae;
};
+struct PokenavRibbonIconGfx {
+ u16 baseTile;
+ u8 paletteNum;
+};
+
IWRAM_DATA void (*gUnknown_03000744)(void);
extern const u8 gUnknown_083E0314[];
@@ -129,6 +140,77 @@ extern const u8 gPokenavHoennMapMisc_Gfx[];
extern const u8 gUnknown_08E99FB0[];
extern const u8 gUnknown_08E9A100[];
extern const u16 gPokenavHoennMap1_Pal[];
+extern void (*const gUnknown_083E3270[])(u16, u16);
+extern const u8 gUnknown_083E039C[];
+extern const u8 gUnknown_083E03A0[];
+extern const u8 gUnknown_083E01F4[];
+extern const u8 *const gTrainerEyeDescriptions[];
+extern const u8 gUnknown_08E9FBA0[];
+extern const u8 gPokenavRibbonView_Gfx[];
+extern const u8 gUnknown_083E040C[];
+extern const u16 gPokenavRibbonView_Pal[];
+extern const u16 gUnknown_083E03A8[];
+extern const u16 gUnknown_083E3C60[][16];
+extern const u16 gPokenavRibbonsIconGfx[][2];
+extern const u8 *const gRibbonDescriptions[][2];
+extern const u8 *const gGiftRibbonDescriptions[][2];
+extern const u8 gUnknown_08E9FF58[];
+extern const u8 gPokenavRibbonPokeView_Gfx[];
+extern const u16 gUnknown_083E0124[];
+extern const u16 gUnknown_083E0144[];
+extern const u8 gPokenavMenuOptions_Gfx[];
+extern const u8 gPokenavConditionMenu_Gfx[];
+extern const u8 gPokenavConditionSearch_Gfx[];
+extern const struct SpriteTemplate gSpriteTemplate_83E4454;
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83E4450[];
+extern const u16 gUnknown_083E42F8[];
+extern const u16 gPokenavMenuOptions1_Pal[];
+extern const u16 gPokenavMenuOptions2_Pal[];
+extern const u16 gPokenavConditionMenu_Pal[];
+extern const u16 gPokenavCondition6_Pal[];
+extern const u16 gPokenavCondition7_Pal[];
+extern const struct SpriteSheet gSpriteSheet_PokenavBlueLight;
+extern const struct SpritePalette gSpritePalette_PokenavBlueLight;
+extern const struct SpriteTemplate gSpriteTemplate_83E4484;
+extern const u8 gPokenavMainMenu_Gfx[];
+extern const u8 gPokenavConditionMenuHeader_Gfx[];
+extern const u8 gPokenavRibbonsHeader_Gfx[];
+extern const u8 gPokenavHoennMapHeader_Gfx[];
+extern const u8 gPokenavConditionMenuOptions_Gfx[];
+extern const u8 gPokenavConditionMenuOptions2_Gfx[];
+extern const u8 gPokenavTrainersEyesHeader_Gfx[];
+extern const struct SpritePalette gUnknown_083E449C[];
+extern const struct SpriteTemplate gSpriteTemplate_83E4530;
+extern const struct SpriteTemplate gSpriteTemplate_83E4548;
+extern const struct SpriteTemplate gSpriteTemplate_83E44E0;
+extern const struct SpriteTemplate gSpriteTemplate_83E44F8;
+extern const struct SpriteSheet gUnknown_083E4568;
+extern const struct SpriteTemplate gSpriteTemplate_83E4570;
+extern const struct SpritePalette gUnknown_083E4588;
+extern const struct SpriteSheet gUnknown_083E4590[3];
+extern const struct SpritePalette gUnknown_083E45A8;
+extern const u16 gUnknown_08E9F988[];
+extern const struct SpriteTemplate gSpriteTemplate_83E45B8;
+extern const struct SpriteTemplate gSpriteTemplate_83E45F0;
+extern const struct SpriteSheet gUnknown_083E4628[4];
+extern const struct SpritePalette gUnknown_083E4648[3];
+extern const struct SpriteTemplate gSpriteTemplate_83E4660;
+extern const u16 gUnknown_083E4678[];
+extern const u8 gUnknown_083E3D00[];
+extern const struct SpriteTemplate gSpriteTemplate_83E476C;
+extern const struct SpriteSheet gUnknown_083E4784;
+extern const struct SpritePalette gUnknown_083E478C;
+extern const struct SpriteTemplate gSpriteTemplate_83E4800;
+extern const s16 gUnknown_083E4794[][2];
+extern const u8 gUnknown_083E329C[];
+extern const struct SpritePalette gUnknown_083E4818;
+extern const struct SpriteTemplate gSpriteTemplate_83E4850;
+extern const struct SpritePalette gUnknown_083E4868;
+extern const struct SpriteTemplate gSpriteTemplate_83E4878;
+
+extern u16 gUnknown_020388B4;
+extern u8 gUnknown_020388B0[];
+
// TODO: decompile the debug code so the compiler doesn't complain about
// unused static functions
@@ -171,20 +253,117 @@ static void sub_80EE58C();
static void sub_80EE658();
static void sub_80EE8F4();
static void sub_80EEDC4();
+static void ShowMapNamePopUpWindow(void);
+static void sub_80F0954(u16, u16, u16);
+static bool8 sub_80F098C(void);
+static u8 *sub_80F445C(u8*, u16);
+static void sub_80F081C(u8);
+bool8 sub_80F0944(void);
+static u8 *sub_80F4428(u8*, u16, u8);
+void sub_80F700C(u8*, u16);
+static void sub_80F0B24(void);
+static bool8 sub_80F0B44(void);
+static void sub_80F0C28(void);
+static bool8 sub_80F0C48(void);
+void LoadTrainerEyesDescriptionLines(void);
+bool8 sub_80F0D5C(void);
+static void sub_80F0EC0(void);
+static bool8 sub_80F0EF4(void);
+static void sub_80F0F64(void);
+static void sub_80F0FA0(void);
+static bool8 sub_80F0FEC(void);
+static bool8 sub_80F0718(void);
+void sub_80F0FFC(u8);
+static void sub_80F19DC(u8*);
+static bool8 sub_80F1080(void);
+void sub_80F1614(void);
+void DrawMonRibbonIcons(void);
+void sub_80F13FC(void);
+void sub_80F1438(void);
+static void sub_80F1494(void);
+bool8 sub_80F162C(u8);
+static void sub_80F01E0(u16);
+static void sub_80F19FC(void);
+static void sub_80F1A74(void);
+static void sub_80F1A80(void);
+static void sub_80F1A90(void);
+static bool8 sub_80F1AC4(void);
+static void sub_80F1B8C(u8);
+static bool8 sub_80F1BC8(u8);
+static void sub_80F2458(u8);
+static void sub_80F2514(u8);
+static void sub_80F1DF0(void);
+static void sub_80F2218(struct Sprite *sprite);
+static bool8 sub_80F1E50(void);
+static bool8 sub_80F22F8(void);
+static void sub_80F2108(void);
+static bool8 sub_80F1E6C(void);
+static void sub_80F1E84(void);
+static void sub_80F2148(void);
+static void sub_80F2240(struct Sprite *sprite);
+static bool8 sub_80F1F10(void);
+static bool8 sub_80F2360(void);
+static void sub_80F2170(void);
+static bool8 sub_80F23C8(void);
+static void sub_80F21F8(void);
+static void sub_80F1FF0(void);
+static void sub_80F208C(void);
+static void sub_80F22B0(struct Sprite *sprite);
+static void sub_80F240C(struct Sprite *sprite);
+static void sub_80F2598(void);
+static void sub_80F2620(void);
+static bool8 sub_80F26BC(void);
+static void sub_80F2C58(struct Sprite *sprite);
+static void sub_80F2D04(u8);
+static void sub_80F2D6C(u8);
+static void sub_80F2DD8(void);
+static void sub_80F2DF4(void);
+static void sub_80F2FEC(struct Sprite *sprite);
+static void sub_80F2FB0(void);
+static void sub_80F3008(u8);
+static void sub_80F3130(void);
+static void sub_80F3264(void);
+static void sub_80F3294(u8);
+static void sub_80F35B4(void);
+static void sub_80F363C(struct Sprite *sprite);
+static void SetMonMarkings(u16, u16, u8);
+static void sub_80F36F0(void);
+static bool8 sub_80F3724(void);
+static void sub_80F379C(void);
+static bool8 sub_80F37D0(void);
+static void sub_80F38B8(void);
+static bool8 sub_80F38EC(void);
+static void sub_80F3970(void);
+static bool8 sub_80F39A4(void);
+static void sub_80F3B00(void);
+static bool8 sub_80F3B58(void);
+static void sub_80F3B94(void);
+static bool8 sub_80F3BD4(void);
+static void sub_80F3C2C(void);
+static void sub_80F3F20(u8, u8);
+static void sub_80F3FAC(void);
+static void sub_80F3FF0(void);
+static bool8 sub_80F4024(void);
+static void sub_80F42C4(u8*);
+static void sub_80F4394(void);
+u8 *sub_80F6514(u8*, u16, u8);
+static u8 *sub_80F443C(u8 *, u16);
+void sub_80F55AC(u8*, struct UnkPokenav11 *);
+static void sub_80F4CF0(void);
+static void sub_80F4D44(void);
+static bool8 sub_80F4D88(void);
+static void sub_80F53EC(struct UnkPokenav11*, struct UnkPokenav11*);
+static bool8 sub_80F5504(void);
+static bool8 sub_80F5264(void);
+static bool8 sub_80F52F8(void);
+static bool8 sub_80F5364(void);
-extern bool8 sub_80F0944(void);
-extern void sub_80F081C();
extern void sub_80F0900(void);
-extern void sub_80F443C(u8 *, u16);
-extern bool8 sub_80F162C(u8);
-extern void sub_80F01E0(u16);
extern void sub_80F01A4(void);
-extern void sub_80F1614(void);
extern void sub_80EFD3C(void);
extern void sub_8095C8C();
extern void sub_80EFDA0(void);
extern void sub_80EFD74(void);
-extern void sub_80F1A80(void);
extern bool8 sub_80EFC64(void);
extern void sub_80EFC3C(void);
extern void sub_80EF624(const u16 *, const u16 *, u8, u8, u16 *);
@@ -192,109 +371,50 @@ extern void sub_80EF7D4(void);
extern void sub_80EF54C(u8);
extern void sub_80EF58C(u8);
extern void sub_80F6FFC();
-extern void sub_80F3294();
-extern void sub_80F0B24();
-extern bool8 sub_80F0B44();
-extern void sub_80F0F64();
-extern bool8 sub_80F0FEC();
extern void sub_80F6FB8();
extern void sub_80F6DB8();
-extern void sub_80F0CD8();
extern bool8 sub_80F6E9C();
-extern bool8 sub_80F0D5C();
extern bool8 sub_80F6ED4();
-extern bool8 sub_80F0EF4();
-extern void sub_80F2FB0();
-extern void sub_80F0FA0();
-extern void sub_80F0C28();
-extern bool8 sub_80F0C48();
extern bool8 sub_80F70FC();
extern void sub_80F708C(u32);
-extern void sub_80F4394();
-extern void sub_80F0EC0();
-extern void sub_80F700C();
-extern void sub_80F42C4();
-extern void sub_80F0FFC();
extern void sub_80F6F10();
-extern void sub_80F3C2C();
-extern void sub_80F15A8();
+static extern void sub_80F15A8(void);
extern void sub_80F6A4C();
extern bool8 sub_80F6AF0();
-extern void sub_80F3B00();
-extern bool8 sub_80F3B58();
-extern void sub_80F1494();
extern u8 sub_80F68E8();
-extern void sub_80F3B94();
-extern bool8 sub_80F3BD4();
extern void sub_80F66E0();
-extern bool8 sub_80F1080();
-extern void sub_80F38B8();
-extern bool8 sub_80F38EC();
extern void sub_80F638C();
extern bool8 sub_80F63D0();
-extern void sub_80F4CF0();
extern void sub_80EFF34();
extern bool8 sub_80EFF68();
-extern void sub_80F35B4();
extern void sub_80F6134();
extern u8 sub_80F5DD4();
-extern void ShowMapNamePopUpWindow();
-extern bool8 sub_80F0718();
-extern bool8 sub_80F3264();
-extern void sub_80F4D44();
-extern bool8 sub_80F4D88();
extern void sub_80F0264(u8);
extern bool8 sub_80F02A0();
-extern void sub_80F3008();
-extern void sub_80F3130();
-extern void sub_80F2D6C(u32);
-extern bool8 sub_80F1E6C();
extern void sub_80EF9F8(void);
extern bool8 sub_80EFBDC(bool8);
extern void sub_80EFBB0(void);
-extern void sub_80F2DF4();
-extern void sub_80F1E84();
-extern bool8 sub_80F1F10();
extern void sub_80EEFBC(u8);
-extern void sub_80F2620();
extern void sub_80EF814(void);
extern void sub_80EF840(void);
extern bool8 sub_80EF874(void);
-extern void sub_80F2DD8();
extern bool8 sub_80F6250();
extern void sub_80F6208();
-extern void sub_80F208C();
extern void sub_80F6C20();
-extern void sub_80F3FF0();
-extern bool8 sub_80F4024();
-extern void sub_80F2598();
extern void sub_80EF248(u8);
extern bool8 sub_80EF284(u8);
-extern void sub_80F1B8C();
-extern bool8 sub_80F1BC8(u32 unk);
-extern void sub_80F1DF0();
-extern bool8 sub_80F1E50();
extern void sub_80EF428(u8, u8);
extern bool8 sub_80EEF78();
-extern void sub_80F1A90();
-extern void sub_80F2D04(u32);
-extern bool8 sub_80F1AC4();
-extern void sub_80F36F0();
-extern bool8 sub_80F3724();
extern void sub_80EBC10();
extern void sub_80EBDBC(void (*func)(void));
extern void sub_80EBBE8();
-extern bool8 sub_80F26BC(void);
extern void sub_80EBDD8();
extern void sub_80EBD90();
extern void sub_80EBD18();
-extern void sub_80F1A74();
-extern void sub_80F1FF0();
extern void sub_80FB260();
extern void sub_80EFE7C(void);
extern void sub_80F5BF0();
extern void sub_80F6F64();
-extern void sub_80F19FC();
extern u16 gKeyRepeatStartDelay;
@@ -1194,11 +1314,11 @@ void sub_80ECD80()
ewram0_10.var304++;
break;
case 9:
- sub_80F1B8C(0x2);
+ sub_80F1B8C(2);
ewram0_10.var304++;
// fall through
case 10:
- if (!sub_80F1BC8(0x2))
+ if (!sub_80F1BC8(2))
ewram0_10.var304++;
break;
case 11:
@@ -3131,7 +3251,7 @@ void sub_80EE658()
ewram0_10.var304++;
break;
case 6:
- sub_80F0CD8();
+ LoadTrainerEyesDescriptionLines();
ewram0_10.var304++;
case 7:
if (!sub_80F6E9C() && !sub_80F0D5C())
@@ -3662,7 +3782,7 @@ bool8 sub_80EEE54(void)
sub_80EF58C(2);
break;
case 4:
- gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0;
+ gUnknown_083DFEC4->unk030C = 0;
REG_BG1HOFS = 0;
REG_BG1VOFS = 0;
REG_BG1CNT = 0x1B0C;
@@ -3678,17 +3798,17 @@ bool8 sub_80EEF34(void)
{
bool8 retVal = TRUE;
- if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32)
+ if (gUnknown_083DFEC4->unk030C == 32)
return FALSE;
- gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2;
- if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31)
+ gUnknown_083DFEC4->unk030C += 2;
+ if (gUnknown_083DFEC4->unk030C > 31)
{
- gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32;
+ gUnknown_083DFEC4->unk030C = 32;
retVal = FALSE;
}
- REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0;
+ REG_BG1VOFS = gUnknown_083DFEC4->unk030C;
return retVal;
}
@@ -3696,17 +3816,17 @@ bool8 sub_80EEF78(void)
{
bool8 retVal = TRUE;
- if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0)
+ if (gUnknown_083DFEC4->unk030C == 0)
return FALSE;
- gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2;
- if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0)
+ gUnknown_083DFEC4->unk030C -= 2;
+ if (gUnknown_083DFEC4->unk030C <= 0)
{
- gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0;
+ gUnknown_083DFEC4->unk030C = 0;
retVal = FALSE;
}
- REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0;
+ REG_BG1VOFS = gUnknown_083DFEC4->unk030C;
return retVal;
}
@@ -4484,7 +4604,7 @@ bool8 sub_80EFF68(void)
{
case 0:
sub_80EEDE8();
- gUnknown_083DFEC4->unkD162[0] = 11;
+ gUnknown_083DFEC4->unkD162 = 11;
break;
case 1:
Text_LoadWindowTemplate(&gWindowTemplate_81E7080);
@@ -4529,7 +4649,7 @@ bool8 sub_80EFF68(void)
sub_80F01A4();
break;
case 12:
- sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9);
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
break;
case 13:
REG_BG3CNT = 0x1E03;
@@ -4563,7 +4683,7 @@ void sub_80F01A4(void)
REG_WINOUT = 0x001B;
}
-void sub_80F01E0(u16 a)
+static void sub_80F01E0(u16 a)
{
Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1);
@@ -4587,7 +4707,6 @@ void sub_80F0264(u8 a)
}
}
-#ifdef NONMATCHING // small nonmatching part is in the third else clause in case 7.
bool8 sub_80F02A0(void)
{
const u16 *pointer;
@@ -4598,7 +4717,7 @@ bool8 sub_80F02A0(void)
sub_80EEDE8();
gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1;
- gUnknown_083DFEC4->unkD162[0] = 11;
+ gUnknown_083DFEC4->unkD162 = 11;
break;
case 1:
Text_LoadWindowTemplate(&gWindowTemplate_81E70D4);
@@ -4647,8 +4766,7 @@ bool8 sub_80F02A0(void)
else
{
LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20);
- pointer = &gUnknown_08E9F9E8[5];
- gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5];
+ gPlttBufferUnfaded[0] = *(pointer = &gUnknown_08E9F9E8[5]);
LoadPalette(gUnknown_083E0314, 0x50, 0x20);
LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2);
LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2);
@@ -4690,7 +4808,7 @@ bool8 sub_80F02A0(void)
else
{
sub_80F081C(0);
- sub_80F0FFC(gUnknown_083DFEC4->unk876E);
+ sub_80F0FFC((u8)gUnknown_083DFEC4->unk876E);
}
break;
case 14:
@@ -4712,414 +4830,3910 @@ bool8 sub_80F02A0(void)
gUnknown_083DFEC4->unk306++;
return TRUE;
}
+
+void sub_80F063C(s16 arg0)
+{
+ s16 var0;
+ s16 var1;
+ s16 var2;
+
+ gUnknown_083DFEC4->unk877C = arg0 * 16;
+ gUnknown_083DFEC4->unk877A = (arg0 == 1 || arg0 == -1) ? 4 : 8;
+ if (arg0 < 0)
+ {
+ gUnknown_083DFEC4->unk877A *= -1;
+ var0 = arg0 * 2 + gUnknown_083DFEC4->unk8778;
+ var1 = arg0 + gUnknown_083DFEC4->unk8770;
+ if (var1 < 0)
+ var1 += gUnknown_083DFEC4->unk8774 + 1;
+
+ arg0 *= -1;
+ }
+ else
+ {
+ var0 = gUnknown_083DFEC4->unk8778 + 16;
+ var1 = gUnknown_083DFEC4->unk8772 + 1;
+ }
+
+ if (var1 > gUnknown_083DFEC4->unk8774)
+ var1 = 0;
+
+ var2 = var0 & 0x1F;
+ sub_80F0954(var1, var2, arg0);
+}
+
+static bool8 sub_80F0718(void)
+{
+ if (!sub_80F098C())
+ {
+ if (gUnknown_083DFEC4->unk877C == 0)
+ return FALSE;
+
+ gUnknown_083DFEC4->unk877C -= gUnknown_083DFEC4->unk877A;
+ gUnknown_083DFEC4->unk8776 += gUnknown_083DFEC4->unk877A;
+ gUnknown_083DFEC4->unk8776 &= 0xFF;
+ REG_BG3VOFS = gUnknown_083DFEC4->unk8776;
+ if (gUnknown_083DFEC4->unk877C == 0)
+ {
+ gUnknown_083DFEC4->unk8778 = ((8 + gUnknown_083DFEC4->unk8776) & 0xFF) / 8;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void ShowMapNamePopUpWindow(void)
+{
+ switch (gUnknown_083DFEC4->unk87CA)
+ {
+ case 0:
+ sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk876E].unk2);
+ break;
+ case 1:
+ sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1);
+ break;
+ default:
+ return;
+ }
+
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 6);
+}
+
+void sub_80F081C(u8 arg0)
+{
+ u32 numTrainerBattles;
+
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ MenuPrint_RightAligned(gOtherText_NumberRegistered, 10, 9);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 2:
+ ConvertIntToDecimalStringN(
+ gUnknown_083DFEC4->unk8788,
+ gUnknown_083DFEC4->unk8774 + 1,
+ STR_CONV_MODE_RIGHT_ALIGN,
+ 5);
+ MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 11);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 3:
+ MenuPrint_RightAligned(gOtherText_NumberBattles, 10, 13);
+ if (arg0 != 0)
+ break;
+ // fall through
+ case 4:
+ numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES);
+ if (numTrainerBattles > 99999)
+ numTrainerBattles = 99999;
+
+ ConvertIntToDecimalStringN(
+ gUnknown_083DFEC4->unk8788,
+ numTrainerBattles,
+ STR_CONV_MODE_RIGHT_ALIGN,
+ 5);
+ MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 15);
+ break;
+ }
+}
+
+static void sub_80F08E4(void)
+{
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ Menu_EraseWindowRect(0, 9, 11, 16);
+}
+
+void sub_80F0900(void)
+{
+ s16 var0 = (gUnknown_083DFEC4->unk8772 - gUnknown_083DFEC4->unk8770) + 1;
+ if (var0 < 8)
+ Menu_EraseWindowRect(12, 1, 31, 15);
+
+ sub_80F0954(gUnknown_083DFEC4->unk8770, 0, var0);
+}
+
+bool8 sub_80F0944(void)
+{
+ return sub_80F098C();
+}
+
+static void sub_80F0954(u16 arg0, u16 arg1, u16 arg2)
+{
+ gUnknown_083DFEC4->unk877E = arg0;
+ gUnknown_083DFEC4->unk8780 = arg1;
+ gUnknown_083DFEC4->unk8784 = arg2;
+ gUnknown_083DFEC4->unk8786 = 0;
+}
+
+#ifdef NONMATCHING
+static bool8 sub_80F098C(void)
+{
+ register u16 zero asm("r8");
+ if (!gUnknown_083DFEC4->unk8784)
+ {
+ DONE:
+ return FALSE;
+ }
+
+ zero = 0;
+ gUnknown_083E3270[gUnknown_083DFEC4->unk87CA](gUnknown_083DFEC4->unk877E, gUnknown_083DFEC4->unk8780);
+ if (!--gUnknown_083DFEC4->unk8784)
+ goto DONE;
+
+ if ((++gUnknown_083DFEC4->unk877E & 0xFFFF) > gUnknown_083DFEC4->unk8774)
+ gUnknown_083DFEC4->unk877E = zero;
+
+ gUnknown_083DFEC4->unk8780 += 2;
+ gUnknown_083DFEC4->unk8780 &= 0x1F;
+ return TRUE;
+}
#else
NAKED
-bool8 sub_80F02A0(void)
+static bool8 sub_80F098C(void)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- mov r6, r8\n\
- push {r6}\n\
- sub sp, 0x18\n\
- ldr r1, _080F02C4 @ =gUnknown_083DFEC4\n\
- ldr r0, [r1]\n\
- ldr r2, _080F02C8 @ =0x00000306\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- adds r2, r1, 0\n\
- cmp r0, 0xE\n\
- bls _080F02BA\n\
- b _080F05FA\n\
-_080F02BA:\n\
- lsls r0, 2\n\
- ldr r1, _080F02CC @ =_080F02D0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r0, _080F09A4 @ =gUnknown_083DFEC4\n\
+ ldr r6, [r0]\n\
+ ldr r0, _080F09A8 @ =0x00008784\n\
+ adds r7, r6, r0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, 0\n\
+ bne _080F09AC\n\
+_080F09A0:\n\
+ movs r0, 0\n\
+ b _080F0A02\n\
+ .align 2, 0\n\
+_080F09A4: .4byte gUnknown_083DFEC4\n\
+_080F09A8: .4byte 0x00008784\n\
+_080F09AC:\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+ ldr r1, _080F0A0C @ =gUnknown_083E3270\n\
+ ldr r2, _080F0A10 @ =0x000087ca\n\
+ adds r0, r6, r2\n\
+ ldrb r2, [r0]\n\
+ lsls r2, 2\n\
+ adds r2, r1\n\
+ ldr r0, _080F0A14 @ =0x0000877e\n\
+ adds r4, r6, r0\n\
+ ldrh r0, [r4]\n\
+ ldr r1, _080F0A18 @ =0x00008780\n\
+ adds r5, r6, r1\n\
+ ldrh r1, [r5]\n\
+ ldr r2, [r2]\n\
+ bl _call_via_r2\n\
+ ldrh r0, [r7]\n\
+ subs r0, 0x1\n\
+ strh r0, [r7]\n\
+ ldr r2, _080F0A1C @ =0x0000ffff\n\
+ adds r1, r2, 0\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080F09A0\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4]\n\
+ ands r0, r1\n\
+ ldr r2, _080F0A20 @ =0x00008774\n\
+ adds r1, r6, r2\n\
+ movs r2, 0\n\
+ ldrsh r1, [r1, r2]\n\
+ cmp r0, r1\n\
+ ble _080F09F6\n\
+ mov r0, r8\n\
+ strh r0, [r4]\n\
+_080F09F6:\n\
+ ldrh r0, [r5]\n\
+ adds r0, 0x2\n\
+ movs r1, 0x1F\n\
+ ands r0, r1\n\
+ strh r0, [r5]\n\
+ movs r0, 0x1\n\
+_080F0A02:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080F0A0C: .4byte gUnknown_083E3270\n\
+_080F0A10: .4byte 0x000087ca\n\
+_080F0A14: .4byte 0x0000877e\n\
+_080F0A18: .4byte 0x00008780\n\
+_080F0A1C: .4byte 0x0000ffff\n\
+_080F0A20: .4byte 0x00008774\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80F0A24(u16 arg0, u16 arg1)
+{
+ u8 var0 = gUnknown_083DFEC4->unk87C8 == 0 ? 2 : 1;
+ sub_80F4428(gUnknown_083DFEC4->unk8788, arg0, var0);
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_PrintText(gUnknown_083DFEC4->unk8788, 13, arg1);
+}
+
+static void sub_80F0A74(u16 arg0, u16 arg1)
+{
+ sub_80F700C(gUnknown_083DFEC4->unk8788, arg0);
+ arg1 &= 0x1F;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, arg1 * 8, 0);
+ if (arg0 < gUnknown_083DFEC4->unkD158 && gUnknown_083DFEC4->unkCEE8[arg0].unk5)
+ sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E039C, 0, 0, 1, 2, 1);
+ else
+ sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E03A0, 0, 0, 1, 2, 1);
+}
+
+static void sub_80F0B24(void)
+{
+ gUnknown_083DFEC4->unkD15C = 0;
+ gUnknown_083DFEC4->unk306 = 0;
+}
+
+static bool8 sub_80F0B44(void)
+{
+ int top;
+ if (gUnknown_083DFEC4->unkD15C > 8)
+ {
+ return FALSE;
+ }
+
+ if (++gUnknown_083DFEC4->unk306 > 1)
+ {
+ gUnknown_083DFEC4->unk306 = 0;
+ if (gUnknown_083DFEC4->unkD15C < 8)
+ {
+ top = (gUnknown_083DFEC4->unk8778 + (gUnknown_083DFEC4->unkD15C * 2)) & 0x1F;
+ if (gUnknown_083DFEC4->unkD15C != gUnknown_083DFEC4->unk876C)
+ {
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ }
+
+ if (!gUnknown_083DFEC4->unkD15C)
+ sub_80F08E4();
+
+ gUnknown_083DFEC4->unkD15C++;
+ return TRUE;
+ }
+ else
+ {
+ u16 i;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ top = (gUnknown_083DFEC4->unk8778 + 16) & 0x1F;
+ for (i = 0; i < 8; i++)
+ {
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ top = (top + 2) & 0x1F;
+ }
+
+ gUnknown_083DFEC4->unkD15C++;
+ return FALSE;
+ }
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static void sub_80F0C28(void)
+{
+ gUnknown_083DFEC4->unkD15C = 0;
+ gUnknown_083DFEC4->unk306 = 0;
+}
+
+static bool8 sub_80F0C48(void)
+{
+ if (gUnknown_083DFEC4->unkD15C > 7)
+ return FALSE;
+
+ if (++gUnknown_083DFEC4->unk306 > 1)
+ {
+ gUnknown_083DFEC4->unk306 = 0;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ sub_80F0A74(gUnknown_083DFEC4->unk8770 + gUnknown_083DFEC4->unkD15C,
+ gUnknown_083DFEC4->unk8778 + gUnknown_083DFEC4->unkD15C * 2);
+
+ if ((++gUnknown_083DFEC4->unkD15C) > 7)
+ {
+ sub_80F081C(0);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void LoadTrainerEyesDescriptionLines(void)
+{
+ u16 i;
+ int trainerEyesId;
+ const u8 *curChar;
+
+ gUnknown_083DFEC4->unk306 = 0;
+ gUnknown_083DFEC4->unkD15C = 0;
+ trainerEyesId = gUnknown_083DFEC4->unkCEE8[gUnknown_083DFEC4->unk876E].unk4;
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[0] = gTrainerEyeDescriptions[trainerEyesId];
+
+ // Find the start of the 3 other lines in the Trainer's Eyes description.
+ curChar = gUnknown_083DFEC4->trainerEyeDescriptionLines[0];
+ for (i = 0; i < 3; i++)
+ {
+ while (*curChar != EOS)
+ curChar++;
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[i + 1] = ++curChar;
+ }
+}
+
+#ifdef NONMATCHING
+// small register mismatch (r2/r3) on the line where var0 is set.
+bool8 sub_80F0D5C(void)
+{
+ int var0;
+ if (gUnknown_083DFEC4->unkD15C == 7)
+ return FALSE;
+
+ if (++gUnknown_083DFEC4->unk306 > 1)
+ {
+ gUnknown_083DFEC4->unk306 = 0;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ var0 = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F;
+ switch (gUnknown_083DFEC4->unkD15C)
+ {
+ case 0:
+ Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0);
+ break;
+ case 1:
+ AlignStringInMenuWindow(
+ gUnknown_083DFEC4->unk8788,
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[0],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0);
+ break;
+ case 2:
+ Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0);
+ break;
+ case 3:
+ AlignStringInMenuWindow(
+ gUnknown_083DFEC4->unk8788,
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[1],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0);
+ break;
+ case 4:
+ Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0);
+ break;
+ case 5:
+ AlignStringInMenuWindow(
+ gUnknown_083DFEC4->unk8788,
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[2],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0);
+ break;
+ case 6:
+ AlignStringInMenuWindow(
+ gUnknown_083DFEC4->unk8788,
+ gUnknown_083DFEC4->trainerEyeDescriptionLines[3],
+ 136,
+ 0);
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0);
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD15C++;
+ return TRUE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+#else
+NAKED
+bool8 sub_80F0D5C(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ ldr r0, _080F0D70 @ =gUnknown_083DFEC4\n\
+ ldr r4, [r0]\n\
+ ldr r0, _080F0D74 @ =0x0000d15c\n\
+ adds r5, r4, r0\n\
+ ldrh r0, [r5]\n\
+ cmp r0, 0x7\n\
+ bne _080F0D78\n\
+_080F0D6C:\n\
+ movs r0, 0\n\
+ b _080F0EB0\n\
+ .align 2, 0\n\
+_080F0D70: .4byte gUnknown_083DFEC4\n\
+_080F0D74: .4byte 0x0000d15c\n\
+_080F0D78:\n\
+ ldr r0, _080F0DB8 @ =0x00000306\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080F0D8C\n\
+ b _080F0EAE\n\
+_080F0D8C:\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\
+ bl BasicInitMenuWindow\n\
+ ldr r0, _080F0DC0 @ =0x00008778\n\
+ adds r1, r4, r0\n\
+ ldrh r3, [r5]\n\
+ lsls r0, r3, 1\n\
+ adds r0, 0x2\n\
+ ldrh r1, [r1]\n\
+ adds r5, r0, r1\n\
+ movs r0, 0x1F\n\
+ ands r5, r0\n\
+ cmp r3, 0x6\n\
+ bhi _080F0D6C\n\
+ lsls r0, r3, 2\n\
+ ldr r1, _080F0DC4 @ =_080F0DC8\n\
adds r0, r1\n\
ldr r0, [r0]\n\
mov pc, r0\n\
.align 2, 0\n\
-_080F02C4: .4byte gUnknown_083DFEC4\n\
-_080F02C8: .4byte 0x00000306\n\
-_080F02CC: .4byte _080F02D0\n\
+_080F0DB8: .4byte 0x00000306\n\
+_080F0DBC: .4byte gWindowTemplate_81E70D4\n\
+_080F0DC0: .4byte 0x00008778\n\
+_080F0DC4: .4byte _080F0DC8\n\
.align 2, 0\n\
-_080F02D0:\n\
- .4byte _080F030C\n\
- .4byte _080F0344\n\
- .4byte _080F0350\n\
- .4byte _080F035C\n\
- .4byte _080F0368\n\
- .4byte _080F036E\n\
- .4byte _080F0380\n\
- .4byte _080F0394\n\
- .4byte _080F04BC\n\
- .4byte _080F053C\n\
- .4byte _080F0550\n\
- .4byte _080F0574\n\
- .4byte _080F057A\n\
- .4byte _080F0586\n\
- .4byte _080F05BC\n\
-_080F030C:\n\
- bl sub_80EEDE8\n\
- ldr r0, _080F0334 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- movs r2, 0\n\
- ldr r3, _080F0338 @ =0x000087ca\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x1\n\
- bne _080F0322\n\
- movs r2, 0x1\n\
-_080F0322:\n\
- ldr r3, _080F033C @ =0x000087c8\n\
- adds r0, r1, r3\n\
- strb r2, [r0]\n\
- ldr r0, _080F0340 @ =0x0000d162\n\
- adds r1, r0\n\
- movs r0, 0xB\n\
- strb r0, [r1]\n\
- b _080F0618\n\
+_080F0DC8:\n\
+ .4byte _080F0DE4\n\
+ .4byte _080F0DF0\n\
+ .4byte _080F0E08\n\
+ .4byte _080F0E14\n\
+ .4byte _080F0E2C\n\
+ .4byte _080F0E38\n\
+ .4byte _080F0E6C\n\
+_080F0DE4:\n\
+ ldr r0, _080F0DEC @ =gOtherText_Strategy\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
.align 2, 0\n\
-_080F0334: .4byte gUnknown_083DFEC4\n\
-_080F0338: .4byte 0x000087ca\n\
-_080F033C: .4byte 0x000087c8\n\
-_080F0340: .4byte 0x0000d162\n\
-_080F0344:\n\
- ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\
- bl Text_LoadWindowTemplate\n\
- b _080F0618\n\
+_080F0DEC: .4byte gOtherText_Strategy\n\
+_080F0DF0:\n\
+ ldr r0, _080F0DFC @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E00 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E04 @ =0x0000d110\n\
+ b _080F0E42\n\
.align 2, 0\n\
-_080F034C: .4byte gWindowTemplate_81E70D4\n\
-_080F0350:\n\
- ldr r0, _080F0358 @ =gWindowTemplate_81E70D4\n\
- bl MultistepInitMenuWindowBegin\n\
- b _080F0618\n\
+_080F0DFC: .4byte gUnknown_083DFEC4\n\
+_080F0E00: .4byte 0x00008788\n\
+_080F0E04: .4byte 0x0000d110\n\
+_080F0E08:\n\
+ ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
.align 2, 0\n\
-_080F0358: .4byte gWindowTemplate_81E70D4\n\
-_080F035C:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, 0\n\
- beq _080F0366\n\
- b _080F0618\n\
-_080F0366:\n\
- b _080F0626\n\
-_080F0368:\n\
- bl Menu_EraseScreen\n\
- b _080F0618\n\
-_080F036E:\n\
- ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\
- ldr r1, _080F037C @ =0x0600e800\n\
- bl LZ77UnCompVram\n\
- b _080F0618\n\
+_080F0E10: .4byte gOtherText_TrainersPokemon\n\
+_080F0E14:\n\
+ ldr r0, _080F0E20 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E24 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E28 @ =0x0000d114\n\
+ b _080F0E42\n\
.align 2, 0\n\
-_080F0378: .4byte gUnknown_08E9FC64\n\
-_080F037C: .4byte 0x0600e800\n\
-_080F0380:\n\
- ldr r0, _080F038C @ =gPokenavConditionSearch2_Gfx\n\
- ldr r1, _080F0390 @ =0x06008000\n\
- bl LZ77UnCompVram\n\
- b _080F0618\n\
+_080F0E20: .4byte gUnknown_083DFEC4\n\
+_080F0E24: .4byte 0x00008788\n\
+_080F0E28: .4byte 0x0000d114\n\
+_080F0E2C:\n\
+ ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\
+ lsls r2, r5, 3\n\
+ b _080F0E54\n\
.align 2, 0\n\
-_080F038C: .4byte gPokenavConditionSearch2_Gfx\n\
-_080F0390: .4byte 0x06008000\n\
-_080F0394:\n\
- ldr r6, _080F03FC @ =gUnknown_083E02B4\n\
- adds r0, r6, 0\n\
- movs r1, 0xB0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- adds r0, r6, 0\n\
- movs r1, 0xF0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r0, _080F0400 @ =gUnknown_083E0334\n\
- movs r1, 0x40\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r0, _080F0404 @ =gUnknown_083DFEC4\n\
+_080F0E34: .4byte gOtherText_SelfIntroduction\n\
+_080F0E38:\n\
+ ldr r0, _080F0E60 @ =gUnknown_083DFEC4\n\
ldr r0, [r0]\n\
- ldr r1, _080F0408 @ =0x000087ca\n\
+ ldr r1, _080F0E64 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E68 @ =0x0000d118\n\
+_080F0E42:\n\
adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080F0418\n\
- ldr r4, _080F040C @ =gPokenavConditionSearch2_Pal\n\
+ ldr r1, [r0]\n\
adds r0, r4, 0\n\
- movs r1, 0x30\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r1, _080F0410 @ =gPlttBufferUnfaded\n\
- ldrh r0, [r4, 0xA]\n\
- strh r0, [r1]\n\
- ldr r0, _080F0414 @ =gUnknownPalette_81E6692\n\
- movs r1, 0xB0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- adds r0, r6, 0x2\n\
- movs r1, 0xB1\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r0, r6, 0\n\
- adds r0, 0x10\n\
- movs r1, 0xB5\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r4, 0xA\n\
+ movs r2, 0x88\n\
+ movs r3, 0\n\
+ bl AlignStringInMenuWindow\n\
+ lsls r2, r5, 3\n\
adds r0, r4, 0\n\
- movs r1, 0xBF\n\
- b _080F04A8\n\
+_080F0E54:\n\
+ movs r1, 0x61\n\
+ movs r3, 0\n\
+ bl Menu_PrintTextPixelCoords\n\
+ b _080F0EA0\n\
.align 2, 0\n\
-_080F03FC: .4byte gUnknown_083E02B4\n\
-_080F0400: .4byte gUnknown_083E0334\n\
-_080F0404: .4byte gUnknown_083DFEC4\n\
-_080F0408: .4byte 0x000087ca\n\
-_080F040C: .4byte gPokenavConditionSearch2_Pal\n\
-_080F0410: .4byte gPlttBufferUnfaded\n\
-_080F0414: .4byte gUnknownPalette_81E6692\n\
-_080F0418:\n\
- cmp r0, 0x1\n\
- bne _080F0464\n\
- ldr r4, _080F0458 @ =gUnknown_083E0274\n\
+_080F0E60: .4byte gUnknown_083DFEC4\n\
+_080F0E64: .4byte 0x00008788\n\
+_080F0E68: .4byte 0x0000d118\n\
+_080F0E6C:\n\
+ ldr r0, _080F0E94 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080F0E98 @ =0x00008788\n\
+ adds r4, r0, r1\n\
+ ldr r1, _080F0E9C @ =0x0000d11c\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
adds r0, r4, 0\n\
- movs r1, 0x30\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r1, _080F045C @ =gPlttBufferUnfaded\n\
- ldrh r0, [r4, 0xA]\n\
- strh r0, [r1]\n\
- ldr r0, _080F0460 @ =gUnknownPalette_81E6692\n\
- movs r1, 0xB0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- adds r0, r6, 0x2\n\
- movs r1, 0xB1\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r0, r6, 0\n\
- adds r0, 0x10\n\
- movs r1, 0xB5\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r4, 0xA\n\
+ movs r2, 0x88\n\
+ movs r3, 0\n\
+ bl AlignStringInMenuWindow\n\
+ lsls r2, r5, 3\n\
adds r0, r4, 0\n\
- movs r1, 0xBF\n\
- b _080F04A8\n\
+ movs r1, 0x61\n\
+ movs r3, 0\n\
+ bl Menu_PrintTextPixelCoords\n\
+ b _080F0D6C\n\
.align 2, 0\n\
-_080F0458: .4byte gUnknown_083E0274\n\
-_080F045C: .4byte gPlttBufferUnfaded\n\
-_080F0460: .4byte gUnknownPalette_81E6692\n\
-_080F0464:\n\
- ldr r4, _080F04B0 @ =gUnknown_08E9F9E8\n\
- adds r0, r4, 0\n\
- movs r1, 0x30\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r1, _080F04B4 @ =gPlttBufferUnfaded\n\
- adds r5, r4, 0\n\
- adds r5, 0xA\n\
- ldrh r0, [r4, 0xA]\n\
+_080F0E94: .4byte gUnknown_083DFEC4\n\
+_080F0E98: .4byte 0x00008788\n\
+_080F0E9C: .4byte 0x0000d11c\n\
+_080F0EA0:\n\
+ ldr r0, _080F0EB8 @ =gUnknown_083DFEC4\n\
+ ldr r1, [r0]\n\
+ ldr r0, _080F0EBC @ =0x0000d15c\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
strh r0, [r1]\n\
- ldr r0, _080F04B8 @ =gUnknown_083E0314\n\
- movs r1, 0x50\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- adds r0, r6, 0x2\n\
- movs r1, 0xB1\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r0, r6, 0\n\
- adds r0, 0x10\n\
- movs r1, 0xB5\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r0, r5, 0\n\
- movs r1, 0xBF\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- adds r0, r5, 0\n\
- movs r1, 0x5F\n\
-_080F04A8:\n\
- movs r2, 0x2\n\
- bl LoadPalette\n\
- b _080F0618\n\
- .align 2, 0\n\
-_080F04B0: .4byte gUnknown_08E9F9E8\n\
-_080F04B4: .4byte gPlttBufferUnfaded\n\
-_080F04B8: .4byte gUnknown_083E0314\n\
-_080F04BC:\n\
- ldr r0, _080F04E8 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080F04EC @ =0x000087ca\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x2\n\
- beq _080F04F8\n\
- ldr r0, _080F04F0 @ =0x0600e800\n\
- ldr r3, _080F04F4 @ =gUnknown_08E9FD1C\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- str r1, [sp, 0x4]\n\
- movs r2, 0x9\n\
- str r2, [sp, 0x8]\n\
- movs r1, 0x4\n\
- str r1, [sp, 0xC]\n\
- str r2, [sp, 0x10]\n\
- movs r1, 0\n\
- movs r2, 0x5\n\
- bl sub_8095C8C\n\
- b _080F0618\n\
+_080F0EAE:\n\
+ movs r0, 0x1\n\
+_080F0EB0:\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
.align 2, 0\n\
-_080F04E8: .4byte gUnknown_083DFEC4\n\
-_080F04EC: .4byte 0x000087ca\n\
-_080F04F0: .4byte 0x0600e800\n\
-_080F04F4: .4byte gUnknown_08E9FD1C\n\
-_080F04F8:\n\
- ldr r3, _080F0530 @ =0x0600e800\n\
- mov r8, r3\n\
- ldr r3, _080F0534 @ =gUnknown_08E9FE54\n\
- movs r4, 0\n\
- str r4, [sp]\n\
- str r4, [sp, 0x4]\n\
- movs r5, 0xC\n\
- str r5, [sp, 0x8]\n\
- movs r6, 0xA\n\
- str r6, [sp, 0xC]\n\
- str r5, [sp, 0x10]\n\
- mov r0, r8\n\
- movs r1, 0\n\
- movs r2, 0x4\n\
- bl sub_8095C8C\n\
- ldr r3, _080F0538 @ =gUnknown_08E9FD64\n\
- str r4, [sp]\n\
- str r4, [sp, 0x4]\n\
- str r5, [sp, 0x8]\n\
- str r6, [sp, 0xC]\n\
- str r5, [sp, 0x10]\n\
- mov r0, r8\n\
- movs r1, 0\n\
- movs r2, 0x8\n\
- bl sub_8095C8C\n\
- b _080F0618\n\
+_080F0EB8: .4byte gUnknown_083DFEC4\n\
+_080F0EBC: .4byte 0x0000d15c\n\
+ .syntax divided\n");
+}
+#endif
+
+static void sub_80F0EC0(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ gUnknown_083DFEC4->unkD15C = 0;
+ StringFill(gUnknown_083DFEC4->unk8788, CHAR_SPACE, 16);
+}
+
+static bool8 sub_80F0EF4(void)
+{
+ int top;
+ if (gUnknown_083DFEC4->unkD15C > 6)
+ return FALSE;
+
+ if (++gUnknown_083DFEC4->unk306 > 1)
+ {
+ gUnknown_083DFEC4->unk306 = 0;
+ top = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F;
+ BasicInitMenuWindow(&gWindowTemplate_81E70D4);
+ Menu_EraseWindowRect(12, top, 31, top + 1);
+ gUnknown_083DFEC4->unkD15C++;
+ }
+
+ return TRUE;
+}
+
+static void sub_80F0F64(void)
+{
+ s16 var0 = gUnknown_083DFEC4->unk876C;
+ gUnknown_083DFEC4->unk877C = var0 * 16;
+ gUnknown_083DFEC4->unk877A = var0 == 1 ? 4 : 8;
+}
+
+static void sub_80F0FA0(void)
+{
+ s16 var0 = gUnknown_083DFEC4->unk876C * -1;
+ gUnknown_083DFEC4->unk877C = var0 * 16;
+ gUnknown_083DFEC4->unk877A = var0 == -1 ? -4 : -8;
+}
+
+static bool8 sub_80F0FEC(void)
+{
+ return sub_80F0718();
+}
+
+void sub_80F0FFC(u8 arg0)
+{
+ GetMapSectionName(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unkCEE8[arg0].unk2, 0);
+ BasicInitMenuWindow(&gWindowTemplate_81E710C);
+ sub_80F19DC(gUnknown_083DFEC4->unk8788);
+ AlignStringInMenuWindow(gUnknown_083DFEC4->unkD138, gUnknown_083DFEC4->unk8788, 88, 2);
+ Menu_PrintText(gUnknown_083DFEC4->unkD138, 0, 5);
+}
+
+void sub_80F105C(void)
+{
+ sub_80F0A74(gUnknown_083DFEC4->unk876E, gUnknown_083DFEC4->unk8778);
+}
+
+static bool8 sub_80F1080(void)
+{
+ switch (gUnknown_083DFEC4->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gUnknown_083DFEC4->unkD162 = 11;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E70B8);
+ break;
+ case 2:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E70B8);
+ break;
+ case 3:
+ if (!MultistepInitMenuWindowContinue())
+ return TRUE;
+ break;
+ case 4:
+ Menu_EraseScreen();
+ break;
+ case 5:
+ sub_80F1614();
+ break;
+ case 6:
+ if (sub_80F162C(1))
+ return TRUE;
+ break;
+ case 7:
+ LZ77UnCompWram(gUnknown_08E9FBA0, gUnknown_083DFEC4->unk934C);
+ break;
+ case 8:
+ DrawMonRibbonIcons();
+ break;
+ case 9:
+ sub_80F13FC();
+ break;
+ case 10:
+ LZ77UnCompVram(gPokenavRibbonView_Gfx, (void *)(VRAM + 0x8000));
+ break;
+ case 11:
+ LZ77UnCompVram(gUnknown_083E040C, (void *)(VRAM + 0x8200));
+ break;
+ case 12:
+ LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20);
+ LoadPalette(gUnknown_083E03A8, 0xF0, 0x20);
+ LoadPalette(gUnknown_083E3C60[0], 0x30, 0xA0);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2);
+ break;
+ case 13:
+ sub_80F1438();
+ break;
+ case 14:
+ REG_BG2CNT = 0x1E02;
+ REG_BG3CNT = 0x170B;
+ REG_BLDCNT = 0;
+ gUnknown_083DFEC4->unkD160++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD160++;
+ return TRUE;
+}
+
+void DrawMonRibbonIcons(void)
+{
+ u16 i;
+ u16 offset;
+ u8 index, palette, tile;
+ u8 var0;
+
+ offset = 0x8B;
+ var0 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F;
+
+ for (i = 0; i < 8; i++)
+ CpuFill16(0x2000, &gUnknown_083DFEC4->unk934C[offset + i * 32], 0x24);
+
+ for (i = 0; i < var0; i++)
+ {
+ index = gUnknown_083DFEC4->unkBC4C[i];
+ palette = gPokenavRibbonsIconGfx[index][1] + 3;
+ tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
+ gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile;
+ gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
+ gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
+ gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
+
+ if ((i + 1) % 9 == 0)
+ offset += 0x30;
+ else
+ offset += 2;
+ }
+
+ offset = 0x14B;
+ for (i = 0; i < gUnknown_083DFEC4->unkBC8F; i++)
+ {
+ index = gUnknown_083DFEC4->unkBC4C[var0 + i];
+ palette = gPokenavRibbonsIconGfx[index][1] + 3;
+ tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10;
+ gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile;
+ gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile;
+ gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1);
+ gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1);
+
+ offset += 2;
+ }
+}
+
+void sub_80F13FC(void)
+{
+ u16 *src = gUnknown_083DFEC4->unk934C;
+ u16 *dest = (u16 *)(VRAM + 0xB800);
+ DmaCopy32(3, src, dest, 0x500);
+ gPlttBufferUnfaded[0] = *(gPokenavRibbonView_Pal + 14);
+}
+
+void sub_80F1438(void)
+{
+ Menu_PrintText(gUnknown_083DFEC4->unk8829[0], 13, 1);
+ sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1);
+ Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 5);
+}
+
+void sub_80F1480(void)
+{
+ Menu_EraseWindowRect(12, 13, 27, 16);
+}
+
+// This is a fakematching function, due to a hardcoded access of gSaveBlock1.
+// Due to this hardcoded address access, gift ribbons do not properly display
+// their descriptions, since the hardcoded access is inside of the LinkBattleRecords
+// save data, rather than the giftRibbons array, which is almost certainly what the
+// intended access is.
+static void sub_80F1494(void)
+{
+ u8 *arr;
+ u8 *tileBuffer1 = &gUnknown_083DFEC8[0x800];
+ u8 *tileBuffer2 = &gUnknown_083DFEC8[0xA98];
+
+ if (gUnknown_083DFEC4->unkBC91 < 3)
+ {
+ gUnknown_020388B4 = gUnknown_083DFEC4->unkBC91 * 9 + gUnknown_083DFEC4->unkBC90;
+ gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4];
+ AlignStringInMenuWindow(tileBuffer1, gRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
+ }
+ else
+ {
+ gUnknown_020388B4 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F;
+ gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4 + gUnknown_083DFEC4->unkBC90];
+
+ // FIXME!
+ arr = ((u8*)&gSaveBlock1);
+ asm("ldrh r1, [r5]\n\
+ add r0, r0, r1");
+ gUnknown_020388B4 = arr[0x30F7];
+ // The bug fix for this code is the following:
+ // gUnknown_020388B4 = gSaveBlock1.externalReservedData.giftRibbons[gUnknown_020388B4];
+ if (gUnknown_020388B4)
+ {
+ gUnknown_020388B4--;
+ AlignStringInMenuWindow(tileBuffer1, gGiftRibbonDescriptions[gUnknown_020388B4][0], 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gGiftRibbonDescriptions[gUnknown_020388B4][1], 128, 0);
+ }
+ else
+ {
+ AlignStringInMenuWindow(tileBuffer1, gEmptyString_81E72B0, 128, 0);
+ AlignStringInMenuWindow(tileBuffer2, gEmptyString_81E72B0, 128, 0);
+ }
+ }
+
+ Menu_PrintText(tileBuffer1, 12, 13);
+ Menu_PrintText(tileBuffer2, 12, 15);
+}
+
+static void sub_80F15A8(void)
+{
+ u8 *buffer;
+ Menu_EraseWindowRect(12, 13, 27, 16);
+ buffer = StringCopy(gUnknown_083DFEC4->unk8788, gOtherText_Ribbons);
+ buffer[0] = CHAR_SPACE;
+ buffer++;
+ buffer = ConvertIntToDecimalStringN(
+ buffer,
+ gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk0,
+ STR_CONV_MODE_LEFT_ALIGN,
+ 2);
+ buffer[0] = EOS;
+ Menu_PrintText(gUnknown_083DFEC4->unk8788, 12, 13);
+}
+
+void sub_80F1614(void)
+{
+ gUnknown_083DFEC4->unk8764 = 0;
+}
+
+bool8 sub_80F162C(u8 arg0)
+{
+ switch (gUnknown_083DFEC4->unk8764)
+ {
+ case 0:
+ break;
+ case 1:
+ LZ77UnCompVram(gUnknown_08E9FF58, (void *)(VRAM + 0xE800));
+ break;
+ case 2:
+ DmaCopy16Defvars(3, gPokenavRibbonPokeView_Gfx, (void *)(VRAM + 0xE000), 0xE0);
+ break;
+ case 3:
+ if (!arg0)
+ LoadPalette(gUnknown_083E0124, 0xD0, 0x20);
+ else
+ LoadPalette(gUnknown_083E0144, 0xD0, 0x20);
+
+ gUnknown_083DFEC4->unk8766 = -80;
+ REG_BG0CNT = 0x1D0D;
+ gUnknown_083DFEC4->unk8764++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk8764++;
+ return TRUE;
+}
+
+bool8 sub_80F170C(void)
+{
+ gUnknown_083DFEC4->unk8766 += 0x10;
+ if (gUnknown_083DFEC4->unk8766 > 0)
+ gUnknown_083DFEC4->unk8766 = 0;
+
+ return gUnknown_083DFEC4->unk8766 != 0;
+}
+
+bool8 sub_80F173C(void)
+{
+ gUnknown_083DFEC4->unk8766 -= 0x10;
+ if (gUnknown_083DFEC4->unk8766 < -0x50)
+ gUnknown_083DFEC4->unk8766 = -0x50;
+
+ return gUnknown_083DFEC4->unk8766 != -0x50;
+}
+
+bool8 sub_80F1778(void)
+{
+ switch (gUnknown_083DFEC4->unkD160)
+ {
+ case 0:
+ sub_80EEDE8();
+ gUnknown_083DFEC4->unkD162 = 2;
+ break;
+ case 1:
+ sub_80F1614();
+ break;
+ case 2:
+ if (sub_80F162C(0))
+ return TRUE;
+ break;
+ case 3:
+ LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)(VRAM + 0x5000));
+ break;
+ case 4:
+ LZ77UnCompVram(gUnknown_08E9AC4C, (void *)(VRAM + 0xF000));
+ LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20);
+ break;
+ case 5:
+ sub_8095C8C((void *)VRAM + 0xF000, 0, 13, gUnknown_083E01F4, 0, 0, 12, 4, 12);
+ break;
+ case 6:
+ LZ77UnCompVram(gUnknown_08E9FEB4, (void *)(VRAM + 0xB800));
+ break;
+ case 7:
+ LoadPalette(gUnknown_083E0254, 0x30, 0x20);
+ LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20);
+ LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2);
+ LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2);
+ sub_80F01A4();
+ break;
+ case 8:
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ break;
+ case 9:
+ REG_BG3CNT = 0x1E03;
+ REG_BG2CNT = 0x1702;
+ REG_BLDCNT = 0x844;
+ REG_BLDALPHA = 0x40B;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unkD160++;
+ return TRUE;
+}
+
+void sub_80F1934(void)
+{
+ u8 *buffer = gUnknown_083DFEC4->unk8788;
+ if (gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4)
+ {
+ u8 nature = GetNature(&gPlayerParty[sub_8137124(gUnknown_083DFEC4->unk87DC)]);
+ buffer = StringCopy(buffer, gOtherText_Nature2);
+ AlignStringInMenuWindow(buffer, gNatureNames[nature], 87, 0);
+ }
+ else
+ {
+ AlignStringInMenuWindow(buffer, gEmptyString_81E72B0, 87, 0);
+ }
+
+ Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 1, 112, 1);
+}
+
+static void sub_80F19DC(u8 *text)
+{
+ while (text[0] != EOS)
+ {
+ if (text[0] == EXT_CTRL_CODE_BEGIN && text[1] == CHAR_SPACE)
+ {
+ text[0] = EOS;
+ break;
+ }
+
+ text++;
+ }
+}
+
+static void sub_80F19FC(void)
+{
+ // FIXME r4/r5 swapped
+ register u8 *ptr asm("r5") = gUnknown_020388B0;
+ if (ptr[0] == 1)
+ {
+ const u8 *landmarkName = GetLandmarkName(
+ gUnknown_083DFEC4->regionMap.mapSectionId,
+ gUnknown_083DFEC4->regionMap.everGrandeCityArea,
+ ptr[1]);
+
+ if (landmarkName)
+ {
+ sub_8072A18(landmarkName, 0x70, 4 * (ptr[1] * 4 + 12), 0x78, 1);
+ if (++ptr[1] != 4)
+ return;
+ }
+
+ Menu_BlankWindowRect(14, ptr[1] * 2 + 6, 28, 15);
+ ptr[0] = 0;
+ }
+}
+
+static void sub_80F1A74(void)
+{
+ gUnknown_020388B0[0] = 0;
+}
+
+static void sub_80F1A80(void)
+{
+ gUnknown_020388B0[0] = 1;
+ gUnknown_020388B0[1] = 0;
+}
+
+static void sub_80F1A90(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (gUnknown_083DFEC4->unk6DAC == 0)
+ while (sub_80F1AC4());
+}
+
+static bool8 sub_80F1AC4(void)
+{
+ u16 i, j;
+
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 4; j++)
+ gUnknown_083DFEC4->unk320[i][j] = NULL;
+ }
+
+ gUnknown_083DFEC4->unk311 = 0;
+ break;
+ case 1:
+ LZ77UnCompWram(gPokenavMenuOptions_Gfx, gUnknown_083DFEC4->unk388);
+ break;
+ case 2:
+ LZ77UnCompWram(gPokenavConditionMenu_Gfx, gUnknown_083DFEC4->unk1788);
+ break;
+ case 3:
+ LZ77UnCompWram(gPokenavConditionSearch_Gfx, gUnknown_083DFEC4->unk2388);
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+
+static void sub_80F1B8C(u8 arg0)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (gUnknown_083DFEC4->unk6DAC == 0)
+ while (sub_80F1BC8(arg0));
+}
+
+#ifdef NONMATCHING
+// very close, but for some reason, (i + 1) is being stored in sp[0x10]
+static bool8 sub_80F1BC8(u8 arg0)
+{
+ u16 i, j;
+ u16 animNum;
+ u16 topOffset;
+ u16 height;
+ u16 middle;
+ u8 spriteId;
+
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ sub_80F2458(arg0);
+ break;
+ case 1:
+ sub_80F2514(arg0);
+ break;
+ case 2:
+ switch (arg0)
+ {
+ case 0:
+ topOffset = 42;
+ height = 20;
+ gUnknown_083DFEC4->unk30E = 5;
+ break;
+ case 1:
+ topOffset = 56;
+ height = 20;
+ gUnknown_083DFEC4->unk30E = 3;
+ break;
+ case 2:
+ topOffset = 40;
+ height = 16;
+ gUnknown_083DFEC4->unk30E = 6;
+ break;
+ default:
+ return FALSE;
+ }
+
+ animNum = 0;
+ for (i = 0; i < gUnknown_083DFEC4->unk30E; i++)
+ {
+ middle = (height * i) + topOffset - 8;
+ gUnknown_083DFEC4->unk314[i] = (middle << 8) | (middle + 0x11);
+ if (!arg0)
+ {
+ if (gUnknown_083DFEC4->unk6DB2[i] == 0)
+ {
+ for (j = 0; j < 4; j++)
+ gUnknown_083DFEC4->unk320[i][j] = NULL;
+ continue;
+ }
+ else
+ {
+ animNum = (gUnknown_083DFEC4->unk6DB2[i] - 1) * 4;
+ }
+ }
+
+ for (j = 0; j < 4; j++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk320[i][j] = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk320[i][j]->data[0] = i;
+ gUnknown_083DFEC4->unk320[i][j]->data[1] = j;
+ gUnknown_083DFEC4->unk320[i][j]->data[2] = j * 32 + 152;
+ gUnknown_083DFEC4->unk320[i][j]->data[3] = j * 32 + 256;
+ StartSpriteAnim(gUnknown_083DFEC4->unk320[i][j], animNum++);
+
+ if ((arg0 == 2 || arg0 == 0) && i > 2)
+ gUnknown_083DFEC4->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1);
+ }
+ }
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+#else
+NAKED
+static bool8 sub_80F1BC8(u8 arg0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ ldr r1, _080F1BF4 @ =gUnknown_083DFEC4\n\
+ ldr r2, [r1]\n\
+ ldr r3, _080F1BF8 @ =0x00000306\n\
+ adds r0, r2, r3\n\
+ ldrh r0, [r0]\n\
+ adds r3, r1, 0\n\
+ cmp r0, 0x1\n\
+ beq _080F1C0A\n\
+ cmp r0, 0x1\n\
+ bgt _080F1BFC\n\
+ cmp r0, 0\n\
+ beq _080F1C02\n\
+ b _080F1DC4\n\
.align 2, 0\n\
-_080F0530: .4byte 0x0600e800\n\
-_080F0534: .4byte gUnknown_08E9FE54\n\
-_080F0538: .4byte gUnknown_08E9FD64\n\
-_080F053C:\n\
- ldr r0, _080F0548 @ =gUnknown_083E0354\n\
- ldr r1, _080F054C @ =0x06005000\n\
- bl LZ77UnCompVram\n\
- b _080F0618\n\
+_080F1BF4: .4byte gUnknown_083DFEC4\n\
+_080F1BF8: .4byte 0x00000306\n\
+_080F1BFC:\n\
+ cmp r0, 0x2\n\
+ beq _080F1C12\n\
+ b _080F1DC4\n\
+_080F1C02:\n\
+ mov r0, r9\n\
+ bl sub_80F2458\n\
+ b _080F1DC8\n\
+_080F1C0A:\n\
+ mov r0, r9\n\
+ bl sub_80F2514\n\
+ b _080F1DC8\n\
+_080F1C12:\n\
+ mov r4, r9\n\
+ cmp r4, 0x1\n\
+ beq _080F1C40\n\
+ cmp r4, 0x1\n\
+ bgt _080F1C22\n\
+ cmp r4, 0\n\
+ beq _080F1C2A\n\
+ b _080F1DC4\n\
+_080F1C22:\n\
+ mov r5, r9\n\
+ cmp r5, 0x2\n\
+ beq _080F1C54\n\
+ b _080F1DC4\n\
+_080F1C2A:\n\
+ movs r0, 0x2A\n\
+ str r0, [sp, 0x4]\n\
+ movs r1, 0x14\n\
+ str r1, [sp, 0x8]\n\
+ ldr r4, _080F1C3C @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x5\n\
+ b _080F1C62\n\
.align 2, 0\n\
-_080F0548: .4byte gUnknown_083E0354\n\
-_080F054C: .4byte 0x06005000\n\
-_080F0550:\n\
- ldr r2, _080F0568 @ =0x0600f800\n\
- add r1, sp, 0x14\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _080F056C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _080F0570 @ =0x81000400\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- b _080F0618\n\
+_080F1C3C: .4byte 0x0000030e\n\
+_080F1C40:\n\
+ movs r5, 0x38\n\
+ str r5, [sp, 0x4]\n\
+ movs r0, 0x14\n\
+ str r0, [sp, 0x8]\n\
+ ldr r4, _080F1C50 @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x3\n\
+ b _080F1C62\n\
.align 2, 0\n\
-_080F0568: .4byte 0x0600f800\n\
-_080F056C: .4byte 0x040000d4\n\
-_080F0570: .4byte 0x81000400\n\
-_080F0574:\n\
- bl sub_80F0900\n\
- b _080F0618\n\
-_080F057A:\n\
- bl sub_80F0944\n\
+_080F1C50: .4byte 0x0000030e\n\
+_080F1C54:\n\
+ movs r5, 0x28\n\
+ str r5, [sp, 0x4]\n\
+ movs r0, 0x10\n\
+ str r0, [sp, 0x8]\n\
+ ldr r4, _080F1CDC @ =0x0000030e\n\
+ adds r1, r2, r4\n\
+ movs r0, 0x6\n\
+_080F1C62:\n\
+ strb r0, [r1]\n\
+ movs r5, 0\n\
+ str r5, [sp]\n\
+ mov r8, r5\n\
+ adds r1, r3, 0\n\
+ ldr r0, [r1]\n\
+ ldr r2, _080F1CDC @ =0x0000030e\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ blt _080F1C7E\n\
+ b _080F1DC8\n\
+_080F1C7E:\n\
+ ldr r4, [sp, 0x8]\n\
+ mov r3, r8\n\
+ muls r3, r4\n\
+ ldr r5, [sp, 0x4]\n\
+ adds r0, r5, r3\n\
+ subs r0, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldr r4, [r1]\n\
+ mov r2, r8\n\
+ lsls r1, r2, 1\n\
+ movs r5, 0xC5\n\
+ lsls r5, 2\n\
+ adds r2, r4, r5\n\
+ adds r2, r1\n\
+ lsls r1, r0, 8\n\
+ adds r0, 0x11\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+ mov r0, r9\n\
cmp r0, 0\n\
- beq _080F0618\n\
- b _080F0626\n\
-_080F0586:\n\
- ldr r0, _080F059C @ =gUnknown_083DFEC4\n\
- ldr r4, [r0]\n\
- ldr r1, _080F05A0 @ =0x000087ca\n\
+ bne _080F1CF2\n\
+ ldr r1, _080F1CE0 @ =0x00006db2\n\
adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x2\n\
- beq _080F05A4\n\
- bl ShowMapNamePopUpWindow\n\
- b _080F0618\n\
- .align 2, 0\n\
-_080F059C: .4byte gUnknown_083DFEC4\n\
-_080F05A0: .4byte 0x000087ca\n\
-_080F05A4:\n\
- movs r0, 0\n\
- bl sub_80F081C\n\
- ldr r2, _080F05B8 @ =0x0000876e\n\
- adds r0, r4, r2\n\
- ldrb r0, [r0]\n\
- bl sub_80F0FFC\n\
- b _080F0618\n\
+ mov r2, r8\n\
+ adds r1, r0, r2\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _080F1CE8\n\
+ movs r5, 0\n\
+ ldr r0, _080F1CE4 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r0]\n\
+ lsls r2, 4\n\
+ movs r3, 0xC8\n\
+ lsls r3, 2\n\
+ adds r1, r0, r3\n\
+ movs r3, 0\n\
+_080F1CC8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r2\n\
+ adds r0, r1, r0\n\
+ str r3, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x3\n\
+ bls _080F1CC8\n\
+ b _080F1D92\n\
.align 2, 0\n\
-_080F05B8: .4byte 0x0000876e\n\
-_080F05BC:\n\
- ldr r1, _080F0600 @ =REG_BG2CNT\n\
- ldr r3, _080F0604 @ =0x00001d0a\n\
- adds r0, r3, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- adds r3, 0xF9\n\
- adds r0, r3, 0\n\
- strh r0, [r1]\n\
- subs r1, 0x6\n\
- adds r3, 0xFE\n\
- adds r0, r3, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x16\n\
- movs r0, 0xF8\n\
- strh r0, [r1]\n\
- ldr r1, [r2]\n\
- ldr r0, _080F0608 @ =0x00008776\n\
- adds r2, r1, r0\n\
+_080F1CDC: .4byte 0x0000030e\n\
+_080F1CE0: .4byte 0x00006db2\n\
+_080F1CE4: .4byte gUnknown_083DFEC4\n\
+_080F1CE8:\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0x1\n\
+ lsls r0, 18\n\
+ lsrs r0, 16\n\
+ str r0, [sp]\n\
+_080F1CF2:\n\
+ movs r5, 0\n\
+ ldr r4, [sp, 0x4]\n\
+ adds r0, r4, r3\n\
+ lsls r0, 16\n\
+ mov r10, r0\n\
+_080F1CFC:\n\
+ lsls r6, r5, 5\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ adds r7, r6, r0\n\
+ lsls r1, r7, 16\n\
+ asrs r1, 16\n\
+ ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\
+ mov r3, r10\n\
+ asrs r2, r3, 16\n\
movs r3, 0\n\
- movs r0, 0xF8\n\
- strh r0, [r2]\n\
- ldr r2, _080F060C @ =0x00008778\n\
- adds r0, r1, r2\n\
- strh r3, [r0]\n\
- ldr r0, _080F0610 @ =REG_BLDCNT\n\
- strh r3, [r0]\n\
- ldr r3, _080F0614 @ =0x0000d160\n\
- adds r1, r3\n\
- ldrh r0, [r1]\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x40\n\
+ beq _080F1DC4\n\
+ ldr r0, _080F1DB8 @ =gUnknown_083DFEC4\n\
+ ldr r2, [r0]\n\
+ lsls r1, r5, 2\n\
+ mov r4, r8\n\
+ lsls r0, r4, 4\n\
+ adds r1, r0\n\
+ movs r0, 0xC8\n\
+ lsls r0, 2\n\
+ adds r2, r0\n\
+ adds r4, r2, r1\n\
+ lsls r0, r3, 4\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ ldr r1, _080F1DBC @ =gSprites\n\
+ adds r0, r1\n\
+ str r0, [r4]\n\
+ mov r1, r8\n\
+ strh r1, [r0, 0x2E]\n\
+ ldr r0, [r4]\n\
+ strh r5, [r0, 0x30]\n\
+ ldr r1, [r4]\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x98\n\
+ strh r0, [r1, 0x32]\n\
+ ldr r0, [r4]\n\
+ strh r7, [r0, 0x34]\n\
+ ldr r0, [r4]\n\
+ ldr r1, [sp]\n\
+ adds r2, r1, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ bl StartSpriteAnim\n\
+ mov r2, r9\n\
+ cmp r2, 0x2\n\
+ beq _080F1D6E\n\
+ cmp r2, 0\n\
+ bne _080F1D88\n\
+_080F1D6E:\n\
+ mov r3, r8\n\
+ cmp r3, 0x2\n\
+ bls _080F1D88\n\
+ movs r0, 0x1\n\
+ bl IndexOfSpritePaletteTag\n\
+ ldr r3, [r4]\n\
+ lsls r0, 4\n\
+ ldrb r2, [r3, 0x5]\n\
+ movs r1, 0xF\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r3, 0x5]\n\
+_080F1D88:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x3\n\
+ bls _080F1CFC\n\
+_080F1D92:\n\
+ mov r0, r8\n\
adds r0, 0x1\n\
- strh r0, [r1]\n\
-_080F05FA:\n\
- movs r0, 0\n\
- b _080F0628\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r1, _080F1DB8 @ =gUnknown_083DFEC4\n\
+ ldr r0, [r1]\n\
+ ldr r4, _080F1DC0 @ =0x0000030e\n\
+ adds r0, r4\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ bge _080F1DB0\n\
+ b _080F1C7E\n\
+_080F1DB0:\n\
+ b _080F1DC8\n\
.align 2, 0\n\
-_080F0600: .4byte REG_BG2CNT\n\
-_080F0604: .4byte 0x00001d0a\n\
-_080F0608: .4byte 0x00008776\n\
-_080F060C: .4byte 0x00008778\n\
-_080F0610: .4byte REG_BLDCNT\n\
-_080F0614: .4byte 0x0000d160\n\
-_080F0618:\n\
- ldr r0, _080F0634 @ =gUnknown_083DFEC4\n\
+_080F1DB4: .4byte gSpriteTemplate_83E4454\n\
+_080F1DB8: .4byte gUnknown_083DFEC4\n\
+_080F1DBC: .4byte gSprites\n\
+_080F1DC0: .4byte 0x0000030e\n\
+_080F1DC4:\n\
+ movs r0, 0\n\
+ b _080F1DD8\n\
+_080F1DC8:\n\
+ ldr r0, _080F1DE8 @ =gUnknown_083DFEC4\n\
ldr r1, [r0]\n\
- ldr r0, _080F0638 @ =0x00000306\n\
- adds r1, r0\n\
+ ldr r5, _080F1DEC @ =0x00000306\n\
+ adds r1, r5\n\
ldrh r0, [r1]\n\
adds r0, 0x1\n\
strh r0, [r1]\n\
-_080F0626:\n\
movs r0, 0x1\n\
-_080F0628:\n\
- add sp, 0x18\n\
- pop {r3}\n\
+_080F1DD8:\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
mov r8, r3\n\
- pop {r4-r6}\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
pop {r1}\n\
bx r1\n\
.align 2, 0\n\
-_080F0634: .4byte gUnknown_083DFEC4\n\
-_080F0638: .4byte 0x00000306\n\
+_080F1DE8: .4byte gUnknown_083DFEC4\n\
+_080F1DEC: .4byte 0x00000306\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static void sub_80F1DF0(void)
+{
+ u16 i, j;
+ for (i = 0; i < gUnknown_083DFEC4->unk30E; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gUnknown_083DFEC4->unk320[i][j])
+ gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2218;
+ }
+ }
+
+ PlaySE(SE_WIN_OPEN);
+}
+
+static bool8 sub_80F1E50(void)
+{
+ if (sub_80F22F8())
+ {
+ sub_80F2108();
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static bool8 sub_80F1E6C(void)
+{
+ return !sub_80F22F8();
+}
+
+static void sub_80F1E84(void)
+{
+ u16 i, j;
+
+ gUnknown_083DFEC4->unk30F = 0;
+ sub_80F2148();
+ for (i = 0; i < gUnknown_083DFEC4->unk30E; i++)
+ {
+ if (i != gUnknown_083DFEC4->unk6DAD)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gUnknown_083DFEC4->unk320[i][j])
+ gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2240;
+ }
+ }
+ }
+}
+
+static bool8 sub_80F1F10(void)
+{
+ u16 j;
+
+ switch (gUnknown_083DFEC4->unk30F)
+ {
+ case 0:
+ if (sub_80F2360())
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j];
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ sprite->affineAnims = gSpriteAffineAnimTable_83E4450;
+ InitSpriteAffineAnim(sprite);
+ sprite->data[4] = j * 4 - 6;
+ sprite->data[4] /= 2;
+ sprite->data[5] = sprite->data[4] * 8;
+ sprite->callback = sub_80F2240;
+ }
+
+ sub_80F2170();
+ gUnknown_083DFEC4->unk30F++;
+ }
+ break;
+ case 1:
+ if (sub_80F23C8())
+ {
+ sub_80F21F8();
+ FreeSpriteTilesByTag(0x0);
+ FreeSpritePaletteByTag(0x0);
+ FreeSpritePaletteByTag(0x1);
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static void sub_80F1FF0(void)
+{
+ if (gUnknown_083DFEC4->unk311 == 1)
+ {
+ REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD];
+ REG_BLDY = gSineTable[gUnknown_083DFEC4->unk312] >> 5;
+ gUnknown_083DFEC4->unk312 += 3;
+ gUnknown_083DFEC4->unk312 &= 0x7F;
+ }
+ else if (gUnknown_083DFEC4->unk311 == 2)
+ {
+ REG_BLDALPHA = gUnknown_083E42F8[gUnknown_083DFEC4->unk312];
+ if (gUnknown_083DFEC4->unk312 < 15)
+ gUnknown_083DFEC4->unk312++;
+ }
+}
+
+static void sub_80F208C(void)
+{
+ sub_80F2148();
+}
+
+static void sub_80F2098(void)
+{
+ REG_WIN0H = 0x77F0;
+ REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD];
+ REG_WININ = 0x3F;
+ REG_WINOUT = 0x1F;
+ REG_DISPCNT |= DISPCNT_WIN0_ON;
+}
+
+static void sub_80F20F4(void)
+{
+ REG_DISPCNT &= ~DISPCNT_WIN0_ON;
+}
+
+static void sub_80F2108(void)
+{
+ if (!gUnknown_083DFEC4->unk311)
+ {
+ gUnknown_083DFEC4->unk311 = 1;
+ gUnknown_083DFEC4->unk312 = 0;
+ REG_BLDCNT = 0x90;
+ REG_BLDY = 0;
+ sub_80F2098();
+ }
+}
+
+static void sub_80F2148(void)
+{
+ gUnknown_083DFEC4->unk311 = 0;
+ REG_BLDCNT = 0;
+ sub_80F20F4();
+}
+
+static void sub_80F2170(void)
+{
+ u16 j;
+
+ if (!gUnknown_083DFEC4->unk311)
+ {
+ sub_80F20F4();
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j];
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ }
+
+ gUnknown_083DFEC4->unk311 = 2;
+ gUnknown_083DFEC4->unk312 = 0;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x10;
+ }
+}
+
+static void sub_80F21F8()
+{
+ gUnknown_083DFEC4->unk311 = 0;
+ REG_BLDCNT = 0;
+}
+
+static void sub_80F2218(struct Sprite *sprite)
+{
+ sprite->pos1.x -= 8;
+ if (sprite->pos1.x <= sprite->data[2])
+ {
+ sprite->pos1.x = sprite->data[2];
+ sprite->callback = sub_80F22B0;
+ }
+}
+
+static void sub_80F2240(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD)
+ {
+ if (sprite->data[5])
+ {
+ sprite->pos1.x += sprite->data[4];
+ sprite->data[5] -= sprite->data[4];
+ }
+
+ if (sprite->affineAnimEnded)
+ sub_80F240C(sprite);
+ }
+ else
+ {
+ sprite->pos1.x += 8;
+ if (sprite->pos1.x >= sprite->data[3])
+ sub_80F240C(sprite);
+ }
+}
+
+static void sub_80F22B0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD)
+ {
+ if (sprite->pos2.x > -16)
+ sprite->pos2.x -= 4;
+ }
+ else
+ {
+ if (sprite->pos2.x < 0)
+ sprite->pos2.x += 4;
+ }
+}
+
+static bool8 sub_80F22F8(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < gUnknown_083DFEC4->unk6DAE; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j];
+ if (!sprite)
+ return TRUE;
+
+ if (sprite->pos2.x != 0 && sprite->pos2.x != -16)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F2360(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < gUnknown_083DFEC4->unk30E; i++)
+ {
+ if (i != gUnknown_083DFEC4->unk6DAD)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j];
+ if (sprite)
+ return FALSE;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F23C8(void)
+{
+ u16 j;
+
+ for (j = 0; j < 4; j++)
+ {
+ struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j];
+ if (sprite)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_80F240C(struct Sprite *sprite)
+{
+ gUnknown_083DFEC4->unk320[sprite->data[0]][sprite->data[1]] = NULL;
+ if (sprite->affineAnimEnded)
+ FreeOamMatrix(sprite->oam.matrixNum);
+
+ DestroySprite(sprite);
+}
+
+static void sub_80F2458(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk388;
+ gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk388);
+ gUnknown_083DFEC4->unk380.tag = 0x0;
+ break;
+ case 1:
+ gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk1788;
+ gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk1788);
+ gUnknown_083DFEC4->unk380.tag = 0x0;
+ break;
+ case 2:
+ gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk2388;
+ gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk2388);
+ gUnknown_083DFEC4->unk380.tag = 0x0;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpriteSheet(&gUnknown_083DFEC4->unk380);
+}
+
+static void sub_80F2514(u8 arg0)
+{
+ struct SpritePalette spritePalette;
+
+ switch (arg0)
+ {
+ case 0:
+ spritePalette.data = gPokenavMenuOptions1_Pal;
+ spritePalette.tag = 0;
+ LoadSpritePalette(&spritePalette);
+ spritePalette.data = gPokenavMenuOptions2_Pal;
+ spritePalette.tag = 0x1;
+ break;
+ case 1:
+ spritePalette.data = gPokenavConditionMenu_Pal;
+ spritePalette.tag = 0x0;
+ break;
+ case 2:
+ spritePalette.data = gPokenavCondition6_Pal;
+ spritePalette.tag = 0;
+ LoadSpritePalette(&spritePalette);
+ spritePalette.data = gPokenavCondition7_Pal;
+ spritePalette.tag = 0x1;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpritePalette(&spritePalette);
+}
+
+static void sub_80F2598(void)
+{
+ u8 spriteId;
+
+ gUnknown_083DFEC4->unk6D9C = NULL;
+ if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) == TRUE)
+ {
+ LoadSpriteSheet(&gSpriteSheet_PokenavBlueLight);
+ LoadSpritePalette(&gSpritePalette_PokenavBlueLight);
+ spriteId = CreateSprite(&gSpriteTemplate_83E4484, 12, 96, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk6D9C = &gSprites[spriteId];
+ }
+ else
+ {
+ FreeSpriteTilesByTag(0x19);
+ FreeSpritePaletteByTag(0x11);
+ }
+ }
+}
+
+static void sub_80F2620(void)
+{
+ if (gUnknown_083DFEC4->unk6D9C)
+ {
+ DestroySprite(gUnknown_083DFEC4->unk6D9C);
+ FreeSpriteTilesByTag(0x19);
+ FreeSpritePaletteByTag(0x11);
+ gUnknown_083DFEC4->unk6D9C = NULL;
+ }
+}
+
+void sub_80F2654(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 6)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+}
+
+void sub_80F2688(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while(sub_80F26BC());
+}
+
+static bool8 sub_80F26BC(void)
+{
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gPokenavMainMenu_Gfx, gUnknown_083DFEC4->unk3B98);
+ break;
+ case 1:
+ LZ77UnCompWram(gPokenavConditionMenuHeader_Gfx, gUnknown_083DFEC4->unk4198);
+ break;
+ case 2:
+ LZ77UnCompWram(gPokenavRibbonsHeader_Gfx, gUnknown_083DFEC4->unk4D98);
+ break;
+ case 3:
+ LZ77UnCompWram(gPokenavHoennMapHeader_Gfx, gUnknown_083DFEC4->unk5398);
+ break;
+ case 4:
+ LZ77UnCompWram(gPokenavConditionMenuOptions_Gfx, gUnknown_083DFEC4->unk5F98);
+ break;
+ case 5:
+ LZ77UnCompWram(gPokenavConditionMenuOptions2_Gfx, gUnknown_083DFEC4->unk6798);
+ break;
+ case 6:
+ LZ77UnCompWram(gPokenavTrainersEyesHeader_Gfx, gUnknown_083DFEC4->unk4798);
+ break;
+ case 7:
+ LoadSpritePalettes(gUnknown_083E449C);
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+
+static void sub_80F27DC(u8 arg0)
+{
+ struct SpriteSheet spriteSheet;
+
+ switch (arg0)
+ {
+ case 0:
+ spriteSheet.data = gUnknown_083DFEC4->unk3B98;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk3B98);
+ spriteSheet.tag = 0x1;
+ break;
+ case 1:
+ spriteSheet.data = gUnknown_083DFEC4->unk4198;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4198);
+ spriteSheet.tag = 0x1;
+ break;
+ case 3:
+ spriteSheet.data = gUnknown_083DFEC4->unk4798;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4798);
+ spriteSheet.tag = 0x1;
+ break;
+ case 2:
+ spriteSheet.data = gUnknown_083DFEC4->unk4D98;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4D98);
+ spriteSheet.tag = 0x1;
+ break;
+ case 4:
+ spriteSheet.data = gUnknown_083DFEC4->unk5398;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5398);
+ spriteSheet.tag = 0x1;
+ break;
+ case 5:
+ spriteSheet.data = gUnknown_083DFEC4->unk5F98;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5F98);
+ spriteSheet.tag = 0x2;
+ break;
+ case 6:
+ spriteSheet.data = gUnknown_083DFEC4->unk6198;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6198);
+ spriteSheet.tag = 0x2;
+ break;
+ case 8:
+ spriteSheet.data = gUnknown_083DFEC4->unk6398;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6398);
+ spriteSheet.tag = 0x2;
+ break;
+ case 9:
+ spriteSheet.data = gUnknown_083DFEC4->unk6598;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6598);
+ spriteSheet.tag = 0x2;
+ break;
+ case 11:
+ spriteSheet.data = gUnknown_083DFEC4->unk6998;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6998);
+ spriteSheet.tag = 0x2;
+ break;
+ case 10:
+ spriteSheet.data = gUnknown_083DFEC4->unk6798;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6798);
+ spriteSheet.tag = 0x2;
+ break;
+ case 7:
+ spriteSheet.data = gUnknown_083DFEC4->unk6B98;
+ spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6B98);
+ spriteSheet.tag = 0x2;
+ break;
+ default:
+ return;
+ }
+
+ LoadSpriteSheet(&spriteSheet);
+}
+
+void sub_80F29B8(u8 arg0)
+{
+ u16 i;
+ s16 deltaX, endX, initialX;
+ u16 y;
+ s16 width;
+ struct Sprite **sprites;
+ const struct SpriteTemplate *spriteTemplate;
+ u8 spriteId;
+
+ spriteTemplate = NULL;
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ initialX = -96;
+ y = 49 - gUnknown_083DFEC4->unk030C;
+ deltaX = 8;
+ endX = 32;
+ width = 64;
+ sprites = gUnknown_083DFEC4->unk3B88;
+ spriteTemplate = arg0 != 3 ? &gSpriteTemplate_83E44E0 : &gSpriteTemplate_83E44F8;
+ break;
+ case 4:
+ initialX = 272;
+ y = 49 - gUnknown_083DFEC4->unk030C;
+ deltaX = -8;
+ endX = 152;
+ width = 64;
+ spriteTemplate = &gSpriteTemplate_83E44E0;
+ sprites = gUnknown_083DFEC4->unk3B88;
+ break;
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ spriteTemplate = &gSpriteTemplate_83E4530;
+ // fall through
+ case 7:
+ case 10:
+ case 11:
+ if (spriteTemplate == NULL)
+ spriteTemplate = &gSpriteTemplate_83E4548;
+
+ initialX = -96;
+ y = 68 - gUnknown_083DFEC4->unk030C;
+ deltaX = 8;
+ endX = 16;
+ width = 32;
+ sprites = gUnknown_083DFEC4->unk3B90;
+ break;
+ default:
+ return;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(spriteTemplate, i * width + initialX, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = deltaX;
+ gSprites[spriteId].data[1] = endX + i * width;
+ gSprites[spriteId].data[2] = i;
+ gSprites[spriteId].data[3] = arg0;
+ if (arg0 == 4 && i == 1)
+ {
+ int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2;
+ StartSpriteAnim(&gSprites[spriteId], anim);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+
+ if (arg0 < 4 && i == 1)
+ {
+ gSprites[spriteId].oam.shape = ST_OAM_SQUARE;
+ gSprites[spriteId].oam.size = 2;
+ }
+
+ sprites[i] = &gSprites[spriteId];
+ }
+ }
+}
+
+#define sEndX sprite->data[1]
+void sub_80F2BBC(struct Sprite *sprite)
+{
+ s16 x = sprite->pos1.x;
+ sprite->pos1.x += sprite->data[0];
+ if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX))
+ {
+ sprite->pos1.x = sEndX;
+ if (sprite->data[3] == 4 && sprite->data[2] == 1)
+ sprite->callback = sub_80F2C58;
+ else
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+#undef sEndX
+
+static void sub_80F2C14(struct Sprite *sprite)
+{
+ u16 right;
+
+ sprite->pos1.x -= sprite->data[0];
+ right = sprite->pos1.x + 32;
+ if (right > 304)
+ {
+ if (sprite->data[2] == 1)
+ {
+ if (sprite->data[3] < 5)
+ FreeSpriteTilesByTag(0x1);
+ else
+ FreeSpriteTilesByTag(0x2);
+ }
+
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_80F2C58(struct Sprite *sprite)
+{
+ int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2;
+ StartSpriteAnim(sprite, anim);
+}
+
+void sub_80F2C80(u8 arg0)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F2CBC(arg0));
+}
+
+bool8 sub_80F2CBC(u8 arg0)
+{
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ sub_80F27DC(arg0);
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+ case 1:
+ sub_80F29B8(arg0);
+ gUnknown_083DFEC4->unk306++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+static void sub_80F2D04(u8 arg0)
+{
+ u16 i;
+
+ if (arg0 < 5)
+ {
+ for (i = 0; i < 2; i++)
+ gUnknown_083DFEC4->unk3B88[i]->callback = sub_80F2C14;
+ }
+ else
+ {
+ for (i = 0; i < 2; i++)
+ gUnknown_083DFEC4->unk3B90[i]->callback = sub_80F2C14;
+ }
+}
+
+static void sub_80F2D6C(u8 arg0)
+{
+ u16 i;
+
+ if (arg0 < 5)
+ {
+ FreeSpriteTilesByTag(0x1);
+ for (i = 0; i < 2; i++)
+ DestroySprite(gUnknown_083DFEC4->unk3B88[i]);
+ }
+ else
+ {
+ FreeSpriteTilesByTag(0x2);
+ for (i = 0; i < 2; i++)
+ DestroySprite(gUnknown_083DFEC4->unk3B90[i]);
+ }
+}
+
+static void sub_80F2DD8(void)
+{
+ CreateRegionMapCursor(7, 7);
+ CreateRegionMapPlayerIcon(8, 8);
+ sub_80FBF94();
+}
+
+static void sub_80F2DF4(void)
+{
+ FreeRegionMapIconResources();
+}
+
+void sub_80F2E00(struct Sprite *sprite)
+{
+ sprite->pos1.x = gUnknown_083DFEC4->unk8766 + 38;
+}
+
+static void sub_80F2E18(u8 arg0)
+{
+ u8 spriteId;
+ struct SpriteTemplate spriteTemplate;
+ struct SpritePalette spritePalette;
+ struct SpriteSheet spriteSheet;
+
+ if (!gUnknown_083DFEC4->unk8768)
+ {
+ spriteSheet = gUnknown_083E4568;
+ spriteTemplate = gSpriteTemplate_83E4570;
+ spritePalette = gUnknown_083E4588;
+
+ spriteSheet.data = gUnknown_083DFEC4->unkD1E4[arg0];
+ spritePalette.data = gUnknown_083DFEC4->unk0[arg0];
+ gUnknown_083DFEC4->unkD1DC = LoadSpritePalette(&spritePalette);
+ gUnknown_083DFEC4->unkD1DE = LoadSpriteSheet(&spriteSheet);
+
+ spriteId = CreateSprite(&spriteTemplate, 38, 104, 0);
+ if (spriteId == MAX_SPRITES)
+ {
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gUnknown_083DFEC4->unk8768 = NULL;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk8768 = &gSprites[spriteId];
+ gUnknown_083DFEC4->unkD1E0 = (void *)(VRAM + 0x10000) + gUnknown_083DFEC4->unkD1DE * 32;
+ gUnknown_083DFEC4->unkD1DC = gUnknown_083DFEC4->unkD1DC * 16 + 0x100;
+ }
+ }
+ else
+ {
+ DmaCopy16Defvars(3, gUnknown_083DFEC4->unkD1E4[arg0], gUnknown_083DFEC4->unkD1E0, 0x800);
+ LoadPalette(gUnknown_083DFEC4->unk0[arg0], gUnknown_083DFEC4->unkD1DC, 0x20);
+ }
+}
+
+void sub_80F2F48(void)
+{
+ if (gUnknown_083DFEC4->unk8768)
+ {
+ DestroySprite(gUnknown_083DFEC4->unk8768);
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gUnknown_083DFEC4->unk8768 = NULL;
+ }
+}
+
+void sub_80F2F7C(u8 arg0)
+{
+ sub_80F2E18(arg0);
+ gUnknown_083DFEC4->unkCED0 = gUnknown_083DFEC4->unk8768;
+ gUnknown_083DFEC4->unkCED0->callback = sub_80F2FEC;
+}
+
+static void sub_80F2FB0(void)
+{
+ if (gUnknown_083DFEC4->unkCED0)
+ {
+ DestroySprite(gUnknown_083DFEC4->unkCED0);
+ FreeSpriteTilesByTag(0x6);
+ FreeSpritePaletteByTag(0x6);
+ gUnknown_083DFEC4->unkCED0 = NULL;
+ gUnknown_083DFEC4->unk8768 = NULL;
+ }
+}
+
+static void sub_80F2FEC(struct Sprite *sprite)
+{
+ sprite->pos1.x = gUnknown_083DFEC4->unkD15A + 40;
+ sprite->pos1.y = 104;
+}
+
+static void sub_80F3008(u8 arg0)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpritePalette spritePalette;
+ struct SpriteSheet spriteSheets[3];
+
+ memcpy(spriteSheets, gUnknown_083E4590, sizeof(gUnknown_083E4590));
+ spritePalette = gUnknown_083E45A8;
+ switch (arg0)
+ {
+ case 1:
+ case 2:
+ spritePalette.data = gUnknown_08E9F988;
+ break;
+ }
+
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&gSpriteTemplate_83E45B8, 95, 0, 0);
+ if (spriteId == MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk87CC = NULL;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87CC = &gSprites[spriteId];
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E45F0, 168, i * 128 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk87D0[i] = &gSprites[spriteId];
+ gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].data[2] = i == 0 ? -1 : 1;
+ gSprites[spriteId].data[3] = i;
+ gSprites[spriteId].data[4] = 1;
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87D0[i] = NULL;
+ }
+ }
+ }
+}
+
+static void sub_80F3130(void)
+{
+ u16 i;
+
+ if (gUnknown_083DFEC4->unk87CC)
+ {
+ DestroySprite(gUnknown_083DFEC4->unk87CC);
+ FreeSpriteTilesByTag(0x9);
+ FreeSpritePaletteByTag(0x9);
+ gUnknown_083DFEC4->unk87CC = NULL;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_083DFEC4->unk87D0[i])
+ {
+ DestroySprite(gUnknown_083DFEC4->unk87D0[i]);
+ gUnknown_083DFEC4->unk87D0[i] = NULL;
+ }
+ }
+
+ FreeSpriteTilesByTag(0xA);
+}
+
+void sub_80F3190(struct Sprite *sprite)
+{
+ sprite->pos1.y = gUnknown_083DFEC4->unk876C * 16 + 16;
+}
+
+void sub_80F31AC(struct Sprite *sprite)
+{
+ if (gUnknown_083DFEC4->unk87C9)
+ {
+ if (sprite->data[4])
+ {
+ if (!sprite->data[3])
+ sprite->invisible = gUnknown_083DFEC4->unk8770 == 0;
+ else
+ sprite->invisible = gUnknown_083DFEC4->unk8772 == gUnknown_083DFEC4->unk8774;
+
+ sprite->data[4] = 0;
+ }
+
+ if (++sprite->data[0] > 4)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->data[1] < 5)
+ {
+ sprite->pos2.y += sprite->data[2];
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.y = 0;
+ }
+ }
+ }
+}
+
+static void sub_80F3264(void)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_083DFEC4->unk87D0[i])
+ gUnknown_083DFEC4->unk87D0[i]->data[4] = 1;
+ }
+}
+
+static void sub_80F3294(u8 arg0)
+{
+ gUnknown_083DFEC4->unk87CC->invisible = arg0;
+ if (gUnknown_083DFEC4->unk87C9)
+ {
+ if (arg0 == 1)
+ {
+ gUnknown_083DFEC4->unk87D0[0]->invisible = arg0;
+ gUnknown_083DFEC4->unk87D0[1]->invisible = arg0;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87D0[0]->data[4] = 1;
+ gUnknown_083DFEC4->unk87D0[1]->data[4] = 1;
+ }
+ }
+}
+
+void sub_80F3328(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gUnknown_083DFEC4->unk87DC)
+ StartSpriteAnim(sprite, 0);
+ else
+ StartSpriteAnim(sprite, 1);
+}
+
+static void sub_80F3360(struct Sprite *sprite)
+{
+ if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1)
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x4);
+ else
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x5);
+}
+
+void sub_80F33A8(void)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpriteSheet spriteSheets[4];
+ struct SpritePalette spritePalettes[3];
+ struct SpriteTemplate spriteTemplate;
+
+ memcpy(spriteSheets, gUnknown_083E4628, sizeof(gUnknown_083E4628));
+ memcpy(spritePalettes, gUnknown_083E4648, sizeof(gUnknown_083E4648));
+ spriteTemplate = gSpriteTemplate_83E4660;
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalettes(spritePalettes);
+
+ for (i = 0; i < gUnknown_083DFEC4->unk87DA - 1; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 226, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk87E4[i]->data[0] = i;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87E4[i] = NULL;
+ }
+ }
+
+ spriteTemplate.tileTag = 0x4;
+ spriteTemplate.callback = SpriteCallbackDummy;
+ for (; i < 6; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 230, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk87E4[i]->oam.size = 0;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87E4[i] = NULL;
+ }
+ }
+
+ spriteTemplate.tileTag = 0x5;
+ spriteTemplate.callback = sub_80F3360;
+ spriteId = CreateSprite(&spriteTemplate, 222, i * 20 + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk87E4[i]->oam.shape = ST_OAM_H_RECTANGLE;
+ gUnknown_083DFEC4->unk87E4[i]->oam.size = 2;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk87E4[i] = NULL;
+ }
+}
+
+void sub_80F357C(void)
+{
+ u16 i;
+
+ for (i = 0; i < 7; i++)
+ {
+ if (gUnknown_083DFEC4->unk87E4[i])
+ {
+ DestroySprite(gUnknown_083DFEC4->unk87E4[i]);
+ gUnknown_083DFEC4->unk87E4[i] = NULL;
+ }
+ }
+}
+
+static void sub_80F35B4(void)
+{
+ struct Sprite *sprite;
+
+ gUnknown_083DFEC4->unk76B0.baseTileTag = 0x1C;
+ gUnknown_083DFEC4->unk76B0.basePaletteTag = 0x13;
+ sub_80F727C(&gUnknown_083DFEC4->unk76B0);
+ sub_80F7404();
+ sprite = sub_80F7920(27, 21, gUnknown_083E4678);
+ sprite->oam.priority = 3;
+ sprite->pos1.x = 192;
+ sprite->pos1.y = 32;
+ sprite->callback = sub_80F363C;
+ gUnknown_083DFEC4->unk76AC = sprite;
+}
+
+void sub_80F3614(void)
+{
+ DestroySprite(gUnknown_083DFEC4->unk76AC);
+ FreeSpriteTilesByTag(0x1B);
+ FreeSpritePaletteByTag(0x15);
+}
+
+static void sub_80F363C(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9]);
+}
+
+void sub_80F3668(void)
+{
+ sub_80F7418(gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9], 176, 32);
+}
+
+void sub_80F3698(void)
+{
+ struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC];
+ gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9] = gUnknown_083DFEC4->unk76B0.markings;
+ SetMonMarkings(var0->unk1, var0->partyIdx, gUnknown_083DFEC4->unk76B0.markings);
+ sub_80F7470();
+}
+
+static void sub_80F36F0(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F3724());
+}
+
+static bool8 sub_80F3724(void)
+{
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_083E3D00, gUnknown_083DFEC4->unk984C);
+ break;
+ case 1:
+ sub_80F379C();
+ gUnknown_083DFEC4->unk306++;
+ // fall through
+ case 2:
+ if (sub_80F37D0())
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+
+static void sub_80F379C(void)
+{
+ gUnknown_083DFEC4->unkBC93 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F37D0());
+}
+
+static bool8 sub_80F37D0(void)
+{
+ u16 i;
+ u8 j, k, l, m;
+
+ if (gUnknown_083DFEC4->unkBC93 > 11)
+ return FALSE;
+
+ for (i = 0; i < 2; i++)
+ {
+ u8 *r4 = &gUnknown_083DFEC4->unk984C[gUnknown_083DFEC4->unkBC93][0];
+ u8 *r5 = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0];
+ for (j = 0; j < 4; j++)
+ {
+ CpuFastSet(r4, r5, 0x10);
+ r5 += 0x40;
+ r4 += 0x20;
+ for (k = 0; k < 2; k++)
+ {
+ for (l = 0; l < 8; l++)
+ {
+ r4 += 4;
+ for (m = 0; m < 4; m++)
+ {
+ r4 -= 1;
+ *r5 = (*r4 << 4) | ((*r4 >> 4) & 0xF);
+ r5++;
+ }
+
+ r4 += 4;
+ }
+
+ r4 -= 0x40;
+ }
+
+ r4 += 0x60;
+ }
+
+ if (++gUnknown_083DFEC4->unkBC93 > 11)
+ return FALSE;
+ }
+
+ if (gUnknown_083DFEC4->unkBC93 > 11)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void sub_80F38B8(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F38EC());
+}
+
+static bool8 sub_80F38EC(void)
+{
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ gUnknown_083DFEC4->unk9348 = NULL;
+ gUnknown_083DFEC4->unkBC92 = 0;
+ break;
+ case 1:
+ sub_80F2E18(0);
+ break;
+ case 2:
+ sub_80F3970();
+ gUnknown_083DFEC4->unk306++;
+ // fall through
+ case 3:
+ if (sub_80F39A4())
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+
+static void sub_80F3970(void)
+{
+ gUnknown_083DFEC4->unkBC93 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F39A4());
+}
+
+static bool8 sub_80F39A4(void)
+{
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette;
+ if (gUnknown_083DFEC4->unkBC93 > 11)
+ return FALSE;
+
+ spriteSheet.data = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0];
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = gUnknown_083DFEC4->unkBC93 + 11;
+ LoadSpriteSheet(&spriteSheet);
+ if (gUnknown_083DFEC4->unkBC93 < 5)
+ {
+ spritePalette.data = gUnknown_083E3C60[gUnknown_083DFEC4->unkBC93];
+ spritePalette.tag = gUnknown_083DFEC4->unkBC93 + 10;
+ LoadSpritePalette(&spritePalette);
+ }
+
+ if (++gUnknown_083DFEC4->unkBC93 > 11)
+ return FALSE;
+
+ return TRUE;
+}
+
+static struct Sprite *sub_80F3A3C(u16 arg0, u16 arg1)
+{
+ struct SpriteTemplate spriteTemplate;
+ u16 var0;
+ u8 ribbon;
+ u8 spriteId;
+
+ if (arg1 < 3)
+ var0 = arg0 + arg1 * 9;
+ else
+ var0 = arg0 + (gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F);
+
+ ribbon = gUnknown_083DFEC4->unkBC4C[var0];
+ spriteTemplate = gSpriteTemplate_83E476C;
+ spriteTemplate.tileTag = gPokenavRibbonsIconGfx[ribbon][0] + 11;
+ spriteTemplate.paletteTag = gPokenavRibbonsIconGfx[ribbon][1] + 10;
+ spriteId = CreateSprite(&spriteTemplate, arg0 * 16 + 96, arg1 * 16 + 40, 2);
+ if (spriteId != MAX_SPRITES)
+ return &gSprites[spriteId];
+ else
+ return NULL;
+}
+
+static void sub_80F3B00(void)
+{
+ gUnknown_083DFEC4->unk9348 = sub_80F3A3C(gUnknown_083DFEC4->unkBC90, gUnknown_083DFEC4->unkBC91);
+ if (gUnknown_083DFEC4->unk9348)
+ {
+ StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 1);
+ gUnknown_083DFEC4->unkBC92 = 1;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkBC92 = 0;
+ }
+}
+
+static bool8 sub_80F3B58(void)
+{
+ if (gUnknown_083DFEC4->unkBC92)
+ {
+ gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded;
+ return gUnknown_083DFEC4->unkBC92;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_80F3B94(void)
+{
+ if (gUnknown_083DFEC4->unk9348)
+ {
+ StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 2);
+ gUnknown_083DFEC4->unkBC92 = 1;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkBC92 = 0;
+ }
+}
+
+static bool8 sub_80F3BD4(void)
+{
+ if (gUnknown_083DFEC4->unkBC92)
+ {
+ gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded;
+ if (!gUnknown_083DFEC4->unkBC92)
+ {
+ FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum);
+ DestroySprite(gUnknown_083DFEC4->unk9348);
+ gUnknown_083DFEC4->unk9348 = NULL;
+ }
+
+ return gUnknown_083DFEC4->unkBC92;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_80F3C2C(void)
+{
+ u16 i;
+
+ if (gUnknown_083DFEC4->unk9348)
+ {
+ FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum);
+ DestroySprite(gUnknown_083DFEC4->unk9348);
+ gUnknown_083DFEC4->unk9348 = NULL;
+ }
+
+ for (i = 0; i < 12; i++)
+ FreeSpriteTilesByTag(i + 0xB);
+
+ for (i = 0; i < 5; i++)
+ FreeSpritePaletteByTag(i + 0xA);
+
+ sub_80F2F48();
+}
+
+void sub_80F3C94(void)
+{
+ u16 i;
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette;
+
+ spriteSheet = gUnknown_083E4784;
+ spritePalette = gUnknown_083E478C;
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ for (i = 0; i < 10; i++)
+ gUnknown_083DFEC4->unk8800[i] = NULL;
+}
+
+void sub_80F3CE8(void)
+{
+ move_anim_execute();
+ FreeSpriteTilesByTag(0x17);
+ FreeSpritePaletteByTag(0xF);
+}
+
+void sub_80F3D00(void)
+{
+ u8 spriteId;
+ u16 i;
+ u8 var1;
+ struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC];
+
+ if (!var0->unk4)
+ return;
+
+ var1 = gUnknown_083DFEC4->unk8931[gUnknown_083DFEC4->unk8fe9];
+ for (i = 0; i < var1 + 1; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4800, 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk8800[i] = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk8800[i]->invisible = 1;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ sub_80F3F20(var1, 1);
+}
+
+void move_anim_execute(void)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (!gUnknown_083DFEC4->unk8800[i])
+ return;
+
+ DestroySprite(gUnknown_083DFEC4->unk8800[i]);
+ gUnknown_083DFEC4->unk8800[i] = NULL;
+ }
+}
+
+void sub_80F3DDC(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 60)
+ {
+ sprite->data[1] = 0;
+ sub_80F3F20(sprite->data[2], 0);
+ }
+}
+
+static void sub_80F3E04(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sprite->data[1] = 0;
+ sprite->callback = sub_80F3DDC;
+ }
+}
+
+static void sub_80F3E24(struct Sprite *sprite)
+{
+ if (gUnknown_083DFEC4->unk8768)
+ {
+ sprite->pos1.x = gUnknown_083DFEC4->unk8768->pos1.x
+ + gUnknown_083DFEC4->unk8768->pos2.x
+ + gUnknown_083E4794[sprite->data[0]][0];
+ sprite->pos1.y = gUnknown_083DFEC4->unk8768->pos1.y
+ + gUnknown_083DFEC4->unk8768->pos2.y
+ + gUnknown_083E4794[sprite->data[0]][1];
+ }
+ else
+ {
+ sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40;
+ sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104;
+ }
+}
+
+static void sub_80F3E9C(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ {
+ if (--sprite->data[1])
+ return;
+
+ SeekSpriteAnim(sprite, 0);
+ sprite->invisible = 0;
+ }
+
+ sub_80F3E24(sprite);
+ if (sprite->animEnded)
+ {
+ sprite->invisible = 1;
+ if (sprite->data[3] == sprite->data[2])
+ {
+ if (sprite->data[3] == 9)
+ {
+ sub_80F3FAC();
+ sprite->callback = sub_80F3E04;
+ }
+ else
+ {
+ sprite->callback = sub_80F3DDC;
+ }
+ }
+ else
+ {
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+static void sub_80F3F20(u8 arg0, u8 arg1)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (gUnknown_083DFEC4->unk8800[i])
+ {
+ gUnknown_083DFEC4->unk8800[i]->data[0] = i;
+ gUnknown_083DFEC4->unk8800[i]->data[1] = i * 16 + 1;
+ gUnknown_083DFEC4->unk8800[i]->data[2] = arg0;
+ gUnknown_083DFEC4->unk8800[i]->data[3] = i;
+
+ if (!arg1 || arg0 != 9)
+ {
+ gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E9C;
+ }
+ else
+ {
+ sub_80F3E24(gUnknown_083DFEC4->unk8800[i]);
+ sub_80F3FAC();
+ gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E04;
+ gUnknown_083DFEC4->unk8800[i]->invisible = 0;
+ }
+ }
+ }
+}
+
+static void sub_80F3FAC(void)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (gUnknown_083DFEC4->unk8800[i])
+ {
+ SeekSpriteAnim(gUnknown_083DFEC4->unk8800[i], 0);
+ gUnknown_083DFEC4->unk8800[i]->invisible = 0;
+ }
+ }
+}
+
+static void sub_80F3FF0(void)
+{
+ gUnknown_083DFEC4->unk306 = 0;
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F4024());
+}
+
+static bool8 sub_80F4024(void)
+{
+ u8 paletteIndex;
+ u8 spriteId;
+ struct SpritePalette spritePalette;
+
+ switch (gUnknown_083DFEC4->unk306)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_083E329C, gUnknown_083DFEC4->unk131E4);
+ break;
+ case 1:
+ {
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_083DFEC4->unk131E4,
+ .size = sizeof(gUnknown_083DFEC4->unk131E4),
+ .tag = 0x18,
+ };
+ LoadSpriteSheet(&spriteSheet);
+ break;
+ }
+ case 2:
+ spritePalette = gUnknown_083E4818;
+ LoadSpritePalette(&spritePalette);
+ paletteIndex = IndexOfSpritePaletteTag(0x10);
+ gUnknown_083DFEC4->unk308 = -3 & ~(1 << (paletteIndex + 0x10));
+ break;
+ case 3:
+ spriteId = CreateSprite(&gSpriteTemplate_83E4850, 218, 14, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_083DFEC4->unk6D98 = &gSprites[spriteId];
+ gUnknown_083DFEC4->unk6D98->data[0] = 0;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk6D98 = NULL;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_083DFEC4->unk306++;
+ return TRUE;
+}
+
+void sub_80F4138(struct Sprite *sprite)
+{
+ sprite->pos2.y = -gUnknown_083DFEC4->unk030C;
+ if (sprite->pos2.y <= -32)
+ {
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = 1;
+ sprite->data[0] = 1;
+ }
+ }
+ else
+ {
+ if (sprite->data[0] == 1)
+ {
+ sprite->invisible = 0;
+ sprite->data[0] = 0;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function.
+void sub_80F4194(u8 *arg0, u8 *text)
+{
+ u8 i;
+ u8 *tileBuffer;
+ u32 *tileBuf2;
+
+ tileBuffer = gUnknown_083DFEC8;
+ DmaFill16(3, 0x1111, tileBuffer, 0x280);
+ DmaFill16Defvars(3, 0x1111, 0x400 + tileBuffer, 0x280);
+ Text_InitWindow8004E3C(&gWindowTemplate_81E70F0, tileBuffer, text);
+
+ DmaClear16(3, tileBuffer + 0x220, 0x60);
+ DmaClear16(3, tileBuffer + 0x620, 0x60);
+
+ tileBuf2 = (int *)tileBuffer + 0x80;
+ tileBuf2[0] &= 0x0FFFFFFF;
+ tileBuf2[1] &= 0x0FFFFFFF;
+ tileBuf2[2] &= 0x0FFFFFFF;
+ tileBuf2[3] &= 0x0FFFFFFF;
+ tileBuf2[4] &= 0x0FFFFFFF;
+ tileBuf2[5] &= 0x0FFFFFFF;
+ tileBuf2[6] &= 0x0FFFFFFF;
+ tileBuf2[7] &= 0x0FFFFFFF;
+
+ tileBuf2 = (int *)tileBuffer + 0x180;
+ tileBuf2[0] &= 0x0FFFFFFF;
+ tileBuf2[1] &= 0x0FFFFFFF;
+ tileBuf2[2] &= 0x0FFFFFFF;
+ tileBuf2[3] &= 0x0FFFFFFF;
+ tileBuf2[4] &= 0x0FFFFFFF;
+ tileBuf2[5] &= 0x0FFFFFFF;
+ tileBuf2[6] &= 0x0FFFFFFF;
+ tileBuf2[7] &= 0x0FFFFFFF;
+
+ for (i = 0; i < 5; i++)
+ {
+ DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128);
+ DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128);
+ }
+}
+#else
+NAKED
+void sub_80F4194(u8 *arg0, u8 *text)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ adds r7, r0, 0\n\
+ adds r2, r1, 0\n\
+ ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\
+ ldr r6, [r0] @ r6 = tileBuffer\n\
+ mov r0, sp \n\
+ ldr r1, _080F42A8 @ =0x00001111\n\
+ adds r5, r1, 0\n\
+ strh r5, [r0]\n\
+ ldr r4, _080F42AC @ =0x040000d4\n\
+ str r0, [r4]\n\
+ str r6, [r4, 0x4]\n\
+ ldr r3, _080F42B0 @ =0x81000140\n\
+ str r3, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r1, r6, r0\n\
+ mov r0, sp\n\
+ strh r5, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ str r3, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\
+ adds r1, r6, 0\n\
+ bl Text_InitWindow8004E3C\n\
+ movs r3, 0x88\n\
+ lsls r3, 2\n\
+ adds r1, r6, r3\n\
+ mov r0, sp\n\
+ movs r3, 0\n\
+ strh r3, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ ldr r2, _080F42B8 @ =0x81000030\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r0, 0xC4\n\
+ lsls r0, 3\n\
+ adds r1, r6, r0\n\
+ mov r0, sp\n\
+ strh r3, [r0]\n\
+ str r0, [r4]\n\
+ str r1, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ movs r1, 0x80\n\
+ lsls r1, 2\n\
+ adds r2, r6, r1\n\
+ ldr r0, [r2]\n\
+ ldr r1, _080F42BC @ =0x0fffffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, [r2, 0x4]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x4]\n\
+ ldr r0, [r2, 0x8]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0xC]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0xC]\n\
+ ldr r0, [r2, 0x10]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x10]\n\
+ ldr r0, [r2, 0x14]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x14]\n\
+ ldr r0, [r2, 0x18]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x18]\n\
+ ldr r0, [r2, 0x1C]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x1C]\n\
+ movs r3, 0xC0\n\
+ lsls r3, 3\n\
+ adds r2, r6, r3\n\
+ ldr r0, [r2]\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, [r2, 0x4]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x4]\n\
+ ldr r0, [r2, 0x8]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0xC]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0xC]\n\
+ ldr r0, [r2, 0x10]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x10]\n\
+ ldr r0, [r2, 0x14]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x14]\n\
+ ldr r0, [r2, 0x18]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x18]\n\
+ ldr r0, [r2, 0x1C]\n\
+ ands r0, r1\n\
+ str r0, [r2, 0x1C]\n\
+ movs r1, 0\n\
+ ldr r2, _080F42C0 @ =0x80000040\n\
+_080F4268:\n\
+ lsls r0, r1, 7\n\
+ adds r0, r6, r0\n\
+ str r0, [r4]\n\
+ lsls r0, r1, 8\n\
+ adds r0, r7, r0\n\
+ str r0, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ lsls r0, r1, 7\n\
+ movs r3, 0x80\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
+ adds r0, r6, r0\n\
+ str r0, [r4]\n\
+ lsls r0, r1, 3\n\
+ adds r0, 0x4\n\
+ lsls r0, 5\n\
+ adds r0, r7, r0\n\
+ str r0, [r4, 0x4]\n\
+ str r2, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x4\n\
+ bls _080F4268\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F42A4: .4byte gUnknown_083DFEC8\n\
+_080F42A8: .4byte 0x00001111\n\
+_080F42AC: .4byte 0x040000d4\n\
+_080F42B0: .4byte 0x81000140\n\
+_080F42B4: .4byte gWindowTemplate_81E70F0\n\
+_080F42B8: .4byte 0x81000030\n\
+_080F42BC: .4byte 0x0fffffff\n\
+_080F42C0: .4byte 0x80000040\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static void sub_80F42C4(u8 *arg0)
+{
+ u16 i, tileOffset;
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_083DFEC4->unkD1E4[0],
+ .size = 0x500,
+ .tag = 0x1A,
+ };
+
+ sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0);
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&gUnknown_083E4868);
+
+ tileOffset = 0;
+ for (i = 0; i < 5; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_83E4878, i * 32 + 113, 16, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += tileOffset;
+ gUnknown_083DFEC4->unkCED4[i] = &gSprites[spriteId];
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCED4[i] = NULL;
+ }
+
+ tileOffset += 8;
+ }
+}
+
+static void sub_80F4394(void)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_083DFEC4->unkCED4[i])
+ DestroySprite(gUnknown_083DFEC4->unkCED4[i]);
+ }
+
+ FreeSpriteTilesByTag(0x1A);
+ FreeSpritePaletteByTag(0x12);
+}
+
+void sub_80F43D4(u8 *arg0)
+{
+ u16 tile;
+
+ sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0);
+ tile = GetSpriteTileStartByTag(0x1A);
+ if (tile != 0xFFFF)
+ DmaCopy32Defvars(3, gUnknown_083DFEC4->unkD1E4[0], (void *)(VRAM + 0x10000 + (tile * 32)), 0x500);
+}
+
+static u8 *sub_80F4428(u8 *arg0, u16 arg1, u8 arg2)
+{
+ return sub_80F6514(arg0, arg1, arg2);
+}
+
+static u8 *sub_80F443C(u8 *arg0, u16 arg1)
+{
+ return AlignInt1InMenuWindow(StringCopy(arg0, gOtherText_Number), arg1, 56, 1);
+}
+
+static u8 *sub_80F445C(u8 *arg0, u16 arg1)
+{
+ u8 *buffer = AlignInt1InMenuWindow(arg0, arg1, 23, 1);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x11;
+ buffer[2] = 1;
+ buffer += 3;
+ buffer[0] = CHAR_SLASH;
+ buffer += 1;
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x11;
+ buffer[2] = 1;
+ buffer += 3;
+ buffer = AlignInt1InMenuWindow(buffer, gUnknown_083DFEC4->unk8774 + 1, 50, 1);
+ return buffer;
+}
+
+u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text)
+{
+ if (box == 14)
+ {
+ if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
+ return GetMonData(&gPlayerParty[monIndex], monDataField, text);
+ else
+ return GetMonData(&gPlayerParty[monIndex], monDataField);
+ }
+ else
+ {
+ if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME)
+ return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField, text);
+ else
+ return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField);
+ }
+}
+
+static void SetMonMarkings(u16 box, u16 monIndex, u8 markings)
+{
+ if (box == 14)
+ SetMonData(&gPlayerParty[monIndex], MON_DATA_MARKINGS, &markings);
+ else
+ SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings);
+}
+
+static void sub_80F45A0(s16 arg0, u8 arg1)
+{
+ u8 box;
+ u8 var0 = gUnknown_083DFEC4->unk893c[arg0].unk4;
+ if (var0)
+ {
+ sub_80F4428(gUnknown_083DFEC4->unk8829[arg1], arg0, 0);
+ box = gUnknown_083DFEC4->unk893c[arg0].unk1;
+ if (box == 14)
+ AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gOtherText_InParty, 64, 0);
+ else
+ AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gPokemonStorage.boxNames[box], 64, 0);
+
+ gUnknown_083DFEC4->unk8937[arg1] = 1;
+ }
+ else
+ {
+ AlignStringInMenuWindow(gUnknown_083DFEC4->unk8829[arg1], gEmptyString_81E72B0, 104, 0);
+ AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gEmptyString_81E72B0, 64, 0);
+ gUnknown_083DFEC4->unk8937[arg1] = var0;
+ }
+}
+
+static void sub_80F468C(s16 arg0, u8 arg1)
+{
+ u16 i;
+ u16 box;
+ u16 monIndex;
+
+ if (gUnknown_083DFEC4->unk893c[arg0].unk4)
+ {
+ box = gUnknown_083DFEC4->unk893c[arg0].unk1;
+ monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
+ gUnknown_083DFEC4->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL);
+ gUnknown_083DFEC4->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL);
+
+ gUnknown_083DFEC4->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255
+ ? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29
+ : 9;
+
+ gUnknown_083DFEC4->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL);
+ sub_80F55AC(gUnknown_083DFEC4->unk8ff0[arg1], gUnknown_083DFEC4->unk9004[arg1]);
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_083DFEC4->unk8ff0[arg1][i] = 0;
+ gUnknown_083DFEC4->unk9004[arg1][i].unk0 = 0x9B;
+ gUnknown_083DFEC4->unk9004[arg1][i].unk2 = 0x5B;
+ }
+ }
+}
+
+static void sub_80F4824(s16 arg0, u8 arg1)
+{
+ u16 species;
+ u32 otId;
+ u32 personality;
+ u16 box;
+ u16 monIndex;
+
+ if (gUnknown_083DFEC4->unk893c[arg0].unk4)
+ {
+ box = gUnknown_083DFEC4->unk893c[arg0].unk1;
+ monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx;
+ species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL);
+ otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL);
+ personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL);
+
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ 1,
+ (intptr_t)gUnknown_083DFEC4->unk131E4,
+ gUnknown_083DFEC4->unkD1E4[arg1],
+ species,
+ personality);
+
+ LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gUnknown_083DFEC4->unk0[arg1]);
+ gUnknown_083DFEC4->unkD1D6[arg1] = species;
+ }
+}
+
+void sub_80F4900(s16 arg0, u8 arg1)
+{
+ sub_80F45A0(arg0, arg1);
+ sub_80F468C(arg0, arg1);
+ sub_80F4824(arg0, arg1);
+}
+
+void sub_80F492C(void)
+{
+ gUnknown_083DFEC4->unk8FE4 = 0;
+}
+
+#ifdef NONMATCHING
+// registers r3/r4 are swapped
+void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+{
+ u16 i;
+ u16 r3;
+ u16 r4;
+
+ i = 0;
+ r4 = gUnknown_083DFEC4->unk8FE4;
+ r3 = r4 / 2;
+ while (r3 != r4)
+ {
+ if (arg0->unk0 > gUnknown_083DFEC4->unk893c[r3].unk0)
+ r4 = r3;
+ else
+ i = r3 + 1;
+
+ r3 = ((r4 - i) / 2) + i;
+ }
+
+ r4 = gUnknown_083DFEC4->unk8FE4;
+ while (r4 > r3)
+ {
+ gUnknown_083DFEC4->unk893c[r4] = gUnknown_083DFEC4->unk893c[r4 - 1];
+ r4--;
+ }
+
+ gUnknown_083DFEC4->unk893c[r3] = *arg0;
+ gUnknown_083DFEC4->unk8FE4++;
+}
+#else
+NAKED
+void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ mov r12, r0\n\
+ movs r2, 0\n\
+ ldr r1, _080F4978 @ =gUnknown_083DFEC4\n\
+ ldr r5, [r1]\n\
+ ldr r3, _080F497C @ =0x00008fe4\n\
+ adds r0, r5, r3\n\
+ ldrh r4, [r0]\n\
+ lsrs r3, r4, 1\n\
+ mov r8, r1\n\
+ cmp r4, r3\n\
+ beq _080F499C\n\
+ adds r6, r5, 0\n\
+ mov r0, r12\n\
+ ldrb r5, [r0]\n\
+ ldr r7, _080F4980 @ =0x0000893c\n\
+_080F4968:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r6, r0\n\
+ adds r0, r7\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ bls _080F4984\n\
+ adds r4, r3, 0\n\
+ b _080F498A\n\
+ .align 2, 0\n\
+_080F4978: .4byte gUnknown_083DFEC4\n\
+_080F497C: .4byte 0x00008fe4\n\
+_080F4980: .4byte 0x0000893c\n\
+_080F4984:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+_080F498A:\n\
+ subs r0, r4, r2\n\
+ lsrs r1, r0, 31\n\
+ adds r0, r1\n\
+ asrs r0, 1\n\
+ adds r0, r2, r0\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r4, r3\n\
+ bne _080F4968\n\
+_080F499C:\n\
+ mov r1, r8\n\
+ ldr r2, [r1]\n\
+ ldr r1, _080F49EC @ =0x00008fe4\n\
+ adds r0, r2, r1\n\
+ ldrh r4, [r0]\n\
+ lsls r6, r3, 2\n\
+ cmp r4, r3\n\
+ bls _080F49C6\n\
+ ldr r0, _080F49F0 @ =0x0000893c\n\
+ adds r5, r2, r0\n\
+_080F49B0:\n\
+ lsls r2, r4, 2\n\
+ adds r2, r5, r2\n\
+ subs r1, r4, 0x1\n\
+ lsls r0, r1, 2\n\
+ adds r0, r5, r0\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ lsls r1, 16\n\
+ lsrs r4, r1, 16\n\
+ cmp r4, r3\n\
+ bhi _080F49B0\n\
+_080F49C6:\n\
+ mov r1, r8\n\
+ ldr r2, [r1]\n\
+ ldr r3, _080F49F0 @ =0x0000893c\n\
+ adds r0, r2, r3\n\
+ adds r0, r6\n\
+ mov r3, r12\n\
+ ldr r1, [r3]\n\
+ str r1, [r0]\n\
+ ldr r0, _080F49EC @ =0x00008fe4\n\
+ adds r2, r0\n\
+ ldrh r0, [r2]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F49EC: .4byte 0x00008fe4\n\
+_080F49F0: .4byte 0x0000893c\n\
.syntax divided\n");
}
#endif // NONMATCHING
+
+void sub_80F49F4(void)
+{
+ u16 i;
+
+ gUnknown_083DFEC4->unk893c[0].unk2 = 1;
+ for (i = 1; i < gUnknown_083DFEC4->unk8FE4; i++)
+ {
+ if (gUnknown_083DFEC4->unk893c[i].unk0 == gUnknown_083DFEC4->unk893c[i - 1].unk0)
+ gUnknown_083DFEC4->unk893c[i].unk2 = gUnknown_083DFEC4->unk893c[i - 1].unk2;
+ else
+ gUnknown_083DFEC4->unk893c[i].unk2 = i + 1;
+ }
+
+ gUnknown_083DFEC4->unk876C = 0;
+ gUnknown_083DFEC4->unk8770 = 0;
+ gUnknown_083DFEC4->unk876E = 0;
+ gUnknown_083DFEC4->unk8772 = gUnknown_083DFEC4->unk8FE4 < 9 ? (gUnknown_083DFEC4->unk8FE4 - 1) : 7;
+ gUnknown_083DFEC4->unk8774 = gUnknown_083DFEC4->unk8FE4 - 1;
+ gUnknown_083DFEC4->unk87C9 = gUnknown_083DFEC4->unk8774 > 7;
+}
+
+void sub_80F4B20(void)
+{
+ s16 var0;
+ s16 var1;
+
+ sub_80F4900(gUnknown_083DFEC4->unk87DC, 0);
+ sub_80F2E18(0);
+ if (gUnknown_083DFEC4->unk87DA == 1)
+ {
+ gUnknown_083DFEC4->unk8fe9 = 0;
+ gUnknown_083DFEC4->unk8FEA = 0;
+ gUnknown_083DFEC4->unk8FEB = 0;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk8fe9 = 0;
+ gUnknown_083DFEC4->unk8FEA = 1;
+ gUnknown_083DFEC4->unk8FEB = 2;
+
+ var0 = gUnknown_083DFEC4->unk87DC + 1;
+ if (var0 >= gUnknown_083DFEC4->unk87DA)
+ var0 = 0;
+
+ var1 = gUnknown_083DFEC4->unk87DC - 1;
+ if (var1 < 0)
+ var1 = gUnknown_083DFEC4->unk87DA - 1;
+
+ sub_80F4900(var0, 1);
+ sub_80F4900(var1, 2);
+ }
+}
+
+void sub_80F4BD0(void)
+{
+ u16 i, j;
+
+ for (i = 0, j = 0; i < gUnknown_083DFEC4->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ gUnknown_083DFEC4->unk893c[j].unk1 = 14;
+ gUnknown_083DFEC4->unk893c[j].partyIdx = i;
+ gUnknown_083DFEC4->unk893c[j].unk2 = j + 1;
+ gUnknown_083DFEC4->unk893c[j].unk4 = 1;
+ j++;
+ }
+ }
+
+ gUnknown_083DFEC4->unk893c[j].unk1 = 0;
+ gUnknown_083DFEC4->unk893c[j].partyIdx = 0;
+ gUnknown_083DFEC4->unk893c[j].unk2 = 0;
+ gUnknown_083DFEC4->unk893c[j].unk4 = 0;
+ gUnknown_083DFEC4->unk87DC = 0;
+ gUnknown_083DFEC4->unk87DA = j + 1;
+ sub_80F4B20();
+ gUnknown_083DFEC4->unk87CB = 1;
+}
+
+static void sub_80F4CF0(void)
+{
+ gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk876E;
+ sub_80F4B20();
+
+ if (gUnknown_083DFEC4->unk8774 == 0)
+ gUnknown_083DFEC4->unk87CB = 0;
+ else
+ gUnknown_083DFEC4->unk87CB = 1;
+}
+
+static void sub_80F4D44(void)
+{
+ gUnknown_083DFEC4->unk8FE6 = 0;
+ gUnknown_083DFEC4->unk8FE7 = 0;
+ sub_80F492C();
+
+ if (!gUnknown_083DFEC4->unk6DAC)
+ while (sub_80F4D88());
+}
+
+static bool8 sub_80F4D88(void)
+{
+ u16 i;
+ register int mask asm("r3"); // FIXME
+ int nextValue;
+ struct UnkUsePokeblockSub var0;
+
+ switch (gUnknown_083DFEC4->unk8FE6)
+ {
+ default:
+ var0.unk4 = 1;
+ for (i = 0; i < 15; i++)
+ {
+
+ if (GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_SPECIES)
+ && !GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_IS_EGG))
+ {
+ var0.unk1 = gUnknown_083DFEC4->unk8FE6;
+ var0.partyIdx = gUnknown_083DFEC4->unk8FE7;
+ var0.unk0 = GetBoxMonData(
+ &gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7],
+ gUnknown_083DFEC4->unk87D8);
+ sub_80F4944(&var0);
+ }
+
+ gUnknown_083DFEC4->unk8FE7++;
+ mask = 0xFF;
+ if (gUnknown_083DFEC4->unk8FE7 == 30)
+ {
+ gUnknown_083DFEC4->unk8FE7 = 0;
+ nextValue = gUnknown_083DFEC4->unk8FE6 + 1;
+ gUnknown_083DFEC4->unk8FE6 = nextValue;
+ if ((nextValue & mask) == 14)
+ break;
+ }
+ }
+ break;
+ case 14:
+ var0.unk4 = 1;
+ var0.unk1 = 14;
+ for (i = 0; i < gUnknown_083DFEC4->unk8828; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ var0.partyIdx = i;
+ var0.unk0 = GetMonData(&gPlayerParty[i], gUnknown_083DFEC4->unk87D8);
+ sub_80F4944(&var0);
+ }
+ }
+
+ sub_80F49F4();
+ gUnknown_083DFEC4->unk87DA = gUnknown_083DFEC4->unk8FE4;
+ gUnknown_083DFEC4->unk8FE6++;
+ break;
+ case 15:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F4F78(void)
+{
+ sub_80F53EC(gUnknown_083DFEC4->unk9040, gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9]);
+ sub_80F5504();
+}
+
+bool8 sub_80F4FB4(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F170C();
+ return var0 || var1;
+}
+
+void sub_80F4FDC(void)
+{
+ if (gUnknown_083DFEC4->unk76AA || gUnknown_083DFEC4->unk87DC != gUnknown_083DFEC4->unk8828)
+ sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040);
+}
+
+bool8 sub_80F5038(void)
+{
+ bool8 var0 = sub_80F5504();
+ bool8 var1 = sub_80F173C();
+ return var0 || var1;
+}
+
+void sub_80F5060(u8 arg0)
+{
+ u16 var0;
+ u8 var1;
+ u8 var2;
+
+ if (arg0)
+ var0 = gUnknown_083DFEC4->unk8FEB;
+ else
+ var0 = gUnknown_083DFEC4->unk8FEA;
+
+ sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9004[var0]);
+ var1 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
+ if (arg0)
+ {
+ gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8FEA;
+ gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8fe9;
+ gUnknown_083DFEC4->unk8fe9 = var0;
+ gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEB;
+
+ gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk87DC
+ ? gUnknown_083DFEC4->unk87DC - 1
+ : gUnknown_083DFEC4->unk87DA - 1;
+ gUnknown_083DFEC4->unk8FEE = gUnknown_083DFEC4->unk87DC
+ ? gUnknown_083DFEC4->unk87DC - 1
+ : gUnknown_083DFEC4->unk87DA - 1;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8FEB;
+ gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8fe9;
+ gUnknown_083DFEC4->unk8fe9 = var0;
+ gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEA;
+
+ gUnknown_083DFEC4->unk87DC = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
+ ? gUnknown_083DFEC4->unk87DC + 1
+ : 0;
+ gUnknown_083DFEC4->unk8FEE = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1)
+ ? gUnknown_083DFEC4->unk87DC + 1
+ : 0;
+ }
+
+ var2 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4;
+ if (!var1)
+ gUnknown_083DFEC4->unk87E0 = sub_80F5264;
+ else if (!var2)
+ gUnknown_083DFEC4->unk87E0 = sub_80F52F8;
+ else
+ gUnknown_083DFEC4->unk87E0 = sub_80F5364;
+
+ gUnknown_083DFEC4->unk87DE = 0;
+}
+
+bool8 gpu_sync_bg_show(void)
+{
+ return gUnknown_083DFEC4->unk87E0();
+}
+
+static bool8 sub_80F5264(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ gUnknown_083DFEC4->unk87DE++;
+ // fall through
+ case 1:
+ if (!sub_80F4FB4())
+ {
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F52F8(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ if (!sub_80F5038())
+ {
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_80F5364(void)
+{
+ switch (gUnknown_083DFEC4->unk87DE)
+ {
+ case 0:
+ sub_80F5504();
+ if (!sub_80F173C())
+ {
+ sub_80F2E18(gUnknown_083DFEC4->unk8fe9);
+ sub_80F01E0(gUnknown_083DFEC4->unk8fe9);
+ gUnknown_083DFEC4->unk87DE++;
+ }
+ break;
+ case 1:
+ if (!sub_80F4FB4())
+ gUnknown_083DFEC4->unk87DE++;
+ break;
+ case 2:
+ sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ u16 i, j;
+ int r5;
+ int r6;
+
+ for (i = 0; i < 5; i++)
+ {
+ r5 = arg0[i].unk0 << 8;
+ r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gUnknown_083DFEC4->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gUnknown_083DFEC4->unk9054[j][i].unk0 = arg1[i].unk0;
+ r5 = arg0[i].unk2 << 8;
+ r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ gUnknown_083DFEC4->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+
+ gUnknown_083DFEC4->unk9054[j][i].unk2 = arg1[i].unk2;
+ }
+
+ gUnknown_083DFEC4->unk9342 = 0;
+}
+
+static bool8 sub_80F5504(void)
+{
+ if (gUnknown_083DFEC4->unk9342 < 10)
+ {
+ sub_80F556C(gUnknown_083DFEC4->unk9054[gUnknown_083DFEC4->unk9342++]);
+ return gUnknown_083DFEC4->unk9342 != 10;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1)
+{
+ sub_80F53EC(arg0, arg1);
+}
+
+bool8 sub_80F555C(void)
+{
+ return sub_80F5504();
+}
+
+void sub_80F556C(struct UnkPokenav11 *arg0)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ gUnknown_083DFEC4->unk911C[i] = arg0[i];
+
+ gUnknown_083DFEC4->unk9344 = 1;
+}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 50ef21139..374e73d2e 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -36,8 +36,8 @@ static u8 gUnknown_0300071C[4];
void *recordMixingSecretBases = &gSaveBlock1.secretBases;
void *recordMixingTvShows = &gSaveBlock1.tvShows;
-void *gUnknown_083D0274 = &gSaveBlock1.pokeNews;
-void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan;
+void *recordMixingPokeNews = &gSaveBlock1.pokeNews;
+void *recordMixingMauvilleMan = &gSaveBlock1.mauvilleMan;
void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs;
struct RecordMixingDayCareMail *gDayCareMailPlayerRecord = &gDayCareMailRecord;
struct BattleTowerRecord *gBattleTowerPlayerRecord = &gSaveBlock2.battleTower.playerRecord;
@@ -51,10 +51,10 @@ void sub_80B929C(void)
struct PlayerRecords
{
- struct SecretBaseRecord secretBases[20];
- TVShow tvShows[25];
- u8 filler1004[0x40];
- u8 filler1044[0x40];
+ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ TVShow tvShows[TV_SHOWS_COUNT];
+ struct PokeNews pokeNews[POKE_NEWS_COUNT];
+ union MauvilleMan mauvilleMan;
struct EasyChatPair easyChatPairs[5];
struct RecordMixingDayCareMail daycareMailRecord;
struct BattleTowerRecord battleTowerRecord;
@@ -68,8 +68,8 @@ void RecordMixing_PrepareExchangePacket(void)
memcpy(ewram_2018000.secretBases, recordMixingSecretBases, sizeof(ewram_2018000.secretBases));
memcpy(ewram_2018000.tvShows, recordMixingTvShows, sizeof(ewram_2018000.tvShows));
- memcpy(ewram_2018000.filler1004, gUnknown_083D0274, sizeof(ewram_2008000.filler1004));
- memcpy(ewram_2018000.filler1044, gUnknown_083D0278, sizeof(ewram_2008000.filler1044));
+ memcpy(ewram_2018000.pokeNews, recordMixingPokeNews, sizeof(ewram_2008000.pokeNews));
+ memcpy(&ewram_2018000.mauvilleMan, recordMixingMauvilleMan, sizeof(ewram_2008000.mauvilleMan));
memcpy(ewram_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(ewram_2018000.easyChatPairs));
gDayCareMailRecord.mail[0] = gSaveBlock1.daycare.misc.mail[0];
gDayCareMailRecord.mail[1] = gSaveBlock1.daycare.misc.mail[1];
@@ -85,8 +85,8 @@ void RecordMixing_ReceiveExchangePacket(u32 a)
{
sub_80BD674(ewram_2008000.secretBases, sizeof(struct PlayerRecords), a);
sub_80BFD44((u8 *)ewram_2008000.tvShows, sizeof(struct PlayerRecords), a);
- sub_80C0514(ewram_2008000.filler1004, sizeof(struct PlayerRecords), a);
- sub_80B9B1C(ewram_2008000.filler1044, sizeof(struct PlayerRecords), a);
+ sub_80C0514(ewram_2008000.pokeNews, sizeof(struct PlayerRecords), a);
+ sub_80B9B1C((u8 *)&ewram_2008000.mauvilleMan, sizeof(struct PlayerRecords), a);
sub_80FA4E4(ewram_2008000.easyChatPairs, sizeof(struct PlayerRecords), a);
sub_80B9C6C((u8 *)&ewram_2008000.daycareMailRecord, sizeof(struct PlayerRecords), a, ewram_2008000.tvShows);
sub_80B9B70(&ewram_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a);
@@ -439,7 +439,7 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index)
sub_80B9A88(arr);
//Probably not how it was originally written, but this matches.
- memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40);
+ memcpy(a + index * size, (ptr = recordMixingMauvilleMan), 0x40);
memcpy(ptr, a + arr[index] * size, 0x40);
sub_80F7F30();
}
diff --git a/src/region_map.c b/src/region_map.c
index 74062f435..e9ae4599a 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -19,6 +19,8 @@
#include "text.h"
#include "trig.h"
#include "ewram.h"
+#include "heal_location.h"
+#include "constants/heal_locations.h"
#define MAP_WIDTH 28
#define MAP_HEIGHT 15
@@ -1260,58 +1262,58 @@ static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map
static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
-static const u8 sUnknown_083E7920[][3] =
-{
- {0, 9, 1},
- {0, 10, 14},
- {0, 11, 15},
- {0, 12, 16},
- {0, 13, 17},
- {0, 14, 18},
- {0, 15, 19},
- {0, 0, 3},
- {0, 1, 4},
- {0, 2, 5},
- {0, 3, 6},
- {0, 4, 7},
- {0, 5, 8},
- {0, 6, 9},
- {0, 7, 10},
- {0, 8, 11},
- {0, 16, 0},
- {0, 17, 0},
- {0, 18, 0},
- {0, 19, 0},
- {0, 20, 0},
- {0, 21, 0},
- {0, 22, 0},
- {0, 23, 0},
- {0, 24, 0},
- {0, 25, 0},
- {0, 26, 0},
- {0, 27, 0},
- {0, 28, 0},
- {0, 29, 0},
- {0, 30, 0},
- {0, 31, 0},
- {0, 32, 0},
- {0, 33, 0},
- {0, 34, 0},
- {0, 35, 0},
- {0, 36, 0},
- {0, 37, 0},
- {0, 38, 0},
- {0, 39, 0},
- {0, 40, 0},
- {0, 41, 0},
- {0, 42, 0},
- {0, 43, 0},
- {0, 44, 0},
- {0, 45, 0},
- {0, 46, 0},
- {0, 47, 0},
- {0, 48, 0},
- {0, 49, 0},
+static const u8 sMapHealLocations[][3] =
+{
+ {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F},
+ {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN},
+ {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN},
+ {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), HEAL_LOCATION_LAVARIDGE_TOWN},
+ {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), HEAL_LOCATION_FALLARBOR_TOWN},
+ {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), HEAL_LOCATION_VERDANTURF_TOWN},
+ {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), HEAL_LOCATION_PACIFIDLOG_TOWN},
+ {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), HEAL_LOCATION_PETALBURG_CITY},
+ {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), HEAL_LOCATION_SLATEPORT_CITY},
+ {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), HEAL_LOCATION_MAUVILLE_CITY},
+ {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), HEAL_LOCATION_RUSTBORO_CITY},
+ {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), HEAL_LOCATION_FORTREE_CITY},
+ {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY},
+ {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY},
+ {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY},
+ {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY_1},
+ {MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), 0},
+ {MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), 0},
+ {MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), 0},
+ {MAP_GROUP(ROUTE104), MAP_NUM(ROUTE104), 0},
+ {MAP_GROUP(ROUTE105), MAP_NUM(ROUTE105), 0},
+ {MAP_GROUP(ROUTE106), MAP_NUM(ROUTE106), 0},
+ {MAP_GROUP(ROUTE107), MAP_NUM(ROUTE107), 0},
+ {MAP_GROUP(ROUTE108), MAP_NUM(ROUTE108), 0},
+ {MAP_GROUP(ROUTE109), MAP_NUM(ROUTE109), 0},
+ {MAP_GROUP(ROUTE110), MAP_NUM(ROUTE110), 0},
+ {MAP_GROUP(ROUTE111), MAP_NUM(ROUTE111), 0},
+ {MAP_GROUP(ROUTE112), MAP_NUM(ROUTE112), 0},
+ {MAP_GROUP(ROUTE113), MAP_NUM(ROUTE113), 0},
+ {MAP_GROUP(ROUTE114), MAP_NUM(ROUTE114), 0},
+ {MAP_GROUP(ROUTE115), MAP_NUM(ROUTE115), 0},
+ {MAP_GROUP(ROUTE116), MAP_NUM(ROUTE116), 0},
+ {MAP_GROUP(ROUTE117), MAP_NUM(ROUTE117), 0},
+ {MAP_GROUP(ROUTE118), MAP_NUM(ROUTE118), 0},
+ {MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119), 0},
+ {MAP_GROUP(ROUTE120), MAP_NUM(ROUTE120), 0},
+ {MAP_GROUP(ROUTE121), MAP_NUM(ROUTE121), 0},
+ {MAP_GROUP(ROUTE122), MAP_NUM(ROUTE122), 0},
+ {MAP_GROUP(ROUTE123), MAP_NUM(ROUTE123), 0},
+ {MAP_GROUP(ROUTE124), MAP_NUM(ROUTE124), 0},
+ {MAP_GROUP(ROUTE125), MAP_NUM(ROUTE125), 0},
+ {MAP_GROUP(ROUTE126), MAP_NUM(ROUTE126), 0},
+ {MAP_GROUP(ROUTE127), MAP_NUM(ROUTE127), 0},
+ {MAP_GROUP(ROUTE128), MAP_NUM(ROUTE128), 0},
+ {MAP_GROUP(ROUTE129), MAP_NUM(ROUTE129), 0},
+ {MAP_GROUP(ROUTE130), MAP_NUM(ROUTE130), 0},
+ {MAP_GROUP(ROUTE131), MAP_NUM(ROUTE131), 0},
+ {MAP_GROUP(ROUTE132), MAP_NUM(ROUTE132), 0},
+ {MAP_GROUP(ROUTE133), MAP_NUM(ROUTE133), 0},
+ {MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), 0},
};
static const u8 *const sEverGrandeCityAreaNames[] =
@@ -1717,22 +1719,22 @@ void sub_80FC69C(void)
switch (sFlyDataPtr->regionMap.mapSectionId)
{
case MAPSEC_SOUTHERN_ISLAND:
- sub_8053538(22);
+ sub_8053538(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
break;
case MAPSEC_BATTLE_TOWER:
- sub_8053538(21);
+ sub_8053538(HEAL_LOCATION_BATTLE_TOWER_OUTSIDE);
break;
case MAPSEC_LITTLEROOT_TOWN:
- sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13);
+ sub_8053538((gSaveBlock2.playerGender == MALE) ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2);
break;
case MAPSEC_EVER_GRANDE_CITY:
- sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11);
+ sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1);
break;
default:
- if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0)
- sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]);
+ if (sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2] != 0)
+ sub_8053538(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2]);
else
- warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1);
+ warp1_set_2(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][0], sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][1], -1);
break;
}
sub_80865BC();
diff --git a/src/tv.c b/src/tv.c
index fd6b7c62f..68694c058 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -432,7 +432,7 @@ void ClearTVShowData(void)
{
u8 showidx;
u8 extradataidx;
- for (showidx=0; showidx<25; showidx++) {
+ for (showidx=0; showidx<TV_SHOWS_COUNT; showidx++) {
gSaveBlock1.tvShows[showidx].common.kind = 0;
gSaveBlock1.tvShows[showidx].common.active = 0;
for (extradataidx=0; extradataidx<34; extradataidx++) {
@@ -1341,7 +1341,7 @@ int sub_80BEBC8(struct PokeNews *pokeNews)
{
s8 i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (pokeNews[i].kind == 0)
return i;
@@ -1353,7 +1353,7 @@ void sub_80BEBF4(void)
{
u8 i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
sub_80BEC10(i);
}
@@ -1372,7 +1372,7 @@ void sub_80BEC40(void)
{
if (gSaveBlock1.pokeNews[i].kind == 0)
{
- for (j = i + 1; j < 16; j++)
+ for (j = i + 1; j < POKE_NEWS_COUNT; j++)
{
if (gSaveBlock1.pokeNews[j].kind != 0)
{
@@ -1388,7 +1388,7 @@ void sub_80BEC40(void)
u8 FindAnyTVNewsOnTheAir(void)
{
u8 i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1.pokeNews[i].kind != 0
&& gSaveBlock1.pokeNews[i].state == 1
@@ -1432,7 +1432,7 @@ bool8 GetPriceReduction(u8 arg0)
if (arg0 == 0)
return FALSE;
- for (i=0; i<16; i++)
+ for (i=0; i<POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1.pokeNews[i].kind == arg0)
{
@@ -1475,7 +1475,7 @@ bool8 sub_80BEE48(u8 arg0)
if (arg0 == 0)
return TRUE;
- for (i=0; i<16; i++)
+ for (i=0; i<POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1.pokeNews[i].kind == arg0)
return TRUE;
@@ -1487,7 +1487,7 @@ void sub_80BEE84(u16 var0)
{
u8 i;
- for (i=0; i<16; i++)
+ for (i=0; i<POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1.pokeNews[i].kind)
{
@@ -2189,11 +2189,11 @@ void sub_80BFD20(void)
typedef union ewramStruct_02007000
{
- TVShow tvshows[4][25];
- struct PokeNews pokeNews[4][16];
+ TVShow tvshows[4][TV_SHOWS_COUNT];
+ struct PokeNews pokeNews[4][POKE_NEWS_COUNT];
} ewramStruct_02007000;
-void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]);
+void sub_80BFE24(TVShow arg0[TV_SHOWS_COUNT], TVShow arg1[TV_SHOWS_COUNT], TVShow arg2[TV_SHOWS_COUNT], TVShow arg3[TV_SHOWS_COUNT]);
void sub_80C04A0(void);
void sub_80C01D4(void);
@@ -2205,7 +2205,7 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
ewramStruct_02007000 *ewramTVShows;
for (i = 0; i < 4; i++)
- memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow));
+ memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], TV_SHOWS_COUNT * sizeof(TVShow));
ewramTVShows = &gUnknown_02007000;
switch (arg2)
{
@@ -2230,12 +2230,12 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
}
s8 sub_80C019C(TVShow tvShows[]);
-bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx);
+bool8 sub_80BFF68(TVShow * tv1[TV_SHOWS_COUNT], TVShow * tv2[TV_SHOWS_COUNT], u8 idx);
u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx);
u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx);
u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx);
-void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25])
+void sub_80BFE24(TVShow arg0[TV_SHOWS_COUNT], TVShow arg1[TV_SHOWS_COUNT], TVShow arg2[TV_SHOWS_COUNT], TVShow arg3[TV_SHOWS_COUNT])
{
u8 i, j;
TVShow **argslist[4];
@@ -2274,7 +2274,7 @@ void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[
}
}
-bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx)
+bool8 sub_80BFF68(TVShow * arg1[TV_SHOWS_COUNT], TVShow * arg2[TV_SHOWS_COUNT], u8 idx)
{
u8 value;
u8 switchval;
@@ -2677,11 +2677,11 @@ void sub_80C04A0(void)
sub_80BF55C(gSaveBlock1.tvShows, showIdx+5);
}
-void sub_80C05C4(struct PokeNews[16], struct PokeNews[16], struct PokeNews[16], struct PokeNews[16]);
+void sub_80C05C4(struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT]);
void sub_80C0750(void);
void sub_80C0788(void);
-s8 sub_80C0730(struct PokeNews[16], u8);
-void sub_80C06BC(struct PokeNews *[16], struct PokeNews *[16]);
+s8 sub_80C0730(struct PokeNews[POKE_NEWS_COUNT], u8);
+void sub_80C06BC(struct PokeNews *[POKE_NEWS_COUNT], struct PokeNews *[POKE_NEWS_COUNT]);
void sub_80C0514(void *a0, u32 a1, u8 a2)
{
@@ -2710,7 +2710,7 @@ void sub_80C0514(void *a0, u32 a1, u8 a2)
sub_80C0788();
}
-void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews a2[16], struct PokeNews a3[16])
+void sub_80C05C4(struct PokeNews a0[POKE_NEWS_COUNT], struct PokeNews a1[POKE_NEWS_COUNT], struct PokeNews a2[POKE_NEWS_COUNT], struct PokeNews a3[POKE_NEWS_COUNT])
{
u8 i;
u8 j;
@@ -2722,7 +2722,7 @@ void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews
arglist[2] = &a2;
arglist[3] = &a3;
gUnknown_03000721 = GetLinkPlayerCount();
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
for (j = 0; j < gUnknown_03000721; j++)
{
@@ -2740,7 +2740,7 @@ void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews
}
}
-void sub_80C06BC(struct PokeNews *arg0[16], struct PokeNews *arg1[16])
+void sub_80C06BC(struct PokeNews *arg0[POKE_NEWS_COUNT], struct PokeNews *arg1[POKE_NEWS_COUNT])
{
struct PokeNews *str0;
struct PokeNews *str1;
@@ -2757,7 +2757,7 @@ bool8 sub_80C06E8(struct PokeNews *arg0, struct PokeNews *arg1, s8 arg2)
if (arg1->kind == 0)
return FALSE;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (arg0[i].kind == arg1->kind)
return FALSE;
@@ -2779,7 +2779,7 @@ void sub_80C0750(void)
{
u8 i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1.pokeNews[i].kind > 3)
sub_80BEC10(i);
@@ -2793,7 +2793,7 @@ void sub_80C0788(void)
if (FlagGet(FLAG_SYS_GAME_CLEAR) != 1)
{
- for (i = 0; i < 16; i++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
gSaveBlock1.pokeNews[i].state = 0;
}
}
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index bdf6f4a44..c8506fbcf 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -141,7 +141,7 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
gUnknown_02039304 = &gUnknown_083DFEC4->unkD164;
gUnknown_02039304->pokeblock = pokeblock;
gUnknown_02039304->callback = callback;
- gUnknown_083DFEC4->unkD162[0] = 2;
+ gUnknown_083DFEC4->unkD162 = 2;
launch_c3_walk_stairs_and_run_once(sub_8136294);
SetMainCallback2(sub_8136244);
}
@@ -152,7 +152,7 @@ static void sub_8136174(void)
gUnknown_02039304->callback = gUnknown_02039308;
gPokeblockMonID = sub_81370E4(gPokeblockMonID);
gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1;
- gUnknown_083DFEC4->unkD162[0] = 2;
+ gUnknown_083DFEC4->unkD162 = 2;
launch_c3_walk_stairs_and_run_once(sub_8136294);
SetMainCallback2(sub_81361E4);
}
@@ -243,7 +243,7 @@ static void sub_8136294(void)
case 6:
gUnknown_083DFEC4->unk76AA = 0;
gUnknown_083DFEC4->unk87E0 = NULL;
- gUnknown_083DFEC4->unk030C.val = 0x20;
+ gUnknown_083DFEC4->unk030C = 0x20;
gUnknown_02039304->unk50++;
break;
case 7:
@@ -285,7 +285,7 @@ static void sub_8136294(void)
break;
case 13:
sub_80F2E18(0);
- gUnknown_083DFEC4->unk8768->unk26 = 0xffd8;
+ gUnknown_083DFEC4->unk8768->pos2.y = 0xffd8;
gUnknown_02039304->unk50++;
break;
case 14:
@@ -317,7 +317,7 @@ static void sub_8136294(void)
}
break;
case 19:
- sub_80F556C(gUnknown_083DFEC4->unk9004);
+ sub_80F556C(gUnknown_083DFEC4->unk9004[0]);
gUnknown_02039304->unk50++;
break;
case 20: