summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_8170478.s5832
-rw-r--r--asm/battle_intro.s2035
-rw-r--r--asm/contest_painting.s1197
-rw-r--r--asm/contest_painting_effects.s (renamed from asm/cute_sketch.s)0
-rwxr-xr-xcommon_syms/battle_anim_8170478.txt3
-rw-r--r--data/battle_anim_8170478.s157
-rw-r--r--data/contest_painting.s106
-rw-r--r--data/contest_painting_effects.s (renamed from data/cute_sketch.s)0
-rw-r--r--data/data2c.s5
-rw-r--r--data/event_scripts.s16
-rw-r--r--include/battle.h3
-rw-r--r--include/battle_anim.h20
-rw-r--r--include/battle_tower.h2
-rw-r--r--include/contest.h1
-rw-r--r--include/contest_painting.h13
-rwxr-xr-xinclude/contest_painting_effects.h28
-rw-r--r--include/event_scripts.h16
-rw-r--r--include/gba/types.h4
-rw-r--r--include/global.h12
-rw-r--r--include/graphics.h6
-rw-r--r--include/item_menu.h19
-rw-r--r--include/pokemon.h6
-rw-r--r--include/strings.h1
-rw-r--r--ld_script.txt13
-rw-r--r--src/battle_anim.c2
-rwxr-xr-xsrc/battle_anim_8170478.c2267
-rw-r--r--src/battle_anim_utility_funcs.c8
-rw-r--r--src/battle_intro.c741
-rw-r--r--src/battle_main.c4
-rw-r--r--src/battle_tower.c2
-rw-r--r--src/contest_painting.c711
-rw-r--r--src/easy_chat.c3
-rw-r--r--src/item.c2
-rwxr-xr-xsrc/item_menu.c172
-rw-r--r--src/item_menu_icons.c32
-rwxr-xr-xsrc/item_use.c13
-rw-r--r--src/mauville_old_man.c16
-rw-r--r--src/pokeball.c12
-rw-r--r--src/pokemon.c18
-rw-r--r--src/record_mixing.c4
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c2
-rw-r--r--sym_common.txt13
-rw-r--r--sym_ewram.txt15
43 files changed, 3955 insertions, 9577 deletions
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
deleted file mode 100644
index c0881e682..000000000
--- a/asm/battle_anim_8170478.s
+++ /dev/null
@@ -1,5832 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8170478
-sub_8170478: @ 8170478
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- ldr r0, =gBattleAnimAttacker
- ldrb r4, [r0]
- ldr r0, =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- ldr r1, =0x00003f3f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f3d
- movs r0, 0x4A
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 8
- movs r0, 0
- bl SetGpuRegBits
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x1
- bl SetAnimBgAttribute
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- bl SetAnimBgAttribute
- ldr r0, =gHealthboxSpriteIds
- adds r4, r0
- ldrb r0, [r4]
- ldr r1, =gSprites
- mov r9, r1
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- add r4, r9
- ldrb r7, [r4, 0x6]
- ldrh r6, [r4, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r0, =SpriteCallbackDummy
- bl CreateInvisibleSpriteWithCallback
- mov r10, r0
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrb r1, [r4, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x4
- mov r8, r1
- mov r2, r8
- orrs r0, r2
- strb r0, [r4, 0x5]
- lsls r5, r7, 4
- adds r5, r7
- lsls r5, 2
- add r5, r9
- ldrb r1, [r5, 0x5]
- adds r0, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r9
- ldrb r2, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [sp, 0x14]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- mov r1, r9
- adds r7, r6, r1
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x44
- str r3, [sp, 0x18]
- bl memcpy
- mov r2, r10
- lsls r4, r2, 4
- add r4, r10
- lsls r4, 2
- adds r0, r4, 0
- add r0, r9
- mov r8, r0
- adds r1, r5, 0
- movs r2, 0x44
- bl memcpy
- ldrb r1, [r7, 0x1]
- ldr r3, [sp, 0x18]
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r7, 0x1]
- mov r2, r8
- ldrb r0, [r2, 0x1]
- ands r3, r0
- orrs r3, r1
- strb r3, [r2, 0x1]
- movs r0, 0x1C
- add r9, r0
- add r6, r9
- ldr r1, =SpriteCallbackDummy
- str r1, [r6]
- add r4, r9
- str r1, [r4]
- mov r0, sp
- bl sub_80A6B30
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2EA9C
- bl sub_80A6D48
- mov r0, sp
- ldrb r0, [r0, 0x9]
- ldr r1, =gUnknown_08C2EA50
- mov r2, sp
- ldrh r2, [r2, 0xA]
- bl sub_80A6CC0
- ldr r0, =gUnknown_08C2DDA4
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r7, 0x20]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r1]
- ldr r1, =gBattle_BG1_Y
- ldrh r0, [r7, 0x22]
- negs r0, r0
- subs r0, 0x20
- strh r0, [r1]
- ldr r1, =gTasks
- ldr r2, [sp, 0x10]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA0
- lsls r1, 2
- strh r1, [r0, 0xA]
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0x8]
- mov r2, r10
- strh r2, [r0, 0xC]
- ldr r1, =sub_8170660
- str r1, [r0]
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170478
-
- thumb_func_start sub_8170660
-sub_8170660: @ 8170660
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrh r1, [r5, 0xA]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- movs r3, 0
- strh r1, [r5, 0x22]
- ldr r2, =gBattle_BG1_Y
- lsls r0, r1, 16
- lsrs r0, 24
- ldrh r4, [r2]
- adds r0, r4
- strh r0, [r2]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x22]
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _081706F0
- cmp r0, 0x1
- bgt _081706B4
- cmp r0, 0
- beq _081706BA
- b _08170814
- .pool
-_081706B4:
- cmp r0, 0x2
- beq _08170708
- b _08170814
-_081706BA:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _081706CA
- b _08170814
-_081706CA:
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- adds r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r2, 0x20
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- beq _081706EE
- b _08170814
-_081706EE:
- b _08170700
-_081706F0:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- beq _08170700
- b _08170814
-_08170700:
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- b _08170814
-_08170708:
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08170814
- strh r3, [r5, 0x1E]
- ldrh r1, [r5, 0x20]
- subs r1, 0x1
- strh r1, [r5, 0x20]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x20
- ldrsh r4, [r5, r0]
- cmp r4, 0
- bne _08170814
- movs r0, 0
- bl sub_80A477C
- ldr r0, =gBattle_WIN0H
- strh r4, [r0]
- ldr r0, =gBattle_WIN0V
- strh r4, [r0]
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0817076C
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl SetAnimBgAttribute
-_0817076C:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- eors r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r4, 0x8
- ldrsh r1, [r5, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r6, =gSprites
- adds r0, r6
- bl DestroySprite
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetAnimBgAttribute
- ldr r0, =gHealthboxSpriteIds
- add r0, r8
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x6]
- mov r8, r2
- ldrh r4, [r1, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldrb r3, [r1, 0x5]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r5, 0x4
- orrs r0, r5
- strb r0, [r1, 0x5]
- mov r0, r8
- lsls r1, r0, 4
- add r1, r8
- lsls r1, 2
- adds r1, r6
- ldrb r3, [r1, 0x5]
- adds r0, r2, 0
- ands r0, r3
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- ands r2, r1
- orrs r2, r5
- strb r2, [r0, 0x5]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08170814:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170660
-
- thumb_func_start sub_8170834
-sub_8170834: @ 8170834
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gHealthboxSpriteIds
- adds r2, r0
- ldrb r0, [r2]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, =gSprites
- adds r5, r0
- ldrb r1, [r5, 0x6]
- mov r10, r1
- ldrh r4, [r5, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =0x0000d709
- bl AllocSpritePalette
- mov r2, r9
- strb r0, [r2]
- ldr r0, =0x0000d70a
- bl AllocSpritePalette
- strb r0, [r7]
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r3, r1, 0
- orrs r0, r3
- lsls r6, r4, 4
- adds r6, r4
- lsls r6, 2
- ldr r2, =gSprites
- adds r6, r2
- ldrb r4, [r6, 0x5]
- lsrs r4, 4
- lsls r4, 4
- orrs r4, r3
- lsls r0, 1
- ldr r1, =gPlttBufferUnfaded
- mov r8, r1
- add r0, r8
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r3, r1
- movs r2, 0x20
- str r3, [sp]
- bl LoadPalette
- lsls r4, 1
- add r4, r8
- ldrb r0, [r7]
- lsls r0, 4
- ldr r3, [sp]
- adds r3, r0
- adds r0, r4, 0
- adds r1, r3, 0
- movs r2, 0x20
- bl LoadPalette
- mov r0, r9
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- mov r0, r9
- ldrb r2, [r0]
- lsls r2, 4
- ldrb r4, [r1, 0x5]
- adds r0, r3, 0
- ands r0, r4
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldrb r0, [r7]
- lsls r0, 4
- ldrb r1, [r6, 0x5]
- ands r3, r1
- orrs r3, r0
- strb r3, [r6, 0x5]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170834
-
- thumb_func_start sub_8170920
-sub_8170920: @ 8170920
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- adds r1, 0x1
- ldr r0, =gBattleAnimAttacker
- ldrb r2, [r0]
- mov r0, sp
- bl sub_8170834
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170920
-
- thumb_func_start sub_817094C
-sub_817094C: @ 817094C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gHealthboxSpriteIds
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, =gSprites
- mov r8, r1
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- add r5, r8
- ldrb r0, [r5, 0x6]
- mov r9, r0
- ldrh r6, [r5, 0x38]
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =0x0000d709
- bl FreeSpritePaletteByTag
- ldr r0, =0x0000d70a
- bl FreeSpritePaletteByTag
- ldr r0, =0x0000d6ff
- bl IndexOfSpritePaletteTag
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =0x0000d704
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsls r4, 4
- ldrb r2, [r5, 0x5]
- movs r3, 0xF
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r4
- strb r1, [r5, 0x5]
- mov r1, r9
- lsls r2, r1, 4
- add r2, r9
- lsls r2, 2
- add r2, r8
- ldrb r5, [r2, 0x5]
- adds r1, r3, 0
- ands r1, r5
- orrs r1, r4
- strb r1, [r2, 0x5]
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- add r1, r8
- lsrs r0, 20
- ldrb r2, [r1, 0x5]
- ands r3, r2
- orrs r3, r0
- strb r3, [r1, 0x5]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817094C
-
- thumb_func_start sub_81709EC
-sub_81709EC: @ 81709EC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_817094C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81709EC
-
- thumb_func_start sub_8170A0C
-sub_8170A0C: @ 8170A0C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, =gBattleAnimArgs
- ldrh r0, [r2]
- strh r0, [r1, 0x1C]
- ldrh r0, [r2, 0x2]
- strh r0, [r1, 0x1E]
- ldr r0, =sub_8170A38
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8170A0C
-
- thumb_func_start sub_8170A38
-sub_8170A38: @ 8170A38
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r6, 0
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1E
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _08170AF8
- strh r6, [r4, 0x8]
- ldr r0, =0x0000d709
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- movs r3, 0x1C
- ldrsh r0, [r4, r3]
- movs r1, 0x2
- cmp r0, 0
- bne _08170A76
- movs r1, 0x6
-_08170A76:
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _08170A8C
- cmp r0, 0x1
- beq _08170AC8
- b _08170AF8
- .pool
-_08170A8C:
- ldrh r0, [r4, 0xC]
- adds r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08170A9E
- movs r0, 0x10
- strh r0, [r4, 0xC]
-_08170A9E:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bne _08170AF8
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _08170AF8
- .pool
-_08170AC8:
- ldrh r0, [r4, 0xC]
- subs r0, 0x2
- strh r0, [r4, 0xC]
- lsls r0, 16
- cmp r0, 0
- bge _08170AD6
- strh r6, [r4, 0xC]
-_08170AD6:
- lsls r0, r2, 4
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- orrs r0, r1
- ldrb r2, [r4, 0xC]
- ldr r3, =0x00007f74
- movs r1, 0x1
- bl BlendPalette
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _08170AF8
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08170AF8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170A38
-
- thumb_func_start sub_8170B04
-sub_8170B04: @ 8170B04
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r5, [r0]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08170B52
- cmp r0, 0x1
- bgt _08170B3C
- cmp r0, 0
- beq _08170B42
- b _08170BA4
- .pool
-_08170B3C:
- cmp r0, 0x2
- beq _08170B84
- b _08170BA4
-_08170B42:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x1C]
- b _08170B76
-_08170B52:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x30
- strh r0, [r4, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r4, r0]
- adds r0, r5, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- adds r0, r5, 0
- bl sub_80A7E6C
- movs r0, 0x1C
- ldrsh r1, [r4, r0]
- ldr r0, =0x000002cf
- cmp r1, r0
- ble _08170BA4
-_08170B76:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08170BA4
- .pool
-_08170B84:
- adds r0, r5, 0
- bl sub_80A7344
- ldr r1, =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]
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_08170BA4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170B04
-
- thumb_func_start sub_8170BB0
-sub_8170BB0: @ 8170BB0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r1, r0, r1
- ldrb r1, [r1]
- mov r9, r1
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08170BF8
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- b _08170C08
- .pool
-_08170BF8:
- ldr r1, =gBattlerPartyIndexes
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
-_08170C08:
- adds r0, r1
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r6, r0, r2
- movs r0, 0x8
- ldrsh r7, [r6, r0]
- cmp r7, 0
- beq _08170C44
- cmp r7, 0x1
- beq _08170CC4
- b _08170CEE
- .pool
-_08170C44:
- ldr r5, =gBattleAnimAttacker
- ldrb r0, [r5]
- movs r1, 0
- bl GetBattlerSpriteCoord
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- adds r1, r0, 0
- lsls r1, 24
- ldr r2, =gSprites
- mov r3, r9
- lsls r0, r3, 4
- add r0, r9
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x5]
- lsls r2, 28
- lsrs r2, 30
- adds r0, 0x43
- ldrb r3, [r0]
- movs r0, 0x80
- lsls r0, 22
- adds r1, r0
- lsrs r1, 24
- mov r0, r8
- str r0, [sp]
- adds r0, r4, 0
- bl LaunchBallStarsTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1C]
- str r7, [sp]
- str r7, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80A75AC
- adds r2, r0, 0
- ldrb r1, [r5]
- movs r0, 0
- mov r3, r8
- bl LaunchBallFadeMonTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x1E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _08170CEE
- .pool
-_08170CC4:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08170CEE
- movs r3, 0x1E
- ldrsh r0, [r6, r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08170CEE
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08170CEE:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8170BB0
-
- thumb_func_start sub_8170CFC
-sub_8170CFC: @ 8170CFC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl LoadBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170CFC
-
- thumb_func_start sub_8170D24
-sub_8170D24: @ 8170D24
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r0, 24
- bl FreeBallGfx
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170D24
-
- thumb_func_start AnimTask_IsBallBlockedByTrainer
-AnimTask_IsBallBlockedByTrainer: @ 8170D4C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- bne _08170D70
- ldr r1, =gBattleAnimArgs
- ldr r0, =0x0000ffff
- b _08170D74
- .pool
-_08170D70:
- ldr r1, =gBattleAnimArgs
- movs r0, 0
-_08170D74:
- strh r0, [r1, 0xE]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_IsBallBlockedByTrainer
-
- thumb_func_start ItemIdToBallId
-ItemIdToBallId: @ 8170D84
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r0, 0xB
- bhi _08170DFC
- lsls r0, 2
- ldr r1, =_08170DA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08170DA0:
- .4byte _08170DD0
- .4byte _08170DD4
- .4byte _08170DD8
- .4byte _08170DFC
- .4byte _08170DDC
- .4byte _08170DE0
- .4byte _08170DE4
- .4byte _08170DE8
- .4byte _08170DEC
- .4byte _08170DF0
- .4byte _08170DF4
- .4byte _08170DF8
-_08170DD0:
- movs r0, 0x4
- b _08170DFE
-_08170DD4:
- movs r0, 0x3
- b _08170DFE
-_08170DD8:
- movs r0, 0x1
- b _08170DFE
-_08170DDC:
- movs r0, 0x2
- b _08170DFE
-_08170DE0:
- movs r0, 0x5
- b _08170DFE
-_08170DE4:
- movs r0, 0x6
- b _08170DFE
-_08170DE8:
- movs r0, 0x7
- b _08170DFE
-_08170DEC:
- movs r0, 0x8
- b _08170DFE
-_08170DF0:
- movs r0, 0x9
- b _08170DFE
-_08170DF4:
- movs r0, 0xA
- b _08170DFE
-_08170DF8:
- movs r0, 0xB
- b _08170DFE
-_08170DFC:
- movs r0, 0
-_08170DFE:
- pop {r1}
- bx r1
- thumb_func_end ItemIdToBallId
-
- thumb_func_start sub_8170E04
-sub_8170E04: @ 8170E04
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- mov r10, r0
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, =gBallSpriteTemplates
- adds r0, r1
- movs r1, 0x20
- movs r2, 0x50
- movs r3, 0x1D
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gSprites
- mov r9, r1
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r1
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r2, =gBattleAnimTarget
- mov r8, r2
- ldrb r0, [r2]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- mov r0, r9
- adds r0, 0x1C
- adds r4, r0
- ldr r0, =sub_8171104
- str r0, [r4]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r3, [r0, 0x8]
- ldr r1, =gBattlerSpriteIds
- mov r2, r8
- ldrb r0, [r2]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r1, 29
- lsrs r1, 31
- lsls r1, 1
- ldrb r2, [r3, 0x9]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x9]
- ldr r1, =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, =sub_8170EF0
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170E04
-
- thumb_func_start sub_8170EF0
-sub_8170EF0: @ 8170EF0
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2E]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08170F1A
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_08170F1A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170EF0
-
- thumb_func_start sub_8170F2C
-sub_8170F2C: @ 8170F2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08170F50
- movs r6, 0x20
- movs r5, 0xB
- b _08170F54
- .pool
-_08170F50:
- movs r6, 0x17
- movs r5, 0x5
-_08170F54:
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A82E4
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, =gBallSpriteTemplates
- adds r0, r1
- adds r1, r6, 0
- adds r1, 0x20
- movs r2, 0x50
- orrs r5, r2
- adds r2, r5, 0
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gSprites
- mov r9, r0
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r6, r4, r0
- movs r0, 0x22
- strh r0, [r6, 0x2E]
- ldr r1, =gBattleAnimTarget
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x30]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r6, 0x32]
- movs r0, 0x1C
- add r9, r0
- add r4, r9
- ldr r0, =SpriteCallbackDummy
- str r0, [r4]
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldr r1, =sub_8039E84
- str r1, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r1, =sub_8171030
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170F2C
-
- thumb_func_start sub_8171030
-sub_8171030: @ 8171030
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0817108A
- movs r0, 0x3D
- movs r1, 0
- bl PlaySE12WithPanning
- ldr r0, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_8171104
- str r1, [r0]
- ldr r0, =sub_81710A8
- movs r1, 0xA
- bl CreateTask
- ldr r0, =sub_8170EF0
- str r0, [r4]
-_0817108A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171030
-
- thumb_func_start sub_81710A8
-sub_81710A8: @ 81710A8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gSprites
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r4, =gBattlerSpriteIds
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _081710F4
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl DestroyTask
-_081710F4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81710A8
-
- thumb_func_start sub_8171104
-sub_8171104: @ 8171104
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- strh r2, [r4, 0x36]
- ldr r0, =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r0, =sub_8171134
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171104
-
- thumb_func_start sub_8171134
-sub_8171134: @ 8171134
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081711D2
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x5
- bne _08171160
- ldr r0, =sub_8171CAC
- str r0, [r4, 0x1C]
- b _081711D2
- .pool
-_08171160:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- 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, 0x24]
- strh r1, [r4, 0x26]
- adds r1, r4, 0
- adds r1, 0x2E
- movs r2, 0
- adds r0, r4, 0
- adds r0, 0x3C
-_08171188:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _08171188
- movs r0, 0
- strh r0, [r4, 0x38]
- ldr r0, =sub_81711E8
- str r0, [r4, 0x1C]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _081711D2
- cmp r5, 0
- blt _081711D2
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, =gBattleAnimTarget
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_081711D2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171134
-
- thumb_func_start sub_81711E8
-sub_81711E8: @ 81711E8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _08171224
- ldr r0, =TaskDummy
- movs r1, 0x32
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x38]
- ldr r0, =sub_8171240
- str r0, [r4, 0x1C]
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x30]
-_08171224:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81711E8
-
- thumb_func_start sub_8171240
-sub_8171240: @ 8171240
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r4, [r0]
- ldrh r0, [r7, 0x38]
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _08171272
- movs r0, 0x3C
- bl PlaySE
-_08171272:
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _081712E8
- cmp r0, 0x1
- bgt _08171290
- cmp r0, 0
- beq _08171296
- b _08171354
- .pool
-_08171290:
- cmp r0, 0x2
- beq _0817132C
- b _08171354
-_08171296:
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A7270
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0x1C]
- ldr r1, =gUnknown_030062DC
- movs r0, 0x1C
- str r0, [r1]
- ldr r2, =gUnknown_030062E4
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x26]
- ldrh r0, [r0, 0x22]
- adds r1, r0
- ldrh r0, [r7, 0x26]
- ldrh r7, [r7, 0x22]
- adds r0, r7
- subs r1, r0
- strh r1, [r2]
- ldr r4, =gUnknown_030062E0
- ldrh r0, [r2]
- lsls r0, 8
- movs r1, 0x1C
- bl __udivsi3
- strh r0, [r4]
- strh r0, [r5, 0xC]
- b _08171346
- .pool
-_081712E8:
- ldrh r0, [r5, 0x1C]
- adds r0, 0x20
- strh r0, [r5, 0x1C]
- movs r0, 0x1C
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r5, 0xC]
- ldrh r1, [r5, 0xE]
- adds r0, r1
- strh r0, [r5, 0xE]
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- negs r0, r0
- asrs r0, 8
- strh r0, [r1, 0x26]
- movs r0, 0x1C
- ldrsh r1, [r5, r0]
- ldr r0, =0x0000047f
- cmp r1, r0
- ble _0817137C
- b _08171346
- .pool
-_0817132C:
- adds r0, r4, 0
- bl sub_80A7344
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08171346:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0817137C
- .pool
-_08171354:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- ble _0817137C
- adds r0, r6, 0
- bl DestroyTask
- adds r0, r7, 0
- movs r1, 0x2
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r7, 0x38]
- ldr r0, =sub_817138C
- str r0, [r7, 0x1C]
-_0817137C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171240
-
- thumb_func_start sub_817138C
-sub_817138C: @ 817138C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081713C6
- movs r1, 0
- strh r1, [r4, 0x34]
- movs r0, 0x28
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- movs r0, 0
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldr r0, =sub_81713D0
- str r0, [r4, 0x1C]
-_081713C6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817138C
-
- thumb_func_start sub_81713D0
-sub_81713D0: @ 81713D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0
- beq _081713E6
- cmp r1, 0x1
- beq _0817145A
- b _08171486
-_081713E6:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- adds r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3F
- ble _08171486
- ldrh r0, [r4, 0x36]
- subs r0, 0xA
- strh r0, [r4, 0x36]
- ldr r1, =0x00000101
- adds r0, r2, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _08171422
- movs r5, 0x1
-_08171422:
- cmp r0, 0x2
- beq _08171442
- cmp r0, 0x2
- bgt _08171434
- cmp r0, 0x1
- beq _0817143A
- b _08171452
- .pool
-_08171434:
- cmp r0, 0x3
- beq _0817144A
- b _08171452
-_0817143A:
- movs r0, 0x38
- bl PlaySE
- b _08171486
-_08171442:
- movs r0, 0x39
- bl PlaySE
- b _08171486
-_0817144A:
- movs r0, 0x3A
- bl PlaySE
- b _08171486
-_08171452:
- movs r0, 0x3B
- bl PlaySE
- b _08171486
-_0817145A:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- subs r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- subs r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- cmp r1, 0
- bgt _08171486
- strh r5, [r4, 0x38]
- ldr r0, =0xffffff00
- ands r0, r2
- strh r0, [r4, 0x34]
-_08171486:
- cmp r5, 0
- beq _081714CA
- movs r5, 0
- strh r5, [r4, 0x34]
- movs r0, 0x40
- movs r1, 0x28
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x26]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _081714C0
- strh r5, [r4, 0x38]
- ldr r0, =sub_81717B4
- str r0, [r4, 0x1C]
- b _081714CA
- .pool
-_081714C0:
- ldr r0, =sub_81714D4
- str r0, [r4, 0x1C]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- strh r5, [r4, 0x38]
-_081714CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81713D0
-
- thumb_func_start sub_81714D4
-sub_81714D4: @ 81714D4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _08171510
- strh r5, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- strh r5, [r0, 0xC]
- ldr r0, =sub_8171520
- str r0, [r4, 0x1C]
- movs r0, 0x17
- bl PlaySE
-_08171510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81714D4
-
- thumb_func_start sub_8171520
-sub_8171520: @ 8171520
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0x6
- bls _08171530
- b _08171768
-_08171530:
- lsls r0, r1, 2
- ldr r1, =_08171540
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08171540:
- .4byte _0817155C
- .4byte _081715AE
- .4byte _081715F4
- .4byte _08171654
- .4byte _081716A4
- .4byte _08171708
- .4byte _08171768
-_0817155C:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _08171584
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _0817158A
- .pool
-_08171584:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_0817158A:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xE
- bhi _081715AC
- b _081717AE
-_081715AC:
- b _08171644
-_081715AE:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08171660
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _081715EA
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _081717AE
-_081715EA:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _081717AE
-_081715F4:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _0817161C
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _08171622
- .pool
-_0817161C:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_08171622:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0xC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x18
- bhi _08171644
- b _081717AE
-_08171644:
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- b _081717AE
-_08171654:
- ldrh r0, [r4, 0x38]
- adds r1, r0, 0x1
- strh r1, [r4, 0x38]
- lsls r0, 16
- cmp r0, 0
- bge _0817166E
-_08171660:
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _081717AE
-_0817166E:
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _0817169C
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _081716A4
-_0817169C:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_081716A4:
- ldr r1, =gBattleSpritesDataPtr
- ldr r5, [r1]
- ldr r2, [r5, 0x8]
- ldrh r3, [r2, 0xC]
- movs r6, 0xC
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0xFF
- ble _081716CC
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldr r1, [r5, 0x8]
- ldrb r0, [r1, 0xC]
- strh r0, [r1, 0xC]
- b _081716D2
- .pool
-_081716CC:
- adds r0, r3, 0
- adds r0, 0xB0
- strh r0, [r2, 0xC]
-_081716D2:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bls _081717AE
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- strh r3, [r0, 0xC]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- strh r3, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- b _081717AE
-_08171708:
- movs r6, 0x80
- lsls r6, 1
- adds r0, r6, 0
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r1, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0x8]
- cmp r1, r0
- bne _08171740
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_81717B4
- str r0, [r4, 0x1C]
- b _081717AE
- .pool
-_08171740:
- cmp r0, 0x4
- bne _08171754
- cmp r1, 0x3
- bne _08171754
- ldr r0, =sub_81717D8
- str r0, [r4, 0x1C]
- b _0817175A
- .pool
-_08171754:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
-_0817175A:
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- b _081717AE
-_08171768:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _081717AE
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- ldr r0, =0xffffff00
- ands r0, r1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r6, 0x36
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bge _081717A0
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _081717A8
- .pool
-_081717A0:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_081717A8:
- movs r0, 0x17
- bl PlaySE
-_081717AE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8171520
-
- thumb_func_start sub_81717B4
-sub_81717B4: @ 81717B4
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x38]
- adds r0, 0x1
- strh r0, [r1, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _081717CE
- movs r0, 0
- strh r0, [r1, 0x38]
- ldr r0, =sub_8171AE4
- str r0, [r1, 0x1C]
-_081717CE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81717B4
-
- thumb_func_start sub_81717D8
-sub_81717D8: @ 81717D8
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- ldr r1, =sub_81717F8
- str r1, [r0, 0x1C]
- movs r1, 0
- strh r1, [r0, 0x34]
- strh r1, [r0, 0x36]
- strh r1, [r0, 0x38]
- bx lr
- .pool
- thumb_func_end sub_81717D8
-
- thumb_func_start sub_81717F8
-sub_81717F8: @ 81717F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r7, =gBattleAnimTarget
- ldrh r0, [r6, 0x36]
- adds r0, 0x1
- movs r1, 0
- mov r8, r1
- strh r0, [r6, 0x36]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x28
- bne _0817183C
- movs r0, 0xFE
- bl PlaySE
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- movs r1, 0x6
- movs r2, 0
- bl BlendPalettes
- adds r0, r6, 0
- bl sub_81719EC
- b _081718BC
- .pool
-_0817183C:
- cmp r1, 0x3C
- bne _0817185A
- ldrb r1, [r6, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- mov r1, r8
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0x6
- movs r3, 0
- bl BeginNormalPaletteFade
- b _081718BC
-_0817185A:
- cmp r1, 0x5F
- bne _08171880
- ldr r0, =gDoingBattleAnim
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
- bl m4aMPlayAllStop
- ldr r0, =0x00000213
- bl PlaySE
- b _081718BC
- .pool
-_08171880:
- ldr r0, =0x0000013b
- cmp r1, r0
- bne _081718BC
- ldr r5, =gSprites
- ldr r4, =gBattlerSpriteIds
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [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
- ldrb r0, [r7]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- mov r0, r8
- strh r0, [r6, 0x2E]
- ldr r0, =sub_81718D8
- str r0, [r6, 0x1C]
-_081718BC:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81717F8
-
- thumb_func_start sub_81718D8
-sub_81718D8: @ 81718D8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08171944
- cmp r0, 0x1
- bgt _081718F0
- cmp r0, 0
- beq _081718F6
- b _0817198A
-_081718F0:
- cmp r0, 0x2
- beq _08171976
- b _0817198A
-_081718F6:
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, [r4, 0x14]
- ldrh r0, [r0, 0x2]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x10
- movs r1, 0x1
- lsls r1, r0
- ldr r0, =0x00007fff
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08171982
- .pool
-_08171944:
- ldrh r0, [r4, 0x30]
- adds r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- ble _081719B0
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r2, [r4, 0x32]
- adds r2, 0x1
- strh r2, [r4, 0x32]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _081719B0
- b _08171982
-_08171976:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08171982:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081719B0
-_0817198A:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081719B0
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- strh r5, [r4, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r4, 0x1C]
-_081719B0:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81718D8
-
- thumb_func_start sub_81719C0
-sub_81719C0: @ 81719C0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081719D8
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x2E]
- b _081719E4
- .pool
-_081719D8:
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_081719E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81719C0
-
- thumb_func_start sub_81719EC
-sub_81719EC: @ 81719EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- adds r1, r6, 0
- adds r1, 0x43
- ldrb r0, [r1]
- cmp r0, 0
- beq _08171A0C
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- b _08171A14
-_08171A0C:
- movs r0, 0
- mov r8, r0
- movs r0, 0x1
- strb r0, [r1]
-_08171A14:
- movs r0, 0x4
- bl sub_8171D60
- movs r7, 0
- ldr r2, =gSprites
- mov r9, r2
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_08171A26:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- movs r0, 0x22
- ldrsh r2, [r6, r0]
- ldr r0, =gUnknown_085E5250
- mov r3, r8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08171A82
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- mov r2, r9
- adds r5, r4, r2
- movs r0, 0x18
- strh r0, [r5, 0x2E]
- ldr r0, =gUnknown_085E5088
- lsls r1, r7, 2
- adds r1, r0
- movs r0, 0
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x20]
- adds r0, r2
- strh r0, [r5, 0x32]
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- ldrh r2, [r6, 0x22]
- adds r0, r2
- strh r0, [r5, 0x36]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl InitAnimArcTranslation
- add r4, r10
- ldr r0, =sub_8171AAC
- str r0, [r4]
- ldr r0, =gUnknown_085E51B4
- ldrb r1, [r0, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
-_08171A82:
- adds r7, 0x1
- cmp r7, 0x2
- bls _08171A26
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81719EC
-
- thumb_func_start sub_8171AAC
-sub_8171AAC: @ 8171AAC
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- 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]
- adds r0, r4, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _08171ADC
- adds r0, r4, 0
- bl DestroySprite
-_08171ADC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8171AAC
-
- thumb_func_start sub_8171AE4
-sub_8171AE4: @ 8171AE4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r0, =sub_8171BAC
- str r0, [r4, 0x1C]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- bl ItemIdToBallId
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xB
- bgt _08171B36
- cmp r5, 0
- blt _08171B36
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- str r5, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl LaunchBallStarsTask
- ldr r0, =gBattleAnimTarget
- ldrb r1, [r0]
- movs r0, 0x1
- movs r2, 0xE
- adds r3, r5, 0
- bl LaunchBallFadeMonTask
-_08171B36:
- ldr r6, =gSprites
- ldr r5, =gBattlerSpriteIds
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl AnimateSprite
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r0, 0x30]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171AE4
-
- thumb_func_start sub_8171BAC
-sub_8171BAC: @ 8171BAC
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08171BCA
- adds r2, r7, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08171BCA:
- ldr r4, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimTarget
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _08171C04
- adds r0, r1, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r5, 0x1
- b _08171C24
- .pool
-_08171C04:
- ldr r6, =0xfffffee0
- adds r0, r6, 0
- ldrh r6, [r1, 0x30]
- adds r0, r6
- strh r0, [r1, 0x30]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
-_08171C24:
- adds r0, r7, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08171C8A
- cmp r5, 0
- beq _08171C8A
- ldr r4, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimTarget
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0
- movs r5, 0
- strh r5, [r0, 0x26]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- lsls r1, 30
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- strh r5, [r7, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r7, 0x1C]
- ldr r0, =gDoingBattleAnim
- strb r6, [r0]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_08171C8A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171BAC
-
- thumb_func_start sub_8171CAC
-sub_8171CAC: @ 8171CAC
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x24]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x26]
- ldrh r3, [r2, 0x22]
- adds r0, r3
- strh r0, [r2, 0x22]
- strh r1, [r2, 0x26]
- strh r1, [r2, 0x24]
- ldr r4, =sub_8171CE8
- movs r3, 0
- movs r1, 0x5
- adds r0, r2, 0
- adds r0, 0x38
-_08171CD0:
- strh r3, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08171CD0
- str r4, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171CAC
-
- thumb_func_start sub_8171CE8
-sub_8171CE8: @ 8171CE8
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x80
- lsls r0, 4
- adds r2, r0, 0
- ldrh r1, [r4, 0x2E]
- adds r2, r1
- movs r0, 0xD0
- lsls r0, 3
- adds r3, r0, 0
- ldrh r1, [r4, 0x30]
- adds r3, r1
- lsls r1, r3, 16
- asrs r1, 24
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r4, 0x2E]
- ands r3, r0
- strh r3, [r4, 0x30]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- bgt _08171D3E
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- movs r1, 0x8
- negs r1, r1
- cmp r0, r1
- bge _08171D52
-_08171D3E:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =sub_81719C0
- str r0, [r4, 0x1C]
- ldr r1, =gDoingBattleAnim
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl UpdateOamPriorityInAllHealthboxes
-_08171D52:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171CE8
-
- thumb_func_start sub_8171D60
-sub_8171D60: @ 8171D60
- push {r4,r5,lr}
- lsls r0, 24
- ldr r1, =gUnknown_085E5094
- lsrs r5, r0, 21
- adds r4, r5, r1
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _08171D86
- adds r0, r4, 0
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_085E50F4
- adds r0, r5, r0
- bl LoadCompressedObjectPaletteUsingHeap
-_08171D86:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171D60
-
- thumb_func_start LaunchBallStarsTask
-LaunchBallStarsTask: @ 8171D98
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- mov r10, r3
- ldr r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_8171D60
- ldr r1, =gUnknown_085E51C0
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x5
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0xA]
- mov r1, r8
- strh r1, [r0, 0xC]
- mov r1, r9
- strh r1, [r0, 0xE]
- mov r1, r10
- strh r1, [r0, 0x10]
- strh r5, [r0, 0x26]
- movs r0, 0xF
- bl PlaySE
- adds r0, r4, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end LaunchBallStarsTask
-
- thumb_func_start sub_8171E20
-sub_8171E20: @ 8171E20
- push {lr}
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08171E3E
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
-_08171E3E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171E20
-
- thumb_func_start sub_8171E50
-sub_8171E50: @ 8171E50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrh r0, [r6, 0x26]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r2, 0x8
- ldrsh r0, [r6, r2]
- adds r2, r1, 0
- cmp r0, 0xF
- bgt _08171F48
- ldrb r1, [r6, 0xA]
- ldrb r2, [r6, 0xC]
- ldrb r4, [r6, 0xE]
- mov r9, r4
- ldrb r3, [r6, 0x10]
- ldr r4, [sp]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r4, =gUnknown_085E51F0
- adds r0, r4
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0x40
- beq _08171EEC
- bl sub_8171E20
- mov r0, r10
- lsls r4, r0, 4
- add r4, r10
- lsls r4, 2
- ldr r5, =gSprites
- adds r7, r4, r5
- ldr r0, =gUnknown_085E51B4
- ldr r1, [sp]
- adds r0, r1, r0
- ldrb r1, [r0]
- adds r0, r7, 0
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, =sub_8171F68
- str r0, [r4]
- movs r0, 0x3
- mov r2, r9
- ands r2, r0
- lsls r2, 2
- ldrb r1, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r7, 0x5]
- ldrb r0, [r6, 0x8]
- cmp r0, 0x7
- bls _08171EE8
- subs r0, 0x8
- lsls r0, 24
- lsrs r0, 24
-_08171EE8:
- lsls r0, 5
- strh r0, [r7, 0x2E]
-_08171EEC:
- ldr r0, =gTasks
- mov r4, r8
- lsls r1, r4, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r1, [r1, r2]
- adds r2, r0, 0
- cmp r1, 0xF
- bne _08171F48
- ldr r0, =gMain
- ldr r4, =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08171F22
- ldr r0, =gSprites
- mov r2, r10
- lsls r1, r2, 4
- add r1, r10
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08171F22:
- mov r0, r8
- bl DestroyTask
- b _08171F58
- .pool
-_08171F48:
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
-_08171F58:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8171E50
-
- thumb_func_start sub_8171F68
-sub_8171F68: @ 8171F68
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x30]
- movs r3, 0x30
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08171F80
- ldr r0, =sub_8171F88
- str r0, [r1, 0x1C]
- b _08171F84
- .pool
-_08171F80:
- subs r0, r2, 0x1
- strh r0, [r1, 0x30]
-_08171F84:
- pop {r0}
- bx r0
- thumb_func_end sub_8171F68
-
- thumb_func_start sub_8171F88
-sub_8171F88: @ 8171F88
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- bne _08171FBC
- adds r0, r4, 0
- bl sub_8172944
-_08171FBC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8171F88
-
- thumb_func_start sub_8171FC4
-sub_8171FC4: @ 8171FC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_0817200A:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817206A
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- strh r0, [r5, 0x3A]
-_0817206A:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817200A
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172092
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172092:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8171FC4
-
- thumb_func_start sub_81720C8
-sub_81720C8: @ 81720C8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_0817210E:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817216E
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0xA
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
- strh r0, [r5, 0x3A]
-_0817216E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817210E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172196
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172196:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81720C8
-
- thumb_func_start sub_81721CC
-sub_81721CC: @ 81721CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_08172212:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817226E
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x4
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_0817226E:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172212
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172296
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172296:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81721CC
-
- thumb_func_start sub_81722CC
-sub_81722CC: @ 81722CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x4]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0x8]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0xC]
- movs r7, 0
- ldr r3, =gSprites
- mov r10, r3
- mov r1, r8
- lsls r0, r1, 1
- add r0, r8
- lsls r0, 3
- str r0, [sp, 0x10]
-_08172312:
- ldr r0, =gUnknown_085E51F0
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172376
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r3, r10
- adds r5, r4, r3
- ldr r0, =gUnknown_085E51B4
- add r0, r8
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 3
- adds r0, r7
- strh r0, [r5, 0x2E]
- movs r0, 0x5
- strh r0, [r5, 0x36]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_08172376:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x9
- bls _08172312
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0817239E
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_0817239E:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81722CC
-
- thumb_func_start sub_81723D4
-sub_81723D4: @ 81723D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r3, r0, r1
- ldrh r1, [r3, 0x16]
- movs r4, 0x16
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _08172404
- subs r0, r1, 0x1
- strh r0, [r3, 0x16]
- b _081724D6
- .pool
-_08172404:
- ldrh r0, [r3, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r3, 0xA]
- str r1, [sp]
- ldrb r4, [r3, 0xC]
- str r4, [sp, 0x4]
- ldrb r1, [r3, 0xE]
- str r1, [sp, 0x8]
- ldrb r3, [r3, 0x10]
- str r3, [sp, 0xC]
- movs r7, 0
- str r2, [sp, 0x14]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- str r1, [sp, 0x10]
- ldr r3, =gSprites
- mov r9, r3
- ldr r1, =gUnknown_085E51B4
- adds r0, r1
- mov r10, r0
-_08172430:
- ldr r0, =gUnknown_085E51F0
- ldr r4, [sp, 0x10]
- adds r0, r4, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _0817248C
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r0, r9
- adds r5, r4, r0
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- movs r0, 0x2
- strh r0, [r5, 0x38]
- strh r0, [r5, 0x3A]
-_0817248C:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172430
- ldr r0, =gTasks
- ldr r1, [sp, 0x14]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x8
- strh r0, [r1, 0x16]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0x2
- bne _081724D6
- ldr r0, =gMain
- ldr r4, =0x00000439
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081724D0
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081724D0:
- mov r0, r8
- bl DestroyTask
-_081724D6:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81723D4
-
- thumb_func_start sub_8172508
-sub_8172508: @ 8172508
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x38]
- ldrh r2, [r4, 0x30]
- adds r0, r2
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x32]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _08172558
- adds r0, r4, 0
- bl sub_8172944
-_08172558:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8172508
-
- thumb_func_start sub_8172560
-sub_8172560: @ 8172560
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_081725A6:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _081725FE
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_817265C
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r7
- strh r0, [r5, 0x2E]
-_081725FE:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xB
- bls _081725A6
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172626
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_08172626:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172560
-
- thumb_func_start sub_817265C
-sub_817265C: @ 817265C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- adds r0, r4, 0
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x6
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _081726B4
- adds r0, r5, 0
- bl sub_8172944
-_081726B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_817265C
-
- thumb_func_start sub_81726BC
-sub_81726BC: @ 81726BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- ldr r0, =gTasks
- ldr r2, [sp]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r3, [r1, 0xA]
- str r3, [sp, 0x4]
- ldrb r0, [r1, 0xC]
- str r0, [sp, 0x8]
- ldrb r2, [r1, 0xE]
- str r2, [sp, 0xC]
- ldrb r1, [r1, 0x10]
- str r1, [sp, 0x10]
- movs r3, 0
- mov r8, r3
- mov r1, r9
- lsls r0, r1, 1
- add r0, r9
- lsls r0, 3
- str r0, [sp, 0x14]
-_08172700:
- movs r7, 0
- movs r2, 0x1
- add r2, r8
- mov r10, r2
-_08172708:
- ldr r0, =gUnknown_085E51F0
- ldr r3, [sp, 0x14]
- adds r0, r3, r0
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- ldr r3, [sp, 0x10]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172790
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- ldr r0, =gSprites
- adds r5, r4, r0
- ldr r0, =gUnknown_085E51B4
- add r0, r9
- ldrb r1, [r0]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r1, =gSprites + 0x1C
- adds r4, r1
- ldr r0, =sub_8172508
- str r0, [r4]
- movs r0, 0x3
- ldr r1, [sp, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r2, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
- movs r0, 0x8
- strh r0, [r5, 0x36]
- mov r0, r8
- cmp r0, 0
- bne _08172788
- movs r0, 0x2
- strh r0, [r5, 0x38]
- movs r0, 0x1
- b _0817278E
- .pool
-_08172788:
- movs r0, 0x1
- strh r0, [r5, 0x38]
- movs r0, 0x2
-_0817278E:
- strh r0, [r5, 0x3A]
-_08172790:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _08172708
- mov r1, r10
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bls _08172700
- ldr r0, =gMain
- ldr r2, =0x00000439
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081727C4
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081727C4:
- ldr r0, [sp]
- bl DestroyTask
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81726BC
-
- thumb_func_start sub_81727E8
-sub_81727E8: @ 81727E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x26]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0xA]
- str r2, [sp]
- ldrb r3, [r0, 0xC]
- str r3, [sp, 0x4]
- ldrb r2, [r0, 0xE]
- str r2, [sp, 0x8]
- ldrb r0, [r0, 0x10]
- str r0, [sp, 0xC]
- movs r7, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- str r0, [sp, 0x10]
- ldr r3, =gSprites
- mov r8, r3
- ldr r0, =gUnknown_085E51B4
- adds r1, r0
- mov r10, r1
-_0817282E:
- ldr r0, =gUnknown_085E51F0
- ldr r1, [sp, 0x10]
- adds r0, r1, r0
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- ldr r3, [sp, 0xC]
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x40
- beq _08172880
- bl sub_8171E20
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- mov r2, r8
- adds r5, r4, r2
- mov r3, r10
- ldrb r1, [r3]
- adds r0, r5, 0
- bl StartSpriteAnim
- ldr r0, =gSprites + 0x1C
- adds r4, r0
- ldr r0, =sub_81728E0
- str r0, [r4]
- movs r0, 0x3
- ldr r2, [sp, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r0, [r5, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, 0x5]
- lsls r0, r7, 5
- strh r0, [r5, 0x2E]
-_08172880:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x7
- bls _0817282E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081728A8
- ldr r0, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
-_081728A8:
- mov r0, r9
- bl DestroyTask
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81727E8
-
- thumb_func_start sub_81728E0
-sub_81728E0: @ 81728E0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x24]
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- ldrh r1, [r5, 0x2E]
- movs r0, 0x3F
- ands r0, r1
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl Sin
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- bl Cos
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x2E]
- adds r0, 0xA
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _0817293C
- adds r0, r5, 0
- bl sub_8172944
-_0817293C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81728E0
-
- thumb_func_start sub_8172944
-sub_8172944: @ 8172944
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08172970
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- bne _081729CA
- adds r0, r7, 0
- bl DestroySpriteAndFreeResources
- b _081729E2
- .pool
-_08172970:
- ldr r2, =gBattleSpritesDataPtr
- ldr r0, [r2]
- ldr r1, [r0, 0x8]
- ldrb r0, [r1, 0xA]
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r0, [r2]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- bne _081729DC
- movs r4, 0
- ldr r5, =gUnknown_085E51C0
- b _08172998
- .pool
-_08172994:
- adds r5, 0x4
- adds r4, 0x1
-_08172998:
- cmp r4, 0xB
- bgt _081729AA
- ldr r0, [r5]
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08172994
-_081729AA:
- cmp r4, 0xC
- bne _081729CA
- movs r6, 0
- ldr r5, =gUnknown_085E5094
- ldr r4, =gUnknown_085E50F4
-_081729B4:
- ldrh r0, [r5, 0x6]
- bl FreeSpriteTilesByTag
- ldrh r0, [r4, 0x4]
- bl FreeSpritePaletteByTag
- adds r5, 0x8
- adds r4, 0x8
- adds r6, 0x1
- cmp r6, 0xB
- ble _081729B4
-_081729CA:
- adds r0, r7, 0
- bl DestroySprite
- b _081729E2
- .pool
-_081729DC:
- adds r0, r7, 0
- bl DestroySprite
-_081729E2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8172944
-
- thumb_func_start LaunchBallFadeMonTask
-LaunchBallFadeMonTask: @ 81729E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- mov r9, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r3, 24
- lsrs r7, r3, 24
- ldr r0, =sub_8172AB0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r5, r0, r1
- strh r7, [r5, 0x26]
- strh r6, [r5, 0xE]
- mov r0, r9
- strh r0, [r5, 0x1C]
- mov r1, r9
- lsrs r0, r1, 16
- strh r0, [r5, 0x1E]
- cmp r4, 0
- bne _08172A58
- lsls r0, r6, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldr r2, =gUnknown_085E5310
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0
- bl BlendPalette
- movs r0, 0x1
- strh r0, [r5, 0xA]
- b _08172A7E
- .pool
-_08172A58:
- lsls r0, r6, 20
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 16
- ldr r2, =gUnknown_085E5310
- lsls r1, r7, 1
- adds r1, r2
- ldrh r3, [r1]
- movs r1, 0x10
- movs r2, 0x10
- bl BlendPalette
- movs r0, 0x10
- strh r0, [r5, 0x8]
- ldr r0, =0x0000ffff
- strh r0, [r5, 0xA]
- ldr r0, =sub_8172B40
- str r0, [r5]
-_08172A7E:
- ldr r0, =0x00007fff
- str r0, [sp]
- mov r0, r9
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end LaunchBallFadeMonTask
-
- thumb_func_start sub_8172AB0
-sub_8172AB0: @ 8172AB0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bgt _08172B08
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, =gUnknown_085E5310
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08172B30
- .pool
-_08172B08:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08172B30
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- adds r0, r5, 0
- bl DestroyTask
-_08172B30:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172AB0
-
- thumb_func_start sub_8172B40
-sub_8172B40: @ 8172B40
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08172B78
- ldr r0, =gTasks
- lsls r4, r2, 2
- adds r4, r2
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x1C]
- ldrh r1, [r4, 0x1E]
- lsls r1, 16
- orrs r0, r1
- ldr r1, =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_8172B90
- str r0, [r4]
-_08172B78:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172B40
-
- thumb_func_start sub_8172B90
-sub_8172B90: @ 8172B90
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x10
- bgt _08172BE4
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- lsls r0, 20
- movs r3, 0x80
- lsls r3, 17
- adds r0, r3
- lsrs r0, 16
- ldrb r2, [r4, 0x8]
- ldr r3, =gUnknown_085E5310
- lsls r1, 1
- adds r1, r3
- ldrh r3, [r1]
- movs r1, 0x10
- bl BlendPalette
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x8]
- adds r0, r1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- b _08172BEA
- .pool
-_08172BE4:
- adds r0, r2, 0
- bl DestroyTask
-_08172BEA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8172B90
-
- thumb_func_start sub_8172BF0
-sub_8172BF0: @ 8172BF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, =gBattlerSpriteIds
- ldr r3, =gBattleAnimAttacker
- ldrb r2, [r3]
- adds r0, r2, r0
- ldrb r6, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x1C
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08172CC8
- cmp r0, 0x1
- bgt _08172C30
- cmp r0, 0
- beq _08172C36
- b _08172D8A
- .pool
-_08172C30:
- cmp r0, 0x2
- beq _08172CDA
- b _08172D8A
-_08172C36:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r5, 0x1E]
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r4, [r5, 0x8]
- adds r0, r4
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08172C78
- ldr r2, =gSprites
- lsls r3, r6, 4
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r4, [r1, 0x24]
- adds r0, r4
- strh r0, [r1, 0x24]
- adds r4, r3, 0
- b _08172C90
- .pool
-_08172C78:
- ldr r3, =gSprites
- lsls r4, r6, 4
- adds r2, r4, r6
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
-_08172C90:
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r1
- ldrb r0, [r3, 0x8]
- strh r0, [r3, 0x8]
- adds r0, r4, r6
- lsls r0, 2
- adds r0, r2
- movs r2, 0x20
- ldrsh r1, [r0, r2]
- movs r4, 0x24
- ldrsh r0, [r0, r4]
- adds r1, r0
- adds r1, 0x20
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- bls _08172D8A
- ldrh r0, [r3, 0x1C]
- adds r0, 0x1
- strh r0, [r3, 0x1C]
- b _08172D8A
- .pool
-_08172CC8:
- ldrb r1, [r5, 0x1E]
- adds r0, r2, 0
- adds r2, r6, 0
- bl LoadBattleMonGfxAndAnimate
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- b _08172D8A
-_08172CDA:
- movs r1, 0xA0
- lsls r1, 3
- adds r0, r1, 0
- ldrh r2, [r5, 0x8]
- adds r0, r2
- strh r0, [r5, 0x8]
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08172D10
- ldr r0, =gSprites
- lsls r3, r6, 4
- adds r2, r3, r6
- lsls r2, 2
- adds r2, r0
- ldrh r1, [r5, 0x8]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- adds r4, r3, 0
- b _08172D28
- .pool
-_08172D10:
- ldr r0, =gSprites
- lsls r2, r6, 4
- adds r1, r2, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r5, 0x8]
- lsls r0, 16
- asrs r0, 24
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- adds r4, r2, 0
-_08172D28:
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x8]
- strh r1, [r0, 0x8]
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08172D68
- ldr r0, =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bgt _08172D7E
- movs r0, 0
- strh r0, [r1, 0x24]
- b _08172D84
- .pool
-_08172D68:
- ldr r0, =gSprites
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r0
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0
- blt _08172D7E
- strh r2, [r1, 0x24]
- movs r4, 0x1
- mov r8, r4
-_08172D7E:
- mov r0, r8
- cmp r0, 0
- beq _08172D8A
-_08172D84:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_08172D8A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172BF0
-
- thumb_func_start sub_8172D98
-sub_8172D98: @ 8172D98
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08172E14
- cmp r0, 0x1
- bgt _08172DC0
- cmp r0, 0
- beq _08172DC6
- b _08172E84
- .pool
-_08172DC0:
- cmp r0, 0x2
- beq _08172E4E
- b _08172E84
-_08172DC6:
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl sub_80A8364
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08172DE8
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- b _08172DF0
- .pool
-_08172DE8:
- ldr r1, =0x00003f44
- movs r0, 0x50
- bl SetGpuReg
-_08172DF0:
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08172E84
- .pool
-_08172E14:
- ldrh r0, [r4, 0xA]
- adds r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08172E84
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r2, [r4, 0x8]
- adds r2, 0x1
- strh r2, [r4, 0x8]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x10
- bne _08172E84
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _08172E84
-_08172E4E:
- ldr r1, =gBattlerSpriteIds
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r0, =0x06010000
- adds r1, r0
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldrb r0, [r4]
- bl ClearBehindSubstituteBit
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_08172E84:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172D98
-
- thumb_func_start sub_8172E9C
-sub_8172E9C: @ 8172E9C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gBattleAnimArgs
- ldr r1, =gBattleSpritesDataPtr
- ldr r2, [r1]
- ldr r1, =gBattleAnimAttacker
- ldrb r1, [r1]
- ldr r2, [r2]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r3, 0xE]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172E9C
-
- thumb_func_start sub_8172ED0
-sub_8172ED0: @ 8172ED0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gBattleAnimTarget
- ldr r1, =gEffectBattler
- ldrb r1, [r1]
- strb r1, [r2]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172ED0
-
- thumb_func_start sub_8172EF0
-sub_8172EF0: @ 8172EF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r5, r0, 0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r6, 0
- bl IsBattlerSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _08172FC8
- lsrs r0, r5, 16
- ldr r7, =0x0000ffff
- ands r5, r7
- eors r0, r5
- lsrs r1, r4, 16
- eors r0, r1
- ands r4, r7
- eors r0, r4
- cmp r0, 0x7
- bhi _08172F4E
- movs r0, 0x1
- mov r8, r0
-_08172F4E:
- mov r0, r8
- cmp r0, 0
- beq _08172FC8
- ldr r0, =0x000027f9
- bl GetSpriteTileStartByTag
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- bne _08172F6E
- ldr r0, =gBattleAnimPicTable + 0x748
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gBattleAnimPaletteTable + 0x748
- bl LoadCompressedObjectPaletteUsingHeap
-_08172F6E:
- ldr r5, =sub_8172FEC
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTasks
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- adds r2, r3
- movs r4, 0
- strh r6, [r2, 0x8]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- strh r6, [r1, 0x8]
- strh r4, [r2, 0xA]
- movs r0, 0x1
- strh r0, [r1, 0xA]
- b _08172FDE
- .pool
-_08172FC8:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_08172FDE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172EF0
-
- thumb_func_start sub_8172FEC
-sub_8172FEC: @ 8172FEC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0x22]
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0x3B
- bgt _08173018
- adds r0, r1, 0x1
- strh r0, [r4, 0x22]
- b _08173190
- .pool
-_08173018:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _08173026
- b _08173190
-_08173026:
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- beq _0817303A
- b _08173190
-_0817303A:
- ldrb r0, [r4, 0x8]
- mov r8, r0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08173074
- ldr r0, =gUnknown_085CE388
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- b _081730D6
- .pool
-_08173074:
- cmp r0, 0
- blt _081730A8
- cmp r0, 0x3
- bgt _081730A8
- ldr r0, =gUnknown_085CE3A0
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x4
- b _081730C8
- .pool
-_081730A8:
- ldr r0, =gUnknown_085CE3A0
- adds r1, r5, 0
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSprites
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x5
-_081730C8:
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_081730D6:
- ldr r2, =gTasks
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r6, r0, r2
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- mov r9, r1
- cmp r0, 0
- bne _08173118
- ldr r1, =gSprites
- lsls r2, r5, 4
- adds r0, r2, r5
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_81731FC
- str r1, [r0]
- adds r4, r2, 0
- b _08173160
- .pool
-_08173118:
- ldr r3, =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, =sub_8173250
- str r2, [r0]
- adds r1, r3
- ldr r0, =0x0000ffe0
- strh r0, [r1, 0x24]
- movs r0, 0x20
- strh r0, [r1, 0x26]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- movs r1, 0x1E
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08173160
- mov r0, r8
- bl GetBattlerSide
- lsls r0, 24
- movs r1, 0x3F
- cmp r0, 0
- bne _08173156
- movs r1, 0xC0
-_08173156:
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x66
- bl PlaySE12WithPanning
-_08173160:
- ldr r1, =gSprites
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- strh r7, [r0, 0x2E]
- ldr r1, =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- cmp r5, 0x40
- beq _08173184
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
-_08173184:
- movs r4, 0x1E
- ldrsh r0, [r1, r4]
- cmp r0, 0x5
- bne _08173190
- ldr r0, =sub_81731B0
- str r0, [r1]
-_08173190:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8172FEC
-
- thumb_func_start sub_81731B0
-sub_81731B0: @ 81731B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0x20
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _081731F0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- bne _081731EA
- ldrb r1, [r1, 0x8]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
-_081731EA:
- adds r0, r3, 0
- bl DestroyTask
-_081731F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81731B0
-
- thumb_func_start sub_81731FC
-sub_81731FC: @ 81731FC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x18
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0xC
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _08173246
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_08173246:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81731FC
-
- thumb_func_start sub_8173250
-sub_8173250: @ 8173250
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bgt _08173264
- adds r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _081732A6
-_08173264:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r1, [r4, 0x24]
- adds r1, 0x5
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- subs r0, 0x5
- strh r0, [r4, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x20
- ble _081732A6
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_081732A6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173250
-
- thumb_func_start sub_81732B0
-sub_81732B0: @ 81732B0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gBattleAnimPicTable + 0x868
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gBattleAnimPaletteTable + 0x868
- bl LoadCompressedObjectPaletteUsingHeap
- ldr r0, =0x0000281d
- bl IndexOfSpritePaletteTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81732B0
-
- thumb_func_start sub_81732E4
-sub_81732E4: @ 81732E4
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =0x0000281d
- adds r0, r5, 0
- bl FreeSpriteTilesByTag
- adds r0, r5, 0
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81732E4
-
- thumb_func_start sub_817330C
-sub_817330C: @ 817330C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitAnimSpritePos
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r5, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r5, 0x4]
- adds r0, r1
- strh r0, [r4, 0x32]
- movs r0, 0x1
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r5, [r5, 0x6]
- adds r0, r5
- strh r0, [r4, 0x36]
- ldr r0, =0x0000ffe0
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl InitAnimArcTranslation
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_8039E84
- str r1, [r0]
- ldr r0, =sub_817339C
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817330C
-
- thumb_func_start sub_817339C
-sub_817339C: @ 817339C
- push {lr}
- adds r3, r0, 0
- ldr r2, =gSprites
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081733C0
- ldr r0, =sub_81733D4
- str r0, [r3, 0x1C]
-_081733C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817339C
-
- thumb_func_start sub_81733D4
-sub_81733D4: @ 81733D4
- push {r4,lr}
- adds r4, r0, 0
- bl TranslateAnimArc
- lsls r0, 24
- cmp r0, 0
- beq _081733F6
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =sub_8173400
- str r0, [r4, 0x1C]
-_081733F6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81733D4
-
- thumb_func_start sub_8173400
-sub_8173400: @ 8173400
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gSprites
- ldr r3, =gBattlerSpriteIds
- ldr r2, =gBattleAnimAttacker
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- bge _08173448
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- ble _08173448
- ldrb r0, [r2]
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- bl DestroyAnimSprite
-_08173448:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173400
-
- thumb_func_start sub_817345C
-sub_817345C: @ 817345C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08173478
- cmp r0, 0x1
- beq _0817348C
- b _081734A0
- .pool
-_08173478:
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimAttacker
- strb r0, [r1]
- movs r0, 0x1
- b _08173498
- .pool
-_0817348C:
- movs r0, 0x1
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimAttacker
- strb r0, [r1]
- movs r0, 0
-_08173498:
- bl GetBattlerAtPosition
- ldr r1, =gBattleAnimTarget
- strb r0, [r1]
-_081734A0:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817345C
-
- thumb_func_start AnimTask_GetTrappedMoveAnimId
-AnimTask_GetTrappedMoveAnimId: @ 81734B4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrh r1, [r0]
- cmp r1, 0x53
- bne _081734D4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x1
- b _0817350C
- .pool
-_081734D4:
- cmp r1, 0xFA
- bne _081734E4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x2
- b _0817350C
- .pool
-_081734E4:
- cmp r1, 0x80
- bne _081734F4
- ldr r1, =gBattleAnimArgs
- movs r0, 0x3
- b _0817350C
- .pool
-_081734F4:
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _08173508
- ldr r1, =gBattleAnimArgs
- movs r0, 0x4
- b _0817350C
- .pool
-_08173508:
- ldr r1, =gBattleAnimArgs
- movs r0, 0
-_0817350C:
- strh r0, [r1]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end AnimTask_GetTrappedMoveAnimId
-
- thumb_func_start sub_817351C
-sub_817351C: @ 817351C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gBattleAnimAttacker
- ldr r1, =gBattleSpritesDataPtr
- ldr r2, [r1]
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- strb r1, [r3]
- ldr r3, =gBattleAnimTarget
- ldr r1, [r2, 0x8]
- ldrh r1, [r1]
- lsrs r1, 8
- strb r1, [r3]
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817351C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_intro.s b/asm/battle_intro.s
deleted file mode 100644
index 04a0301ce..000000000
--- a/asm/battle_intro.s
+++ /dev/null
@@ -1,2035 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetAnimBgAttribute
-SetAnimBgAttribute: @ 811802C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r6, 0x3
- bls _08118040
- b _08118132
-_08118040:
- ldr r0, =gUnknown_0859741A
- adds r0, r6, r0
- ldrb r0, [r0]
- bl GetGpuReg
- ldr r1, =gUnknown_0203A114
- strh r0, [r1]
- cmp r5, 0x6
- bhi _08118124
- lsls r0, r5, 2
- ldr r1, =_08118068
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118068:
- .4byte _08118084
- .4byte _08118098
- .4byte _081180B0
- .4byte _081180C8
- .4byte _081180E0
- .4byte _081180FC
- .4byte _08118110
-_08118084:
- ldr r2, =gUnknown_0203A114
- lsls r3, r4, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- b _08118124
- .pool
-_08118098:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- movs r0, 0x21
- negs r0, r0
- b _0811811E
- .pool
-_081180B0:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 6
- ldrb r2, [r3]
- movs r0, 0x41
- negs r0, r0
- b _081180EE
- .pool
-_081180C8:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0xD
- negs r0, r0
- b _081180EE
- .pool
-_081180E0:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x4
- negs r0, r0
-_081180EE:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08118124
- .pool
-_081180FC:
- ldr r2, =gUnknown_0203A114
- lsls r3, r4, 7
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- b _08118124
- .pool
-_08118110:
- ldr r3, =gUnknown_0203A114
- movs r0, 0x1F
- adds r1, r4, 0
- ands r1, r0
- ldrb r2, [r3, 0x1]
- movs r0, 0x20
- negs r0, r0
-_0811811E:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
-_08118124:
- ldr r0, =gUnknown_0859741A
- adds r0, r6, r0
- ldrb r0, [r0]
- ldr r1, =gUnknown_0203A114
- ldrh r1, [r1]
- bl SetGpuReg
-_08118132:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetAnimBgAttribute
-
- thumb_func_start GetAnimBgAttribute
-GetAnimBgAttribute: @ 8118140
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x3
- bhi _081181C8
- ldr r0, =gUnknown_0859741E
- adds r0, r2, r0
- ldrb r0, [r0]
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- cmp r4, 0x6
- bhi _081181C8
- lsls r0, r4, 2
- ldr r1, =_08118174
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118174:
- .4byte _08118190
- .4byte _08118198
- .4byte _081181A0
- .4byte _081181A8
- .4byte _081181B0
- .4byte _081181B8
- .4byte _081181C0
-_08118190:
- ldr r0, [sp]
- lsls r0, 16
- lsrs r0, 30
- b _081181CA
-_08118198:
- ldr r0, [sp]
- lsls r0, 18
- lsrs r0, 31
- b _081181CA
-_081181A0:
- ldr r0, [sp]
- lsls r0, 25
- lsrs r0, 31
- b _081181CA
-_081181A8:
- ldr r0, [sp]
- lsls r0, 28
- lsrs r0, 30
- b _081181CA
-_081181B0:
- ldr r0, [sp]
- lsls r0, 30
- lsrs r0, 30
- b _081181CA
-_081181B8:
- ldr r0, [sp]
- lsls r0, 24
- lsrs r0, 31
- b _081181CA
-_081181C0:
- ldr r0, [sp]
- lsls r0, 19
- lsrs r0, 27
- b _081181CA
-_081181C8:
- movs r0, 0
-_081181CA:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetAnimBgAttribute
-
- thumb_func_start HandleIntroSlide
-HandleIntroSlide: @ 81181D4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08118208
- ldr r0, =gPartnerTrainerId
- ldrh r1, [r0]
- ldr r0, =0x00000c03
- cmp r1, r0
- beq _08118208
- ldr r0, =sub_8118D68
- b _08118258
- .pool
-_08118208:
- ldr r2, [r2]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0811821C
- ldr r0, =task00_battle_intro_wireless
- b _08118258
- .pool
-_0811821C:
- ldr r0, =0x003f0100
- ands r0, r2
- cmp r0, 0
- beq _08118230
- ldr r0, =task_battle_intro_anim
- b _08118258
- .pool
-_08118230:
- movs r0, 0x80
- lsls r0, 5
- ands r2, r0
- cmp r2, 0
- beq _08118250
- ldr r0, =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08118250
- movs r4, 0x3
- ldr r0, =task00_battle_intro_80BC6C8
- b _08118258
- .pool
-_08118250:
- ldr r1, =gUnknown_08597424
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
-_08118258:
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r4, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end HandleIntroSlide
-
- thumb_func_start sub_811828C
-sub_811828C: @ 811828C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811828C
-
- thumb_func_start task_battle_intro_80BC47C
-task_battle_intro_80BC47C: @ 81182EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
- strh r0, [r1]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- mov r8, r1
- cmp r0, 0x4
- bls _08118318
- b _0811852A
-_08118318:
- lsls r0, 2
- ldr r1, =_08118330
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118330:
- .4byte _08118344
- .4byte _08118374
- .4byte _0811839C
- .4byte _081183E4
- .4byte _08118524
-_08118344:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08118360
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x10
- b _0811836A
- .pool
-_08118360:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- add r0, r8
- movs r1, 0x1
-_0811836A:
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _0811852A
-_08118374:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- mov r3, r8
- adds r1, r0, r3
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _0811838C
- b _0811852A
-_0811838C:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _0811852A
-_0811839C:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _081183B4
- b _0811852A
-_081183B4:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _0811852A
- .pool
-_081183E4:
- lsls r0, r4, 2
- adds r1, r0, r4
- lsls r1, 3
- mov r5, r8
- adds r2, r1, r5
- ldrh r3, [r2, 0xE]
- movs r5, 0xE
- ldrsh r1, [r2, r5]
- mov r12, r0
- cmp r1, 0
- beq _08118400
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _0811842E
-_08118400:
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _08118420
- ldr r2, =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, =0x0000ffb0
- cmp r1, r0
- beq _0811842E
- subs r0, r1, 0x2
- b _0811842C
- .pool
-_08118420:
- ldr r2, =gBattle_BG1_Y
- ldrh r1, [r2]
- ldr r0, =0x0000ffc8
- cmp r1, r0
- beq _0811842E
- subs r0, r1, 0x1
-_0811842C:
- strh r0, [r2]
-_0811842E:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08118442
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_08118442:
- mov r5, r12
- adds r0, r5, r4
- lsls r0, 3
- mov r2, r8
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0811845A
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_0811845A:
- movs r3, 0
- ldr r5, =gScanlineEffect
- mov r9, r5
- ldr r7, =gScanlineEffectRegBuffers
- mov r6, r9
- adds r5, r1, 0
-_08118466:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118466
- cmp r3, 0x9F
- bgt _081184AA
- ldr r7, =gScanlineEffectRegBuffers
- ldr r6, =gScanlineEffect
- ldr r1, =gTasks
- mov r2, r12
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r1
-_08118490:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r5, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118490
-_081184AA:
- mov r3, r12
- adds r0, r3, r4
- lsls r0, 3
- mov r5, r8
- adds r1, r0, r5
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- cmp r2, 0
- bne _0811852A
- movs r0, 0x3
- mov r3, r9
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _0811852A
- .pool
-_08118524:
- adds r0, r4, 0
- bl sub_811828C
-_0811852A:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_battle_intro_80BC47C
-
- thumb_func_start task00_battle_intro_80BC6C8
-task00_battle_intro_80BC6C8: @ 8118538
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0xA
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x3
- beq _08118578
- cmp r0, 0x3
- bgt _08118568
- cmp r0, 0x2
- beq _0811856C
- b _08118580
- .pool
-_08118568:
- cmp r0, 0x4
- bne _08118580
-_0811856C:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- b _0811857E
- .pool
-_08118578:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_0811857E:
- strh r0, [r1]
-_08118580:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r4, r1, r2
- movs r3, 0xA
- ldrsh r1, [r4, r3]
- adds r6, r0, 0
- cmp r1, 0x4
- bne _081185E4
- ldr r7, =gBattle_BG1_Y
- ldrh r0, [r4, 0x14]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081185A6
- ldr r1, =0x000001ff
- adds r0, r1
-_081185A6:
- asrs r0, 9
- subs r0, 0x8
- strh r0, [r7]
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0xB3
- bgt _081185C8
- adds r0, r1, 0x4
- b _081185CA
- .pool
-_081185C8:
- adds r0, r1, 0x6
-_081185CA:
- strh r0, [r4, 0x14]
- ldr r2, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r3, r0, r2
- movs r0, 0x14
- ldrsh r1, [r3, r0]
- movs r0, 0xB4
- lsls r0, 1
- cmp r1, r0
- bne _081185E4
- movs r0, 0
- strh r0, [r3, 0x14]
-_081185E4:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r2
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x4
- bls _081185F4
- b _0811881A
-_081185F4:
- lsls r0, 2
- ldr r1, =_08118608
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118608:
- .4byte _0811861C
- .4byte _0811864C
- .4byte _08118678
- .4byte _081186C8
- .4byte _08118814
-_0811861C:
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x10
- strh r3, [r2, 0x10]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08118640
- strh r3, [r2, 0xC]
- b _08118644
- .pool
-_08118640:
- movs r0, 0x1
- strh r0, [r2, 0xC]
-_08118644:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _0811881A
-_0811864C:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118662
- b _0811881A
-_08118662:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _0811881A
- .pool
-_08118678:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118690
- b _0811881A
-_08118690:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _0811881A
- .pool
-_081186C8:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118708
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08118728
- ldr r1, =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0xF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _08118728
- .pool
-_08118708:
- ldrh r2, [r1, 0x10]
- movs r0, 0x1F
- ands r0, r2
- cmp r0, 0
- beq _08118728
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _08118728
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r1, 0x10]
- movs r0, 0x4
- strh r0, [r1, 0x12]
-_08118728:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0811873C
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_0811873C:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118752
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_08118752:
- movs r3, 0
- ldr r0, =gScanlineEffect
- mov r8, r0
- ldr r2, =gScanlineEffectRegBuffers
- mov r12, r2
- mov r7, r8
- adds r4, r1, 0
-_08118760:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118760
- cmp r3, 0x9F
- bgt _081187A4
- ldr r0, =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, =gScanlineEffect
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r4, r0, r1
-_0811878A:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _0811878A
-_081187A4:
- ldr r1, =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _0811881A
- movs r0, 0x3
- mov r3, r8
- strb r0, [r3, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _0811881A
- .pool
-_08118814:
- adds r0, r5, 0
- bl sub_811828C
-_0811881A:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _08118832
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_08118832:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task00_battle_intro_80BC6C8
-
- thumb_func_start task_battle_intro_anim
-task_battle_intro_anim: @ 8118844
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x8
- strh r0, [r1]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _0811886E
- b _08118A96
-_0811886E:
- lsls r0, 2
- ldr r1, =_08118884
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118884:
- .4byte _08118898
- .4byte _081188F0
- .4byte _0811891C
- .4byte _0811896C
- .4byte _08118A90
-_08118898:
- ldr r1, =0x00001842
- movs r0, 0x50
- bl SetGpuReg
- ldr r4, =0x00000808
- movs r0, 0x52
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- strh r4, [r2, 0x10]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _081188E4
- movs r0, 0x10
- b _081188E6
- .pool
-_081188E4:
- movs r0, 0x1
-_081188E6:
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _08118A96
-_081188F0:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118908
- b _08118A96
-_08118908:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- b _08118A96
- .pool
-_0811891C:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118934
- b _08118A96
-_08118934:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- movs r0, 0x1
- strh r0, [r1, 0x12]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118A96
- .pool
-_0811896C:
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r2, r1, r4
- ldrh r3, [r2, 0xE]
- movs r6, 0xE
- ldrsh r1, [r2, r6]
- mov r12, r0
- cmp r1, 0
- beq _08118986
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- b _081189A6
-_08118986:
- ldrh r1, [r2, 0x10]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _081189A6
- ldrh r0, [r2, 0x12]
- subs r0, 0x1
- strh r0, [r2, 0x12]
- lsls r0, 16
- cmp r0, 0
- bne _081189A6
- adds r0, r1, 0
- adds r0, 0xFF
- strh r0, [r2, 0x10]
- movs r0, 0x6
- strh r0, [r2, 0x12]
-_081189A6:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081189BA
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_081189BA:
- mov r6, r12
- adds r0, r6, r5
- lsls r0, 3
- adds r1, r0, r4
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _081189D0
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_081189D0:
- movs r3, 0
- ldr r6, =gScanlineEffect
- mov r8, r6
- ldr r7, =gScanlineEffectRegBuffers
- adds r4, r1, 0
-_081189DA:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _081189DA
- cmp r3, 0x9F
- bgt _08118A1E
- ldr r7, =gScanlineEffectRegBuffers
- ldr r6, =gScanlineEffect
- ldr r1, =gTasks
- mov r2, r12
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r1
-_08118A04:
- lsls r2, r3, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118A04
-_08118A1E:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xC
- ldrsh r2, [r1, r3]
- cmp r2, 0
- bne _08118A96
- movs r0, 0x3
- mov r6, r8
- strb r0, [r6, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r2, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _08118A96
- .pool
-_08118A90:
- adds r0, r5, 0
- bl sub_811828C
-_08118A96:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x4
- beq _08118AB0
- ldrh r1, [r1, 0x10]
- movs r0, 0x52
- bl SetGpuReg
-_08118AB0:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_battle_intro_anim
-
- thumb_func_start task00_battle_intro_wireless
-task00_battle_intro_wireless: @ 8118AC0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- ble _08118B36
- movs r2, 0x10
- ldrsh r0, [r7, r2]
- cmp r0, 0
- bne _08118B36
- ldr r2, =gBattle_BG1_X
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _08118AFE
- cmp r1, 0x4F
- bhi _08118B18
-_08118AFE:
- adds r0, r1, 0x3
- strh r0, [r2]
- ldr r1, =gBattle_BG2_X
- ldrh r0, [r1]
- subs r0, 0x3
- strh r0, [r1]
- b _08118B36
- .pool
-_08118B18:
- str r5, [sp]
- ldr r1, =0x0600e000
- ldr r4, =0x05000200
- mov r0, sp
- adds r2, r4, 0
- bl CpuSet
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- ldr r1, =0x0600f000
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x1
- strh r0, [r7, 0x10]
-_08118B36:
- ldr r0, =gTasks
- lsls r2, r6, 2
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r1, [r1, r3]
- mov r9, r0
- adds r5, r2, 0
- cmp r1, 0x4
- bls _08118B4E
- b _08118D5A
-_08118B4E:
- lsls r0, r1, 2
- ldr r1, =_08118B6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118B6C:
- .4byte _08118B80
- .4byte _08118B92
- .4byte _08118C38
- .4byte _08118C7C
- .4byte _08118D54
-_08118B80:
- adds r0, r5, r6
- lsls r0, 3
- add r0, r9
- movs r1, 0x20
- strh r1, [r0, 0xC]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08118D5A
-_08118B92:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118BA8
- b _08118D5A
-_08118BA8:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r4, =gSprites
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7D
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r3, [r1, 0x1]
- movs r2, 0xD
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- movs r3, 0x8
- mov r9, r3
- mov r3, r9
- orrs r0, r3
- strb r0, [r1, 0x1]
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x7D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1C
- adds r1, r4
- mov r8, r1
- add r0, r8
- ldr r6, =sub_8038B74
- str r6, [r0]
- adds r3, 0x7E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- ands r2, r1
- mov r3, r9
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldr r0, [r5]
- adds r0, 0x7E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- str r6, [r0]
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- ldr r1, =0x00003f06
- movs r0, 0x4A
- bl SetGpuReg
- b _08118D5A
- .pool
-_08118C38:
- ldr r1, =gBattle_WIN0V
- ldrh r0, [r1]
- subs r0, 0xFF
- strh r0, [r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- movs r1, 0xC0
- lsls r1, 6
- cmp r0, r1
- beq _08118C50
- b _08118D5A
-_08118C50:
- adds r1, r5, r6
- lsls r1, 3
- add r1, r9
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- movs r0, 0x20
- strh r0, [r1, 0xE]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118D5A
- .pool
-_08118C7C:
- ldr r2, =gBattle_WIN0V
- ldrh r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08118C90
- ldr r3, =0xfffffc04
- adds r0, r1, r3
- strh r0, [r2]
-_08118C90:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08118CA6
- subs r0, r2, 0x2
- strh r0, [r1, 0xC]
-_08118CA6:
- movs r3, 0
- ldr r0, =gScanlineEffect
- mov r12, r0
- ldr r2, =gScanlineEffectRegBuffers
- mov r8, r2
- mov r7, r12
- adds r4, r1, 0
-_08118CB4:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x4F
- ble _08118CB4
- cmp r3, 0x9F
- bgt _08118CF8
- ldr r0, =gScanlineEffectRegBuffers
- mov r8, r0
- ldr r7, =gScanlineEffect
- ldr r1, =gTasks
- adds r0, r5, r6
- lsls r0, 3
- adds r4, r0, r1
-_08118CDE:
- lsls r2, r3, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r8
- ldrh r0, [r4, 0xC]
- negs r0, r0
- strh r0, [r2]
- adds r3, 0x1
- cmp r3, 0x9F
- ble _08118CDE
-_08118CF8:
- adds r0, r5, r6
- lsls r0, 3
- mov r2, r9
- adds r1, r0, r2
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08118D5A
- movs r0, 0x3
- mov r2, r12
- strb r0, [r2, 0x15]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- b _08118D5A
- .pool
-_08118D54:
- adds r0, r6, 0
- bl sub_811828C
-_08118D5A:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task00_battle_intro_wireless
-
- thumb_func_start sub_8118D68
-sub_8118D68: @ 8118D68
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0x5
- bls _08118D86
- b _08118FB2
-_08118D86:
- lsls r0, 2
- ldr r1, =_08118D98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08118D98:
- .4byte _08118DB0
- .4byte _08118DBE
- .4byte _08118E4C
- .4byte _08118EA8
- .4byte _08118F00
- .4byte _08118FAC
-_08118DB0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0xC]
- b _08118F84
-_08118DBE:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r6
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- lsls r0, 16
- cmp r0, 0
- beq _08118DD4
- b _08118FB2
-_08118DD4:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r1, =0x00005c0a
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, =0x00005e0a
- movs r0, 0xC
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- ldr r2, =0x0000f040
- adds r0, r2, 0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- movs r1, 0xF8
- lsls r1, 6
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f3f
- movs r0, 0x4A
- bl SetGpuReg
- ldr r1, =gBattle_BG0_Y
- ldr r2, =0x0000ffd0
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gBattle_BG1_X
- movs r0, 0xF0
- strh r0, [r1]
- ldr r1, =gBattle_BG2_X
- subs r2, 0xC0
- adds r0, r2, 0
- strh r0, [r1]
- b _08118FB2
- .pool
-_08118E4C:
- ldr r2, =gBattle_WIN0V
- ldrh r3, [r2]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- adds r1, r3, r0
- strh r1, [r2]
- movs r5, 0xFF
- lsls r5, 8
- ands r1, r5
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- beq _08118E6E
- adds r0, r3, 0
- adds r0, 0xFF
- strh r0, [r2]
-_08118E6E:
- ldrh r0, [r2]
- adds r1, r5, 0
- ands r1, r0
- movs r0, 0x80
- lsls r0, 6
- cmp r1, r0
- beq _08118E7E
- b _08118FB2
-_08118E7E:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r6
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0xF0
- strh r0, [r1, 0xC]
- ldr r2, =gIntroSlideFlags
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- strh r0, [r2]
- b _08118FB2
- .pool
-_08118EA8:
- ldr r3, =gBattle_WIN0V
- ldrh r2, [r3]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- movs r1, 0x98
- lsls r1, 7
- cmp r0, r1
- beq _08118EC2
- movs r1, 0xFF
- lsls r1, 2
- adds r0, r2, r1
- strh r0, [r3]
-_08118EC2:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r3, r0, r6
- ldrh r1, [r3, 0xC]
- movs r2, 0xC
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _08118ED8
- subs r0, r1, 0x2
- strh r0, [r3, 0xC]
-_08118ED8:
- ldr r1, =gBattle_BG1_X
- ldrh r0, [r3, 0xC]
- strh r0, [r1]
- ldr r2, =gBattle_BG2_X
- negs r1, r0
- strh r1, [r2]
- lsls r0, 16
- cmp r0, 0
- bne _08118FB2
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- b _08118FB2
- .pool
-_08118F00:
- ldr r1, =gBattle_BG0_Y
- ldrh r0, [r1]
- adds r3, r0, 0x2
- strh r3, [r1]
- ldr r1, =gBattle_BG2_Y
- ldrh r0, [r1]
- adds r0, 0x2
- strh r0, [r1]
- ldr r5, =gBattle_WIN0V
- ldrh r2, [r5]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- movs r1, 0xA0
- lsls r1, 7
- cmp r0, r1
- beq _08118F28
- adds r0, r2, 0
- adds r0, 0xFF
- strh r0, [r5]
-_08118F28:
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r0, 0
- bne _08118FB2
- str r0, [sp]
- ldr r1, =0x0600e000
- ldr r2, =0x05000800
- mov r0, sp
- bl CpuSet
- movs r0, 0
- bl GetGpuReg
- ldr r1, =0x0000bfff
- ands r1, r0
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r1, 0x9C
- lsls r1, 8
- movs r0, 0xA
- bl SetGpuReg
- movs r1, 0xBC
- lsls r1, 7
- movs r0, 0xC
- bl SetGpuReg
- ldr r1, =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
-_08118F84:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _08118FB2
- .pool
-_08118FAC:
- adds r0, r4, 0
- bl sub_811828C
-_08118FB2:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8118D68
-
- thumb_func_start sub_8118FBC
-sub_8118FBC: @ 8118FBC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- adds r6, r2, 0
- adds r4, r3, 0
- ldr r0, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r2, [sp, 0x2C]
- mov r9, r2
- ldr r5, [sp, 0x30]
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gMonSpritesGfxPtr
- ldr r2, [r1]
- lsls r4, 2
- adds r2, 0x4
- adds r2, r4
- ldr r1, =gBattleMonForms
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 11
- ldr r0, [r2]
- adds r0, r1
- movs r2, 0x80
- lsls r2, 3
- adds r1, r7, 0
- bl CpuSet
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 5
- adds r1, r7, 0
- adds r3, r5, 0
- bl LoadBgTiles
- adds r0, r6, 0
- adds r0, 0x8
- cmp r6, r0
- bge _08119068
- mov r12, r0
- mov r2, r8
- lsls r7, r2, 1
-_0811903A:
- mov r1, r8
- adds r2, r1, 0
- adds r2, 0x8
- adds r4, r6, 0x1
- cmp r1, r2
- bge _08119062
- mov r0, r10
- lsls r3, r0, 12
- lsls r0, r6, 6
- add r0, r9
- adds r6, r7, r0
- subs r1, r2, r1
-_08119052:
- adds r0, r5, 0
- orrs r0, r3
- strh r0, [r6]
- adds r5, 0x1
- adds r6, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08119052
-_08119062:
- adds r6, r4, 0
- cmp r6, r12
- blt _0811903A
-_08119068:
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 4
- mov r1, r9
- movs r3, 0
- bl LoadBgTilemap
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8118FBC
-
- thumb_func_start sub_8119094
-sub_8119094: @ 8119094
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- mov r8, r5
- ldr r5, [sp, 0x2C]
- ldr r6, [sp, 0x30]
- mov r9, r6
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 24
- lsls r2, 24
- lsls r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- mov r7, r8
- lsls r7, 16
- lsrs r6, r7, 16
- lsls r5, 24
- lsrs r5, 24
- mov r0, r9
- lsls r0, 24
- mov r9, r0
- ldr r4, =0x040000d4
- ldr r0, =gMonSpritesGfxPtr
- ldr r0, [r0]
- lsrs r2, 22
- adds r0, 0x4
- adds r0, r2
- lsrs r3, 13
- ldr r0, [r0]
- adds r0, r3
- str r0, [r4]
- movs r0, 0xC0
- lsls r0, 19
- adds r6, r0
- str r6, [r4, 0x4]
- ldr r0, =0x80000400
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r2, r7, 0
- lsrs r2, 21
- mov r6, r9
- lsrs r6, 15
- subs r4, r2, r6
- lsrs r0, r1, 24
- adds r1, r0, 0
- adds r1, 0x8
- cmp r0, r1
- bge _08119148
- mov r9, r1
- mov r7, r12
- lsls r7, 1
- mov r8, r7
- lsls r5, 11
- str r5, [sp]
-_08119110:
- mov r2, r12
- adds r3, r2, 0
- adds r3, 0x8
- adds r5, r0, 0x1
- cmp r2, r3
- bge _08119142
- mov r1, r10
- lsls r6, r1, 12
- lsls r0, 6
- movs r7, 0xC0
- lsls r7, 19
- adds r0, r7
- ldr r1, [sp]
- adds r0, r1, r0
- mov r7, r8
- adds r1, r7, r0
- subs r2, r3, r2
-_08119132:
- adds r0, r4, 0
- orrs r0, r6
- strh r0, [r1]
- adds r4, 0x1
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _08119132
-_08119142:
- adds r0, r5, 0
- cmp r0, r9
- blt _08119110
-_08119148:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8119094
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
deleted file mode 100644
index f7c146e3e..000000000
--- a/asm/contest_painting.s
+++ /dev/null
@@ -1,1197 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812FDA8
-sub_812FDA8: @ 812FDA8
- push {r4-r7,lr}
- ldr r3, =gUnknown_02039F5D
- ldr r4, =gUnknown_02039F5C
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- subs r0, 0x1
- lsls r1, r0, 5
- adds r2, r1
- ldr r1, =gUnknown_02039F3C
- ldr r5, =0x00002e90
- adds r2, r5
- ldm r2!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r2!, {r6,r7}
- stm r1!, {r6,r7}
- strb r0, [r3]
- movs r0, 0
- strb r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FDA8
-
- thumb_func_start sub_812FDEC
-sub_812FDEC: @ 812FDEC
- push {lr}
- bl sub_812FE58
- pop {r0}
- bx r0
- thumb_func_end sub_812FDEC
-
- thumb_func_start sub_812FDF8
-sub_812FDF8: @ 812FDF8
- push {lr}
- bl sub_812FFC8
- bl RunTextPrinters
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_812FDF8
-
- thumb_func_start sub_812FE0C
-sub_812FE0C: @ 812FE0C
- push {r4,r5,lr}
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- ldr r4, =gUnknown_030061C4
- ldr r0, [r4]
- bl Free
- movs r5, 0
- str r5, [r4]
- ldr r4, =gUnknown_03006190
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, =gUnknown_030011F7
- ldrb r0, [r0]
- bl RemoveWindow
- movs r0, 0x1
- bl GetBgTilemapBuffer
- bl Free
- bl FreeMonSpritesGfx
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FE0C
-
- thumb_func_start sub_812FE58
-sub_812FE58: @ 812FE58
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _0812FE6E
- b _0812FFA0
-_0812FE6E:
- lsls r0, 2
- ldr r1, =_0812FE80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0812FE80:
- .4byte _0812FE94
- .4byte _0812FEC8
- .4byte _0812FF14
- .4byte _0812FF2A
- .4byte _0812FF54
-_0812FE94:
- bl ScanlineEffect_Stop
- movs r0, 0
- bl SetVBlankCallback
- bl AllocateMonSpritesGfx
- ldr r1, =gUnknown_030061C0
- ldr r0, =gUnknown_02039F3C
- str r0, [r1]
- movs r0, 0x1
- bl sub_8130238
- bl sub_81301EC
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0812FF3E
- .pool
-_0812FEC8:
- bl ResetPaletteFade
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- movs r5, 0
- ldr r1, =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_0812FEE2:
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _0812FEE2
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetSpriteData
- b _0812FF36
- .pool
-_0812FF14:
- ldrh r0, [r4, 0x20]
- bl SeedRng
- bl InitKeys
- bl sub_8130098
- movs r0, 0x87
- lsls r0, 3
- adds r1, r4, r0
- b _0812FF3E
-_0812FF2A:
- ldr r0, =gUnknown_02039F5D
- ldrb r0, [r0]
- ldr r1, =gUnknown_02039F5C
- ldrb r1, [r1]
- bl sub_8130884
-_0812FF36:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_0812FF3E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0812FFA0
- .pool
-_0812FF54:
- ldr r0, =gUnknown_02039F5D
- ldrb r0, [r0]
- ldr r1, =gUnknown_02039F5C
- ldrb r1, [r1]
- bl sub_813010C
- ldr r0, =gUnknown_085B0838
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r1, 0xA0
- lsls r1, 19
- movs r4, 0
- str r4, [sp]
- ldr r0, =0x040000d4
- mov r2, sp
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0x2
- bl BeginFastPaletteFade
- ldr r0, =sub_81302D0
- bl SetVBlankCallback
- ldr r0, =gUnknown_030011F0
- strb r4, [r0]
- movs r1, 0x9A
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, =sub_812FDF8
- bl SetMainCallback2
-_0812FFA0:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FE58
-
- thumb_func_start sub_812FFC8
-sub_812FFC8: @ 812FFC8
- push {lr}
- sub sp, 0x4
- ldr r3, =gUnknown_030011F0
- ldrb r1, [r3]
- cmp r1, 0x1
- beq _0813001C
- cmp r1, 0x1
- bgt _0812FFE4
- cmp r1, 0
- beq _0812FFEA
- b _08130082
- .pool
-_0812FFE4:
- cmp r1, 0x2
- beq _0813005C
- b _08130082
-_0812FFEA:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812FFFA
- movs r0, 0x1
- strb r0, [r3]
-_0812FFFA:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- ldrh r0, [r1]
- cmp r0, 0
- beq _08130082
- subs r0, 0x1
- b _08130080
- .pool
-_0813001C:
- ldr r0, =gMain
- ldrh r2, [r0, 0x2E]
- ands r1, r2
- cmp r1, 0
- bne _0813002E
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08130040
-_0813002E:
- movs r0, 0x2
- strb r0, [r3]
- subs r0, 0x3
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08130040:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- movs r0, 0
- b _08130080
- .pool
-_0813005C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0813006E
- ldr r0, =sub_812FE0C
- bl SetMainCallback2
-_0813006E:
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08130082
- ldr r1, =gUnknown_030011F4
- ldrh r0, [r1]
- cmp r0, 0x1D
- bhi _08130082
- adds r0, 0x1
-_08130080:
- strh r0, [r1]
-_08130082:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812FFC8
-
- thumb_func_start sub_8130098
-sub_8130098: @ 8130098
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085B07E8
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r4, =gUnknown_030011F7
- ldr r0, =gUnknown_085B07EC
- bl AddWindow
- strb r0, [r4]
- bl DeactivateAllTextPrinters
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130098
-
- thumb_func_start sub_813010C
-sub_813010C: @ 813010C
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _081301D4
- ldr r6, =gUnknown_030061C0
- ldr r1, [r6]
- ldrb r5, [r1, 0xA]
- cmp r0, 0x7
- bhi _08130190
- ldr r4, =gStringVar1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_818E868
- ldr r1, =gText_Space
- adds r0, r4, 0
- bl StringAppend
- ldr r1, =gContestRankTextPointers
- ldr r0, [r6]
- ldrb r0, [r0, 0x1E]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringAppend
- ldr r4, =gStringVar2
- ldr r1, [r6]
- adds r1, 0x16
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_81DB5AC
- ldr r0, =gStringVar3
- ldr r1, [r6]
- adds r1, 0xB
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r1, =gUnknown_0827EA0C
- bl StringExpandPlaceholders
- b _081301A6
- .pool
-_08130190:
- ldr r0, =gStringVar1
- adds r1, 0xB
- bl StringCopy
- ldr r0, =gStringVar4
- ldr r2, =gContestPaintingDescriptionPointers
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
-_081301A6:
- ldr r4, =gStringVar4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xD0
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- ldr r0, =gUnknown_030011F7
- ldrb r0, [r0]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- bl AddTextPrinterParameterized
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
-_081301D4:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_813010C
-
- thumb_func_start sub_81301EC
-sub_81301EC: @ 81301EC
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r2, =0x04000200
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- ldr r1, =0x00000c42
- movs r0, 0x8
- bl SetGpuReg
- ldr r1, =0x00000a45
- movs r0, 0xA
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81301EC
-
- thumb_func_start sub_8130238
-sub_8130238: @ 8130238
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0813025C
- ldr r0, =gUnknown_030011F6
- strb r1, [r0]
- ldr r0, =gUnknown_030011F2
- strh r1, [r0]
- ldr r0, =gUnknown_030011F4
- strh r1, [r0]
- b _0813026E
- .pool
-_0813025C:
- ldr r1, =gUnknown_030011F6
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gUnknown_030011F2
- movs r0, 0xF
- strh r0, [r1]
- ldr r1, =gUnknown_030011F4
- movs r0, 0x1E
- strh r0, [r1]
-_0813026E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130238
-
- thumb_func_start sub_8130280
-sub_8130280: @ 8130280
- push {lr}
- ldr r0, =gUnknown_030011F6
- ldrb r0, [r0]
- cmp r0, 0
- bne _08130298
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- b _081302C0
- .pool
-_08130298:
- ldr r1, =0x00000a45
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, =gUnknown_030011F2
- ldr r0, =gUnknown_030011F4
- ldrh r0, [r0]
- lsrs r0, 1
- strh r0, [r1]
- lsls r1, r0, 12
- lsls r2, r0, 8
- orrs r1, r2
- lsls r2, r0, 4
- orrs r1, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4C
- bl SetGpuReg
-_081302C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130280
-
- thumb_func_start sub_81302D0
-sub_81302D0: @ 81302D0
- push {lr}
- bl sub_8130280
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81302D0
-
- thumb_func_start sub_81302E8
-sub_81302E8: @ 81302E8
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r6, =gUnknown_030061C0
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- ldr r2, [r0]
- adds r0, r5, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- ldr r7, =gUnknown_030061C4
- ldr r1, [r7]
- bl LZDecompressVram
- cmp r4, 0
- bne _08130348
- lsls r0, r5, 3
- ldr r1, =gMonFrontPicTable
- adds r0, r1
- ldr r4, =gMonSpritesGfxPtr
- ldr r1, [r4]
- ldr r1, [r1, 0x8]
- ldr r2, [r6]
- ldr r3, [r2]
- adds r2, r5, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- ldr r1, [r7]
- ldr r2, =gUnknown_03006190
- ldr r2, [r2]
- bl sub_8130380
- b _0813036C
- .pool
-_08130348:
- lsls r0, r5, 3
- ldr r1, =gMonBackPicTable
- adds r0, r1
- ldr r4, =gMonSpritesGfxPtr
- ldr r1, [r4]
- ldr r1, [r1, 0x4]
- ldr r2, [r6]
- ldr r3, [r2]
- adds r2, r5, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- ldr r1, [r7]
- ldr r2, =gUnknown_03006190
- ldr r2, [r2]
- bl sub_8130380
-_0813036C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81302E8
-
- thumb_func_start sub_8130380
-sub_8130380: @ 8130380
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r10, r0
- mov r9, r1
- str r2, [sp]
- movs r0, 0
-_08130394:
- movs r3, 0
- adds r1, r0, 0x1
- str r1, [sp, 0x4]
- lsls r0, 3
- str r0, [sp, 0x8]
-_0813039E:
- movs r1, 0
- adds r2, r3, 0x1
- mov r8, r2
- ldr r7, [sp, 0x8]
- adds r0, r7, r3
- lsls r0, 5
- mov r12, r0
- lsls r4, r3, 3
-_081303AE:
- movs r3, 0
- lsls r0, r1, 2
- adds r6, r1, 0x1
- mov r2, r12
- adds r5, r2, r0
- ldr r7, [sp, 0x8]
- adds r0, r7, r1
- lsls r0, 7
- ldr r1, [sp]
- adds r2, r0, r1
-_081303C2:
- lsrs r0, r3, 1
- adds r0, r5, r0
- add r0, r10
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _081303D6
- lsrs r1, 4
- b _081303DA
-_081303D6:
- movs r0, 0xF
- ands r1, r0
-_081303DA:
- cmp r1, 0
- bne _081303EC
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- movs r7, 0x80
- lsls r7, 8
- adds r1, r7, 0
- b _081303F8
-_081303EC:
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- lsls r1, 1
- add r1, r9
- ldrh r1, [r1]
-_081303F8:
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _081303C2
- lsls r0, r6, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _081303AE
- mov r1, r8
- lsls r0, r1, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _0813039E
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x7
- bls _08130394
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8130380
-
- thumb_func_start sub_8130430
-sub_8130430: @ 8130430
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_085A989C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- cmp r4, 0x1
- beq _0813044E
- b _081305A4
-_0813044E:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0813050C
- lsls r0, 2
- ldr r1, =_08130478
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08130478:
- .4byte _0813048C
- .4byte _081304A4
- .4byte _081304BC
- .4byte _081304D4
- .4byte _081304F8
-_0813048C:
- ldr r0, =gUnknown_085A9A9C
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AE974
- b _081304E0
- .pool
-_081304A4:
- ldr r0, =gUnknown_085AAB20
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AEE80
- b _081304E0
- .pool
-_081304BC:
- ldr r0, =gUnknown_085AB750
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF38C
- b _081304E0
- .pool
-_081304D4:
- ldr r0, =gUnknown_085AC288
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF898
-_081304E0:
- ldr r1, =gUnknown_03006190
- ldr r1, [r1]
- bl RLUnCompWram
- b _0813050C
- .pool
-_081304F8:
- ldr r0, =gUnknown_085AD240
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AFDA4
- ldr r1, =gUnknown_03006190
- ldr r1, [r1]
- bl RLUnCompWram
-_0813050C:
- movs r1, 0
- ldr r5, =0x06006000
- ldr r0, =0x00001015
- adds r4, r0, 0
-_08130514:
- movs r3, 0
- lsls r2, r1, 5
-_08130518:
- adds r0, r2, r3
- lsls r0, 1
- adds r0, r5
- strh r4, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _08130518
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x13
- bls _08130514
- movs r1, 0
- ldr r0, =0x0600608c
- mov r12, r0
- ldr r7, =gUnknown_03006190
-_0813053C:
- movs r3, 0
- adds r6, r1, 0x1
- lsls r5, r1, 5
- lsls r4, r1, 6
-_08130544:
- adds r2, r5, r3
- lsls r2, 1
- add r2, r12
- ldr r0, [r7]
- adds r0, r4, r0
- lsls r1, r3, 1
- adds r0, r1
- adds r0, 0x8C
- ldrh r0, [r0]
- strh r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x11
- bls _08130544
- lsls r0, r6, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- bls _0813053C
- movs r3, 0
- ldr r4, =0x0600608e
- ldr r2, =gUnknown_03006190
-_08130570:
- lsls r1, r3, 1
- adds r1, r4
- ldr r0, [r2]
- adds r0, 0x8E
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _08130570
- b _08130676
- .pool
-_081305A4:
- cmp r5, 0x7
- bhi _081305C0
- ldr r0, =gUnknown_085AE370
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085B02B0
- b _08130650
- .pool
-_081305C0:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _08130676
- lsls r0, 2
- ldr r1, =_081305E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081305E8:
- .4byte _081305FC
- .4byte _08130614
- .4byte _0813062C
- .4byte _08130644
- .4byte _08130664
-_081305FC:
- ldr r0, =gUnknown_085A9A9C
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AE974
- b _08130650
- .pool
-_08130614:
- ldr r0, =gUnknown_085AAB20
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AEE80
- b _08130650
- .pool
-_0813062C:
- ldr r0, =gUnknown_085AB750
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF38C
- b _08130650
- .pool
-_08130644:
- ldr r0, =gUnknown_085AC288
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AF898
-_08130650:
- ldr r1, =0x06006000
- bl RLUnCompVram
- b _08130676
- .pool
-_08130664:
- ldr r0, =gUnknown_085AD240
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, =gUnknown_085AFDA4
- ldr r1, =0x06006000
- bl RLUnCompVram
-_08130676:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130430
-
- thumb_func_start sub_8130688
-sub_8130688: @ 8130688
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gMain
- ldr r1, =gUnknown_085B0830
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r3, 0x38]
- str r2, [r3, 0x3C]
- ldrh r2, [r3, 0x3C]
- ldr r1, =0xfffffc00
- ands r1, r2
- strh r1, [r3, 0x3C]
- ldrh r1, [r3, 0x3A]
- ldr r0, =0xfffffe00
- ands r0, r1
- movs r1, 0x58
- orrs r0, r1
- strh r0, [r3, 0x3A]
- adds r1, r3, 0
- adds r1, 0x38
- movs r0, 0x18
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130688
-
- thumb_func_start sub_81306CC
-sub_81306CC: @ 81306CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _081306E4
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- b _081306F4
- .pool
-_081306E4:
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
-_081306F4:
- cmp r0, 0x4
- bhi _08130732
- lsls r0, 2
- ldr r1, =_0813070C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0813070C:
- .4byte _08130720
- .4byte _08130724
- .4byte _08130728
- .4byte _0813072C
- .4byte _08130730
-_08130720:
- movs r0, 0x9
- b _08130732
-_08130724:
- movs r0, 0xD
- b _08130732
-_08130728:
- movs r0, 0x2
- b _08130732
-_0813072C:
- movs r0, 0x24
- b _08130732
-_08130730:
- movs r0, 0x6
-_08130732:
- pop {r1}
- bx r1
- thumb_func_end sub_81306CC
-
- thumb_func_start sub_8130738
-sub_8130738: @ 8130738
- push {r4,lr}
- ldr r4, =gUnknown_030061C4
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r4, =gUnknown_03006190
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130738
-
- thumb_func_start sub_8130760
-sub_8130760: @ 8130760
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gUnknown_030061A0
- ldr r0, =gUnknown_03006190
- ldr r0, [r0]
- str r0, [r1, 0x4]
- ldr r0, =gUnknown_030061C4
- ldr r0, [r0]
- str r0, [r1, 0x8]
- movs r2, 0
- strb r2, [r1, 0x18]
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrb r0, [r0]
- strb r0, [r1, 0x1F]
- strb r2, [r1, 0x19]
- strb r2, [r1, 0x1A]
- movs r0, 0x40
- strb r0, [r1, 0x1B]
- strb r0, [r1, 0x1C]
- strb r0, [r1, 0x1D]
- strb r0, [r1, 0x1E]
- subs r0, r3, 0x2
- adds r4, r1, 0
- cmp r0, 0x22
- bhi _08130844
- lsls r0, 2
- ldr r1, =_081307B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081307B4:
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130840
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130844
- .4byte _08130840
-_08130840:
- movs r0, 0x3
- b _08130846
-_08130844:
- movs r0, 0x1
-_08130846:
- strh r0, [r4, 0x14]
- movs r0, 0x2
- strh r0, [r4, 0x16]
- strb r3, [r4]
- ldr r0, =0x06010000
- str r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_8124F2C
- adds r0, r4, 0
- bl sub_81261A4
- adds r0, r4, 0
- bl sub_8126058
- ldr r0, =gUnknown_030061C4
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x80
- lsls r2, 2
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130760
-
- thumb_func_start sub_8130884
-sub_8130884: @ 8130884
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- bl sub_8130738
- ldr r0, =gUnknown_030061C0
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- movs r1, 0
- bl sub_81302E8
- adds r0, r4, 0
- bl sub_81306CC
- lsls r0, 24
- lsrs r0, 24
- bl sub_8130760
- adds r0, r4, 0
- bl sub_8130688
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8130430
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8130884
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cute_sketch.s b/asm/contest_painting_effects.s
index 36ef184b9..36ef184b9 100644
--- a/asm/cute_sketch.s
+++ b/asm/contest_painting_effects.s
diff --git a/common_syms/battle_anim_8170478.txt b/common_syms/battle_anim_8170478.txt
new file mode 100755
index 000000000..2fc194df7
--- /dev/null
+++ b/common_syms/battle_anim_8170478.txt
@@ -0,0 +1,3 @@
+gUnknown_030062DC
+gUnknown_030062E0
+gUnknown_030062E4
diff --git a/data/battle_anim_8170478.s b/data/battle_anim_8170478.s
deleted file mode 100644
index 74bdce846..000000000
--- a/data/battle_anim_8170478.s
+++ /dev/null
@@ -1,157 +0,0 @@
-#include "constants/battle_anim.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085E5088:: @ 85E5088
- .byte 0x0a, 0x02, 0xfd, 0x00, 0x0f, 0x00, 0xfc, 0x00
- .byte 0xf6, 0x02, 0xfc, 0x00
-
- .align 2
-gUnknown_085E5094:: @ 85E5094
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ec
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ed
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ee
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6ef
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f0
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f1
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f2
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f3
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f4
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f5
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f6
- obj_tiles gBattleAnimSpriteSheet_Particles, 0x0100, 0xd6f7
-
- .align 2
-gUnknown_085E50F4:: @ 85E50F4
- obj_pal gBattleAnimSpritePalette_136, 0xd6ec
- obj_pal gBattleAnimSpritePalette_136, 0xd6ed
- obj_pal gBattleAnimSpritePalette_136, 0xd6ee
- obj_pal gBattleAnimSpritePalette_136, 0xd6ef
- obj_pal gBattleAnimSpritePalette_136, 0xd6f0
- obj_pal gBattleAnimSpritePalette_136, 0xd6f1
- obj_pal gBattleAnimSpritePalette_136, 0xd6f2
- obj_pal gBattleAnimSpritePalette_136, 0xd6f3
- obj_pal gBattleAnimSpritePalette_136, 0xd6f4
- obj_pal gBattleAnimSpritePalette_136, 0xd6f5
- obj_pal gBattleAnimSpritePalette_136, 0xd6f6
- obj_pal gBattleAnimSpritePalette_136, 0xd6f7
-
- .align 2
-gUnknown_085E5154:: @ 85E5154
- .2byte 0x0000, 0x0001, 0x0001, 0x0001
- .2byte 0x0002, 0x0001, 0x0000, 0x0041
- .2byte 0x0002, 0x0001, 0x0001, 0x0001
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085E5170:: @ 85E5170
- .2byte 0x0003, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5178:: @ 85E5178
- .2byte 0x0004, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5180:: @ 85E5180
- .2byte 0x0005, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5188:: @ 85E5188
- .2byte 0x0006, 0x0004, 0x0007, 0x0004
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085E5194:: @ 85E5194
- .2byte 0x0007, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E519C:: @ 85E519C
- .4byte gUnknown_085E5154
- .4byte gUnknown_085E5170
- .4byte gUnknown_085E5178
- .4byte gUnknown_085E5180
- .4byte gUnknown_085E5188
- .4byte gUnknown_085E5194
-
- .align 2
-gUnknown_085E51B4:: @ 85E51B4
- .byte 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x02, 0x03
- .byte 0x05, 0x05, 0x04, 0x04
-
- .align 2
-gUnknown_085E51C0:: @ 85E51C0
- .4byte sub_8171E50
- .4byte sub_81723D4
- .4byte sub_81721CC
- .4byte sub_81722CC
- .4byte sub_81726BC
- .4byte sub_81721CC
- .4byte sub_81720C8
- .4byte sub_81722CC
- .4byte sub_8172560
- .4byte sub_8171FC4
- .4byte sub_81723D4
- .4byte sub_81727E8
-
- .align 2
-gUnknown_085E51F0:: @ 85E51F0
- spr_template 0xd6ec, 0xd6ec, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ed, 0xd6ed, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ee, 0xd6ee, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6ef, 0xd6ef, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_085E5250:: @ 85E5250
- spr_template 0xd6f0, 0xd6f0, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f1, 0xd6f1, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f2, 0xd6f2, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f3, 0xd6f3, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f4, 0xd6f4, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f5, 0xd6f5, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f6, 0xd6f6, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
- spr_template 0xd6f7, 0xd6f7, gUnknown_08524904, gUnknown_085E519C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_085E5310:: @ 85E5310
- .2byte 0x7adf, 0x7af0, 0x53d7, 0x3fff, 0x7297, 0x67f5, 0x7b2c, 0x2b7e
- .2byte 0x431f, 0x7bdd, 0x2a3f, 0x293f, 0x0000, 0x0201, 0x0403, 0x0101
- .2byte 0x0100, 0x0503, 0x0506, 0x0004
-
- .align 2
-gBattleAnimSpriteTemplate_85E5338:: @ 85E5338
- spr_template ANIM_TAG_UNUSED_RED_BRICK, ANIM_TAG_UNUSED_RED_BRICK, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817330C
-
- .align 2
-gUnknown_085E5350:: @ 8535350
- .2byte 0x0040, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_085E5358:: @ 8535358
- .4byte gUnknown_085E5350
-
- .align 2
- spr_template ANIM_TAG_ROCKS, ANIM_TAG_ROCKS, gUnknown_08524914, gUnknown_085E5358, NULL, gDummySpriteAffineAnimTable, sub_817330C
-
diff --git a/data/contest_painting.s b/data/contest_painting.s
deleted file mode 100644
index 42d76f9bc..000000000
--- a/data/contest_painting.s
+++ /dev/null
@@ -1,106 +0,0 @@
-@ the third big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085A989C:: @ 85A989C
- .incbin "graphics/picture_frame/bg.gbapal"
-
- .align 2
-gUnknown_085A9A9C:: @ 85A9A9C
- .incbin "graphics/picture_frame/frame0.4bpp.rl"
-
- .align 2
-gUnknown_085AAB20:: @ 85AAB20
- .incbin "graphics/picture_frame/frame1.4bpp.rl"
-
- .align 2
-gUnknown_085AB750:: @ 85AB750
- .incbin "graphics/picture_frame/frame2.4bpp.rl"
-
- .align 2
-gUnknown_085AC288:: @ 85AC288
- .incbin "graphics/picture_frame/frame3.4bpp.rl"
-
- .align 2
-gUnknown_085AD240:: @ 85AD240
- .incbin "graphics/picture_frame/frame4.4bpp.rl"
-
- .align 2
-gUnknown_085AE370:: @ 85AE370
- .incbin "graphics/picture_frame/frame5.4bpp.rl"
-
- .align 2
-gUnknown_085AE974:: @ 85AE974
- .incbin "graphics/picture_frame/frame0_map.bin.rl"
-
- .align 2
-gUnknown_085AEE80:: @ 85AEE80
- .incbin "graphics/picture_frame/frame1_map.bin.rl"
-
- .align 2
-gUnknown_085AF38C:: @ 85AF38C
- .incbin "graphics/picture_frame/frame2_map.bin.rl"
-
- .align 2
-gUnknown_085AF898:: @ 85AF898
- .incbin "graphics/picture_frame/frame3_map.bin.rl"
-
- .align 2
-gUnknown_085AFDA4:: @ 85AFDA4
- .incbin "graphics/picture_frame/frame4_map.bin.rl"
-
- .align 2
-gUnknown_085B02B0:: @ 85B02B0
- .incbin "graphics/picture_frame/frame5_map.bin.rl"
-
- .align 2
-gUnknown_085B07C0:: @ 85B07C0
- .4byte gContestCoolness
- .4byte gContestBeauty
- .4byte gContestCuteness
- .4byte gContestSmartness
- .4byte gContestToughness
-
- .align 2
-gContestRankTextPointers:: @ 85B07D4
- .4byte gContestRankNormal
- .4byte gContestRankSuper
- .4byte gContestRankHyper
- .4byte gContestRankMaster
- .4byte gContestLink
-
- .align 2
-gUnknown_085B07E8:: @ 85B07E8
- .4byte 0x000010a5
-
- .align 2
-gUnknown_085B07EC:: @ 85B07EC
- window_template 0x01, 0x02, 0x0e, 0x1a, 0x04, 0x0f, 0x0001
-
- .align 2
-gContestPaintingDescriptionPointers:: @ 85B07F4
- .4byte gContestPaintingCool1
- .4byte gContestPaintingCool2
- .4byte gContestPaintingCool3
- .4byte gContestPaintingBeauty1
- .4byte gContestPaintingBeauty2
- .4byte gContestPaintingBeauty3
- .4byte gContestPaintingCute1
- .4byte gContestPaintingCute2
- .4byte gContestPaintingCute3
- .4byte gContestPaintingSmart1
- .4byte gContestPaintingSmart2
- .4byte gContestPaintingSmart3
- .4byte gContestPaintingTough1
- .4byte gContestPaintingTough2
- .4byte gContestPaintingTough3
-
-gUnknown_085B0830:: @ 85B0830
- .4byte 0xc0003000, 0x00000000
-
-gUnknown_085B0838:: @ 85B0838
- .2byte 0x0000, 0x0000
diff --git a/data/cute_sketch.s b/data/contest_painting_effects.s
index d14b51a51..d14b51a51 100644
--- a/data/cute_sketch.s
+++ b/data/contest_painting_effects.s
diff --git a/data/data2c.s b/data/data2c.s
index 1946f5bdb..5bfea56ae 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -9,10 +9,13 @@
.section .rodata
.align 2
-gUnknown_0831AC70:: @ 831AC70
+gBattleIntroSlideScanlineEffectParams:: @ 831AC70
.4byte REG_BG3HOFS
.4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
.4byte 1
+
+ .align 2
+gUnknown_0831AC7C:: @ 831AC7C
.4byte REG_BG3HOFS
.4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
.4byte 1
diff --git a/data/event_scripts.s b/data/event_scripts.s
index d90dbf584..5bd8825ad 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -4651,35 +4651,35 @@ gOtherText_DontYouAgree:: @ 8294301
.string "\n"
.string "Don't you agree?$"
-gUnknown_08294313:: @ 8294313
+gMauvilleManText_ISoWantToGoOnAVacation:: @ 8294313
.string "I so want to go on a vacation.\n"
.string "Would you happen to know a nice place?$"
-gUnknown_08294359:: @ 8294359
+gMauvilleManText_IBoughtCrayonsWith120Colors:: @ 8294359
.string "I bought crayons with 120 colors!\n"
.string "Don't you think that's nice?$"
-gUnknown_08294398:: @ 8294398
+gMauvilleManText_WouldntItBeNiceIfWeCouldFloat:: @ 8294398
.string "Wouldn't it be nice if we could float\n"
.string "away on a cloud of bubbles?$"
-gUnknown_082943DA:: @ 82943DA
+gMauvilleManText_WhenYouWriteOnASandyBeach:: @ 82943DA
.string "When you write on a sandy beach,\n"
.string "they wash away. It makes me sad.$"
-gUnknown_0829441C:: @ 829441C
+gMauvilleManText_WhatsTheBottomOfTheSeaLike:: @ 829441C
.string "What's the bottom of the sea like?\n"
.string "Just once I would so love to go!$"
-gUnknown_08294460:: @ 8294460
+gMauvilleManText_WhenYouSeeTheSettingSunDoesIt:: @ 8294460
.string "When you see the setting sun, does it\n"
.string "make you want to go home?$"
-gUnknown_082944A0:: @ 82944A0
+gMauvilleManText_LyingBackInTheGreenGrass:: @ 82944A0
.string "Lying back in the green grass…\n"
.string "Oh, it's so, so nice!$"
-gUnknown_082944D5:: @ 82944D5
+gMauvilleManText_SecretBasesAreSoWonderful:: @ 82944D5
.string "SECRET BASES are so wonderful!\n"
.string "Can't you feel the excitement?$"
diff --git a/include/battle.h b/include/battle.h
index 9e67e8ec5..c06bdaad5 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -599,8 +599,7 @@ struct BattleAnimationInfo
u8 field_9_x80:1;
u8 field_A;
u8 field_B;
- u8 field_C;
- u8 field_D;
+ s16 field_C;
u8 field_E;
u8 field_F;
};
diff --git a/include/battle_anim.h b/include/battle_anim.h
index fa4058c1b..fffdabe06 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -9,11 +9,11 @@ enum
{
BG_ANIM_SCREEN_SIZE,
BG_ANIM_AREA_OVERFLOW_MODE,
- BG_ANIM2,
+ BG_ANIM_MOSAIC,
BG_ANIM_CHAR_BASE_BLOCK,
BG_ANIM_PRIORITY,
- BG_ANIM_5,
- BG_ANIM_6
+ BG_ANIM_PALETTES_MODE,
+ BG_ANIM_SCREEN_BASE_BLOCK,
};
struct UnknownAnimStruct2
@@ -67,11 +67,11 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
void sub_80A477C(bool8);
-// battle_anim_80FE840.s
+// battle_intro.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
-void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7);
void HandleIntroSlide(u8 terrainId);
-u32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
+int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_80A5C6C.s
void sub_80A6450(struct Sprite *sprite);
@@ -131,6 +131,7 @@ void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a
u8 sub_80A80C8(struct Task *task);
void sub_80A8EE4(struct Sprite *);
void sub_80A67F4(struct Sprite *);
+void sub_80A6D48(u32 bgId, const void *src);
enum
{
@@ -168,8 +169,8 @@ void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
-u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);
// battle_anim_utility_funcs.s
void sub_8116EB4(u8);
@@ -223,4 +224,7 @@ extern const struct OamData gUnknown_0852493C;
extern const struct OamData gUnknown_08524A5C;
extern const struct OamData gUnknown_08524A74;
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_tower.h b/include/battle_tower.h
index e361b9742..bd8e80fc1 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -9,7 +9,7 @@ struct RSBattleTowerRecord
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 trainerId[4];
/*0x10*/ u16 greeting[6];
- /*0x1C*/ struct UnknownPokemonStruct party[3];
+ /*0x1C*/ struct BattleTowerPokemon party[3];
/*0xA0*/ u32 checksum;
};
diff --git a/include/contest.h b/include/contest.h
index 8790d7371..c205737ee 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -231,6 +231,7 @@ extern u8 gContestPlayerMonIndex;
extern s16 gUnknown_02039F08[4];
extern s16 gContestMonConditions[4];
extern u8 gIsLinkContest;
+extern struct ContestWinner gUnknown_02039F3C;
struct Shared18000
{
diff --git a/include/contest_painting.h b/include/contest_painting.h
index 67a845d62..c633c50cc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -1,7 +1,16 @@
#ifndef GUARD_CONTESTPAINTING_H
#define GUARD_CONTESTPAINTING_H
-void sub_812FDA8(u32);
-void sub_812FDEC(void);
+enum
+{
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+void sub_812FDA8(int);
+void CB2_ContestPainting(void);
#endif
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
new file mode 100755
index 000000000..3b6964666
--- /dev/null
+++ b/include/contest_painting_effects.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONTEST_PAINTING_EFFECTS_H
+#define GUARD_CONTEST_PAINTING_EFFECTS_H
+
+struct Unk030061A0
+{
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 *var_8;
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+void sub_8124F2C(struct Unk030061A0 *);
+void sub_81261A4(struct Unk030061A0 *);
+void sub_8126058(struct Unk030061A0 *);
+
+#endif
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 7f69ef3ae..2661494d3 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -405,14 +405,14 @@ extern const u8 gText_SoDesirable[];
extern const u8 gText_SoExciting[];
extern const u8 gText_SoAmusing[];
extern const u8 gText_SoMagical[];
-extern const u8 gUnknown_08294313[];
-extern const u8 gUnknown_08294359[];
-extern const u8 gUnknown_08294398[];
-extern const u8 gUnknown_082943DA[];
-extern const u8 gUnknown_0829441C[];
-extern const u8 gUnknown_08294460[];
-extern const u8 gUnknown_082944A0[];
-extern const u8 gUnknown_082944D5[];
+extern const u8 gMauvilleManText_ISoWantToGoOnAVacation[];
+extern const u8 gMauvilleManText_IBoughtCrayonsWith120Colors[];
+extern const u8 gMauvilleManText_WouldntItBeNiceIfWeCouldFloat[];
+extern const u8 gMauvilleManText_WhenYouWriteOnASandyBeach[];
+extern const u8 gMauvilleManText_WhatsTheBottomOfTheSeaLike[];
+extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[];
+extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[];
+extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[];
extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[];
diff --git a/include/gba/types.h b/include/gba/types.h
index a7dbf3e03..fff48d437 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -32,7 +32,9 @@ struct BgCnt
{
u16 priority:2;
u16 charBaseBlock:2;
- u16 dummy:4;
+ u16 dummy:2;
+ u16 mosaic:1;
+ u16 palettes:1;
u16 screenBaseBlock:5;
u16 areaOverflowMode:1;
u16 screenSize:2;
diff --git a/include/global.h b/include/global.h
index 8395d5943..e3792ac56 100644
--- a/include/global.h
+++ b/include/global.h
@@ -61,6 +61,12 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
+// Extracts the upper 16 bits of a 32-bit number
+#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
+
+// Extracts the lower 16 bits of a 32-bit number
+#define LOHALF(n) ((n) & 0xFFFF)
+
// There are many quirks in the source code which have overarching behavioral differences from
// a number of other files. For example, diploma.c seems to declare rodata before each use while
// other files declare out of order and must be at the beginning. There are also a number of
@@ -301,7 +307,7 @@ struct Apprentice
u32 checksum;
};
-struct UnknownPokemonStruct
+struct BattleTowerPokemon
{
u16 species;
u16 heldItem;
@@ -338,7 +344,7 @@ struct EmeraldBattleTowerRecord
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 speechWon[6];
/*0x28*/ u16 speechLost[6];
- /*0x34*/ struct UnknownPokemonStruct party[4];
+ /*0x34*/ struct BattleTowerPokemon party[4];
/*0xE4*/ u8 language;
/*0xE8*/ u32 checksum;
};
@@ -353,7 +359,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6];
- /*0x34*/ struct UnknownPokemonStruct party[3];
+ /*0x34*/ struct BattleTowerPokemon party[3];
/*0xB8*/ u32 checksum;
};
diff --git a/include/graphics.h b/include/graphics.h
index e2889ed86..33a26068b 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4233,6 +4233,7 @@ extern const u32 gBattleAnimSpriteSheet_132[];
extern const u32 gBattleAnimSpriteSheet_133[];
extern const u32 gBattleAnimSpriteSheet_134[];
extern const u32 gBattleAnimSpriteSheet_135[];
+extern const u32 gBattleAnimSpriteSheet_Particles[];
extern const u32 gBattleAnimSpriteSheet_136[];
extern const u32 gBattleAnimSpriteSheet_137[];
extern const u32 gBattleAnimSpriteSheet_138[];
@@ -4748,4 +4749,9 @@ extern const u32 gCableCarDoor_Gfx[];
extern const u32 gCableCarCord_Gfx[];
extern const u16 gCableCar_Pal[];
+// Battle Anim
+extern const u32 gUnknown_08C2DDA4[];
+extern const u32 gUnknown_08C2EA50[];
+extern const u32 gUnknown_08C2EA9C[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 4631382cb..ce439e282 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -32,10 +32,10 @@ extern struct BagStruct gUnknown_0203CE58;
struct UnkBagStruct
{
- void (*unk0)(void);
- u8 unk4[0x800];
- u8 unk804[12];
- u8 unk810[7];
+ void (*mainCallback2)(void);
+ u8 tilemapBuffer[0x800];
+ u8 spriteId[12];
+ u8 windowPointers[7];
u8 unk817;
u8 unk818;
u8 unk819;
@@ -43,7 +43,7 @@ struct UnkBagStruct
u8 unk81B:4;
u8 unk81B_1:2;
u8 unk81B_3:1;
- u8 unk81B_2:1;
+ u8 hideCloseBagText:1;
u8 filler3[2];
u8 unk81E;
u8 unk81F;
@@ -52,11 +52,11 @@ struct UnkBagStruct
u8 unk825;
u8 filler[2];
u8 unk828;
- u8 unk829[POCKETS_COUNT];
- u8 unk82E[6];
+ u8 numItemStacks[POCKETS_COUNT];
+ u8 numShownItems[6];
s16 unk834;
u8 filler4[0xE];
- u8 unk844[32][32];
+ u8 pocketNameBuffer[32][32];
u8 filler2[4];
};
@@ -71,9 +71,10 @@ void sub_81AAC14(void);
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_81AAC28(void);
+void SetInitialScrollAndCursorPositions(u8 pocketId);
void bag_menu_mail_related(void);
void CB2_BagMenuFromStartMenu(void);
-u8 sub_81ABB2C(u8 pocketId);
+u8 GetItemListPosition(u8 pocketId);
bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 9b8f1d03f..94dae089f 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -460,11 +460,11 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src);
-void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50);
+void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
-void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
+void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
bool8 sub_80688F8(u8 caseId, u8 battlerId);
void SetDeoxysStats(void);
diff --git a/include/strings.h b/include/strings.h
index f0df4bdec..c780a80b4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1226,6 +1226,7 @@ extern const u8 gText_SpaceAndSpace[];
extern const u8 gText_CommaSpace[];
extern const u8 gText_NewLine[];
extern const u8 gText_ScrollTextUp[];
+extern const u8 gText_Space[];
extern const u8 gText_Space2[];
extern const u8 gText_Are[];
extern const u8 gText_Are2[];
diff --git a/ld_script.txt b/ld_script.txt
index 0dbff7996..68aa8463c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -175,7 +175,7 @@ SECTIONS {
src/ground.o(.text);
src/normal.o(.text);
src/battle_anim_utility_funcs.o(.text);
- asm/battle_intro.o(.text);
+ src/battle_intro.o(.text);
src/bike.o(.text);
src/easy_chat.o(.text);
asm/easy_chat.o(.text);
@@ -186,11 +186,10 @@ SECTIONS {
src/dewford_trend.o(.text);
src/heal_location.o(.text);
src/region_map.o(.text);
- asm/cute_sketch.o(.text);
+ asm/contest_painting_effects.o(.text);
src/decoration.o(.text);
src/slot_machine.o(.text);
src/contest_painting.o(.text);
- asm/contest_painting.o(.text);
src/battle_ai_script_commands.o(.text);
src/trader.o(.text);
src/starter_choose.o(.text);
@@ -238,7 +237,7 @@ SECTIONS {
src/intro.o(.text);
src/reset_save_heap.o(.text);
src/field_region_map.o(.text);
- asm/battle_anim_8170478.o(.text);
+ src/battle_anim_8170478.o(.text);
src/hall_of_fame.o(.text);
src/credits.o(.text);
src/lottery_corner.o(.text);
@@ -511,11 +510,11 @@ SECTIONS {
src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
src/region_map.o(.rodata);
- data/cute_sketch.o(.rodata);
+ data/contest_painting_effects.o(.rodata);
src/decoration.o(.rodata);
src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata);
- data/contest_painting.o(.rodata);
+ src/contest_painting.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
src/trader.o(.rodata);
src/starter_choose.o(.rodata);
@@ -549,7 +548,7 @@ SECTIONS {
src/player_pc.o(.rodata);
src/intro.o(.rodata);
src/field_region_map.o(.rodata);
- data/battle_anim_8170478.o(.rodata);
+ src/battle_anim_8170478.o(.rodata);
src/hall_of_fame.o(.rodata);
src/credits.o(.rodata);
src/lottery_corner.o(.rodata);
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 95c6f7b3c..5e62c0957 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -26,8 +26,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern const u16 gMovesWithQuietBGM[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
-extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
// this file's functions
diff --git a/src/battle_anim_8170478.c b/src/battle_anim_8170478.c
new file mode 100755
index 000000000..94f2c95b5
--- /dev/null
+++ b/src/battle_anim_8170478.c
@@ -0,0 +1,2267 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_controllers.h"
+#include "battle_interface.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "m4a.h"
+#include "main.h"
+#include "palette.h"
+#include "pokeball.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "util.h"
+#include "constants/rgb.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+// iwram
+int gUnknown_030062DC;
+u16 gUnknown_030062E0;
+u16 gUnknown_030062E4;
+
+static void sub_8170660(u8);
+static void sub_8170A38(u8);
+static void sub_8170EF0(u8);
+static void sub_8171104(struct Sprite *);
+static void sub_8171030(u8);
+static void sub_81710A8(u8);
+static void sub_8171134(struct Sprite *);
+static void sub_8171CAC(struct Sprite *);
+static void sub_81711E8(struct Sprite *);
+static void sub_8171240(struct Sprite *);
+static void sub_817138C(struct Sprite *);
+static void sub_81713D0(struct Sprite *);
+static void sub_81717B4(struct Sprite *);
+static void sub_81714D4(struct Sprite *);
+static void sub_8171520(struct Sprite *);
+static void sub_81717D8(struct Sprite *);
+static void sub_8171AE4(struct Sprite *);
+static void sub_81717F8(struct Sprite *);
+static void sub_81719EC(struct Sprite *);
+static void sub_81718D8(struct Sprite *);
+static void sub_81719C0(struct Sprite *);
+static void sub_8171D60(u8);
+static void sub_8171AAC(struct Sprite *);
+static void sub_8171BAC(struct Sprite *);
+static void sub_8171CE8(struct Sprite *);
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *);
+static void PokeBallOpenParticleAnimation_Step2(struct Sprite *);
+static void DestroyBallOpenAnimationParticle(struct Sprite *);
+static void FanOutBallOpenParticles_Step1(struct Sprite *);
+static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *);
+static void PremierBallOpenParticleAnimation_Step1(struct Sprite *);
+static void sub_8172AB0(u8);
+static void sub_8172B40(u8);
+static void sub_8172B90(u8);
+static void sub_8172FEC(u8);
+static void sub_81731FC(struct Sprite *);
+static void sub_8173250(struct Sprite *);
+static void sub_81731B0(u8);
+static void sub_817339C(struct Sprite *);
+static void sub_81733D4(struct Sprite *);
+static void sub_8173400(struct Sprite *);
+static void PokeBallOpenParticleAnimation(u8);
+static void GreatBallOpenParticleAnimation(u8);
+static void SafariBallOpenParticleAnimation(u8);
+static void UltraBallOpenParticleAnimation(u8);
+static void MasterBallOpenParticleAnimation(u8);
+static void DiveBallOpenParticleAnimation(u8);
+static void RepeatBallOpenParticleAnimation(u8);
+static void TimerBallOpenParticleAnimation(u8);
+static void PremierBallOpenParticleAnimation(u8);
+static void sub_817330C(struct Sprite *);
+
+struct BallCaptureSuccessStarData
+{
+ s8 xOffset;
+ s8 yOffset;
+ s8 unk2;
+};
+
+static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] =
+{
+ {
+ .xOffset = 10,
+ .yOffset = 2,
+ .unk2 = -3,
+ },
+ {
+ .xOffset = 15,
+ .yOffset = 0,
+ .unk2 = -4,
+ },
+ {
+ .xOffset = -10,
+ .yOffset = 2,
+ .unk2 = -4,
+ },
+};
+
+const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[] =
+{
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EC},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6ED},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EE},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EF},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F0},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F1},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F2},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F3},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F4},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F5},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F6},
+ {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F7},
+};
+
+const struct CompressedSpritePalette gBallOpenParticlePalettes[] =
+{
+ {gBattleAnimSpritePalette_136, 0xD6EC},
+ {gBattleAnimSpritePalette_136, 0xD6ED},
+ {gBattleAnimSpritePalette_136, 0xD6EE},
+ {gBattleAnimSpritePalette_136, 0xD6EF},
+ {gBattleAnimSpritePalette_136, 0xD6F0},
+ {gBattleAnimSpritePalette_136, 0xD6F1},
+ {gBattleAnimSpritePalette_136, 0xD6F2},
+ {gBattleAnimSpritePalette_136, 0xD6F3},
+ {gBattleAnimSpritePalette_136, 0xD6F4},
+ {gBattleAnimSpritePalette_136, 0xD6F5},
+ {gBattleAnimSpritePalette_136, 0xD6F6},
+ {gBattleAnimSpritePalette_136, 0xD6F7},
+};
+
+const union AnimCmd gUnknown_085E5154[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085E5170[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5178[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5180[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085E5188[] =
+{
+ ANIMCMD_FRAME(6, 4),
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_085E5194[] =
+{
+ ANIMCMD_FRAME(7, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085E519C[] =
+{
+ gUnknown_085E5154,
+ gUnknown_085E5170,
+ gUnknown_085E5178,
+ gUnknown_085E5180,
+ gUnknown_085E5188,
+ gUnknown_085E5194,
+};
+
+const u8 gBallOpenParticleAnimNums[] =
+{
+ 0,
+ 0,
+ 0,
+ 5,
+ 1,
+ 2,
+ 2,
+ 3,
+ 5,
+ 5,
+ 4,
+ 4,
+};
+
+const TaskFunc gBallOpenParticleAnimationFuncs[] =
+{
+ PokeBallOpenParticleAnimation,
+ GreatBallOpenParticleAnimation,
+ SafariBallOpenParticleAnimation,
+ UltraBallOpenParticleAnimation,
+ MasterBallOpenParticleAnimation,
+ SafariBallOpenParticleAnimation,
+ DiveBallOpenParticleAnimation,
+ UltraBallOpenParticleAnimation,
+ RepeatBallOpenParticleAnimation,
+ TimerBallOpenParticleAnimation,
+ GreatBallOpenParticleAnimation,
+ PremierBallOpenParticleAnimation,
+};
+
+const struct SpriteTemplate gUnknown_085E51F0[] =
+{
+ {
+ .tileTag = 55020,
+ .paletteTag = 55020,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55021,
+ .paletteTag = 55021,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55022,
+ .paletteTag = 55022,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55023,
+ .paletteTag = 55023,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55024,
+ .paletteTag = 55024,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55025,
+ .paletteTag = 55025,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55026,
+ .paletteTag = 55026,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55027,
+ .paletteTag = 55027,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55028,
+ .paletteTag = 55028,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55029,
+ .paletteTag = 55029,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55030,
+ .paletteTag = 55030,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 55031,
+ .paletteTag = 55031,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085E519C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const u16 gUnknown_085E5310[] =
+{
+ RGB(31, 22, 30),
+ RGB(16, 23, 30),
+ RGB(23, 30, 20),
+ RGB(31, 31, 15),
+ RGB(23, 20, 28),
+ RGB(21, 31, 25),
+ RGB(12, 25, 30),
+ RGB(30, 27, 10),
+ RGB(31, 24, 16),
+ RGB(29, 30, 30),
+ RGB(31, 17, 10),
+ RGB(31, 9, 10),
+ RGB(0, 0, 0),
+ RGB(1, 16, 0),
+ RGB(3, 0, 1),
+ RGB(1, 8, 0),
+ RGB(0, 8, 0),
+ RGB(3, 8, 1),
+ RGB(6, 8, 1),
+ RGB(4, 0, 0),
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85E5338 =
+{
+ .tileTag = ANIM_TAG_UNUSED_RED_BRICK,
+ .paletteTag = ANIM_TAG_UNUSED_RED_BRICK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817330C,
+};
+
+const union AnimCmd gUnknown_085E5350[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085E5358[] = {
+ gUnknown_085E5350,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085E5358,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817330C,
+};
+
+extern const struct SpriteTemplate gUnknown_085CE388;
+extern const struct SpriteTemplate gUnknown_085CE3A0;
+
+void unref_sub_8170478(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 healthBoxSpriteId;
+ u8 battler;
+ u8 spriteId1, spriteId2, spriteId3, spriteId4;
+
+ battler = gBattleAnimAttacker;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 1);
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+ spriteId3 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ spriteId4 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ gSprites[healthBoxSpriteId].oam.priority = 1;
+ gSprites[spriteId1].oam.priority = 1;
+ gSprites[spriteId2].oam.priority = 1;
+ gSprites[spriteId3] = gSprites[healthBoxSpriteId];
+ gSprites[spriteId4] = gSprites[spriteId1];
+ gSprites[spriteId3].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[spriteId4].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[spriteId3].callback = SpriteCallbackDummy;
+ gSprites[spriteId4].callback = SpriteCallbackDummy;
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D48(unknownStruct.bgId, gUnknown_08C2EA9C);
+ sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
+ LoadCompressedPalette(gUnknown_08C2DDA4, unknownStruct.unk8 << 4, 32);
+
+ gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
+ gTasks[taskId].data[1] = 640;
+ gTasks[taskId].data[0] = spriteId3;
+ gTasks[taskId].data[2] = spriteId4;
+ gTasks[taskId].func = sub_8170660;
+}
+
+static void sub_8170660(u8 taskId)
+{
+ u8 spriteId1, spriteId2;
+ u8 battler;
+
+ battler = gBattleAnimAttacker;
+ gTasks[taskId].data[13] += gTasks[taskId].data[1];
+ gBattle_BG1_Y += (u16)gTasks[taskId].data[13] >> 8;
+ gTasks[taskId].data[13] &= 0xFF;
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ > 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 8)
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == 30)
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_80A477C(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ DestroySprite(&gSprites[gTasks[taskId].data[2]]);
+ SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
+ spriteId1 = gSprites[gHealthboxSpriteIds[battler]].oam.affineParam;
+ spriteId2 = gSprites[gHealthboxSpriteIds[battler]].data[5];
+ gSprites[gHealthboxSpriteIds[battler]].oam.priority = 1;
+ gSprites[spriteId1].oam.priority = 1;
+ gSprites[spriteId2].oam.priority = 1;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+static void sub_8170834(u8 *paletteId1, u8 *paletteId2, u8 battler)
+{
+ u8 healthBoxSpriteId;
+ u8 spriteId1, spriteId2;
+ u16 offset1, offset2;
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+ *paletteId1 = AllocSpritePalette(0xD709);
+ *paletteId2 = AllocSpritePalette(0xD70A);
+
+ offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
+ offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100;
+ LoadPalette(&gPlttBufferUnfaded[offset1], *paletteId1 * 16 + 0x100, 0x20);
+ LoadPalette(&gPlttBufferUnfaded[offset2], *paletteId2 * 16 + 0x100, 0x20);
+
+ gSprites[healthBoxSpriteId].oam.paletteNum = *paletteId1;
+ gSprites[spriteId1].oam.paletteNum = *paletteId1;
+ gSprites[spriteId2].oam.paletteNum = *paletteId2;
+}
+
+void sub_8170920(u8 taskId)
+{
+ u8 paletteId1, paletteId2;
+ sub_8170834(&paletteId1, &paletteId2, gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_817094C(u8 battler)
+{
+ u8 healthBoxSpriteId;
+ u8 spriteId1, spriteId2;
+ u8 paletteId1, paletteId2;
+
+ healthBoxSpriteId = gHealthboxSpriteIds[battler];
+ spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
+ spriteId2 = gSprites[healthBoxSpriteId].data[5];
+
+ FreeSpritePaletteByTag(0xD709);
+ FreeSpritePaletteByTag(0xD70A);
+ paletteId1 = IndexOfSpritePaletteTag(0xD6FF);
+ paletteId2 = IndexOfSpritePaletteTag(0xD704);
+ gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
+ gSprites[spriteId1].oam.paletteNum = paletteId1;
+ gSprites[spriteId2].oam.paletteNum = paletteId2;
+}
+
+void sub_81709EC(u8 taskId)
+{
+ sub_817094C(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170A0C(u8 taskId)
+{
+ gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].data[11] = gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_8170A38;
+}
+
+static void sub_8170A38(u8 taskId)
+{
+ u8 paletteNum;
+ int paletteOffset, colorOffset;
+
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
+ {
+ gTasks[taskId].data[0] = 0;
+ paletteNum = IndexOfSpritePaletteTag(0xD709);
+ colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
+ switch (gTasks[taskId].data[1])
+ {
+ case 0:
+ gTasks[taskId].data[2] += 2;
+ if (gTasks[taskId].data[2] > 16)
+ gTasks[taskId].data[2] = 16;
+
+ paletteOffset = paletteNum * 16 + 0x100;
+ BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31));
+ if (gTasks[taskId].data[2] == 16)
+ gTasks[taskId].data[1]++;
+ break;
+ case 1:
+ gTasks[taskId].data[2] -= 2;
+ if (gTasks[taskId].data[2] < 0)
+ gTasks[taskId].data[2] = 0;
+
+ paletteOffset = paletteNum * 16 + 0x100;
+ BlendPalette(paletteOffset + colorOffset, 1, gTasks[taskId].data[2], RGB(20, 27, 31));
+ if (gTasks[taskId].data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+ }
+}
+
+void sub_8170B04(u8 taskId)
+{
+ u8 spriteId;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_80A7270(spriteId, 0);
+ gTasks[taskId].data[10] = 0x100;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 0x30;
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
+ sub_80A7E6C(spriteId);
+ if (gTasks[taskId].data[10] >= 0x2D0)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ sub_80A7344(spriteId);
+ gSprites[spriteId].invisible = 1;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8170BB0(u8 taskId)
+{
+ u8 spriteId;
+ u16 ball;
+ u8 ballId;
+ u8 x, y;
+ u8 priority, subpriority;
+ u32 selectedPalettes;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL);
+ else
+ ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_POKEBALL);
+
+ ballId = ItemIdToBallId(ball);
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ priority = gSprites[spriteId].oam.priority;
+ subpriority = gSprites[spriteId].subpriority;
+ gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId);
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (!gTasks[gTasks[taskId].data[10]].isActive && !gTasks[gTasks[taskId].data[11]].isActive)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8170CFC(u8 taskId)
+{
+ u8 ballId = ItemIdToBallId(gLastUsedItem);
+ LoadBallGfx(ballId);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170D24(u8 taskId)
+{
+ u8 ballId = ItemIdToBallId(gLastUsedItem);
+ FreeBallGfx(ballId);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsBallBlockedByTrainer(u8 taskId)
+{
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
+ gBattleAnimArgs[7] = -1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+u8 ItemIdToBallId(u16 ballItem)
+{
+ switch (ballItem)
+ {
+ case ITEM_MASTER_BALL:
+ return 4;
+ case ITEM_ULTRA_BALL:
+ return 3;
+ case ITEM_GREAT_BALL:
+ return 1;
+ case ITEM_SAFARI_BALL:
+ return 2;
+ case ITEM_NET_BALL:
+ return 5;
+ case ITEM_DIVE_BALL:
+ return 6;
+ case ITEM_NEST_BALL:
+ return 7;
+ case ITEM_REPEAT_BALL:
+ return 8;
+ case ITEM_TIMER_BALL:
+ return 9;
+ case ITEM_LUXURY_BALL:
+ return 10;
+ case ITEM_PREMIER_BALL:
+ return 11;
+ case ITEM_POKE_BALL:
+ default:
+ return 0;
+ }
+}
+
+void sub_8170E04(u8 taskId)
+{
+ u8 ballId;
+ u8 spriteId;
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
+ gSprites[spriteId].data[0] = 34;
+ gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
+ gSprites[spriteId].callback = sub_8171104;
+ gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_8170EF0;
+}
+
+static void sub_8170EF0(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ if ((u16)gSprites[spriteId].data[0] == 0xFFFF)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8170F2C(u8 taskId)
+{
+ int x, y;
+ u8 ballId;
+ u8 subpriority;
+ u8 spriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ x = 32;
+ y = 11;
+ }
+ else
+ {
+ x = 23;
+ y = 5;
+ }
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ subpriority = sub_80A82E4(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority);
+ gSprites[spriteId].data[0] = 34;
+ gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_8171030;
+}
+
+static void sub_8171030(u8 taskId)
+{
+ if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
+ {
+ PlaySE12WithPanning(SE_NAGERU, 0);
+ gSprites[gTasks[taskId].data[0]].callback = sub_8171104;
+ CreateTask(sub_81710A8, 10);
+ gTasks[taskId].func = sub_8170EF0;
+ }
+}
+
+static void sub_81710A8(u8 taskId)
+{
+ if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
+ {
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8171104(struct Sprite *sprite)
+{
+ u16 temp = sprite->data[1];
+ u16 temp2 = sprite->data[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = temp;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = temp2;
+ sprite->data[5] = -40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_8171134;
+}
+
+static void sub_8171134(struct Sprite *sprite)
+{
+ int i;
+ u8 ballId;
+ int ballId2; // extra var needed to match
+
+ if (TranslateAnimArc(sprite))
+ {
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
+ {
+ sprite->callback = sub_8171CAC;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+
+ for (i = 0; i < 8; i++)
+ sprite->data[i] = 0;
+
+ sprite->data[5] = 0;
+ sprite->callback = sub_81711E8;
+ ballId = ItemIdToBallId(gLastUsedItem);
+ ballId2 = ballId;
+ if (ballId2 > 11)
+ return;
+ if (ballId2 < 0)
+ return;
+
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId);
+ }
+ }
+}
+
+static void sub_81711E8(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 10)
+ {
+ sprite->data[5] = CreateTask(TaskDummy, 50);
+ sprite->callback = sub_8171240;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0;
+ }
+}
+
+static void sub_8171240(struct Sprite *sprite)
+{
+ u8 spriteId;
+ u8 taskId;
+
+ spriteId = gBattlerSpriteIds[gBattleAnimTarget];
+ taskId = sprite->data[5];
+
+ if (++gTasks[taskId].data[1] == 11)
+ PlaySE(SE_SUIKOMU);
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_80A7270(spriteId, 0);
+ gTasks[taskId].data[10] = 256;
+ gUnknown_030062DC = 28;
+ gUnknown_030062E4 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gUnknown_030062E0 = (u32)(gUnknown_030062E4 * 256) / 28;
+ gTasks[taskId].data[2] = gUnknown_030062E0;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 0x20;
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
+ gTasks[taskId].data[3] += gTasks[taskId].data[2];
+ gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
+ if (gTasks[taskId].data[10] >= 0x480)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ sub_80A7344(spriteId);
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[0]++;
+ break;
+ default:
+ if (gTasks[taskId].data[1] > 10)
+ {
+ DestroyTask(taskId);
+ StartSpriteAnim(sprite, 2);
+ sprite->data[5] = 0;
+ sprite->callback = sub_817138C;
+ }
+ break;
+ }
+}
+
+static void sub_817138C(struct Sprite *sprite)
+{
+ int angle;
+
+ if (sprite->animEnded)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 40;
+ sprite->data[5] = 0;
+ angle = 0;
+ sprite->pos1.y += Cos(angle, 40);
+ sprite->pos2.y = -Cos(angle, sprite->data[4]);
+ sprite->callback = sub_81713D0;
+ }
+}
+
+static void sub_81713D0(struct Sprite *sprite)
+{
+ bool8 lastBounce;
+ int bounceCount;
+
+ lastBounce = 0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] += (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] >= 64)
+ {
+ sprite->data[4] -= 10;
+ sprite->data[3] += 257;
+
+ bounceCount = sprite->data[3] >> 8;
+ if (bounceCount == 4)
+ lastBounce = 1;
+
+ // Play a different sound effect for each pokeball bounce.
+ switch (bounceCount)
+ {
+ case 1:
+ PlaySE(SE_KON);
+ break;
+ case 2:
+ PlaySE(SE_KON2);
+ break;
+ case 3:
+ PlaySE(SE_KON3);
+ break;
+ default:
+ PlaySE(SE_KON4);
+ break;
+ }
+ }
+ break;
+ case 1:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] -= (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] <= 0)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ }
+ break;
+ }
+
+ if (lastBounce)
+ {
+ sprite->data[3] = 0;
+ sprite->pos1.y += Cos(64, 40);
+ sprite->pos2.y = 0;
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_81717B4;
+ }
+ else
+ {
+ sprite->callback = sub_81714D4;
+ sprite->data[4] = 1;
+ sprite->data[5] = 0;
+ }
+ }
+}
+
+static void sub_81714D4(struct Sprite *sprite)
+{
+ if (++sprite->data[3] == 31)
+ {
+ sprite->data[3] = 0;
+ sprite->affineAnimPaused = 1;
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->callback = sub_8171520;
+ PlaySE(SE_BOWA);
+ }
+}
+
+static void sub_8171520(struct Sprite *sprite)
+{
+ s8 state;
+ u16 var0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 7;
+ if (var0 > 14)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 1:
+ if (++sprite->data[5] == 1)
+ {
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->affineAnimPaused = 1;
+ }
+ break;
+ case 2:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 12;
+ if (var0 > 24)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 3:
+ if (sprite->data[5]++ < 0)
+ {
+ sprite->affineAnimPaused = 1;
+ break;
+ }
+
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ // fall through
+ case 4:
+ if (gBattleSpritesDataPtr->animationData->field_C > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ gBattleSpritesDataPtr->animationData->field_C &= 0xFF;
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_C += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 4;
+ if (var0 > 8)
+ {
+ gBattleSpritesDataPtr->animationData->field_C = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ }
+ break;
+ case 5:
+ sprite->data[3] += 0x100;
+ state = sprite->data[3] >> 8;
+ if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId)
+ {
+ sprite->affineAnimPaused = 1;
+ sprite->callback = sub_81717B4;
+ }
+ else
+ {
+ if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3)
+ {
+ sprite->callback = sub_81717D8;
+ sprite->affineAnimPaused = 1;
+ }
+ else
+ {
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 1;
+ }
+ }
+ break;
+ case 6:
+ default:
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ StartSpriteAffineAnim(sprite, 3);
+ if (sprite->data[4] < 0)
+ StartSpriteAffineAnim(sprite, 2);
+ else
+ StartSpriteAffineAnim(sprite, 1);
+
+ PlaySE(SE_BOWA);
+ }
+ break;
+ }
+}
+
+static void sub_81717B4(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_8171AE4;
+ }
+}
+
+static void sub_81717D8(struct Sprite *sprite)
+{
+ sprite->animPaused = 1;
+ sprite->callback = sub_81717F8;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+static void sub_81717F8(struct Sprite *sprite)
+{
+ u8 *battler = &gBattleAnimTarget;
+
+ sprite->data[4]++;
+ if (sprite->data[4] == 40)
+ {
+ PlaySE(SE_RG_GETTING);
+ BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0));
+ sub_81719EC(sprite);
+ }
+ else if (sprite->data[4] == 60)
+ {
+ BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB(0, 0, 0));
+ }
+ else if (sprite->data[4] == 95)
+ {
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ m4aMPlayAllStop();
+ PlaySE(MUS_RG_FAN6);
+ }
+ else if (sprite->data[4] == 315)
+ {
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]);
+ sprite->data[0] = 0;
+ sprite->callback = sub_81718D8;
+ }
+}
+
+static void sub_81718D8(struct Sprite *sprite)
+{
+ u8 paletteIndex;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag);
+ BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31));
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->data[1]++ > 0)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2]));
+ if (sprite->data[2] == 16)
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->invisible = 1;
+ sprite->data[0]++;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ }
+ break;
+ }
+}
+
+static void sub_81719C0(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0] = -1;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_81719EC(struct Sprite *sprite)
+{
+ u32 i;
+ u8 subpriority;
+
+ if (sprite->subpriority)
+ {
+ subpriority = sprite->subpriority - 1;
+ }
+ else
+ {
+ subpriority = 0;
+ sprite->subpriority = 1;
+ }
+
+ sub_8171D60(4);
+ for (i = 0; i < 3; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_085E51F0[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 24;
+ gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset;
+ gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset;
+ gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2;
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ gSprites[spriteId].callback = sub_8171AAC;
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[4]);
+ }
+ }
+}
+
+static void sub_8171AAC(struct Sprite *sprite)
+{
+ sprite->invisible = !sprite->invisible;
+ if (TranslateAnimArc(sprite))
+ DestroySprite(sprite);
+}
+
+// fakematching. I think the return type of ItemIdToBallId()
+// is wrong because of the weird required casting.
+static void sub_8171AE4(struct Sprite *sprite)
+{
+ u8 ballId;
+ int ballId2; // extra var needed to match
+
+ StartSpriteAnim(sprite, 1);
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = sub_8171BAC;
+
+ ballId = ItemIdToBallId(gLastUsedItem);
+ ballId2 = ballId;
+ if (ballId2 > 11)
+ goto LABEL;
+ if (ballId2 < 0)
+ goto LABEL;
+
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId);
+
+ LABEL:
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
+ AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
+}
+
+static void sub_8171BAC(struct Sprite *sprite)
+{
+ int next = FALSE;
+
+ if (sprite->animEnded)
+ sprite->invisible = 1;
+
+ if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
+ {
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
+ next = TRUE;
+ }
+ else
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
+ }
+
+ if (sprite->animEnded && next)
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2;
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+
+static void sub_8171CAC(struct Sprite *sprite)
+{
+ int i;
+
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ for (i = 0; i < 6; i++)
+ sprite->data[i] = 0;
+
+ sprite->callback = sub_8171CE8;
+}
+
+static void sub_8171CE8(struct Sprite *sprite)
+{
+ s16 var0 = sprite->data[0] + 0x800;
+ s16 var1 = sprite->data[1] + 0x680;
+ sprite->pos2.x -= var1 >> 8;
+ sprite->pos2.y += var0 >> 8;
+ sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF;
+ sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF;
+
+ if (sprite->pos1.y + sprite->pos2.y > 160
+ || sprite->pos1.x + sprite->pos2.x < -8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_81719C0;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+
+static void sub_8171D60(u8 ballId)
+{
+ u8 taskId;
+
+ if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballId].tag) == 0xFFFF)
+ {
+ LoadCompressedObjectPicUsingHeap(&gBallOpenParticleSpritesheets[ballId]);
+ LoadCompressedObjectPaletteUsingHeap(&gBallOpenParticlePalettes[ballId]);
+ }
+}
+
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
+{
+ u8 taskId;
+
+ sub_8171D60(ballId);
+ taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballId], 5);
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ gTasks[taskId].data[3] = priority;
+ gTasks[taskId].data[4] = subpriority;
+ gTasks[taskId].data[15] = ballId;
+ PlaySE(SE_BOWA2);
+
+ return taskId;
+}
+
+void sub_8171E20(void)
+{
+ if (gMain.inBattle)
+ gBattleSpritesDataPtr->animationData->field_A++;
+}
+
+static void PokeBallOpenParticleAnimation(u8 taskId)
+{
+ u8 spriteId;
+ u8 x, y;
+ u8 priority, subpriority;
+ u8 ballId;
+ u8 var0;
+
+ ballId = gTasks[taskId].data[15];
+ if (gTasks[taskId].data[0] < 16)
+ {
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+
+ var0 = (u8)gTasks[taskId].data[0];
+ if (var0 >= 8)
+ var0 -= 8;
+
+ gSprites[spriteId].data[0] = var0 * 32;
+ }
+
+ if (gTasks[taskId].data[0] == 15)
+ {
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+ return;
+ }
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ sprite->callback = PokeBallOpenParticleAnimation_Step2;
+ else
+ sprite->data[1]--;
+}
+
+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)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void TimerBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void DiveBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Net Ball
+static void SafariBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 4;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Nest Ball
+static void UltraBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 10; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 25;
+ gSprites[spriteId].data[4] = 5;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+// Also used for Luxury Ball
+static void GreatBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ if (gTasks[taskId].data[7])
+ {
+ gTasks[taskId].data[7]--;
+ }
+ else
+ {
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+
+ gTasks[taskId].data[7] = 8;
+ if (++gTasks[taskId].data[0] == 2)
+ {
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+ }
+ }
+}
+
+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]);
+ sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
+ sprite->data[1] += sprite->data[5];
+ sprite->data[2] += sprite->data[6];
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void RepeatBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 12; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 21;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+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]));
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void MasterBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i, j;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (j = 0; j < 2; j++)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+
+ if (j == 0)
+ {
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+ else
+ {
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+static void PremierBallOpenParticleAnimation(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballId;
+ u8 spriteId;
+
+ ballId = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ sub_8171E20();
+ StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ }
+ }
+
+ if (!gMain.inBattle)
+ gSprites[spriteId].data[7] = 1;
+
+ DestroyTask(taskId);
+}
+
+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]));
+ sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ DestroyBallOpenAnimationParticle(sprite);
+}
+
+static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
+{
+ int i, j;
+ int temp;
+
+ if (!gMain.inBattle)
+ {
+ temp = sprite->data[7]; // temp var needed to match
+ if (temp == 1)
+ DestroySpriteAndFreeResources(sprite);
+ else
+ DestroySprite(sprite);
+ }
+ else
+ {
+ gBattleSpritesDataPtr->animationData->field_A--;
+ if (gBattleSpritesDataPtr->animationData->field_A == 0)
+ {
+ for (i = 0; i < 12; i++)
+ {
+ if (FuncIsActiveTask(gBallOpenParticleAnimationFuncs[i]) == TRUE)
+ break;
+ }
+
+ if (i == 12)
+ {
+ for (j = 0; j < 12; j++)
+ {
+ FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[j].tag);
+ FreeSpritePaletteByTag(gBallOpenParticlePalettes[j].tag);
+ }
+ }
+
+ DestroySprite(sprite);
+ }
+ else
+ {
+ DestroySprite(sprite);
+ }
+ }
+}
+
+u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId)
+{
+ u8 taskId;
+
+ taskId = CreateTask(sub_8172AB0, 5);
+ gTasks[taskId].data[15] = ballId;
+ gTasks[taskId].data[3] = battler;
+ gTasks[taskId].data[10] = selectedPalettes;
+ gTasks[taskId].data[11] = selectedPalettes >> 16;
+
+ if (!unfadeLater)
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 0, gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[1] = 1;
+ }
+ else
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 16, gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = -1;
+ gTasks[taskId].func = sub_8172B40;
+ }
+
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31));
+ return taskId;
+}
+
+static void sub_8172AB0(u8 taskId)
+{
+ u8 ballId = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8172B40(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ gTasks[taskId].func = sub_8172B90;
+ }
+}
+
+static void sub_8172B90(u8 taskId)
+{
+ u8 ballId = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8172BF0(u8 taskId)
+{
+ u8 spriteId;
+ u32 x;
+ u32 done;
+
+ done = FALSE;
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ gTasks[taskId].data[11] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
+ if (x > 304)
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, gTasks[taskId].data[11], spriteId);
+ gTasks[taskId].data[10]++;
+ break;
+ case 2:
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ if (gSprites[spriteId].pos2.x <= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ // done = FALSE; // fakematching--can't get the tail merge correct
+ goto DONE;
+ }
+ }
+ else
+ {
+ if (gSprites[spriteId].pos2.x >= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ done = TRUE;
+ }
+ }
+
+ if (done)
+ {
+ DONE:
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8172D98(u8 taskId)
+{
+ u8 spriteId;
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (sub_80A8364(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT)
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ else
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+ gTasks[taskId].data[15]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[1]++ > 1)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - gTasks[taskId].data[0], gTasks[taskId].data[0]));
+ if (gTasks[taskId].data[0] == 16)
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 2:
+ spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
+ RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1);
+ ClearBehindSubstituteBit(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8172E9C(u8 taskId)
+{
+ gBattleAnimArgs[7] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8172ED0(u8 taskId)
+{
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8172EF0(u8 battler, struct Pokemon *mon)
+{
+ int isShiny;
+ u32 otId, personality;
+ u32 shinyValue;
+ u8 taskId1, taskId2;
+
+ isShiny = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1;
+ otId = GetMonData(mon, MON_DATA_OT_ID);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ if (IsBattlerSpriteVisible(battler))
+ {
+ shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ isShiny = TRUE;
+
+ if (isShiny)
+ {
+ if (GetSpriteTileStartByTag(0x27F9) == 0xFFFF)
+ {
+ LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[233]);
+ LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[233]);
+ }
+
+ taskId1 = CreateTask(sub_8172FEC, 10);
+ taskId2 = CreateTask(sub_8172FEC, 10);
+ gTasks[taskId1].data[0] = battler;
+ gTasks[taskId2].data[0] = battler;
+ gTasks[taskId1].data[1] = 0;
+ gTasks[taskId2].data[1] = 1;
+ return;
+ }
+ }
+
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+}
+
+static void sub_8172FEC(u8 taskId)
+{
+ u8 battler;
+ u8 x, y;
+ u8 spriteId;
+ u16 counter;
+ s16 state;
+ u8 pan;
+
+ if (gTasks[taskId].data[13] < 60)
+ {
+ gTasks[taskId].data[13]++;
+ return;
+ }
+
+ if (gBattleSpritesDataPtr->animationData->field_A)
+ return;
+
+ counter = gTasks[taskId].data[10]++;
+ if (counter & 3)
+ return;
+
+ battler = gTasks[taskId].data[0];
+ x = GetBattlerSpriteCoord(battler, 0);
+ y = GetBattlerSpriteCoord(battler, 1);
+ state = gTasks[taskId].data[11];
+ if (state == 0)
+ {
+ spriteId = CreateSprite(&gUnknown_085CE388, x, y, 5);
+ }
+ else if (state >= 0 && gTasks[taskId].data[11] < 4)
+ {
+ spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 4;
+ }
+ else
+ {
+ spriteId = CreateSprite(&gUnknown_085CE3A0, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 5;
+ }
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gSprites[spriteId].callback = sub_81731FC;
+ }
+ else
+ {
+ gSprites[spriteId].callback = sub_8173250;
+ gSprites[spriteId].pos2.x = -32;
+ gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].invisible = 1;
+ if (gTasks[taskId].data[11] == 0)
+ {
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ pan = 192;
+ else
+ pan = 63;
+
+ PlaySE12WithPanning(SE_REAPOKE, pan);
+ }
+ }
+
+ gSprites[spriteId].data[0] = taskId;
+ gTasks[taskId].data[11]++;
+ if (spriteId != MAX_SPRITES)
+ gTasks[taskId].data[12]++;
+
+ if (gTasks[taskId].data[11] == 5)
+ gTasks[taskId].func = sub_81731B0;
+}
+
+static void sub_81731B0(u8 taskId)
+{
+ u8 battler;
+
+ if (gTasks[taskId].data[12] == 0)
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ battler = gTasks[taskId].data[0];
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ }
+
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_81731FC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 24);
+ sprite->pos2.y = Cos(sprite->data[1], 24);
+ sprite->data[1] += 12;
+ if (sprite->data[1] > 0xFF)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8173250(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 4)
+ {
+ sprite->data[1]++;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ sprite->pos2.x += 5;
+ sprite->pos2.y -= 5;
+ if (sprite->pos2.x > 32)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_81732B0(u8 taskId)
+{
+ u8 paletteIndex;
+
+ LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[269]);
+ LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[269]);
+ paletteIndex = IndexOfSpritePaletteTag(0x281D); // unused
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_81732E4(u8 taskId)
+{
+ FreeSpriteTilesByTag(0x281D);
+ FreeSpritePaletteByTag(0x281D);
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_817330C(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 0);
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3];
+ sprite->data[5] = -32;
+ InitAnimArcTranslation(sprite);
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84;
+ sprite->callback = sub_817339C;
+}
+
+static void sub_817339C(struct Sprite *sprite)
+{
+ if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1)
+ sprite->callback = sub_81733D4;
+}
+
+static void sub_81733D4(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = 1;
+ sprite->callback = sub_8173400;
+ }
+}
+
+static void sub_8173400(struct Sprite *sprite)
+{
+ if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded)
+ {
+ if (++sprite->data[0] > 0)
+ {
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ DestroyAnimSprite(sprite);
+ }
+ }
+}
+
+void sub_817345C(u8 taskId)
+{
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ break;
+ case 1:
+ gBattleAnimAttacker = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ gBattleAnimTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ break;
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTrappedMoveAnimId(u8 taskId)
+{
+ if (gBattleSpritesDataPtr->animationData->animArg == 83)
+ gBattleAnimArgs[0] = 1;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 250)
+ gBattleAnimArgs[0] = 2;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 128)
+ gBattleAnimArgs[0] = 3;
+ else if (gBattleSpritesDataPtr->animationData->animArg == 328)
+ gBattleAnimArgs[0] = 4;
+ else
+ gBattleAnimArgs[0] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_817351C(u8 taskId)
+{
+ gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg;
+ gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8;
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index c3d0fe90f..85ff692b3 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -40,10 +40,10 @@ static void sub_8117FD0(u8);
const u16 gUnknown_08597418 = RGB(31, 31, 31);
-// no clue what these are...
-// possibly some register offsets
-const u8 gUnknown_0859741A[] = {0x08, 0x0a, 0x0c, 0x0e};
-const u8 gUnknown_0859741E[] = {0x08, 0x0a, 0x0c, 0x0e};
+// These belong in battle_intro.c, but there putting them there causes 2 bytes of alignment padding
+// between the two .rodata segments. Perhaps battle_intro.c actually belongs in this file, too.
+const u8 gUnknown_0859741A[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
+const u8 gUnknown_0859741E[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT};
void sub_8116620(u8 taskId)
{
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 0ccc7e828..736e35a87 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -1,21 +1,728 @@
#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "battle_main.h"
+#include "battle_setup.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "scanline_effect.h"
#include "task.h"
+#include "trig.h"
+#include "constants/trainers.h"
-extern void task_battle_intro_80BC47C(u8);
-extern void task00_battle_intro_80BC6C8(u8);
-extern void task_battle_intro_80BC47C(u8);
-extern void task_battle_intro_anim(u8);
-
-const TaskFunc gUnknown_08597424[] =
-{
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task00_battle_intro_80BC6C8,
- task00_battle_intro_80BC6C8,
- task00_battle_intro_80BC6C8,
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task_battle_intro_80BC47C,
- task_battle_intro_anim,
- task_battle_intro_anim,
+static EWRAM_DATA u16 sBgCnt = 0;
+
+extern const u8 gUnknown_0859741A[];
+extern const u8 gUnknown_0859741E[];
+
+static void BattleIntroSlide1(u8);
+static void BattleIntroSlide2(u8);
+static void BattleIntroSlide3(u8);
+static void BattleIntroSlideLink(u8);
+static void BattleIntroSlidePartner(u8);
+
+static const TaskFunc sBattleIntroSlideFuncs[] =
+{
+ BattleIntroSlide1, // BATTLE_TERRAIN_GRASS
+ BattleIntroSlide1, // BATTLE_TERRAIN_LONG_GRASS
+ BattleIntroSlide2, // BATTLE_TERRAIN_SAND
+ BattleIntroSlide2, // BATTLE_TERRAIN_UNDERWATER
+ BattleIntroSlide2, // BATTLE_TERRAIN_WATER
+ BattleIntroSlide1, // BATTLE_TERRAIN_POND
+ BattleIntroSlide1, // BATTLE_TERRAIN_MOUNTAIN
+ BattleIntroSlide1, // BATTLE_TERRAIN_CAVE
+ BattleIntroSlide3, // BATTLE_TERRAIN_BUILDING
+ BattleIntroSlide3, // BATTLE_TERRAIN_PLAIN
};
+
+void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
+{
+ if (bgId < 4)
+ {
+ sBgCnt = GetGpuReg(gUnknown_0859741A[bgId]);
+ switch (attributeId)
+ {
+ case BG_ANIM_SCREEN_SIZE:
+ ((struct BgCnt *)&sBgCnt)->screenSize = value;
+ break;
+ case BG_ANIM_AREA_OVERFLOW_MODE:
+ ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value;
+ break;
+ case BG_ANIM_MOSAIC:
+ ((struct BgCnt *)&sBgCnt)->mosaic = value;
+ break;
+ case BG_ANIM_CHAR_BASE_BLOCK:
+ ((struct BgCnt *)&sBgCnt)->charBaseBlock = value;
+ break;
+ case BG_ANIM_PRIORITY:
+ ((struct BgCnt *)&sBgCnt)->priority = value;
+ break;
+ case BG_ANIM_PALETTES_MODE:
+ ((struct BgCnt *)&sBgCnt)->palettes = value;
+ break;
+ case BG_ANIM_SCREEN_BASE_BLOCK:
+ ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value;
+ break;
+ }
+
+ SetGpuReg(gUnknown_0859741A[bgId], sBgCnt);
+ }
+}
+
+int GetAnimBgAttribute(u8 bgId, u8 attributeId)
+{
+ u16 bgCnt;
+
+ if (bgId < 4)
+ {
+ bgCnt = GetGpuReg(gUnknown_0859741E[bgId]);
+ switch (attributeId)
+ {
+ case BG_ANIM_SCREEN_SIZE:
+ return ((struct BgCnt *)&bgCnt)->screenSize;
+ case BG_ANIM_AREA_OVERFLOW_MODE:
+ return ((struct BgCnt *)&bgCnt)->areaOverflowMode;
+ case BG_ANIM_MOSAIC:
+ return ((struct BgCnt *)&bgCnt)->mosaic;
+ case BG_ANIM_CHAR_BASE_BLOCK:
+ return ((struct BgCnt *)&bgCnt)->charBaseBlock;
+ case BG_ANIM_PRIORITY:
+ return ((struct BgCnt *)&bgCnt)->priority;
+ case BG_ANIM_PALETTES_MODE:
+ return ((struct BgCnt *)&bgCnt)->palettes;
+ case BG_ANIM_SCREEN_BASE_BLOCK:
+ return ((struct BgCnt *)&bgCnt)->screenBaseBlock;
+ }
+ }
+
+ return 0;
+}
+
+void HandleIntroSlide(u8 terrain)
+{
+ u8 taskId;
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
+ {
+ taskId = CreateTask(BattleIntroSlidePartner, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ taskId = CreateTask(BattleIntroSlideLink, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ taskId = CreateTask(BattleIntroSlide3, 0);
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY)
+ {
+ terrain = BATTLE_TERRAIN_UNDERWATER;
+ taskId = CreateTask(BattleIntroSlide2, 0);
+ }
+ else
+ {
+ taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0);
+ }
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = terrain;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+}
+
+void sub_811828C(u8 taskId)
+{
+ DestroyTask(taskId);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+}
+
+static void BattleIntroSlide1(u8 taskId)
+{
+ int i;
+
+ gBattle_BG1_X += 6;
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ if (gBattle_BG1_Y != 0xFFB0)
+ gBattle_BG1_Y -= 2;
+ }
+ else
+ {
+ if (gBattle_BG1_Y != 0xFFC8)
+ gBattle_BG1_Y -= 1;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+static void BattleIntroSlide2(u8 taskId)
+{
+ int i;
+
+ switch (gTasks[taskId].data[1])
+ {
+ case 2:
+ case 4:
+ gBattle_BG1_X += 8;
+ break;
+ case 3:
+ gBattle_BG1_X += 6;
+ break;
+ }
+
+ if (gTasks[taskId].data[1] == 4)
+ {
+ gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8;
+ if (gTasks[taskId].data[6] < 180)
+ gTasks[taskId].data[6] += 4;
+ else
+ gTasks[taskId].data[6] += 6;
+
+ if (gTasks[taskId].data[6] == 360)
+ gTasks[taskId].data[6] = 0;
+ }
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[4] = 16;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].data[5] = 1;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ if (--gTasks[taskId].data[3] == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(15, 0));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ }
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 0xFF;
+ gTasks[taskId].data[5] = 4;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlide3(u8 taskId)
+{
+ int i;
+
+ gBattle_BG1_X += 8;
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ gTasks[taskId].data[4] = BLDALPHA_BLEND(8, 8);
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ gTasks[taskId].data[2] = 16;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].data[5] = 1;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[3])
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else
+ {
+ if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4] += 0xFF;
+ gTasks[taskId].data[5] = 6;
+ }
+ }
+
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+
+ if (gTasks[taskId].data[0] != 4)
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
+}
+
+static void BattleIntroSlideLink(u8 taskId)
+{
+ int i;
+
+ if (gTasks[taskId].data[0] > 1 && !gTasks[taskId].data[4])
+ {
+ u16 var0 = gBattle_BG1_X & 0x8000;
+ if (var0 || gBattle_BG1_X < 80)
+ {
+ gBattle_BG1_X += 3;
+ gBattle_BG2_X -= 3;
+ }
+ else
+ {
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE);
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(30), BG_SCREEN_SIZE);
+ gTasks[taskId].data[4] = 1;
+ }
+ }
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[2] = 32;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ gSprites[gBattleStruct->field_7D].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->field_7D].callback = sub_8038B74;
+ gSprites[gBattleStruct->field_7E].oam.objMode = ST_OAM_OBJ_WINDOW;
+ gSprites[gBattleStruct->field_7E].callback = sub_8038B74;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2);
+ }
+ break;
+ case 2:
+ gBattle_WIN0V -= 0xFF;
+ if ((gBattle_WIN0V & 0xFF00) == 0x3000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gTasks[taskId].data[3] = 32;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if (gBattle_WIN0V & 0xFF00)
+ gBattle_WIN0V -= 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ // Scanline settings have already been set in CB2_InitBattleInternal()
+ for (i = 0; i < 80; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2];
+
+ for (; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2];
+
+ if (!gTasks[taskId].data[2])
+ {
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ }
+ break;
+ case 4:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+static void BattleIntroSlidePartner(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT512x256);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ gBattle_BG0_Y = -48;
+ gBattle_BG1_X = 240;
+ gBattle_BG2_X = -240;
+ }
+ break;
+ case 2:
+ gBattle_WIN0V += 0x100;
+ if ((gBattle_WIN0V & 0xFF00) != 0x100)
+ gBattle_WIN0V--;
+
+ if ((gBattle_WIN0V & 0xFF00) == 0x2000)
+ {
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = 240;
+ gIntroSlideFlags &= ~1;
+ }
+ break;
+ case 3:
+ if ((gBattle_WIN0V & 0xFF00) != 0x4C00)
+ gBattle_WIN0V += 0x3FC;
+
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2] -= 2;
+
+ gBattle_BG1_X = gTasks[taskId].data[2];
+ gBattle_BG2_X = -gTasks[taskId].data[2];
+ if (!gTasks[taskId].data[2])
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ gBattle_BG0_Y += 2;
+ gBattle_BG2_Y += 2;
+ if ((gBattle_WIN0V & 0xFF00) != 0x5000)
+ gBattle_WIN0V += 0xFF;
+
+ if (!gBattle_BG0_Y)
+ {
+ CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE * 4);
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) & ~DISPCNT_WIN1_ON);
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
+ gScanlineEffect.state = 3;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 5:
+ sub_811828C(taskId);
+ break;
+ }
+}
+
+void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
+{
+ int i, j;
+ u8 battler = GetBattlerAtPosition(battlerPosition);
+ int offset = tilesOffset;
+ CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
+ LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
+ for (i = arg2; i < arg2 + 8; i++)
+ {
+ for (j = arg1; j < arg1 + 8; j++)
+ {
+ arg6[i * 32 + j] = offset | (arg4 << 12);
+ offset++;
+ }
+ }
+
+ LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
+}
+
+#ifdef NONMATCHING
+void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+{
+ int i, j;
+ int offset;
+ DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
+ offset = (arg5 >> 5) - (arg7 << 9);
+ for (i = arg1; i < arg1 + 8; i++)
+ {
+ for (j = arg0; j < arg0 + 8; j++)
+ {
+ ((u16 *)BG_VRAM)[i * 32 + j + (arg6 * 0x400) + arg0] = offset | (arg4 << 12);
+ offset++;
+ }
+ }
+}
+#else
+NAKED
+void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+{
+ asm_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, 0x4\n\
+ ldr r4, [sp, 0x24]\n\
+ ldr r5, [sp, 0x28]\n\
+ mov r8, r5\n\
+ ldr r5, [sp, 0x2C]\n\
+ ldr r6, [sp, 0x30]\n\
+ mov r9, r6\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r12, r0\n\
+ lsls r1, 24\n\
+ lsls r2, 24\n\
+ lsls r3, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ mov r10, r4\n\
+ mov r7, r8\n\
+ lsls r7, 16\n\
+ lsrs r6, r7, 16\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ mov r0, r9\n\
+ lsls r0, 24\n\
+ mov r9, r0\n\
+ ldr r4, =0x040000d4\n\
+ ldr r0, =gMonSpritesGfxPtr\n\
+ ldr r0, [r0]\n\
+ lsrs r2, 22\n\
+ adds r0, 0x4\n\
+ adds r0, r2\n\
+ lsrs r3, 13\n\
+ ldr r0, [r0]\n\
+ adds r0, r3\n\
+ str r0, [r4]\n\
+ movs r0, 0xC0\n\
+ lsls r0, 19\n\
+ adds r6, r0\n\
+ str r6, [r4, 0x4]\n\
+ ldr r0, =0x80000400\n\
+ str r0, [r4, 0x8]\n\
+ ldr r0, [r4, 0x8]\n\
+ adds r2, r7, 0\n\
+ lsrs r2, 21\n\
+ mov r6, r9\n\
+ lsrs r6, 15\n\
+ subs r4, r2, r6\n\
+ lsrs r0, r1, 24\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x8\n\
+ cmp r0, r1\n\
+ bge _08119148\n\
+ mov r9, r1\n\
+ mov r7, r12\n\
+ lsls r7, 1\n\
+ mov r8, r7\n\
+ lsls r5, 11\n\
+ str r5, [sp]\n\
+_08119110:\n\
+ mov r2, r12\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x8\n\
+ adds r5, r0, 0x1\n\
+ cmp r2, r3\n\
+ bge _08119142\n\
+ mov r1, r10\n\
+ lsls r6, r1, 12\n\
+ lsls r0, 6\n\
+ movs r7, 0xC0\n\
+ lsls r7, 19\n\
+ adds r0, r7\n\
+ ldr r1, [sp]\n\
+ adds r0, r1, r0\n\
+ mov r7, r8\n\
+ adds r1, r7, r0\n\
+ subs r2, r3, r2\n\
+_08119132:\n\
+ adds r0, r4, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r4, 0x1\n\
+ adds r1, 0x2\n\
+ subs r2, 0x1\n\
+ cmp r2, 0\n\
+ bne _08119132\n\
+_08119142:\n\
+ adds r0, r5, 0\n\
+ cmp r0, r9\n\
+ blt _08119110\n\
+_08119148:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif
diff --git a/src/battle_main.c b/src/battle_main.c
index 9b7f58023..fb2e5105a 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -81,7 +81,7 @@ extern const u8 *const gBattlescriptsForBallThrow[];
extern const u8 *const gBattlescriptsForRunningByItem[];
extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
-extern const struct ScanlineEffectParams gUnknown_0831AC70;
+extern const struct ScanlineEffectParams gBattleIntroSlideScanlineEffectParams;
// strings
extern const u8 gText_LinkStandby3[];
@@ -633,7 +633,7 @@ static void CB2_InitBattleInternal(void)
gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- ScanlineEffect_SetParams(gUnknown_0831AC70);
+ ScanlineEffect_SetParams(gBattleIntroSlideScanlineEffectParams);
}
ResetPaletteFade();
diff --git a/src/battle_tower.c b/src/battle_tower.c
index cb128b532..4a9e0dbc4 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -3245,7 +3245,7 @@ static void FillPartnerParty(u16 trainerId)
for (i = 0; i < 2; i++)
{
struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId];
- struct UnknownPokemonStruct monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
+ struct BattleTowerPokemon monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
StringCopy(trainerName, record->name);
if (record->language == LANGUAGE_JAPANESE)
{
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 7950b7cac..b1b189c09 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,8 +1,709 @@
#include "global.h"
+#include "alloc.h"
+#include "battle.h"
+#include "bg.h"
+#include "contest.h"
+#include "contest_painting.h"
+#include "contest_painting_effects.h"
+#include "battle_gfx_sfx_util.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
+#include "main.h"
+#include "lilycove_lady.h"
+#include "palette.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "window.h"
+#include "constants/rgb.h"
+
+extern u8 gUnknown_02039F5C;
+extern u8 gUnknown_02039F5D;
+
+extern u16 (*gUnknown_03006190)[][32];
+extern struct ContestWinner *gUnknown_030061C0;
+extern u16 *gContestPaintingMonPalette;
+extern struct Unk030061A0 gUnknown_030061A0;
// IWRAM bss
-IWRAM_DATA u8 gUnknown_030011F0;
-IWRAM_DATA u16 gUnknown_030011F2;
-IWRAM_DATA u16 gUnknown_030011F4;
-IWRAM_DATA u8 gUnknown_030011F6;
-IWRAM_DATA u8 gUnknown_030011F7;
+IWRAM_DATA u8 gContestPaintingState;
+IWRAM_DATA u16 gContestPaintingMosaicVal;
+IWRAM_DATA u16 gContestPaintingFadeCounter;
+IWRAM_DATA bool8 gUnknown_030011F6;
+IWRAM_DATA u8 gContestPaintingWindowId;
+
+static void ShowContestPainting(void);
+static void HoldContestPainting(void);
+static void InitContestPaintingWindow(void);
+static void InitContestPaintingBg(void);
+static void InitContestPaintingVars(bool8);
+static void sub_8130884(u8, u8);
+static void PrintContestPaintingCaption(u8, u8);
+static void VBlankCB_ContestPainting(void);
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]);
+
+extern const u8 gUnknown_0827EA0C[];
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+extern const u8 gContestCoolness[];
+extern const u8 gContestBeauty[];
+extern const u8 gContestCuteness[];
+extern const u8 gContestSmartness[];
+extern const u8 gContestToughness[];
+extern const u8 gContestRankNormal[];
+extern const u8 gContestRankSuper[];
+extern const u8 gContestRankHyper[];
+extern const u8 gContestRankMaster[];
+extern const u8 gContestLink[];
+extern const u8 gContestPaintingCool1[];
+extern const u8 gContestPaintingCool2[];
+extern const u8 gContestPaintingCool3[];
+extern const u8 gContestPaintingBeauty1[];
+extern const u8 gContestPaintingBeauty2[];
+extern const u8 gContestPaintingBeauty3[];
+extern const u8 gContestPaintingCute1[];
+extern const u8 gContestPaintingCute2[];
+extern const u8 gContestPaintingCute3[];
+extern const u8 gContestPaintingSmart1[];
+extern const u8 gContestPaintingSmart2[];
+extern const u8 gContestPaintingSmart3[];
+extern const u8 gContestPaintingTough1[];
+extern const u8 gContestPaintingTough2[];
+extern const u8 gContestPaintingTough3[];
+
+const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+
+const u8 *const gUnknown_085B07C0[] =
+{
+ gContestCoolness,
+ gContestBeauty,
+ gContestCuteness,
+ gContestSmartness,
+ gContestToughness,
+};
+
+const u8 *const gContestRankTextPointers[] =
+{
+ gContestRankNormal,
+ gContestRankSuper,
+ gContestRankHyper,
+ gContestRankMaster,
+ gContestLink,
+};
+
+const struct BgTemplate gUnknown_085B07E8[] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 10,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
+const struct WindowTemplate gUnknown_085B07EC =
+{
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 14,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 1,
+};
+
+const u8 *const gContestPaintingDescriptionPointers[] =
+{
+ gContestPaintingCool1,
+ gContestPaintingCool2,
+ gContestPaintingCool3,
+ gContestPaintingBeauty1,
+ gContestPaintingBeauty2,
+ gContestPaintingBeauty3,
+ gContestPaintingCute1,
+ gContestPaintingCute2,
+ gContestPaintingCute3,
+ gContestPaintingSmart1,
+ gContestPaintingSmart2,
+ gContestPaintingSmart3,
+ gContestPaintingTough1,
+ gContestPaintingTough2,
+ gContestPaintingTough3,
+};
+
+const struct OamData gUnknown_085B0830 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 1,
+ .bpp = ST_OAM_8BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)};
+
+void sub_812FDA8(int contestWinner)
+{
+ // probably fakematching
+ u8 *ptr1 = &gUnknown_02039F5D;
+ u8 *ptr2 = &gUnknown_02039F5C;
+ gUnknown_02039F3C = gSaveBlock1Ptr->contestWinners[contestWinner - 1];
+ *ptr1 = contestWinner - 1;
+ *ptr2 = 0;
+}
+
+void CB2_ContestPainting(void)
+{
+ ShowContestPainting();
+}
+
+static void CB2_HoldContestPainting(void)
+{
+ HoldContestPainting();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void CB2_QuitContestPainting(void)
+{
+ SetMainCallback2(gMain.savedCallback);
+ FREE_AND_SET_NULL(gContestPaintingMonPalette);
+ FREE_AND_SET_NULL(gUnknown_03006190);
+ RemoveWindow(gContestPaintingWindowId);
+ Free(GetBgTilemapBuffer(1));
+ FreeMonSpritesGfx();
+}
+
+static void ShowContestPainting(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ ScanlineEffect_Stop();
+ SetVBlankCallback(NULL);
+ AllocateMonSpritesGfx();
+ gUnknown_030061C0 = &gUnknown_02039F3C;
+ InitContestPaintingVars(1);
+ InitContestPaintingBg();
+ gMain.state++;
+ break;
+ case 1:
+ ResetPaletteFade();
+ DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000);
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 2:
+ SeedRng(gMain.vblankCounter1);
+ InitKeys();
+ InitContestPaintingWindow();
+ gMain.state++;
+ break;
+ case 3:
+ sub_8130884(gUnknown_02039F5D, gUnknown_02039F5C);
+ gMain.state++;
+ break;
+ case 4:
+ PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C);
+ LoadPalette(gUnknown_085B0838, 0, 1 * 2);
+ DmaClear32(3, PLTT, PLTT_SIZE);
+ BeginFastPaletteFade(2);
+ SetVBlankCallback(VBlankCB_ContestPainting);
+ gContestPaintingState = 0;
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
+ SetMainCallback2(CB2_HoldContestPainting);
+ break;
+ }
+}
+
+static void HoldContestPainting(void)
+{
+ switch (gContestPaintingState)
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ gContestPaintingState = 1;
+ if (gUnknown_030011F6 && gContestPaintingFadeCounter)
+ gContestPaintingFadeCounter--;
+ break;
+ case 1:
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ u8 two = 2; //needed to make the asm match
+ gContestPaintingState = two;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ }
+
+ if (gUnknown_030011F6)
+ gContestPaintingFadeCounter = 0;
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ SetMainCallback2(CB2_QuitContestPainting);
+ if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30)
+ gContestPaintingFadeCounter++;
+ break;
+ }
+}
+
+static void InitContestPaintingWindow(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085B07E8, ARRAY_COUNT(gUnknown_085B07E8));
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
+ gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC);
+ DeactivateAllTextPrinters();
+ FillWindowPixelBuffer(gContestPaintingWindowId, 0);
+ PutWindowTilemap(gContestPaintingWindowId);
+ CopyWindowToVram(gContestPaintingWindowId, 3);
+ ShowBg(1);
+}
+
+static void PrintContestPaintingCaption(u8 contestType, u8 arg1)
+{
+ int x;
+ u8 category;
+
+ if (arg1 == TRUE)
+ return;
+
+ category = gUnknown_030061C0->contestCategory;
+ if (contestType < 8)
+ {
+ sub_818E868(gStringVar1, category);
+ StringAppend(gStringVar1, gText_Space);
+ StringAppend(gStringVar1, gContestRankTextPointers[gUnknown_030061C0->contestRank]);
+ StringCopy(gStringVar2, gUnknown_030061C0->trainerName);
+ sub_81DB5AC(gStringVar2);
+ StringCopy(gStringVar3, gUnknown_030061C0->monName);
+ StringExpandPlaceholders(gStringVar4, gUnknown_0827EA0C);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gUnknown_030061C0->monName);
+ StringExpandPlaceholders(gStringVar4, gContestPaintingDescriptionPointers[category]);
+ }
+
+ x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
+ AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void InitContestPaintingBg(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ REG_IE |= INTR_FLAG_VBLANK;
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+}
+
+static void InitContestPaintingVars(bool8 arg0)
+{
+ if (arg0 == FALSE)
+ {
+ gUnknown_030011F6 = FALSE;
+ gContestPaintingMosaicVal = 0;
+ gContestPaintingFadeCounter = 0;
+ }
+ else
+ {
+ gUnknown_030011F6 = TRUE;
+ gContestPaintingMosaicVal = 15;
+ gContestPaintingFadeCounter = 30;
+ }
+}
+
+static void UpdateContestPaitingMosaicEffect(void)
+{
+ if (!gUnknown_030011F6)
+ {
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
+ gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2;
+ SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0));
+ }
+}
+
+static void VBlankCB_ContestPainting(void)
+{
+ UpdateContestPaitingMosaicEffect();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_81302E8(u16 species, u8 arg1)
+{
+ const void *pal = GetFrontSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
+ LZDecompressVram(pal, gContestPaintingMonPalette);
+ if (!arg1)
+ {
+ HandleLoadSpecialPokePic_DontHandleDeoxys(
+ &gMonFrontPicTable[species],
+ gMonSpritesGfxPtr->sprites[1],
+ species,
+ gUnknown_030061C0->personality);
+ sub_8130380(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gUnknown_03006190);
+ }
+ else
+ {
+ HandleLoadSpecialPokePic_DontHandleDeoxys(
+ &gMonBackPicTable[species],
+ gMonSpritesGfxPtr->sprites[0],
+ species,
+ gUnknown_030061C0->personality);
+ sub_8130380(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gUnknown_03006190);
+ }
+}
+
+#ifdef NONMATCHING
+// functionally equivalent.
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64])
+{
+ u16 tileY, tileX, pixelY, pixelX;
+ u8 colorIndex;
+
+ for (tileY = 0; tileY < 8; tileY++)
+ {
+ for (tileX = 0; tileX < 8; tileX++)
+ {
+ for (pixelY = 0; pixelY < 8; pixelY++)
+ {
+ for (pixelX = 0; pixelX < 8; pixelX++)
+ {
+ int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2);
+ colorIndex = spritePixels[offset];
+ if (pixelX & 1)
+ colorIndex >>= 4;
+ else
+ colorIndex &= 0xF;
+
+ if (colorIndex == 0) // transparent pixel
+ (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
+ else
+ (*destColorBuffer)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
+ }
+ }
+ }
+ }
+}
+#else
+NAKED
+static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64])
+{
+ asm_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\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
+_08130394:\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
+_0813039E:\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
+_081303AE:\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
+_081303C2:\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _081303D6\n\
+ lsrs r1, 4\n\
+ b _081303DA\n\
+_081303D6:\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
+_081303DA:\n\
+ cmp r1, 0\n\
+ bne _081303EC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _081303F8\n\
+_081303EC:\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
+_081303F8:\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _081303C2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _081303AE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _0813039E\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08130394\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif
+
+static void sub_8130430(u8 arg0, u8 arg1)
+{
+ u8 x, y;
+
+ LoadPalette(gPictureFramePalettes, 0, 0x100);
+ if (arg1 == 1)
+ {
+ switch (gUnknown_030061C0->contestCategory / 3)
+ {
+ case CONTEST_CATEGORY_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03006190);
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
+ RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03006190);
+ break;
+ }
+
+#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
+
+ // Set the background
+ for (y = 0; y < 20; y++)
+ {
+ for (x = 0; x < 32; x++)
+ VRAM_PICTURE_DATA(x, y) = 0x1015;
+ }
+
+ // Copy the image frame
+ for (y = 0; y < 10; y++)
+ {
+ for (x = 0; x < 18; x++)
+ VRAM_PICTURE_DATA(x + 6, y + 2) = (*gUnknown_03006190)[y + 2][x + 6];
+ }
+
+ // Re-set the entire top row to the first top frame part
+ for (x = 0; x < 16; x++)
+ VRAM_PICTURE_DATA(x + 7, 2) = (*gUnknown_03006190)[2][7];
+
+#undef VRAM_PICTURE_DATA
+ }
+ else if (arg0 < 8)
+ {
+ RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
+ }
+ else
+ {
+ switch (gUnknown_030061C0->contestCategory / 3)
+ {
+ case CONTEST_CATEGORY_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000));
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
+ RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000));
+ break;
+ }
+ }
+}
+
+static void sub_8130688(u8 arg0)
+{
+ //Some hacks just to get the asm to match
+#ifndef NONMATCHING
+ asm(""::"r"(arg0));
+#endif
+
+ gMain.oamBuffer[0] = gUnknown_085B0830;
+ gMain.oamBuffer[0].tileNum = 0;
+
+#ifndef NONMATCHING
+ if (arg0) arg0 = gMain.oamBuffer[0].tileNum;
+#endif
+
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+}
+
+static u8 sub_81306CC(u8 arg0)
+{
+ u8 contestCategory;
+
+ if (arg0 < 8)
+ contestCategory = gUnknown_030061C0->contestCategory;
+ else
+ contestCategory = gUnknown_030061C0->contestCategory / 3;
+
+ switch (contestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ return CONTESTRESULT_COOL;
+ case CONTEST_CATEGORY_BEAUTY:
+ return CONTESTRESULT_BEAUTY;
+ case CONTEST_CATEGORY_CUTE:
+ return CONTESTRESULT_CUTE;
+ case CONTEST_CATEGORY_SMART:
+ return CONTESTRESULT_SMART;
+ case CONTEST_CATEGORY_TOUGH:
+ return CONTESTRESULT_TOUGH;
+ }
+
+ return contestCategory;
+}
+
+static void sub_8130738(void)
+{
+ gContestPaintingMonPalette = AllocZeroed(0x200);
+ gUnknown_03006190 = AllocZeroed(0x2000);
+}
+
+static void sub_8130760(u8 contestResult)
+{
+ gUnknown_030061A0.var_4 = gUnknown_03006190;
+ gUnknown_030061A0.var_8 = gContestPaintingMonPalette;
+ gUnknown_030061A0.var_18 = 0;
+ gUnknown_030061A0.var_1F = gUnknown_030061C0->personality % 256;
+ gUnknown_030061A0.var_19 = 0;
+ gUnknown_030061A0.var_1A = 0;
+ gUnknown_030061A0.var_1B = 64;
+ gUnknown_030061A0.var_1C = 64;
+ gUnknown_030061A0.var_1D = 64;
+ gUnknown_030061A0.var_1E = 64;
+
+ switch (contestResult)
+ {
+ case CONTESTRESULT_SMART:
+ case CONTESTRESULT_TOUGH:
+ gUnknown_030061A0.var_14 = 3;
+ break;
+ case CONTESTRESULT_COOL:
+ case CONTESTRESULT_BEAUTY:
+ case CONTESTRESULT_CUTE:
+ default:
+ gUnknown_030061A0.var_14 = 1;
+ break;
+ }
+
+ gUnknown_030061A0.var_16 = 2;
+ gUnknown_030061A0.var_0 = contestResult;
+ gUnknown_030061A0.var_10 = 0x6010000;
+
+ sub_8124F2C(&gUnknown_030061A0);
+ sub_81261A4(&gUnknown_030061A0);
+ sub_8126058(&gUnknown_030061A0);
+
+ LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
+}
+
+static void sub_8130884(u8 arg0, u8 arg1)
+{
+ sub_8130738();
+ sub_81302E8(gUnknown_030061C0->species, 0);
+ sub_8130760(sub_81306CC(arg0));
+ sub_8130688(arg0);
+ sub_8130430(arg0, arg1);
+}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 25ef069e4..c4bc02e42 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -51,6 +51,9 @@ EWRAM_DATA struct
u16 ecWordBuffer[9];
} *gUnknown_0203A118 = NULL;
+EWRAM_DATA void *gUnknown_0203A11C = 0;
+EWRAM_DATA void *gUnknown_0203A120 = 0;
+
// Static ROM declarations
static void sub_811A2C0(u8);
diff --git a/src/item.c b/src/item.c
index 6a1f1955a..71c2dc0f7 100644
--- a/src/item.c
+++ b/src/item.c
@@ -543,7 +543,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
VarSet(VAR_0x40ED, itemId);
}
- var = sub_81ABB2C(pocket);
+ var = GetItemListPosition(pocket);
if (itemPocket->capacity > var
&& itemPocket->itemSlots[var].itemId == itemId)
{
diff --git a/src/item_menu.c b/src/item_menu.c
index 40d09a8a1..32c42ac31 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -57,7 +57,7 @@ bool8 load_bag_menu_graphics(void);
void setup_bag_menu_textboxes(void);
void allocate_bag_item_list_buffers(void);
void load_bag_item_list_buffers(u8);
-void bag_menu_print_pocket_names(u8*, u8*);
+void bag_menu_print_pocket_names(const u8*, const u8*);
void bag_menu_copy_pocket_name_to_window(u32);
void bag_menu_draw_pocket_indicator_square(u8, u8);
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void);
@@ -69,7 +69,6 @@ void Task_BagMenu(u8);
void get_name(s8*, u16);
u16 ItemIdToBattleMoveId(u16);
u16 BagGetItemIdByPocketPosition(u8, u16);
-void AddBagItemIconSprite(u16, u8);
void bag_menu_print_description_box_text(int);
void bag_menu_print_cursor(u8, u8);
void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8);
@@ -121,7 +120,7 @@ void bag_menu_leave_maybe_3(void);
void bag_menu_leave_maybe_2(void);
void bag_menu_leave_maybe(void);
void sub_81ABA6C(void);
-void sub_81ABAC4(void);
+static void SetPocketListPositions(void);
void sub_81ABAE0(void);
u8 sub_81AB1F0(u8);
void sub_81AC23C(u8);
@@ -151,7 +150,7 @@ void sub_81AD6FC(u8 taskId);
// .rodata
-const struct BgTemplate gUnknown_08613F90[3] =
+static const struct BgTemplate sBgTemplates_ItemMenu[3] =
{
{
.bg = 0,
@@ -182,7 +181,7 @@ const struct BgTemplate gUnknown_08613F90[3] =
},
};
-const struct ListMenuTemplate gUnknown_08613F9C =
+static const struct ListMenuTemplate sItemListMenu =
{
.items = NULL,
.moveCursorFunc = bag_menu_change_item_callback,
@@ -258,7 +257,8 @@ const struct ScrollArrowsTemplate gUnknown_08614094 = {SCROLL_ARROW_LEFT, 0x1C,
const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp");
-const u8 gUnknown_08614164[][3] = {
+static const u8 sFontColorTable[][3] = {
+// bgColor, textColor, shadowColor
{0, 1, 3},
{0, 1, 4},
{0, 3, 6},
@@ -268,7 +268,7 @@ const u8 gUnknown_08614164[][3] = {
const struct WindowTemplate gUnknown_08614174[] =
{
- {
+ { // Item names
.bg = 0,
.tilemapLeft = 14,
.tilemapTop = 2,
@@ -277,7 +277,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x27,
},
- {
+ { // Description
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
@@ -286,7 +286,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x117,
},
- {
+ { // Pocket name
.bg = 0,
.tilemapLeft = 4,
.tilemapTop = 1,
@@ -295,7 +295,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 1,
.baseBlock = 0x1A1,
},
- {
+ { // TM/HM info icons
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 13,
@@ -304,7 +304,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 12,
.baseBlock = 0x16B,
},
- {
+ {// TM/HM info
.bg = 0,
.tilemapLeft = 7,
.tilemapTop = 13,
@@ -313,7 +313,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.paletteNum = 12,
.baseBlock = 0x189,
},
- {
+ { // Field message box
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -440,16 +440,14 @@ struct TempWallyStruct {
EWRAM_DATA struct UnkBagStruct *gUnknown_0203CE54 = 0;
EWRAM_DATA struct BagStruct gUnknown_0203CE58 = {0};
-EWRAM_DATA struct ListBuffer1 *gUnknown_0203CE74 = 0;
-EWRAM_DATA struct ListBuffer2 *gUnknown_0203CE78 = 0;
+static EWRAM_DATA struct ListBuffer1 *sListBuffer1 = 0;
+static EWRAM_DATA struct ListBuffer2 *sListBuffer2 = 0;
EWRAM_DATA u16 gSpecialVar_ItemId = 0;
-EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
+static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
-extern u8 *gPocketNamesStringsTable[];
-extern struct ListMenuTemplate gUnknown_08613F9C;
+extern u8 *const gPocketNamesStringsTable[];
extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
-extern u32 gUnknown_0203CE5E[];
extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
@@ -531,12 +529,12 @@ void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)
temp = gUnknown_0203CE58.location - (POCKETS_COUNT - 1);
if (temp <= 1)
gUnknown_0203CE54->unk81B = 1;
- gUnknown_0203CE54->unk0 = 0;
+ gUnknown_0203CE54->mainCallback2 = 0;
gUnknown_0203CE54->unk81A = 0xFF;
gUnknown_0203CE54->unk81E = -1;
gUnknown_0203CE54->unk81F = -1;
- memset(gUnknown_0203CE54->unk804, 0xFF, sizeof(gUnknown_0203CE54->unk804));
- memset(gUnknown_0203CE54->unk810, 0xFF, 10);
+ memset(gUnknown_0203CE54->spriteId, 0xFF, sizeof(gUnknown_0203CE54->spriteId));
+ memset(gUnknown_0203CE54->windowPointers, 0xFF, 10);
SetMainCallback2(CB2_Bag);
}
}
@@ -615,7 +613,7 @@ bool8 setup_bag_menu(void)
break;
case 10:
sub_81ABA6C();
- sub_81ABAC4();
+ SetPocketListPositions();
sub_81ABAE0();
gMain.state++;
break;
@@ -677,10 +675,10 @@ bool8 setup_bag_menu(void)
void bag_menu_init_bgs(void)
{
ResetVramOamAndBgCntRegs();
- memset(gUnknown_0203CE54->unk4, 0, 0x800);
+ memset(gUnknown_0203CE54->tilemapBuffer, 0, 0x800);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08613F90, 3);
- SetBgTilemapBuffer(2, gUnknown_0203CE54->unk4);
+ InitBgsFromTemplates(0, sBgTemplates_ItemMenu, 3);
+ SetBgTilemapBuffer(2, gUnknown_0203CE54->tilemapBuffer);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
@@ -702,7 +700,7 @@ bool8 load_bag_menu_graphics(void)
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->unk4);
+ LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->tilemapBuffer);
gUnknown_0203CE54->unk834++;
}
break;
@@ -744,8 +742,8 @@ u8 sub_81AB1F0(u8 a)
void allocate_bag_item_list_buffers(void)
{
- gUnknown_0203CE74 = Alloc(sizeof(struct ListBuffer1));
- gUnknown_0203CE78 = Alloc(sizeof(struct ListBuffer2));
+ sListBuffer1 = Alloc(sizeof(struct ListBuffer1));
+ sListBuffer2 = Alloc(sizeof(struct ListBuffer2));
}
void load_bag_item_list_buffers(u8 pocketId)
@@ -754,34 +752,34 @@ void load_bag_item_list_buffers(u8 pocketId)
struct BagPocket *pocket = &gBagPockets[pocketId];
struct ListMenuItem *subBuffer;
- if (!gUnknown_0203CE54->unk81B_2)
+ if (!gUnknown_0203CE54->hideCloseBagText)
{
- for (i = 0; i < gUnknown_0203CE54->unk829[pocketId] - 1; i++)
+ for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId] - 1; i++)
{
- get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
}
- StringCopy(gUnknown_0203CE78->name[i], gText_CloseBag);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ StringCopy(sListBuffer2->name[i], gText_CloseBag);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = -2;
}
else
{
- for (i = 0; i < gUnknown_0203CE54->unk829[pocketId]; i++)
+ for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId]; i++)
{
- get_name(gUnknown_0203CE78->name[i], pocket->itemSlots[i].itemId);
- subBuffer = gUnknown_0203CE74->subBuffers;
- subBuffer[i].name = gUnknown_0203CE78->name[i];
+ get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ subBuffer = sListBuffer1->subBuffers;
+ subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
}
}
- gMultiuseListMenuTemplate = gUnknown_08613F9C;
- gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->unk829[pocketId];
- gMultiuseListMenuTemplate.items = gUnknown_0203CE74->subBuffers;
- gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->unk82E[pocketId];
+ gMultiuseListMenuTemplate = sItemListMenu;
+ gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->numItemStacks[pocketId];
+ gMultiuseListMenuTemplate.items = sListBuffer1->subBuffers;
+ gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->numShownItems[pocketId];
}
void get_name(s8 *dest, u16 itemId)
@@ -907,7 +905,7 @@ void bag_menu_print_cursor(u8 a, u8 b)
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void)
{
if (gUnknown_0203CE54->unk81E == 0xFF)
- gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->unk82E[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
+ gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->numShownItems[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
}
void sub_81AB824(void)
@@ -937,8 +935,8 @@ void sub_81AB89C(void)
void free_bag_item_list_buffers(void)
{
- Free(gUnknown_0203CE78);
- Free(gUnknown_0203CE74);
+ Free(sListBuffer2);
+ Free(sListBuffer1);
FreeAllWindowBuffers();
Free(gUnknown_0203CE54);
}
@@ -955,8 +953,8 @@ void task_close_bag_menu_2(u8 taskId)
if (!gPaletteFade.active)
{
DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
- if (gUnknown_0203CE54->unk0 != 0)
- SetMainCallback2(gUnknown_0203CE54->unk0);
+ if (gUnknown_0203CE54->mainCallback2 != 0)
+ SetMainCallback2(gUnknown_0203CE54->mainCallback2);
else
SetMainCallback2(gUnknown_0203CE58.bagCallback);
sub_81AB824();
@@ -981,15 +979,17 @@ void sub_81AB9A8(u8 pocketId)
CompactItemsInBagPocket(pocket);
break;
}
- gUnknown_0203CE54->unk829[pocketId] = 0;
+ gUnknown_0203CE54->numItemStacks[pocketId] = 0;
for (i = 0; i < pocket->capacity && pocket->itemSlots[i].itemId; i++)
- gUnknown_0203CE54->unk829[pocketId]++;
- if (!gUnknown_0203CE54->unk81B_2)
- gUnknown_0203CE54->unk829[pocketId]++;
- if (gUnknown_0203CE54->unk829[pocketId] > 8)
- gUnknown_0203CE54->unk82E[pocketId] = 8;
+ gUnknown_0203CE54->numItemStacks[pocketId]++;
+
+ if (!gUnknown_0203CE54->hideCloseBagText)
+ gUnknown_0203CE54->numItemStacks[pocketId]++;
+
+ if (gUnknown_0203CE54->numItemStacks[pocketId] > 8)
+ gUnknown_0203CE54->numShownItems[pocketId] = 8;
else
- gUnknown_0203CE54->unk82E[pocketId] = gUnknown_0203CE54->unk829[pocketId];
+ gUnknown_0203CE54->numShownItems[pocketId] = gUnknown_0203CE54->numItemStacks[pocketId];
}
void sub_81ABA6C(void)
@@ -999,26 +999,26 @@ void sub_81ABA6C(void)
sub_81AB9A8(i);
}
-void sub_81ABA88(u8 a)
+void SetInitialScrollAndCursorPositions(u8 pocketId)
{
- sub_812225C(&gUnknown_0203CE58.scrollPosition[a], &gUnknown_0203CE58.cursorPosition[a], gUnknown_0203CE54->unk82E[a], gUnknown_0203CE54->unk829[a]);
+ sub_812225C(&gUnknown_0203CE58.scrollPosition[pocketId], &gUnknown_0203CE58.cursorPosition[pocketId], gUnknown_0203CE54->numShownItems[pocketId], gUnknown_0203CE54->numItemStacks[pocketId]);
}
-void sub_81ABAC4(void)
+static void SetPocketListPositions(void)
{
u8 i;
for (i = 0; i < POCKETS_COUNT; i++)
- sub_81ABA88(i);
+ SetInitialScrollAndCursorPositions(i);
}
void sub_81ABAE0(void)
{
u8 i;
for (i = 0; i < POCKETS_COUNT; i++)
- sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->unk82E[i], gUnknown_0203CE54->unk829[i], 8);
+ sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->numShownItems[i], gUnknown_0203CE54->numItemStacks[i], 8);
}
-u8 sub_81ABB2C(u8 pocketId)
+u8 GetItemListPosition(u8 pocketId)
{
return gUnknown_0203CE58.scrollPosition[pocketId] + gUnknown_0203CE58.cursorPosition[pocketId];
}
@@ -1041,7 +1041,7 @@ void bag_menu_inits_lists_menu(u8 taskId)
bag_menu_RemoveBagItem_message_window(4);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1092,7 +1092,7 @@ void Task_BagMenu(u8 taskId)
if (sub_81AC2C0() == 1)
{
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
- if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - 1)
+ if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - 1)
{
PlaySE(SE_SELECT);
bag_menu_swap_items(taskId);
@@ -1102,13 +1102,13 @@ void Task_BagMenu(u8 taskId)
}
else
{
- int r4 = ListMenuHandleInputGetItemId(data[0]);
+ int listPosition = ListMenuHandleInputGetItemId(data[0]);
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
- switch (r4)
+ switch (listPosition)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_B_PRESSED:
if (gUnknown_0203CE58.location == 5)
{
PlaySE(SE_HAZURE);
@@ -1118,13 +1118,13 @@ void Task_BagMenu(u8 taskId)
gSpecialVar_ItemId = select;
gTasks[taskId].func = unknown_ItemMenu_Confirm;
break;
- default:
+ default: // A_BUTTON
PlaySE(SE_SELECT);
sub_81AB824();
bag_menu_print_cursor_(data[0], 2);
- data[1] = r4;
- data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, r4);
- gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, r4);
+ data[1] = listPosition;
+ data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
gUnknown_08614054[gUnknown_0203CE58.location](taskId);
break;
}
@@ -1186,7 +1186,7 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
ClearWindowTilemap(1);
DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
schedule_bg_copy_tilemap_to_vram(0);
- gSprites[gUnknown_0203CE54->unk804[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE;
+ gSprites[gUnknown_0203CE54->spriteId[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE;
sub_81AB824();
}
pocketId = gUnknown_0203CE58.pocket;
@@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1782,7 +1782,7 @@ void ItemMenu_Give(u8 taskId)
bag_menu_print_there_is_no_pokemon(taskId);
else
{
- gUnknown_0203CE54->unk0 = sub_81B7F60;
+ gUnknown_0203CE54->mainCallback2 = sub_81B7F60;
unknown_ItemMenu_Confirm(taskId);
}
}
@@ -1815,7 +1815,7 @@ void sub_81AD350(u8 taskId)
void ItemMenu_CheckTag(u8 taskId)
{
- gUnknown_0203CE54->unk0 = DoBerryTagScreen;
+ gUnknown_0203CE54->mainCallback2 = DoBerryTagScreen;
unknown_ItemMenu_Confirm(taskId);
}
@@ -2012,7 +2012,7 @@ void sub_81AD8C8(u8 taskId)
AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
sub_81AB9A8(gUnknown_0203CE58.pocket);
- sub_81ABA88(gUnknown_0203CE58.pocket);
+ SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
bag_menu_print_cursor_(data[0], 2);
@@ -2235,7 +2235,7 @@ void bag_menu_leave_maybe(void)
SetMainCallback2(CB2_ReturnToField);
}
-void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2)
+void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
{
struct WindowTemplate window = {0, 0, 0, 0, 0, 0, 0};
u16 windowId;
@@ -2252,7 +2252,7 @@ void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2)
offset = GetStringCenterAlignXOffset(1, pocketName2, 0x40);
bag_menu_print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1);
}
- CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->unk844, 0x400);
+ CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->pocketNameBuffer, 0x400);
RemoveWindow(windowId);
}
@@ -2263,7 +2263,7 @@ void bag_menu_copy_pocket_name_to_window(u32 a)
int b;
if (a > 8)
a = 8;
- r4 = &gUnknown_0203CE54->unk844;
+ r4 = &gUnknown_0203CE54->pocketNameBuffer;
windowAttribute = (u8*)GetWindowAttribute(2, WINDOW_TILE_DATA);
CpuCopy32(r4[0][a], windowAttribute, 0x100);
b = a + 16;
@@ -2292,17 +2292,17 @@ void setup_bag_menu_textboxes(void)
void bag_menu_print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h)
{
- AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, gUnknown_08614164[h], speed, str);
+ AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[h], speed, str);
}
u8 sub_81AE124(u8 a)
{
- return gUnknown_0203CE54->unk810[a];
+ return gUnknown_0203CE54->windowPointers[a];
}
u8 bag_menu_add_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr == 0xFF)
{
*ptr = AddWindow(&gUnknown_086141AC[a]);
@@ -2314,7 +2314,7 @@ u8 bag_menu_add_window(u8 a)
void bag_menu_remove_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
sub_8198070(*ptr, 0);
@@ -2327,7 +2327,7 @@ void bag_menu_remove_window(u8 a)
u8 AddItemMessageWindow(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr == 0xFF)
*ptr = AddWindow(&gUnknown_086141AC[a]);
return *ptr;
@@ -2335,7 +2335,7 @@ u8 AddItemMessageWindow(u8 a)
void bag_menu_RemoveBagItem_message_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->unk810[a];
+ u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
sub_8197DF8(*ptr, 0);
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index 85b42b9b3..894574ec9 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -1,14 +1,14 @@
#include "global.h"
-#include "sprite.h"
+#include "berry.h"
#include "decompress.h"
+#include "graphics.h"
+#include "item.h"
#include "item_menu.h"
#include "item_icon.h"
#include "item_menu_icons.h"
-#include "window.h"
#include "menu_helpers.h"
-#include "berry.h"
-#include "graphics.h"
-#include "item.h"
+#include "sprite.h"
+#include "window.h"
#include "constants/items.h"
struct CompressedTilesPal
@@ -199,7 +199,7 @@ static const struct SpritePalette gUnknown_0857FBA8 =
gUnknown_0857F564, 101
};
-static const struct SpriteTemplate gUnknown_0857FBB0 =
+static const struct SpriteTemplate gSpriteTemplate_RotatingBall =
{
.tileTag = 101,
.paletteTag = 101,
@@ -409,7 +409,7 @@ static const struct SpriteTemplate gUnknown_0857FE10 =
// code
void RemoveBagSprite(u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[id];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[id];
if (*spriteId != 0xFF)
{
FreeSpriteTilesByTag(id + 100);
@@ -422,14 +422,14 @@ void RemoveBagSprite(u8 id)
void AddBagVisualSprite(u8 bagPocketId)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[0];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[0];
*spriteId = CreateSprite(&gUnknown_0857FB4C, 68, 66, 0);
SetBagVisualPocketId(bagPocketId, FALSE);
}
void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]];
+ struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
if (isSwitchingPockets)
{
sprite->pos2.y = -5;
@@ -458,7 +458,7 @@ static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
void ShakeBagVisual(void)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->unk804[0]];
+ struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
if (sprite->affineAnimEnded)
{
StartSpriteAffineAnim(sprite, 1);
@@ -477,10 +477,10 @@ static void SpriteCB_ShakeBagVisual(struct Sprite *sprite)
void AddSwitchPocketRotatingBallSprite(s16 rotationDirection)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[1];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[1];
LoadSpriteSheet(&gUnknown_0857FBA0);
LoadSpritePalette(&gUnknown_0857FBA8);
- *spriteId = CreateSprite(&gUnknown_0857FBB0, 16, 16, 0);
+ *spriteId = CreateSprite(&gSpriteTemplate_RotatingBall, 16, 16, 0);
gSprites[*spriteId].data[0] = rotationDirection;
}
@@ -515,7 +515,7 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite)
void AddBagItemIconSprite(u16 itemId, u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->unk804[id + 2];
+ u8 *spriteId = &gUnknown_0203CE54->spriteId[id + 2];
if (*spriteId == 0xFF)
{
u8 iconSpriteId;
@@ -539,17 +539,17 @@ void RemoveBagItemIconSprite(u8 id)
void sub_80D4FAC(void)
{
- sub_8122344(&gUnknown_0203CE54->unk804[4], 8);
+ sub_8122344(&gUnknown_0203CE54->spriteId[4], 8);
}
void sub_80D4FC8(u8 arg0)
{
- sub_81223FC(&gUnknown_0203CE54->unk804[4], 8, arg0);
+ sub_81223FC(&gUnknown_0203CE54->spriteId[4], 8, arg0);
}
void sub_80D4FEC(u8 arg0)
{
- sub_8122448(&gUnknown_0203CE54->unk804[4], 136, 120, (arg0 + 1) * 16);
+ sub_8122448(&gUnknown_0203CE54->spriteId[4], 136, 120, (arg0 + 1) * 16);
}
static void sub_80D5018(void *mem0, void *mem1)
diff --git a/src/item_use.c b/src/item_use.c
index 8399a1861..474b16ae1 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -57,7 +57,6 @@ extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
extern void sub_81C5924(void);
extern void sub_81C59BC(void);
extern void sub_81AB9A8(u8);
-extern void sub_81ABA88(u8);
extern void StartEscapeRopeFieldEffect(void);
extern u8* sub_806CF78(u16);
extern void sub_81B89F0(void);
@@ -128,7 +127,7 @@ void SetUpItemUseCallback(u8 taskId)
type = ItemId_GetType(gSpecialVar_ItemId) - 1;
if (!InBattlePyramid())
{
- gUnknown_0203CE54->unk0 = gUnknown_085920D8[type];
+ gUnknown_0203CE54->mainCallback2 = gUnknown_085920D8[type];
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -212,7 +211,7 @@ void sub_80FD254(void)
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- gUnknown_0203CE54->unk0 = sub_80FD254;
+ gUnknown_0203CE54->mainCallback2 = sub_80FD254;
unknown_ItemMenu_Confirm(taskId);
}
@@ -608,7 +607,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
}
else if (gTasks[taskId].data[3] != TRUE)
{
- gUnknown_0203CE54->unk0 = sub_80FDBEC;
+ gUnknown_0203CE54->mainCallback2 = sub_80FDBEC;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -670,7 +669,7 @@ void sub_80FDD10(u8 taskId)
{
gUnknown_0203A0F4 = sub_80FDD74;
gFieldCallback = MapPostLoadHook_UseItem;
- gUnknown_0203CE54->unk0 = CB2_ReturnToField;
+ gUnknown_0203CE54->mainCallback2 = CB2_ReturnToField;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -812,7 +811,7 @@ void sub_80FE058(void)
if (!InBattlePyramid())
{
sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId));
- sub_81ABA88(ItemId_GetPocket(gSpecialVar_ItemId));
+ SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId));
}
else
{
@@ -993,7 +992,7 @@ void sub_80FE54C(u8 taskId)
{
if (!InBattlePyramid())
{
- gUnknown_0203CE54->unk0 = sub_81B89F0;
+ gUnknown_0203CE54->mainCallback2 = sub_81B89F0;
unknown_ItemMenu_Confirm(taskId);
}
else
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 110ec068e..930f1f35b 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -62,14 +62,14 @@ static const u8 * const sGiddyAdjectives[] = {
};
static const u8 * const sGiddyQuestions[] = {
- gUnknown_08294313,
- gUnknown_08294359,
- gUnknown_08294398,
- gUnknown_082943DA,
- gUnknown_0829441C,
- gUnknown_08294460,
- gUnknown_082944A0,
- gUnknown_082944D5
+ gMauvilleManText_ISoWantToGoOnAVacation,
+ gMauvilleManText_IBoughtCrayonsWith120Colors,
+ gMauvilleManText_WouldntItBeNiceIfWeCouldFloat,
+ gMauvilleManText_WhenYouWriteOnASandyBeach,
+ gMauvilleManText_WhatsTheBottomOfTheSeaLike,
+ gMauvilleManText_WhenYouSeeTheSettingSunDoesIt,
+ gMauvilleManText_LyingBackInTheGreenGrass,
+ gMauvilleManText_SecretBasesAreSoWonderful
};
static void SetupBard(void)
diff --git a/src/pokeball.c b/src/pokeball.c
index ad839e6af..82d2f2cea 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -426,7 +426,7 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite)
sprite->pos2.y = 0;
sprite->data[5] = 0;
ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler));
- LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId);
sprite->sBattler = opponentBattler;
sprite->data[7] = noOfShakes;
@@ -737,7 +737,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId));
- LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId);
sprite->callback = HandleBallAnimEnd;
@@ -985,9 +985,9 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite)
#undef sBattler
-static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d)
+static u8 AnimateBallOpenParticlesForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d)
{
- return LaunchBallStarsTask(x, y, kindOfStars, d, BALL_POKE);
+ return AnimateBallOpenParticles(x, y, kindOfStars, d, BALL_POKE);
}
static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2)
@@ -1036,7 +1036,7 @@ static void sub_8076524(struct Sprite *sprite)
r5 = 0;
StartSpriteAnim(sprite, 1);
- LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
+ AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4);
sprite->callback = sub_80765E0;
gSprites[r7].invisible = FALSE;
@@ -1129,7 +1129,7 @@ static void sub_80767D4(struct Sprite *sprite)
r6 = 0;
StartSpriteAnim(sprite, 1);
- LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
+ AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5);
sprite->callback = sub_807687C;
StartSpriteAffineAnim(&gSprites[r7], 2);
diff --git a/src/pokemon.c b/src/pokemon.c
index 8e32479a1..14b4ea388 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -45,12 +45,6 @@ struct SpeciesItem
u16 item;
};
-// Extracts the upper 16 bits of a 32-bit number
-#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-
-// Extracts the lower 16 bits of a 32-bit number
-#define LOHALF(n) ((n) & 0xFFFF)
-
extern const struct OamData gUnknown_0831ACB0;
extern const struct OamData gUnknown_0831ACA8;
extern const struct SpriteFrameImage gUnknown_082FF3A8[];
@@ -2755,7 +2749,7 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
CalculateMonStats(mon);
}
-void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
+void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src)
{
s32 i;
u8 nickname[30];
@@ -2809,7 +2803,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
CalculateMonStats(mon);
}
-void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50)
+void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50)
{
s32 i;
u8 nickname[30];
@@ -2937,7 +2931,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level,
CalculateMonStats(mon);
}
-void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest)
+void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest)
{
s32 i;
u16 heldItem;
@@ -6707,12 +6701,6 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
}
-// Extracts the upper 16 bits of a 32-bit number
-#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-
-// Extracts the lower 16 bits of a 32-bit number
-#define LOHALF(n) ((n) & 0xFFFF)
-
const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
diff --git a/src/record_mixing.c b/src/record_mixing.c
index d37883e4d..6d5d49265 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -647,7 +647,7 @@ static void ReceiveOldManData(OldMan *oldMan, size_t recordSize, u8 which)
static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u8 which)
{
struct EmeraldBattleTowerRecord *dest;
- struct UnknownPokemonStruct *btPokemon;
+ struct BattleTowerPokemon *btPokemon;
u32 mixIndices[4];
s32 i;
@@ -1866,7 +1866,7 @@ static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *ds
for (i = 0; i < 4; i++)
{
- struct UnknownPokemonStruct *towerMon = &dst->party[i];
+ struct BattleTowerPokemon *towerMon = &dst->party[i];
if (towerMon->species != 0)
StripExtCtrlCodes(towerMon->nickname);
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index 9b7269f00..fc5a06024 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -220,7 +220,7 @@ static void ShowContestWinnerCleanup(void)
void ShowContestWinner(void)
{
- SetMainCallback2(sub_812FDEC);
+ SetMainCallback2(CB2_ContestPainting);
gMain.savedCallback = ShowContestWinnerCleanup;
}
diff --git a/sym_common.txt b/sym_common.txt
index e8d1654c0..3a7d698fd 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -63,7 +63,7 @@ gUnknown_030061A0: @ 30061A0
gUnknown_030061C0: @ 30061C0
.space 0x4
-gUnknown_030061C4: @ 30061C4
+gContestPaintingMonPalette: @ 30061C4
.space 0xC
.include "field_specials.o"
@@ -77,16 +77,7 @@ gDexCryScreenState: @ 30061EC
.include "save.o"
.include "battle_tower.o"
.include "intro.o"
-
-gUnknown_030062DC: @ 30062DC
- .space 0x4
-
-gUnknown_030062E0: @ 30062E0
- .space 0x4
-
-gUnknown_030062E4: @ 30062E4
- .space 0x4
-
+ .include "battle_anim_8170478.o"
.include "battle_factory_screen.o"
.include "apprentice.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b413f287d..4f77532b2 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -292,19 +292,8 @@ gUnknown_0203A100: @ 203A100
.space 0x10
.include "src/battle_anim_utility_funcs.o"
-
-gUnknown_0203A114: @ 203A114
- .space 0x4
-
-gUnknown_0203A118: @ 203A118
- .space 0x4
-
-gUnknown_0203A11C: @ 203A11C
- .space 0x4
-
-gUnknown_0203A120: @ 203A120
- .space 0x4
-
+ .include "src/battle_intro.o"
+ .include "src/easy_chat.o"
.include "src/mon_markings.o"
.include "src/mauville_old_man.o"
.include "src/mail.o"